From c47c8647f514eaa8c6a7624185b55738e8625c2c Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 05 十一月 2026 13:37:31 +0800
Subject: [PATCH] feat(product-issue): 支持按任务工序校验和选择领料物料
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueLineServiceImpl.java | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueLineServiceImpl.java
index 4ed4684..0485b38 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueLineServiceImpl.java
@@ -6,6 +6,8 @@
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;
@@ -17,6 +19,7 @@
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;
@@ -39,6 +42,8 @@
private MesMdmItemService mdmItemService;
@Resource
private MesProWorkOrderBomService workOrderBomService;
+ @Resource
+ private MesProTaskService taskService;
@Resource
@Lazy
private MesWmProductIssueDetailService issueDetailService;
@@ -120,6 +125,17 @@
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)) {
--
Gitblit v1.9.3