Explorar o código

feature: 同步服务完善
1.全量人员双向同步

luoyb hai 1 ano
pai
achega
e4d36c7acd

+ 28 - 15
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

@@ -2,6 +2,7 @@ package org.dromara.system.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -38,7 +39,10 @@ import org.dromara.system.domain.SysUser;
 import org.dromara.system.domain.SysUserRole;
 import org.dromara.system.domain.bo.SysUserBo;
 import org.dromara.system.domain.bo.UserDeptBo;
-import org.dromara.system.domain.vo.*;
+import org.dromara.system.domain.vo.SysPostVo;
+import org.dromara.system.domain.vo.SysRoleVo;
+import org.dromara.system.domain.vo.SysUserExportVo;
+import org.dromara.system.domain.vo.SysUserVo;
 import org.dromara.system.mapper.*;
 import org.dromara.system.mq.KafkaNormalProducer;
 import org.dromara.system.service.ISysUserService;
@@ -709,8 +713,10 @@ public class SysUserServiceImpl implements ISysUserService {
         return baseMapper.selectVoOne(new LambdaQueryWrapper<SysUser>()
             .eq(SysUser::getOtherId, otherId));
     }
+
     /**
      * 根据账号查询用户信息
+     *
      * @param userName 账号
      * @return 用户信息
      */
@@ -718,25 +724,32 @@ public class SysUserServiceImpl implements ISysUserService {
     @Override
     public SysUserVo selectUserVoByUserName(String userName) {
         return baseMapper.selectVoOne(new LambdaQueryWrapper<SysUser>()
-                                          .eq(SysUser::getUserName, userName));
+            .eq(SysUser::getUserName, userName));
     }
 
     private void insertUserDept(SysUserBo bo, List<UserDeptBo> userDeptBoList) {
         //将已有的人员部门关系设置成非主部门
         userDeptService.updateMainDeptByUserId(bo.getUserId());
-        if(ObjectUtil.isEmpty(userDeptBoList)){
-            UserDeptBo userDeptBo = new UserDeptBo();
-            userDeptBo.setDeptId(bo.getDeptId());
-            userDeptBo.setPostId(bo.getPostId());
-            userDeptBo.setUserId(bo.getUserId());
-            userDeptBo.setMainDept("Y");
-
-            userDeptService.setUserDeptPost(userDeptBo);
-        } else {
-            userDeptBoList.forEach(userDeptBo -> {
-                userDeptBo.setUserId(bo.getUserId());
-                userDeptService.setUserDeptPost(userDeptBo);
-            });
+        //设置当前部门为主部门
+        UserDeptBo justUserDeptBo = new UserDeptBo();
+        justUserDeptBo.setUserId(bo.getUserId());
+        justUserDeptBo.setDeptId(bo.getDeptId());
+        justUserDeptBo.setPostId(bo.getPostId());
+        justUserDeptBo.setMainDept("Y");
+        userDeptService.setUserDeptPost(justUserDeptBo);
+        //如果有多部门,设置多部门
+        if (CollectionUtil.isNotEmpty(userDeptBoList)) {
+            //排除主部门
+            List<UserDeptBo> userDeptList = userDeptBoList.stream()
+                .filter(p -> ObjectUtil.notEqual(bo.getDeptId(), p.getDeptId())).toList();
+            if (CollectionUtil.isNotEmpty(userDeptList)) {
+                userDeptList.forEach(userDeptBo -> {
+                    userDeptBo.setUserId(bo.getUserId());
+                    userDeptBo.setMainDept("N");
+
+                    userDeptService.setUserDeptPost(userDeptBo);
+                });
+            }
         }
     }