From 3e3b289a1dbedd82bcb737db750d69d268ef412e Mon Sep 17 00:00:00 2001
From: wl <173@qq.com>
Date: 星期四, 27 十月 2022 13:35:52 +0800
Subject: [PATCH] 解决部门bug

---
 ycl-common/src/main/java/com/ycl/service/depart/impl/UmsDepartServiceImpl.java     |   10 +++
 ycl-common/src/main/java/com/ycl/controller/depart/DepartController.java           |   22 +++++--
 ycl-common/src/main/java/com/ycl/service/user/impl/UmsDepartManageServiceImpl.java |   65 +++++++++++----------
 ycl-common/src/main/java/com/ycl/mapper/depart/UmsDepartMapper.java                |    5 +
 ycl-common/src/main/java/com/ycl/service/user/UmsDepartManageService.java          |    4 
 ycl-common/src/main/java/com/ycl/service/depart/UmsDepartService.java              |    4 +
 ycl-common/src/main/resources/mapper/depart/UmsDepartMapper.xml                    |   32 ++++++++++
 7 files changed, 102 insertions(+), 40 deletions(-)

diff --git a/ycl-common/src/main/java/com/ycl/controller/depart/DepartController.java b/ycl-common/src/main/java/com/ycl/controller/depart/DepartController.java
index 4f02c6b..fc07da8 100644
--- a/ycl-common/src/main/java/com/ycl/controller/depart/DepartController.java
+++ b/ycl-common/src/main/java/com/ycl/controller/depart/DepartController.java
@@ -9,9 +9,7 @@
 import com.ycl.api.BasePageVO;
 import com.ycl.api.CommonResult;
 import com.ycl.controller.BaseController;
-import com.ycl.entity.depart.DepartManager;
 import com.ycl.entity.depart.UmsDepart;
-import com.ycl.entity.user.UmsDepartManage;
 import com.ycl.service.depart.UmsDepartService;
 import com.ycl.service.user.UmsDepartManageService;
 import com.ycl.utils.auth.UserAuthUtil;
@@ -126,19 +124,31 @@
     @ApiOperation("鐢ㄦ埛淇敼瑙掕壊")
     @PutMapping(value = "/user_update_Role")
     public CommonResult userUpdateRole(@RequestParam Long id,
-                                     @RequestParam List<Long> roles) {
+                                       @RequestParam List<Long> roles) {
         umsAdminDepartService.userUpdateRoles(id, roles);
         return CommonResult.success("update success");
     }
 
     @ApiOperation("鐢ㄦ埛淇敼閮ㄩ棬")
     @PutMapping(value = "/user_update_depart")
-    public CommonResult userUpdateDepart(@RequestParam Long id,
-                                     @RequestParam List<UmsDepartManage> departmentIds) {
-        umsAdminDepartService.userUpdateDepart(id, departmentIds);
+    public CommonResult userUpdateDepart(@RequestParam Long userId,
+                                         @RequestParam Long departId) {
+        umsAdminDepartService.userUpdateDepart(userId,departId);
         return CommonResult.success("update success");
     }
 
+    @ApiOperation("鏌ヨ涓嶅湪閮ㄩ棬鐨勫墿浣欎汉鍛�")
+    @GetMapping("/query_surplus_user")
+    public CommonResult searchSurplusUser() {
+        return CommonResult.success(departService.selectSurplusUser());
+    }
+
+    @ApiOperation("鏌ヨ涓嶅湪閮ㄩ棬鐨勫墿浣欎汉鍛樺拰宸插湪閮ㄩ棬鐨勪汉")
+    @GetMapping("/query_surplus_exist_user")
+    public CommonResult searchSurplusUser(@RequestParam Long id) {
+        return CommonResult.success(departService.selectSurplusUserAndExistUser(id));
+    }
+
     @ApiOperation("鏌ヨ椤剁骇閮ㄩ棬")
     @GetMapping(value = "/query_father")
     public CommonResult search() {
diff --git a/ycl-common/src/main/java/com/ycl/mapper/depart/UmsDepartMapper.java b/ycl-common/src/main/java/com/ycl/mapper/depart/UmsDepartMapper.java
index a89249a..b327b6b 100644
--- a/ycl-common/src/main/java/com/ycl/mapper/depart/UmsDepartMapper.java
+++ b/ycl-common/src/main/java/com/ycl/mapper/depart/UmsDepartMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ycl.entity.depart.UmsDepart;
+import com.ycl.entity.user.UmsAdmin;
 import com.ycl.vo.depart.UmsDepartVO;
 import org.apache.ibatis.annotations.Param;
 
@@ -20,4 +21,8 @@
     List<UmsDepart> selectDepartList();
 
     List<UmsDepartVO> selectPageByName(@Param("departName") String departName, @Param("offset") Long offset, @Param("size") Long size);
+
+    List<UmsAdmin> selectSurplusUser();
+
+    List<UmsAdmin> selectSurplusUserAndExistUser(@Param("id") Long id);
 }
diff --git a/ycl-common/src/main/java/com/ycl/service/depart/UmsDepartService.java b/ycl-common/src/main/java/com/ycl/service/depart/UmsDepartService.java
index 550c14d..90dd3aa 100644
--- a/ycl-common/src/main/java/com/ycl/service/depart/UmsDepartService.java
+++ b/ycl-common/src/main/java/com/ycl/service/depart/UmsDepartService.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ycl.entity.depart.UmsDepart;
+import com.ycl.entity.user.UmsAdmin;
 import com.ycl.vo.depart.DepartVO;
 import com.ycl.vo.depart.UmsDepartVO;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -70,4 +71,7 @@
      */
     void updateStatus(DepartVO.StatusDepartVO params);
 
+    List<UmsAdmin> selectSurplusUser();
+
+    List<UmsAdmin> selectSurplusUserAndExistUser(Long id);
 }
diff --git a/ycl-common/src/main/java/com/ycl/service/depart/impl/UmsDepartServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/depart/impl/UmsDepartServiceImpl.java
index bc40ae3..11614e3 100644
--- a/ycl-common/src/main/java/com/ycl/service/depart/impl/UmsDepartServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/depart/impl/UmsDepartServiceImpl.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.entity.depart.UmsDepart;
+import com.ycl.entity.user.UmsAdmin;
 import com.ycl.enums.common.ResultCode;
 import com.ycl.exception.ApiException;
 import com.ycl.mapper.depart.UmsDepartMapper;
@@ -146,6 +147,15 @@
         }
     }
 
+    @Override
+    public List<UmsAdmin> selectSurplusUser() {
+        return sccgDepartMapper.selectSurplusUser();
+    }
+
+    @Override
+    public List<UmsAdmin> selectSurplusUserAndExistUser(Long id) {
+        return sccgDepartMapper.selectSurplusUserAndExistUser(id);
+    }
 
     /**
      * 鍒╃敤閫掑綊灏嗘渶鍚庝竴绾х┖闆嗗悎鍙樹负null锛屽墠绔仈绾ч�夋嫨鍣ㄦ渶鍚庢墠涓嶄細鍑虹幇 鏆傛棤鏁版嵁鐨刡ug
diff --git a/ycl-common/src/main/java/com/ycl/service/user/UmsDepartManageService.java b/ycl-common/src/main/java/com/ycl/service/user/UmsDepartManageService.java
index c7a1d6e..2c54f74 100644
--- a/ycl-common/src/main/java/com/ycl/service/user/UmsDepartManageService.java
+++ b/ycl-common/src/main/java/com/ycl/service/user/UmsDepartManageService.java
@@ -8,7 +8,7 @@
 
 /**
  * <p>
- *  鏈嶅姟绫�
+ * 鏈嶅姟绫�
  * </p>
  *
  * @author lyq
@@ -26,5 +26,5 @@
 
     void userUpdateRoles(Long id, List<Long> roles);
 
-    void userUpdateDepart(Long id, List<UmsDepartManage> roles);
+    void userUpdateDepart(Long userId,Long departId);
 }
diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsDepartManageServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsDepartManageServiceImpl.java
index b9f8f3a..d0c2e46 100644
--- a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsDepartManageServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsDepartManageServiceImpl.java
@@ -15,6 +15,7 @@
 import com.ycl.service.user.UmsDepartManageService;
 import com.ycl.vo.depart.DepartVO;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
@@ -113,40 +114,40 @@
             }
         }
         //缁戝畾鑿滃崟浜庣敤鎴�
-            ArrayList<UmsRoleMenuRelation> umsRoleMenuRelations = new ArrayList<>();
-            for (Long role : roles) {
-                umsRoleMenuRelations.addAll(roleMenuRelationMapper
-                        .selectList(new LambdaQueryWrapper<UmsRoleMenuRelation>()
-                                .eq(UmsRoleMenuRelation::getRoleId, role)));
-            }
-            umsRoleMenuRelations
-                    .stream()
-                    .map(item->item.getMenuId())
-                    .collect(Collectors.toList())
-                    .stream()
-                    .distinct()
-                    .collect(Collectors.toList())
-                    .stream()
-                    .forEach(item -> {
-                        AdminMenuRelation adminMenuRelation = new AdminMenuRelation();
-                        adminMenuRelation.setAdminId(id);
-                        adminMenuRelation.setMenuId(item);
-                        adminMenuRelationMapper.insert(adminMenuRelation);
-                    });
+        ArrayList<UmsRoleMenuRelation> umsRoleMenuRelations = new ArrayList<>();
+        for (Long role : roles) {
+            umsRoleMenuRelations.addAll(roleMenuRelationMapper
+                    .selectList(new LambdaQueryWrapper<UmsRoleMenuRelation>()
+                            .eq(UmsRoleMenuRelation::getRoleId, role)));
+        }
+        umsRoleMenuRelations
+                .stream()
+                .map(item -> item.getMenuId())
+                .collect(Collectors.toList())
+                .stream()
+                .distinct()
+                .collect(Collectors.toList())
+                .stream()
+                .forEach(item -> {
+                    AdminMenuRelation adminMenuRelation = new AdminMenuRelation();
+                    adminMenuRelation.setAdminId(id);
+                    adminMenuRelation.setMenuId(item);
+                    adminMenuRelationMapper.insert(adminMenuRelation);
+                });
     }
 
     @Override
-    public void userUpdateDepart(Long id, List<UmsDepartManage> departIds) {
-        umsDepartManageMapper.delete(new LambdaQueryWrapper<UmsDepartManage>().eq(UmsDepartManage::getUserId,id));
-        departIds
-                .stream()
-                .forEach(item->{
-                    UmsDepartManage umsDepartManage = new UmsDepartManage();
-                    umsDepartManage.setDepartId(item.getDepartId());
-                    umsDepartManage.setUserId(id);
-                    umsDepartManage.setIsLeader(item.getIsLeader());
-                    umsDepartManage.setCreateTime(new Date());
-                    umsDepartManageMapper.insert(umsDepartManage);
-                });
+    @Transactional(rollbackFor = Exception.class)
+    public void userUpdateDepart(Long userId,Long departId) {
+        umsDepartManageMapper.delete(new LambdaQueryWrapper<UmsDepartManage>().eq(UmsDepartManage::getUserId,userId));
+        UmsDepartManage umsDepartManage = new UmsDepartManage();
+        umsDepartManage.setUserId(userId);
+        umsDepartManage.setCreateTime(new Date());
+        umsDepartManage.setDepartId(departId);
+        umsDepartManageMapper.insert(umsDepartManage);
+        UmsAdmin umsAdmin = new UmsAdmin();
+        umsAdmin.setDepartmentId(departId);
+        umsAdmin.setId(userId);
+        umsAdminService.updateById(umsAdmin);
     }
 }
\ No newline at end of file
diff --git a/ycl-common/src/main/resources/mapper/depart/UmsDepartMapper.xml b/ycl-common/src/main/resources/mapper/depart/UmsDepartMapper.xml
index d600e03..e2b5f47 100644
--- a/ycl-common/src/main/resources/mapper/depart/UmsDepartMapper.xml
+++ b/ycl-common/src/main/resources/mapper/depart/UmsDepartMapper.xml
@@ -61,5 +61,37 @@
         left join ums_depart as pd on t_0.parent_id = pd.id
     </select>
 
+    <select id="selectSurplusUser" resultType="com.ycl.entity.user.UmsAdmin">
+        SELECT
+            t.id,
+            t3.username
+        FROM
+            ( SELECT t1.id FROM ums_admin t1 UNION ALL SELECT t2.user_id FROM ums_depart_manager t2 ) t
+                LEFT JOIN ums_admin t3  on t3.id =t.id
+        GROUP BY
+            id
+        HAVING
+            count( * )= 1
+    </select>
 
+    <select id="selectSurplusUserAndExistUser" resultType="com.ycl.entity.user.UmsAdmin" parameterType="java.lang.Long">
+        SELECT
+            t4.id,
+            t4.username
+        FROM
+            ums_depart_manager t3
+                LEFT JOIN ums_admin t4 ON t3.user_id = t4.id
+        WHERE
+            t3.depart_id = #{id} UNION ALL
+        SELECT
+            t.id,
+            t3.username
+        FROM
+            ( SELECT t1.id FROM ums_admin t1 UNION ALL SELECT t2.user_id FROM ums_depart_manager t2 ) t
+                LEFT JOIN ums_admin t3 ON t3.id = t.id
+        GROUP BY
+            id
+        HAVING
+            count( * )= 1
+    </select>
 </mapper>

--
Gitblit v1.8.0