From 2652673d45d9f142baed0d92f1deab38276dbd90 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期二, 03 三月 2026 10:07:15 +0800
Subject: [PATCH] 库存区分原材料和成品和半成品

---
 src/main/java/com/ruoyi/stock/pojo/StockInventory.java                    |    3 +
 doc/2026-03-02-stock_inventory-add.sql                                    |   11 +++++
 src/main/resources/mapper/basic/ProductModelMapper.xml                    |   16 ++++++--
 src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java                  |   11 +++++
 src/main/java/com/ruoyi/stock/pojo/StockInRecord.java                     |    5 ++
 src/main/resources/mapper/stock/StockInventoryMapper.xml                  |   26 ++++++++++--
 src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java                    |    5 ++
 src/main/java/com/ruoyi/basic/pojo/ProductModel.java                      |    8 ++++
 src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java |    3 +
 9 files changed, 79 insertions(+), 9 deletions(-)

diff --git a/doc/2026-03-02-stock_inventory-add.sql b/doc/2026-03-02-stock_inventory-add.sql
new file mode 100644
index 0000000..12cb633
--- /dev/null
+++ b/doc/2026-03-02-stock_inventory-add.sql
@@ -0,0 +1,11 @@
+-- 娣诲姞杩囩鏃ユ湡瀛楁
+ALTER TABLE stock_in_record
+    ADD COLUMN weighing_date timestamp COMMENT '杩囩鏃ユ湡';
+
+-- 娣诲姞杩囩鏃ユ湡瀛楁
+ALTER TABLE stock_out_record
+    ADD COLUMN weighing_date timestamp COMMENT '杩囩鏃ユ湡';
+
+-- 娣诲姞鍑�閲嶅瓧娈�
+ALTER TABLE stock_inventory
+    ADD COLUMN net_weight DECIMAL(16,3) COMMENT '鍑�閲�';
diff --git a/src/main/java/com/ruoyi/basic/pojo/ProductModel.java b/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
index 069b665..5afbaef 100644
--- a/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
+++ b/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
@@ -63,4 +63,12 @@
 
     @TableField(exist = false)
     private LocalDateTime createTime;
+
+    @TableField(exist = false)
+    private Long parentId;
+
+    @TableField(exist = false)
+    private String parentName;
+
+    private Long productType;
 }
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
index 125b52b..55742b0 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
@@ -2,11 +2,13 @@
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.stock.pojo.StockInventory;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 
 @Data
 public class StockInventoryDto extends StockInventory {
@@ -39,4 +41,13 @@
     private BigDecimal currentStock;
 
     private BigDecimal  unLockedQuantity;
+
+    private Long parentId;
+
+    @ApiModelProperty("杩囩鏃ユ湡")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime weighingDate;
+
+    private String  parentName;
 }
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java b/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
index 395d18f..f5e6256 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
@@ -62,4 +62,9 @@
     @ApiModelProperty(value = "淇敼鐢ㄦ埛")
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private Integer updateUser;
+
+    @ApiModelProperty("杩囩鏃ユ湡")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime weighingDate;
 }
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockInventory.java b/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
index 36e7cf0..4dc3924 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
@@ -63,4 +63,7 @@
 
     @ApiModelProperty("澶囨敞")
     private String remark;
+
+    @ApiModelProperty("鍑�閲�")
+    private BigDecimal netWeight;
 }
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java b/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java
index e4e3b82..35abb44 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java
@@ -71,4 +71,9 @@
 
     @ApiModelProperty(value = "绫诲瀷  0鍚堟牸鍏ュ簱 1涓嶅悎鏍煎叆搴�")
     private String type;
+
+    @ApiModelProperty("杩囩鏃ユ湡")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime weighingDate;
 }
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..856e882 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -60,6 +60,7 @@
         stockInRecordDto.setRecordId(stockInventoryDto.getRecordId());
         stockInRecordDto.setRecordType(stockInventoryDto.getRecordType());
         stockInRecordDto.setStockInNum(stockInventoryDto.getQualitity());
+        stockInRecordDto.setWeighingDate(stockInventoryDto.getWeighingDate());
         stockInRecordDto.setProductModelId(stockInventoryDto.getProductModelId());
         stockInRecordDto.setType("0");
         stockInRecordService.add(stockInRecordDto);
@@ -70,6 +71,7 @@
             StockInventory newStockInventory = new StockInventory();
             newStockInventory.setProductModelId(stockInventoryDto.getProductModelId());
             newStockInventory.setQualitity(stockInventoryDto.getQualitity());
+            newStockInventory.setNetWeight(stockInventoryDto.getNetWeight());
             newStockInventory.setVersion(1);
             newStockInventory.setRemark(stockInventoryDto.getRemark());
             newStockInventory.setLockedQuantity(stockInventoryDto.getLockedQuantity());
@@ -89,6 +91,7 @@
         StockOutRecordDto stockOutRecordDto = new StockOutRecordDto();
         stockOutRecordDto.setRecordId(stockInventoryDto.getRecordId());
         stockOutRecordDto.setRecordType(stockInventoryDto.getRecordType());
+        stockInventoryDto.setWeighingDate(stockInventoryDto.getWeighingDate());
         stockOutRecordDto.setStockOutNum(stockInventoryDto.getQualitity());
         stockOutRecordDto.setProductModelId(stockInventoryDto.getProductModelId());
         stockOutRecordDto.setType("0");
diff --git a/src/main/resources/mapper/basic/ProductModelMapper.xml b/src/main/resources/mapper/basic/ProductModelMapper.xml
index 317f5d9..9b1ade3 100644
--- a/src/main/resources/mapper/basic/ProductModelMapper.xml
+++ b/src/main/resources/mapper/basic/ProductModelMapper.xml
@@ -15,18 +15,26 @@
         <result column="product_id" property="productId" />
     </resultMap>
     <select id="listPageProductModel" resultType="com.ruoyi.basic.pojo.ProductModel">
-        select pm.*,p.product_name
+        select pm.*,p.product_name,p.parent_id,p1.product_name as parent_name,
+        case
+        when p1.product_name is null then 0 -- 鍘熸潗鏂�
+        when p1.product_name is not null and p1.product_name like '%鍗婃垚鍝�%' then 1 -- 鍗婃垚鍝�
+        when p1.product_name is not null and p1.product_name like '%鎴愬搧%' then 2 -- 鎴愬搧
+        else 0 -- 榛樿涓哄師鏉愭枡
+        end as product_type
         from product_model pm
         left join product p on pm.product_id = p.id
+        left join product p1 on p1.id = p.parent_id
         <where>
             <if test="c.model != null and c.model != ''">
-                and pm.model  like  concat('%',#{c.model},'%')
+                and pm.model like concat('%',#{c.model},'%')
             </if>
             <if test="c.productName != null and c.productName != ''">
-                and p.product_name  like  concat('%',#{c.productName},'%')
+                and p.product_name like concat('%',#{c.productName},'%')
             </if>
         </where>
-        order by  pm.id
+        order by pm.id
+
     </select>
     <select id="selectLatestRecord" resultType="com.ruoyi.basic.pojo.ProductModel">
             SELECT * FROM product_model
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index 9db56f9..6727a36 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -19,9 +19,13 @@
             <if test="ew.qualitity != null">
                 qualitity = qualitity + #{ew.qualitity},
             </if>
+            <if test="ew.netWeight != null">
+                net_weight = net_weight + #{ew.netWeight},
+            </if>
             <if test="ew.version != null">
                 version = version + 1,
             </if>
+
             <if test="ew.remark != null and ew.remark !=''">
                 remark = #{ew.remark},
             </if>
@@ -41,6 +45,9 @@
             <if test="ew.qualitity != null">
                 qualitity = qualitity - #{ew.qualitity},
             </if>
+            <if test="ew.netWeight != null">
+                net_weight = net_weight - #{ew.netWeight},
+            </if>
             <if test="ew.version != null">
                 version = version + 1,
             </if>
@@ -53,6 +60,7 @@
     </update>
     <select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
         select si.id,
+        si.net_weight,
         si.qualitity,
         COALESCE(si.locked_quantity, 0) as locked_quantity,
         si.product_model_id,
@@ -64,14 +72,22 @@
         pm.model,
         si.remark,
         pm.unit,
-        p.product_name
+        p.product_name,
+        p1.product_name as parent_name,
+        p1.id as parent_id
         from stock_inventory si
         left join product_model pm on si.product_model_id = pm.id
         left join product p on pm.product_id = p.id
-        where 1 = 1
-        <if test="ew.productName != null and ew.productName !=''">
-            and p.product_name like concat('%',#{ew.productName},'%')
-        </if>
+        left join product p1 on p.parent_id = p1.id
+        <where>
+            1=1
+            <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>
+        </where>
     </select>
     <select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData">
         select si.qualitity,

--
Gitblit v1.9.3