From 7746f1fcb9b018735df79de7055170e6b1720775 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期二, 09 六月 2026 17:45:06 +0800
Subject: [PATCH] 增加废品发货信息接口

---
 src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java    |    6 ++++++
 src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java |    5 +++++
 src/main/java/com/ruoyi/stock/mapper/StockUninventoryMapper.java            |    2 ++
 src/main/resources/mapper/stock/StockUninventoryMapper.xml                  |   36 ++++++++++++++++++++++++++++++++++++
 src/main/java/com/ruoyi/stock/service/StockUninventoryService.java          |    4 ++++
 5 files changed, 53 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java b/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java
index 76a90ba..04e714a 100644
--- a/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java
+++ b/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java
@@ -49,6 +49,12 @@
         return R.ok(stockUninventoryDtoIPage);
     }
 
+    @GetMapping("/getWasteByModelId")
+    @Operation(summary = "鏍规嵁浜у搧瑙勬牸ID鑾峰彇搴熷搧搴撳瓨璁板綍")
+    public R getWasteByModelId(Long productModelId) {
+        return R.ok(stockUninventoryService.getWasteByModelId(productModelId));
+    }
+
     @PostMapping("/addstockUninventory")
     @Operation(summary = "鏂板搴撳瓨")
     public R addstockUninventory(@RequestBody StockUninventoryDto stockUninventoryDto) {
diff --git a/src/main/java/com/ruoyi/stock/mapper/StockUninventoryMapper.java b/src/main/java/com/ruoyi/stock/mapper/StockUninventoryMapper.java
index 1b3cea6..fcc9a3b 100644
--- a/src/main/java/com/ruoyi/stock/mapper/StockUninventoryMapper.java
+++ b/src/main/java/com/ruoyi/stock/mapper/StockUninventoryMapper.java
@@ -30,6 +30,8 @@
 
     IPage<StockUninventoryDto> getWasteBatchNoQty(Page page, @Param("ew") StockInventoryDto stockInventoryDto);
 
+    List<StockUninventoryDto> getWasteByModelId(@Param("productModelId") Long productModelId);
+
     int updateSubtractStockUnInventory(@Param("ew") StockUninventoryDto stockUninventoryDto);
 
     BigDecimal selectPendingOutQuantity(@Param("productModelId") Long productModelId, @Param("batchNo") String batchNo, @Param("type") String type);
diff --git a/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java b/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
index 629ccb0..034c743 100644
--- a/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
@@ -9,6 +9,8 @@
 
 import jakarta.servlet.http.HttpServletResponse;
 
+import java.util.List;
+
 /**
  * <p>
  * 涓嶅悎鏍煎簱瀛樿〃 鏈嶅姟绫�
@@ -25,6 +27,8 @@
 
     IPage<StockUninventoryDto> getWasteBatchNoQty(Page page, StockInventoryDto stockInventoryDto);
 
+    List<StockUninventoryDto> getWasteByModelId(Long productModelId);
+
     Integer addStockUninventory(StockUninventoryDto stockUninventoryDto);
 
     Integer subtractStockUninventory(StockUninventoryDto stockUninventoryDto);
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 77abca7..9648ee1 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -90,6 +90,11 @@
     }
 
     @Override
+    public List<StockUninventoryDto> getWasteByModelId(Long productModelId) {
+        return stockUninventoryMapper.getWasteByModelId(productModelId);
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public Integer addStockUninventory(StockUninventoryDto stockUninventoryDto) {
         String inventoryType = resolveInventoryType(stockUninventoryDto);
diff --git a/src/main/resources/mapper/stock/StockUninventoryMapper.xml b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
index 049537b..3427221 100644
--- a/src/main/resources/mapper/stock/StockUninventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
@@ -241,6 +241,42 @@
         order by su.batch_no
     </select>
 
+    <select id="getWasteByModelId" resultType="com.ruoyi.stock.dto.StockUninventoryDto">
+        select
+            su.id,
+            su.batch_no,
+            COALESCE(su.locked_quantity, 0) as locked_quantity,
+            (su.qualitity - IFNULL(sd.qualitity, 0)) as qualitity,
+            p.product_name,
+            pm.model,
+            pm.unit,
+            su.product_model_id
+        from stock_uninventory su
+        left join (
+            select
+                sor.product_model_id,
+                sor.batch_no,
+                sum(spd.quantity) as qualitity
+            from shipping_product_detail spd
+            inner join stock_out_record sor
+                on sor.record_id = spd.shipping_info_id
+               and sor.record_type = '13'
+               and sor.type = '1'
+               and sor.approval_status in (0, 3)
+               and sor.product_model_id = spd.product_model_id
+               and (sor.batch_no = spd.batch_no or (sor.batch_no is null and spd.batch_no is null))
+            where spd.stock_type = 'waste'
+            group by sor.product_model_id, sor.batch_no
+        ) sd on sd.product_model_id = su.product_model_id
+            and (sd.batch_no = su.batch_no or (sd.batch_no is null and su.batch_no is null))
+        left join product_model pm on su.product_model_id = pm.id
+        left join product p on pm.product_id = p.id
+        where su.product_model_id = #{productModelId}
+          and su.type = 'waste'
+          and su.qualitity > IFNULL(sd.qualitity, 0)
+        order by su.batch_no
+    </select>
+
     <select id="selectPendingOutQuantity" resultType="java.math.BigDecimal">
         SELECT IFNULL(SUM(sor.stock_out_num), 0)
         FROM stock_out_record sor

--
Gitblit v1.9.3