From 883f5e73fbe7458fd760dbe8560dd5d8757e04cd Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期三, 04 十一月 2026 13:56:29 +0800
Subject: [PATCH] refactor: 按需求表收敛范围,撤销非需求模块,补齐售后回访闭环

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java |   50 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 41 insertions(+), 9 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java
index 590df99..e684794 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java
@@ -5,8 +5,10 @@
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.ObjUtil;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchGenerateReqVO;
 import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.line.MesWmProductSalesLinePageReqVO;
 import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.line.MesWmProductSalesLineSaveReqVO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO;
 import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesLineMapper;
@@ -35,7 +37,7 @@
 /**
  * MES 閿�鍞嚭搴撳崟琛� Service 瀹炵幇绫�
  *
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
  */
 @Service
 @Validated
@@ -167,15 +169,45 @@
     }
 
     /**
-     * 鏍规嵁 batchCode 瑙f瀽 batchId
+     * 瑙f瀽骞跺~鍏呮壒娆�
+     *
+     * <p>鍚敤鎵规绠$悊鐨勭墿鏂欏嚭搴撴椂蹇呴』钀芥壒娆★紱鏈褰曟壒娆℃椂鎸夌墿鏂� + 瀹㈡埛 + 閿�鍞鍗曡嚜鍔ㄧ敓鎴愶紝
+     * 渚涘悗缁��璐х瓑涓氬姟杩芥函銆�
      */
-    private void fillBatchId(MesWmProductSalesLineSaveReqVO reqVO) {
-        if (StrUtil.isBlank(reqVO.getBatchCode())) {
+    private void fillBatchId(MesWmProductSalesDO sales, MesMdmItemDO item,
+                             MesWmProductSalesLineSaveReqVO reqVO) {
+        if (StrUtil.isNotBlank(reqVO.getBatchCode())) {
+            MesWmBatchDO batch = batchService.getBatchByCode(reqVO.getBatchCode());
+            if (batch != null) {
+                reqVO.setBatchId(batch.getId());
+                return;
+            }
+            if (!Boolean.TRUE.equals(item.getIsBatchManaged())) {
+                reqVO.setBatchId(null);
+                return;
+            }
+            // 鎸囧畾浜嗘壒娆″彿浣嗙郴缁熶腑涓嶅瓨鍦紝鎸夎鎵规鍙峰缓妗�
+            MesWmBatchDO created = batchService.getOrGenerateBatchCode(buildBatchGenerateReq(sales, reqVO));
+            reqVO.setBatchId(created != null ? created.getId() : null);
+            return;
+        }
+        if (!Boolean.TRUE.equals(item.getIsBatchManaged())) {
             reqVO.setBatchId(null);
             return;
         }
-        MesWmBatchDO batch = batchService.getBatchByCode(reqVO.getBatchCode());
-        reqVO.setBatchId(batch != null ? batch.getId() : null);
+        // 鏈褰曟壒娆★紝鑷姩鐢熸垚
+        MesWmBatchDO batch = batchService.getOrGenerateBatchCode(buildBatchGenerateReq(sales, reqVO));
+        reqVO.setBatchId(batch != null ? batch.getId() : null)
+                .setBatchCode(batch != null ? batch.getCode() : null);
+    }
+
+    private MesWmBatchGenerateReqVO buildBatchGenerateReq(MesWmProductSalesDO sales,
+                                                          MesWmProductSalesLineSaveReqVO reqVO) {
+        return new MesWmBatchGenerateReqVO()
+                .setItemId(reqVO.getItemId())
+                .setBatchCode(reqVO.getBatchCode())
+                .setClientId(sales.getClientId())
+                .setSalesOrderCode(sales.getSalesOrderCode());
     }
 
     /**
@@ -185,11 +217,11 @@
         // 鏍¢獙涓诲崟瀛樺湪涓斾负鑽夌鐘舵��
         MesWmProductSalesDO sales = productSalesService.validateProductSalesExistsAndDraft(reqVO.getSalesId());
         // 鏍¢獙鐗╂枡瀛樺湪
-        mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
+        MesMdmItemDO item = mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
         // 鏍¢獙鍏宠仈鍙戣揣閫氱煡鍗曡锛堝瓨鍦ㄦ�� + 褰掑睘 + 瀛楁涓�鑷存�э級
         validateSalesNoticeLine(sales, reqVO);
-        // 鏍规嵁 batchCode 瑙f瀽 batchId
-        fillBatchId(reqVO);
+        // 瑙f瀽鎵规
+        fillBatchId(sales, item, reqVO);
     }
 
     /**

--
Gitblit v1.9.3