diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/cal/calendar/MesCalCalendarController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/cal/calendar/MesCalCalendarController.java index 7409ac7..a734553 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/cal/calendar/MesCalCalendarController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/cal/calendar/MesCalCalendarController.java @@ -161,14 +161,11 @@ public class MesCalCalendarController { if (CollUtil.isEmpty(teams)) { return Collections.emptyList(); } - // 2. 查询这些班组在日期范围内的排班记录 - List result = new ArrayList<>(teams.size()); - for (MesCalTeamDO team : teams) { - MesCalTeamShiftListReqVO reqVO = new MesCalTeamShiftListReqVO() - .setTeamId(team.getId()).setStartDay(startDay).setEndDay(endDay); - result.addAll(teamShiftService.getTeamShiftList(reqVO)); - } - return result; + // 2. 一次 IN 查询这些班组在日期范围内的排班记录 + MesCalTeamShiftListReqVO reqVO = new MesCalTeamShiftListReqVO() + .setTeamIds(convertSet(teams, MesCalTeamDO::getId)) + .setStartDay(startDay).setEndDay(endDay); + return teamShiftService.getTeamShiftList(reqVO); } /** diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/cal/team/vo/shift/MesCalTeamShiftListReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/cal/team/vo/shift/MesCalTeamShiftListReqVO.java index 9895364..459be38 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/cal/team/vo/shift/MesCalTeamShiftListReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/cal/team/vo/shift/MesCalTeamShiftListReqVO.java @@ -5,6 +5,7 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; +import java.util.Collection; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -15,6 +16,9 @@ public class MesCalTeamShiftListReqVO { @Schema(description = "班组编号", example = "201") private Long teamId; + @Schema(description = "班组编号集合") + private Collection teamIds; + @Schema(description = "排班计划编号", example = "1") private Long planId; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/machinery/vo/type/MesDvMachineryTypeSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/machinery/vo/type/MesDvMachineryTypeSaveReqVO.java index 1a0f1ed..e5ac3bc 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/machinery/vo/type/MesDvMachineryTypeSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/machinery/vo/type/MesDvMachineryTypeSaveReqVO.java @@ -12,8 +12,7 @@ public class MesDvMachineryTypeSaveReqVO { @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long id; - @Schema(description = "类型编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "MT-001") - @NotEmpty(message = "类型编码不能为空") + @Schema(description = "类型编码", example = "MT-001") private String code; @Schema(description = "类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "数控机床") diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/cal/team/MesCalTeamShiftMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/cal/team/MesCalTeamShiftMapper.java index bbee278..c882f20 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/cal/team/MesCalTeamShiftMapper.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/cal/team/MesCalTeamShiftMapper.java @@ -19,6 +19,7 @@ public interface MesCalTeamShiftMapper extends BaseMapperX { default List selectList(MesCalTeamShiftListReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(MesCalTeamShiftDO::getTeamId, reqVO.getTeamId()) + .inIfPresent(MesCalTeamShiftDO::getTeamId, reqVO.getTeamIds()) .eqIfPresent(MesCalTeamShiftDO::getPlanId, reqVO.getPlanId()) .geIfPresent(MesCalTeamShiftDO::getDay, reqVO.getStartDay()) .leIfPresent(MesCalTeamShiftDO::getDay, reqVO.getEndDay()) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/machinery/MesDvMachineryTypeMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/machinery/MesDvMachineryTypeMapper.java index 6b5fdd9..232fdb2 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/machinery/MesDvMachineryTypeMapper.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/machinery/MesDvMachineryTypeMapper.java @@ -36,9 +36,8 @@ public interface MesDvMachineryTypeMapper extends BaseMapperX() - .eq(MesDvMachineryTypeDO::getParentId, parentId) .eq(MesDvMachineryTypeDO::getCode, code)); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java index 30bd0f7..52c66d8 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java @@ -142,7 +142,7 @@ public interface ErrorCodeConstants { ErrorCode DV_MACHINERY_TYPE_PARENT_NOT_EXITS = new ErrorCode(1_040_300_002, "父级类型不存在"); ErrorCode DV_MACHINERY_TYPE_PARENT_ERROR = new ErrorCode(1_040_300_003, "不能设置自己为父类型"); ErrorCode DV_MACHINERY_TYPE_NAME_DUPLICATE = new ErrorCode(1_040_300_004, "同一父类型下已存在该名称"); - ErrorCode DV_MACHINERY_TYPE_CODE_DUPLICATE = new ErrorCode(1_040_300_005, "同一父类型下已存在该编码"); + ErrorCode DV_MACHINERY_TYPE_CODE_DUPLICATE = new ErrorCode(1_040_300_005, "设备类型编码已存在"); ErrorCode DV_MACHINERY_TYPE_PARENT_IS_CHILD = new ErrorCode(1_040_300_006, "不能设置自己的子类型为父类型"); ErrorCode DV_MACHINERY_TYPE_HAS_MACHINERY = new ErrorCode(1_040_300_007, "该类型下存在设备,无法删除"); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java index 4aeefc6..1bbc993 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java @@ -37,7 +37,8 @@ public enum MesMdAutoCodeRuleCodeEnum { WM_STOCK_TAKING_PLAN_CODE("WM_STOCK_TAKING_PLAN_CODE", "盘点方案编码"), WM_STOCK_TAKING_CODE("WM_STOCK_TAKING_CODE", "盘点任务编码"), TRANSFER_CODE("TRANSFER_CODE", "转移调拨单编码"), - WM_OUTSOURCE_ISSUE_CODE("WM_OUTSOURCE_ISSUE_CODE", "外协发料单编码"); + WM_OUTSOURCE_ISSUE_CODE("WM_OUTSOURCE_ISSUE_CODE", "外协发料单编码"), + DV_MACHINERY_TYPE_CODE("DV_MACHINERY_TYPE_CODE", "设备类型编码"); /** * 规则代码 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/machinery/MesDvMachineryTypeServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/machinery/MesDvMachineryTypeServiceImpl.java index 856ee30..36bb09a 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/machinery/MesDvMachineryTypeServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/machinery/MesDvMachineryTypeServiceImpl.java @@ -2,12 +2,14 @@ package cn.iocoder.yudao.module.mes.service.dv.machinery; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.dv.machinery.vo.type.MesDvMachineryTypeListReqVO; import cn.iocoder.yudao.module.mes.controller.admin.dv.machinery.vo.type.MesDvMachineryTypeSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.dv.machinery.MesDvMachineryTypeDO; -import cn.iocoder.yudao.module.mes.dal.mysql.dv.machinery.MesDvMachineryMapper; import cn.iocoder.yudao.module.mes.dal.mysql.dv.machinery.MesDvMachineryTypeMapper; +import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum; +import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService; import jakarta.annotation.Resource; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -33,11 +35,17 @@ public class MesDvMachineryTypeServiceImpl implements MesDvMachineryTypeService @Resource @Lazy // 延迟加载,避免循环依赖 private MesDvMachineryService machineryService; + @Resource + private MesMdAutoCodeRecordService autoCodeRecordService; @Override public Long createMachineryType(MesDvMachineryTypeSaveReqVO createReqVO) { + // 自动生成编码 + if (StrUtil.isEmpty(createReqVO.getCode())) { + createReqVO.setCode(autoCodeRecordService.generateAutoCode(MesMdAutoCodeRuleCodeEnum.DV_MACHINERY_TYPE_CODE.getCode())); + } // 校验 - validateMachineryTypeSave(null, createReqVO.getParentId(), createReqVO.getName(), createReqVO.getCode()); + validateMachineryTypeSaveData(createReqVO); // 插入 MesDvMachineryTypeDO machineryType = BeanUtils.toBean(createReqVO, MesDvMachineryTypeDO.class); @@ -48,7 +56,7 @@ public class MesDvMachineryTypeServiceImpl implements MesDvMachineryTypeService @Override public void updateMachineryType(MesDvMachineryTypeSaveReqVO updateReqVO) { // 校验 - validateMachineryTypeSave(updateReqVO.getId(), updateReqVO.getParentId(), updateReqVO.getName(), updateReqVO.getCode()); + validateMachineryTypeSaveData(updateReqVO); // 更新 MesDvMachineryTypeDO updateObj = BeanUtils.toBean(updateReqVO, MesDvMachineryTypeDO.class); @@ -72,16 +80,16 @@ public class MesDvMachineryTypeServiceImpl implements MesDvMachineryTypeService machineryTypeMapper.deleteById(id); } - private void validateMachineryTypeSave(Long id, Long parentId, String name, String code) { - if (id != null) { - validateMachineryTypeExists(id); + private void validateMachineryTypeSaveData(MesDvMachineryTypeSaveReqVO saveReqVO) { + if (saveReqVO.getId() != null) { + validateMachineryTypeExists(saveReqVO.getId()); } // 校验父级节点有效性 - validateParentMachineryType(id, parentId); + validateParentMachineryType(saveReqVO.getId(), saveReqVO.getParentId()); // 校验类型名称唯一性 - validateMachineryTypeNameUnique(id, parentId, name); + validateMachineryTypeNameUnique(saveReqVO.getId(), saveReqVO.getParentId(), saveReqVO.getName()); // 校验类型编码唯一性 - validateMachineryTypeCodeUnique(id, parentId, code); + validateMachineryTypeCodeUnique(saveReqVO.getId(), saveReqVO.getParentId(), saveReqVO.getCode()); } private void validateMachineryTypeExists(Long id) { @@ -135,8 +143,7 @@ public class MesDvMachineryTypeServiceImpl implements MesDvMachineryTypeService } private void validateMachineryTypeCodeUnique(Long id, Long parentId, String code) { - // TODO @yunai:类型编码的唯一性,建议全局校验,而非同一父级下校验 - MesDvMachineryTypeDO machineryType = machineryTypeMapper.selectByParentIdAndCode(parentId, code); + MesDvMachineryTypeDO machineryType = machineryTypeMapper.selectByCode(code); if (machineryType == null) { return; }