diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairPageReqVO.java index 58fb633..9c1dc53 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairPageReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/dv/repair/vo/MesDvRepairPageReqVO.java @@ -23,6 +23,9 @@ public class MesDvRepairPageReqVO extends PageParam { @Schema(description = "维修工单名称", example = "注塑机维修") private String name; + @Schema(description = "设备编号", example = "1") + private Long machineryId; + @Schema(description = "维修结果", example = "1") private Integer result; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairMapper.java index c6df19a..bd016f7 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairMapper.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/repair/MesDvRepairMapper.java @@ -19,12 +19,17 @@ public interface MesDvRepairMapper extends BaseMapperX { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(MesDvRepairDO::getCode, reqVO.getCode()) .likeIfPresent(MesDvRepairDO::getName, reqVO.getName()) + .eqIfPresent(MesDvRepairDO::getMachineryId, reqVO.getMachineryId()) .eqIfPresent(MesDvRepairDO::getResult, reqVO.getResult()) .eqIfPresent(MesDvRepairDO::getStatus, reqVO.getStatus()) .betweenIfPresent(MesDvRepairDO::getRequireDate, reqVO.getRequireDate()) .orderByDesc(MesDvRepairDO::getId)); } + default MesDvRepairDO selectByCode(String code) { + return selectOne(MesDvRepairDO::getCode, code); + } + default Long selectCountByMachineryId(Long machineryId) { return selectCount(MesDvRepairDO::getMachineryId, machineryId); } 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 65ed7ba..b9053f3 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 @@ -178,6 +178,7 @@ public interface ErrorCodeConstants { // ========== MES 设备管理-维修工单(1-040-303-000) ========== ErrorCode DV_REPAIR_NOT_EXISTS = new ErrorCode(1_040_303_000, "维修工单不存在"); ErrorCode DV_REPAIR_NOT_DRAFT = new ErrorCode(1_040_303_001, "维修工单已确认,不允许修改或删除"); + ErrorCode DV_REPAIR_CODE_DUPLICATE = new ErrorCode(1_040_303_002, "维修工单编码已存在"); // ========== MES 设备管理-维修工单行(1-040-303-100) ========== ErrorCode DV_REPAIR_LINE_NOT_EXISTS = new ErrorCode(1_040_303_100, "维修工单行不存在"); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineService.java index e1e37bb..5fdb0e8 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineService.java @@ -52,4 +52,11 @@ public interface MesDvRepairLineService { */ PageResult getRepairLinePage(MesDvRepairLinePageReqVO pageReqVO); + /** + * 根据维修工单编号删除所有行 + * + * @param repairId 维修工单编号 + */ + void deleteByRepairId(Long repairId); + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineServiceImpl.java index c7aac33..05201cd 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairLineServiceImpl.java @@ -99,4 +99,9 @@ public class MesDvRepairLineServiceImpl implements MesDvRepairLineService { return repairLineMapper.selectPage(pageReqVO); } + @Override + public void deleteByRepairId(Long repairId) { + repairLineMapper.deleteByRepairId(repairId); + } + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairServiceImpl.java index eac66a0..c9cabdf 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/repair/MesDvRepairServiceImpl.java @@ -6,7 +6,6 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.MesDvRepairPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.dv.repair.vo.MesDvRepairSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.dv.repair.MesDvRepairDO; -import cn.iocoder.yudao.module.mes.dal.mysql.dv.repair.MesDvRepairLineMapper; import cn.iocoder.yudao.module.mes.dal.mysql.dv.repair.MesDvRepairMapper; import cn.iocoder.yudao.module.mes.enums.dv.MesDvRepairResultEnum; import cn.iocoder.yudao.module.mes.enums.dv.MesDvRepairStatusEnum; @@ -16,6 +15,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import java.time.LocalDateTime; + import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; @@ -30,15 +31,19 @@ public class MesDvRepairServiceImpl implements MesDvRepairService { @Resource private MesDvRepairMapper repairMapper; + @Resource - private MesDvRepairLineMapper repairLineMapper; + private MesDvRepairLineService repairLineService; @Resource private MesDvMachineryService machineryService; @Override public Long createRepair(MesDvRepairSaveReqVO createReqVO) { - // 1. 校验关联数据 + // TODO @AI:抽成 validateXXSaveData(vo); + // 1.1 校验关联数据 validateRepairRelation(createReqVO); + // 1.2 校验编码唯一 + validateCodeUnique(null, createReqVO.getCode()); // 2. 插入 MesDvRepairDO repair = BeanUtils.toBean(createReqVO, MesDvRepairDO.class); @@ -51,8 +56,11 @@ public class MesDvRepairServiceImpl implements MesDvRepairService { public void updateRepair(MesDvRepairSaveReqVO updateReqVO) { // 1.1 校验存在,且状态为草稿 validateRepairDraft(updateReqVO.getId()); + // TODO @AI:抽成 validateXXSaveData(vo); // 1.2 校验关联数据 validateRepairRelation(updateReqVO); + // 1.3 校验编码唯一 + validateCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); // 2. 更新 MesDvRepairDO updateObj = BeanUtils.toBean(updateReqVO, MesDvRepairDO.class); @@ -68,7 +76,7 @@ public class MesDvRepairServiceImpl implements MesDvRepairService { // 删除 repairMapper.deleteById(id); // 级联删除子表 - repairLineMapper.deleteByRepairId(id); + repairLineService.deleteByRepairId(id); } private void validateRepairRelation(MesDvRepairSaveReqVO reqVO) { @@ -76,6 +84,20 @@ public class MesDvRepairServiceImpl implements MesDvRepairService { machineryService.validateMachineryExists(reqVO.getMachineryId()); } + private void validateCodeUnique(Long id, String code) { + if (code == null) { + return; + } + MesDvRepairDO repair = repairMapper.selectByCode(code); + // TODO @AI:参考别的模块,notEquals + if (repair == null) { + return; + } + if (id == null || !id.equals(repair.getId())) { + throw exception(DV_REPAIR_CODE_DUPLICATE); + } + } + @Override public void validateRepairExists(Long id) { if (repairMapper.selectById(id) == null) { @@ -95,6 +117,7 @@ public class MesDvRepairServiceImpl implements MesDvRepairService { * @return 维修工单 */ public MesDvRepairDO validateRepairDraft(Long id) { + // TODO @AI:复用 validateRepairExists 方法 MesDvRepairDO repair = repairMapper.selectById(id); if (repair == null) { throw exception(DV_REPAIR_NOT_EXISTS); @@ -120,10 +143,11 @@ public class MesDvRepairServiceImpl implements MesDvRepairService { // 1. 校验存在,且状态为草稿 validateRepairDraft(id); - // 2. 更新状态为已确认,结果为通过 + // 2. 更新状态为已确认,结果为通过,自动设置验收日期 repairMapper.updateById(new MesDvRepairDO().setId(id) .setStatus(MesDvRepairStatusEnum.CONFIRMED.getStatus()) - .setResult(MesDvRepairResultEnum.PASS.getResult())); + .setResult(MesDvRepairResultEnum.PASS.getResult()) + .setConfirmDate(LocalDateTime.now())); } @Override @@ -131,10 +155,11 @@ public class MesDvRepairServiceImpl implements MesDvRepairService { // 1. 校验存在,且状态为草稿 validateRepairDraft(id); - // 2. 更新状态为已确认,结果为不通过 + // 2. 更新状态为已确认,结果为不通过,自动设置验收日期 repairMapper.updateById(new MesDvRepairDO().setId(id) .setStatus(MesDvRepairStatusEnum.CONFIRMED.getStatus()) - .setResult(MesDvRepairResultEnum.FAIL.getResult())); + .setResult(MesDvRepairResultEnum.FAIL.getResult()) + .setConfirmDate(LocalDateTime.now())); } }