From 13afb7eafeffac6ecccc7c66d36974c54c5172d4 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 28 五月 2026 15:13:37 +0800
Subject: [PATCH] 库存管理增加库存类型,并返回相关数据显示

---
 src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java           |   48 ++++++++++++++++
 src/main/java/com/ruoyi/stock/pojo/StockInventory.java                      |    2 
 src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java                    |   12 ++++
 src/main/java/com/ruoyi/stock/pojo/StockInRecord.java                       |    3 +
 src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java |    1 
 src/main/resources/mapper/stock/StockInventoryMapper.xml                    |   18 +++++
 doc/万通新型建材.sql                                                              |    9 ++-
 src/main/java/com/ruoyi/stock/pojo/StockUninventory.java                    |    3 +
 src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java    |   22 +++++--
 src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java   |   47 +++++++++++++++
 10 files changed, 153 insertions(+), 12 deletions(-)

diff --git "a/doc/\344\270\207\351\200\232\346\226\260\345\236\213\345\273\272\346\235\220.sql" "b/doc/\344\270\207\351\200\232\346\226\260\345\236\213\345\273\272\346\235\220.sql"
index 15db290..c5ebe9d 100644
--- "a/doc/\344\270\207\351\200\232\346\226\260\345\236\213\345\273\272\346\235\220.sql"
+++ "b/doc/\344\270\207\351\200\232\346\226\260\345\236\213\345\273\272\346\235\220.sql"
@@ -42,8 +42,11 @@
 );
 
 alter table stock_inventory
-    add manufacturer_id bigint not null default 0 comment '鍘傚id';
+    add manufacturer_id bigint not null default 0 comment '鍘傚id',
+    add source varchar(255) not null default '' comment '鏉ユ簮';
 alter table stock_in_record
-    add manufacturer_id bigint not null default 0 comment '鍘傚id';
+    add manufacturer_id bigint not null default 0 comment '鍘傚id',
+    add source varchar(255) not null default '' comment '鏉ユ簮';
 alter table stock_uninventory
-    add manufacturer_id bigint not null default 0 comment '鍘傚id';
+    add manufacturer_id bigint not null default 0 comment '鍘傚id',
+    add source varchar(255) not null default '' comment '鏉ユ簮';
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
index 33b7599..9ed2bcb 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
@@ -80,4 +80,16 @@
 
     @Schema(description = "浜у搧id")
     private Long productId;
+
+    @Schema(description = "鍚堟牸搴撳瓨鏉ユ簮")
+    private String qualifiedSource;
+
+    @Schema(description = "鍚堟牸搴撳瓨鏉ユ簮鏂囨湰")
+    private String qualifiedSourceText;
+
+    @Schema(description = "涓嶅悎鏍煎簱瀛樻潵婧�")
+    private String unQualifiedSource;
+
+    @Schema(description = "涓嶅悎鏍煎簱瀛樻潵婧愭枃鏈�")
+       private String unQualifiedSourceText;
 }
diff --git a/src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java b/src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java
new file mode 100644
index 0000000..bdfe97f
--- /dev/null
+++ b/src/main/java/com/ruoyi/stock/enums/StockInventorySourceEnum.java
@@ -0,0 +1,48 @@
+package com.ruoyi.stock.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.ruoyi.common.enums.BaseEnum;
+import lombok.Getter;
+
+import java.io.Serializable;
+
+/**
+ * @author buhuazhen
+ * @date 2026/3/9
+ * @email 3038525872@qq.com
+ */
+@Getter
+public enum StockInventorySourceEnum implements BaseEnum<String>, Serializable {
+    PURCHASE_RECEIPT("purchaseReceipt", "閲囪喘鍏ュ簱"),
+    PRODUCTION_RECEIPT("productionReceipt", "鐢熶骇鍏ュ簱"),
+    OUTSOURCED_RECEIPT("outsourcedReceipt", "澶栧崗鍏ュ簱"),
+    REPAIR_RECEIPT("repairReceipt", "淇鍏ュ簱"),
+    PROD_GENERATED("prodGenerated", "鐢熶骇浜х敓"),
+    TRANS_GENERATED("transGenerated", "杩愯緭浜х敓"),
+    CUTTING_GENERATED("cuttingGenerated", "瑁佸壀浜х敓"),
+    CUSTOM("custom", "鑷畾涔�");
+
+    @EnumValue
+    private final String code;
+
+    private final String value;
+
+    StockInventorySourceEnum(String code, String value) {
+        this.code = code;
+        this.value = value;
+    }
+
+    @JsonCreator
+    public static StockInventorySourceEnum fromCode(String code) {
+        if (code == null) {
+            return null;
+        }
+        for (StockInventorySourceEnum e : StockInventorySourceEnum.values()) {
+            if (e.getCode().equals(code)) {
+                return e;
+            }
+        }
+        return null;
+    }
+}
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java b/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
index 4362083..2a7d06d 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
@@ -76,4 +76,7 @@
 
     @Schema(description = "鍘傚ID")
     private Long manufacturerId;
+
+    @Schema(description = "鏉ユ簮")
+    private String source;
 }
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockInventory.java b/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
index fde3329..d04af80 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
@@ -75,4 +75,6 @@
     @Schema(description = "鍘傚晢id")
     private Long manufacturerId;
 
+    @Schema(description = "鏉ユ簮")
+    private String source;
 }
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java b/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
index 5f506f4..f854574 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
@@ -70,4 +70,7 @@
 
     @Schema(description = "鍘傚ID")
     private Long manufacturerId;
+
+    @Schema(description = "鏉ユ簮")
+    private String source;
 }
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 c19df49..7facfcf 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -30,6 +30,7 @@
 import com.ruoyi.stock.service.StockInRecordService;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.AllArgsConstructor;
+import org.jspecify.annotations.NonNull;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -235,12 +236,7 @@
                 if ("0".equals(stockInRecord.getType())) {
                     // 鍚堟牸鍏ュ簱 -> 鍏堟煡搴撳瓨锛屽瓨鍦ㄥ垯鏇存柊锛屼笉瀛樺湪鍒欐柊澧�
                     StockInventory stockInventory = getStockInventory(stockInRecord.getProductModelId(), stockInRecord.getBatchNo());
-                    StockInventoryDto stockInventoryDto = new StockInventoryDto();
-                    stockInventoryDto.setProductModelId(stockInRecord.getProductModelId());
-                    stockInventoryDto.setBatchNo(stockInRecord.getBatchNo());
-                    stockInventoryDto.setQualitity(stockInRecord.getStockInNum());
-                    stockInventoryDto.setRemark(stockInRecord.getRemark());
-                    stockInventoryDto.setManufacturerId(stockInRecord.getManufacturerId());
+                    StockInventoryDto stockInventoryDto = getStockInventoryDto(stockInRecord);
                     if (stockInventory == null) {
                         stockInventoryMapper.insert(new StockInventory() {{
                             setProductModelId(stockInRecord.getProductModelId());
@@ -249,6 +245,7 @@
                             setRemark(stockInRecord.getRemark());
                             setWarnNum(stockInRecord.getWarnNum());
                             setManufacturerId(stockInRecord.getManufacturerId());
+                            setSource(stockInRecord.getSource());
                             setVersion(1);
                         }});
                     } else {
@@ -263,6 +260,7 @@
                     stockUninventoryDto.setQualitity(stockInRecord.getStockInNum());
                     stockUninventoryDto.setRemark(stockInRecord.getRemark());
                     stockUninventoryDto.setManufacturerId(stockInRecord.getManufacturerId());
+                    stockUninventoryDto.setSource(stockInRecord.getSource());
                     if (stockUninventory == null) {
                         stockUninventoryMapper.insert(new StockUninventory() {{
                             setProductModelId(stockInRecord.getProductModelId());
@@ -270,6 +268,7 @@
                             setBatchNo(stockInRecord.getBatchNo());
                             setRemark(stockInRecord.getRemark());
                             setManufacturerId(stockInRecord.getManufacturerId());
+                            setSource(stockInRecord.getSource());
                             setVersion(1);
                         }});
                     } else {
@@ -281,6 +280,17 @@
         return ids.size();
     }
 
+    private static @NonNull StockInventoryDto getStockInventoryDto(StockInRecord stockInRecord) {
+        StockInventoryDto stockInventoryDto = new StockInventoryDto();
+        stockInventoryDto.setProductModelId(stockInRecord.getProductModelId());
+        stockInventoryDto.setBatchNo(stockInRecord.getBatchNo());
+        stockInventoryDto.setQualitity(stockInRecord.getStockInNum());
+        stockInventoryDto.setRemark(stockInRecord.getRemark());
+        stockInventoryDto.setManufacturerId(stockInRecord.getManufacturerId());
+        stockInventoryDto.setSource(stockInRecord.getSource());
+        return stockInventoryDto;
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int batchReAudit(List<Long> ids) {
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 1cbdc47..687837e 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -11,6 +11,7 @@
 import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.stock.enums.StockInventorySourceEnum;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.domain.R;
@@ -68,7 +69,25 @@
 
     @Override
     public IPage<StockInventoryDto> pageListCombinedStockInventory(Page page, StockInventoryDto stockInventoryDto) {
-        return stockInventoryMapper.pageListCombinedStockInventory(page, stockInventoryDto);
+        IPage<StockInventoryDto> result = stockInventoryMapper.pageListCombinedStockInventory(page, stockInventoryDto);
+        // 杞崲鏉ユ簮缂栫爜涓烘潵婧愬悕绉�
+        for (StockInventoryDto dto : result.getRecords()) {
+            // 鍚堟牸搴撳瓨鏉ユ簮
+            if (StringUtils.isNotBlank(dto.getQualifiedSource())) {
+                StockInventorySourceEnum qualifiedSourceEnum = StockInventorySourceEnum.fromCode(dto.getQualifiedSource());
+                if (qualifiedSourceEnum != null) {
+                    dto.setQualifiedSourceText(qualifiedSourceEnum.getValue());
+                }
+            }
+            // 涓嶅悎鏍煎簱瀛樻潵婧�
+            if (StringUtils.isNotBlank(dto.getUnQualifiedSource())) {
+                StockInventorySourceEnum unQualifiedSourceEnum = StockInventorySourceEnum.fromCode(dto.getUnQualifiedSource());
+                if (unQualifiedSourceEnum != null) {
+                    dto.setUnQualifiedSourceText(unQualifiedSourceEnum.getValue());
+                }
+            }
+        }
+        return result;
     }
 
     //鍏ュ簱璋冪敤
@@ -170,6 +189,7 @@
         stockInRecordDto.setRemark(stockInventoryDto.getRemark());
         stockInRecordDto.setWarnNum(stockInventoryDto.getWarnNum());
         stockInRecordDto.setManufacturerId(stockInventoryDto.getManufacturerId());
+        stockInRecordDto.setSource(stockInventoryDto.getSource());
         stockInRecordService.add(stockInRecordDto);
         return true;
     }
@@ -439,6 +459,29 @@
 
     @Override
     public IPage<StockInventoryDto> getBatchNoQty(Page page, StockInventoryDto stockInventoryDto) {
-        return stockInventoryMapper.getBatchNoQty(page, stockInventoryDto);
+        IPage<StockInventoryDto> resultPage = stockInventoryMapper.getBatchNoQty(page, stockInventoryDto);
+
+        // 閬嶅巻缁撴灉锛岃缃潵婧愪腑鏂囧悕
+        resultPage.getRecords().forEach(dto -> {
+            // 璁剧疆鍚堟牸搴撳瓨鏉ユ簮涓枃鍚�
+            if (StringUtils.isNotEmpty(dto.getQualifiedSource())) {
+                System.out.println("鍚堟牸搴撳瓨鏉ユ簮锛�" + dto.getQualifiedSource());
+                StockInventorySourceEnum qualifiedSourceEnum = StockInventorySourceEnum.fromCode(dto.getQualifiedSource());
+                if (qualifiedSourceEnum != null) {
+                    dto.setQualifiedSourceText(qualifiedSourceEnum.getValue());
+                    System.out.println("鍚堟牸搴撳瓨鏉ユ簮鍊硷細" + qualifiedSourceEnum.getValue());
+                }
+            }
+
+            // 璁剧疆涓嶅悎鏍煎簱瀛樻潵婧愪腑鏂囧悕
+            if (StringUtils.isNotEmpty(dto.getUnQualifiedSource())) {
+                StockInventorySourceEnum unQualifiedSourceEnum = StockInventorySourceEnum.fromCode(dto.getUnQualifiedSource());
+                if (unQualifiedSourceEnum != null) {
+                    dto.setUnQualifiedSourceText(unQualifiedSourceEnum.getValue());
+                }
+            }
+        });
+
+        return resultPage;
     }
 }
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
index 670aa3a..530289b 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -80,6 +80,7 @@
         stockInRecordDto.setProductModelId(stockUninventoryDto.getProductModelId());
         stockInRecordDto.setType("1");
         stockInRecordDto.setManufacturerId(stockUninventoryDto.getManufacturerId());
+        stockInRecordDto.setSource(stockUninventoryDto.getSource());
         stockInRecordService.add(stockInRecordDto);
         //瀹℃壒鍐嶆坊鍔�
         return 1;
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index ed780a7..723541b 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -562,6 +562,10 @@
         unit,
         product_name,
         product_id,
+        MAX(manufacturer_id) as manufacturer_id,
+        MAX(manufacturer_name) as manufacturerName,
+        MAX(qualifiedSource) as qualifiedSource,
+        MAX(unQualifiedSource) as unQualifiedSource,
 
         MAX(create_time) as create_time,
         MAX(update_time) as update_time,
@@ -587,6 +591,10 @@
         pm.unit,
         p.product_name,
         p.id as product_id,
+        si.manufacturer_id,
+        m.name as manufacturer_name,
+        si.source as qualifiedSource,
+        null as unQualifiedSource,
 
         si.create_time,
         si.update_time,
@@ -610,6 +618,7 @@
         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
+        left join manufacturer m on si.manufacturer_id = m.id
 
         union all
 
@@ -629,6 +638,10 @@
         pm.unit,
         p.product_name,
         p.id as product_id,
+        su.manufacturer_id,
+        m.name as manufacturer_name,
+        null as qualifiedSource,
+        su.source as unQualifiedSource,
 
         su.create_time,
         su.update_time,
@@ -652,6 +665,7 @@
         from stock_uninventory su
         left join product_model pm on su.product_model_id = pm.id
         left join product p on pm.product_id = p.id
+        left join manufacturer m on su.manufacturer_id = m.id
         ) as combined
         <where>
             <if test="ew.productModelId != null and ew.productModelId > 0">
@@ -668,7 +682,9 @@
         model,
         unit,
         product_name,
-        product_id
+        product_id,
+        manufacturer_id,
+        manufacturer_name
         order by
         batch_no
     </select>

--
Gitblit v1.9.3