From 05ab6e3f69a5e73624b2573db043f5923e8f7d8b Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期四, 05 十一月 2026 14:17:19 +0800
Subject: [PATCH] fix 修复bug
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java | 29 ++++++++++++++++++++++-------
1 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java
index 5d37848..8f2a662 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemreceipt/MesWmItemReceiptServiceImpl.java
@@ -41,7 +41,9 @@
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.validation.annotation.Validated;
import lombok.extern.slf4j.Slf4j;
@@ -72,6 +74,8 @@
@Resource
private MesWmItemReceiptLineService itemReceiptLineService;
+ @Resource
+ private PlatformTransactionManager transactionManager;
@Resource
private MesWmItemReceiptDetailService itemReceiptDetailService;
@Resource
@@ -537,7 +541,6 @@
// ==================== 鎵归噺瀵煎叆 ====================
@Override
- @Transactional(rollbackFor = Exception.class)
public MesWmDocImportRespVO importItemReceiptList(List<MesWmItemReceiptImportExcelVO> importList) {
MesWmDocImportRespVO respVO = MesWmDocImportRespVO.empty();
if (CollUtil.isEmpty(importList)) {
@@ -614,10 +617,18 @@
saveReqVO.setRemark(StrUtil.trim(head.getRemark()));
Long receiptId = createItemReceipt(saveReqVO);
// 3.4 閫愯鍒涘缓鏄庣粏
+ int createdLines = 0;
for (MesWmItemReceiptImportExcelVO row : rows) {
- createItemReceiptLineByImport(receiptId, row, respVO, code);
+ if (createItemReceiptLineByImport(receiptId, row, respVO, code)) {
+ createdLines++;
+ }
}
- respVO.getCreateCodes().add(code);
+ if (createdLines == 0) {
+ // 娌℃湁浠讳綍鏈夋晥鏄庣粏鏃朵笉淇濈暀绌哄崟锛屼篃涓嶆姤鍛婂鍏ユ垚鍔熴��
+ itemReceiptMapper.deleteById(receiptId);
+ } else {
+ respVO.getCreateCodes().add(code);
+ }
} catch (Exception e) {
respVO.getFailureCodes().put(code, e.getMessage() == null ? "瀵煎叆澶辫触" : e.getMessage());
}
@@ -628,17 +639,17 @@
/**
* 瀵煎叆鏃跺垱寤哄崟琛屾槑缁嗭紱澶辫触鍙褰曚笉鎶涘嚭锛岄伩鍏嶅奖鍝嶆暣寮犲崟鎹殑鍏跺畠琛�
*/
- private void createItemReceiptLineByImport(Long receiptId, MesWmItemReceiptImportExcelVO row,
+ private boolean createItemReceiptLineByImport(Long receiptId, MesWmItemReceiptImportExcelVO row,
MesWmDocImportRespVO respVO, String receiptCode) {
String itemCode = StrUtil.trim(row.getItemCode());
MesMdItemDO item = itemCode == null ? null : mdItemService.getItemByCode(itemCode);
if (item == null) {
respVO.getFailureCodes().put(receiptCode, "鐗╂枡缂栫爜[" + itemCode + "]涓嶅瓨鍦紝璇ヨ宸茶烦杩�");
- return;
+ return false;
}
if (row.getReceivedQuantity() == null || row.getReceivedQuantity().signum() <= 0) {
respVO.getFailureCodes().put(receiptCode, "鐗╂枡[" + itemCode + "]鍏ュ簱鏁伴噺蹇呴』澶т簬 0锛岃琛屽凡璺宠繃");
- return;
+ return false;
}
try {
MesWmItemReceiptLineSaveReqVO lineReqVO = new MesWmItemReceiptLineSaveReqVO();
@@ -649,9 +660,13 @@
lineReqVO.setExpireDate(parseImportDateTime(row.getExpireDate()));
lineReqVO.setLotNumber(StrUtil.trim(row.getLotNumber()));
lineReqVO.setRemark(StrUtil.trim(row.getRemark()));
- itemReceiptLineService.createItemReceiptLine(lineReqVO);
+ // 姣忚鐙珛浜嬪姟锛氭壒娆℃牎楠屽け璐ユ椂鍙洖婊氳琛岋紝閬垮厤姹℃煋鏁存瀵煎叆浜嬪姟銆�
+ new TransactionTemplate(transactionManager).executeWithoutResult(
+ status -> itemReceiptLineService.createItemReceiptLine(lineReqVO));
+ return true;
} catch (Exception e) {
respVO.getFailureCodes().put(receiptCode, "鐗╂枡[" + itemCode + "]鏄庣粏鍒涘缓澶辫触锛�" + e.getMessage());
+ return false;
}
}
--
Gitblit v1.9.3