소스 검색

pms 日报 项目 责任人

zhangcl 4 일 전
부모
커밋
a57fb5ab92

+ 2 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoRespVO.java

@@ -7,6 +7,7 @@ import lombok.Data;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.Set;
 
 @Schema(description = "管理后台 - 项目信息 Response VO")
 @Data
@@ -55,7 +56,7 @@ public class IotProjectInfoRespVO {
 
     @Schema(description = "责任人([123,234])")
     @ExcelProperty("责任人([123,234])")
-    private String responsiblePerson;
+    private Set<Long> responsiblePerson;
 
     @Schema(description = "工作量总数")
     @ExcelProperty("工作量总数")

+ 2 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoSaveReqVO.java

@@ -5,6 +5,7 @@ import lombok.Data;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.Set;
 
 @Schema(description = "管理后台 - 项目信息新增/修改 Request VO")
 @Data
@@ -41,8 +42,7 @@ public class IotProjectInfoSaveReqVO {
     private String currency;
 
     @Schema(description = "责任人([123,234])")
-    private String responsiblePerson;
-
+    private Set<Long> responsiblePerson;
 
     @Schema(description = "工作量总数")
     private String workloadTotal;

+ 6 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotprojectinfo/IotProjectInfoDO.java

@@ -2,19 +2,22 @@ package cn.iocoder.yudao.module.pms.dal.dataobject.iotprojectinfo;
 
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import lombok.*;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.Set;
 
 /**
  * 项目信息 DO
  *
  * @author 超级管理员
  */
-@TableName("rq_iot_project_info")
+@TableName(value="rq_iot_project_info", autoResultMap = true)
 @KeySequence("rq_iot_project_info_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -68,7 +71,8 @@ public class IotProjectInfoDO extends BaseDO {
     /**
      * 责任人([123,234])
      */
-    private String responsiblePerson;
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Set<Long> responsiblePerson;
     /**
      * 工作量总数
      */

+ 16 - 4
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java

@@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
@@ -29,10 +30,8 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
 
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -141,6 +140,19 @@ public class UserController {
         return success(UserConvert.INSTANCE.convertSimpleList(list, deptMap));
     }
 
+    @GetMapping("/companyDeptsEmployee")
+    @Operation(summary = "获取公司层级的部门包含的子部门下的所有人员", description = "获取公司层级的部门包含的子部门下的所有人员")
+    public CommonResult<List<UserSimpleRespVO>> companyDeptsEmployee(UserPageReqVO reqVO) {
+        List<AdminUserDO> list = userService.companyDeptsEmployee(reqVO);
+        // 拼接数据
+        AtomicReference<Map<Long, DeptDO>> deptMap = new AtomicReference<>(new HashMap<>());
+        DataPermissionUtils.executeIgnore(() -> {
+            deptMap.set(deptService.getDeptMap(
+                    convertList(list, AdminUserDO::getDeptId)));
+        });
+        return success(UserConvert.INSTANCE.convertSimpleList(list, deptMap.get()));
+    }
+
     @GetMapping("/get")
     @Operation(summary = "获得用户详情")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserPageReqVO.java

@@ -50,4 +50,7 @@ public class UserPageReqVO extends PageParam {
      */
     @Schema(description = "部门编号集合,同时筛选子部门", example = "[1024,123]")
     private List<Long> deptIds;
+
+    @Schema(description = "用户编号集合", example = "[102,123]")
+    private List<Long> userIds;
 }

+ 10 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java

@@ -38,6 +38,16 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
                 .orderByDesc(AdminUserDO::getId));
     }
 
+    default List<AdminUserDO> selectList(UserPageReqVO reqVO) {
+        return selectList(new LambdaQueryWrapperX<AdminUserDO>()
+                .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
+                .likeIfPresent(AdminUserDO::getNickname, reqVO.getNickname())
+                .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
+                .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
+                .inIfPresent(AdminUserDO::getId, reqVO.getUserIds()));
+    }
+
     default List<AdminUserDO> selectSimpleList(Collection<Long> deptIds) {
         return selectList(new LambdaQueryWrapperX<AdminUserDO>()
                 .inIfPresent(AdminUserDO::getDeptId, deptIds));

+ 14 - 5
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.service.dept;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
@@ -27,6 +28,7 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
@@ -264,10 +266,17 @@ public class DeptServiceImpl implements DeptService {
         // 查询当前登录人所属部门
         Long userId = SecurityFrameworkUtils.getLoginUserId();
         AdminUserDO user = userMapper.selectById(userId);
-        Long deptId = user.getDeptId();
-        DeptDO dept = getDept(deptId);
-        System.out.println("当前登录用户所属部门:" + dept.getName());
-
+        AtomicReference<Long> deptId = new AtomicReference<>(user.getDeptId());
+        if (CollUtil.isNotEmpty(reqVO.getDeptIds())) {
+            // 如果传递了参数 则是要查询指定部门的所有子部门
+            reqVO.getDeptIds().forEach(departmentId -> {
+                deptId.set(departmentId);
+            });
+        }
+        DeptDO dept = getDept(deptId.get());
+        if (ObjUtil.isEmpty(dept)) {
+            throw exception(DEPT_NOT_FOUND);
+        }
         // 用于存储最终需要返回的部门列表
         List<DeptDO> resultDepts = new ArrayList<>();
 
@@ -379,7 +388,7 @@ public class DeptServiceImpl implements DeptService {
 
     @Override
     public List<DeptDO> companyLevelChildrenDepts(DeptListReqVO deptListReqVO) {
-        List<DeptDO> companyLevelDepts = companyLevelDepts(null);
+        List<DeptDO> companyLevelDepts = companyLevelDepts(deptListReqVO);
         List<DeptDO> resultDepts = new ArrayList<>();
         // 查询每个公司级部门下的所有子部门
         if (CollUtil.isNotEmpty(companyLevelDepts)) {

+ 8 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java

@@ -241,4 +241,12 @@ public interface AdminUserService {
      * @return 用户列表
      */
     Long batchSetUserPwd();
+
+    /**
+     * 查询指定公司级别部门下所有子部门的人员列表
+     *
+     * @param reqVO 部门id集合
+     * @return 用户列表
+     */
+    List<AdminUserDO> companyDeptsEmployee(UserPageReqVO reqVO);
 }

+ 34 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java

@@ -52,6 +52,7 @@ import javax.validation.ConstraintViolationException;
 import java.io.InputStream;
 import java.time.LocalDateTime;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
@@ -635,6 +636,39 @@ public class AdminUserServiceImpl implements AdminUserService {
         return 0l;
     }
 
+    @Override
+    public List<AdminUserDO> companyDeptsEmployee(UserPageReqVO reqVO) {
+        AtomicReference<List<AdminUserDO>> resultUsers = new AtomicReference<>(new ArrayList<>());
+        if (CollUtil.isNotEmpty(reqVO.getUserIds())) {
+            // 如果传参中有 userIds 则不需要根据部门查询用户 直接查询指定 userIds 对应的用户即可
+            DataPermissionUtils.executeIgnore(() -> {
+                List<AdminUserDO> users = userMapper.selectList(reqVO);
+                resultUsers.set(users);
+            });
+            return resultUsers.get();
+        }
+        if (CollUtil.isEmpty(reqVO.getDeptIds())) {
+            throw exception(DEPT_NOT_FOUND);
+        }
+        DeptListReqVO deptListReqVO = new DeptListReqVO();
+        deptListReqVO.setDeptIds(reqVO.getDeptIds());
+        List<DeptDO> depts = deptService.companyLevelChildrenDepts(deptListReqVO);
+        Set<Long> departmentIds = new HashSet<>();
+        if (CollUtil.isNotEmpty(depts)) {
+            depts.forEach(dept -> {
+                departmentIds.add(dept.getId());
+            });
+            // 查询部门下所有人员
+            DataPermissionUtils.executeIgnore(() -> {
+                List<AdminUserDO> users = userMapper.selectSimpleList(departmentIds);
+                if (CollUtil.isNotEmpty(users)) {
+                    resultUsers.set(users);
+                }
+            });
+        }
+        return resultUsers.get();
+    }
+
     /**
      * 对密码进行加密
      *