Browse Source

部门管理相关接口修改,增加部门分管领导设置

chenjun 1 year ago
parent
commit
8e52646ef5

+ 20 - 1
zjugis-module-system/zjugis-module-system-biz/src/main/java/com/zjugis/module/system/controller/admin/dept/DeptController.java

@@ -1,11 +1,16 @@
 package com.zjugis.module.system.controller.admin.dept;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.zjugis.framework.common.enums.CommonStatusEnum;
 import com.zjugis.framework.common.pojo.CommonResult;
+import com.zjugis.framework.common.util.collection.CollectionUtils;
+import com.zjugis.module.system.api.dept.dto.DeptRespDTO;
 import com.zjugis.module.system.controller.admin.dept.vo.dept.*;
 import com.zjugis.module.system.convert.dept.DeptConvert;
 import com.zjugis.module.system.dal.dataobject.dept.DeptDO;
+import com.zjugis.module.system.dal.dataobject.dept.DeptLeaderDO;
 import com.zjugis.module.system.dal.dataobject.user.AdminUserDO;
+import com.zjugis.module.system.service.dept.DeptLeaderService;
 import com.zjugis.module.system.service.dept.DeptService;
 import com.zjugis.module.system.service.user.AdminUserService;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -19,9 +24,11 @@ import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import static com.zjugis.framework.common.pojo.CommonResult.success;
+import static com.zjugis.framework.common.util.collection.CollectionUtils.convertSet;
 
 @Tag(name = "管理后台 - 部门")
 @RestController
@@ -33,6 +40,8 @@ public class DeptController {
     private DeptService deptService;
     @Resource
     private AdminUserService userService;
+    @Resource
+    private DeptLeaderService deptLeaderService;
 
     @PostMapping("create")
     @Operation(summary = "创建部门")
@@ -64,8 +73,18 @@ public class DeptController {
     @PreAuthorize("@ss.hasPermission('system:dept:query')")
     public CommonResult<List<DeptRespVO>> getDeptList(DeptListReqVO reqVO) {
         List<DeptDO> list = deptService.getDeptList(reqVO);
+        Set<String> ids = convertSet(list, DeptDO::getId);
+        Map<String, DeptLeaderDO> stringDeptLeaderDOMap = CollectionUtils.convertMap(deptLeaderService.getDeptLeaderList(ids), DeptLeaderDO::getDeptId);
         list.sort(Comparator.comparing(DeptDO::getSort));
-        return success(DeptConvert.INSTANCE.convertList(list));
+        List<DeptRespVO> result = DeptConvert.INSTANCE.convertList(list);
+        result.forEach(deptRespVO -> {
+            DeptLeaderDO deptLeaderDO = stringDeptLeaderDOMap.get(deptRespVO.getId());
+            if(ObjectUtil.isNotNull(deptLeaderDO)){
+                String deptLeaderUserId = deptLeaderDO.getUserId();
+                deptRespVO.setDeptLeaderUserId(deptLeaderUserId);
+            }
+        });
+        return success(result);
     }
 
     @GetMapping("/list-all-simple")

+ 3 - 0
zjugis-module-system/zjugis-module-system-biz/src/main/java/com/zjugis/module/system/controller/admin/dept/vo/dept/DeptRespVO.java

@@ -21,4 +21,7 @@ public class DeptRespVO extends DeptBaseVO {
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
     private LocalDateTime createTime;
 
+    @Schema(description = "分管领导用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    private String deptLeaderUserId;
+
 }

+ 2 - 0
zjugis-module-system/zjugis-module-system-biz/src/main/java/com/zjugis/module/system/controller/admin/dept/vo/dept/DeptUpdateReqVO.java

@@ -16,4 +16,6 @@ public class DeptUpdateReqVO extends DeptBaseVO {
     @NotNull(message = "部门编号不能为空")
     private String id;
 
+    @Schema(description = "分管领导用户ID")
+    private String deptLeaderUserId;
 }

+ 9 - 0
zjugis-module-system/zjugis-module-system-biz/src/main/java/com/zjugis/module/system/dal/mysql/dept/DeptLeaderMapper.java

@@ -1,9 +1,13 @@
 package com.zjugis.module.system.dal.mysql.dept;
 
 import com.zjugis.framework.mybatis.core.mapper.BaseMapperX;
+import com.zjugis.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.zjugis.module.system.dal.dataobject.dept.DeptLeaderDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.Collection;
+import java.util.List;
+
 /**
  * @Author 陈俊
  * @Date 2023/11/30 14:37
@@ -14,4 +18,9 @@ public interface DeptLeaderMapper extends BaseMapperX<DeptLeaderDO> {
     default DeptLeaderDO getDeptLeaderByDeptId(String deptId) {
         return selectOne(DeptLeaderDO::getDeptId, deptId);
     }
+
+    default List<DeptLeaderDO> getDeptLeaderList(Collection<String> ids) {
+        return selectList(new LambdaQueryWrapperX<DeptLeaderDO>()
+                .in(DeptLeaderDO::getDeptId, ids));
+    }
 }

+ 13 - 0
zjugis-module-system/zjugis-module-system-biz/src/main/java/com/zjugis/module/system/service/dept/DeptLeaderService.java

@@ -2,8 +2,12 @@ package com.zjugis.module.system.service.dept;
 
 import com.zjugis.module.system.controller.admin.dept.vo.deptleader.DeptLeaderCreateReqVO;
 import com.zjugis.module.system.controller.admin.dept.vo.deptleader.DeptLeaderUpdateReqVO;
+import com.zjugis.module.system.dal.dataobject.dept.DeptDO;
 import com.zjugis.module.system.dal.dataobject.dept.DeptLeaderDO;
 
+import java.util.Collection;
+import java.util.List;
+
 /**
  * @Author 陈俊
  * @Date 2023/11/30 14:32
@@ -48,4 +52,13 @@ public interface DeptLeaderService {
      * @return
      */
     DeptLeaderDO getDeptLeaderByDeptId(String deptId);
+
+
+    /**
+     * 获得部门分管领导信息数组
+     *
+     * @param ids 部门编号数组
+     * @return 部门分管领导信息数组
+     */
+    List<DeptLeaderDO> getDeptLeaderList(Collection<String> ids);
 }

+ 23 - 2
zjugis-module-system/zjugis-module-system-biz/src/main/java/com/zjugis/module/system/service/dept/DeptLeaderServiceImpl.java

@@ -1,5 +1,7 @@
 package com.zjugis.module.system.service.dept;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.zjugis.module.system.controller.admin.dept.vo.deptleader.DeptLeaderCreateReqVO;
 import com.zjugis.module.system.controller.admin.dept.vo.deptleader.DeptLeaderUpdateReqVO;
 import com.zjugis.module.system.convert.dept.DeptLeaderConvert;
@@ -9,6 +11,9 @@ import com.zjugis.module.system.dal.mysql.dept.DeptLeaderMapper;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 
 /**
  * @Author 陈俊
@@ -32,8 +37,16 @@ public class DeptLeaderServiceImpl implements DeptLeaderService {
     @Override
     public void updateDeptLeader(DeptLeaderUpdateReqVO reqVO) {
         // 部门分管领导
-        DeptLeaderDO updateObj = DeptLeaderConvert.INSTANCE.convert(reqVO);
-        deptLeaderMapper.updateById(updateObj);
+        DeptLeaderDO leader = getDeptLeaderByDeptId(reqVO.getDeptId());
+        if(ObjectUtil.isNotNull(leader)){
+            leader.setUserId(reqVO.getUserId());
+            deptLeaderMapper.updateById(leader);
+        }else{
+            DeptLeaderDO newEntity = new DeptLeaderDO();
+            newEntity.setDeptId(reqVO.getDeptId());
+            newEntity.setUserId(reqVO.getUserId());
+            deptLeaderMapper.insert(newEntity);
+        }
     }
 
     @Override
@@ -51,4 +64,12 @@ public class DeptLeaderServiceImpl implements DeptLeaderService {
     public DeptLeaderDO getDeptLeaderByDeptId(String deptId) {
         return deptLeaderMapper.getDeptLeaderByDeptId(deptId);
     }
+
+    @Override
+    public List<DeptLeaderDO> getDeptLeaderList(Collection<String> ids) {
+        if (CollUtil.isEmpty(ids)) {
+            return Collections.emptyList();
+        }
+        return deptLeaderMapper.getDeptLeaderList(ids);
+    }
 }

+ 7 - 0
zjugis-module-system/zjugis-module-system-biz/src/main/java/com/zjugis/module/system/service/dept/DeptServiceImpl.java

@@ -7,6 +7,7 @@ import com.zjugis.framework.datapermission.core.annotation.DataPermission;
 import com.zjugis.module.system.controller.admin.dept.vo.dept.DeptCreateReqVO;
 import com.zjugis.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
 import com.zjugis.module.system.controller.admin.dept.vo.dept.DeptUpdateReqVO;
+import com.zjugis.module.system.controller.admin.dept.vo.deptleader.DeptLeaderUpdateReqVO;
 import com.zjugis.module.system.convert.dept.DeptConvert;
 import com.zjugis.module.system.dal.dataobject.dept.DeptDO;
 import com.zjugis.module.system.dal.dataobject.dept.DeptLeaderDO;
@@ -20,6 +21,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
@@ -64,6 +66,7 @@ public class DeptServiceImpl implements DeptService {
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     @CacheEvict(cacheNames = RedisKeyConstants.DEPT_CHILDREN_ID_LIST,
             allEntries = true) // allEntries 清空所有缓存,因为操作一个部门,涉及到多个缓存
     public void updateDept(DeptUpdateReqVO reqVO) {
@@ -74,6 +77,10 @@ public class DeptServiceImpl implements DeptService {
         validateForCreateOrUpdate(reqVO.getId(), reqVO.getParentId(), reqVO.getName());
         // 更新部门
         DeptDO updateObj = DeptConvert.INSTANCE.convert(reqVO);
+        DeptLeaderUpdateReqVO leaderUpdateReqVO = new DeptLeaderUpdateReqVO();
+        leaderUpdateReqVO.setDeptId(reqVO.getId());
+        leaderUpdateReqVO.setUserId(reqVO.getDeptLeaderUserId());
+        deptLeaderService.updateDeptLeader(leaderUpdateReqVO);
         deptMapper.updateById(updateObj);
     }