diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordPageReqVO.java index ea3d752..2b45ee9 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordPageReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordPageReqVO.java @@ -20,8 +20,11 @@ public class MesProAndonRecordPageReqVO extends PageParam { @Schema(description = "工作站编号", example = "100") private Long workstationId; - @Schema(description = "级别", example = "1") - private Integer level; + @Schema(description = "发起用户编号", example = "1") + private Long userId; + + @Schema(description = "处置人编号", example = "1") + private Long handlerUserId; @Schema(description = "处置状态", example = "0") private Integer status; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordRespVO.java index 50e8e53..ef5afa7 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordRespVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordRespVO.java @@ -19,6 +19,9 @@ public class MesProAndonRecordRespVO { @ExcelProperty("编号") private Long id; + @Schema(description = "安灯配置编号", example = "1") + private Long configId; + @Schema(description = "工作站编号", example = "100") private Long workstationId; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordSaveReqVO.java index 9d82763..ddc8520 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/andon/vo/record/MesProAndonRecordSaveReqVO.java @@ -9,6 +9,10 @@ import lombok.Data; @Data public class MesProAndonRecordSaveReqVO { + @Schema(description = "安灯配置编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "安灯配置不能为空") + private Long configId; + @Schema(description = "工作站编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") @NotNull(message = "工作站不能为空") private Long workstationId; @@ -23,14 +27,6 @@ public class MesProAndonRecordSaveReqVO { @Schema(description = "工序编号", example = "300") private Long processId; - @Schema(description = "呼叫原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "设备故障") - @NotEmpty(message = "呼叫原因不能为空") - private String reason; - - @Schema(description = "级别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "级别不能为空") - private Integer level; - @Schema(description = "备注", example = "备注") private String remark; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/andon/MesProAndonRecordDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/andon/MesProAndonRecordDO.java index 047071b..7fe35d7 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/andon/MesProAndonRecordDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/andon/MesProAndonRecordDO.java @@ -34,6 +34,12 @@ public class MesProAndonRecordDO extends BaseDO { @TableId private Long id; /** + * 安灯配置编号 + * + * 关联 {@link MesProAndonConfigDO#getId()} + */ + private Long configId; + /** * 工作站编号 * * 关联 {@link MesMdWorkstationDO#getId()} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/andon/MesProAndonConfigMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/andon/MesProAndonConfigMapper.java new file mode 100644 index 0000000..6ec42e4 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/andon/MesProAndonConfigMapper.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.pro.andon; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.config.MesProAndonConfigPageReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonConfigDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * MES 安灯呼叫配置 Mapper + * + * @author 芋道源码 + */ +@Mapper +public interface MesProAndonConfigMapper extends BaseMapperX { + + default PageResult selectPage(MesProAndonConfigPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(MesProAndonConfigDO::getReason, reqVO.getReason()) + .eqIfPresent(MesProAndonConfigDO::getLevel, reqVO.getLevel()) + .orderByDesc(MesProAndonConfigDO::getId)); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/andon/MesProAndonRecordMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/andon/MesProAndonRecordMapper.java new file mode 100644 index 0000000..a3092ee --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/andon/MesProAndonRecordMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.pro.andon; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordPageReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * MES 安灯呼叫记录 Mapper + * + * @author 芋道源码 + */ +@Mapper +public interface MesProAndonRecordMapper extends BaseMapperX { + + default PageResult selectPage(MesProAndonRecordPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MesProAndonRecordDO::getWorkstationId, reqVO.getWorkstationId()) + .eqIfPresent(MesProAndonRecordDO::getUserId, reqVO.getUserId()) + .eqIfPresent(MesProAndonRecordDO::getHandlerUserId, reqVO.getHandlerUserId()) + .eqIfPresent(MesProAndonRecordDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(MesProAndonRecordDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MesProAndonRecordDO::getId)); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationService.java index 473c056..50b0a87 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationService.java @@ -38,6 +38,13 @@ public interface MesMdWorkstationService { void deleteWorkstation(Long id); /** + * 校验工作站存在 + * + * @param id 编号 + */ + void validateWorkstationExists(Long id); + + /** * 获得工作站 * * @param id 编号 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationServiceImpl.java index 55a900b..c37d4c6 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationServiceImpl.java @@ -108,7 +108,8 @@ public class MesMdWorkstationServiceImpl implements MesMdWorkstationService { workstationMapper.deleteById(id); } - private void validateWorkstationExists(Long id) { + @Override + public void validateWorkstationExists(Long id) { if (workstationMapper.selectById(id) == null) { throw exception(MD_WORKSTATION_NOT_EXISTS); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonConfigService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonConfigService.java index 7ec9103..f1c190a 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonConfigService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonConfigService.java @@ -38,6 +38,14 @@ public interface MesProAndonConfigService { void deleteAndonConfig(Long id); /** + * 校验安灯呼叫配置存在 + * + * @param id 编号 + * @return 安灯呼叫配置 + */ + MesProAndonConfigDO validateAndonConfigExists(Long id); + + /** * 获得安灯呼叫配置 * * @param id 编号 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonConfigServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonConfigServiceImpl.java index 81d77f9..a511880 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonConfigServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonConfigServiceImpl.java @@ -57,10 +57,13 @@ public class MesProAndonConfigServiceImpl implements MesProAndonConfigService { andonConfigMapper.deleteById(id); } - private void validateAndonConfigExists(Long id) { - if (andonConfigMapper.selectById(id) == null) { + @Override + public MesProAndonConfigDO validateAndonConfigExists(Long id) { + MesProAndonConfigDO config = andonConfigMapper.selectById(id); + if (config == null) { throw exception(PRO_ANDON_CONFIG_NOT_EXISTS); } + return config; } @Override diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordServiceImpl.java index 0d1a72a..3a523fe 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/andon/MesProAndonRecordServiceImpl.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordHandleReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pro.andon.vo.record.MesProAndonRecordSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonConfigDO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.andon.MesProAndonRecordDO; import cn.iocoder.yudao.module.mes.dal.mysql.pro.andon.MesProAndonRecordMapper; import cn.iocoder.yudao.module.mes.enums.pro.MesProAndonStatusEnum; @@ -17,8 +18,7 @@ import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PRO_ANDON_RECORD_ALREADY_HANDLED; -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PRO_ANDON_RECORD_NOT_EXISTS; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; /** * MES 安灯呼叫记录 Service 实现类 @@ -41,19 +41,24 @@ public class MesProAndonRecordServiceImpl implements MesProAndonRecordService { @Resource private MesProProcessService processService; + @Resource + private MesProAndonConfigService andonConfigService; + @Override public Long createAndonRecord(MesProAndonRecordSaveReqVO createReqVO) { // 1. 校验关联数据存在 - workstationService.getWorkstation(createReqVO.getWorkstationId()); // 工作站必填,直接校验 + MesProAndonConfigDO config = andonConfigService.validateAndonConfigExists(createReqVO.getConfigId()); + workstationService.validateWorkstationExists(createReqVO.getWorkstationId()); if (createReqVO.getWorkOrderId() != null) { workOrderService.validateWorkOrderExists(createReqVO.getWorkOrderId()); } if (createReqVO.getProcessId() != null) { - processService.getProcess(createReqVO.getProcessId()); + processService.validateProcessExists(createReqVO.getProcessId()); } // 2. 插入 MesProAndonRecordDO record = BeanUtils.toBean(createReqVO, MesProAndonRecordDO.class); + record.setReason(config.getReason()).setLevel(config.getLevel()); record.setStatus(MesProAndonStatusEnum.ACTIVE.getStatus()); andonRecordMapper.insert(record); return record.getId(); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/process/MesProProcessServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/process/MesProProcessServiceImpl.java index 8dbde71..091f4b1 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/process/MesProProcessServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/process/MesProProcessServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.mes.service.pro.process; +import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.pro.process.vo.MesProProcessPageReqVO; @@ -12,6 +13,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import java.util.Collections; import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -37,11 +39,12 @@ public class MesProProcessServiceImpl implements MesProProcessService { @Override public Long createProcess(MesProProcessSaveReqVO createReqVO) { - // 1. 校验工序编码唯一性 + // 1.1 校验工序编码唯一性 validateProcessCodeUnique(null, createReqVO.getCode()); - // 2. 校验工序名称唯一性 + // 1.2 校验工序名称唯一性 validateProcessNameUnique(null, createReqVO.getName()); - // 3. 插入工序 + + // 2. 插入工序 MesProProcessDO process = BeanUtils.toBean(createReqVO, MesProProcessDO.class); processMapper.insert(process); return process.getId(); @@ -49,13 +52,14 @@ public class MesProProcessServiceImpl implements MesProProcessService { @Override public void updateProcess(MesProProcessSaveReqVO updateReqVO) { - // 1. 校验存在 + // 1.1 校验存在 validateProcessExists(updateReqVO.getId()); - // 2. 校验工序编码唯一性 + // 1.2 校验工序编码唯一性 validateProcessCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); - // 3. 校验工序名称唯一性 + // 1.3 校验工序名称唯一性 validateProcessNameUnique(updateReqVO.getId(), updateReqVO.getName()); - // 4. 更新工序 + + // 2. 更新工序 MesProProcessDO updateObj = BeanUtils.toBean(updateReqVO, MesProProcessDO.class); processMapper.updateById(updateObj); } @@ -63,19 +67,22 @@ public class MesProProcessServiceImpl implements MesProProcessService { @Override @Transactional(rollbackFor = Exception.class) public void deleteProcess(Long id) { - // 1. 校验存在 + // 1.1 校验存在 validateProcessExists(id); - // 2. 校验是否被工艺路线引用 + // 1.2 校验是否被工艺路线引用 + // TODO @AI:CollUtil.isNotEmpty() 可能更好 if (!routeProcessMapper.selectListByProcessId(id).isEmpty()) { throw exception(PRO_PROCESS_USED_BY_ROUTE); } - // 3. 删除工序 + + // 2. 删除工序 processMapper.deleteById(id); - // 4. 级联删除工序内容 + // 3. 级联删除工序内容 processContentService.deleteProcessContentByProcessId(id); } - private void validateProcessExists(Long id) { + @Override + public void validateProcessExists(Long id) { if (processMapper.selectById(id) == null) { throw exception(PRO_PROCESS_NOT_EXISTS); } @@ -114,7 +121,10 @@ public class MesProProcessServiceImpl implements MesProProcessService { @Override public List getProcessList(List ids) { - return processMapper.selectBatchIds(ids); + if (CollUtil.isEmpty(ids)) { + return Collections.emptyList(); + } + return processMapper.selectByIds(ids); } @Override