diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/organization/vo/OrganizationSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/organization/vo/OrganizationSaveReqVO.java index fd51836b7..03384b9fc 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/organization/vo/OrganizationSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/organization/vo/OrganizationSaveReqVO.java @@ -38,7 +38,6 @@ public class OrganizationSaveReqVO { private String email; @Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED) - private Boolean isEnable; @Schema(description = "组织状态", example = "1") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/WorkTeamController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/WorkTeamController.java index 71ff6ab4e..333d87a34 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/WorkTeamController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/WorkTeamController.java @@ -6,12 +6,14 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.WorkTeamDetailRespVO; import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.WorkTeamPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.WorkTeamRespVO; import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.WorkTeamSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDO; import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDetailDO; import cn.iocoder.yudao.module.mes.service.workteam.WorkTeamService; +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; @@ -74,8 +76,8 @@ public class WorkTeamController { @Operation(summary = "获得生产班组分页") @PreAuthorize("@ss.hasPermission('mes:work-team:query')") public CommonResult> getWorkTeamPage(@Valid WorkTeamPageReqVO pageReqVO) { - PageResult pageResult = workTeamService.getWorkTeamPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, WorkTeamRespVO.class)); + PageResult pageResult = workTeamService.getWorkTeamPage(pageReqVO); + return success(pageResult); } @GetMapping("/export-excel") @@ -85,10 +87,10 @@ public class WorkTeamController { public void exportWorkTeamExcel(@Valid WorkTeamPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = workTeamService.getWorkTeamPage(pageReqVO).getList(); + List list = workTeamService.getWorkTeamPage(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "生产班组.xls", "数据", WorkTeamRespVO.class, - BeanUtils.toBean(list, WorkTeamRespVO.class)); + list); } // ==================== 子表(班组成员) ==================== @@ -97,8 +99,8 @@ public class WorkTeamController { @Operation(summary = "获得班组成员分页") @Parameter(name = "workTeamId", description = "班组id") @PreAuthorize("@ss.hasPermission('mes:work-team:query')") - public CommonResult> getWorkTeamDetailPage(PageParam pageReqVO, - @RequestParam("workTeamId") Long workTeamId) { + public CommonResult> getWorkTeamDetailPage(PageParam pageReqVO, + @RequestParam("workTeamId") Long workTeamId) { return success(workTeamService.getWorkTeamDetailPage(pageReqVO, workTeamId)); } @@ -134,4 +136,10 @@ public class WorkTeamController { return success(workTeamService.getWorkTeamDetail(id)); } + @GetMapping("/work-team-detail/getUserList") + @Operation(summary = "获得班组成员") + @Parameter(name = "processType", description = "班组类型", required = true) + public CommonResult> getUserList(@RequestParam("processType") String processType) { + return success(workTeamService.getUserList(processType)); + } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/ProcessTypeEnum.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/ProcessTypeEnum.java new file mode 100644 index 000000000..82103f683 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/ProcessTypeEnum.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.mes.controller.admin.workteam.vo; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 工序类型枚举**/ +@Getter +@AllArgsConstructor +public enum ProcessTypeEnum { + + 制浆("zhijiang"), + 成型("chengxing"), + 烘干("honggan"), + 转移("zhuanyi"), + 加湿("jiashi"), + 热压("reya"), + 切边("qiebian"), + 品检("pinjian"), + 打包("dabao"), + 塑封("sufeng"), + 贴标("tiebiao"); + + private final String value; + + // 一个可选的方法,用于根据整数值获取对应的枚举实例 + public static ProcessTypeEnum fromValue(String value) { + for (ProcessTypeEnum status : ProcessTypeEnum.values()) { + if (status.value.equals(value)) { + return status; + } + } + throw new IllegalArgumentException("Unknown value: " + value); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamDetailRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamDetailRespVO.java new file mode 100644 index 000000000..a514bf796 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamDetailRespVO.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.module.mes.controller.admin.workteam.vo; + +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 生产班组 Response VO") +@Data +@ExcelIgnoreUnannotated +public class WorkTeamDetailRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19207") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "备注", example = "随便") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + /** + * 班组id + */ + @Schema(description = "班组类型", example = "1白班,2夜班") + private Long workTeamId; + /** + * 用户ID + */ + @Schema(description = "班组类型", example = "1白班,2夜班") + private Long userId; + @Schema(description = "班组类型", example = "1白班,2夜班") + @ExcelProperty("班组类型") + @DictFormat("mes_group_type") + private String userName; + /** + * 角色 + *

+ * 枚举 {@link TODO mes_work_team_user_role 对应的类} + */ + @Schema(description = "角色", example = "1白班,2夜班") + @ExcelProperty("角色") + @DictFormat("mes_work_team_user_role") + private String userRoleName; + + @Schema(description = "角色", example = "1白班,2夜班") + private Integer userRole; +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamPageReqVO.java index 002e49a64..c419035c5 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamPageReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamPageReqVO.java @@ -25,6 +25,8 @@ public class WorkTeamPageReqVO extends PageParam { @Schema(description = "工序类型", example = "2") private String teamType; + @Schema(description = "班组类型", example = "1白班,2夜班") + private String groupType; @Schema(description = "备注", example = "随便") private String remark; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamRespVO.java index a3d59e251..ff761ac8c 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamRespVO.java @@ -23,14 +23,21 @@ public class WorkTeamRespVO { private String teamName; @Schema(description = "组长ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17857") - @ExcelProperty("组长ID") private Long teamLeaderId; + @Schema(description = "组长", requiredMode = Schema.RequiredMode.REQUIRED, example = "17857") + @ExcelProperty("组长") + private String teamLeaderName; @Schema(description = "工序类型", example = "2") @ExcelProperty(value = "工序类型", converter = DictConvert.class) @DictFormat("mes_org_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 private String teamType; + @Schema(description = "班组类型", example = "1白班,2夜班") + @ExcelProperty("班组类型") + @DictFormat("mes_group_type") + private String groupType; + @Schema(description = "备注", example = "随便") @ExcelProperty("备注") private String remark; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamSaveReqVO.java index 2653058f0..5a6e2f232 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamSaveReqVO.java @@ -3,8 +3,6 @@ package cn.iocoder.yudao.module.mes.controller.admin.workteam.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import javax.validation.constraints.NotNull; - @Schema(description = "管理后台 - 生产班组新增/修改 Request VO") @Data public class WorkTeamSaveReqVO { @@ -16,11 +14,12 @@ public class WorkTeamSaveReqVO { private String teamName; @Schema(description = "组长ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17857") - @NotNull(message = "组长ID不能为空") private Long teamLeaderId; @Schema(description = "工序类型", example = "2") private String teamType; + @Schema(description = "班组类型", example = "1白班,2夜班") + private String groupType; @Schema(description = "备注", example = "随便") private String remark; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamUserRoleEnum.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamUserRoleEnum.java new file mode 100644 index 000000000..6eb8f4685 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/workteam/vo/WorkTeamUserRoleEnum.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.mes.controller.admin.workteam.vo; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum WorkTeamUserRoleEnum { + + 组长(1), + 工人(2); + + private final Integer value; + + // 一个可选的方法,用于根据整数值获取对应的枚举实例 + public static WorkTeamUserRoleEnum fromValue(int value) { + for (WorkTeamUserRoleEnum status : WorkTeamUserRoleEnum.values()) { + if (status.getValue() == value) { + return status; + } + } + throw new IllegalArgumentException("Unknown value: " + value); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/workteam/WorkTeamDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/workteam/WorkTeamDO.java index 98f72d634..a93734ec1 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/workteam/WorkTeamDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/workteam/WorkTeamDO.java @@ -49,4 +49,7 @@ public class WorkTeamDO extends BaseDO { */ private Boolean isEnable; + //@Schema(description = "班组类型", example = "1白班,2夜班") + private String groupType; + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/workteam/WorkTeamDetailMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/workteam/WorkTeamDetailMapper.java index 95632f568..5b7602e97 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/workteam/WorkTeamDetailMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/workteam/WorkTeamDetailMapper.java @@ -7,6 +7,8 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDetailDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 班组成员 Mapper * @@ -24,5 +26,14 @@ public interface WorkTeamDetailMapper extends BaseMapperX { default int deleteByWorkTeamId(Long workTeamId) { return delete(WorkTeamDetailDO::getWorkTeamId, workTeamId); } - + default List selectBy(WorkTeamDetailDO detailDO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(WorkTeamDetailDO::getUserId, detailDO.getUserId()) + .eqIfPresent(WorkTeamDetailDO::getUserRole, detailDO.getUserRole()) + .eqIfPresent(WorkTeamDetailDO::getWorkTeamId, detailDO.getWorkTeamId())); + } + default List selectByTeamId(List teamIds) { + return selectList(new LambdaQueryWrapperX() + .inIfPresent(WorkTeamDetailDO::getWorkTeamId, teamIds)); + } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/workteam/WorkTeamMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/workteam/WorkTeamMapper.java index cfd9a065a..897083167 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/workteam/WorkTeamMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/workteam/WorkTeamMapper.java @@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.WorkTeamPageReqV import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 生产班组 Mapper * @@ -20,10 +22,19 @@ public interface WorkTeamMapper extends BaseMapperX { .likeIfPresent(WorkTeamDO::getTeamName, reqVO.getTeamName()) .eqIfPresent(WorkTeamDO::getTeamLeaderId, reqVO.getTeamLeaderId()) .eqIfPresent(WorkTeamDO::getTeamType, reqVO.getTeamType()) + .eqIfPresent(WorkTeamDO::getGroupType, reqVO.getGroupType()) .eqIfPresent(WorkTeamDO::getRemark, reqVO.getRemark()) .eqIfPresent(WorkTeamDO::getIsEnable, reqVO.getIsEnable()) .betweenIfPresent(WorkTeamDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(WorkTeamDO::getId)); } - + default List selectBy(WorkTeamDO detailDO) { + return selectList(new LambdaQueryWrapperX() + .likeIfPresent(WorkTeamDO::getTeamName, detailDO.getTeamName()) + .eqIfPresent(WorkTeamDO::getTeamLeaderId, detailDO.getTeamLeaderId()) + .eqIfPresent(WorkTeamDO::getTeamType, detailDO.getTeamType()) + .eqIfPresent(WorkTeamDO::getGroupType, detailDO.getGroupType()) + .eqIfPresent(WorkTeamDO::getRemark, detailDO.getRemark()) + .eqIfPresent(WorkTeamDO::getIsEnable, detailDO.getIsEnable())); + } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/workteam/WorkTeamService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/workteam/WorkTeamService.java index ad27132ac..e6e51fa98 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/workteam/WorkTeamService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/workteam/WorkTeamService.java @@ -2,12 +2,16 @@ package cn.iocoder.yudao.module.mes.service.workteam; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.WorkTeamDetailRespVO; import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.WorkTeamPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.WorkTeamRespVO; import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.WorkTeamSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDO; import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDetailDO; +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import javax.validation.Valid; +import java.util.List; /** * 生产班组 Service 接口 @@ -52,7 +56,7 @@ public interface WorkTeamService { * @param pageReqVO 分页查询 * @return 生产班组分页 */ - PageResult getWorkTeamPage(WorkTeamPageReqVO pageReqVO); + PageResult getWorkTeamPage(WorkTeamPageReqVO pageReqVO); // ==================== 子表(班组成员) ==================== @@ -63,7 +67,7 @@ public interface WorkTeamService { * @param workTeamId 班组id * @return 班组成员分页 */ - PageResult getWorkTeamDetailPage(PageParam pageReqVO, Long workTeamId); + PageResult getWorkTeamDetailPage(PageParam pageReqVO, Long workTeamId); /** * 创建班组成员 @@ -94,5 +98,13 @@ public interface WorkTeamService { * @return 班组成员 */ WorkTeamDetailDO getWorkTeamDetail(Long id); + List getProcessUsers(String processType); + /** + * 通过用户 ID 查询用户们 + * + * @param ids 用户 ID 们 + * @return 用户对象信息 + */ + List getUserList(String processType); } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/workteam/WorkTeamServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/workteam/WorkTeamServiceImpl.java index fa323d339..7bc045f5e 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/workteam/WorkTeamServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/workteam/WorkTeamServiceImpl.java @@ -1,21 +1,28 @@ package cn.iocoder.yudao.module.mes.service.workteam; +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.exception.ErrorCode; import cn.iocoder.yudao.framework.common.pojo.PageParam; 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.workteam.vo.WorkTeamPageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.WorkTeamSaveReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.*; import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDO; import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDetailDO; import cn.iocoder.yudao.module.mes.dal.mysql.workteam.WorkTeamDetailMapper; import cn.iocoder.yudao.module.mes.dal.mysql.workteam.WorkTeamMapper; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WORK_TEAM_DETAIL_NOT_EXISTS; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WORK_TEAM_NOT_EXISTS; @@ -75,27 +82,94 @@ public class WorkTeamServiceImpl implements WorkTeamService { } @Override - public PageResult getWorkTeamPage(WorkTeamPageReqVO pageReqVO) { - return workTeamMapper.selectPage(pageReqVO); + public PageResult getWorkTeamPage(WorkTeamPageReqVO pageReqVO) { + PageResult pageResult = workTeamMapper.selectPage(pageReqVO); + return new PageResult<>(buildVOList(pageResult.getList()), pageResult.getTotal()); + } + @Resource + private AdminUserApi adminUserApi; + private List buildVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + // 1.4 成员信息 + Map userMap = adminUserApi.getUserMap( + convertSet(list, WorkTeamDO::getTeamLeaderId)); + return BeanUtils.toBean(list, WorkTeamRespVO.class, item -> { + MapUtils.findAndThen(userMap, item.getTeamLeaderId(), + user -> item.setTeamLeaderName(user.getNickname())); + + }); } - // ==================== 子表(班组成员) ==================== @Override - public PageResult getWorkTeamDetailPage(PageParam pageReqVO, Long workTeamId) { - return workTeamDetailMapper.selectPage(pageReqVO, workTeamId); - } + public PageResult getWorkTeamDetailPage(PageParam pageReqVO, Long workTeamId) { + PageResult pageResult = workTeamDetailMapper.selectPage(pageReqVO, workTeamId); + return new PageResult<>(buildDetailVOList(pageResult.getList()), pageResult.getTotal()); + } + private List buildDetailVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + // 1.4 成员信息 + Map userMap = adminUserApi.getUserMap( + convertSet(list, WorkTeamDetailDO::getUserId)); + return BeanUtils.toBean(list, WorkTeamDetailRespVO.class, item -> { + MapUtils.findAndThen(userMap, item.getUserId(), + user -> item.setUserName(user.getNickname())); + }); + } @Override + @Transactional(rollbackFor = Exception.class) public Long createWorkTeamDetail(WorkTeamDetailDO workTeamDetail) { + + WorkTeamDetailDO zuzhang = new WorkTeamDetailDO().setWorkTeamId(workTeamDetail.getWorkTeamId()); + if(workTeamDetail.getUserRole().equals(WorkTeamUserRoleEnum.组长.getValue())){ + //同一个组不能有多个组长 + zuzhang.setUserRole(workTeamDetail.getUserRole()); + if(teamUserRoleExists(zuzhang)) + throw exception(new ErrorCode(500,"该班组已存在组长,请先取消其他组长角色!")); + zuzhang.setUserRole(null); + WorkTeamDO teamDO = workTeamMapper.selectById(workTeamDetail.getWorkTeamId()); + if(teamDO!=null)teamDO.setTeamLeaderId(workTeamDetail.getUserId()); + } + //同一个组不能有同一个人 + zuzhang.setUserId(workTeamDetail.getUserId()); + if(teamUserRoleExists(zuzhang)) + throw exception(new ErrorCode(500,"保存失败!该班组已存该成员!")); workTeamDetailMapper.insert(workTeamDetail); return workTeamDetail.getId(); } - + //验证是否已存在 + private Boolean teamUserRoleExists(WorkTeamDetailDO workTeamDetail) { + List list = workTeamDetailMapper.selectBy(workTeamDetail); + if ( list== null || list.size()==0) { + return false; + } + return true; + } @Override public void updateWorkTeamDetail(WorkTeamDetailDO workTeamDetail) { // 校验存在 validateWorkTeamDetailExists(workTeamDetail.getId()); + WorkTeamDetailDO old = workTeamDetailMapper.selectById(workTeamDetail.getId()); + + //由工人变组长 + if(workTeamDetail.getUserRole().equals(WorkTeamUserRoleEnum.组长.getValue()) + && old.getUserRole().equals(WorkTeamUserRoleEnum.工人.getValue()) ){ + WorkTeamDetailDO zuzhang = new WorkTeamDetailDO().setWorkTeamId(workTeamDetail.getWorkTeamId()); + + //同一个组不能有多个组长 + zuzhang.setUserRole(workTeamDetail.getUserRole()); + if(teamUserRoleExists(zuzhang)) + throw exception(new ErrorCode(500,"该班组已存在组长,请先取消其他组长角色!")); + //更新WorkTeamDO组长 + WorkTeamDO teamDO = workTeamMapper.selectById(workTeamDetail.getWorkTeamId()); + if(teamDO!=null)teamDO.setTeamLeaderId(workTeamDetail.getUserId()); + } + // 更新 workTeamDetailMapper.updateById(workTeamDetail); } @@ -123,4 +197,32 @@ public class WorkTeamServiceImpl implements WorkTeamService { workTeamDetailMapper.deleteByWorkTeamId(workTeamId); } + //获取某类型工序的所有成员 + @Override + public List getProcessUsers(String processType) { + WorkTeamDO teamDO = new WorkTeamDO().setTeamType(processType).setIsEnable(true); + List list = workTeamMapper.selectBy(teamDO); + if ( list!= null && list.size() > 0) { + List idList = list.stream() // 将list转换为stream + .map(WorkTeamDO::getId) // 使用map操作,通过方法引用提取id + .collect(Collectors.toList()); // 通过collect操作,将结果转换为List + List detailDOList = workTeamDetailMapper.selectByTeamId(idList); + return detailDOList; + } + return new ArrayList<>(); + } + /** + * 通过工序类型 查询工人 + * + * @param processType 工序类型 + * @return 用户对象信息 + */ + @Override + public List getUserList(String processType){ + List list = getProcessUsers( processType); + List idList = list.stream() // 将list转换为stream + .map(WorkTeamDetailDO::getUserId) + .collect(Collectors.toList()); + return adminUserApi.getUserList(idList); + } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/workteam/WorkTeamServiceImplTest.java b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/workteam/WorkTeamServiceImplTest.java index 3df276bb7..b3b8a71d5 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/workteam/WorkTeamServiceImplTest.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/workteam/WorkTeamServiceImplTest.java @@ -1,32 +1,26 @@ package cn.iocoder.yudao.module.mes.service.workteam; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; - - +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; - -import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.*; +import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.WorkTeamPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.WorkTeamRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.WorkTeamSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDO; import cn.iocoder.yudao.module.mes.dal.mysql.workteam.WorkTeamMapper; -import cn.iocoder.yudao.framework.common.pojo.PageResult; - +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; import org.springframework.context.annotation.Import; import javax.annotation.Resource; -import java.util.*; -import java.time.LocalDateTime; - -import static cn.hutool.core.util.RandomUtil.*; -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; -import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*; -import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*; + +import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WORK_TEAM_NOT_EXISTS; import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; /** * {@link WorkTeamServiceImpl} 的单元测试类 @@ -140,7 +134,7 @@ public class WorkTeamServiceImplTest extends BaseDbUnitTest { reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); // 调用 - PageResult pageResult = workTeamService.getWorkTeamPage(reqVO); + PageResult pageResult = workTeamService.getWorkTeamPage(reqVO); // 断言 assertEquals(1, pageResult.getTotal()); assertEquals(1, pageResult.getList().size());