diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ResiCategoryItemResultDTO.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ResiCategoryItemResultDTO.java new file mode 100644 index 0000000000..8ab985676e --- /dev/null +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ResiCategoryItemResultDTO.java @@ -0,0 +1,17 @@ +package com.epmet.dto.result; + +import lombok.Data; + +/** + * @ClassName ResiCategoryItemResultDTO + * @Description 居民类别item查询结果 + * @Author wangxianzhang + * @Date 2022/1/18 4:43 下午 + */ +@Data +public class ResiCategoryItemResultDTO { + + private String columnName; + private String label; + +} diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java index 8cdf6e39de..0ccbfa1655 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java @@ -145,4 +145,11 @@ public interface OperCustomizeOpenFeignClient { @PostMapping("/oper/customize/icresicategorywarnconfig/categorywarnconfiglist/{customerId}") Result> categoryWarnConfigList(@PathVariable String customerId); + /** + * 查询客户下的居民类别item列表 + * @param customerId + * @return + */ + @PostMapping("/oper/customize/icformitem/resi-category-items/list") + Result> listResiCategoryItems(@RequestParam("customer-id") String customerId); } diff --git a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java index fde2def25e..9dec3f4afe 100644 --- a/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java +++ b/epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java @@ -119,4 +119,9 @@ public class OperCustomizeOpenFeignClientFallback implements OperCustomizeOpenFe public Result> categoryWarnConfigList(String customerId) { return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "categoryWarnConfigList", customerId); } + + @Override + public Result> listResiCategoryItems(String customerId) { + return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "listResiCategoryItems", customerId); + } } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java index 1cfe0d4276..f38a16f323 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java @@ -19,12 +19,10 @@ package com.epmet.controller; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.result.ColumnTableNameResultDTO; +import com.epmet.dto.result.ResiCategoryItemResultDTO; import com.epmet.service.IcFormItemService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -51,4 +49,15 @@ public class IcFormItemController { return new Result>().ok(icFormItemService.getMustColumn(customerId)); } + /** + * 查询客户下的居民类别item列表 + * @param customerId + * @return + */ + @PostMapping("resi-category-items/list") + public Result> listResiCategoryItems(@RequestParam("customer-id") String customerId) { + List r = icFormItemService.listResiCategoryItems(customerId); + return new Result().ok(r); + } + } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java index 575e31d6b1..f9eb17f8e3 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java @@ -19,10 +19,7 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.dto.form.CustomerFormQueryDTO; -import com.epmet.dto.result.ColumnTableNameResultDTO; -import com.epmet.dto.result.ConditionResultDTO; -import com.epmet.dto.result.IcFormResColumnDTO; -import com.epmet.dto.result.TableHeaderResultDTO; +import com.epmet.dto.result.*; import com.epmet.entity.IcFormItemEntity; import java.util.List; @@ -58,4 +55,11 @@ public interface IcFormItemService extends BaseService { * @Description 居民信息新增查询各表必填字段 **/ List getMustColumn(String customerId); + + /** + * 查询 + * @param customerId + * @return + */ + List listResiCategoryItems(String customerId); } diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java index 00c79db52c..697aaca89e 100644 --- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java +++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java @@ -17,6 +17,7 @@ package com.epmet.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; @@ -27,10 +28,7 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.IcFormItemDao; import com.epmet.dto.IcFormItemDTO; import com.epmet.dto.form.CustomerFormQueryDTO; -import com.epmet.dto.result.ColumnTableNameResultDTO; -import com.epmet.dto.result.ConditionResultDTO; -import com.epmet.dto.result.IcFormResColumnDTO; -import com.epmet.dto.result.TableHeaderResultDTO; +import com.epmet.dto.result.*; import com.epmet.entity.IcFormItemEntity; import com.epmet.service.IcFormItemService; import org.apache.commons.lang3.StringUtils; @@ -39,6 +37,8 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * 表单项 @@ -118,4 +118,28 @@ public class IcFormItemServiceImpl extends BaseServiceImpl listResiCategoryItems(String customerId) { + + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(IcFormItemEntity::getCustomerId, customerId); + query.eq(IcFormItemEntity::getDataAnalyse, 1); + + List categoryItems = baseDao.selectList(query); + + // 如果该客户没配置,那么使用默认配置 + if (CollectionUtils.isEmpty(categoryItems)) { + LambdaQueryWrapper query1 = new LambdaQueryWrapper<>(); + query1.eq(IcFormItemEntity::getDataAnalyse, 1); + query1.eq(IcFormItemEntity::getCustomerId, "default"); + categoryItems = baseDao.selectList(query1); + } + + return categoryItems.stream().map((e) -> { + ResiCategoryItemResultDTO d = new ResiCategoryItemResultDTO(); + d.setColumnName(e.getColumnName()); + d.setLabel(e.getLabel()); + return d; + }).collect(Collectors.toList()); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportCategoryData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportCategoryData.java new file mode 100644 index 0000000000..436be52b29 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportCategoryData.java @@ -0,0 +1,51 @@ +package com.epmet.bean; + +import lombok.Data; + +import java.util.HashMap; +import java.util.Map; + +/** + * @ClassName ResiImportTransferOldDim + * @Description TODO + * @Author wangxianzhang + * @Date 2022/1/18 5:53 下午 + */ +@Data +public class ResiImportCategoryData { + + private String agencyId; + private String gridId; + private String villageId; + private String buildId; + private String unitId; + private String homeId; + + /** + * key:居民类别在ic_resi_user表中的列名 + * value:居民类别的值。0:否,1:是 + */ + private Map categories = new HashMap<>(); + + public ResiImportCategoryData() { + } + + public ResiImportCategoryData(String agencyId, String gridId, String villageId, String buildId, String unitId, String homeId, Map categories) { + this.agencyId = agencyId; + this.gridId = gridId; + this.villageId = villageId; + this.buildId = buildId; + this.unitId = unitId; + this.homeId = homeId; + this.categories = categories; + } + + public ResiImportCategoryData(String agencyId, String gridId, String villageId, String buildId, String unitId, String homeId) { + this.agencyId = agencyId; + this.gridId = gridId; + this.villageId = villageId; + this.buildId = buildId; + this.unitId = unitId; + this.homeId = homeId; + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportChangedData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportChangedData.java new file mode 100644 index 0000000000..ff74a880a0 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportChangedData.java @@ -0,0 +1,20 @@ +package com.epmet.bean; + +import lombok.Data; + +/** + * @ClassName ResiImportTransferCache + * @Description TODO + * @Author wangxianzhang + * @Date 2022/1/18 5:51 下午 + */ +@Data +public class ResiImportChangedData { + private ResiImportCategoryData oldData = new ResiImportCategoryData(); + private ResiImportCategoryData newData = new ResiImportCategoryData(); + + public ResiImportChangedData(ResiImportCategoryData oldData, ResiImportCategoryData newData) { + this.oldData = oldData; + this.newData = newData; + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportResiCategoryChangedCache.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportResiCategoryChangedCache.java new file mode 100644 index 0000000000..6203c917a9 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportResiCategoryChangedCache.java @@ -0,0 +1,30 @@ +package com.epmet.bean; + +import lombok.Data; + +import java.util.HashMap; +import java.util.Map; + +/** + * 导入操作中,居民信息操作的分类bean + */ +@Data +public class ResiImportResiCategoryChangedCache { + + /** + * 新增居民 + * Map> + */ + private Map newResis = new HashMap<>(); + + /** + * 调动的居民 + */ + private Map transferedResis = new HashMap<>(); + + /** + * 类别变更的居民 + */ + private Map categoryChangedResis = new HashMap<>(); + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java index bc292276a2..482a2f4cc1 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java @@ -232,5 +232,7 @@ public interface IcResiUserDao extends BaseDao { Map getCategoryListMap(@Param("icUserId") String icUserId); + Map selectResiInfoMap(@Param("idCard") String idCard); + List> selectResiUsers(@Param("types")List types,@Param("orgId")String orgId); } 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 0b554c980e..43e3263c94 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 @@ -6,6 +6,9 @@ import cn.afterturn.easypoi.excel.entity.ExportParams; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcelFactory; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.bean.ResiImportCategoryData; +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.OptionResultDTO; @@ -22,12 +25,14 @@ 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.entity.IcResiUserEntity; 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.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; @@ -61,6 +66,16 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res public static final ThreadLocal>> errorRows = new ThreadLocal<>(); public static final ThreadLocal>> skipedRows = new ThreadLocal<>(); + /** + * 类别发生变更的居民 + */ + public static final ThreadLocal categoryChangedResi = new ThreadLocal<>(); + + /** + * 居民类别items列表 + */ + public static final ThreadLocal> resiCategoryItemsCache = new ThreadLocal<>(); + /** * key: itemId * value: @@ -85,6 +100,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res @Autowired private IcResiUserDao icResiUserDao; + @Autowired + private OperCustomizeOpenFeignClient operCustomizeOpenFeignClient; + /** * @description 列信息封装 * @@ -168,6 +186,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res */ @Override public void importIcResiInfoFromExcel(List formItemList, String excelPathName, HttpServletResponse response) { + String loginUserId = loginUserUtil.getLoginUserId(); String loginUserApp = loginUserUtil.getLoginUserApp(); String loginUserClient = loginUserUtil.getLoginUserClient(); @@ -185,7 +204,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String customerId = agencyInfo.getCustomerId(); try { - initThreadLocalRowsStorage(); + initImportThreadLocal(customerId); // 上传主表信息 importIcResiBaseInfoFromExcel(formItemList,excelPathName, IcResiUserTableEnum.IC_RESI_USER.getSheetNo(), IcResiUserTableEnum.IC_RESI_USER.getHeadRowNo(), @@ -209,11 +228,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } } - //String errors = JSON.toJSONString(errorRows.get()); - //String skipeds = JSON.toJSONString(skipedRows.get()); - - //log.error(errors); - //log.error(skipeds); + // 执行人员类别变更记录 + Map newResis = categoryChangedResi.get().getNewResis(); + Map categoryChangedResis = categoryChangedResi.get().getCategoryChangedResis(); + Map transferedResis = categoryChangedResi.get().getTransferedResis(); try { downLoadResults(response); @@ -223,25 +241,42 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } finally { skipedRows.remove(); errorRows.remove(); + categoryChangedResi.remove(); + resiCategoryItemsCache.remove(); itemIdAndOptionsCache.invalidateAll(); } } /** - * 暂存rows信息初始化 + * threadLocal初始化 */ - private void initThreadLocalRowsStorage() { + private void initImportThreadLocal(String customerId) { + // 跳过的,不导入的行 Map> skipedRowsMap = new LinkedHashMap<>(); for (IcResiUserTableEnum e : IcResiUserTableEnum.values()) { skipedRowsMap.put(e.getTableName(), new LinkedList<>()); } skipedRows.set(skipedRowsMap); + // 错误信息 Map> errorRowsMap = new LinkedHashMap<>(); for (IcResiUserTableEnum e : IcResiUserTableEnum.values()) { errorRowsMap.put(e.getTableName(), new LinkedList<>()); } errorRows.set(errorRowsMap); + + // 居民类别信息 + ResiImportResiCategoryChangedCache c = new ResiImportResiCategoryChangedCache(); + categoryChangedResi.set(c); + + List resiCategoryItems = getResultDataOrThrowsException(operCustomizeOpenFeignClient.listResiCategoryItems(customerId), + ServiceConstant.OPER_CUSTOMIZE_SERVER, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + String.format("【居民信息导入】查询居民类别items失败,customerId:%s", customerId), + "居民信息导入失败"); + + List l = resiCategoryItems.stream().map(ResiCategoryItemResultDTO::getColumnName).collect(Collectors.toList()); + resiCategoryItemsCache.set(l); } /** @@ -374,26 +409,45 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String idCard = columnAndValues.get("ID_CARD"); LambdaQueryWrapper idCardQuery = new LambdaQueryWrapper<>(); idCardQuery.eq(IcResiUserEntity::getIdCard, idCard); - IcResiUserEntity resiBaseInfo = icResiUserDao.selectOne(idCardQuery); + //IcResiUserEntity resiBaseInfo = icResiUserDao.selectOne(idCardQuery); + + Map existingResiMap = icResiUserDao.selectResiInfoMap(idCard); + + if (existingResiMap != null) { + // 修改居民信息 + icResiUserDao.upTable(tableName, existingResiMap.get("ID"), columnAndValues); - if (resiBaseInfo != null) { - icResiUserDao.upTable(tableName, resiBaseInfo.getId(), columnAndValues); + // 任意组织维度一个发生变化,则放到调动居民缓存中 + ResiImportChangedData transferData; + if ((transferData = this.getResiImportTrasferData(existingResiMap, columnAndValues)) != null) { + categoryChangedResi.get().getTransferedResis().put(existingResiMap.get("ID"), transferData); + } else { + // 组织维度没有发生变化,看是否有居民类型变更 + ResiImportChangedData d = getResiImportCategoryChangedData(existingResiMap, columnAndValues); + if (d != null) { + categoryChangedResi.get().getCategoryChangedResis().put(existingResiMap.get("ID"), d); + } + } } else { + // 新增居民 columnAndValues.put("CREATED_BY", currentUserId); columnAndValues.put("ID", UUID.randomUUID().toString().replace("-", "")); icResiUserDao.add(tableName, columnAndValues); - } - //if (icResiUserDao.selectCount(idCardQuery) > 0) { - // //log.info("身份证号为【{}】的居民信息已存在,跳过导入", idCard); - // SkipedRow skipedRow = new SkipedRow(); - // skipedRow.setName(columnAndValues.get("NAME")); - // skipedRow.setIdCard(idCard); - // skipedRow.setInfo("身份证号已存在,跳过导入"); - // skipedRow.setTableName(tableName); - // skipedRows.get().get(IcResiUserTableEnums.IC_RESI_USER.getTableName()).add(skipedRow); - // continue; - //} + Map categories = resiCategoryItemsCache.get() + .stream() + .filter((categoryColumnName) -> "1".equals(columnAndValues.get(categoryColumnName))) + .collect(Collectors.toMap((k) -> k, (k) -> columnAndValues.get(k))); + + categoryChangedResi.get().getNewResis().put(columnAndValues.get("ID"), + new ResiImportCategoryData(columnAndValues.get("AGENCY_ID"), + columnAndValues.get("GRID_ID"), + columnAndValues.get("VILLAGE_ID"), + columnAndValues.get("BUILD_ID"), + columnAndValues.get("UNIT_ID"), + columnAndValues.get("HOME_ID"), + categories)); + } } catch (Exception e) { String errorMsg; @@ -950,4 +1004,145 @@ 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")) + //} + + /** + * 生成导入调动数据 + * @param existingResiMap + * @param newResiMap + * @return + */ + private ResiImportChangedData getResiImportTrasferData(Map existingResiMap, Map newResiMap) { + + // 维度未变化,则返回null + if (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"))) { + + return null; + } + + HashMap existingResiCategories = new HashMap<>(); + HashMap newResiCategories = new HashMap<>(); + + for (String categoryColumnName : resiCategoryItemsCache.get()) { + String oldCategoryValue = existingResiMap.get(categoryColumnName); + String newCategoryValue = newResiMap.get(categoryColumnName); + + if (StringUtils.isNotBlank(oldCategoryValue) && "1".equals(oldCategoryValue)) { + existingResiCategories.put(categoryColumnName, oldCategoryValue); + } + + if (StringUtils.isNotBlank(newCategoryValue) && "1".equals(newCategoryValue)) { + newResiCategories.put(categoryColumnName, newResiMap.get(categoryColumnName)); + } + } + + ResiImportCategoryData oldOne = new ResiImportCategoryData( + existingResiMap.get("AGENCY_ID"), + existingResiMap.get("GRID_ID"), + existingResiMap.get("VILLAGE_ID"), + existingResiMap.get("BUILD_ID"), + existingResiMap.get("UNIT_ID"), + existingResiMap.get("HOME_ID"), + existingResiCategories); + + ResiImportCategoryData newOne = new ResiImportCategoryData(existingResiMap.get("AGENCY_ID"), + newResiMap.get("GRID_ID"), + newResiMap.get("VILLAGE_ID"), + newResiMap.get("BUILD_ID"), + newResiMap.get("UNIT_ID"), + newResiMap.get("HOME_ID"), + newResiCategories); + + return new ResiImportChangedData(oldOne, newOne); + } + + /** + * 类别变更的居民信息封装 + * @param existingResiMap + * @param newResiMap + * @return + */ + private ResiImportChangedData getResiImportCategoryChangedData(Map existingResiMap, Map newResiMap) { + // 发生变化的类别列明 + HashMap oldCategories = new HashMap<>(); + HashMap newCategories = new HashMap<>(); + + List categoryColumnNames = resiCategoryItemsCache.get(); + for (String categoryColumnName : categoryColumnNames) { + String existingColumnValue = existingResiMap.get(categoryColumnName); + String newColumnValue = newResiMap.get(categoryColumnName); + + if (StringUtils.isAllBlank(existingColumnValue, newColumnValue)) { + // 都为空,则没发生变化 + continue; + } else if (StringUtils.isNoneBlank(existingColumnValue, newColumnValue)) { + // 都不为空,则执行比较 + 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) { + return null; + } + + ResiImportCategoryData oldOne = new ResiImportCategoryData( + existingResiMap.get("AGENCY_ID"), + existingResiMap.get("GRID_ID"), + existingResiMap.get("VILLAGE_ID"), + existingResiMap.get("BUILD_ID"), + existingResiMap.get("UNIT_ID"), + existingResiMap.get("HOME_ID"), + oldCategories); + + ResiImportCategoryData newOne = new ResiImportCategoryData(existingResiMap.get("AGENCY_ID"), + newResiMap.get("GRID_ID"), + newResiMap.get("VILLAGE_ID"), + newResiMap.get("BUILD_ID"), + newResiMap.get("UNIT_ID"), + newResiMap.get("HOME_ID"), + newCategories); + + return new ResiImportChangedData(oldOne, newOne); + } } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index dbba0456fc..157471a680 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -560,4 +560,14 @@ ORDER BY CREATED_TIME DESC + + +