From 1b2c073398c674d9b0e4aaf51d5beaae0a1ee069 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期二, 04 八月 2026 16:23:42 +0800
Subject: [PATCH] fix: 生产报工只看查看本人或者交接人
---
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 51 insertions(+), 4 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 5cb6dda..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,16 +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.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.enums.StockOutQualifiedRecordTypeEnum;
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;
@@ -46,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);
@@ -95,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) {
@@ -107,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
@@ -201,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