From dd637406e18a7afbf08d323c6ece913fe545b7ad Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 28 十月 2026 18:11:32 +0800
Subject: [PATCH] feat(mes): 增加盘号追溯功能和销售退货单优化
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesDetailServiceImpl.java | 34 +++++++++++++++++++++++++++-------
1 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesDetailServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesDetailServiceImpl.java
index 32f0981..0e08f25 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesDetailServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesDetailServiceImpl.java
@@ -65,7 +65,11 @@
@Override
public void updateReturnSalesDetail(MesWmReturnSalesDetailSaveReqVO updateReqVO) {
// 鏍¢獙瀛樺湪
- validateReturnSalesDetailExists(updateReqVO.getId());
+ MesWmReturnSalesDetailDO oldDetail = validateReturnSalesDetailExists(updateReqVO.getId());
+ if (ObjUtil.notEqual(oldDetail.getLineId(), updateReqVO.getLineId())
+ || ObjUtil.notEqual(oldDetail.getReturnId(), updateReqVO.getReturnId())) {
+ throw exception(WM_RETURN_SALES_DETAIL_SOURCE_MISMATCH);
+ }
// 鏍¢獙淇濆瓨鏁版嵁
validateReturnSalesDetailSaveData(updateReqVO);
@@ -134,8 +138,14 @@
private void validateReturnSalesDetailSaveData(MesWmReturnSalesDetailSaveReqVO reqVO) {
// 鏍¢獙鐖舵暟鎹瓨鍦�
MesWmReturnSalesLineDO line = returnSalesLineService.validateReturnSalesLineExists(reqVO.getLineId());
+ if (ObjUtil.notEqual(line.getReturnId(), reqVO.getReturnId())
+ || ObjUtil.notEqual(line.getItemId(), reqVO.getItemId())) {
+ throw exception(WM_RETURN_SALES_DETAIL_SOURCE_MISMATCH);
+ }
// 鏍¢獙閫�璐у崟涓哄緟涓婃灦鐘舵��
validateReturnSalesStatusApproved(line.getReturnId());
+ // 涓婃灦浣跨敤閫�璐ц鐨勬壒娆★紱鑻ヨ娌℃湁鎸囧畾鎵规锛屽厑璁告樉寮忛�夋嫨灞炰簬璇ョ墿鏂欑殑鎵规銆�
+ fillBatchId(reqVO, line);
// 鏍¢獙浠撳簱銆佸簱鍖恒�佸簱浣嶇殑鍏宠仈鍏崇郴
warehouseAreaService.validateWarehouseAreaExists(
reqVO.getWarehouseId(), reqVO.getLocationId(), reqVO.getAreaId());
@@ -144,8 +154,6 @@
// 鏍¢獙鏄庣粏鎬绘暟閲忎笉瓒呰繃琛屾暟閲忥紙鎺掗櫎鑷韩锛�
validateDetailQuantityNotExceed(reqVO.getLineId(), reqVO.getQuantity(), reqVO.getId(), line);
- // 鏍规嵁 batchCode 瑙f瀽 batchId锛堝繀椤诲湪娣锋斁瑙勫垯鏍¢獙涔嬪墠锛屽洜涓哄畠渚濊禆 batchId锛�
- fillBatchId(reqVO);
}
/**
@@ -173,13 +181,25 @@
/**
* 鏍规嵁 batchCode 瑙f瀽骞跺洖濉� batchId
*/
- private void fillBatchId(MesWmReturnSalesDetailSaveReqVO reqVO) {
- if (StrUtil.isBlank(reqVO.getBatchCode())) {
- return;
+ private void fillBatchId(MesWmReturnSalesDetailSaveReqVO reqVO, MesWmReturnSalesLineDO line) {
+ MesWmBatchDO batch = null;
+ if (StrUtil.isNotBlank(reqVO.getBatchCode())) {
+ batch = batchService.getBatchByCode(reqVO.getBatchCode());
+ if (batch == null) throw exception(WM_BATCH_NOT_EXISTS);
+ if (reqVO.getBatchId() != null && ObjUtil.notEqual(batch.getId(), reqVO.getBatchId())) {
+ throw exception(WM_RETURN_SALES_DETAIL_BATCH_MISMATCH);
+ }
+ } else if (reqVO.getBatchId() != null || line.getBatchId() != null) {
+ batch = batchService.validateBatchExists(
+ reqVO.getBatchId() != null ? reqVO.getBatchId() : line.getBatchId(), reqVO.getItemId());
}
- MesWmBatchDO batch = batchService.getBatchByCode(reqVO.getBatchCode());
if (batch != null) {
+ if (ObjUtil.notEqual(batch.getItemId(), reqVO.getItemId())
+ || (line.getBatchId() != null && ObjUtil.notEqual(line.getBatchId(), batch.getId()))) {
+ throw exception(WM_RETURN_SALES_DETAIL_BATCH_MISMATCH);
+ }
reqVO.setBatchId(batch.getId());
+ reqVO.setBatchCode(batch.getCode());
}
}
--
Gitblit v1.9.3