From 7eec8535bd87932b429e6024b2ceca10bd3a529f Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Fri, 21 Jan 2022 09:59:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=201.=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E5=B1=85=E6=B0=91=E5=AF=BC=E5=85=A5,=E4=BA=BA?= =?UTF-8?q?=E5=91=98=E7=9A=84=E8=B0=83=E5=8A=A8=E5=92=8C=E7=B1=BB=E5=88=AB?= =?UTF-8?q?=E7=9A=84=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/feign/GovOrgOpenFeignClient.java | 8 + .../GovOrgOpenFeignClientFallback.java | 4 + .../impl/IcResiUserImportServiceImpl.java | 610 ++++++++++++++++-- .../impl/IcUserTransferRecordServiceImpl.java | 2 +- 4 files changed, 556 insertions(+), 68 deletions(-) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java index 9293546170..6c31c72c8d 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java @@ -583,4 +583,12 @@ public interface GovOrgOpenFeignClient { **/ @PostMapping(value = "/gov/org/customeragency/icresiuserorgmsg") Result icResiUserOrgMsg(@RequestBody IcResiUserOrgMsgFormDTO formDTO); + + /** + * 查询单元 + * @param id + * @return + */ + @GetMapping("/gov/org/icbuildingunit/{id}") + Result getUnitById(@PathVariable("id") String id); } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java index 7b245ec735..2ce6993f47 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java @@ -379,4 +379,8 @@ public class GovOrgOpenFeignClientFallback implements GovOrgOpenFeignClient { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "icResiUserOrgMsg", formDTO); } + @Override + public Result getUnitById(String id) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getUnitById", id); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 43e3263c94..7e8a5166e1 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -11,29 +11,35 @@ import com.epmet.bean.ResiImportResiCategoryChangedCache; import com.epmet.bean.ResiImportChangedData; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; 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.bean.GridInfoCache; import com.epmet.commons.tools.security.user.LoginUserUtil; +import com.epmet.commons.tools.utils.Result; import com.epmet.dao.IcResiUserDao; +import com.epmet.dao.IcUserChangeDetailedDao; +import com.epmet.dao.IcUserChangeRecordDao; +import com.epmet.dao.IcUserTransferRecordDao; import com.epmet.dto.*; -import com.epmet.dto.form.GridOptionFormDTO; -import com.epmet.dto.form.HouseFormDTO; -import com.epmet.dto.form.LoginUserDetailsFormDTO; -import com.epmet.dto.result.FormItemResult; -import com.epmet.dto.result.LoginUserDetailsResultDTO; -import com.epmet.dto.result.OptionDTO; -import com.epmet.dto.result.ResiCategoryItemResultDTO; +import com.epmet.dto.form.*; +import com.epmet.dto.result.*; import com.epmet.entity.IcResiUserEntity; +import com.epmet.entity.IcUserChangeDetailedEntity; +import com.epmet.entity.IcUserChangeRecordEntity; +import com.epmet.entity.IcUserTransferRecordEntity; import com.epmet.enums.IcResiUserTableEnum; import com.epmet.excel.handler.DynamicEasyExcelListener; import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.feign.OperCustomizeOpenFeignClient; -import com.epmet.service.IcResiUserImportService; +import com.epmet.service.*; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import lombok.Data; @@ -74,7 +80,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res /** * 居民类别items列表 */ - public static final ThreadLocal> resiCategoryItemsCache = new ThreadLocal<>(); + public static final ThreadLocal> resiCategoryItemsCache = new ThreadLocal<>(); /** * key: itemId @@ -103,6 +109,19 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res @Autowired private OperCustomizeOpenFeignClient operCustomizeOpenFeignClient; + @Autowired + private IcUserChangeRecordDao icUserChangeRecordDao; + + @Autowired + private IcUserChangeDetailedDao icUserChangeDetailedDao; + + @Autowired + private IcUserTransferRecordDao icUserTransferRecordDao; + + @Autowired + private UserService userService; + + /** * @description 列信息封装 * @@ -196,10 +215,11 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res userForm.setClient(loginUserClient); userForm.setUserId(loginUserId); - LoginUserDetailsResultDTO loginUserDetails = getResultDataOrThrowsException(epmetUserOpenFeignClient.getLoginUserDetails(userForm), ServiceConstant.EPMET_USER_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null, null); - String currUserAgencyId = loginUserDetails.getAgencyId(); + String currUserAgencyId = userService.getLoginUserDetails( + loginUserUtil.getLoginUserApp(), + loginUserUtil.getLoginUserClient(), + loginUserUtil.getLoginUserId()).getAgencyId(); - //String excelPathName = "/opt/test/基础信息表/resi_info.xls"; CustomerAgencyDTO agencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(currUserAgencyId), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null, null); String customerId = agencyInfo.getCustomerId(); @@ -230,9 +250,15 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res // 执行人员类别变更记录 Map newResis = categoryChangedResi.get().getNewResis(); + // todo 此处没测试 Map categoryChangedResis = categoryChangedResi.get().getCategoryChangedResis(); Map transferedResis = categoryChangedResi.get().getTransferedResis(); + //保存调动或者变更记录 + saveNewResiCategoryRecord(newResis); + saveResiCategoryChangedRecord(categoryChangedResis); + saveTransferedResiRecord(transferedResis); + try { downLoadResults(response); } catch (IOException e) { @@ -275,8 +301,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String.format("【居民信息导入】查询居民类别items失败,customerId:%s", customerId), "居民信息导入失败"); - List l = resiCategoryItems.stream().map(ResiCategoryItemResultDTO::getColumnName).collect(Collectors.toList()); - resiCategoryItemsCache.set(l); + Map columnNameAndLabel = resiCategoryItems.stream().collect(Collectors.toMap((o) -> o.getColumnName(), (o) -> o.getLabel())); + + resiCategoryItemsCache.set(columnNameAndLabel); } /** @@ -434,7 +461,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res columnAndValues.put("ID", UUID.randomUUID().toString().replace("-", "")); icResiUserDao.add(tableName, columnAndValues); - Map categories = resiCategoryItemsCache.get() + Map categories = resiCategoryItemsCache.get().keySet() .stream() .filter((categoryColumnName) -> "1".equals(columnAndValues.get(categoryColumnName))) .collect(Collectors.toMap((k) -> k, (k) -> columnAndValues.get(k))); @@ -507,19 +534,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String icResiId = icResiUserBaseInfo.getId(); - //if (CollectionUtils.isNotEmpty(icResiUserDao.selectSubTableRecords(customerId, icResiId, targetTableName))) { - // log.info("身份证号为【{}】的居民【{}】信息已存在,跳过导入", idCard, targetTableName); - // - // SkipedRow skipedRow = new SkipedRow(); - // skipedRow.setName(columnAndValues.get("NAME")); - // skipedRow.setIdCard(columnAndValues.get("ID_CARD")); - // skipedRow.setInfo("信息已存在,跳过导入"); - // skipedRow.setTableName(targetTableName); - // skipedRows.get().get(targetTableName).add(skipedRow); - // - // continue; - //} - columnAndValues.put("IC_RESI_USER", icResiId); columnAndValues.put("CUSTOMER_ID", loginUserUtil.getLoginUserCustomerId()); columnAndValues.put("UPDATED_BY", currentUserId); @@ -543,6 +557,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res icResiUserDao.add(targetTableName, columnAndValues); } + // 保存到类别变更缓存中 + saveSubTableInfoToCategoryChangedResiCache(icResiId, Objects.requireNonNull(IcResiUserTableEnum.getObjectByTableName(targetTableName)).getMainTableFlagColumnName()); + } catch (Exception e) { String errorMsg; if (e instanceof RenException) { @@ -1005,36 +1022,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res workbook.write(response.getOutputStream()); } - public ResiImportCategoryData generateResiImportChangeData(String agencyId, String gridId, String villageId, String buildId, String unitId, - String homeId , Map categories) { - ResiImportCategoryData ricd = new ResiImportCategoryData(); - ricd.setAgencyId(agencyId); - ricd.setBuildId(buildId); - ricd.setGridId(gridId); - ricd.setVillageId(villageId); - ricd.setUnitId(unitId); - ricd.setHomeId(homeId); - ricd.setCategories(categories); - return ricd; - } - - ///** - // * 判断是否有组织维度的变化 - // * @param existingResiMap - // * @param newResiMap - // * @return - // */ - //public boolean isOrgDimChanged(Map existingResiMap, Map newResiMap) { - // return !existingResiMap.get("AGENCY_ID").equals(newResiMap.get("AGENCY_ID")) - // || !existingResiMap.get("GRID_ID").equals(newResiMap.get("GRID_ID")) - // || !existingResiMap.get("VILLAGE_ID").equals(newResiMap.get("VILLAGE_ID")) - // || !existingResiMap.get("BUILD_ID").equals(newResiMap.get("BUILD_ID")) - // || !existingResiMap.get("UNIT_ID").equals(newResiMap.get("UNIT_ID")) - // || !existingResiMap.get("HOME_ID").equals(newResiMap.get("HOME_ID")) - //} - /** * 生成导入调动数据 + * 1.新老数据中,只要状态是1的,都放入缓存 * @param existingResiMap * @param newResiMap * @return @@ -1055,7 +1045,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res HashMap existingResiCategories = new HashMap<>(); HashMap newResiCategories = new HashMap<>(); - for (String categoryColumnName : resiCategoryItemsCache.get()) { + for (String categoryColumnName : resiCategoryItemsCache.get().keySet()) { String oldCategoryValue = existingResiMap.get(categoryColumnName); String newCategoryValue = newResiMap.get(categoryColumnName); @@ -1077,7 +1067,8 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res existingResiMap.get("HOME_ID"), existingResiCategories); - ResiImportCategoryData newOne = new ResiImportCategoryData(existingResiMap.get("AGENCY_ID"), + ResiImportCategoryData newOne = new ResiImportCategoryData( + existingResiMap.get("AGENCY_ID"), newResiMap.get("GRID_ID"), newResiMap.get("VILLAGE_ID"), newResiMap.get("BUILD_ID"), @@ -1090,6 +1081,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res /** * 类别变更的居民信息封装 + * 1. * @param existingResiMap * @param newResiMap * @return @@ -1099,7 +1091,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res HashMap oldCategories = new HashMap<>(); HashMap newCategories = new HashMap<>(); - List categoryColumnNames = resiCategoryItemsCache.get(); + Set categoryColumnNames = resiCategoryItemsCache.get().keySet(); for (String categoryColumnName : categoryColumnNames) { String existingColumnValue = existingResiMap.get(categoryColumnName); String newColumnValue = newResiMap.get(categoryColumnName); @@ -1107,19 +1099,16 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res if (StringUtils.isAllBlank(existingColumnValue, newColumnValue)) { // 都为空,则没发生变化 continue; - } else if (StringUtils.isNoneBlank(existingColumnValue, newColumnValue)) { - // 都不为空,则执行比较 + } else { + // 先转为0再对比 + if (StringUtils.isBlank(existingColumnValue)) existingColumnValue = "0"; + if (StringUtils.isBlank(newColumnValue)) newColumnValue = "0"; + if (!existingColumnValue.equals(newColumnValue)) { oldCategories.put(categoryColumnName, existingColumnValue); newCategories.put(categoryColumnName, newColumnValue); - continue; } - } else { - // 一个为空一个不为空,则发生变化 - oldCategories.put(categoryColumnName, existingColumnValue); - newCategories.put(categoryColumnName, newColumnValue); } - } if (oldCategories.size() == 0) { @@ -1145,4 +1134,491 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res return new ResiImportChangedData(oldOne, newOne); } + + /** + * + * @param icResiId 居民id + * @param columnName 该项信息在主表的列名 + */ + private void saveSubTableInfoToCategoryChangedResiCache(String icResiId, String columnName) { + + ResiImportResiCategoryChangedCache cc = categoryChangedResi.get(); + Map newResis = cc.getNewResis(); + Map categoryChangedResis = cc.getCategoryChangedResis(); + Map transferedResis = cc.getTransferedResis(); + + ResiImportCategoryData newResi = newResis.get(icResiId); + if (newResi != null) { + //说明是新增居民 + newResi.getCategories().put(columnName, "1"); + return; + } + + ResiImportChangedData categoryChangedData = categoryChangedResis.get(icResiId); + if (categoryChangedData != null) { + // 说明是类别变更的居民 + Map oldCategories = categoryChangedData.getOldData().getCategories(); + Map newCategories = categoryChangedData.getNewData().getCategories(); + + if (!oldCategories.containsKey(columnName)) { + // 没有这个类别,说明旧数据中是0,新数据中也是0,新数据改成1 + oldCategories.put(columnName, "0"); + newCategories.put(columnName, "1"); + } else { + // 有这个类别,说明旧数据中是1,新数据中是0,新数据改成1,最后保存的时候,需要判断,新旧都是1,那么不创建变更记录 + newCategories.put(columnName, "1"); + } + return; + } + + ResiImportChangedData transferedData = transferedResis.get(icResiId); + if (transferedData != null) { + // 说明是发生调动的居民,旧数据不用管了,新数据改成1 + Map newCategories = transferedData.getNewData().getCategories(); + newCategories.put(columnName, "1"); + return; + } + + // 非新增,非调动,那么就是居民类别变更的,只不过变更的数据不在主sheet中,而在附sheet中 + ResiImportCategoryData oldOne = new ResiImportCategoryData(); + ResiImportCategoryData newOne = new ResiImportCategoryData(); + + oldOne.getCategories().put(columnName, "0"); + newOne.getCategories().put(columnName, "1"); + + ResiImportChangedData cd = new ResiImportChangedData(oldOne, newOne); + categoryChangedResis.put(icResiId, cd); + } + + /** + * 居民类别变更record + */ + public void saveResiCategoryChangedRecord(Map categoryChangedResis) { + + Date now = new Date(); + + CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(loginUserUtil.getLoginUserCustomerId(), loginUserUtil.getLoginUserId()); + + // 循环当前居民的所有类别的map + for (Map.Entry entry : categoryChangedResis.entrySet()) { + String resiId = entry.getKey(); + + ResiImportCategoryData oldData = entry.getValue().getOldData(); + ResiImportCategoryData newData = entry.getValue().getNewData(); + Map oldCategories = oldData.getCategories(); + Map newCategories = newData.getCategories(); + + StringBuilder sbBefore = new StringBuilder(""); + StringBuilder sbAfter = new StringBuilder(""); + + //主表的语言描述 + for (Map.Entry newEntry : newCategories.entrySet()) { + String columnName = newEntry.getKey(); + String newColumnValue = newEntry.getValue(); + String oldColumnValue = oldCategories.get(columnName); + + if (newColumnValue.equals(oldColumnValue)) { + continue; + } + + String beforeValueName = "0".equals(oldColumnValue) ? "否" : "是"; + String newValueName = "0".equals(newColumnValue) ? "否" : "是"; + + String label = resiCategoryItemsCache.get().get(columnName); + + sbBefore.append(label).append(":").append(beforeValueName).append("\n"); + sbAfter.append(label).append(":").append(newValueName).append("\n"); + } + + // 生成changeRecord并存入 + IcResiUserEntity resiInfo = icResiUserDao.selectById(resiId); + IcUserChangeRecordEntity changeRecord = fillChangeRecord(loginUserUtil.getLoginUserCustomerId(), resiId, resiInfo.getName(), null, loginUserUtil.getLoginUserId(), + operator.getRealName() , sbBefore.toString(), sbAfter.toString(), "category", "类别", "", now); + icUserChangeRecordDao.insert(changeRecord); + + for (Map.Entry columnEntry : newCategories.entrySet()) { + String newValue = columnEntry.getValue(); + String oldValue = oldCategories.get(columnEntry.getKey()); + oldValue = oldValue == null ? "0" : oldValue; + + if (newValue.equals(oldValue)) { + // 新旧值相等,跳过 + continue; + } + + int value = newValue.equals("1") && oldValue.equals("0") ? 1 : -1; + + + IcUserChangeDetailedEntity newDetail = fillChangeDetail(loginUserUtil.getLoginUserCustomerId(), resiId, changeRecord.getId(), newData.getAgencyId(), + newData.getGridId(), newData.getVillageId(), newData.getBuildId(), newData.getUnitId(), + newData.getHomeId(), "category", "类别", columnEntry.getKey(), value, resiInfo.getPids()); + + icUserChangeDetailedDao.insert(newDetail); + } + } + } + + /** + * 保存新增居民类别记录 + * @param newResis + */ + public void saveNewResiCategoryRecord(Map newResis) { + Date now = new Date(); + + CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(loginUserUtil.getLoginUserCustomerId(), loginUserUtil.getLoginUserId()); + + for (Map.Entry resi : newResis.entrySet()) { + String resiId = resi.getKey(); + ResiImportCategoryData data = resi.getValue(); + + IcResiUserEntity resiInfo = icResiUserDao.selectById(resiId); + + // 插入changeRecord + IcUserChangeRecordEntity changeRecord = fillChangeRecord(loginUserUtil.getLoginUserCustomerId(), resiId, resiInfo.getName(), null, + loginUserUtil.getLoginUserId(), operator.getRealName(), "-", "-", + "add", "新增", "", now); + icUserChangeRecordDao.insert(changeRecord); + + // 插入changeDetail + for (Map.Entry column : data.getCategories().entrySet()) { + IcUserChangeDetailedEntity changedetail = fillChangeDetail(loginUserUtil.getLoginUserCustomerId(), resiId, changeRecord.getId(), data.getAgencyId(), + data.getGridId(), data.getVillageId(), data.getBuildId(), data.getUnitId(), + data.getHomeId(), "add", "新增", column.getKey(), 1, resiInfo.getPids()); + + icUserChangeDetailedDao.insert(changedetail); + } + } + + } + + /** + * 调动居民变更记录 + * @param transferedResis + */ + public void saveTransferedResiRecord(Map transferedResis) { + Date now = new Date(); + for (Map.Entry resi : transferedResis.entrySet()) { + String customerId = loginUserUtil.getLoginUserCustomerId(); + + String resiId = resi.getKey(); + ResiImportCategoryData oldData = resi.getValue().getOldData(); + ResiImportCategoryData newData = resi.getValue().getNewData(); + + StringBuilder sbBefore = new StringBuilder(); + StringBuilder sbAfter = new StringBuilder(); + + String oldAgencyId = oldData.getAgencyId(); + String oldGridId = oldData.getGridId(); + String oldvillageId = oldData.getVillageId(); + String oldBuildId = oldData.getBuildId(); + String oldUnitId = oldData.getUnitId(); + String oldHomeId = oldData.getHomeId(); + // + String newAgencyId = newData.getAgencyId(); + String newGridId = newData.getGridId(); + String newvillageId = newData.getVillageId(); + String newBuildId = newData.getBuildId(); + String newUnitId = newData.getUnitId(); + String newHomeId = newData.getHomeId(); + + IcResiUserOrgMsgFormDTO oldOrgFormDTO = new IcResiUserOrgMsgFormDTO(); + oldOrgFormDTO.setCustomerId(customerId); + oldOrgFormDTO.setAgencyId(oldData.getAgencyId()); + oldOrgFormDTO.setGridId(oldData.getGridId()); + oldOrgFormDTO.setNeighborHoodId(oldData.getVillageId()); + oldOrgFormDTO.setBuildingId(oldData.getBuildId()); + oldOrgFormDTO.setBuildingUnitId(oldData.getUnitId()); + oldOrgFormDTO.setHouseId(oldData.getHomeId()); + Result oldOrgInfoRst = govOrgOpenFeignClient.icResiUserOrgMsg(oldOrgFormDTO); + + IcResiUserOrgMsgFormDTO newOrgInfo = new IcResiUserOrgMsgFormDTO(); + newOrgInfo.setCustomerId(customerId); + newOrgInfo.setAgencyId(newData.getAgencyId()); + newOrgInfo.setGridId(newData.getGridId()); + newOrgInfo.setNeighborHoodId(newData.getVillageId()); + newOrgInfo.setBuildingId(newData.getBuildId()); + newOrgInfo.setBuildingUnitId(newData.getUnitId()); + newOrgInfo.setHouseId(newData.getHomeId()); + Result newOrgInfoRst = govOrgOpenFeignClient.icResiUserOrgMsg(newOrgInfo); + + IcResiUserOrgMsgResultDTO oldOrg = null; + IcResiUserOrgMsgResultDTO newOrg = null; + + if (oldOrgInfoRst.success()) { + oldOrg = oldOrgInfoRst.getData(); + } + + if (newOrgInfoRst.success()) { + newOrg = newOrgInfoRst.getData(); + } + + // 生成中文描述 + if (oldOrg != null) { + CustomerGridDTO gridDTO = oldOrg.getGridDTO(); + IcNeighborHoodDTO neighborHoodDTO = oldOrg.getNeighborHoodDTO(); + IcBuildingDTO buildingDTO = oldOrg.getBuildingDTO(); + IcBuildingUnitDTO buildingUnitDTO = oldOrg.getBuildingUnitDTO(); + IcHouseDTO houseDTO = oldOrg.getHouseDTO(); + + if (gridDTO != null) { + sbBefore.append(gridDTO.getGridName()); + } + if (neighborHoodDTO != null) { + sbBefore.append("-").append(neighborHoodDTO.getNeighborHoodName()); + } + if (buildingDTO != null) { + sbBefore.append("-").append(buildingDTO.getBuildingName()); + } + if (buildingUnitDTO != null) { + sbBefore.append("-").append(buildingUnitDTO.getUnitName()); + } + if (houseDTO != null) { + sbBefore.append("-").append(houseDTO.getHouseName()); + } + } + + if (newOrg != null) { + CustomerGridDTO gridDTO = newOrg.getGridDTO(); + IcNeighborHoodDTO neighborHoodDTO = newOrg.getNeighborHoodDTO(); + IcBuildingDTO buildingDTO = newOrg.getBuildingDTO(); + IcBuildingUnitDTO buildingUnitDTO = newOrg.getBuildingUnitDTO(); + IcHouseDTO houseDTO = newOrg.getHouseDTO(); + + if (gridDTO != null) { + sbAfter.append(gridDTO.getGridName()); + } + if (neighborHoodDTO != null) { + sbAfter.append("-").append(neighborHoodDTO.getNeighborHoodName()); + } + if (buildingDTO != null) { + sbAfter.append("-").append(buildingDTO.getBuildingName()); + } + if (buildingUnitDTO != null) { + sbAfter.append("-").append(buildingUnitDTO.getUnitName()); + } + if (houseDTO != null) { + sbAfter.append("-").append(houseDTO.getHouseName()); + } + } + + CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(customerId, loginUserUtil.getLoginUserId()); + + IcResiUserEntity resiInfo = icResiUserDao.selectById(resiId); + + // 保存 transferRecord + IcUserTransferRecordEntity transferRecord = fillTransferRecord(resiInfo, operator, customerId, oldAgencyId, oldGridId, + oldvillageId, oldBuildId, oldUnitId, oldHomeId, customerId, + newAgencyId, newGridId, newvillageId, newBuildId, newUnitId, newHomeId, oldOrg, newOrg); + icUserTransferRecordDao.insert(transferRecord); + + // 保存 changeRecord + IcUserChangeRecordEntity changeRecord = fillChangeRecord(customerId, resiId, resiInfo.getName(), transferRecord.getId(), operator.getStaffId(), + operator.getRealName(), sbBefore.toString(), sbAfter.toString(), "transfer", "调动", "", now); + icUserChangeRecordDao.insert(changeRecord); + + // 保存 changeDetail + for (Map.Entry oldCategories : oldData.getCategories().entrySet()) { + String key = oldCategories.getKey(); + String value = oldCategories.getValue(); + + // 之前是这个类型,那这个类型需要-1 + IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, changeRecord.getId(), oldData.getAgencyId(), + oldData.getGridId(), oldData.getVillageId(), oldData.getBuildId(), oldData.getUnitId(), + oldData.getHomeId(), "category", "调动", key, -1, resiInfo.getPids()); + + icUserChangeDetailedDao.insert(changeDetail); + } + + for (Map.Entry newCategories : newData.getCategories().entrySet()) { + String key = newCategories.getKey(); + String value = newCategories.getValue(); + + // 现在是这个类型,这个类型要+1 + IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, changeRecord.getId(), newData.getAgencyId(), + newData.getGridId(), newData.getVillageId(), newData.getBuildId(), newData.getUnitId(), + newData.getHomeId(), "category", "调动", key, 1, resiInfo.getPids()); + + icUserChangeDetailedDao.insert(changeDetail); + } + } + } + + /** + * 填充变更明细 + * @param customerId + * @param resiId + * @param changeRecordId + * @param agencyId + * @param gridId + * @param neighborhoodId + * @param buildingId + * @param initId + * @param houseId + * @param type + * @param typeName + * @param fieldName + * @param value + * @param pids + * @return + */ + private IcUserChangeDetailedEntity fillChangeDetail(String customerId, String resiId, String changeRecordId, String agencyId, String gridId, + String neighborhoodId, String buildingId, String initId, String houseId, + String type, String typeName, String fieldName, Integer value, String pids) { + IcUserChangeDetailedEntity detail = new IcUserChangeDetailedEntity(); + detail.setCustomerId(customerId); + detail.setIcUserChangeRecordId(changeRecordId); + detail.setPids(pids); + detail.setAgencyId(agencyId); + detail.setGridId(gridId); + detail.setNeighborHoodId(neighborhoodId); + detail.setBuildingId(buildingId); + detail.setBuildingUnitId(initId); + detail.setHouseId(houseId); + detail.setIcUserId(resiId); + detail.setType(type); + detail.setTypeName(typeName); + detail.setFieldName(fieldName); + detail.setValue(value); + return detail; + } + + /** + * 填充变更记录 + * @param customerId + * @param resiId + * @param resiName + * @param transferRecordId + * @param operatorId + * @param operatorName + * @param beforeChangeName + * @param afterChangeName + * @param type + * @param typeName + * @param remark + * @param changeTime + * @return + */ + private IcUserChangeRecordEntity fillChangeRecord(String customerId, String resiId, String resiName, String transferRecordId, + String operatorId, String operatorName, String beforeChangeName, String afterChangeName, + String type, String typeName, String remark, Date changeTime) { + IcUserChangeRecordEntity changeRecord = new IcUserChangeRecordEntity(); + changeRecord.setAfterChangeName(afterChangeName); + changeRecord.setBeforeChangeName(beforeChangeName); + changeRecord.setChangeTime(changeTime); + changeRecord.setCustomerId(customerId); + changeRecord.setIcUserId(resiId); + changeRecord.setIcUserName(resiName); + changeRecord.setIcUserTransferRecordId(transferRecordId); + changeRecord.setOperatorId(operatorId); + changeRecord.setOperatorName(operatorName); + changeRecord.setRemark(remark); + changeRecord.setType(type); + changeRecord.setTypeName(typeName); + + return changeRecord; + } + + /** + * 填充调动记录 + * @param resiInfo + * @param operator + * @param oldCustomerId + * @param oldAgencyId + * @param oldGridId + * @param oldVillageId + * @param oldBuildId + * @param oldUnitId + * @param oldHomeId + * @param newCustomerId + * @param newAgencyId + * @param newGridId + * @param newVillageId + * @param newBuildId + * @param newUnitId + * @param newHomeId + * @return + */ + private IcUserTransferRecordEntity fillTransferRecord(IcResiUserEntity resiInfo, CustomerStaffInfoCacheResult operator, String oldCustomerId, String oldAgencyId, String oldGridId, + String oldVillageId, String oldBuildId, String oldUnitId, String oldHomeId, String newCustomerId, + String newAgencyId, String newGridId, String newVillageId, String newBuildId, String newUnitId, + String newHomeId, IcResiUserOrgMsgResultDTO oldOrg, IcResiUserOrgMsgResultDTO newOrg) { + + IcUserTransferRecordEntity recordEntity = new IcUserTransferRecordEntity(); + recordEntity.setIcUserId(resiInfo.getId()); + recordEntity.setOperatorId(operator.getStaffId()); + recordEntity.setIcUserName(resiInfo.getName()); + recordEntity.setOperatorName(operator.getRealName()); + recordEntity.setOldCustomerId(oldCustomerId); + recordEntity.setOldAgencyId(oldAgencyId); + recordEntity.setOldAgencyName(oldOrg != null ? oldOrg.getAgencyDTO().getOrganizationName() : ""); + recordEntity.setOldGridId(oldGridId); + recordEntity.setOldGridName(oldOrg != null ? oldOrg.getGridDTO().getGridName() : ""); + recordEntity.setOldNeighborHoodId(oldVillageId); + recordEntity.setOldNeighborHoodName(oldOrg != null ? oldOrg.getNeighborHoodDTO().getNeighborHoodName() : ""); + recordEntity.setOldBuildingId(oldBuildId); + recordEntity.setOldBuildingName(oldOrg != null ? oldOrg.getBuildingDTO().getBuildingName() : ""); + recordEntity.setOldBuildingUnitId(oldUnitId); + recordEntity.setOldBuildingUnitName(oldOrg != null ? oldOrg.getBuildingUnitDTO().getUnitName() : ""); + recordEntity.setOldHouseId(oldHomeId); + recordEntity.setOldHouseName(oldOrg != null ? oldOrg.getHouseDTO().getHouseName() : ""); + recordEntity.setTransferTime(new Date()); + recordEntity.setRemark(""); + recordEntity.setNewCustomerId(newCustomerId); + recordEntity.setNewAgencyId(newAgencyId); + recordEntity.setNewAgencyName(newOrg != null ? newOrg.getAgencyDTO().getOrganizationName(): ""); + recordEntity.setNewGridId(newGridId); + recordEntity.setNewGridName(newOrg != null ? newOrg.getGridDTO().getGridName(): ""); + recordEntity.setNewNeighborHoodId(newVillageId); + recordEntity.setNewNeighborHoodName(newOrg != null ? newOrg.getNeighborHoodDTO().getNeighborHoodName(): ""); + recordEntity.setNewBuildingId(newBuildId); + recordEntity.setNewBuildingName(newOrg != null ? newOrg.getBuildingDTO().getBuildingName(): ""); + recordEntity.setNewBuildingUnitId(newUnitId); + recordEntity.setNewBuildingUnitName(newOrg != null ? newOrg.getBuildingUnitDTO().getUnitName(): ""); + recordEntity.setNewHouseId(newHomeId); + recordEntity.setNewHouseName(newOrg != null ? newOrg.getHouseDTO().getHouseName(): ""); + + return recordEntity; + } + + + + + //private IcUserTransferRecordEntity fillTransferRecord(String resiId, String resiName, String operatorId, String operatorName, String oldCustomerId, + // String oldAgencyId, String oldAgencyName, String oldGridId, String oldGridName, String neighborhoodId, + // String neighborhoodName, String oldBuildingId, String oldBuildingName, ) { + + //IcUserTransferRecordEntity recordEntity = new IcUserTransferRecordEntity(); + //recordEntity.setIcUserId(); + //recordEntity.setOperatorId(); + //recordEntity.setIcUserName(); + //recordEntity.setOperatorName(); + //recordEntity.setOldCustomerId(); + //recordEntity.setOldAgencyId(); + //recordEntity.setOldAgencyName(); + //recordEntity.setOldGridId(); + //recordEntity.setOldGridName(); + //recordEntity.setOldNeighborHoodId(); + //recordEntity.setOldNeighborHoodName(); + //recordEntity.setOldBuildingId(); + //recordEntity.setOldBuildingName(); + //recordEntity.setOldBuildingUnitId(); + //recordEntity.setOldBuildingUnitName(); + //recordEntity.setOldHouseId(); + //recordEntity.setOldHouseName(); + //recordEntity.setTransferTime(); + //recordEntity.setRemark(); + //recordEntity.setNewCustomerId(); + //recordEntity.setNewAgencyId(); + //recordEntity.setNewAgencyName(); + //recordEntity.setNewGridId(); + //recordEntity.setNewGridName(); + //recordEntity.setNewNeighborHoodId(); + //recordEntity.setNewNeighborHoodName(); + //recordEntity.setNewBuildingId(); + //recordEntity.setNewBuildingName(); + //recordEntity.setNewBuildingUnitId(); + //recordEntity.setNewBuildingUnitName(); + //recordEntity.setNewHouseId(); + //recordEntity.setNewHouseName(); + //} } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserTransferRecordServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserTransferRecordServiceImpl.java index 1e61c9cf54..9d1470f253 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserTransferRecordServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserTransferRecordServiceImpl.java @@ -186,7 +186,7 @@ public class IcUserTransferRecordServiceImpl extends BaseServiceImpl