diff --git a/epmet-admin/epmet-admin-server/pom.xml b/epmet-admin/epmet-admin-server/pom.xml
index 0b37977879..e73766c59b 100644
--- a/epmet-admin/epmet-admin-server/pom.xml
+++ b/epmet-admin/epmet-admin-server/pom.xml
@@ -215,7 +215,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-auth/pom.xml b/epmet-auth/pom.xml
index b4c31f05cc..e6c3b6823a 100644
--- a/epmet-auth/pom.xml
+++ b/epmet-auth/pom.xml
@@ -301,7 +301,7 @@
 
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
index e0623c7648..a059504d2e 100644
--- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
@@ -252,6 +252,7 @@ public enum EpmetErrorCode {
 	ORG_DEL_FAILED(8921,"删除失败"),
 	NEIGHBORHOOD_DEL_FAILED(8922,""),
 	IC_NAT_IDCARD_NATTIME(8923,"已存在相同记录"),
+	IC_NAT(8924,"平台已存在记录,请去修改原有记录"),
 
 
 	//通用错误码 start
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
index 7bc68a4842..04db67cfed 100644
--- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
@@ -753,4 +753,14 @@ public class RedisKeys {
 	public static String getCustomerMenuListPrefix() {
 		return rootPrefix.concat("oper:access:nav:customerId:");
 	}
+
+	/**
+	 * 如果是省列表:epmet:areacode:parentCode:0
+	 * 山东省的下一级:epmet:areacode:parentCode:37
+	 * @param areaCode
+	 * @return
+	 */
+	public static String getNextAreaCodeKey(String areaCode) {
+		return rootPrefix.concat("areaCode:parentCode:").concat(areaCode);
+	}
 }
diff --git a/epmet-gateway/pom.xml b/epmet-gateway/pom.xml
index abf223c749..1283594191 100644
--- a/epmet-gateway/pom.xml
+++ b/epmet-gateway/pom.xml
@@ -391,7 +391,7 @@
 
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/data-aggregator/data-aggregator-server/pom.xml b/epmet-module/data-aggregator/data-aggregator-server/pom.xml
index 51d95b3aa9..188c3041b2 100644
--- a/epmet-module/data-aggregator/data-aggregator-server/pom.xml
+++ b/epmet-module/data-aggregator/data-aggregator-server/pom.xml
@@ -494,7 +494,7 @@
 
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
 
diff --git a/epmet-module/data-report/data-report-server/pom.xml b/epmet-module/data-report/data-report-server/pom.xml
index cf8312e897..52ad63d899 100644
--- a/epmet-module/data-report/data-report-server/pom.xml
+++ b/epmet-module/data-report/data-report-server/pom.xml
@@ -291,7 +291,7 @@
 
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
 
diff --git a/epmet-module/data-statistical/data-statistical-server/pom.xml b/epmet-module/data-statistical/data-statistical-server/pom.xml
index de703b486f..8fc21d0333 100644
--- a/epmet-module/data-statistical/data-statistical-server/pom.xml
+++ b/epmet-module/data-statistical/data-statistical-server/pom.xml
@@ -550,7 +550,7 @@
 
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java
index 3bc6b5969d..8b33031420 100644
--- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java
+++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java
@@ -139,7 +139,7 @@ public class DataReportingServiceImpl implements DataReportingService {
 		//根据入参,获取项目
 		long start = System.currentTimeMillis();
 		List projectList = screenProjectDataService.getProjectList(formDTO.getCustomerId(), formDTO.getProjectId(), formDTO.getPageNo(), formDTO.getPageSize());
-		log.error("事件上报-查询项目列表耗时:{}ms",System.currentTimeMillis()-start);
+		log.info("事件上报-查询项目列表耗时:{}ms",System.currentTimeMillis()-start);
 		//项目列表为空,返回空数组
 		if(CollectionUtils.isEmpty(projectList)) {
 			return Collections.emptyList();
@@ -197,7 +197,7 @@ public class DataReportingServiceImpl implements DataReportingService {
 				return dto;
 			}).collect(Collectors.toList());
 		}
-		log.error("事件上报-组装数据耗时:{}ms",System.currentTimeMillis()-start);
+		log.info("事件上报-组装数据耗时:{}ms",System.currentTimeMillis()-start);
 		return list.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(EventInfoResultDTO::getId))), ArrayList::new));
 	}
 
diff --git a/epmet-module/epmet-activiti/epmet-activiti-server/pom.xml b/epmet-module/epmet-activiti/epmet-activiti-server/pom.xml
index 3788524034..e83d67b9d0 100644
--- a/epmet-module/epmet-activiti/epmet-activiti-server/pom.xml
+++ b/epmet-module/epmet-activiti/epmet-activiti-server/pom.xml
@@ -253,7 +253,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/epmet-common-service/common-service-server/pom.xml b/epmet-module/epmet-common-service/common-service-server/pom.xml
index 036a6c13bc..094f37f75f 100644
--- a/epmet-module/epmet-common-service/common-service-server/pom.xml
+++ b/epmet-module/epmet-common-service/common-service-server/pom.xml
@@ -224,7 +224,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/redis/AreaCodeRedis.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/redis/AreaCodeRedis.java
index d1c6218ea0..1743dcb3d4 100644
--- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/redis/AreaCodeRedis.java
+++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/redis/AreaCodeRedis.java
@@ -19,9 +19,12 @@ package com.epmet.redis;
 
 import com.epmet.commons.tools.constant.NumConstant;
 import com.epmet.commons.tools.redis.RedisUtils;
+import com.epmet.dto.result.AreaCodeResultDTO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+
 /**
  * 大陆省市区地区码
  *
@@ -49,4 +52,12 @@ public class AreaCodeRedis {
         return null;
     }
 
+    public List getNextAreaCodeKey(String key) {
+        List list = (List) redisUtils.get(key);
+        return list;
+    }
+
+    public void setNextAreaCodeKey(String key, List list) {
+        redisUtils.set(key, list);
+    }
 }
\ No newline at end of file
diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java
index f300c4bb4e..6f4ad9f000 100644
--- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java
+++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java
@@ -29,6 +29,7 @@ import com.epmet.commons.tools.exception.EpmetErrorCode;
 import com.epmet.commons.tools.exception.EpmetException;
 import com.epmet.commons.tools.exception.RenException;
 import com.epmet.commons.tools.page.PageData;
+import com.epmet.commons.tools.redis.RedisKeys;
 import com.epmet.commons.tools.utils.ConvertUtils;
 import com.epmet.constant.AreaCodeConstant;
 import com.epmet.dao.AreaCodeChildDao;
@@ -693,9 +694,20 @@ public class AreaCodeServiceImpl extends BaseServiceImpl nextArea(AreaCodeFormDTO formDTO) {
         if(StringUtils.isBlank(formDTO.getParentAreaCode())&&StringUtils.isBlank(formDTO.getParentLevel())){
-            return baseDao.selectProvince();
+            String pKey=RedisKeys.getNextAreaCodeKey(NumConstant.ZERO_STR);
+            List list=areaCodeRedis.getNextAreaCodeKey(pKey);
+            if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){
+                return list;
+            }
+            List pList=baseDao.selectProvince();
+            areaCodeRedis.setNextAreaCodeKey(pKey,pList);
+            return pList;
+        }
+        String key=RedisKeys.getNextAreaCodeKey(formDTO.getParentAreaCode());
+        List list=areaCodeRedis.getNextAreaCodeKey(key);
+        if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){
+            return list;
         }
-        List list=new ArrayList<>();
         switch (formDTO.getParentLevel()) {
             case AreaCodeConstant.PROVINCE:
                 list = baseDao.selectCity(formDTO.getParentAreaCode());
@@ -716,6 +728,9 @@ public class AreaCodeServiceImpl extends BaseServiceImplelink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/epmet-ext/epmet-ext-server/pom.xml b/epmet-module/epmet-ext/epmet-ext-server/pom.xml
index c7c3165af0..5ec9f40759 100644
--- a/epmet-module/epmet-ext/epmet-ext-server/pom.xml
+++ b/epmet-module/epmet-ext/epmet-ext-server/pom.xml
@@ -304,7 +304,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/epmet-heart/epmet-heart-server/pom.xml b/epmet-module/epmet-heart/epmet-heart-server/pom.xml
index 7496a794ee..df0ffeccc2 100644
--- a/epmet-module/epmet-heart/epmet-heart-server/pom.xml
+++ b/epmet-module/epmet-heart/epmet-heart-server/pom.xml
@@ -268,7 +268,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/epmet-job/epmet-job-server/pom.xml b/epmet-module/epmet-job/epmet-job-server/pom.xml
index 80377c1fba..b0d9fe2d24 100644
--- a/epmet-module/epmet-job/epmet-job-server/pom.xml
+++ b/epmet-module/epmet-job/epmet-job-server/pom.xml
@@ -222,7 +222,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/epmet-message/epmet-message-server/pom.xml b/epmet-module/epmet-message/epmet-message-server/pom.xml
index 2bef421caa..5d2c5e7c91 100644
--- a/epmet-module/epmet-message/epmet-message-server/pom.xml
+++ b/epmet-module/epmet-message/epmet-message-server/pom.xml
@@ -279,7 +279,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/epmet-oss/epmet-oss-server/pom.xml b/epmet-module/epmet-oss/epmet-oss-server/pom.xml
index e1aa4893b4..8c870a56ad 100644
--- a/epmet-module/epmet-oss/epmet-oss-server/pom.xml
+++ b/epmet-module/epmet-oss/epmet-oss-server/pom.xml
@@ -229,7 +229,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/epmet-point/epmet-point-server/pom.xml b/epmet-module/epmet-point/epmet-point-server/pom.xml
index 2dcda97101..8ab4d1e406 100644
--- a/epmet-module/epmet-point/epmet-point-server/pom.xml
+++ b/epmet-module/epmet-point/epmet-point-server/pom.xml
@@ -245,7 +245,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/epmet-third/epmet-third-server/pom.xml b/epmet-module/epmet-third/epmet-third-server/pom.xml
index a319b011d2..28d6945bca 100644
--- a/epmet-module/epmet-third/epmet-third-server/pom.xml
+++ b/epmet-module/epmet-third/epmet-third-server/pom.xml
@@ -317,7 +317,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/gov-access/gov-access-server/pom.xml b/epmet-module/gov-access/gov-access-server/pom.xml
index b99aea3799..44da511bc2 100644
--- a/epmet-module/gov-access/gov-access-server/pom.xml
+++ b/epmet-module/gov-access/gov-access-server/pom.xml
@@ -209,7 +209,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/gov-grid/gov-grid-server/pom.xml b/epmet-module/gov-grid/gov-grid-server/pom.xml
index 5a7686b00c..807fe76f1e 100644
--- a/epmet-module/gov-grid/gov-grid-server/pom.xml
+++ b/epmet-module/gov-grid/gov-grid-server/pom.xml
@@ -191,7 +191,7 @@
 
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/gov-issue/gov-issue-server/pom.xml b/epmet-module/gov-issue/gov-issue-server/pom.xml
index 0132b21cca..400e0f087b 100644
--- a/epmet-module/gov-issue/gov-issue-server/pom.xml
+++ b/epmet-module/gov-issue/gov-issue-server/pom.xml
@@ -259,7 +259,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/gov-mine/gov-mine-server/pom.xml b/epmet-module/gov-mine/gov-mine-server/pom.xml
index 22c67633ee..4334370537 100644
--- a/epmet-module/gov-mine/gov-mine-server/pom.xml
+++ b/epmet-module/gov-mine/gov-mine-server/pom.xml
@@ -209,7 +209,7 @@
 
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/gov-org/gov-org-server/pom.xml b/epmet-module/gov-org/gov-org-server/pom.xml
index 0331f95ce7..1da1672170 100644
--- a/epmet-module/gov-org/gov-org-server/pom.xml
+++ b/epmet-module/gov-org/gov-org-server/pom.xml
@@ -303,7 +303,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/gov-project/gov-project-server/pom.xml b/epmet-module/gov-project/gov-project-server/pom.xml
index 8604647c05..2d2d1421a8 100644
--- a/epmet-module/gov-project/gov-project-server/pom.xml
+++ b/epmet-module/gov-project/gov-project-server/pom.xml
@@ -286,7 +286,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/gov-voice/gov-voice-server/pom.xml b/epmet-module/gov-voice/gov-voice-server/pom.xml
index acee6a8306..318b871d46 100644
--- a/epmet-module/gov-voice/gov-voice-server/pom.xml
+++ b/epmet-module/gov-voice/gov-voice-server/pom.xml
@@ -218,7 +218,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/open-data-worker/open-data-worker-server/pom.xml b/epmet-module/open-data-worker/open-data-worker-server/pom.xml
index f5e8264f49..8bf8638612 100644
--- a/epmet-module/open-data-worker/open-data-worker-server/pom.xml
+++ b/epmet-module/open-data-worker/open-data-worker-server/pom.xml
@@ -230,7 +230,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/oper-access/oper-access-server/pom.xml b/epmet-module/oper-access/oper-access-server/pom.xml
index 0089943bf7..10fdb24f44 100644
--- a/epmet-module/oper-access/oper-access-server/pom.xml
+++ b/epmet-module/oper-access/oper-access-server/pom.xml
@@ -204,7 +204,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/oper-crm/oper-crm-server/pom.xml b/epmet-module/oper-crm/oper-crm-server/pom.xml
index f91fbdafc0..71708770c8 100644
--- a/epmet-module/oper-crm/oper-crm-server/pom.xml
+++ b/epmet-module/oper-crm/oper-crm-server/pom.xml
@@ -249,7 +249,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/oper-customize/oper-customize-server/pom.xml b/epmet-module/oper-customize/oper-customize-server/pom.xml
index 8ab9300ff5..baa7055c83 100644
--- a/epmet-module/oper-customize/oper-customize-server/pom.xml
+++ b/epmet-module/oper-customize/oper-customize-server/pom.xml
@@ -231,7 +231,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/resi-group/resi-group-server/pom.xml b/epmet-module/resi-group/resi-group-server/pom.xml
index bd232b3aac..6e8cf77670 100644
--- a/epmet-module/resi-group/resi-group-server/pom.xml
+++ b/epmet-module/resi-group/resi-group-server/pom.xml
@@ -292,7 +292,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/resi-guide/resi-guide-server/pom.xml b/epmet-module/resi-guide/resi-guide-server/pom.xml
index f1ca66e4fe..ac06b9b79e 100644
--- a/epmet-module/resi-guide/resi-guide-server/pom.xml
+++ b/epmet-module/resi-guide/resi-guide-server/pom.xml
@@ -225,7 +225,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/resi-hall/resi-hall-server/pom.xml b/epmet-module/resi-hall/resi-hall-server/pom.xml
index bffb6788ab..e623bac09a 100644
--- a/epmet-module/resi-hall/resi-hall-server/pom.xml
+++ b/epmet-module/resi-hall/resi-hall-server/pom.xml
@@ -177,7 +177,7 @@
 
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/resi-home/resi-home-server/pom.xml b/epmet-module/resi-home/resi-home-server/pom.xml
index 08c3603b30..00c3df0cb8 100644
--- a/epmet-module/resi-home/resi-home-server/pom.xml
+++ b/epmet-module/resi-home/resi-home-server/pom.xml
@@ -199,7 +199,7 @@
 
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/resi-mine/resi-mine-server/pom.xml b/epmet-module/resi-mine/resi-mine-server/pom.xml
index b2ebcfe1b7..7d10c7432c 100644
--- a/epmet-module/resi-mine/resi-mine-server/pom.xml
+++ b/epmet-module/resi-mine/resi-mine-server/pom.xml
@@ -216,7 +216,7 @@
                 test
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/resi-partymember/resi-partymember-server/pom.xml b/epmet-module/resi-partymember/resi-partymember-server/pom.xml
index a15e120b72..f06ec8541e 100644
--- a/epmet-module/resi-partymember/resi-partymember-server/pom.xml
+++ b/epmet-module/resi-partymember/resi-partymember-server/pom.xml
@@ -254,7 +254,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-module/resi-voice/resi-voice-server/pom.xml b/epmet-module/resi-voice/resi-voice-server/pom.xml
index ae4858bceb..a368f57d83 100644
--- a/epmet-module/resi-voice/resi-voice-server/pom.xml
+++ b/epmet-module/resi-voice/resi-voice-server/pom.xml
@@ -175,7 +175,7 @@
 
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-openapi/epmet-openapi-scan/pom.xml b/epmet-openapi/epmet-openapi-scan/pom.xml
index df86510504..a4db888ed9 100644
--- a/epmet-openapi/epmet-openapi-scan/pom.xml
+++ b/epmet-openapi/epmet-openapi-scan/pom.xml
@@ -176,7 +176,7 @@
 
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-user/epmet-user-server/pom.xml b/epmet-user/epmet-user-server/pom.xml
index fb8ea8e9b4..56b1318f64 100644
--- a/epmet-user/epmet-user-server/pom.xml
+++ b/epmet-user/epmet-user-server/pom.xml
@@ -299,7 +299,7 @@
                 elink@833066
                 
                 0
-                r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com
+                192.168.10.150
                 6379
                 EpmEtrEdIs!q@w
                 
diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatRelationEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatRelationEntity.java
index 7da911ee59..ce74babe94 100644
--- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatRelationEntity.java
+++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatRelationEntity.java
@@ -1,5 +1,7 @@
 package com.epmet.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
@@ -24,6 +26,7 @@ public class IcNatRelationEntity extends BaseEpmetEntity {
     /**
      * 客户Id
      */
+	@TableField(fill = FieldFill.INSERT)
 	private String customerId;
 
     /**
diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcNatImportExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcNatImportExcelData.java
index 6e8d252c1f..b29a1928ff 100644
--- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcNatImportExcelData.java
+++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcNatImportExcelData.java
@@ -40,7 +40,7 @@ public class IcNatImportExcelData {
     private String natResultZh;
 
     @Data
-    public static class ErrorRow {
+    public static class RowRemarkMessage {
 
         @ExcelProperty("姓名")
         @ColumnWidth(20)
diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatExcelImportListener.java
index dccc8d106a..854507d471 100644
--- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatExcelImportListener.java
+++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatExcelImportListener.java
@@ -9,6 +9,7 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
 import com.epmet.entity.IcNatEntity;
 import com.epmet.excel.data.IcNatImportExcelData;
 import com.epmet.service.impl.IcNatServiceImpl;
+import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 
@@ -18,6 +19,7 @@ import java.util.List;
 /**
  * 核酸检测excel导入监听器
  */
+@Data
 @Slf4j
 public class IcNatExcelImportListener implements ReadListener {
 
@@ -42,7 +44,11 @@ public class IcNatExcelImportListener implements ReadListener errorRows = new ArrayList<>();
+    private List errorRows = new ArrayList<>();
+    /**
+     * 其他被标记出来的列表列表
+     */
+    private List otherRows = new ArrayList<>();
 
     private IcNatServiceImpl icNatService;
 
@@ -89,7 +95,7 @@ public class IcNatExcelImportListener implements ReadListener 0) {
-                icNatService.batchPersist(datas);
+                icNatService.batchPersist(datas, this);
             }
         } finally {
             datas.clear();
@@ -121,7 +127,7 @@ public class IcNatExcelImportListener implements ReadListener getErrorRows() {
+    public List getErrorRows() {
         return errorRows;
     }
 }
diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java
index a71f480f26..b3de790096 100644
--- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java
+++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java
@@ -22,6 +22,7 @@ import com.epmet.commons.tools.utils.*;
 import com.epmet.constants.ImportTaskConstants;
 import com.epmet.dao.IcNatDao;
 import com.epmet.dao.IcNatRelationDao;
+import com.epmet.dao.IcResiUserDao;
 import com.epmet.dao.UserBaseInfoDao;
 import com.epmet.dto.IcNatDTO;
 import com.epmet.dto.IcNoticeDTO;
@@ -29,6 +30,7 @@ import com.epmet.dto.form.*;
 import com.epmet.dto.result.*;
 import com.epmet.entity.IcNatEntity;
 import com.epmet.entity.IcNatRelationEntity;
+import com.epmet.entity.IcResiUserEntity;
 import com.epmet.excel.data.IcNatImportExcelData;
 import com.epmet.excel.handler.IcNatExcelImportListener;
 import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
@@ -54,10 +56,7 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -82,6 +81,8 @@ public class IcNatServiceImpl extends BaseServiceImpl imp
     private UserBaseInfoDao userBaseInfoDao;
     @Autowired
     private IcNatRelationDao icNatRelationDao;
+    @Autowired
+    private IcResiUserDao icResiUserDao;
 
     /**
      * @Author sun
@@ -91,9 +92,12 @@ public class IcNatServiceImpl extends BaseServiceImpl imp
     @Transactional(rollbackFor = Exception.class)
     public void add(AddIcNatFormDTO formDTO) {
         //0.先根据身份证号和检查时间以及检测结果校验数据是否存在
-        IcNatDTO icNatDTO = baseDao.getNatDTO(formDTO.getCustomerId(), null, formDTO.getIdCard(), DateUtils.format(formDTO.getNatTime(), DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE), formDTO.getNatResult());
-        if (null != icNatDTO) {
+        IcNatDTO icNatDTO = baseDao.getNatDTO(formDTO.getCustomerId(), null, formDTO.getIdCard(), DateUtils.format(formDTO.getNatTime(), DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE), null);
+        //按身份证号核酸时间存在记录的 核酸结果相同的提示已存在相同记录核酸结果不同的提示已存在去修改【业务要求的】
+        if (null != icNatDTO && icNatDTO.getNatResult().equals(formDTO.getNatResult())) {
             throw new RenException(EpmetErrorCode.IC_NAT_IDCARD_NATTIME.getCode(), EpmetErrorCode.IC_NAT_IDCARD_NATTIME.getMsg());
+        } else if (null != icNatDTO && !icNatDTO.getNatResult().equals(formDTO.getNatResult())) {
+            throw new RenException(EpmetErrorCode.IC_NAT.getCode(), EpmetErrorCode.IC_NAT.getMsg());
         }
         //1.获取所填居民所属组织缓存信息
         AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(formDTO.getAgencyId());
@@ -208,7 +212,7 @@ public class IcNatServiceImpl extends BaseServiceImpl imp
         //0.先根据身份证号和检测时间以及检测结果校验除当前数据是否还存在相同数据
         IcNatDTO icNatDTO = baseDao.getNatDTO(formDTO.getCustomerId(), formDTO.getIcNatId(), formDTO.getIdCard(), DateUtils.format(formDTO.getNatTime(), DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE), formDTO.getNatResult());
         if (null != icNatDTO) {
-            throw new RenException(EpmetErrorCode.IC_NAT_IDCARD_NATTIME.getCode(), EpmetErrorCode.IC_NAT_IDCARD_NATTIME.getMsg());
+            throw new RenException(EpmetErrorCode.IC_NAT.getCode(), EpmetErrorCode.IC_NAT.getMsg());
         }
         //1.更新核酸记录基础信息表数据
         IcNatEntity entity = ConvertUtils.sourceToTarget(formDTO, IcNatEntity.class);
@@ -313,13 +317,22 @@ public class IcNatServiceImpl extends BaseServiceImpl imp
             LoginUserDetailsResultDTO loginUserDetails = getResultDataOrThrowsException(epmetUserOpenFeignClient.getLoginUserDetails(ludf), ServiceConstant.EPMET_USER_SERVER,
                     EpmetErrorCode.SERVER_ERROR.getCode(), "调用user出错", "");
 
-            IcNatExcelImportListener listener = new IcNatExcelImportListener(userId, loginUserDetails.getAgencyId(), loginUserDetails.getOrgIdPath(), this);
+            String agencyId = loginUserDetails.getAgencyId();
+
+            IcNatExcelImportListener listener = new IcNatExcelImportListener(userId, agencyId, loginUserDetails.getOrgIdPath().replace(":".concat(agencyId), ""), this);
 
             EasyExcel.read(filePath.toFile(), IcNatImportExcelData.class, listener).headRowNumber(2).sheet(0).doRead();
 
             Path errorDescFile = null;
             String errorDesFileUrl = null;
-            List errorRows = listener.getErrorRows();
+
+            List errorRows = listener.getErrorRows();
+            List otherRows = listener.getOtherRows();
+
+            boolean failed = errorRows.size() > 0;
+
+            // 合并到一起写入
+            errorRows.addAll(otherRows);
 
             // 生成并上传错误文件
             try {
@@ -332,7 +345,7 @@ public class IcNatServiceImpl extends BaseServiceImpl imp
                 FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, fileName);
                 OutputStream os = fileItem.getOutputStream();
 
-                EasyExcel.write(os, IcNatImportExcelData.ErrorRow.class).sheet("导入失败列表").doWrite(errorRows);
+                EasyExcel.write(os, IcNatImportExcelData.RowRemarkMessage.class).sheet("信息列表").doWrite(errorRows);
 
                 // 文件上传oss
                 Result errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem));
@@ -347,7 +360,7 @@ public class IcNatServiceImpl extends BaseServiceImpl imp
 
             ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO();
             importFinishTaskForm.setTaskId(importTaskId);
-            importFinishTaskForm.setProcessStatus(errorRows.size() <= 0 ? ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS : ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL);
+            importFinishTaskForm.setProcessStatus(failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS);
             importFinishTaskForm.setOperatorId(userId);
             importFinishTaskForm.setResultDesc("");
             importFinishTaskForm.setResultDescFilePath(errorDesFileUrl);
@@ -425,14 +438,171 @@ public class IcNatServiceImpl extends BaseServiceImpl imp
      * 批量持久化
      * @param entities
      */
-    public void batchPersist(List entities) {
-        //insertBatch(entities);
+    public void batchPersist(List entities, IcNatExcelImportListener listener) {
+        String customerId = EpmetRequestHolder.getHeader(AppClientConstant.CUSTOMER_ID);
         String currentUserId = EpmetRequestHolder.getHeader(AppClientConstant.USER_ID);
+
         entities.forEach(e -> {
-            String id = IdWorker.getIdStr(e);
-            e.setId(id);
-            e.setUpdatedBy(currentUserId);
-            baseDao.insertOrUpdate(e);
+            try {
+                persisNat(e, customerId, currentUserId, listener);
+            } catch (Exception exception) {
+                String errorMsg = ExceptionUtils.getErrorStackTrace(exception);
+                log.error(errorMsg);
+
+                IcNatImportExcelData.RowRemarkMessage errorRow = new IcNatImportExcelData.RowRemarkMessage();
+                errorRow.setName(e.getName());
+                errorRow.setMobile(e.getMobile());
+                errorRow.setIdCard(e.getIdCard());
+                errorRow.setErrorInfo("未知系统错误");
+                listener.getErrorRows().add(errorRow);
+            }
         });
     }
+
+    /**
+     * 单条持久化
+     * @param e
+     * @param customerId
+     * @param currentUserId
+     * @param listener
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void persisNat(IcNatEntity e, String customerId, String currentUserId, IcNatExcelImportListener listener) {
+        List otherRows = listener.getOtherRows();
+
+        Date natTime = e.getNatTime();
+        String idCard = e.getIdCard();
+        String name = e.getName();
+        String mobile = e.getMobile();
+        String natResult = e.getNatResult();
+        String natAddress = e.getNatAddress();
+
+        //1.先看客户下有没有这个人
+        IcNatEntity resiNat = getResiNat(customerId, idCard, natTime);
+        if (resiNat != null && !"import".equals(resiNat.getUserType())) {
+            // 有这个人,并且不是导入的
+            String message = "已存在该次核酸检测录入记录,请到系统中修改";
+
+            IcNatImportExcelData.RowRemarkMessage errorRow = new IcNatImportExcelData.RowRemarkMessage();
+            errorRow.setName(name);
+            errorRow.setMobile(mobile);
+            errorRow.setIdCard(idCard);
+            errorRow.setErrorInfo(message);
+            otherRows.add(errorRow);
+            return;
+        }
+
+        if (resiNat != null) {
+            boolean needUpdate = false;
+            // 有这个人,也是导入的,那就要更新le
+            ArrayList changedFieldNames = new ArrayList<>();
+            if (!name.equals(resiNat.getName())) {
+                changedFieldNames.add("姓名");
+                resiNat.setName(name);
+                needUpdate = true;
+            }
+
+            if (!natResult.equals(resiNat.getNatResult())) {
+                changedFieldNames.add("检测结果");
+                resiNat.setNatResult(natResult);
+                needUpdate = true;
+            }
+
+            // 检测地点和手机号先不提示,说需要提示再提示
+            if (!natAddress.equals(resiNat.getNatAddress())) {
+                changedFieldNames.add("检测地点");
+                resiNat.setNatResult(natAddress);
+                needUpdate = true;
+            }
+
+            if (!mobile.equals(resiNat.getMobile())) {
+                changedFieldNames.add("手机号");
+                resiNat.setMobile(mobile);
+                needUpdate = true;
+            }
+
+            if (changedFieldNames.size() > 0) {
+                String fieldsStr = String.join(",", changedFieldNames);
+                String message = "该次核酸检测记录已存在,执行更新动作," + fieldsStr + "已成功更新";
+                IcNatImportExcelData.RowRemarkMessage errorRow = new IcNatImportExcelData.RowRemarkMessage();
+                errorRow.setName(name);
+                errorRow.setMobile(mobile);
+                errorRow.setIdCard(idCard);
+                errorRow.setErrorInfo(message);
+                otherRows.add(errorRow);
+            }
+
+            if (needUpdate) {
+                resiNat.setUpdatedBy(currentUserId);
+                resiNat.setUpdatedTime(new Date());
+                baseDao.updateById(resiNat);
+            }
+
+            // 还要创建关系
+            createNatRelation(resiNat.getId(), listener.getCurrentAgencyId(), listener.getCurrentAgencyPids());
+
+            return;
+        }
+
+        // 执行新增操作
+        e.setIsResiUser(isResi(customerId, idCard));
+        e.setUserType("import");
+
+        baseDao.insert(e);
+
+        // 还要创建关系
+        createNatRelation(e.getId(), listener.getCurrentAgencyId(), listener.getCurrentAgencyPids());
+    }
+
+    /**
+     * 是否是客户下的居民;
+     * 0:否
+     * 1:是
+     * @param customerId
+     * @param idCard
+     * @return
+     */
+    public String isResi(String customerId, String idCard) {
+        LambdaQueryWrapper query = new LambdaQueryWrapper();
+        query.eq(IcResiUserEntity::getCustomerId, customerId);
+        query.eq(IcResiUserEntity::getIdCard, idCard);
+        return icResiUserDao.selectCount(query) > 0 ? "1" : "0";
+    }
+
+    /**
+     *
+     * @param customerId
+     * @param idCard
+     * @return
+     */
+    public IcNatEntity getResiNat(String customerId, String idCard, Date natTime) {
+        LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+        query.eq(IcNatEntity::getCustomerId, customerId);
+        query.eq(IcNatEntity::getIdCard, idCard);
+        query.eq(IcNatEntity::getNatTime, natTime);
+        return baseDao.selectOne(query);
+    }
+
+    /**
+     * 创建nat关系
+     * @param natId
+     * @param currentUserAgencyId
+     */
+    private void createNatRelation(String natId, String currentUserAgencyId, String agencyPids) {
+
+        // 没有关系创建关系,有关系就跳过
+        LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+        query.eq(IcNatRelationEntity::getIcNatId, natId);
+        query.eq(IcNatRelationEntity::getAgencyId, currentUserAgencyId);
+        if (icNatRelationDao.selectCount(query) > 0) {
+            return;
+        }
+
+        IcNatRelationEntity relation = new IcNatRelationEntity();
+        relation.setAgencyId(currentUserAgencyId);
+        relation.setPids(String.join(":", Arrays.asList(agencyPids, currentUserAgencyId)));
+        relation.setIcNatId(natId);
+        relation.setUserType("import");
+        icNatRelationDao.insert(relation);
+    }
 }
diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/ic_nat.xlsx b/epmet-user/epmet-user-server/src/main/resources/excel/ic_nat.xlsx
index d74d726f95..d9038bfdc4 100644
Binary files a/epmet-user/epmet-user-server/src/main/resources/excel/ic_nat.xlsx and b/epmet-user/epmet-user-server/src/main/resources/excel/ic_nat.xlsx differ