From 1fd7a7d67a5df84b57af4fbcc310aa66da3cd8ca Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 25 三月 2026 17:51:16 +0800
Subject: [PATCH] feat:1.出入库单位转换 2.仓储/耗材导出字段值优化 3.仓储/耗材库存为0不展示
---
src/main/resources/mapper/consumables/ConsumablesInventoryMapper.xml | 62 +++++++++++---------
src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java | 2
src/main/resources/mapper/stock/StockOutRecordMapper.xml | 2
src/main/java/com/ruoyi/production/dto/ProductOrderDto.java | 3 +
src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java | 1
src/main/resources/mapper/consumables/ConsumablesInRecordMapper.xml | 2
src/main/resources/mapper/stock/StockInventoryMapper.xml | 10 ++-
src/main/java/com/ruoyi/consumables/execl/ConsumablesOutRecordExportData.java | 2
src/main/resources/mapper/stock/StockInRecordMapper.xml | 2
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java | 47 +++++++++++++--
src/main/java/com/ruoyi/stock/execl/StockOutRecordExportData.java | 2
src/main/resources/mapper/consumables/ConsumablesOutRecordMapper.xml | 2
12 files changed, 96 insertions(+), 41 deletions(-)
diff --git a/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java b/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
index f1348db..0d4a3b4 100644
--- a/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
+++ b/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
@@ -8,7 +8,6 @@
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
-import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
diff --git a/src/main/java/com/ruoyi/consumables/execl/ConsumablesOutRecordExportData.java b/src/main/java/com/ruoyi/consumables/execl/ConsumablesOutRecordExportData.java
index 3e8f65f..4a05220 100644
--- a/src/main/java/com/ruoyi/consumables/execl/ConsumablesOutRecordExportData.java
+++ b/src/main/java/com/ruoyi/consumables/execl/ConsumablesOutRecordExportData.java
@@ -20,7 +20,7 @@
@Excel(name = "鍑哄簱鏉ユ簮")
private String recordType;
@Excel(name = "鍑哄簱鏁伴噺")
- private String ConsumablesInNum;
+ private String stockOutNum;
@Excel(name = "鍑哄簱鏃堕棿")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
diff --git a/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java b/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
index dc2185a..216e67a 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
@@ -57,4 +57,7 @@
//鏄惁鍙戣揣(鍙拌处椤甸潰棰滆壊鎺у埗)
private Boolean isFh;
+
+ //鍗曚綅
+ private String unit;
}
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
index ac5aacc..af3a299 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
@@ -4,12 +4,14 @@
import com.ruoyi.stock.pojo.StockInventory;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
+@EqualsAndHashCode(callSuper = true)
@Data
public class StockInventoryDto extends StockInventory {
diff --git a/src/main/java/com/ruoyi/stock/execl/StockOutRecordExportData.java b/src/main/java/com/ruoyi/stock/execl/StockOutRecordExportData.java
index f120817..3983aff 100644
--- a/src/main/java/com/ruoyi/stock/execl/StockOutRecordExportData.java
+++ b/src/main/java/com/ruoyi/stock/execl/StockOutRecordExportData.java
@@ -20,7 +20,7 @@
@Excel(name = "鍑哄簱鏉ユ簮")
private String recordType;
@Excel(name = "鍑哄簱鏁伴噺")
- private String stockInNum;
+ private String stockOutNum;
@Excel(name = "鍑哄簱鏃堕棿")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
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 2f6d54c..ca4e84d 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -12,6 +12,7 @@
import com.ruoyi.basic.pojo.ProductModel;
import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.equipmentenergyconsumption.mapper.ElectricityConsumptionAreaMapper;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.stock.dto.StockInRecordDto;
@@ -34,6 +35,7 @@
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.List;
/**
@@ -55,6 +57,7 @@
private final WeighbridgeDocGenerator weighbridgeDocGenerator;
private final ProductMapper productMapper;
private final ProductModelMapper productModelMapper;
+ private final ElectricityConsumptionAreaMapper electricityConsumptionAreaMapper;
@Override
public IPage<StockInventoryDto> pagestockInventory(Page page, StockInventoryDto stockInventoryDto) {
@@ -70,10 +73,12 @@
stockInRecordDto.setRecordId(stockInventoryDto.getRecordId());
stockInRecordDto.setRecordType(stockInventoryDto.getRecordType());
stockInRecordDto.setWeighingOperator(stockInventoryDto.getWeighingOperator());
+ Long modelId;
if (stockInventoryDto.getProductId() != null) {
stockInRecordDto.setProductId(stockInventoryDto.getProductId());
stockInRecordDto.setProductModelId(stockInventoryDto.getProductModelId());
- }else {
+ modelId = stockInventoryDto.getProductModelId();
+ } else {
Product parent = productMapper.selectOne(new LambdaQueryWrapper<Product>().eq(Product::getProductName, "鍘熸潗鏂�").last("limit 1"));
if (parent == null) {
throw new RuntimeException("鍘熸潗鏂欏垎绫讳笉瀛樺湪");
@@ -120,6 +125,8 @@
stockInRecordDto.setProductId(product.getId());
stockInRecordDto.setProductModelId(productModelId);
stockInventoryDto.setProductModelId(productModelId);
+
+ modelId = productModelId;
}
stockInRecordDto.setRemark(stockInventoryDto.getRemark());
stockInRecordDto.setType("0");
@@ -148,12 +155,13 @@
new QueryWrapper<StockInventory>().lambda()
.eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId())
);
+ ProductModel productModel = productModelMapper.selectById(modelId);
+ BigDecimal weight = compareUnit(stockInventoryDto, productModel);
if (ObjectUtils.isEmpty(oldStockInventory)) {
// 鏂板搴撳瓨
StockInventory newStockInventory = new StockInventory();
newStockInventory.setProductModelId(stockInventoryDto.getProductModelId());
- newStockInventory.setQualitity(stockInventoryDto.getProductType() != null && stockInventoryDto.getProductType() == 0 ?
- stockInventoryDto.getNetWeight() : stockInventoryDto.getQualitity());
+ newStockInventory.setQualitity(weight);
newStockInventory.setVersion(1);
newStockInventory.setRemark(stockInventoryDto.getRemark());
newStockInventory.setLockedQuantity(stockInventoryDto.getLockedQuantity());
@@ -162,8 +170,7 @@
stockInventoryMapper.insert(newStockInventory);
} else {
// 鏇存柊搴撳瓨
- stockInventoryDto.setQualitity(stockInventoryDto.getProductType() != null && stockInventoryDto.getProductType() == 0 ?
- stockInventoryDto.getNetWeight() : stockInventoryDto.getQualitity());
+ stockInventoryDto.setQualitity(weight);
stockInventoryMapper.updateAddStockInventory(stockInventoryDto);
}
return true;
@@ -173,6 +180,9 @@
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean subtractStockInventory(StockInventoryDto stockInventoryDto) {
+
+ ProductModel productModel = productModelMapper.selectById(stockInventoryDto.getProductModelId());
+ BigDecimal weight = compareUnit(stockInventoryDto, productModel);
// 鏂板鍑哄簱璁板綍
StockOutRecordDto stockOutRecordDto = new StockOutRecordDto();
stockOutRecordDto.setRecordId(stockInventoryDto.getRecordId());
@@ -202,12 +212,37 @@
if (lockedQty == null) {
lockedQty = BigDecimal.ZERO;
}
+ stockInventoryDto.setQualitity(weight);
if (stockInventoryDto.getQualitity().compareTo(oldStockInventory.getQualitity().subtract(lockedQty)) > 0) {
throw new RuntimeException("搴撳瓨涓嶈冻鏃犳硶鍑哄簱");
}
stockInventoryMapper.updateSubtractStockInventory(stockInventoryDto);
return true;
+ }
+
+ private BigDecimal compareUnit(StockInventoryDto stockInventoryDto, ProductModel productModel) {
+ String unit = "";
+ if (productModel != null) {
+ unit = productModel.getUnit();
+ }
+ BigDecimal weight;
+ if (stockInventoryDto.getUnit().equals(unit)) {
+ weight = stockInventoryDto.getProductType() != null && stockInventoryDto.getProductType() == 0 ?
+ stockInventoryDto.getNetWeight() : stockInventoryDto.getQualitity();
+ } else {
+ if ("鍚�".equals(unit)) {
+ weight =stockInventoryDto.getProductType() != null && stockInventoryDto.getProductType() == 0 ?
+ stockInventoryDto.getNetWeight().divide(BigDecimal.valueOf(1000),2, RoundingMode.HALF_UP) : stockInventoryDto.getQualitity().divide(BigDecimal.valueOf(1000),2,RoundingMode.HALF_UP);
+ } else if ("鍏枻".equals(unit)) {
+ weight = stockInventoryDto.getProductType() != null && stockInventoryDto.getProductType() == 0 ?
+ stockInventoryDto.getNetWeight().multiply(BigDecimal.valueOf(1000)) : stockInventoryDto.getQualitity().multiply(BigDecimal.valueOf(1000));
+ }else {
+ weight =stockInventoryDto.getProductType() != null && stockInventoryDto.getProductType() == 0 ?
+ stockInventoryDto.getNetWeight() : stockInventoryDto.getQualitity();
+ }
+ }
+ return weight;
}
@Override
@@ -235,7 +270,7 @@
stockInventoryDto.setModel(dto.getModel());
stockInventoryDto.setUnit(dto.getUnit());
- // 瑙e喅鏂规1锛氶�氳繃浠g悊瀵硅薄璋冪敤
+ //閫氳繃浠g悊瀵硅薄璋冪敤
((StockInventoryService) AopContext.currentProxy()).addstockInventory(stockInventoryDto);
}
return R.ok("瀵煎叆鎴愬姛");
diff --git a/src/main/resources/mapper/consumables/ConsumablesInRecordMapper.xml b/src/main/resources/mapper/consumables/ConsumablesInRecordMapper.xml
index 72e6f5a..7a40e51 100644
--- a/src/main/resources/mapper/consumables/ConsumablesInRecordMapper.xml
+++ b/src/main/resources/mapper/consumables/ConsumablesInRecordMapper.xml
@@ -16,6 +16,7 @@
LEFT JOIN product as p on pm.product_id = p.id
LEFT JOIN sys_user as u on sir.create_user = u.user_id
<where>
+ 1=1
<if test="params.timeStr != null and params.timeStr != ''">
and sir.create_time like concat('%',#{params.timeStr},'%')
</if>
@@ -43,6 +44,7 @@
LEFT JOIN product as p on pm.product_id = p.id
LEFT JOIN sys_user as u on sir.create_user = u.user_id
<where>
+ 1=1
<if test="params.timeStr != null and params.timeStr != ''">
and sir.create_time like concat('%',#{params.timeStr},'%')
</if>
diff --git a/src/main/resources/mapper/consumables/ConsumablesInventoryMapper.xml b/src/main/resources/mapper/consumables/ConsumablesInventoryMapper.xml
index fa16914..77e3943 100644
--- a/src/main/resources/mapper/consumables/ConsumablesInventoryMapper.xml
+++ b/src/main/resources/mapper/consumables/ConsumablesInventoryMapper.xml
@@ -57,55 +57,57 @@
</update>
<select id="pageConsumablesInventory" resultType="com.ruoyi.consumables.dto.ConsumablesInventoryDto">
- select
+ SELECT * FROM (
+ SELECT
si.id,
-- 褰撳墠鍑�閲� = 鍏ュ簱鍑�閲� - 鍑哄簱鍑�閲�
- (COALESCE(sir.total_net_weight,0) - COALESCE(sor.total_net_weight,0)) as qualitity,
+ (COALESCE(sir.total_net_weight, 0) - COALESCE(sor.total_net_weight, 0)) AS qualitity,
si.purchaser,
- COALESCE(si.locked_quantity, 0) as locked_quantity,
+ COALESCE(si.locked_quantity, 0) AS locked_quantity,
si.product_model_id,
si.create_time,
si.update_time,
- COALESCE(si.warn_num, 0) as warn_num,
+ COALESCE(si.warn_num, 0) AS warn_num,
si.version,
- (si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
+ (si.qualitity - COALESCE(si.locked_quantity, 0)) AS un_locked_quantity,
pm.model,
si.remark,
pm.unit,
p.product_name,
- p1.product_name as parent_name,
- p1.id as parent_id,
- si.product_id as productId
- from consumables_inventory si
- left join product_model pm on si.product_model_id = pm.id
- left join product p on pm.product_id = p.id
- left join product p1 on p.parent_id = p1.id
+ p1.product_name AS parent_name,
+ p1.id AS parent_id,
+ si.product_id AS productId
+ FROM consumables_inventory si
+ LEFT JOIN product_model pm ON si.product_model_id = pm.id
+ LEFT JOIN product p ON pm.product_id = p.id
+ LEFT JOIN product p1 ON p.parent_id = p1.id
-- 鍏ュ簱鍑�閲�
- left join (
- select
+ LEFT JOIN (
+ SELECT
product_model_id,
- sum(stock_in_num) as total_net_weight
- from consumables_in_record
- group by product_model_id
- ) sir on si.product_model_id = sir.product_model_id
+ SUM(stock_in_num) AS total_net_weight
+ FROM consumables_in_record
+ GROUP BY product_model_id
+ ) sir ON si.product_model_id = sir.product_model_id
-- 鍑哄簱鍑�閲�
- left join (
- select
+ LEFT JOIN (
+ SELECT
product_model_id,
- sum(stock_out_num) as total_net_weight
- from consumables_out_record
- group by product_model_id
- ) sor on si.product_model_id = sor.product_model_id
-
+ SUM(stock_out_num) AS total_net_weight
+ FROM consumables_out_record
+ GROUP BY product_model_id
+ ) sor ON si.product_model_id = sor.product_model_id
<where>
1=1
- <if test="ew.parentId != null and ew.parentId !=''">
- and p.parent_id = #{ew.parentId}
+ <if test="ew.parentId != null and ew.parentId != ''">
+ AND p.parent_id = #{ew.parentId}
</if>
- <if test="ew.productName != null and ew.productName !=''">
- and p.product_name like concat('%',#{ew.productName},'%')
+ <if test="ew.productName != null and ew.productName != ''">
+ AND p.product_name LIKE CONCAT('%', #{ew.productName}, '%')
</if>
</where>
+ ) temp
+ WHERE qualitity != 0
</select>
<select id="listConsumablesInventoryExportData" resultType="com.ruoyi.consumables.execl.ConsumablesInventoryExportData">
@@ -190,6 +192,7 @@
on sir.product_model_id = outWeight.product_model_id
<where>
+ 1=1
<if test="ew.reportDate != null">
and sir.create_time >= #{ew.reportDate}
and sir.create_time < DATE_ADD(#{ew.reportDate}, INTERVAL 1 DAY)
@@ -296,6 +299,7 @@
LEFT JOIN product_model pm ON pm.id = combined_data.product_model_id
LEFT JOIN product p ON p.id = pm.product_id
<where>
+ 1=1
<if test="ew.productName != null and ew.productName !=''">
and p.product_name like concat('%',#{ew.productName},'%')
</if>
diff --git a/src/main/resources/mapper/consumables/ConsumablesOutRecordMapper.xml b/src/main/resources/mapper/consumables/ConsumablesOutRecordMapper.xml
index d900460..e13e705 100644
--- a/src/main/resources/mapper/consumables/ConsumablesOutRecordMapper.xml
+++ b/src/main/resources/mapper/consumables/ConsumablesOutRecordMapper.xml
@@ -32,6 +32,7 @@
LEFT JOIN product as p on pm.product_id = p.id
LEFT JOIN sys_user as u on sor.create_user = u.user_id
<where>
+ 1=1
<if test="params.timeStr != null and params.timeStr != ''">
and sor.create_time like concat('%',#{params.timeStr},'%')
</if>
@@ -59,6 +60,7 @@
LEFT JOIN product as p on pm.product_id = p.id
LEFT JOIN sys_user as u on sor.create_user = u.user_id
<where>
+ 1=1
<if test="params.timeStr != null and params.timeStr != ''">
and sor.create_time like concat('%',#{params.timeStr},'%')
</if>
diff --git a/src/main/resources/mapper/stock/StockInRecordMapper.xml b/src/main/resources/mapper/stock/StockInRecordMapper.xml
index 295e480..67ce061 100644
--- a/src/main/resources/mapper/stock/StockInRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockInRecordMapper.xml
@@ -17,6 +17,7 @@
INNER JOIN product p1 ON p1.id = p.parent_id AND p1.product_name != '鍗婃垚鍝�'
LEFT JOIN sys_user AS u ON sir.create_user = u.user_id
<where>
+ 1=1
<if test="params.timeStr != null and params.timeStr != ''">
AND sir.create_time LIKE CONCAT('%', #{params.timeStr}, '%')
</if>
@@ -44,6 +45,7 @@
LEFT JOIN product as p on pm.product_id = p.id
LEFT JOIN sys_user as u on sir.create_user = u.user_id
<where>
+ 1=1
<if test="params.timeStr != null and params.timeStr != ''">
and sir.create_time like concat('%',#{params.timeStr},'%')
</if>
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index 06a42c4..8842aa2 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -42,8 +42,8 @@
<update id="updateSubtractStockInventory">
update stock_inventory
<set>
- <if test="ew.netWeight != null">
- qualitity = qualitity - #{ew.netWeight},
+ <if test="ew.qualitity != null">
+ qualitity = qualitity - #{ew.qualitity},
</if>
<if test="ew.version != null">
version = version + 1,
@@ -57,9 +57,9 @@
</update>
<select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
+ SELECT * FROM (
SELECT
si.id,
- -- 褰撳墠鍑�閲� = 鍏ュ簱鍑�閲� - 鍑哄簱鍑�閲�
(COALESCE(sir.total_net_weight, 0) - COALESCE(sor.total_net_weight, 0)) AS qualitity,
COALESCE(si.locked_quantity, 0) AS locked_quantity,
si.product_model_id,
@@ -90,6 +90,7 @@
GROUP BY product_model_id
) sor ON si.product_model_id = sor.product_model_id
<where>
+ 1=1
<if test="ew.parentId != null and ew.parentId != ''">
AND p.parent_id = #{ew.parentId}
</if>
@@ -97,6 +98,8 @@
AND p.product_name LIKE CONCAT('%', #{ew.productName}, '%')
</if>
</where>
+ ) temp
+ WHERE qualitity != 0
</select>
<select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData">
@@ -176,6 +179,7 @@
on sir.product_model_id = outWeight.product_model_id
<where>
+ 1=1
<if test="ew.reportDate != null">
and sir.create_time >= #{ew.reportDate}
and sir.create_time < DATE_ADD(#{ew.reportDate}, INTERVAL 1 DAY)
diff --git a/src/main/resources/mapper/stock/StockOutRecordMapper.xml b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
index 10a60c2..ccf3e5a 100644
--- a/src/main/resources/mapper/stock/StockOutRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
@@ -31,6 +31,7 @@
LEFT JOIN product as p on pm.product_id = p.id
LEFT JOIN sys_user as u on sor.create_user = u.user_id
<where>
+ 1=1
<if test="params.timeStr != null and params.timeStr != ''">
and sor.create_time like concat('%',#{params.timeStr},'%')
</if>
@@ -58,6 +59,7 @@
LEFT JOIN product as p on pm.product_id = p.id
LEFT JOIN sys_user as u on sor.create_user = u.user_id
<where>
+ 1=1
<if test="params.timeStr != null and params.timeStr != ''">
and sor.create_time like concat('%',#{params.timeStr},'%')
</if>
--
Gitblit v1.9.3