From 260dd6fe156265832544715192ce1491e9c2afd6 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 26 六月 2026 13:41:13 +0800
Subject: [PATCH] fix(stock): 解决库存管理中的重复键异常问题 - 在采购台账服务中添加净合同金额字段设置 - 在销售台账服务中添加净合同金额字段设置 - 在入库记录服务中为库存插入操作添加重复键异常处理 - 在入库记录服务中为非库存插入操作添加重复键异常处理 - 在库存服务中为库存插入操作添加重复键异常处理 - 统一处理数据库唯一键约束冲突,避免系统错误

---
 src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java |   47 +++++++++++++++++++++++++++++++----------------
 1 files changed, 31 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
index 85fc1b1..9ac5410 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -13,6 +13,8 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+
+import java.time.LocalDateTime;
 import com.ruoyi.stock.dto.StockInRecordDto;
 import com.ruoyi.stock.dto.StockInventoryDto;
 import com.ruoyi.stock.dto.StockUninventoryDto;
@@ -53,8 +55,13 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int add(StockInRecordDto stockInRecordDto) {
-        String no = OrderUtils.countTodayByCreateTime(stockInRecordMapper, "RK","inbound_batches");
+        LocalDateTime createTime = stockInRecordDto.getCreateTime();
+        if (createTime == null) {
+            createTime = LocalDateTime.now();
+        }
+        String no = OrderUtils.countTodayByCreateTime(stockInRecordMapper, "RK","inbound_batches", createTime);
         stockInRecordDto.setInboundBatches(no);
+        stockInRecordDto.setCreateTime(createTime);
         StockInRecord stockInRecord = new StockInRecord();
         BeanUtils.copyProperties(stockInRecordDto, stockInRecord);
         return stockInRecordMapper.insert(stockInRecord);
@@ -239,14 +246,18 @@
                     stockInventoryDto.setQualitity(stockInRecord.getStockInNum());
                     stockInventoryDto.setRemark(stockInRecord.getRemark());
                     if (stockInventory == null) {
-                        stockInventoryMapper.insert(new StockInventory() {{
-                            setProductModelId(stockInRecord.getProductModelId());
-                            setQualitity(stockInRecord.getStockInNum());
-                            setBatchNo(stockInRecord.getBatchNo());
-                            setRemark(stockInRecord.getRemark());
-                            setWarnNum(stockInRecord.getWarnNum());
-                            setVersion(1);
-                        }});
+                        try {
+                            stockInventoryMapper.insert(new StockInventory() {{
+                                setProductModelId(stockInRecord.getProductModelId());
+                                setQualitity(stockInRecord.getStockInNum());
+                                setBatchNo(stockInRecord.getBatchNo());
+                                setRemark(stockInRecord.getRemark());
+                                setWarnNum(stockInRecord.getWarnNum());
+                                setVersion(1);
+                            }});
+                        } catch (org.springframework.dao.DuplicateKeyException e) {
+                            stockInventoryMapper.updateAddStockInventory(stockInventoryDto);
+                        }
                     } else {
                         stockInventoryMapper.updateAddStockInventory(stockInventoryDto);
                     }
@@ -259,13 +270,17 @@
                     stockUninventoryDto.setQualitity(stockInRecord.getStockInNum());
                     stockUninventoryDto.setRemark(stockInRecord.getRemark());
                     if (stockUninventory == null) {
-                        stockUninventoryMapper.insert(new StockUninventory() {{
-                            setProductModelId(stockInRecord.getProductModelId());
-                            setQualitity(stockInRecord.getStockInNum());
-                            setBatchNo(stockInRecord.getBatchNo());
-                            setRemark(stockInRecord.getRemark());
-                            setVersion(1);
-                        }});
+                        try {
+                            stockUninventoryMapper.insert(new StockUninventory() {{
+                                setProductModelId(stockInRecord.getProductModelId());
+                                setQualitity(stockInRecord.getStockInNum());
+                                setBatchNo(stockInRecord.getBatchNo());
+                                setRemark(stockInRecord.getRemark());
+                                setVersion(1);
+                            }});
+                        } catch (org.springframework.dao.DuplicateKeyException e) {
+                            stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto);
+                        }
                     } else {
                         stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto);
                     }

--
Gitblit v1.9.3