Commit fc72fbfc0ed507d32ace908b5d4141df53dd308a
1 parent
7df27df3
✨ feat(mes): 新增物料在工单 BOM 中的校验逻辑
Showing
1 changed file
with
31 additions
and
1 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/outsourceissue/MesWmOutsourceIssueLineServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.module.mes.service.wm.outsourceissue; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.util.StrUtil; |
| 4 | +import cn.hutool.core.collection.CollUtil; | |
| 4 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | 6 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 6 | 7 | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.line.MesWmOutsourceIssueLinePageReqVO; |
| 7 | 8 | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.line.MesWmOutsourceIssueLineSaveReqVO; |
| 8 | 9 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueLineDO; |
| 10 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueDO; | |
| 9 | 11 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourceissue.MesWmOutsourceIssueLineMapper; |
| 10 | 12 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; |
| 13 | +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderBomDO; | |
| 11 | 14 | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| 15 | +import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderBomService; | |
| 12 | 16 | import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; |
| 13 | 17 | import jakarta.annotation.Resource; |
| 14 | 18 | import org.springframework.context.annotation.Lazy; |
| ... | ... | @@ -19,6 +23,8 @@ import java.util.List; |
| 19 | 23 | |
| 20 | 24 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 21 | 25 | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_OUTSOURCE_ISSUE_LINE_NOT_EXISTS; |
| 26 | +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_OUTSOURCE_ISSUE_LINE_ITEM_NOT_IN_BOM; | |
| 27 | +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_OUTSOURCE_ISSUE_NOT_EXISTS; | |
| 22 | 28 | |
| 23 | 29 | /** |
| 24 | 30 | * MES 外协发料单行 Service 实现类 |
| ... | ... | @@ -41,6 +47,8 @@ public class MesWmOutsourceIssueLineServiceImpl implements MesWmOutsourceIssueLi |
| 41 | 47 | private MesMdItemService itemService; |
| 42 | 48 | @Resource |
| 43 | 49 | private MesWmBatchService batchService; |
| 50 | + @Resource | |
| 51 | + private MesProWorkOrderBomService workOrderBomService; | |
| 44 | 52 | |
| 45 | 53 | @Override |
| 46 | 54 | public Long createOutsourceIssueLine(MesWmOutsourceIssueLineSaveReqVO createReqVO) { |
| ... | ... | @@ -108,9 +116,31 @@ public class MesWmOutsourceIssueLineServiceImpl implements MesWmOutsourceIssueLi |
| 108 | 116 | |
| 109 | 117 | private void validateOutsourceIssueLineSaveData(MesWmOutsourceIssueLineSaveReqVO saveReqVO) { |
| 110 | 118 | // 校验关联的发料单存在 |
| 111 | - outsourceIssueService.getOutsourceIssue(saveReqVO.getIssueId()); | |
| 119 | + MesWmOutsourceIssueDO issue = outsourceIssueService.getOutsourceIssue(saveReqVO.getIssueId()); | |
| 120 | + if (issue == null) { | |
| 121 | + throw exception(WM_OUTSOURCE_ISSUE_NOT_EXISTS); | |
| 122 | + } | |
| 112 | 123 | // 校验关联的物料存在 |
| 113 | 124 | itemService.validateItemExists(saveReqVO.getItemId()); |
| 125 | + // 校验物料是否在工单 BOM 中 | |
| 126 | + validateItemInWorkOrderBom(issue.getWorkOrderId(), saveReqVO.getItemId()); | |
| 127 | + } | |
| 128 | + | |
| 129 | + private void validateItemInWorkOrderBom(Long workOrderId, Long itemId) { | |
| 130 | + if (workOrderId == null) { | |
| 131 | + return; | |
| 132 | + } | |
| 133 | + // 获取当前外协工单的 BOM 列表 | |
| 134 | + List<MesProWorkOrderBomDO> workOrderBoms = workOrderBomService.getWorkOrderBomListByWorkOrderId(workOrderId); | |
| 135 | + if (CollUtil.isEmpty(workOrderBoms)) { | |
| 136 | + return; | |
| 137 | + } | |
| 138 | + // 检查发料的物料是否在 BOM 列表中 | |
| 139 | + MesProWorkOrderBomDO workOrderBom = CollUtil.findOne(workOrderBoms, | |
| 140 | + bom -> bom.getItemId().equals(itemId)); | |
| 141 | + if (workOrderBom == null) { | |
| 142 | + throw exception(WM_OUTSOURCE_ISSUE_LINE_ITEM_NOT_IN_BOM); | |
| 143 | + } | |
| 114 | 144 | } |
| 115 | 145 | |
| 116 | 146 | /** | ... | ... |