From 84b131de4a1deb526066fc0f7e7514ac43838bf8 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期六, 08 八月 2026 16:16:46 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_长治_祥雨远见' into dev_长治_祥雨远见
---
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 53 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
index 4c89975..f02d65c 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -1,15 +1,22 @@
package com.ruoyi.stock.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
+import com.ruoyi.basic.pojo.Product;
+import com.ruoyi.basic.pojo.ProductModel;
+import com.ruoyi.basic.service.IProductModelService;
+import com.ruoyi.basic.service.IProductService;
+import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import com.ruoyi.sales.pojo.SalesLedgerProductFrozen;
+import com.ruoyi.sales.service.ISalesLedgerProductFrozenService;
import com.ruoyi.stock.dto.StockInRecordDto;
import com.ruoyi.stock.dto.StockInventoryDto;
import com.ruoyi.stock.dto.StockOutRecordDto;
@@ -45,6 +52,11 @@
private StockInRecordService stockInRecordService;
private StockOutRecordService stockOutRecordService;
private SalesLedgerProductMapper salesLedgerProductMapper;
+ private ISalesLedgerProductFrozenService salesLedgerProductFrozenService;
+
+ private final IProductModelService productModelService;
+ private final IProductService productService;
+
@Override
public IPage<StockInventoryDto> pagestockInventory(Page page, StockInventoryDto stockInventoryDto) {
return stockInventoryMapper.pagestockInventory(page, stockInventoryDto);
@@ -94,7 +106,7 @@
stockOutRecordService.add(stockOutRecordDto);
StockInventory oldStockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId()));
if (ObjectUtils.isEmpty(oldStockInventory)) {
- throw new RuntimeException("浜у搧搴撳瓨涓嶅瓨鍦�");
+ throw new RuntimeException(getProductName(stockInventoryDto.getProductModelId()) + " 浜у搧搴撳瓨涓嶅瓨鍦�");
}
BigDecimal lockedQty = oldStockInventory.getLockedQuantity();
if (lockedQty == null) {
@@ -106,6 +118,24 @@
stockInventoryMapper.updateSubtractStockInventory(stockInventoryDto);
return true;
+ }
+
+ private String getProductName(Long productModelId) {
+ if (productModelId == null) {
+ return "";
+ }
+
+ ProductModel productModel = productModelService.getById(productModelId);
+ if (productModel == null) {
+ return "";
+ }
+
+ Product product = productService.getById(productModel.getProductId());
+ if (product == null) {
+ return "";
+ }
+
+ return product.getProductName() + " - " + productModel.getModel();
}
@Override
@@ -127,7 +157,7 @@
item.getSpecificationModel().equals(dto.getModel())) {
StockInventoryDto stockInventoryDto = new StockInventoryDto();
stockInventoryDto.setRecordId(0L);
- stockInventoryDto.setRecordType(StockQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_IN.getCode());
+ stockInventoryDto.setRecordType(StockInQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_IN.getCode());
stockInventoryDto.setQualitity(dto.getQualitity());
stockInventoryDto.setRemark(dto.getRemark());
stockInventoryDto.setWarnNum(dto.getWarnNum());
@@ -200,10 +230,28 @@
@Override
public Boolean thawStock(StockInventoryDto stockInventoryDto) {
StockInventory stockInventory = stockInventoryMapper.selectById(stockInventoryDto.getId());
- if (stockInventory.getLockedQuantity().compareTo(stockInventoryDto.getLockedQuantity())<0) {
+ if (stockInventory.getLockedQuantity().compareTo(stockInventoryDto.getLockedQuantity()) < 0) {
throw new RuntimeException("瑙e喕鏁伴噺涓嶈兘瓒呰繃鍐荤粨鏁伴噺");
}
- stockInventory.setLockedQuantity(stockInventory.getLockedQuantity().subtract(stockInventoryDto.getLockedQuantity()));
+
+ BigDecimal newLockedQty = stockInventory.getLockedQuantity().subtract(stockInventoryDto.getLockedQuantity());
+
+ // 涓嶈兘灏忎簬绯荤粺宸茬粦瀹氱殑鍐荤粨鏁伴噺
+ List<SalesLedgerProductFrozen> frozenList = salesLedgerProductFrozenService.list(new LambdaQueryWrapper<SalesLedgerProductFrozen>()
+ .eq(SalesLedgerProductFrozen::getProductModelId, stockInventory.getProductModelId()));
+ BigDecimal systemFrozenTotal = BigDecimal.ZERO;
+ if (frozenList != null) {
+ for (SalesLedgerProductFrozen frozen : frozenList) {
+ if (frozen.getFrozenQuantity() != null) {
+ systemFrozenTotal = systemFrozenTotal.add(frozen.getFrozenQuantity());
+ }
+ }
+ }
+ if (newLockedQty.compareTo(systemFrozenTotal) < 0) {
+ throw new RuntimeException("鎿嶄綔澶辫触锛屽綋鍓嶄骇鍝佽閿�鍞鍗曠‖鎬у喕缁撴暟閲忎负: " + systemFrozenTotal + "锛屽墿浣欒В鍐绘暟閲忎笉鑳戒綆浜庢鏁板��");
+ }
+
+ stockInventory.setLockedQuantity(newLockedQty);
return this.updateById(stockInventory);
}
}
--
Gitblit v1.9.3