Commit 73de28909c8527b36910d3e3d4e4199325fa7eef
1 parent
4da4ddc1
✨ feat(mes): 新增点检方案设备和项目的重复校验逻辑
新增设备和项目在同一方案下的重复校验,避免用户重复添加相同设备或项目。同时,增强了点检方案停用时的状态校验,确保只有已启用的方案才能被停用。
Showing
6 changed files
with
28 additions
and
2 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/checkplan/MesDvCheckPlanMachineryMapper.java
| @@ -32,4 +32,10 @@ public interface MesDvCheckPlanMachineryMapper extends BaseMapperX<MesDvCheckPla | @@ -32,4 +32,10 @@ public interface MesDvCheckPlanMachineryMapper extends BaseMapperX<MesDvCheckPla | ||
| 32 | return selectCount(MesDvCheckPlanMachineryDO::getMachineryId, machineryId); | 32 | return selectCount(MesDvCheckPlanMachineryDO::getMachineryId, machineryId); |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | + default MesDvCheckPlanMachineryDO selectByPlanIdAndMachineryId(Long planId, Long machineryId) { | ||
| 36 | + return selectOne(new LambdaQueryWrapperX<MesDvCheckPlanMachineryDO>() | ||
| 37 | + .eq(MesDvCheckPlanMachineryDO::getPlanId, planId) | ||
| 38 | + .eq(MesDvCheckPlanMachineryDO::getMachineryId, machineryId)); | ||
| 39 | + } | ||
| 40 | + | ||
| 35 | } | 41 | } |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/dv/checkplan/MesDvCheckPlanSubjectMapper.java
| @@ -32,4 +32,10 @@ public interface MesDvCheckPlanSubjectMapper extends BaseMapperX<MesDvCheckPlanS | @@ -32,4 +32,10 @@ public interface MesDvCheckPlanSubjectMapper extends BaseMapperX<MesDvCheckPlanS | ||
| 32 | return selectCount(MesDvCheckPlanSubjectDO::getSubjectId, subjectId); | 32 | return selectCount(MesDvCheckPlanSubjectDO::getSubjectId, subjectId); |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | + default MesDvCheckPlanSubjectDO selectByPlanIdAndSubjectId(Long planId, Long subjectId) { | ||
| 36 | + return selectOne(new LambdaQueryWrapperX<MesDvCheckPlanSubjectDO>() | ||
| 37 | + .eq(MesDvCheckPlanSubjectDO::getPlanId, planId) | ||
| 38 | + .eq(MesDvCheckPlanSubjectDO::getSubjectId, subjectId)); | ||
| 39 | + } | ||
| 40 | + | ||
| 35 | } | 41 | } |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
| @@ -166,10 +166,13 @@ public interface ErrorCodeConstants { | @@ -166,10 +166,13 @@ public interface ErrorCodeConstants { | ||
| 166 | ErrorCode DV_CHECK_PLAN_NOT_PREPARE = new ErrorCode(1_040_302_002, "点检保养方案已启用,不允许修改或删除"); | 166 | ErrorCode DV_CHECK_PLAN_NOT_PREPARE = new ErrorCode(1_040_302_002, "点检保养方案已启用,不允许修改或删除"); |
| 167 | ErrorCode DV_CHECK_PLAN_NO_MACHINERY = new ErrorCode(1_040_302_003, "启用方案时,至少需要关联一台设备"); | 167 | ErrorCode DV_CHECK_PLAN_NO_MACHINERY = new ErrorCode(1_040_302_003, "启用方案时,至少需要关联一台设备"); |
| 168 | ErrorCode DV_CHECK_PLAN_NO_SUBJECT = new ErrorCode(1_040_302_004, "启用方案时,至少需要关联一个点检保养项目"); | 168 | ErrorCode DV_CHECK_PLAN_NO_SUBJECT = new ErrorCode(1_040_302_004, "启用方案时,至少需要关联一个点检保养项目"); |
| 169 | + ErrorCode DV_CHECK_PLAN_NOT_ENABLED = new ErrorCode(1_040_302_005, "点检保养方案未启用,不允许停用"); | ||
| 169 | // ========== MES 设备管理-点检方案设备(1-040-302-100) ========== | 170 | // ========== MES 设备管理-点检方案设备(1-040-302-100) ========== |
| 170 | ErrorCode DV_CHECK_PLAN_MACHINERY_NOT_EXISTS = new ErrorCode(1_040_302_100, "点检保养方案设备不存在"); | 171 | ErrorCode DV_CHECK_PLAN_MACHINERY_NOT_EXISTS = new ErrorCode(1_040_302_100, "点检保养方案设备不存在"); |
| 172 | + ErrorCode DV_CHECK_PLAN_MACHINERY_DUPLICATE = new ErrorCode(1_040_302_101, "该设备已关联到当前方案,请勿重复添加"); | ||
| 171 | // ========== MES 设备管理-点检方案项目(1-040-302-200) ========== | 173 | // ========== MES 设备管理-点检方案项目(1-040-302-200) ========== |
| 172 | ErrorCode DV_CHECK_PLAN_SUBJECT_NOT_EXISTS = new ErrorCode(1_040_302_200, "点检保养方案项目不存在"); | 174 | ErrorCode DV_CHECK_PLAN_SUBJECT_NOT_EXISTS = new ErrorCode(1_040_302_200, "点检保养方案项目不存在"); |
| 175 | + ErrorCode DV_CHECK_PLAN_SUBJECT_DUPLICATE = new ErrorCode(1_040_302_201, "该项目已关联到当前方案,请勿重复添加"); | ||
| 173 | 176 | ||
| 174 | // ========== MES 设备管理-维修工单(1-040-303-000) ========== | 177 | // ========== MES 设备管理-维修工单(1-040-303-000) ========== |
| 175 | ErrorCode DV_REPAIR_NOT_EXISTS = new ErrorCode(1_040_303_000, "维修工单不存在"); | 178 | ErrorCode DV_REPAIR_NOT_EXISTS = new ErrorCode(1_040_303_000, "维修工单不存在"); |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/checkplan/MesDvCheckPlanMachineryServiceImpl.java
| @@ -38,6 +38,10 @@ public class MesDvCheckPlanMachineryServiceImpl implements MesDvCheckPlanMachine | @@ -38,6 +38,10 @@ public class MesDvCheckPlanMachineryServiceImpl implements MesDvCheckPlanMachine | ||
| 38 | checkPlanService.validateCheckPlanPrepare(createReqVO.getPlanId()); | 38 | checkPlanService.validateCheckPlanPrepare(createReqVO.getPlanId()); |
| 39 | // 1.2 校验设备存在 | 39 | // 1.2 校验设备存在 |
| 40 | machineryService.validateMachineryExists(createReqVO.getMachineryId()); | 40 | machineryService.validateMachineryExists(createReqVO.getMachineryId()); |
| 41 | + // 1.3 校验同一方案下设备不重复 | ||
| 42 | + if (checkPlanMachineryMapper.selectByPlanIdAndMachineryId(createReqVO.getPlanId(), createReqVO.getMachineryId()) != null) { | ||
| 43 | + throw exception(DV_CHECK_PLAN_MACHINERY_DUPLICATE); | ||
| 44 | + } | ||
| 41 | 45 | ||
| 42 | // 2. 插入 | 46 | // 2. 插入 |
| 43 | MesDvCheckPlanMachineryDO planMachinery = BeanUtils.toBean(createReqVO, MesDvCheckPlanMachineryDO.class); | 47 | MesDvCheckPlanMachineryDO planMachinery = BeanUtils.toBean(createReqVO, MesDvCheckPlanMachineryDO.class); |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/checkplan/MesDvCheckPlanServiceImpl.java
| @@ -91,8 +91,11 @@ public class MesDvCheckPlanServiceImpl implements MesDvCheckPlanService { | @@ -91,8 +91,11 @@ public class MesDvCheckPlanServiceImpl implements MesDvCheckPlanService { | ||
| 91 | 91 | ||
| 92 | @Override | 92 | @Override |
| 93 | public void disableCheckPlan(Long id) { | 93 | public void disableCheckPlan(Long id) { |
| 94 | - // 1. 校验存在 | ||
| 95 | - validateCheckPlanExists(id); | 94 | + // 1. 校验存在 + 校验已启用状态 |
| 95 | + MesDvCheckPlanDO plan = doValidateCheckPlanExists(id); | ||
| 96 | + if (ObjUtil.notEqual(MesDvCheckPlanStatusEnum.ENABLED.getStatus(), plan.getStatus())) { | ||
| 97 | + throw exception(DV_CHECK_PLAN_NOT_ENABLED); | ||
| 98 | + } | ||
| 96 | 99 | ||
| 97 | // 2. 更新状态为草稿 | 100 | // 2. 更新状态为草稿 |
| 98 | checkPlanMapper.updateById(new MesDvCheckPlanDO().setId(id) | 101 | checkPlanMapper.updateById(new MesDvCheckPlanDO().setId(id) |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/checkplan/MesDvCheckPlanSubjectServiceImpl.java
| @@ -38,6 +38,10 @@ public class MesDvCheckPlanSubjectServiceImpl implements MesDvCheckPlanSubjectSe | @@ -38,6 +38,10 @@ public class MesDvCheckPlanSubjectServiceImpl implements MesDvCheckPlanSubjectSe | ||
| 38 | checkPlanService.validateCheckPlanPrepare(createReqVO.getPlanId()); | 38 | checkPlanService.validateCheckPlanPrepare(createReqVO.getPlanId()); |
| 39 | // 1.2 校验项目存在 | 39 | // 1.2 校验项目存在 |
| 40 | subjectService.validateSubjectExists(createReqVO.getSubjectId()); | 40 | subjectService.validateSubjectExists(createReqVO.getSubjectId()); |
| 41 | + // 1.3 校验同一方案下项目不重复 | ||
| 42 | + if (checkPlanSubjectMapper.selectByPlanIdAndSubjectId(createReqVO.getPlanId(), createReqVO.getSubjectId()) != null) { | ||
| 43 | + throw exception(DV_CHECK_PLAN_SUBJECT_DUPLICATE); | ||
| 44 | + } | ||
| 41 | 45 | ||
| 42 | // 2. 插入 | 46 | // 2. 插入 |
| 43 | MesDvCheckPlanSubjectDO planSubject = BeanUtils.toBean(createReqVO, MesDvCheckPlanSubjectDO.class); | 47 | MesDvCheckPlanSubjectDO planSubject = BeanUtils.toBean(createReqVO, MesDvCheckPlanSubjectDO.class); |