From b29eb854c188531665b9b5c893570504a42c4264 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Thu, 5 Dec 2024 10:35:47 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(bpm):=20=E5=A2=9E=E5=8A=A0=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=9B=A2=E9=98=9F=E6=88=90=E5=91=98=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在项目创建请求和响应对象中添加团队成员字段 - 更新项目详情接口,支持显示团队成员名称 - 优化项目查询接口,改进部门参与条件 --- .../admin/oa/BpmOAProjectController.java | 22 +++++++++---------- .../vo/project/BpmOAProjectCreateReqVO.java | 3 +++ .../oa/vo/project/BpmOAProjectRespVO.java | 6 +++++ .../bpm/dal/dataobject/oa/BpmOAProjectDO.java | 6 +++++ 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProjectController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProjectController.java index a82f7744..6120c571 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProjectController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProjectController.java @@ -65,30 +65,30 @@ public class BpmOAProjectController { BpmOAProjectRespVO respVO = BeanUtils.toBean(project, BpmOAProjectRespVO.class); if (respVO != null) { + // 获取项目中所有人员的用户编号列表 + Set userIds = respVO.getStaff() == null ? new HashSet<>() : respVO.getStaff(); + userIds.add(respVO.getDirectorUserId()); // 获取项目中所有部门编号列表 Set deptIds = respVO.getParticipationDept() == null ? new HashSet<>() : respVO.getParticipationDept(); deptIds.add(respVO.getResponsibleDept()); // 获取所有用户信息 - AdminUserRespDTO userRespDTO = userApi.getUser(respVO.getDirectorUserId()).getCheckedData(); + Map userMap = userApi.getUserMap(userIds); // 获取所有部门信息 - List deptDOS = deptApi.getDeptList(deptIds).getCheckedData(); - Map deptMap = convertMap(deptDOS, DeptRespDTO::getId); + Map deptMap = deptApi.getDeptMap(deptIds); // 设置责任人名称 - respVO.setDirectorUserName(userRespDTO.getNickname()); - - // 筛选出不是责任人部门的部门信息 - List deptVOs = deptDOS.stream() - .filter(dept -> !dept.getId().equals(respVO.getResponsibleDept())) - .distinct() - .collect(Collectors.toList()); + respVO.setDirectorUserName(userMap.get(respVO.getDirectorUserId()).getNickname()); + // 设置项目人员名称 + userMap.remove(respVO.getDirectorUserId()); + respVO.setStaffName(userMap.values().stream().map(AdminUserRespDTO::getNickname).collect(Collectors.joining("、"))); // 设置责任部门名称 respVO.setResponsibleDeptName(deptMap.get(respVO.getResponsibleDept()).getName()); // 拼接参与部门名称 - respVO.setParticipationDeptName(deptVOs.stream().map(DeptRespDTO::getName).collect(Collectors.joining("、"))); + deptMap.remove(respVO.getResponsibleDept()); + respVO.setParticipationDeptName(deptMap.values().stream().map(DeptRespDTO::getName).collect(Collectors.joining("、"))); } return success(respVO); diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/project/BpmOAProjectCreateReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/project/BpmOAProjectCreateReqVO.java index d8fcfdc0..00355316 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/project/BpmOAProjectCreateReqVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/project/BpmOAProjectCreateReqVO.java @@ -46,6 +46,9 @@ public class BpmOAProjectCreateReqVO { @NotNull(message = "责任人不能为空") private Long directorUserId; + @Schema(description = "团队成员") + private Set staff; + @Schema(description = "项目开始日期", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "项目开始日期不能为空") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/project/BpmOAProjectRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/project/BpmOAProjectRespVO.java index 7579630c..2045a40e 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/project/BpmOAProjectRespVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/project/BpmOAProjectRespVO.java @@ -51,6 +51,12 @@ public class BpmOAProjectRespVO extends BpmOABaseRespVO { @Schema(description = "责任人名称", requiredMode = Schema.RequiredMode.REQUIRED) private String directorUserName; + @Schema(description = "团队成员") + private Set staff; + + @Schema(description = "团队成员名称") + private String staffName; + @Schema(description = "项目开始日期", requiredMode = Schema.RequiredMode.REQUIRED) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) private LocalDate startDate; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProjectDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProjectDO.java index 09546518..1c55dc48 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProjectDO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProjectDO.java @@ -68,6 +68,12 @@ public class BpmOAProjectDO extends BaseDO { */ private Long directorUserId; + /** + * 参与人员 + */ + @TableField(typeHandler = JsonLongSetTypeHandler.class) + private Set staff; + /** * 项目开始日期 */ From bf21eb7042cc4c2d49d9c88c6e19a8d44e904213 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Thu, 5 Dec 2024 10:36:00 +0800 Subject: [PATCH 2/2] =?UTF-8?q?refactor(system):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=AE=A1=E7=90=86=E7=9B=B8=E5=85=B3=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 注释掉 ProjectController 中的冗余代码 - 优化 ProjectMapper 中的查询条件,增加空值检查 --- .../admin/project/ProjectController.java | 64 ++++++++----------- .../dal/mysql/project/ProjectMapper.java | 6 +- 2 files changed, 29 insertions(+), 41 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/project/ProjectController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/project/ProjectController.java index 45ed5562..9d238ce2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/project/ProjectController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/project/ProjectController.java @@ -77,44 +77,32 @@ public class ProjectController { public CommonResult getProject(@RequestParam("id") Long id) { ProjectDO project = projectService.getProject(id); ProjectRespVO respVO = BeanUtils.toBean(project, ProjectRespVO.class); - if (respVO != null) { - // 获取项目中所有人员的用户编号列表 - Set userIds = respVO.getStaff() == null ? new HashSet<>() : respVO.getStaff(); - userIds.add(respVO.getDirectorUserId()); - - // 获取项目中所有部门编号列表 - Set deptIds = respVO.getParticipationDept() == null ? new HashSet<>() : respVO.getParticipationDept(); - deptIds.add(respVO.getResponsibleDept()); - - // 获取所有用户信息 - List userDOS = userService.getUserList(userIds); - Map userMap = convertMap(userDOS, AdminUserDO::getId); - // 获取所有部门信息 - List deptDOS = deptService.getDeptList(deptIds); - Map deptMap = convertMap(deptDOS, DeptDO::getId); - - // 筛选出不是责任人的用户信息 - List userVOs = userDOS.stream() - .filter(user -> !user.getId().equals(respVO.getDirectorUserId())) - .distinct() - .collect(Collectors.toList()); - - // 设置责任人名称 - respVO.setDirectorUserName(userMap.get(respVO.getDirectorUserId()).getNickname()); - // 拼接项目人员名称 - respVO.setStaffName(userVOs.stream().map(AdminUserDO::getNickname).collect(Collectors.joining("、"))); - - // 筛选出不是责任人部门的部门信息 - List deptVOs = deptDOS.stream() - .filter(dept -> !dept.getId().equals(respVO.getResponsibleDept())) - .distinct() - .collect(Collectors.toList()); - - // 设置责任部门名称 - respVO.setResponsibleDeptName(deptMap.get(respVO.getResponsibleDept()).getName()); - // 拼接参与部门名称 - respVO.setParticipationDeptName(deptVOs.stream().map(DeptDO::getName).collect(Collectors.joining("、"))); - } +// if (respVO != null) { +// // 获取项目中所有人员的用户编号列表 +// Set userIds = respVO.getStaff() == null ? new HashSet<>() : respVO.getStaff(); +// userIds.add(respVO.getDirectorUserId()); +// +// // 获取项目中所有部门编号列表 +// Set deptIds = respVO.getParticipationDept() == null ? new HashSet<>() : respVO.getParticipationDept(); +// deptIds.add(respVO.getResponsibleDept()); +// +// // 获取所有用户信息 +// Map userMap = userService.getUserMap(userIds); +// // 获取所有部门信息 +// Map deptMap = deptService.getDeptMap(deptIds); +// +// // 设置责任人名称 +// respVO.setDirectorUserName(userMap.get(respVO.getDirectorUserId()).getNickname()); +// // 拼接项目人员名称 +// userMap.remove(respVO.getDirectorUserId()); +// respVO.setStaffName(userMap.values().stream().map(AdminUserDO::getNickname).collect(Collectors.joining("、"))); +// +// // 设置责任部门名称 +// respVO.setResponsibleDeptName(deptMap.get(respVO.getResponsibleDept()).getName()); +// // 拼接参与部门名称 +// deptMap.remove(respVO.getResponsibleDept()); +// respVO.setParticipationDeptName(deptMap.values().stream().map(DeptDO::getName).collect(Collectors.joining("、"))); +// } return success(respVO); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/project/ProjectMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/project/ProjectMapper.java index d465a17f..d08c3952 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/project/ProjectMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/project/ProjectMapper.java @@ -29,11 +29,11 @@ public interface ProjectMapper extends BaseMapperX { .betweenIfPresent(ProjectDO::getEndDate, reqVO.getEndDate()) .eqIfPresent(ProjectDO::getIsLongTerm, reqVO.getIsLongTerm()) .eqIfPresent(ProjectDO::getStatus, reqVO.getStatus()) - .likeLeft(ProjectDO::getParticipationDept, "-" + reqVO.getParticipationDept()) + .likeLeft(Objects.nonNull(reqVO.getParticipationDept()), ProjectDO::getParticipationDept, "-" + reqVO.getParticipationDept()) .or() - .likeRight(ProjectDO::getParticipationDept, reqVO.getParticipationDept() + "-") + .likeRight(Objects.nonNull(reqVO.getParticipationDept()), ProjectDO::getParticipationDept, reqVO.getParticipationDept() + "-") .or() - .like(ProjectDO::getParticipationDept, "-" + reqVO.getParticipationDept() + "-") + .like(Objects.nonNull(reqVO.getParticipationDept()), ProjectDO::getParticipationDept, "-" + reqVO.getParticipationDept() + "-") .orderByDesc(ProjectDO::getId)); } } \ No newline at end of file