From bb302afba7c479d313d513370ea7dd6ac4da3c21 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 03 七月 2026 15:39:46 +0800
Subject: [PATCH] Merge branch 'dev_New_pro' of http://114.132.189.42:9002/r/product-inventory-management-after into dev_New_pro
---
src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java | 102 +++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 86 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 61aac8b..00161b5 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -21,6 +21,14 @@
import com.ruoyi.stock.execl.StockInRecordExportData;
import com.ruoyi.production.mapper.ProductionOrderPickMapper;
import com.ruoyi.production.pojo.ProductionOrderPick;
+import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper;
+import com.ruoyi.procurementrecord.mapper.ReturnSaleProductMapper;
+import com.ruoyi.procurementrecord.pojo.ReturnManagement;
+import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
+import com.ruoyi.sales.mapper.SalesLedgerMapper;
+import com.ruoyi.sales.mapper.ShippingInfoMapper;
+import com.ruoyi.sales.pojo.SalesLedger;
+import com.ruoyi.sales.pojo.ShippingInfo;
import com.ruoyi.stock.mapper.StockInRecordMapper;
import com.ruoyi.stock.mapper.StockInventoryMapper;
import com.ruoyi.stock.mapper.StockUninventoryMapper;
@@ -45,6 +53,10 @@
private StockInventoryMapper stockInventoryMapper;
private StockUninventoryMapper stockUninventoryMapper;
private ProductionOrderPickMapper productionOrderPickMapper;
+ private ReturnSaleProductMapper returnSaleProductMapper;
+ private ReturnManagementMapper returnManagementMapper;
+ private ShippingInfoMapper shippingInfoMapper;
+ private SalesLedgerMapper salesLedgerMapper;
@Override
public IPage<StockInRecordDto> listPage(Page page, StockInRecordDto stockInRecordDto) {
@@ -55,8 +67,13 @@
@Override
@Transactional(rollbackFor = Exception.class)
public int add(StockInRecordDto stockInRecordDto) {
- String no = OrderUtils.countTodayByCreateTime(stockInRecordMapper, "RK","inbound_batches", stockInRecordDto.getCreateTime() != null ? stockInRecordDto.getCreateTime() : LocalDateTime.now());
+ 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);
@@ -241,14 +258,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);
}
@@ -261,17 +282,23 @@
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);
}
}
+ // 閿�鍞��璐у叆搴�:鎵e噺閿�鍞彴璐﹀疄闄呭悎鍚岄噾棰�(閫�璐х敓鏁�)
+ handleSalesReturnRefund(stockInRecord);
}
}
return ids.size();
@@ -322,4 +349,47 @@
return ids.size();
}
+
+ /**
+ * 閿�鍞��璐у叆搴撳鎵归�氳繃鏃�,鎵e噺瀵瑰簲閿�鍞彴璐︾殑瀹為檯鍚堝悓閲戦銆�
+ * 鍏宠仈閾�:stock_in_record.record_id = return_sale_product.id
+ * 鈫� return_management.shipping_id = shipping_info.id
+ * 鈫� shipping_info.sales_ledger_id = sales_ledger.id
+ * 鍙鐞� record_type 涓� 14(鍚堟牸)鎴� 15(涓嶅悎鏍�)鐨勯攢鍞��璐у叆搴撱��
+ */
+ private void handleSalesReturnRefund(StockInRecord stockInRecord) {
+ String recordType = stockInRecord.getRecordType();
+ if (!StockInQualifiedRecordTypeEnum.RETURN_HE_IN.getCode().equals(recordType)
+ && !StockInQualifiedRecordTypeEnum.RETURN_UNSTOCK_IN.getCode().equals(recordType)) {
+ return;
+ }
+ if (stockInRecord.getRecordId() == null) {
+ return;
+ }
+ ReturnSaleProduct rsp = returnSaleProductMapper.selectById(stockInRecord.getRecordId());
+ if (rsp == null || rsp.getReturnManagementId() == null) {
+ return;
+ }
+ ReturnManagement rm = returnManagementMapper.selectById(rsp.getReturnManagementId());
+ if (rm == null || rm.getShippingId() == null) {
+ return;
+ }
+ ShippingInfo shippingInfo = shippingInfoMapper.selectById(rm.getShippingId());
+ if (shippingInfo == null || shippingInfo.getSalesLedgerId() == null) {
+ return;
+ }
+ SalesLedger salesLedger = salesLedgerMapper.selectById(shippingInfo.getSalesLedgerId());
+ if (salesLedger == null || salesLedger.getContractAmount() == null) {
+ return;
+ }
+ BigDecimal refund = rsp.getAmount() != null ? rsp.getAmount() : BigDecimal.ZERO;
+ if (refund.compareTo(BigDecimal.ZERO) == 0) {
+ return;
+ }
+ BigDecimal baseAmount = salesLedger.getNetContractAmount() != null
+ ? salesLedger.getNetContractAmount()
+ : salesLedger.getContractAmount();
+ salesLedger.setNetContractAmount(baseAmount.subtract(refund));
+ salesLedgerMapper.updateById(salesLedger);
+ }
}
--
Gitblit v1.9.3