Ver código fonte

同步问题修改

mazq 1 ano atrás
pai
commit
9361f72efa

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

@@ -862,6 +862,7 @@ public class SubSyncBusinessImpl implements ISubSyncBusiness {
             List<AuthUserInfo> userInfoList = saveAddUserInfo(content, userType);
             Map<String, AuthUserInfo> idcardMap = userInfoList
                     .stream()
+                    .filter(e-> BooleanEnum.FALSE.value.equals(e.getDeleted()))
                     .collect(Collectors.toMap(AuthUserInfo::getIdcard, e -> e, (old, last) -> last));
 
             // 过滤删除人员的身份证号
@@ -1159,12 +1160,16 @@ public class SubSyncBusinessImpl implements ISubSyncBusiness {
                 watch.stop();
 
                 watch.start("Set path And ReInitTrees");
-                List<String> updateOrgCodesInTrees = setAddPathAndUpId(updateOrgInfos);
-                List<String> delCode = orgAddOriginalService.getDelCodes();
-                //需要删除的机构code也加入
+                Map<Boolean, List<AuthOrgInfo>> collect = updateOrgInfos.stream()
+                        .collect(Collectors.partitioningBy(e -> BooleanEnum.FALSE.value.equals(e.getDeleted())));
+                List<AuthOrgInfo> needUpdatePathOrgs = collect.get(Boolean.TRUE);
+                List<String> updateOrgCodesInTrees = setAddPathAndUpId(needUpdatePathOrgs);
+
+                //需要删除的机构和该机构的上级机构都需要更新内存中的机构树信息
                 //如果同一个机构code是先删除后新增的机构,id也变了也需要从树结构中移除
-                updateOrgCodesInTrees.addAll(delCode);
-                orgTreeService.updateTreeByCode(updateOrgCodesInTrees, false);
+                List<AuthOrgInfo> delOrgInfos = Optional.ofNullable(collect.get(Boolean.FALSE))
+                        .orElse(Collections.emptyList());
+                orgTreeService.updateTreeByCode(updateOrgCodesInTrees, delOrgInfos, false);
                 watch.stop();
 
                 watch.start("onOrgSyncEnd");

+ 2 - 1
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/sub/repo/AuthUserInfoRepository.java

@@ -111,6 +111,7 @@ public interface AuthUserInfoRepository extends BaseRepository<AuthUserInfo, Str
      */
     @Modifying
     @NativeQuery("update t_auth_user_info u inner join t_auth_org_info o on u.org_code = o.code " +
-            "set u.org_id = o.id where u.deleted='0' and u.org_id is null and u.org_code is not null")
+            "set u.org_id = o.id where u.deleted='0' and o.deleted = '0'" +
+            " and u.org_id is null and u.org_code is not null")
     void updateOrgInfoInUser();
 }

+ 1 - 1
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/sub/repo/AuthUserOrgRelRepository.java

@@ -34,7 +34,7 @@ public interface AuthUserOrgRelRepository extends BaseRepository<AuthUserOrgRel,
      */
     @Modifying
     @NativeQuery("update t_auth_user_org_rel r inner join t_auth_org_info o on r.org_code = o.code " +
-            "set r.org_id = o.id where r.org_code is not null and r.org_id is null")
+            "set r.org_id = o.id where and r.deleted = '0' and o.deleted = '0' r.org_code is not null and r.org_id is null")
     void updateOrgInfoInUser();
 
     /**

+ 3 - 1
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/sub/service/IAuthOrgTreeService.java

@@ -67,8 +67,10 @@ public interface IAuthOrgTreeService {
 
     /**
      * 部分更新树节点
+     *
      * @param updateOrgCodes
+     * @param delOrgInfos
      * @param async
      */
-    void updateTreeByCode(List<String> updateOrgCodes, boolean async);
+    void updateTreeByCode(List<String> updateOrgCodes, List<AuthOrgInfo> delOrgInfos, boolean async);
 }

+ 3 - 2
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/sub/service/impl/AuthOrgInfoService.java

@@ -114,8 +114,9 @@ public class AuthOrgInfoService implements IAuthOrgInfoService {
             String code = e.getCode();
             AuthOrgInfo exist = existMap.get(code);
             //删除机构信息
-            if(BooleanEnum.TRUE.value.equals(e.getDeleted())) {
-                orgInfoRepository.deleteByCode(code);
+            if(BooleanEnum.TRUE.value.equals(e.getDeleted()) && exist != null) {
+                orgInfoRepository.deleteById(exist.getId());
+                list.add(exist);
                 continue ;
             }
             //新增或修改机构

+ 13 - 8
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/sub/service/impl/AuthOrgTreeServiceImpl.java

@@ -85,8 +85,8 @@ public class AuthOrgTreeServiceImpl implements IAuthOrgTreeService {
     }
 
     @Override
-    public void updateTreeByCode(List<String> updateOrgCodes, boolean async) {
-        Runnable runnable = () -> updateTask(updateOrgCodes);
+    public void updateTreeByCode(List<String> updateOrgCodes, List<AuthOrgInfo> delOrgInfos, boolean async) {
+        Runnable runnable = () -> updateTask(updateOrgCodes, delOrgInfos);
         if (async) {
             Thread thread = new Thread(runnable);
             thread.start();
@@ -94,10 +94,14 @@ public class AuthOrgTreeServiceImpl implements IAuthOrgTreeService {
             runnable.run();
         }
     }
-
-    private void updateTask(List<String> updateOrgCodes) {
+    private void updateTask(List<String> updateOrgCodes, List<AuthOrgInfo> delOrgInfos) {
+        // 被删除的上机构(如果上级机构没有一起被删除的话)也需要加入更新的机构集合中
+        List<String> delUpOrgCodes = delOrgInfos.stream()
+                .map(AuthOrgInfo::getUpGovCode)
+                .distinct()
+                .collect(Collectors.toList());
+        updateOrgCodes.addAll(delUpOrgCodes);
         List<AuthOrgInfo> updateOrgInfos = authOrgInfoService.getOrgByCodes(updateOrgCodes);
-        Set<String> existOrgCodes = updateOrgInfos.stream().map(AuthOrgInfo::getCode).collect(Collectors.toSet());
         //构建需要更新的树节点
         List<OrgTreeNodeDTO> treeNods = getTreeNods(updateOrgInfos);
 
@@ -121,10 +125,10 @@ public class AuthOrgTreeServiceImpl implements IAuthOrgTreeService {
             }
         });
         //过滤删除的机构
-        List<String> delCodes = updateOrgCodes.stream()
-                .filter(e -> !existOrgCodes.contains(e))
+        List<String> delOrgCodes = delOrgInfos.stream()
+                .map(AuthOrgInfo::getCode)
                 .collect(Collectors.toList());
-        holder.updateTreeNodes(treeNods, delCodes);
+        holder.updateTreeNodes(treeNods, delOrgCodes);
     }
 
     /**
@@ -375,6 +379,7 @@ public class AuthOrgTreeServiceImpl implements IAuthOrgTreeService {
                 List<OrgTreeNodeDTO> selfNodes = orgIds.stream().map(treeNodeMap::get).collect(Collectors.toList());
                 List<OrgTreeNodeDTO> collect = selfNodes
                         .stream()
+                        .filter(Objects::nonNull)
                         .map(OrgTreeNodeDTO::getChildIds)
                         .flatMap(List::stream)
                         .distinct()