diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/cal/team/MesCalTeamMemberController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/cal/team/MesCalTeamMemberController.java index bef76d9..78bc15d 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/cal/team/MesCalTeamMemberController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/cal/team/MesCalTeamMemberController.java @@ -1,13 +1,17 @@ package cn.iocoder.yudao.module.mes.controller.admin.cal.team; +import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.cal.team.vo.member.MesCalTeamMemberPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.cal.team.vo.member.MesCalTeamMemberRespVO; import cn.iocoder.yudao.module.mes.controller.admin.cal.team.vo.member.MesCalTeamMemberSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.cal.team.MesCalTeamMemberDO; import cn.iocoder.yudao.module.mes.service.cal.team.MesCalTeamMemberService; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -18,9 +22,12 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.Collection; +import java.util.Collections; import java.util.List; +import java.util.Map; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; @Tag(name = "管理后台 - MES 班组成员") @RestController @@ -30,6 +37,8 @@ public class MesCalTeamMemberController { @Resource private MesCalTeamMemberService teamMemberService; + @Resource + private AdminUserApi adminUserApi; @PostMapping("/create") @Operation(summary = "创建班组成员") @@ -64,25 +73,36 @@ public class MesCalTeamMemberController { return success(BeanUtils.toBean(pageResult, MesCalTeamMemberRespVO.class)); } - // TODO @AI:getTeamMemberListByTeam、getTeamMemberListByTeamIds 融合下,允许传递 teamId、teamIds; - @GetMapping("/list-by-team") - @Operation(summary = "获得指定班组的成员列表") - @Parameter(name = "teamId", description = "班组编号", required = true) + @Operation(summary = "获得班组成员列表", description = "支持单个 teamId 或多个 teamIds") @PreAuthorize("@ss.hasPermission('mes:cal-team:query')") - public CommonResult> getTeamMemberListByTeam(@RequestParam("teamId") Long teamId) { - List list = teamMemberService.getTeamMemberListByTeamId(teamId); - return success(BeanUtils.toBean(list, MesCalTeamMemberRespVO.class)); + public CommonResult> getTeamMemberListByTeam( + @RequestParam(value = "teamId", required = false) Long teamId, + @RequestParam(value = "teamIds", required = false) Collection teamIds) { + List list; + if (CollUtil.isNotEmpty(teamIds)) { + list = teamMemberService.getTeamMemberListByTeamIds(teamIds); + } else if (teamId != null) { + list = teamMemberService.getTeamMemberListByTeamId(teamId); + } else { + list = Collections.emptyList(); + } + return success(buildMemberRespVOList(list)); } - @GetMapping("/list-by-team-ids") - @Operation(summary = "获得指定多个班组的成员列表") - @Parameter(name = "teamIds", description = "班组编号列表", required = true) - @PreAuthorize("@ss.hasPermission('mes:cal-team:query')") - public CommonResult> getTeamMemberListByTeamIds( - @RequestParam("teamIds") Collection teamIds) { - List list = teamMemberService.getTeamMemberListByTeamIds(teamIds); - return success(BeanUtils.toBean(list, MesCalTeamMemberRespVO.class)); + // ==================== 拼接 VO ==================== + + private List buildMemberRespVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + Map userMap = adminUserApi.getUserMap( + convertSet(list, MesCalTeamMemberDO::getUserId)); + return BeanUtils.toBean(list, MesCalTeamMemberRespVO.class, vo -> + MapUtils.findAndThen(userMap, vo.getUserId(), user -> { + vo.setNickname(user.getNickname()); + vo.setTelephone(user.getMobile()); + })); } } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/cal/team/MesCalTeamMemberMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/cal/team/MesCalTeamMemberMapper.java index 1588d3d..ff9cd8b 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/cal/team/MesCalTeamMemberMapper.java +++ b/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 return selectList(MesCalTeamMemberDO::getTeamId, teamIds); } - default MesCalTeamMemberDO selectByUserIdExcludeId(Long userId, Long excludeId) { - return selectOne(new LambdaQueryWrapperX() - .eq(MesCalTeamMemberDO::getUserId, userId) - .neIfPresent(MesCalTeamMemberDO::getId, excludeId)); + default MesCalTeamMemberDO selectByUserId(Long userId) { + return selectOne(MesCalTeamMemberDO::getUserId, userId); } default void deleteByTeamId(Long teamId) { diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/cal/team/MesCalTeamMemberServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/cal/team/MesCalTeamMemberServiceImpl.java index 36cabd1..76e7fa9 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/cal/team/MesCalTeamMemberServiceImpl.java +++ b/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 { // 1.1 校验班组存在 teamService.validateTeamExists(createReqVO.getTeamId()); // 1.2 校验用户未分配到其他班组 - validateUserUnique(null, createReqVO.getUserId()); + validateUserUnique(createReqVO.getUserId()); // 2. 插入 MesCalTeamMemberDO member = BeanUtils.toBean(createReqVO, MesCalTeamMemberDO.class); @@ -78,19 +78,14 @@ public class MesCalTeamMemberServiceImpl implements MesCalTeamMemberService { teamMemberMapper.deleteByTeamId(teamId); } - // TODO @AI:无需返回; - private MesCalTeamMemberDO validateTeamMemberExists(Long id) { - MesCalTeamMemberDO member = teamMemberMapper.selectById(id); - if (member == null) { + private void validateTeamMemberExists(Long id) { + if (teamMemberMapper.selectById(id) == null) { throw exception(CAL_TEAM_MEMBER_NOT_EXISTS); } - return member; } - // TODO @AI:这里的 excludeId 可以去掉 - private void validateUserUnique(Long excludeId, Long userId) { - MesCalTeamMemberDO member = teamMemberMapper.selectByUserIdExcludeId(userId, excludeId); - if (member != null) { + private void validateUserUnique(Long userId) { + if (teamMemberMapper.selectByUserId(userId) != null) { throw exception(CAL_TEAM_MEMBER_USER_DUPLICATE); } }