Browse Source

人员同步重复数据问题解决

mazq 1 year ago
parent
commit
fa68b309e1

+ 15 - 2
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/sub/business/impl/SubSyncBusinessImpl.java

@@ -452,9 +452,16 @@ public class SubSyncBusinessImpl implements ISubSyncBusiness {
     private void saveUserOri(Date now, ApiResultPage<JSONObject> syncResult, UserTypeEnum userType) {
         List<JSONObject> content = syncResult.getContent();
         List<AuthUserOriginalData> originals = new ArrayList<>();
+        // 过滤接口中数据中因多个职务导致重复的人员数据
+        Set<String> idcardSet = new HashSet<>();
         for (JSONObject json : content) {
+            String idcard = json.getString("idcard");
+            if (idcardSet.contains(idcard)) {
+                continue;
+            }
+            idcardSet.add(idcard);
             AuthUserOriginalData userOri = new AuthUserOriginalData();
-            userOri.setIdcard(json.getString("idcard"));
+            userOri.setIdcard(idcard);
             userOri.setDeleted(BooleanEnum.FALSE.value);
             userOri.setSync(BooleanEnum.FALSE.value);
             userOri.setSyncDate(now);
@@ -1014,9 +1021,15 @@ public class SubSyncBusinessImpl implements ISubSyncBusiness {
     private void saveAddUserOri(ApiResultPage<JSONObject> page, UserTypeEnum userType) {
         List<JSONObject> content = page.getContent();
         List<AuthUserAddOriginal> originals = new ArrayList<>();
+        // 过滤接口中数据中因多个职务导致重复的人员数据
+        Set<String> idcardSet = new HashSet<>();
         for (JSONObject json : content) {
-            AuthUserAddOriginal userOri = new AuthUserAddOriginal();
             String idcard = json.getString("idcard");
+            if (idcardSet.contains(idcard)) {
+                continue;
+            }
+            idcardSet.add(idcard);
+            AuthUserAddOriginal userOri = new AuthUserAddOriginal();
             String userDeleted = json.getString("deleted");
             Date updateTime = json.getDate("updateTime");
             userOri.setIdcard(idcard);