Commit 662194d12f785c3269bd0542aec57252ab05113f
1 parent
69763355
✨ feat(mes): 重构工单状态管理及验证逻辑
移除工单状态字段,优化工单创建和更新时的验证逻辑,确保数据一致性和完整性。更新前端表单,简化状态处理,提升用户体验。
Showing
3 changed files
with
17 additions
and
27 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/vo/MesProWorkorderPageReqVO.java
| ... | ... | @@ -26,9 +26,6 @@ public class MesProWorkOrderPageReqVO extends PageParam { |
| 26 | 26 | @Schema(description = "工单类型", example = "1") |
| 27 | 27 | private Integer type; |
| 28 | 28 | |
| 29 | - @Schema(description = "工单状态", example = "1") | |
| 30 | - private Integer status; | |
| 31 | - | |
| 32 | 29 | @Schema(description = "来源单据编号", example = "SO-001") |
| 33 | 30 | private String orderSourceCode; |
| 34 | 31 | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/workorder/MesProWorkorderMapper.java
| ... | ... | @@ -23,7 +23,6 @@ public interface MesProWorkOrderMapper extends BaseMapperX<MesProWorkOrderDO> { |
| 23 | 23 | .likeIfPresent(MesProWorkOrderDO::getCode, reqVO.getCode()) |
| 24 | 24 | .likeIfPresent(MesProWorkOrderDO::getName, reqVO.getName()) |
| 25 | 25 | .eqIfPresent(MesProWorkOrderDO::getType, reqVO.getType()) |
| 26 | - .eqIfPresent(MesProWorkOrderDO::getStatus, reqVO.getStatus()) | |
| 27 | 26 | .likeIfPresent(MesProWorkOrderDO::getOrderSourceCode, reqVO.getOrderSourceCode()) |
| 28 | 27 | .eqIfPresent(MesProWorkOrderDO::getProductId, reqVO.getProductId()) |
| 29 | 28 | .eqIfPresent(MesProWorkOrderDO::getClientId, reqVO.getClientId()) | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkorderServiceImpl.java
| ... | ... | @@ -56,13 +56,8 @@ public class MesProWorkOrderServiceImpl implements MesProWorkOrderService { |
| 56 | 56 | @Override |
| 57 | 57 | @Transactional(rollbackFor = Exception.class) |
| 58 | 58 | public Long createWorkOrder(MesProWorkOrderSaveReqVO createReqVO) { |
| 59 | - // TODO @AI:validateXXXSaveData | |
| 60 | - // 1.1 校验编码唯一 | |
| 61 | - validateWorkOrderCodeUnique(null, createReqVO.getCode()); | |
| 62 | - // 1.2 校验产品存在 | |
| 63 | - itemService.validateItemExists(createReqVO.getProductId()); | |
| 64 | - // 1.3 校验批次配置 | |
| 65 | - validateBatchConfig(createReqVO.getProductId(), createReqVO.getClientId()); | |
| 59 | + // 1. 校验数据 | |
| 60 | + validateWorkOrderSaveData(null, createReqVO); | |
| 66 | 61 | |
| 67 | 62 | // 2.1 设置默认值 |
| 68 | 63 | if (createReqVO.getParentId() == null) { |
| ... | ... | @@ -85,17 +80,13 @@ public class MesProWorkOrderServiceImpl implements MesProWorkOrderService { |
| 85 | 80 | @Override |
| 86 | 81 | @Transactional(rollbackFor = Exception.class) |
| 87 | 82 | public void updateWorkOrder(MesProWorkOrderSaveReqVO updateReqVO) { |
| 88 | - // 1.1 校验存在 | |
| 83 | + // 1.1 校验存在 + 只有草稿状态才能编辑 | |
| 89 | 84 | MesProWorkOrderDO oldWorkOrder = validateWorkOrderExists(updateReqVO.getId()); |
| 90 | - // TODO @AI:validateXXXSaveData | |
| 91 | - // 1.2 只有草稿状态才能编辑 | |
| 92 | 85 | if (ObjUtil.notEqual(oldWorkOrder.getStatus(), MesProWorkOrderStatusEnum.PREPARE.getStatus())) { |
| 93 | 86 | throw exception(PRO_WORK_ORDER_NOT_PREPARE); |
| 94 | 87 | } |
| 95 | - // 1.3 校验编码唯一 | |
| 96 | - validateWorkOrderCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); | |
| 97 | - // 1.4 校验批次配置 | |
| 98 | - validateBatchConfig(updateReqVO.getProductId(), updateReqVO.getClientId()); | |
| 88 | + // 1.2 校验数据 | |
| 89 | + validateWorkOrderSaveData(updateReqVO.getId(), updateReqVO); | |
| 99 | 90 | |
| 100 | 91 | // 2. 判断产品或数量是否变更,如果变更则重新生成 BOM(updated=true 会先清理旧数据) |
| 101 | 92 | boolean productChanged = ObjUtil.notEqual(oldWorkOrder.getProductId(), updateReqVO.getProductId()); |
| ... | ... | @@ -222,6 +213,18 @@ public class MesProWorkOrderServiceImpl implements MesProWorkOrderService { |
| 222 | 213 | |
| 223 | 214 | // ==================== 校验方法 ==================== |
| 224 | 215 | |
| 216 | + private void validateWorkOrderSaveData(Long id, MesProWorkOrderSaveReqVO reqVO) { | |
| 217 | + // 1. 校验编码唯一 | |
| 218 | + validateWorkOrderCodeUnique(id, reqVO.getCode()); | |
| 219 | + // 2. 校验产品存在 | |
| 220 | + itemService.validateItemExists(reqVO.getProductId()); | |
| 221 | + // 3. 校验批次配置(如果产品有 clientFlag=true,则 clientId 必填) | |
| 222 | + MesMdItemBatchConfigDO batchConfig = itemBatchConfigService.getItemBatchConfigByItemId(reqVO.getProductId()); | |
| 223 | + if (batchConfig != null && Boolean.TRUE.equals(batchConfig.getClientFlag()) && reqVO.getClientId() == null) { | |
| 224 | + throw exception(MD_CLIENT_NOT_EXISTS); | |
| 225 | + } | |
| 226 | + } | |
| 227 | + | |
| 225 | 228 | private void validateWorkOrderCodeUnique(Long id, String code) { |
| 226 | 229 | if (code == null) { |
| 227 | 230 | return; |
| ... | ... | @@ -235,15 +238,6 @@ public class MesProWorkOrderServiceImpl implements MesProWorkOrderService { |
| 235 | 238 | } |
| 236 | 239 | } |
| 237 | 240 | |
| 238 | - private void validateBatchConfig(Long productId, Long clientId) { | |
| 239 | - // 如果产品有 clientFlag =true,则 clientId 必填 | |
| 240 | - MesMdItemBatchConfigDO batchConfig = itemBatchConfigService.getItemBatchConfigByItemId(productId); | |
| 241 | - if (batchConfig != null && Boolean.TRUE.equals(batchConfig.getClientFlag()) && clientId == null) { | |
| 242 | - // 产品要求批次管理中必须填写客户 | |
| 243 | - throw exception(MD_CLIENT_NOT_EXISTS); | |
| 244 | - } | |
| 245 | - } | |
| 246 | - | |
| 247 | 241 | @Override |
| 248 | 242 | public List<MesProWorkOrderDO> getWorkOrderList(Integer type) { |
| 249 | 243 | return workOrderMapper.selectList(new LambdaQueryWrapperX<MesProWorkOrderDO>() | ... | ... |