From 2342e227ed28040bfe7065cc94875cb7a1adfa10 Mon Sep 17 00:00:00 2001 From: lbw Date: Fri, 28 Jul 2023 12:52:30 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20Introducing=20new=20features.=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=83=A8=E9=97=A8=E8=B4=9F=E8=B4=A3=E4=BA=BA?= =?UTF-8?q?=E5=B2=97=E4=BD=8D=EF=BC=8C=E6=96=B9=E4=BE=BF=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81=E5=AE=A1=E6=89=B9=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/api/feign/RemoteDeptService.java | 9 ++++ .../admin/controller/SysDeptController.java | 7 ++- .../pigx/admin/service/SysDeptService.java | 7 ++- .../service/impl/SysDeptServiceImpl.java | 45 +++++++++++++++++-- 4 files changed, 62 insertions(+), 6 deletions(-) diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteDeptService.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteDeptService.java index 16f69e18f..6cdab9b04 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteDeptService.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteDeptService.java @@ -24,6 +24,7 @@ import com.pig4cloud.pigx.common.core.constant.ServiceNameConstants; import com.pig4cloud.pigx.common.core.util.R; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import java.util.List; @@ -41,4 +42,12 @@ public interface RemoteDeptService { @GetMapping("/dept/list") R> getAllDept(); + /** + * 通过部门ID获取负责人列表 + * @param deptId 部门ID + * @return 负责人ID列表 + */ + @GetMapping("/dept/leader/{deptId}") + R> getAllDeptLeader(@PathVariable("deptId") Long deptId); + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDeptController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDeptController.java index c8d55a13f..a55c4c24d 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDeptController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDeptController.java @@ -28,13 +28,13 @@ import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel; import com.pig4cloud.pigx.common.log.annotation.SysLog; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; import lombok.AllArgsConstructor; import org.springframework.http.HttpHeaders; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; -import jakarta.validation.Valid; import java.time.LocalDateTime; import java.util.List; @@ -129,6 +129,10 @@ public class SysDeptController { return R.ok(sysDeptService.listDescendant(deptId)); } + @GetMapping(value = "/leader/{deptId}") + public R getAllDeptLeader(@PathVariable Long deptId){ + return R.ok(sysDeptService.listDeptLeader(deptId)); + } /** * 导出部门 * @return @@ -147,7 +151,6 @@ public class SysDeptController { */ @PostMapping("import") public R importDept(@RequestExcel List excelVOList, BindingResult bindingResult) { - return sysDeptService.importDept(excelVOList, bindingResult); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDeptService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDeptService.java index 8c471b000..acb0caa24 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDeptService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDeptService.java @@ -41,7 +41,6 @@ public interface SysDeptService extends IService { /** * 查询部门树菜单 * @param deptName 部门名称 - * @param parentId * @return 树 */ List> selectTree(String deptName, Long parentId); @@ -64,4 +63,10 @@ public interface SysDeptService extends IService { */ List listDescendant(Long deptId); + /** + * 获取部门负责人 + * @param deptId deptId + * @return user id list + */ + List listDeptLeader(Long deptId); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptServiceImpl.java index b2733cf64..b95dd2373 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptServiceImpl.java @@ -27,8 +27,14 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.pig4cloud.pigx.admin.api.entity.SysDept; +import com.pig4cloud.pigx.admin.api.entity.SysPost; +import com.pig4cloud.pigx.admin.api.entity.SysUser; +import com.pig4cloud.pigx.admin.api.entity.SysUserPost; import com.pig4cloud.pigx.admin.api.vo.DeptExcelVo; import com.pig4cloud.pigx.admin.mapper.SysDeptMapper; +import com.pig4cloud.pigx.admin.mapper.SysPostMapper; +import com.pig4cloud.pigx.admin.mapper.SysUserMapper; +import com.pig4cloud.pigx.admin.mapper.SysUserPostMapper; import com.pig4cloud.pigx.admin.service.SysDeptService; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.data.datascope.DataScope; @@ -54,8 +60,14 @@ import java.util.stream.Collectors; @AllArgsConstructor public class SysDeptServiceImpl extends ServiceImpl implements SysDeptService { + private final SysUserMapper userMapper; + private final SysDeptMapper deptMapper; + private final SysPostMapper postMapper; + + private final SysUserPostMapper userPostMapper; + /** * 删除部门 * @param id 部门 ID @@ -198,12 +210,39 @@ public class SysDeptServiceImpl extends ServiceImpl impl recursiveDept(allDeptList, deptId, resDeptList); // 添加当前节点 - resDeptList.addAll(allDeptList.stream() - .filter(sysDept -> deptId.equals(sysDept.getDeptId())) - .collect(Collectors.toList())); + resDeptList.addAll(allDeptList.stream().filter(sysDept -> deptId.equals(sysDept.getDeptId())).toList()); return resDeptList; } + /** + * 获取部门负责人 + * + * 1. 根据dept 查询用户 2. 筛选用户列表中 post + * @param deptId deptId + * @return user id list + */ + @Override + public List listDeptLeader(Long deptId) { + List sysUserList = userMapper + .selectList(Wrappers.lambdaQuery().eq(SysUser::getDeptId, deptId)); + if (CollUtil.isEmpty(sysUserList)) { + return null; + } + + SysPost deptLeader = postMapper + .selectOne(Wrappers.lambdaQuery().eq(SysPost::getPostCode, "DEPT_LEADER")); + if (deptLeader == null) { + return null; + } + + List userIdList = sysUserList.stream().map(SysUser::getUserId).toList(); + return userPostMapper.selectList(Wrappers.lambdaQuery().in(SysUserPost::getUserId, userIdList)) + .stream() + .filter(post -> Objects.equals(post.getPostId(), deptLeader.getPostId())) + .map(SysUserPost::getUserId) + .toList(); + } + /** * 递归查询所有子节点。 * @param allDeptList 所有部门列表