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/returnsales/MesWmReturnSalesLineServiceImpl.java | 46 +++++++++++++++++++++++++++++-----------------
1 files changed, 29 insertions(+), 17 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java
index 30b1ad6..49414ff 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java
@@ -4,10 +4,12 @@
import cn.hutool.core.util.ObjUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
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.returnsales.vo.line.MesWmReturnSalesLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLineSaveReqVO;
import cn.iocoder.yudao.module.mes.api.event.MesReturnSalesProgressEvent;
import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnsales.MesWmReturnSalesLineMapper;
@@ -27,6 +29,7 @@
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MD_ITEM_BATCH_REQUIRED;
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_BATCH_CLIENT_MISMATCH;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_RETURN_SALES_LINE_NOT_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_RETURN_SALES_RQC_SOURCE_INVALID;
@@ -87,9 +90,9 @@
*/
private void validateLineSaveData(MesWmReturnSalesLineSaveReqVO reqVO) {
// 鏍¢獙閫�璐у崟瀛樺湪 + 鑽夌鐘舵��
- returnSalesService.validateReturnSalesExistsAndPrepare(reqVO.getReturnId());
- // 鏍¢獙鐗╂枡瀛樺湪 + 鎵规绠$悊
- validateItemBatchManagement(reqVO.getReturnId(), reqVO.getItemId(), reqVO.getBatchId());
+ MesWmReturnSalesDO returnSales = returnSalesService.validateReturnSalesExistsAndPrepare(reqVO.getReturnId());
+ // 鏍¢獙鐗╂枡瀛樺湪 + 瑙f瀽鎵规
+ resolveAndValidateBatch(returnSales, reqVO);
}
@Override
@@ -153,24 +156,33 @@
}
/**
- * 鏍¢獙鐗╂枡鎵规绠$悊
+ * 瑙f瀽骞舵牎楠岀墿鏂欐壒娆�
*
- * @param returnId 閫�璐у崟ID
- * @param itemId 鐗╂枡ID
- * @param batchId 鎵规ID
+ * <p>閫�璐у晢鍝佸湪閿�鍞嚭搴撴椂鍙兘鏈褰曟壒娆★紝姝ゆ椂鎸夌墿鏂� + 瀹㈡埛 + 閿�鍞鍗曡嚜鍔ㄧ敓鎴愰��璐ф壒娆★紝
+ * 淇濊瘉閫�璐у崟浠嶅彲杩芥函鍒板叿浣撴壒娆★紱宸叉湁鎵规鍒欐牎楠岀墿鏂欏綊灞烇紝鎵规鏈寚瀹氬鎴锋椂瑙嗕负閫氱敤鎵规銆�
*/
- private void validateItemBatchManagement(Long returnId, Long itemId, Long batchId) {
- MesMdmItemDO item = mdmItemService.validateItemExistsAndEnable(itemId);
- // 濡傛灉鐗╂枡鍚敤浜嗘壒娆$鐞嗭紝鍒欏繀椤婚�夋嫨鎵规
- if (Boolean.TRUE.equals(item.getIsBatchManaged()) && batchId == null) {
+ private void resolveAndValidateBatch(MesWmReturnSalesDO returnSales, MesWmReturnSalesLineSaveReqVO reqVO) {
+ MesMdmItemDO item = mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
+ if (reqVO.getBatchId() != null) {
+ MesWmBatchDO batch = batchService.validateBatchExists(reqVO.getBatchId(), reqVO.getItemId());
+ if (batch.getClientId() != null && ObjUtil.notEqual(batch.getClientId(), returnSales.getClientId())) {
+ throw exception(WM_BATCH_CLIENT_MISMATCH);
+ }
+ reqVO.setBatchCode(batch.getCode());
+ return;
+ }
+ if (!Boolean.TRUE.equals(item.getIsBatchManaged())) {
+ return;
+ }
+ MesWmBatchGenerateReqVO batchReqVO = new MesWmBatchGenerateReqVO()
+ .setItemId(reqVO.getItemId())
+ .setClientId(returnSales.getClientId())
+ .setSalesOrderCode(returnSales.getSalesOrderCode());
+ MesWmBatchDO batch = batchService.getOrGenerateBatchCode(batchReqVO);
+ if (batch == null) {
throw exception(MD_ITEM_BATCH_REQUIRED);
}
- // 鏍¢獙鎵规瀛樺湪涓斿睘浜庡綋鍓嶇墿鏂欏拰瀹㈡埛
- if (batchId != null) {
- // 浠庣埗鍗曡幏鍙栧鎴稩D锛屾牎楠屾壒娆″綊灞�
- MesWmReturnSalesDO returnSales = returnSalesService.validateReturnSalesExistsAndPrepare(returnId);
- batchService.validateBatchExists(batchId, itemId, returnSales.getClientId(), null);
- }
+ reqVO.setBatchId(batch.getId()).setBatchCode(batch.getCode());
}
@Override
--
Gitblit v1.9.3