Jelajahi Sumber

Merge branch 'mazq-bugfix-231010' into 'master'

Mazq bugfix 231010

See merge request dcuc-tjdsj/auth-service!245
黄资权 1 tahun lalu
induk
melakukan
eb88182d25

+ 16 - 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,10 +1021,17 @@ public class SubSyncBusinessImpl implements ISubSyncBusiness {
     private void saveAddUserOri(ApiResultPage<JSONObject> page, UserTypeEnum userType) {
         List<JSONObject> content = page.getContent();
         List<AuthUserAddOriginal> originals = new ArrayList<>();
+        // 过滤接口中数据中因多个职务导致重复的人员数据
+        // 如果是先删除再新增人员,会同时同步到两条数据,idcard为同一个,但是delete字段不同
+        Map<String, String> idcardMap = new HashMap<>();
         for (JSONObject json : content) {
-            AuthUserAddOriginal userOri = new AuthUserAddOriginal();
             String idcard = json.getString("idcard");
             String userDeleted = json.getString("deleted");
+            if (idcardMap.containsKey(idcard) && idcardMap.get(idcard).equals(userDeleted)) {
+                continue;
+            }
+            idcardMap.put(idcard, userDeleted);
+            AuthUserAddOriginal userOri = new AuthUserAddOriginal();
             Date updateTime = json.getDate("updateTime");
             userOri.setIdcard(idcard);
             userOri.setUserType(userType.getValue());