From 0617c5edd84b4b63047226797b066ac79426542e Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期一, 11 五月 2026 16:19:20 +0800
Subject: [PATCH] refactor(stock): 优化盘点计划编辑功能的商品关联处理
---
src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java | 36 ++++++++++++++++++++++++++++--------
1 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java
index 4b6bfa0..86b78a1 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java
@@ -22,10 +22,8 @@
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* <p>
@@ -206,19 +204,41 @@
public R edit(StockInventoryCheckPlanDto stockInventoryCheckPlanDto) {
SysUser sysUser = sysUserMapper.selectUserById(stockInventoryCheckPlanDto.getCheckerId());
stockInventoryCheckPlanDto.setCheckerName(sysUser.getNickName());
- //璧嬪��
- //璁剧疆鐩樼偣鍟嗗搧鍏宠仈ID骞舵煡璇㈢郴缁熷簱瀛�
+ // 鏌ヨ鏁版嵁搴撲腑鐨勬棫鏁版嵁
+ List<StockInventoryCheckProduct> oldItems = stockInventoryCheckProductMapper.selectList(
+ new LambdaQueryWrapper<StockInventoryCheckProduct>()
+ .eq(StockInventoryCheckProduct::getInventoryCheckPlanId, stockInventoryCheckPlanDto.getId()));
+ // 璁剧疆鐩樼偣鍟嗗搧鍏宠仈 ID 骞舵煡璇㈢郴缁熷簱瀛�
stockInventoryCheckPlanDto.getItems().forEach(item -> {
item.setInventoryCheckPlanId(stockInventoryCheckPlanDto.getId());
- List<StockInventory> list = stockInventoryService.list(new LambdaQueryWrapper<StockInventory>().eq(StockInventory::getProductModelId, item.getProductModelId()));
+ // 鏌ヨ骞惰缃郴缁熷簱瀛�
+ List<StockInventory> list = stockInventoryService.list(
+ new LambdaQueryWrapper<StockInventory>().eq(StockInventory::getProductModelId, item.getProductModelId()));
BigDecimal systemQty = list.stream()
.map(StockInventory::getQualitity)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
item.setSystemQuantity(systemQty);
+ // 濡傛灉鏃ф暟鎹腑涓嶅瓨鍦ㄨ ID锛岃鏄庢槸鏂板锛岄渶瑕佹竻绌� ID 璁╂暟鎹簱鑷姩鐢熸垚
+ boolean isExisting = oldItems.stream().anyMatch(old -> old.getId().equals(item.getId()));
+ if (!isExisting) {
+ item.setId(null);
+ }
});
- //鏇存柊鎴栨柊澧�
+ // 浣跨敤 insertOrUpdate 鎵归噺澶勭悊锛岃嚜鍔ㄥ尯鍒嗘柊澧炲拰鏇存柊
stockInventoryCheckProductMapper.insertOrUpdate(stockInventoryCheckPlanDto.getItems());
+ // 澶勭悊鍒犻櫎锛氭棫鏁版嵁涓湁浣嗘柊鏁版嵁涓病鏈夌殑椤�
+ Set<Long> newItemIds = stockInventoryCheckPlanDto.getItems().stream()
+ .map(StockInventoryCheckProduct::getId)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toSet());
+ List<Long> toDeleteIds = oldItems.stream()
+ .map(StockInventoryCheckProduct::getId)
+ .filter(id -> !newItemIds.contains(id))
+ .collect(Collectors.toList());
+ if (!toDeleteIds.isEmpty()) {
+ stockInventoryCheckProductMapper.deleteByIds(toDeleteIds);
+ }
return R.ok(this.updateById(stockInventoryCheckPlanDto));
}
--
Gitblit v1.9.3