From 48594bf1b5e60bee258116ca7ce36c2834477ba6 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 09 六月 2026 10:47:51 +0800
Subject: [PATCH] feat(stock): 添加出入库记录的合同号查询功能

---
 src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java          |    5 ++
 src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java          |    4 ++
 src/main/resources/mapper/stock/StockOutRecordMapper.xml          |   22 ++++++++++-
 src/main/java/com/ruoyi/stock/execl/StockInRecordExportData.java  |    2 +
 src/main/resources/mapper/stock/StockInRecordMapper.xml           |   14 ++++++-
 src/main/resources/mapper/approve/ApproveProcessMapper.xml        |   16 +++++++
 src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java           |    5 ++
 src/main/java/com/ruoyi/stock/execl/StockOutRecordExportData.java |    2 +
 8 files changed, 65 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
index 411ab11..6f629d8 100644
--- a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
+++ b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
@@ -181,6 +181,10 @@
     @ApiModelProperty(value = "閿�鍞彴璐d")
     private Long salesLedgerId;
 
+    @TableField(exist = false)
+    @ApiModelProperty(value = "閲囪喘鍗曞彿")
+    private String purchaseOrderNo;
+
 
     @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
     @TableField(fill = FieldFill.INSERT)
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java b/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
index 9f47fd6..45db4f9 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
@@ -26,4 +26,9 @@
     //鐜板瓨閲�
     private String currentStock;
 
+    /**
+     * 閲囪喘鍚堝悓鍙凤紙鏌ヨ鍙傛暟锛�
+     */
+    private String purchaseContractNumber;
+
 }
diff --git a/src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java b/src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java
index f32ffa6..b016e4f 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java
@@ -35,4 +35,9 @@
      * 鍚堟牸鑷畾涔夊嚭搴擄細澶囨敞
      */
     private String sourceNo;
+
+    /**
+     * 閿�鍞崟鍙凤紙鏌ヨ鍙傛暟锛�
+     */
+    private String salesContractNo;
 }
diff --git a/src/main/java/com/ruoyi/stock/execl/StockInRecordExportData.java b/src/main/java/com/ruoyi/stock/execl/StockInRecordExportData.java
index d705110..df79d4a 100644
--- a/src/main/java/com/ruoyi/stock/execl/StockInRecordExportData.java
+++ b/src/main/java/com/ruoyi/stock/execl/StockInRecordExportData.java
@@ -26,6 +26,8 @@
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
+    @Excel(name = "閲囪喘鍚堝悓鍙�")
+    private String purchaseContractNumber;
 
     @Excel(isExport = false)
     private String type;
diff --git a/src/main/java/com/ruoyi/stock/execl/StockOutRecordExportData.java b/src/main/java/com/ruoyi/stock/execl/StockOutRecordExportData.java
index b0f45a3..8e660d3 100644
--- a/src/main/java/com/ruoyi/stock/execl/StockOutRecordExportData.java
+++ b/src/main/java/com/ruoyi/stock/execl/StockOutRecordExportData.java
@@ -21,6 +21,8 @@
     private String recordType;
     @Excel(name = "鏉ユ簮鍗曞彿")
     private String sourceNo;
+    @Excel(name = "閿�鍞崟鍙�")
+    private String salesContractNo;
     @Excel(name = "鍑哄簱鏁伴噺")
     private String stockInNum;
     @Excel(name = "鍑哄簱鏃堕棿")
diff --git a/src/main/resources/mapper/approve/ApproveProcessMapper.xml b/src/main/resources/mapper/approve/ApproveProcessMapper.xml
index 070a228..6d92a2a 100644
--- a/src/main/resources/mapper/approve/ApproveProcessMapper.xml
+++ b/src/main/resources/mapper/approve/ApproveProcessMapper.xml
@@ -44,7 +44,21 @@
                 and ap.approve_reason like concat('%閿�鍞崟鍙�:',#{req.salesContractNo},'%')
             </if>
         </if>
-        <if test="req.approveType == null or req.approveType != 7">
+        <if test="req.approveType != null and req.approveType == 5">
+            select ap.* from approve_process ap
+            where ap.approve_delete = 0
+            <if test="req.approveId != null and req.approveId != ''">
+                and ap.approve_id like concat('%',#{req.approveId},'%')
+            </if>
+            <if test="req.approveStatus != null or req.approveStatus == 0">
+                and ap.approve_status = #{req.approveStatus}
+            </if>
+            and ap.approve_type = #{req.approveType}
+            <if test="req.purchaseOrderNo != null and req.purchaseOrderNo != ''">
+                and ap.approve_reason like concat('%',#{req.purchaseOrderNo},'%')
+            </if>
+        </if>
+        <if test="req.approveType == null or (req.approveType != 7 and req.approveType != 5)">
             select * from approve_process ap where ap.approve_delete = 0
             <if test="req.approveId != null and req.approveId != ''">
                 and ap.approve_id like concat('%',#{req.approveId},'%')
diff --git a/src/main/resources/mapper/stock/StockInRecordMapper.xml b/src/main/resources/mapper/stock/StockInRecordMapper.xml
index d5c3f38..04df5e5 100644
--- a/src/main/resources/mapper/stock/StockInRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockInRecordMapper.xml
@@ -8,11 +8,13 @@
         p.product_name as product_name,
         pm.model,
         pm.unit,
-        u.nick_name as createBy
+        u.nick_name as createBy,
+        pl.purchase_contract_number as purchaseContractNumber
         FROM stock_in_record as sir
         LEFT JOIN product_model as pm on sir.product_model_id = pm.id
         LEFT JOIN product as p on pm.product_id = p.id
         LEFT JOIN sys_user as u on sir.create_user = u.user_id
+        LEFT JOIN purchase_ledger as pl on sir.record_id = pl.id and sir.record_type = '7'
         <where>
             <if test="params.timeStr != null and params.timeStr != ''">
                 and sir.create_time like concat('%',#{params.timeStr},'%')
@@ -25,6 +27,9 @@
             </if>
             <if test="params.recordType != null and params.recordType != ''">
                 and sir.record_type = #{params.recordType}
+            </if>
+            <if test="params.purchaseContractNumber != null and params.purchaseContractNumber != ''">
+                and pl.purchase_contract_number like concat('%',#{params.purchaseContractNumber},'%')
             </if>
         </where>
         order by sir.id desc
@@ -35,11 +40,13 @@
         p.product_name as product_name,
         pm.model,
         pm.unit,
-        u.nick_name as createBy
+        u.nick_name as createBy,
+        pl.purchase_contract_number as purchaseContractNumber
         FROM stock_in_record as sir
         LEFT JOIN product_model as pm on sir.product_model_id = pm.id
         LEFT JOIN product as p on pm.product_id = p.id
         LEFT JOIN sys_user as u on sir.create_user = u.user_id
+        LEFT JOIN purchase_ledger as pl on sir.record_id = pl.id and sir.record_type = '7'
         <where>
             <if test="params.timeStr != null and params.timeStr != ''">
                 and sir.create_time like concat('%',#{params.timeStr},'%')
@@ -53,6 +60,9 @@
             <if test="params.recordType != null and params.recordType != ''">
                 and sir.record_type = #{params.recordType}
             </if>
+            <if test="params.purchaseContractNumber != null and params.purchaseContractNumber != ''">
+                and pl.purchase_contract_number like concat('%',#{params.purchaseContractNumber},'%')
+            </if>
         </where>
         order by sir.id desc
     </select>
diff --git a/src/main/resources/mapper/stock/StockOutRecordMapper.xml b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
index 4b0233d..7970cd3 100644
--- a/src/main/resources/mapper/stock/StockOutRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
@@ -32,7 +32,12 @@
             WHEN '1' THEN sor.remark
             WHEN '10' THEN sor.remark
             ELSE NULL
-        END as sourceNo
+        END as sourceNo,
+        CASE sor.record_type
+            WHEN '8' THEN sl.sales_contract_no
+            WHEN '13' THEN sl2.sales_contract_no
+            ELSE NULL
+        END as salesContractNo
         FROM stock_out_record as sor
         LEFT JOIN product_model as pm on sor.product_model_id = pm.id
         LEFT JOIN product as p on pm.product_id = p.id
@@ -54,6 +59,10 @@
             </if>
             <if test="params.recordType != null and params.recordType != ''">
                 and sor.record_type = #{params.recordType}
+            </if>
+            <if test="params.salesContractNo != null and params.salesContractNo != ''">
+                and ((sor.record_type = '8' and sl.sales_contract_no like concat('%',#{params.salesContractNo},'%'))
+                    or (sor.record_type = '13' and sl2.sales_contract_no like concat('%',#{params.salesContractNo},'%')))
             </if>
         </where>
         order by sor.id desc
@@ -73,7 +82,12 @@
             WHEN '1' THEN sor.remark
             WHEN '10' THEN sor.remark
             ELSE NULL
-        END as sourceNo
+        END as sourceNo,
+        CASE sor.record_type
+            WHEN '8' THEN sl.sales_contract_no
+            WHEN '13' THEN sl2.sales_contract_no
+            ELSE NULL
+        END as salesContractNo
         FROM stock_out_record as sor
         LEFT JOIN product_model as pm on sor.product_model_id = pm.id
         LEFT JOIN product as p on pm.product_id = p.id
@@ -96,6 +110,10 @@
             <if test="params.recordType != null and params.recordType != ''">
                 and sor.record_type = #{params.recordType}
             </if>
+            <if test="params.salesContractNo != null and params.salesContractNo != ''">
+                and ((sor.record_type = '8' and sl.sales_contract_no like concat('%',#{params.salesContractNo},'%'))
+                    or (sor.record_type = '13' and sl2.sales_contract_no like concat('%',#{params.salesContractNo},'%')))
+            </if>
         </where>
         order by sor.id desc
     </select>

--
Gitblit v1.9.3