Commit e48245ef27184f9b433c5ee95416b56891a90bc3

Authored by YunaiV
1 parent 849324ff

feat(mes): 优化 cal-team 班组成员相关逻辑

- MesCalTeamMemberController:注入 AdminUserApi,合并 list-by-team 与
  list-by-team-ids 为单一接口(支持 teamId / teamIds 参数),新增
  buildMemberRespVOList 方法批量填充用户昵称和手机号
- MesCalTeamMemberServiceImpl:validateTeamMemberExists 改为 void 返回;
  validateUserUnique 去掉冗余的 excludeId 参数
- MesCalTeamMemberMapper:selectByUserIdExcludeId 简化为 selectByUserId
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/cal/team/MesCalTeamMemberController.java
1 1 package cn.iocoder.yudao.module.mes.controller.admin.cal.team;
2 2  
  3 +import cn.hutool.core.collection.CollUtil;
3 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
5 7 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
6 8 import cn.iocoder.yudao.module.mes.controller.admin.cal.team.vo.member.MesCalTeamMemberPageReqVO;
7 9 import cn.iocoder.yudao.module.mes.controller.admin.cal.team.vo.member.MesCalTeamMemberRespVO;
8 10 import cn.iocoder.yudao.module.mes.controller.admin.cal.team.vo.member.MesCalTeamMemberSaveReqVO;
9 11 import cn.iocoder.yudao.module.mes.dal.dataobject.cal.team.MesCalTeamMemberDO;
10 12 import cn.iocoder.yudao.module.mes.service.cal.team.MesCalTeamMemberService;
  13 +import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
  14 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
11 15 import io.swagger.v3.oas.annotations.Operation;
12 16 import io.swagger.v3.oas.annotations.Parameter;
13 17 import io.swagger.v3.oas.annotations.tags.Tag;
... ... @@ -18,9 +22,12 @@ import org.springframework.validation.annotation.Validated;
18 22 import org.springframework.web.bind.annotation.*;
19 23  
20 24 import java.util.Collection;
  25 +import java.util.Collections;
21 26 import java.util.List;
  27 +import java.util.Map;
22 28  
23 29 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  30 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
24 31  
25 32 @Tag(name = "管理后台 - MES 班组成员")
26 33 @RestController
... ... @@ -30,6 +37,8 @@ public class MesCalTeamMemberController {
30 37  
31 38 @Resource
32 39 private MesCalTeamMemberService teamMemberService;
  40 + @Resource
  41 + private AdminUserApi adminUserApi;
33 42  
34 43 @PostMapping("/create")
35 44 @Operation(summary = "创建班组成员")
... ... @@ -64,25 +73,36 @@ public class MesCalTeamMemberController {
64 73 return success(BeanUtils.toBean(pageResult, MesCalTeamMemberRespVO.class));
65 74 }
66 75  
67   - // TODO @AI:getTeamMemberListByTeam、getTeamMemberListByTeamIds 融合下,允许传递 teamId、teamIds;
68   -
69 76 @GetMapping("/list-by-team")
70   - @Operation(summary = "获得指定班组的成员列表")
71   - @Parameter(name = "teamId", description = "班组编号", required = true)
  77 + @Operation(summary = "获得班组成员列表", description = "支持单个 teamId 或多个 teamIds")
72 78 @PreAuthorize("@ss.hasPermission('mes:cal-team:query')")
73   - public CommonResult<List<MesCalTeamMemberRespVO>> getTeamMemberListByTeam(@RequestParam("teamId") Long teamId) {
74   - List<MesCalTeamMemberDO> list = teamMemberService.getTeamMemberListByTeamId(teamId);
75   - return success(BeanUtils.toBean(list, MesCalTeamMemberRespVO.class));
  79 + public CommonResult<List<MesCalTeamMemberRespVO>> getTeamMemberListByTeam(
  80 + @RequestParam(value = "teamId", required = false) Long teamId,
  81 + @RequestParam(value = "teamIds", required = false) Collection<Long> teamIds) {
  82 + List<MesCalTeamMemberDO> list;
  83 + if (CollUtil.isNotEmpty(teamIds)) {
  84 + list = teamMemberService.getTeamMemberListByTeamIds(teamIds);
  85 + } else if (teamId != null) {
  86 + list = teamMemberService.getTeamMemberListByTeamId(teamId);
  87 + } else {
  88 + list = Collections.emptyList();
  89 + }
  90 + return success(buildMemberRespVOList(list));
76 91 }
77 92  
78   - @GetMapping("/list-by-team-ids")
79   - @Operation(summary = "获得指定多个班组的成员列表")
80   - @Parameter(name = "teamIds", description = "班组编号列表", required = true)
81   - @PreAuthorize("@ss.hasPermission('mes:cal-team:query')")
82   - public CommonResult<List<MesCalTeamMemberRespVO>> getTeamMemberListByTeamIds(
83   - @RequestParam("teamIds") Collection<Long> teamIds) {
84   - List<MesCalTeamMemberDO> list = teamMemberService.getTeamMemberListByTeamIds(teamIds);
85   - return success(BeanUtils.toBean(list, MesCalTeamMemberRespVO.class));
  93 + // ==================== 拼接 VO ====================
  94 +
  95 + private List<MesCalTeamMemberRespVO> buildMemberRespVOList(List<MesCalTeamMemberDO> list) {
  96 + if (CollUtil.isEmpty(list)) {
  97 + return Collections.emptyList();
  98 + }
  99 + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
  100 + convertSet(list, MesCalTeamMemberDO::getUserId));
  101 + return BeanUtils.toBean(list, MesCalTeamMemberRespVO.class, vo ->
  102 + MapUtils.findAndThen(userMap, vo.getUserId(), user -> {
  103 + vo.setNickname(user.getNickname());
  104 + vo.setTelephone(user.getMobile());
  105 + }));
86 106 }
87 107  
88 108 }
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/cal/team/MesCalTeamMemberMapper.java
... ... @@ -32,10 +32,8 @@ public interface MesCalTeamMemberMapper extends BaseMapperX&lt;MesCalTeamMemberDO&gt;
32 32 return selectList(MesCalTeamMemberDO::getTeamId, teamIds);
33 33 }
34 34  
35   - default MesCalTeamMemberDO selectByUserIdExcludeId(Long userId, Long excludeId) {
36   - return selectOne(new LambdaQueryWrapperX<MesCalTeamMemberDO>()
37   - .eq(MesCalTeamMemberDO::getUserId, userId)
38   - .neIfPresent(MesCalTeamMemberDO::getId, excludeId));
  35 + default MesCalTeamMemberDO selectByUserId(Long userId) {
  36 + return selectOne(MesCalTeamMemberDO::getUserId, userId);
39 37 }
40 38  
41 39 default void deleteByTeamId(Long teamId) {
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/cal/team/MesCalTeamMemberServiceImpl.java
... ... @@ -37,7 +37,7 @@ public class MesCalTeamMemberServiceImpl implements MesCalTeamMemberService {
37 37 // 1.1 校验班组存在
38 38 teamService.validateTeamExists(createReqVO.getTeamId());
39 39 // 1.2 校验用户未分配到其他班组
40   - validateUserUnique(null, createReqVO.getUserId());
  40 + validateUserUnique(createReqVO.getUserId());
41 41  
42 42 // 2. 插入
43 43 MesCalTeamMemberDO member = BeanUtils.toBean(createReqVO, MesCalTeamMemberDO.class);
... ... @@ -78,19 +78,14 @@ public class MesCalTeamMemberServiceImpl implements MesCalTeamMemberService {
78 78 teamMemberMapper.deleteByTeamId(teamId);
79 79 }
80 80  
81   - // TODO @AI:无需返回;
82   - private MesCalTeamMemberDO validateTeamMemberExists(Long id) {
83   - MesCalTeamMemberDO member = teamMemberMapper.selectById(id);
84   - if (member == null) {
  81 + private void validateTeamMemberExists(Long id) {
  82 + if (teamMemberMapper.selectById(id) == null) {
85 83 throw exception(CAL_TEAM_MEMBER_NOT_EXISTS);
86 84 }
87   - return member;
88 85 }
89 86  
90   - // TODO @AI:这里的 excludeId 可以去掉
91   - private void validateUserUnique(Long excludeId, Long userId) {
92   - MesCalTeamMemberDO member = teamMemberMapper.selectByUserIdExcludeId(userId, excludeId);
93   - if (member != null) {
  87 + private void validateUserUnique(Long userId) {
  88 + if (teamMemberMapper.selectByUserId(userId) != null) {
94 89 throw exception(CAL_TEAM_MEMBER_USER_DUPLICATE);
95 90 }
96 91 }
... ...