| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.line.MesWmProductIssueLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.line.MesWmProductIssueLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderBomDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO; |
| | | import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskService; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.productissue.MesWmProductIssueLineMapper; |
| | |
| | | import org.springframework.validation.annotation.Validated; |
| | | |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| | | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_PRODUCT_ISSUE_LINE_ITEM_NOT_IN_BOM; |
| | |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesProWorkOrderBomService workOrderBomService; |
| | | @Resource |
| | | private MesProTaskService taskService; |
| | | @Resource |
| | | @Lazy |
| | | private MesWmProductIssueDetailService issueDetailService; |
| | |
| | | private void validateItemInWorkOrderBom(Long issueId, Long itemId) { |
| | | // 校验领料单存在,并获取工单编号 |
| | | MesWmProductIssueDO issue = issueService.validateProductIssueExists(issueId); |
| | | if (issue.getTaskId() != null) { |
| | | MesProTaskDO task = taskService.validateTaskExists(issue.getTaskId()); |
| | | if (task.getWorkOrderId() == null || task.getProcessId() == null |
| | | || !Objects.equals(issue.getWorkOrderId(), task.getWorkOrderId()) |
| | | || workOrderBomService.getWorkOrderBomListByWorkOrderId(task.getWorkOrderId()).stream() |
| | | .noneMatch(bom -> Objects.equals(bom.getProcessId(), task.getProcessId()) |
| | | && Objects.equals(bom.getItemId(), itemId))) { |
| | | throw exception(WM_PRODUCT_ISSUE_LINE_ITEM_NOT_IN_BOM); |
| | | } |
| | | return; |
| | | } |
| | | // 校验物料是否在工单 BOM 中(防错料) |
| | | List<MesProWorkOrderBomDO> workOrderBoms = workOrderBomService.getWorkOrderBomListByWorkOrderId(issue.getWorkOrderId()); |
| | | if (CollUtil.isEmpty(workOrderBoms)) { |