From bf5f52656e128f578ed42c7979c31cf4b476ce46 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期六, 31 十月 2026 19:04:40 +0800
Subject: [PATCH] feat: 优化业务导入及工艺流程管理

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.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/salesnotice/MesWmSalesNoticeServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java
index 2531f5e..c6ec158 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java
@@ -1,5 +1,9 @@
 package cn.iocoder.yudao.module.mes.service.wm.salesnotice;
 
+import cn.iocoder.yudao.module.mes.api.mps.MesProMpsApi;
+
+import cn.iocoder.yudao.module.erp.api.sale.enums.ErpSaleOrderAuditStatus;
+
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjUtil;
 import cn.hutool.core.util.StrUtil;
@@ -62,6 +66,8 @@
 
     @Resource
     private ErpSaleOrderApi saleOrderApi;
+    @Resource
+    private MesProMpsApi mpsApi;
     @Resource
     private MesMdAutoCodeRecordService autoCodeRecordService;
 
@@ -212,12 +218,22 @@
             throw exception(WM_SALES_NOTICE_SALE_ORDER_NOT_EXISTS);
         }
 
+        if (!Integer.valueOf(ErpSaleOrderAuditStatus.APPROVED).equals(saleOrder.getStatus())) {
+            throw exception(WM_SALES_NOTICE_SALE_ORDER_NOT_APPROVED);
+        }
+
         // 3. 鑾峰彇閿�鍞鍗曟槑缁�
         List<ErpSaleOrderItemRespDTO> saleOrderItems = saleOrderApi.getSaleOrderItemList(saleOrderId).getCheckedData();
         if (CollUtil.isEmpty(saleOrderItems)) {
             throw exception(WM_SALES_NOTICE_SALE_ORDER_ITEM_EMPTY);
         }
 
+        List<Long> productionItemIds = saleOrderItems.stream()
+                .filter(item -> Integer.valueOf(1).equals(item.getNeedProduction()))
+                .map(ErpSaleOrderItemRespDTO::getId).toList();
+        if (!Boolean.TRUE.equals(mpsApi.checkCanCreateSalesNotice(productionItemIds))) {
+            throw exception(WM_SALES_NOTICE_PRODUCTION_NOT_READY);
+        }
         // 4. 鐢熸垚鍙戣揣閫氱煡鍗曠紪鐮�
         String code = autoCodeRecordService.generateAutoCode(MesMdAutoCodeRuleCodeEnum.WM_SALES_NOTICE_CODE.getCode(), null);
 

--
Gitblit v1.9.3