diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml
index 7ea8f22256..02432b91c5 100644
--- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml
+++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml
@@ -591,6 +591,7 @@
a.DEL_FLAG = '0'
AND a.`STATUS` = 'finished'
AND a.EVALUATE_FLAG = 1
+ and a.FINISH_RESULT='resolved'
AND c.EVALUATE_TIME >= #{startTime}
@@ -611,6 +612,7 @@
a.DEL_FLAG = '0'
AND a.`STATUS` = 'finished'
AND a.EVALUATE_FLAG = 1
+ and a.FINISH_RESULT='resolved'
AND c.EVALUATE_TIME >= #{startTime}
@@ -634,6 +636,7 @@
a.DEL_FLAG = '0'
AND a.`STATUS` = 'finished'
AND a.EVALUATE_FLAG = 1
+ and a.FINISH_RESULT='resolved'
AND b.CUSTOMER_ID = #{customerId}
GROUP BY
b.SERVER_ID
diff --git a/epmet-module/gov-access/gov-access-server/src/main/resources/db/migration/V0.0.6__ic_often_use_function.sql b/epmet-module/gov-access/gov-access-server/src/main/resources/db/migration/V0.0.6__ic_often_use_function.sql
index 3d22c6aa0a..1178d4a5e6 100644
--- a/epmet-module/gov-access/gov-access-server/src/main/resources/db/migration/V0.0.6__ic_often_use_function.sql
+++ b/epmet-module/gov-access/gov-access-server/src/main/resources/db/migration/V0.0.6__ic_often_use_function.sql
@@ -20,14 +20,14 @@ SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for ic_often_use_function
-- ----------------------------
-DROP TABLE IF EXISTS `ic_often_use_function`;
+-- DROP TABLE IF EXISTS `ic_often_use_function`;
CREATE TABLE `ic_often_use_function` (
`ID` varchar(32) NOT NULL,
- `CUSTOMER_ID` varchar(255) NOT NULL COMMENT '客户ID',
- `USER_ID` varchar(255) NOT NULL COMMENT '用户ID',
- `MENU_ID` varchar(255) NOT NULL COMMENT '菜单ID',
+ `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID',
+ `USER_ID` varchar(64) NOT NULL COMMENT '用户ID',
+ `MENU_ID` varchar(64) NOT NULL COMMENT '菜单ID',
`SORT` int(11) NOT NULL COMMENT '排序',
- `DEL_FLAG` int(11) NOT NULL COMMENT '删除标记',
+ `DEL_FLAG` char(1) NOT NULL COMMENT '删除标记',
`REVISION` varchar(32) NOT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.13__ic_individual_category_manage.sql b/epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.13__ic_individual_category_manage.sql
index 31753118ea..058cbfe048 100644
--- a/epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.13__ic_individual_category_manage.sql
+++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.13__ic_individual_category_manage.sql
@@ -20,14 +20,13 @@ SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for ic_individual_category_manage
-- ----------------------------
-DROP TABLE IF EXISTS `ic_individual_category_manage`;
CREATE TABLE `ic_individual_category_manage` (
`ID` varchar(32) NOT NULL COMMENT 'ID',
- `CUSTOMER_ID` varchar(255) NOT NULL COMMENT '客户ID',
- `USER_ID` varchar(255) NOT NULL COMMENT '用户ID',
+ `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID',
+ `USER_ID` varchar(64) NOT NULL COMMENT '用户ID',
`COLUMN_ID` varchar(255) DEFAULT NULL,
`SORT` int(11) NOT NULL COMMENT '排序',
- `DEL_FLAG` int(11) NOT NULL COMMENT '删除标记',
+ `DEL_FLAG` char(1) NOT NULL COMMENT '删除标记',
`REVISION` varchar(32) NOT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java
index ffd0076429..9d72768f33 100644
--- a/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java
+++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/IcResiUserTableEnum.java
@@ -29,6 +29,11 @@ public enum IcResiUserTableEnum {
private int headRowNo;
private String mainTableFlagColumnName;
+ /**
+ * 根据表名获取枚举对象
+ * @param tableName
+ * @return
+ */
public static IcResiUserTableEnum getObjectByTableName(String tableName) {
for (IcResiUserTableEnum i : IcResiUserTableEnum.values()) {
if (i.tableName.equals(tableName)) {
@@ -38,7 +43,20 @@ public enum IcResiUserTableEnum {
return null;
}
-
+ /**
+ * 判断是否有这一列
+ * @param columnName
+ * @return
+ */
+ public static boolean existsColumn(String columnName) {
+ for (IcResiUserTableEnum i : IcResiUserTableEnum.values()) {
+ String mainTableColumnName = i.mainTableFlagColumnName;
+ if (mainTableColumnName != null && mainTableColumnName.equals(columnName)) {
+ return true;
+ }
+ }
+ return false;
+ }
public String getTableName() {
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 bc463907c0..5bb39530f9 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
@@ -5,7 +5,6 @@ import cn.afterturn.easypoi.excel.annotation.Excel;
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;
@@ -420,15 +419,31 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
try {
convertColumnWrappers2Map4Persist(itemIdAndColumnWrapper, row, currUserAgencyId, checkBoxOptionColumnIdxAndLabel, columnAndValues, true);
- // 因为还没有读取子sheet,所以这些居民类别没有办法获取,先默认设置成0,后面读取子sheet的时候再更新
- columnAndValues.put("IS_ENSURE_HOUSE", "0");
- columnAndValues.put("IS_OLD_PEOPLE", "0");
- columnAndValues.put("IS_PARTY", "0");
- columnAndValues.put("IS_SPECIAL", "0");
- columnAndValues.put("IS_UNEMPLOYED", "0");
- columnAndValues.put("IS_UNITED_FRONT", "0");
- columnAndValues.put("IS_VETERANS", "0");
- columnAndValues.put("IS_VOLUNTEER", "0");
+ String idCard = columnAndValues.get("ID_CARD");
+
+ Map existingResiMap = icResiUserDao.selectResiInfoMap(idCard);
+
+ if (existingResiMap == null) {
+ // 新导入的居民,因为还没有读取子sheet,所以这些居民类别没有办法获取,先默认设置成0,后面读取子sheet的时候再更新
+ columnAndValues.put("IS_ENSURE_HOUSE", "0");
+ columnAndValues.put("IS_OLD_PEOPLE", "0");
+ columnAndValues.put("IS_PARTY", "0");
+ columnAndValues.put("IS_SPECIAL", "0");
+ columnAndValues.put("IS_UNEMPLOYED", "0");
+ columnAndValues.put("IS_UNITED_FRONT", "0");
+ columnAndValues.put("IS_VETERANS", "0");
+ columnAndValues.put("IS_VOLUNTEER", "0");
+ } else {
+ // 该居民已存在,要做更新操作,因为还没有读取子sheet,所以这些居民最新类别没有办法获取,先设置上旧的数据
+ columnAndValues.put("IS_ENSURE_HOUSE", existingResiMap.get("IS_ENSURE_HOUSE"));
+ columnAndValues.put("IS_OLD_PEOPLE", existingResiMap.get("IS_OLD_PEOPLE"));
+ columnAndValues.put("IS_PARTY", existingResiMap.get("IS_PARTY"));
+ columnAndValues.put("IS_SPECIAL", existingResiMap.get("IS_SPECIAL"));
+ columnAndValues.put("IS_UNEMPLOYED", existingResiMap.get("IS_UNEMPLOYED"));
+ columnAndValues.put("IS_UNITED_FRONT", existingResiMap.get("IS_UNITED_FRONT"));
+ columnAndValues.put("IS_VETERANS", existingResiMap.get("IS_VETERANS"));
+ columnAndValues.put("IS_VOLUNTEER", existingResiMap.get("IS_VOLUNTEER"));
+ }
columnAndValues.put("AGENCY_ID", currUserAgencyId);
columnAndValues.put("PIDS", currUserAgencyPids);
@@ -436,14 +451,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
columnAndValues.put("UPDATED_BY", currentUserId);
- // 验证居民信息是否存在
- String idCard = columnAndValues.get("ID_CARD");
- LambdaQueryWrapper idCardQuery = new LambdaQueryWrapper<>();
- idCardQuery.eq(IcResiUserEntity::getIdCard, idCard);
- //IcResiUserEntity resiBaseInfo = icResiUserDao.selectOne(idCardQuery);
-
- Map existingResiMap = icResiUserDao.selectResiInfoMap(idCard);
-
if (existingResiMap != null) {
// 修改居民信息
icResiUserDao.upTable(tableName, existingResiMap.get("ID"), columnAndValues);
@@ -533,15 +540,13 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
}
// 检查用户是否存在
- LambdaQueryWrapper idCardQuery = new LambdaQueryWrapper<>();
- idCardQuery.eq(IcResiUserEntity::getIdCard, idCard);
+ Map resiInfoMap = icResiUserDao.selectResiInfoMap(idCard);
- IcResiUserEntity icResiUserBaseInfo = icResiUserDao.selectOne(idCardQuery);
- if (icResiUserBaseInfo == null) {
+ if (resiInfoMap == null || resiInfoMap.size() == 0) {
throw new RenException(EpmetErrorCode.RESI_NOT_FOUND.getCode(), String.format("身份证号为【%s】的居民信息未找到,请确认该居民信息存在", idCard));
}
- String icResiId = icResiUserBaseInfo.getId();
+ String icResiId = resiInfoMap.get("ID");
columnAndValues.put("IC_RESI_USER", icResiId);
columnAndValues.put("CUSTOMER_ID", loginUserUtil.getLoginUserCustomerId());
@@ -567,7 +572,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
}
// 保存到类别变更缓存中
- saveSubTableInfoToCategoryChangedResiCache(icResiId, Objects.requireNonNull(IcResiUserTableEnum.getObjectByTableName(targetTableName)).getMainTableFlagColumnName());
+ saveSubTableInfoToCategoryChangedResiCache(icResiId,
+ Objects.requireNonNull(IcResiUserTableEnum.getObjectByTableName(targetTableName)).getMainTableFlagColumnName(),
+ resiInfoMap);
} catch (Exception e) {
String errorMsg;
@@ -1042,7 +1049,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
/**
* 生成导入调动数据
- * 1.新老数据中,只要状态是1的,都放入缓存
+ * 1.新老数据中,0/1都存入
* @param existingResiMap
* @param newResiMap
* @return
@@ -1067,13 +1074,22 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
String oldCategoryValue = existingResiMap.get(categoryColumnName);
String newCategoryValue = newResiMap.get(categoryColumnName);
- if (StringUtils.isNotBlank(oldCategoryValue) && "1".equals(oldCategoryValue)) {
+ if (StringUtils.isBlank(oldCategoryValue)) oldCategoryValue = "0";
+ if (StringUtils.isBlank(newCategoryValue)) newCategoryValue = "0";
+
+ if ("1".equals(oldCategoryValue) || "1".equals(newCategoryValue)) {
+ // 新旧值有一个为1,则放入
existingResiCategories.put(categoryColumnName, oldCategoryValue);
+ newResiCategories.put(categoryColumnName, newCategoryValue);
}
- if (StringUtils.isNotBlank(newCategoryValue) && "1".equals(newCategoryValue)) {
- newResiCategories.put(categoryColumnName, newResiMap.get(categoryColumnName));
- }
+// if ("1".equals(oldCategoryValue)) {
+// existingResiCategories.put(categoryColumnName, oldCategoryValue);
+// }
+//
+// if ("1".equals(newCategoryValue)) {
+// newResiCategories.put(categoryColumnName, newCategoryValue);
+// }
}
ResiImportCategoryData oldOne = new ResiImportCategoryData(
@@ -1098,7 +1114,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
}
/**
- * 类别变更的居民信息封装
+ * 类别变更的居民信息封装。只要发生变化,0或者1都要保存
* 1.
* @param existingResiMap
* @param newResiMap
@@ -1111,22 +1127,25 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
Set categoryColumnNames = resiCategoryColumnNameAndLabel.get().keySet();
for (String categoryColumnName : categoryColumnNames) {
+
String existingColumnValue = existingResiMap.get(categoryColumnName);
String newColumnValue = newResiMap.get(categoryColumnName);
- if (StringUtils.isAllBlank(existingColumnValue, newColumnValue)) {
- // 都为空,则没发生变化
- continue;
- } else {
- // 先转为0再对比
- if (StringUtils.isBlank(existingColumnValue)) existingColumnValue = "0";
- if (StringUtils.isBlank(newColumnValue)) newColumnValue = "0";
+ // 先转为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);
- }
+ if (!existingColumnValue.equals(newColumnValue)) {
+ oldCategories.put(categoryColumnName, existingColumnValue);
+ newCategories.put(categoryColumnName, newColumnValue);
}
+
+// if (StringUtils.isAllBlank(existingColumnValue, newColumnValue)) {
+// // 都为空,则没发生变化
+// continue;
+// } else {
+//
+// }
}
if (oldCategories.size() == 0) {
@@ -1158,7 +1177,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
* @param icResiId 居民id
* @param columnName 该项信息在主表的列名
*/
- private void saveSubTableInfoToCategoryChangedResiCache(String icResiId, String columnName) {
+ private void saveSubTableInfoToCategoryChangedResiCache(String icResiId, String columnName, Map resiInfoMap) {
ResiImportResiCategoryChangedCache cc = newlyOrChangedResi.get();
Map newResis = cc.getNewResis();
@@ -1178,34 +1197,36 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
Map oldCategories = categoryChangedData.getOldData().getCategories();
Map newCategories = categoryChangedData.getNewData().getCategories();
- if (!oldCategories.containsKey(columnName)) {
- // 没有这个类别,说明旧数据中是0,新数据中也是0,新数据改成1
+ if ("0".equals(resiInfoMap.get(columnName))) {
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
+ // 说明是发生调动的居民,新数据值为1
Map newCategories = transferedData.getNewData().getCategories();
+ Map oldCategories = transferedData.getOldData().getCategories();
+
+ oldCategories.put(columnName, "0");
newCategories.put(columnName, "1");
return;
}
- // 非新增,非调动,那么就是居民类别变更的,只不过变更的数据不在主sheet中,而在附sheet中
- ResiImportCategoryData oldOne = new ResiImportCategoryData();
- ResiImportCategoryData newOne = new ResiImportCategoryData();
+ if ("0".equals(resiInfoMap.get(columnName))) {
+ // 非新增,非调动,变更的数据不在主sheet中,而在附sheet中。看是否发生人员类型变更(从0->1)
+ ResiImportCategoryData oldOne = new ResiImportCategoryData();
+ ResiImportCategoryData newOne = new ResiImportCategoryData();
- oldOne.getCategories().put(columnName, "0");
- newOne.getCategories().put(columnName, "1");
+ oldOne.getCategories().put(columnName, "0");
+ newOne.getCategories().put(columnName, "1");
- ResiImportChangedData cd = new ResiImportChangedData(oldOne, newOne);
- categoryChangedResis.put(icResiId, cd);
+ ResiImportChangedData cd = new ResiImportChangedData(oldOne, newOne);
+ categoryChangedResis.put(icResiId, cd);
+ }
}
/**
@@ -1217,7 +1238,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(loginUserUtil.getLoginUserCustomerId(), loginUserUtil.getLoginUserId());
- // 循环当前居民的所有类别的map
for (Map.Entry entry : categoryChangedResis.entrySet()) {
String resiId = entry.getKey();
@@ -1226,32 +1246,26 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
Map oldCategories = oldData.getCategories();
Map newCategories = newData.getCategories();
+ fillResiSubCategoryInfo4TransferAndCategoryChange(oldData, newData);
+
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;
- }
+ generateCategoryChangeDesc(oldCategories, newCategories, sbBefore, sbAfter);
- String beforeValueName = "0".equals(oldColumnValue) ? "否" : "是";
- String newValueName = "0".equals(newColumnValue) ? "否" : "是";
-
- String label = resiCategoryColumnNameAndLabel.get().get(columnName);
+ String descBefore = sbBefore.toString();
+ String descAfter = sbAfter.toString();
- sbBefore.append(label).append(":").append(beforeValueName).append("\n");
- sbAfter.append(label).append(":").append(newValueName).append("\n");
+ // 没有任何变化,跳过该居民
+ if (StringUtils.isAllBlank(descBefore,descAfter)) {
+ continue;
}
// 生成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);
+ operator.getRealName() , descBefore, descAfter, "category", "类别", "", now);
icUserChangeRecordDao.insert(changeRecord);
for (Map.Entry columnEntry : newCategories.entrySet()) {
@@ -1266,16 +1280,58 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
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());
+ String agencyId = newData.getAgencyId();
+ String gridId = newData.getGridId();
+ String villageId = newData.getVillageId();
+ String buildId = newData.getBuildId();
+ String unitId = newData.getUnitId();
+ String homeId = newData.getHomeId();
+
+ // 如果只有附加表信息,但是没有主表信息,并且附加表基础信息很多空着的,此处需要从主表获取了然后填充一下该信息
+ if (agencyId == null) agencyId = resiInfo.getAgencyId();
+ if (gridId == null) gridId = resiInfo.getGridId();
+ if (villageId == null) villageId = resiInfo.getVillageId();
+ if (buildId == null) buildId = resiInfo.getBuildId();
+ if (unitId == null) unitId = resiInfo.getUnitId();
+ if (homeId == null) homeId = resiInfo.getHomeId();
+
+ IcUserChangeDetailedEntity newDetail = fillChangeDetail(loginUserUtil.getLoginUserCustomerId(), resiId, changeRecord.getId(), agencyId,
+ gridId, villageId, buildId, unitId,
+ homeId, "category", "类别", columnEntry.getKey(), value, resiInfo.getPids());
icUserChangeDetailedDao.insert(newDetail);
}
}
}
+ /**
+ * 生成类别变更描述
+ * @param oldCategories
+ * @param newCategories
+ * @param sbBefore
+ * @param sbAfter
+ */
+ private void generateCategoryChangeDesc(Map oldCategories, Map newCategories,
+ StringBuilder sbBefore, StringBuilder sbAfter) {
+ 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 = resiCategoryColumnNameAndLabel.get().get(columnName);
+
+ sbBefore.append(label).append(":").append(beforeValueName).append("\n");
+ sbAfter.append(label).append(":").append(newValueName).append("\n");
+ }
+ }
+
/**
* 保存新增居民类别记录
* @param newResis
@@ -1322,6 +1378,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
ResiImportCategoryData oldData = resi.getValue().getOldData();
ResiImportCategoryData newData = resi.getValue().getNewData();
+ // 把附加表的旧数据填充到新数据中
+ fillResiSubCategoryInfo4TransferAndCategoryChange(oldData, newData);
+
StringBuilder sbBefore = new StringBuilder();
StringBuilder sbAfter = new StringBuilder();
@@ -1435,9 +1494,42 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
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);
+ sbBefore = new StringBuilder();
+ sbAfter = new StringBuilder();
+
+ // 过滤居民类别的key并集
+ Set bingji = new HashSet<>();
+ newData.getCategories().keySet().forEach((k) -> bingji.add(k));
+ oldData.getCategories().keySet().forEach((k) -> bingji.add(k));
+
+ for (String category : bingji) {
+ String newColumnValue = newData.getCategories().get(category);
+ String oldColumnValue = oldData.getCategories().get(category);
+
+ if (oldColumnValue == null) oldColumnValue = "0";
+ if (newColumnValue == null) newColumnValue = "0";
+
+ if (newColumnValue.equals(oldColumnValue)) {
+ continue;
+ }
+
+ String beforeValueName = "0".equals(oldColumnValue) ? "否" : "是";
+ String newValueName = "0".equals(newColumnValue) ? "否" : "是";
+
+ String label = resiCategoryColumnNameAndLabel.get().get(category);
+
+ sbBefore.append(label).append(":").append(beforeValueName).append("\n");
+ sbAfter.append(label).append(":").append(newValueName).append("\n");
+ }
+
+ String categoryDescBefore = sbBefore.toString();
+ String categoryDescAfter = sbAfter.toString();
+
+ if (!StringUtils.isAllBlank(categoryDescBefore, categoryDescAfter)) {
+ IcUserChangeRecordEntity categoryChangeRecord = fillChangeRecord(customerId, resiId, resiInfo.getName(), transferRecord.getId(), operator.getStaffId(),
+ operator.getRealName(), categoryDescBefore, categoryDescAfter , "category", "类别", "", now);
+ icUserChangeRecordDao.insert(categoryChangeRecord);
+ }
// 保存 changeDetail
for (Map.Entry oldCategories : oldData.getCategories().entrySet()) {
@@ -1445,24 +1537,47 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
// String value = oldCategories.getValue();
// 之前是这个类型,那这个类型需要-1
- IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, categoryChangeRecord.getId(), oldData.getAgencyId(),
- oldData.getGridId(), oldData.getVillageId(), oldData.getBuildId(), oldData.getUnitId(),
- oldData.getHomeId(), categoryChangeRecord.getType(), categoryChangeRecord.getTypeName(), key, -1, resiInfo.getPids());
-
- icUserChangeDetailedDao.insert(changeDetail);
+ String oldValue = oldCategories.getValue();
+ if ("1".equals(oldValue)) {
+ IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, transferChangeRecord.getId(), oldData.getAgencyId(),
+ oldData.getGridId(), oldData.getVillageId(), oldData.getBuildId(), oldData.getUnitId(),
+ oldData.getHomeId(), transferChangeRecord.getType(), transferChangeRecord.getTypeName(), key, -1, resiInfo.getPids());
+ icUserChangeDetailedDao.insert(changeDetail);
+ }
}
// 保存 changeDetail
for (Map.Entry newCategories : newData.getCategories().entrySet()) {
String key = newCategories.getKey();
- // String value = newCategories.getValue();
+ String newValue = newCategories.getValue();
// 现在是这个类型,这个类型要+1
- IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, categoryChangeRecord.getId(), newData.getAgencyId(),
- newData.getGridId(), newData.getVillageId(), newData.getBuildId(), newData.getUnitId(),
- newData.getHomeId(), categoryChangeRecord.getType(), categoryChangeRecord.getTypeName(), key, 1, resiInfo.getPids());
+ if ("1".equals(newValue)) {
+ IcUserChangeDetailedEntity changeDetail = fillChangeDetail(customerId, resiId, transferChangeRecord.getId(), newData.getAgencyId(),
+ newData.getGridId(), newData.getVillageId(), newData.getBuildId(), newData.getUnitId(),
+ newData.getHomeId(), transferChangeRecord.getType(), transferChangeRecord.getTypeName(), key, 1, resiInfo.getPids());
+ icUserChangeDetailedDao.insert(changeDetail);
+ }
+ }
+ }
+ }
- icUserChangeDetailedDao.insert(changeDetail);
+ /**
+ * 把居民原有的子表的人员类别标记拿到,看是否需要给新导入的数据填充。因为一个人可能以前是党员,
+ * 后来做了调动,但是调动的时候没有填写党员信息,这样newData中是没有的,所以需要从oldData中拿到,填充到newData
+ * @param oldData
+ * @param newData
+ */
+ private void fillResiSubCategoryInfo4TransferAndCategoryChange(ResiImportCategoryData oldData, ResiImportCategoryData newData) {
+ for (String category : oldData.getCategories().keySet()) {
+ String newValue = newData.getCategories().get(category);
+ String oldValue = oldData.getCategories().get(category);
+
+ // 如果新数据中没有或者是0,并且是附加表信息,并且旧数据是1, 拿旧数据的过来
+ if ((newValue == null || "0".equals(newValue))
+ && "1".equals(oldValue)
+ && IcResiUserTableEnum.existsColumn(category)) {
+ newData.getCategories().put(category, "1");
}
}
}