From daf9f8dbb7ba36eb283221d2c6022039aefaf97d Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期日, 25 十月 2026 00:40:38 +0800
Subject: [PATCH] feat(aftersales): 售后退货单同步MES批次信息并优化工单处理流程
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java | 48 ++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 40 insertions(+), 8 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 30303e7..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;
@@ -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