Browse Source

Merge remote-tracking branch 'origin/develop' into release_temp

dev
yinzuomei 4 years ago
parent
commit
6f5069a2d8
  1. 24
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/ServiceItemSelectFormDTO.java
  2. 7
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcServiceItemDictController.java
  3. 8
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcServiceItemDictService.java
  4. 25
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcServiceItemDictServiceImpl.java
  5. 11
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/BuildingTreeLevelDTO.java
  6. 32
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java
  7. 226
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java

24
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/ServiceItemSelectFormDTO.java

@ -0,0 +1,24 @@
package com.epmet.dto.form.demand;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@Data
public class ServiceItemSelectFormDTO implements Serializable {
private static final long serialVersionUID = 1689002457565460495L;
public interface AddUserInternalGroup {
}
/**
* all:查询全部
* usable可用的
* 默认查询全部
*/
private String type;
@NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class)
private String customerId;
}

7
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcServiceItemDictController.java

@ -8,6 +8,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.demand.ServiceItemAddFormDTO; import com.epmet.dto.form.demand.ServiceItemAddFormDTO;
import com.epmet.dto.form.demand.ServiceItemPageFormDTO; import com.epmet.dto.form.demand.ServiceItemPageFormDTO;
import com.epmet.dto.form.demand.ServiceItemSelectFormDTO;
import com.epmet.dto.form.demand.StatusFormDTO; import com.epmet.dto.form.demand.StatusFormDTO;
import com.epmet.dto.result.demand.OptionDTO; import com.epmet.dto.result.demand.OptionDTO;
import com.epmet.dto.result.demand.ServiceItemResultDTO; import com.epmet.dto.result.demand.ServiceItemResultDTO;
@ -79,7 +80,9 @@ public class IcServiceItemDictController {
* @return * @return
*/ */
@PostMapping("dict-list") @PostMapping("dict-list")
public Result<List<OptionDTO>> queryDictList(@LoginUser TokenDto tokenDto){ public Result<List<OptionDTO>> queryDictList(@LoginUser TokenDto tokenDto,@RequestBody ServiceItemSelectFormDTO formDTO){
return new Result<List<OptionDTO>>().ok(icServiceItemDictService.queryDictList(tokenDto.getCustomerId())); formDTO.setCustomerId(tokenDto.getCustomerId());
ValidatorUtils.validateEntity(formDTO,ServiceItemSelectFormDTO.AddUserInternalGroup.class);
return new Result<List<OptionDTO>>().ok(icServiceItemDictService.queryDictListForSelect(formDTO));
} }
} }

8
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcServiceItemDictService.java

@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.form.demand.ServiceItemAddFormDTO; import com.epmet.dto.form.demand.ServiceItemAddFormDTO;
import com.epmet.dto.form.demand.ServiceItemPageFormDTO; import com.epmet.dto.form.demand.ServiceItemPageFormDTO;
import com.epmet.dto.form.demand.ServiceItemSelectFormDTO;
import com.epmet.dto.form.demand.StatusFormDTO; import com.epmet.dto.form.demand.StatusFormDTO;
import com.epmet.dto.result.demand.OptionDTO; import com.epmet.dto.result.demand.OptionDTO;
import com.epmet.dto.result.demand.ServiceItemResultDTO; import com.epmet.dto.result.demand.ServiceItemResultDTO;
@ -62,4 +63,11 @@ public interface IcServiceItemDictService extends BaseService<IcServiceItemDictE
* @return * @return
*/ */
List<OptionDTO> queryDictList(String customerId); List<OptionDTO> queryDictList(String customerId);
/**
* 前端调用此接口
* @param formDTO
* @return
*/
List<OptionDTO> queryDictListForSelect(ServiceItemSelectFormDTO formDTO);
} }

25
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcServiceItemDictServiceImpl.java

@ -27,6 +27,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.dao.IcServiceItemDictDao; import com.epmet.dao.IcServiceItemDictDao;
import com.epmet.dto.form.demand.ServiceItemAddFormDTO; import com.epmet.dto.form.demand.ServiceItemAddFormDTO;
import com.epmet.dto.form.demand.ServiceItemPageFormDTO; import com.epmet.dto.form.demand.ServiceItemPageFormDTO;
import com.epmet.dto.form.demand.ServiceItemSelectFormDTO;
import com.epmet.dto.form.demand.StatusFormDTO; import com.epmet.dto.form.demand.StatusFormDTO;
import com.epmet.dto.result.demand.OptionDTO; import com.epmet.dto.result.demand.OptionDTO;
import com.epmet.dto.result.demand.ServiceItemResultDTO; import com.epmet.dto.result.demand.ServiceItemResultDTO;
@ -146,5 +147,29 @@ public class IcServiceItemDictServiceImpl extends BaseServiceImpl<IcServiceItemD
return resultList; return resultList;
} }
/**
* 前端调用此接口
*
* @param formDTO
* @return
*/
@Override
public List<OptionDTO> queryDictListForSelect(ServiceItemSelectFormDTO formDTO) {
List<OptionDTO> resultList = new ArrayList<>();
LambdaQueryWrapper<IcServiceItemDictEntity> query = new LambdaQueryWrapper<>();
query.eq(IcServiceItemDictEntity::getCustomerId, formDTO.getCustomerId())
.eq(StringUtils.isNotBlank(formDTO.getType()) && "usable".equals(formDTO.getType()), IcServiceItemDictEntity::getUsableFlag, true)
.orderByAsc(IcServiceItemDictEntity::getSort);
List<IcServiceItemDictEntity> list=baseDao.selectList(query);
for(IcServiceItemDictEntity entity:list){
OptionDTO optionDTO=new OptionDTO();
optionDTO.setLabel(entity.getCategoryName());
optionDTO.setValue(entity.getCategoryCode());
optionDTO.setAwardPoint(entity.getAwardPoint());
resultList.add(optionDTO);
}
return resultList;
}
} }

11
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/BuildingTreeLevelDTO.java

@ -20,7 +20,6 @@ package com.epmet.dto;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
import java.util.List; import java.util.List;
@ -49,7 +48,13 @@ public class BuildingTreeLevelDTO implements Serializable {
private String longitude; private String longitude;
private String latitude; private String latitude;
/**
* 选中组织展示下级有children例如山东路街道(7)表示几个社区
* 选中网格展示下级有几个小区
* 选中小区展示有几栋楼
* 选中具体某个楼栋1号楼(70/100)表示共有100户有70户住人了
*/
private String showNum;
private String showName;
} }

32
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java

@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
@ -126,6 +128,8 @@ public class BuildingServiceImpl implements BuildingService {
buildingTreeLevelDTO.setLongitude(item.getLongitude()); buildingTreeLevelDTO.setLongitude(item.getLongitude());
buildingTreeLevelDTO.setLatitude(item.getLatitude()); buildingTreeLevelDTO.setLatitude(item.getLatitude());
buildingTreeLevelDTO.setChildren(new ArrayList<>()); buildingTreeLevelDTO.setChildren(new ArrayList<>());
//当前组织有几个下级组织
buildingTreeLevelDTO.setShowNum(StrConstant.EPMETY_STR);
return buildingTreeLevelDTO; return buildingTreeLevelDTO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
@ -149,6 +153,8 @@ public class BuildingServiceImpl implements BuildingService {
buildingTreeLevelDTO.setLongitude(item.getLongitude()); buildingTreeLevelDTO.setLongitude(item.getLongitude());
buildingTreeLevelDTO.setLatitude(item.getLatitude()); buildingTreeLevelDTO.setLatitude(item.getLatitude());
buildingTreeLevelDTO.setChildren(new ArrayList<>()); buildingTreeLevelDTO.setChildren(new ArrayList<>());
//当前网格下有几个小区
buildingTreeLevelDTO.setShowNum(StrConstant.EPMETY_STR);
return buildingTreeLevelDTO; return buildingTreeLevelDTO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
@ -172,6 +178,8 @@ public class BuildingServiceImpl implements BuildingService {
buildingTreeLevelDTO.setLongitude(item.getLongitude()); buildingTreeLevelDTO.setLongitude(item.getLongitude());
buildingTreeLevelDTO.setLatitude(item.getLatitude()); buildingTreeLevelDTO.setLatitude(item.getLatitude());
buildingTreeLevelDTO.setChildren(new ArrayList<>()); buildingTreeLevelDTO.setChildren(new ArrayList<>());
//当前小区下,有几栋楼
buildingTreeLevelDTO.setShowNum(StrConstant.EPMETY_STR);
return buildingTreeLevelDTO; return buildingTreeLevelDTO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
@ -198,6 +206,25 @@ public class BuildingServiceImpl implements BuildingService {
buildingTreeLevelDTO.setLongitude(item.getLongitude()); buildingTreeLevelDTO.setLongitude(item.getLongitude());
buildingTreeLevelDTO.setLatitude(item.getLatitude()); buildingTreeLevelDTO.setLatitude(item.getLatitude());
buildingTreeLevelDTO.setChildren(new ArrayList<>()); buildingTreeLevelDTO.setChildren(new ArrayList<>());
//当前楼栋共有多少户,有多少户有人住
buildingTreeLevelDTO.setShowNum(StrConstant.EPMETY_STR);
// 总单元数
Integer totalUnitNum = null == item.getTotalUnitNum() ? NumConstant.ZERO : item.getTotalUnitNum();
// 总楼层总数
Integer totalFloorNum = null == item.getTotalFloorNum() ? NumConstant.ZERO : item.getTotalFloorNum();
// *总户数
Integer totalHouseNum = null == item.getTotalHouseNum() ? NumConstant.ZERO : item.getTotalHouseNum();
//总户数=以上三个数相乘
Integer total=totalUnitNum*totalFloorNum*totalHouseNum;
//已经添加了多少户
LambdaQueryWrapper<IcHouseEntity> icHouseEntityWrapper = new QueryWrapper<IcHouseEntity>().lambda()
.in(IcHouseEntity::getBuildingId, item.getId());
int count= icHouseDao.selectCount(icHouseEntityWrapper);
if(NumConstant.ZERO==total){
buildingTreeLevelDTO.setShowNum(String.format("%s/%s",count,count));
}else{
buildingTreeLevelDTO.setShowNum(String.format("%s/%s",count,total));
}
return buildingTreeLevelDTO; return buildingTreeLevelDTO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
@ -400,7 +427,10 @@ public class BuildingServiceImpl implements BuildingService {
recursionCovertToTree(agencyEntity,customerAgencyList); recursionCovertToTree(agencyEntity,customerAgencyList);
} }
parent.setChildren(subList); parent.setChildren(subList);
if(!"building".equals(parent.getLevel())){
parent.setShowNum(CollectionUtils.isEmpty(subList) ? NumConstant.ZERO_STR : String.valueOf(subList.size()));
}
parent.setShowName(String.format("%s(%s)",parent.getLabel(),parent.getShowNum()));
} }

226
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java

@ -17,9 +17,7 @@ import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.IcResiUserDao; import com.epmet.dao.IcResiUserDao;
@ -73,14 +71,14 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
public static final ThreadLocal<Map<String, List<SkipedRow>>> skipedRows = new ThreadLocal<>(); public static final ThreadLocal<Map<String, List<SkipedRow>>> skipedRows = new ThreadLocal<>();
/** /**
* 类别发生变更的居民 * 导入的居民中新增或者变动的居民
*/ */
public static final ThreadLocal<ResiImportResiCategoryChangedCache> categoryChangedResi = new ThreadLocal<>(); public static final ThreadLocal<ResiImportResiCategoryChangedCache> newlyOrChangedResi = new ThreadLocal<>();
/** /**
* 居民类别items列表 * 居民类别items列表<columnName,label>
*/ */
public static final ThreadLocal<Map<String, String>> resiCategoryItemsCache = new ThreadLocal<>(); public static final ThreadLocal<Map<String, String>> resiCategoryColumnNameAndLabel = new ThreadLocal<>();
/** /**
* key: itemId * key: itemId
@ -122,6 +120,13 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
private UserService userService; private UserService userService;
/**
* 字表中不需要的列
*/
private List<String> subTableNeedlessColumns = Arrays.asList("GRID_ID", "VILLAGE_ID", "BUILD_ID", "UNIT_ID", "HOME_ID",
"IS_BDHJ", "NAME", "MOBILE", "GENDER", "ID_CARD",
"BIRTHDAY", "CONTACTS", "CONTACTS_MOBILE");
/** /**
* @description 列信息封装 * @description 列信息封装
* *
@ -249,10 +254,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
} }
// 执行人员类别变更记录 // 执行人员类别变更记录
Map<String, ResiImportCategoryData> newResis = categoryChangedResi.get().getNewResis(); Map<String, ResiImportCategoryData> newResis = newlyOrChangedResi.get().getNewResis();
// todo 此处没测试 Map<String, ResiImportChangedData> categoryChangedResis = newlyOrChangedResi.get().getCategoryChangedResis();
Map<String, ResiImportChangedData> categoryChangedResis = categoryChangedResi.get().getCategoryChangedResis(); Map<String, ResiImportChangedData> transferedResis = newlyOrChangedResi.get().getTransferedResis();
Map<String, ResiImportChangedData> transferedResis = categoryChangedResi.get().getTransferedResis();
//保存调动或者变更记录 //保存调动或者变更记录
saveNewResiCategoryRecord(newResis); saveNewResiCategoryRecord(newResis);
@ -267,8 +271,8 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
} finally { } finally {
skipedRows.remove(); skipedRows.remove();
errorRows.remove(); errorRows.remove();
categoryChangedResi.remove(); newlyOrChangedResi.remove();
resiCategoryItemsCache.remove(); resiCategoryColumnNameAndLabel.remove();
itemIdAndOptionsCache.invalidateAll(); itemIdAndOptionsCache.invalidateAll();
} }
} }
@ -293,7 +297,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
// 居民类别信息 // 居民类别信息
ResiImportResiCategoryChangedCache c = new ResiImportResiCategoryChangedCache(); ResiImportResiCategoryChangedCache c = new ResiImportResiCategoryChangedCache();
categoryChangedResi.set(c); newlyOrChangedResi.set(c);
List<ResiCategoryItemResultDTO> resiCategoryItems = getResultDataOrThrowsException(operCustomizeOpenFeignClient.listResiCategoryItems(customerId), List<ResiCategoryItemResultDTO> resiCategoryItems = getResultDataOrThrowsException(operCustomizeOpenFeignClient.listResiCategoryItems(customerId),
ServiceConstant.OPER_CUSTOMIZE_SERVER, ServiceConstant.OPER_CUSTOMIZE_SERVER,
@ -303,7 +307,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
Map<String, String> columnNameAndLabel = resiCategoryItems.stream().collect(Collectors.toMap((o) -> o.getColumnName(), (o) -> o.getLabel())); Map<String, String> columnNameAndLabel = resiCategoryItems.stream().collect(Collectors.toMap((o) -> o.getColumnName(), (o) -> o.getLabel()));
resiCategoryItemsCache.set(columnNameAndLabel); resiCategoryColumnNameAndLabel.set(columnNameAndLabel);
} }
/** /**
@ -326,16 +330,17 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
List<Map<Integer, String>> headList = readListener.getHeadList(); List<Map<Integer, String>> headList = readListener.getHeadList();
List<Map<Integer, String>> dataList = readListener.getDataList(); List<Map<Integer, String>> dataList = readListener.getDataList();
Map<Integer, List<String>> headers = mergeHead(headList); // 合并多级表头到一个list中,key为列序号
Map<Integer, List<String>> headers = mergeMultiLevelHeadLabels(headList);
// 清洗表头数据 // 清洗表头数据,通过items剔除,并且得到options
Map<Integer, String> abandonedHeaders = washHeaders(headers, formItemList); Map<Integer, String> abandonedHeaders = removeAndGetOptionsFromHeaders(headers, formItemList);
//合并多级表头 // 交换表头信息,以label连起来的string作为key,列号的列表作为value
HashMap<String, List<Integer>> combinedHeaders = combineHeaders(headers); HashMap<String, List<Integer>> combinedHeaders = exchangeKeyAndValueOfHeaders(headers);
// 得到客户配置item数据 // 得到客户配置item数据。<"兴趣爱好:兴趣特长", item对象>
Map<String, FormItemResult> formItemMap = formItemList.stream().collect( Map<String, FormItemResult> customizedLabelCompbinedItemsMap = formItemList.stream().collect(
Collectors.toMap(formItem -> { Collectors.toMap(formItem -> {
String groupLabel = formItem.getGroupLabel(); String groupLabel = formItem.getGroupLabel();
String label = formItem.getLabel(); String label = formItem.getLabel();
@ -346,10 +351,11 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
} }
}, formItem -> formItem) }, formItem -> formItem)
); );
Map<String, ColumnWrapper> headerColumnWrapper = convertExcelHeaders2DBColumnWrappers(formItemMap, combinedHeaders, dataList, abandonedHeaders);
Map<String, ColumnWrapper> itemIdAndColumnWrapper = convertExcelHeaders2DBColumnWrappers(customizedLabelCompbinedItemsMap, combinedHeaders);
// 持久化 // 持久化
persistIcResiBaseInfo(headerColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, currUserAgencyPids, currentUserId, tableName); persistIcResiBaseInfo(itemIdAndColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, currUserAgencyPids, currentUserId, tableName);
return headers; return headers;
} }
@ -374,15 +380,12 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
List<Map<Integer, String>> headList = readListener.getHeadList(); List<Map<Integer, String>> headList = readListener.getHeadList();
List<Map<Integer, String>> dataList = readListener.getDataList(); List<Map<Integer, String>> dataList = readListener.getDataList();
Map<Integer, List<String>> headers = mergeHead(headList); Map<Integer, List<String>> headers = mergeMultiLevelHeadLabels(headList);
// 清洗表头数据 Map<Integer, String> abandonedHeaders = removeAndGetOptionsFromHeaders(headers, formItemList);
Map<Integer, String> abandonedHeaders = washHeaders(headers, formItemList);
//合并多级表头 HashMap<String, List<Integer>> combinedHeaders = exchangeKeyAndValueOfHeaders(headers);
HashMap<String, List<Integer>> combinedHeaders = combineHeaders(headers);
// 得到客户配置item数据
Map<String, FormItemResult> formItemMap = formItemList.stream().collect( Map<String, FormItemResult> formItemMap = formItemList.stream().collect(
Collectors.toMap(formItem -> { Collectors.toMap(formItem -> {
String groupLabel = formItem.getGroupLabel(); String groupLabel = formItem.getGroupLabel();
@ -394,19 +397,19 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
} }
}, formItem -> formItem) }, formItem -> formItem)
); );
Map<String, ColumnWrapper> headerColumnWrapper = convertExcelHeaders2DBColumnWrappers(formItemMap, combinedHeaders, dataList, abandonedHeaders); Map<String, ColumnWrapper> headerColumnWrapper = convertExcelHeaders2DBColumnWrappers(formItemMap, combinedHeaders);
persistIcResiExtraInfo(headerColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, currentUserId, targetTableName, customerId); persistIcResiExtraInfo(headerColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, currentUserId, targetTableName, customerId);
return headerColumnWrapper; return headerColumnWrapper;
} }
/** /**
* 持久化IC居民基础信息 * 持久化IC居民基础信息
* @param headerColumnWrapper 数据库列包装信息 * @param itemIdAndColumnWrapper 数据库列包装信息
* @param dataRows 数据行集合 * @param dataRows 数据行集合
* @param currUserAgencyId 当前用户的组织id * @param currUserAgencyId 当前用户的组织id
* @param checkBoxOptionColumnIdxAndLabel 复选框的列号&label中文 * @param checkBoxOptionColumnIdxAndLabel 复选框的列号&label中文
*/ */
private void persistIcResiBaseInfo(Map<String, ColumnWrapper> headerColumnWrapper, List<Map<Integer, String>> dataRows, private void persistIcResiBaseInfo(Map<String, ColumnWrapper> itemIdAndColumnWrapper, List<Map<Integer, String>> dataRows,
String currUserAgencyId, Map<Integer, String> checkBoxOptionColumnIdxAndLabel, String currUserAgencyId, Map<Integer, String> checkBoxOptionColumnIdxAndLabel,
String currUserAgencyPids, String currentUserId, String tableName) { String currUserAgencyPids, String currentUserId, String tableName) {
@ -415,8 +418,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
LinkedHashMap<String, String> columnAndValues = new LinkedHashMap<>(); LinkedHashMap<String, String> columnAndValues = new LinkedHashMap<>();
try { try {
convertColumnWrappers2Map4Persist(headerColumnWrapper, row, currUserAgencyId, checkBoxOptionColumnIdxAndLabel, columnAndValues); convertColumnWrappers2Map4Persist(itemIdAndColumnWrapper, row, currUserAgencyId, checkBoxOptionColumnIdxAndLabel, columnAndValues, true);
// 因为还没有读取子sheet,所以这些居民类别没有办法获取,先默认设置成0,后面读取子sheet的时候再更新
columnAndValues.put("IS_ENSURE_HOUSE", "0"); columnAndValues.put("IS_ENSURE_HOUSE", "0");
columnAndValues.put("IS_OLD_PEOPLE", "0"); columnAndValues.put("IS_OLD_PEOPLE", "0");
columnAndValues.put("IS_PARTY", "0"); columnAndValues.put("IS_PARTY", "0");
@ -447,12 +451,12 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
// 任意组织维度一个发生变化,则放到调动居民缓存中 // 任意组织维度一个发生变化,则放到调动居民缓存中
ResiImportChangedData transferData; ResiImportChangedData transferData;
if ((transferData = this.getResiImportTrasferData(existingResiMap, columnAndValues)) != null) { if ((transferData = this.getResiImportTrasferData(existingResiMap, columnAndValues)) != null) {
categoryChangedResi.get().getTransferedResis().put(existingResiMap.get("ID"), transferData); newlyOrChangedResi.get().getTransferedResis().put(existingResiMap.get("ID"), transferData);
} else { } else {
// 组织维度没有发生变化,看是否有居民类型变更 // 组织维度没有发生变化,看是否有居民类型变更
ResiImportChangedData d = getResiImportCategoryChangedData(existingResiMap, columnAndValues); ResiImportChangedData d = getResiImportCategoryChangedData(existingResiMap, columnAndValues);
if (d != null) { if (d != null) {
categoryChangedResi.get().getCategoryChangedResis().put(existingResiMap.get("ID"), d); newlyOrChangedResi.get().getCategoryChangedResis().put(existingResiMap.get("ID"), d);
} }
} }
} else { } else {
@ -461,19 +465,20 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
columnAndValues.put("ID", UUID.randomUUID().toString().replace("-", "")); columnAndValues.put("ID", UUID.randomUUID().toString().replace("-", ""));
icResiUserDao.add(tableName, columnAndValues); icResiUserDao.add(tableName, columnAndValues);
Map<String, String> categories = resiCategoryItemsCache.get().keySet() // 过滤出本居民含有哪些类别
Map<String, String> resiCategories = resiCategoryColumnNameAndLabel.get().keySet()
.stream() .stream()
.filter((categoryColumnName) -> "1".equals(columnAndValues.get(categoryColumnName))) .filter((categoryColumnName) -> "1".equals(columnAndValues.get(categoryColumnName)))
.collect(Collectors.toMap((k) -> k, (k) -> columnAndValues.get(k))); .collect(Collectors.toMap((k) -> k, (k) -> columnAndValues.get(k)));
categoryChangedResi.get().getNewResis().put(columnAndValues.get("ID"), newlyOrChangedResi.get().getNewResis().put(columnAndValues.get("ID"),
new ResiImportCategoryData(columnAndValues.get("AGENCY_ID"), new ResiImportCategoryData(columnAndValues.get("AGENCY_ID"),
columnAndValues.get("GRID_ID"), columnAndValues.get("GRID_ID"),
columnAndValues.get("VILLAGE_ID"), columnAndValues.get("VILLAGE_ID"),
columnAndValues.get("BUILD_ID"), columnAndValues.get("BUILD_ID"),
columnAndValues.get("UNIT_ID"), columnAndValues.get("UNIT_ID"),
columnAndValues.get("HOME_ID"), columnAndValues.get("HOME_ID"),
categories)); resiCategories));
} }
} catch (Exception e) { } catch (Exception e) {
@ -515,12 +520,16 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
for (Map<Integer, String> row : dataRows) { for (Map<Integer, String> row : dataRows) {
try { try {
convertColumnWrappers2Map4Persist(headerColumnWrapper, row, currUserAgencyId, checkBoxOptionColumnIdxAndLabel, columnAndValues); convertColumnWrappers2Map4Persist(headerColumnWrapper, row, currUserAgencyId, checkBoxOptionColumnIdxAndLabel, columnAndValues, false);
// 检验身份证号 // 检验身份证号
String idCard = columnAndValues.get("ID_CARD"); String idCard = columnAndValues.get("ID_CARD");
if (StringUtils.isBlank(idCard)) { if (StringUtils.isBlank(idCard)) {
throw new RenException(EpmetErrorCode.IDCARDNO_ERROR.getCode(), String.format("用户【%s】身份证号未填写或格式错误", columnAndValues.get("NAME"))); String resiName = columnAndValues.get("NAME");
if (resiName == null) {
resiName = "";
}
throw new RenException(EpmetErrorCode.IDCARDNO_ERROR.getCode(), String.format("用户【%s】身份证号未填写或格式错误", resiName));
} }
// 检查用户是否存在 // 检查用户是否存在
@ -604,23 +613,24 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
/** /**
* 将当前行数据转化成LinkedHashMap供后续插入 * 将当前行数据转化成LinkedHashMap供后续插入
* @param headerColumnWrapper 当前行的ColumnWrapper每一个ColumnWrapper元素都是当前行中的一个列 * @param itemIdAndColumnWrappers 当前行的ColumnWrapper每一个ColumnWrapper元素都是当前行中的一个列,key:itemId
* @param row 当前行数据 * @param row 当前行数据
* @param currUserAgencyId 当前用户所属机构ID * @param currUserAgencyId 当前用户所属机构ID
* @param checkBoxOptionColumnIdxAndLabel 复选框options列表key:列号value复选框中文 * @param checkBoxOptionColumnIdxAndLabel 复选框options列表key:列号value复选框中文
* @param target 要将数据放到哪个对象中 * @param target 要将数据放到哪个对象中
* @param isPrimaryTable 是否是主表
*/ */
private void convertColumnWrappers2Map4Persist(Map<String, ColumnWrapper> headerColumnWrapper, Map<Integer, String> row, private void convertColumnWrappers2Map4Persist(Map<String, ColumnWrapper> itemIdAndColumnWrappers, Map<Integer, String> row,
String currUserAgencyId, Map<Integer, String> checkBoxOptionColumnIdxAndLabel, String currUserAgencyId, Map<Integer, String> checkBoxOptionColumnIdxAndLabel,
LinkedHashMap<String, String> target) { LinkedHashMap<String, String> target, boolean isPrimaryTable) {
boolean interupt = false; boolean interupt = false;
List<String> errorColumnNames = new LinkedList<>(); List<String> errorColumnNames = new LinkedList<>();
for (Map.Entry<String, ColumnWrapper> columnWrapperEntry : headerColumnWrapper.entrySet()) { for (Map.Entry<String, ColumnWrapper> itemIdAndColumnWrapper : itemIdAndColumnWrappers.entrySet()) {
ColumnWrapper columnWrapper = columnWrapperEntry.getValue(); ColumnWrapper columnWrapper = itemIdAndColumnWrapper.getValue();
if ("input".equals(columnWrapper.getItemType()) if ("input".equals(columnWrapper.getItemType())
|| "textarea".equals(columnWrapper.getItemType()) || "textarea".equals(columnWrapper.getItemType())
|| "datepicker".equals(columnWrapper.getItemType()) || "datepicker".equals(columnWrapper.getItemType())
@ -646,10 +656,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
columnWrapper.setColValue(colValue); columnWrapper.setColValue(colValue);
} else { } else {
// remote类型。优先从缓存取 // remote类型。优先从缓存取
Map<String, String> optionsOfItem = itemIdAndOptionsCache.getIfPresent(columnWrapperEntry.getKey()); Map<String, String> optionsOfItem = itemIdAndOptionsCache.getIfPresent(itemIdAndColumnWrapper.getKey());
if (optionsOfItem == null || optionsOfItem.size() == 0) { if (optionsOfItem == null || optionsOfItem.size() == 0) {
optionsOfItem = listRemoteOptions(headerColumnWrapper, columnWrapper.getOptionSourceValue(), currUserAgencyId, "saveorupdate"); optionsOfItem = listRemoteOptions(itemIdAndColumnWrappers, columnWrapper.getOptionSourceValue(), currUserAgencyId, "saveorupdate");
itemIdAndOptionsCache.put(columnWrapperEntry.getKey(), optionsOfItem); itemIdAndOptionsCache.put(itemIdAndColumnWrapper.getKey(), optionsOfItem);
} }
String colValue = optionsOfItem.get(cellContent); String colValue = optionsOfItem.get(cellContent);
columnWrapper.setColValue(colValue); columnWrapper.setColValue(colValue);
@ -659,10 +669,21 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
columnWrapper.setColValue(checkBoxColValue); columnWrapper.setColValue(checkBoxColValue);
} }
// requiredColumns中的值为必填项 // requiredColumns中的值不在排除字段中 && 是必填 && 未填写
if (columnWrapper.getRequired() == 1 && StringUtils.isBlank(columnWrapper.colValue)) { if (isPrimaryTable) {
interupt = true; // 主表没有需要排除的列
errorColumnNames.add(columnWrapper.combinedLabel); if (columnWrapper.getRequired() == 1 && StringUtils.isBlank(columnWrapper.colValue)) {
interupt = true;
errorColumnNames.add(columnWrapper.combinedLabel);
}
} else {
// 从表需要排除掉一些不必要校验的列
if (!subTableNeedlessColumns.contains(columnWrapper.columnName)
&& columnWrapper.getRequired() == 1
&& StringUtils.isBlank(columnWrapper.colValue)) {
interupt = true;
errorColumnNames.add(columnWrapper.combinedLabel);
}
} }
target.put(columnWrapper.columnName, columnWrapper.colValue); target.put(columnWrapper.columnName, columnWrapper.colValue);
@ -674,22 +695,22 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
} }
/** /**
* @description 合并头 * @description 调换表头信息将中文label做key列号list作value(因为复选框的原因会出现相同的label对应多个列号以兴趣特长为例)
* *
* @param headers * @param headers <38:[兴趣爱好,兴趣特长]> <39:[兴趣爱好,兴趣特长]> <40:[兴趣爱好,兴趣特长]>...
* @return * @return <"兴趣爱好,兴趣特长":[38,39,40...]>
* @author wxz * @author wxz
* @date 2021.10.28 21:27:18 * @date 2021.10.28 21:27:18
*/ */
private HashMap<String, List<Integer>> combineHeaders(Map<Integer, List<String>> headers) { private HashMap<String, List<Integer>> exchangeKeyAndValueOfHeaders(Map<Integer, List<String>> headers) {
HashMap<String, List<Integer>> itemAndColIndexs = new LinkedHashMap<>(); HashMap<String, List<Integer>> itemAndColIndexs = new LinkedHashMap<>();
headers.forEach((k, v) -> { headers.forEach((k, v) -> {
String tempKey = String.join(":", v); String combinedHeaderLabels = String.join(":", v);
List<Integer> colIndexs = itemAndColIndexs.get(tempKey); List<Integer> colIndexs = itemAndColIndexs.get(combinedHeaderLabels);
if (colIndexs == null) { if (colIndexs == null) {
colIndexs = new ArrayList<>(); colIndexs = new ArrayList<>();
itemAndColIndexs.put(tempKey, colIndexs); itemAndColIndexs.put(combinedHeaderLabels, colIndexs);
} }
colIndexs.add(k); colIndexs.add(k);
}); });
@ -698,56 +719,54 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
} }
/** /**
* @description 洗头 * @description 复选框在excel中体现为多个列他们在oper_customize.items表中不存在所以要从headers中剔除这部分然后将剔除的部分返回
* *
* @param headers * @param headers excel表头 <列号:中文label列表>
* @param items * @param items customize库中查询出来的items的列表
* @return * @return 被移除的options
* @author wxz * @author wxz
* @date 2021.10.28 21:07:12 * @date 2021.10.28 21:07:12
*/ */
private Map<Integer, String> washHeaders(Map<Integer, List<String>> headers, List<FormItemResult> items) { private Map<Integer, String> removeAndGetOptionsFromHeaders(Map<Integer, List<String>> headers, List<FormItemResult> items) {
List<String> itemLabels = items.stream().map(i -> i.getLabel()).collect(Collectors.toList()); List<String> itemLabels = items.stream().map(i -> i.getLabel()).collect(Collectors.toList());
Map<Integer, String> abandonedHeaders = new HashMap<>(); Map<Integer, String> abandonedOptions = new HashMap<>();
for (Map.Entry<Integer, List<String>> entry:headers.entrySet()) { for (Map.Entry<Integer, List<String>> entry:headers.entrySet()) {
Integer colIdx = entry.getKey(); Integer columnIndex = entry.getKey();
List<String> v = entry.getValue(); List<String> headerLabels = entry.getValue();
int lastPartIndex = v.size() - 1; int lastLevelHeaderLevel = headerLabels.size() - 1;
String lastValuePart = v.get(lastPartIndex); // 最后一集header的中文label
if (!itemLabels.contains(lastValuePart)) { String lastLevelHeaderLabel = headerLabels.get(lastLevelHeaderLevel);
if (!itemLabels.contains(lastLevelHeaderLabel)) {
// 该部分为options,它的上一级是item,那么去掉options这一级 // 该部分为options,它的上一级是item,那么去掉options这一级
v.remove(lastPartIndex); headerLabels.remove(lastLevelHeaderLevel);
abandonedHeaders.put(colIdx, lastValuePart); abandonedOptions.put(columnIndex, lastLevelHeaderLabel);
} }
} }
return abandonedHeaders; return abandonedOptions;
} }
/** /**
* @description 数据整合将excel表头汉字信息转化成ColumnWrapper列封装数据 * @description 数据整合将excel表头汉字信息转化成ColumnWrapper列封装数据
* * key:itemId * * key:itemId
* * value:ColumnWrapper列包装信息 * * value:ColumnWrapper列包装信息
* @param formItemMap item map * @param customizedLabelCompbinedItemsMap item map
* key:itemId; * key:itemId;
* value: 合并之后的head字符串例如健康信息:监护人 * value: 合并之后的head字符串例如健康信息:监护人
* @param combinedHeaders 合并之后的head信息 * @param combinedHeaders 合并之后的head信息
* key合并之后head字符串(例如党员信息:入党时间) * key合并之后head字符串(例如党员信息:入党时间)
* value列号组成的列表(例如[1,2,3]) * value列号组成的列表(例如[1,2,3])
* @param datas * @return key:itemIdvaluecolumnWrapper
* @param abandonedHeaders
* @return
*/ */
private Map<String, ColumnWrapper> convertExcelHeaders2DBColumnWrappers(Map<String, FormItemResult> formItemMap, Map<String, List<Integer>> combinedHeaders, private Map<String, ColumnWrapper> convertExcelHeaders2DBColumnWrappers(Map<String, FormItemResult> customizedLabelCompbinedItemsMap, Map<String, List<Integer>> combinedHeaders) {
List<Map<Integer, String>> datas, Map<Integer, String> abandonedHeaders) {
// HashMap<String, List<ColumnWrapper>> tables = new HashMap<>(); // HashMap<String, List<ColumnWrapper>> tables = new HashMap<>();
Map<String, ColumnWrapper> columns = new LinkedHashMap<>(combinedHeaders.size()); Map<String, ColumnWrapper> columns = new LinkedHashMap<>(combinedHeaders.size());
for (Map.Entry<String, List<Integer>> entry : combinedHeaders.entrySet()) { for (Map.Entry<String, List<Integer>> labelAndColumnIndexs : combinedHeaders.entrySet()) {
String combinedHeader = entry.getKey(); String combinedHeader = labelAndColumnIndexs.getKey();
FormItemResult item = formItemMap.get(combinedHeader); FormItemResult item = customizedLabelCompbinedItemsMap.get(combinedHeader);
if (item == null) { if (item == null) {
// 如果数据库中没有该项,可能是用户自己定义的项,忽略 // 如果数据库中没有该项,可能是用户自己定义的项,忽略
@ -766,7 +785,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
String combinedLabel = StringUtils.isBlank(groupLabel) ? item.getLabel() : groupLabel.concat(":").concat(item.getLabel()); String combinedLabel = StringUtils.isBlank(groupLabel) ? item.getLabel() : groupLabel.concat(":").concat(item.getLabel());
columnWrapper.setCombinedLabel(combinedLabel); columnWrapper.setCombinedLabel(combinedLabel);
columnWrapper.setColumnName((columnNum == null || columnNum == 0) ? columnName : columnName + columnNum); columnWrapper.setColumnName((columnNum == null || columnNum == 0) ? columnName : columnName + columnNum);
columnWrapper.setColIndex(entry.getValue()); columnWrapper.setColIndex(labelAndColumnIndexs.getValue());
columnWrapper.setRequired(item.getRequired()); columnWrapper.setRequired(item.getRequired());
columnWrapper.setOptionSourceType(item.getOptionSourceType()); columnWrapper.setOptionSourceType(item.getOptionSourceType());
@ -802,15 +821,14 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
} }
/** /**
* @description 合并表头 * @description 合并多级表头竖着将多级表头放入同一个list然后以列号为keylist为value放入map
* Map<Integer, List<String>>
* *
* @param headList * @param headList 表头列表每一个元素都是一行表头Map结构<列号:某级表头中文>
* @return * @return 表头列表,Map结构<列号:[一级表头中文,二级表头中文,三级表头中文]>
* @author wxz * @author wxz
* @date 2021.10.27 16:17:34 * @date 2021.10.27 16:17:34
*/ */
private Map<Integer, List<String>> mergeHead(List<Map<Integer, String>> headList) { private Map<Integer, List<String>> mergeMultiLevelHeadLabels(List<Map<Integer, String>> headList) {
Map<Integer, String> lastNotNullHeads = new LinkedHashMap<>(); Map<Integer, String> lastNotNullHeads = new LinkedHashMap<>();
@ -1045,7 +1063,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
HashMap<String, String> existingResiCategories = new HashMap<>(); HashMap<String, String> existingResiCategories = new HashMap<>();
HashMap<String, String> newResiCategories = new HashMap<>(); HashMap<String, String> newResiCategories = new HashMap<>();
for (String categoryColumnName : resiCategoryItemsCache.get().keySet()) { for (String categoryColumnName : resiCategoryColumnNameAndLabel.get().keySet()) {
String oldCategoryValue = existingResiMap.get(categoryColumnName); String oldCategoryValue = existingResiMap.get(categoryColumnName);
String newCategoryValue = newResiMap.get(categoryColumnName); String newCategoryValue = newResiMap.get(categoryColumnName);
@ -1091,7 +1109,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
HashMap<String, String> oldCategories = new HashMap<>(); HashMap<String, String> oldCategories = new HashMap<>();
HashMap<String, String> newCategories = new HashMap<>(); HashMap<String, String> newCategories = new HashMap<>();
Set<String> categoryColumnNames = resiCategoryItemsCache.get().keySet(); Set<String> categoryColumnNames = resiCategoryColumnNameAndLabel.get().keySet();
for (String categoryColumnName : categoryColumnNames) { for (String categoryColumnName : categoryColumnNames) {
String existingColumnValue = existingResiMap.get(categoryColumnName); String existingColumnValue = existingResiMap.get(categoryColumnName);
String newColumnValue = newResiMap.get(categoryColumnName); String newColumnValue = newResiMap.get(categoryColumnName);
@ -1142,7 +1160,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
*/ */
private void saveSubTableInfoToCategoryChangedResiCache(String icResiId, String columnName) { private void saveSubTableInfoToCategoryChangedResiCache(String icResiId, String columnName) {
ResiImportResiCategoryChangedCache cc = categoryChangedResi.get(); ResiImportResiCategoryChangedCache cc = newlyOrChangedResi.get();
Map<String, ResiImportCategoryData> newResis = cc.getNewResis(); Map<String, ResiImportCategoryData> newResis = cc.getNewResis();
Map<String, ResiImportChangedData> categoryChangedResis = cc.getCategoryChangedResis(); Map<String, ResiImportChangedData> categoryChangedResis = cc.getCategoryChangedResis();
Map<String, ResiImportChangedData> transferedResis = cc.getTransferedResis(); Map<String, ResiImportChangedData> transferedResis = cc.getTransferedResis();
@ -1224,7 +1242,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
String beforeValueName = "0".equals(oldColumnValue) ? "否" : "是"; String beforeValueName = "0".equals(oldColumnValue) ? "否" : "是";
String newValueName = "0".equals(newColumnValue) ? "否" : "是"; String newValueName = "0".equals(newColumnValue) ? "否" : "是";
String label = resiCategoryItemsCache.get().get(columnName); String label = resiCategoryColumnNameAndLabel.get().get(columnName);
sbBefore.append(label).append(":").append(beforeValueName).append("\n"); sbBefore.append(label).append(":").append(beforeValueName).append("\n");
sbAfter.append(label).append(":").append(newValueName).append("\n"); sbAfter.append(label).append(":").append(newValueName).append("\n");
@ -1411,32 +1429,38 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
newAgencyId, newGridId, newvillageId, newBuildId, newUnitId, newHomeId, oldOrg, newOrg); newAgencyId, newGridId, newvillageId, newBuildId, newUnitId, newHomeId, oldOrg, newOrg);
icUserTransferRecordDao.insert(transferRecord); icUserTransferRecordDao.insert(transferRecord);
// 保存 changeRecord // 保存 调动changeRecord
IcUserChangeRecordEntity changeRecord = fillChangeRecord(customerId, resiId, resiInfo.getName(), transferRecord.getId(), operator.getStaffId(), IcUserChangeRecordEntity transferChangeRecord = fillChangeRecord(customerId, resiId, resiInfo.getName(), transferRecord.getId(), operator.getStaffId(),
operator.getRealName(), sbBefore.toString(), sbAfter.toString(), "transfer", "调动", "", now); operator.getRealName(), sbBefore.toString(), sbAfter.toString(), "transfer", "调动", "", now);
icUserChangeRecordDao.insert(changeRecord); icUserChangeRecordDao.insert(transferChangeRecord);
// 保存 类别变更changeRecord
IcUserChangeRecordEntity categoryChangeRecord = fillChangeRecord(customerId, resiId, resiInfo.getName(), transferRecord.getId(), operator.getStaffId(),
operator.getRealName(), sbBefore.toString(), sbAfter.toString(), "category", "类别", "", now);
icUserChangeRecordDao.insert(categoryChangeRecord);
// 保存 changeDetail // 保存 changeDetail
for (Map.Entry<String, String> oldCategories : oldData.getCategories().entrySet()) { for (Map.Entry<String, String> oldCategories : oldData.getCategories().entrySet()) {
String key = oldCategories.getKey(); String key = oldCategories.getKey();
String value = oldCategories.getValue(); // String value = oldCategories.getValue();
// 之前是这个类型,那这个类型需要-1 // 之前是这个类型,那这个类型需要-1
IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, changeRecord.getId(), oldData.getAgencyId(), IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, categoryChangeRecord.getId(), oldData.getAgencyId(),
oldData.getGridId(), oldData.getVillageId(), oldData.getBuildId(), oldData.getUnitId(), oldData.getGridId(), oldData.getVillageId(), oldData.getBuildId(), oldData.getUnitId(),
oldData.getHomeId(), "category", "调动", key, -1, resiInfo.getPids()); oldData.getHomeId(), categoryChangeRecord.getType(), categoryChangeRecord.getTypeName(), key, -1, resiInfo.getPids());
icUserChangeDetailedDao.insert(changeDetail); icUserChangeDetailedDao.insert(changeDetail);
} }
// 保存 changeDetail
for (Map.Entry<String, String> newCategories : newData.getCategories().entrySet()) { for (Map.Entry<String, String> newCategories : newData.getCategories().entrySet()) {
String key = newCategories.getKey(); String key = newCategories.getKey();
String value = newCategories.getValue(); // String value = newCategories.getValue();
// 现在是这个类型,这个类型要+1 // 现在是这个类型,这个类型要+1
IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, changeRecord.getId(), newData.getAgencyId(), IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, categoryChangeRecord.getId(), newData.getAgencyId(),
newData.getGridId(), newData.getVillageId(), newData.getBuildId(), newData.getUnitId(), newData.getGridId(), newData.getVillageId(), newData.getBuildId(), newData.getUnitId(),
newData.getHomeId(), "category", "调动", key, 1, resiInfo.getPids()); newData.getHomeId(), categoryChangeRecord.getType(), categoryChangeRecord.getTypeName(), key, 1, resiInfo.getPids());
icUserChangeDetailedDao.insert(changeDetail); icUserChangeDetailedDao.insert(changeDetail);
} }

Loading…
Cancel
Save