From 9a6a9d7baab7d84e396be2afa57c674e775341f1 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期二, 31 三月 2026 12:25:57 +0800
Subject: [PATCH] fix: 库存管理区分手动新增与供应商名称

---
 src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml |  207 +++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 159 insertions(+), 48 deletions(-)

diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
index cf76a56..0d9e290 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -4,20 +4,23 @@
 
     <select id="listProcurementBySalesLedgerId" resultType="com.ruoyi.procurementrecord.dto.ProcurementDto">
         select
-            t1.supplier_name,
-            t2.product_category,
-            t2.id,
-            t3.id as recordId,
-            t2.specification_model,
-            t2.unit,
-            t2.quantity,
-            t2.quantity as quantity0,
-            t2.tax_rate,
-            t2.tax_inclusive_unit_price,
-            t2.tax_inclusive_total_price,
-            t2.tax_exclusive_total_price,
-            t3.inbound_num as quantityStock
-        from  purchase_ledger t1
+        t1.supplier_name,
+        t2.product_category,
+        t2.id,
+        t3.id as recordId,
+        t2.specification_model,
+        t2.product_model_id,
+        t2.unit,
+        t2.quantity,
+        t2.min_stock,
+        t2.warn_num,
+        t2.quantity as quantity0,
+        t2.tax_rate,
+        t2.tax_inclusive_unit_price,
+        t2.tax_inclusive_total_price,
+        t2.tax_exclusive_total_price,
+        t3.inbound_num as quantityStock
+        from purchase_ledger t1
         left join sales_ledger_product t2 on t1.id = t2.sales_ledger_id
         left join procurement_record_storage t3 on t2.id = t3.sales_ledger_product_id
         where t1.purchase_contract_number = #{req.purchaseContractNumber}
@@ -28,52 +31,160 @@
     </select>
     <select id="listPage" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDto">
         select
-        t3.supplier_name,
+        t3.supplier_name as supplierName,
+        t3.purchase_contract_number as purchaseContractNumber,
+        case when t2.product_category is null then t5.product_name
+        else t2.product_category end as productCategory,
+        t1.id,
+        t1.sales_ledger_product_id as salesLedgerProductId,
+        t1.product_model_id as productModelId,
+        t1.create_user as createUser,
+        case when t2.specification_model is null then t4.model
+        else t2.specification_model end as specificationModel,
+        case when t2.unit is null then t4.unit
+        else t2.unit end as unit,
+        t2.tax_rate as taxRate,
+        t2.tax_inclusive_unit_price as taxInclusiveUnitPrice,
+        (t1.inbound_num * t2.tax_inclusive_unit_price) as taxInclusiveTotalPrice,
+        (t1.inbound_num * t2.tax_inclusive_unit_price - t1.inbound_num * t2.tax_inclusive_unit_price * t2.tax_rate /
+        100) as taxExclusiveTotalPrice,
+        t1.inbound_batches as inboundBatches,
+        t1.inbound_num as inboundNum,
+        t1.inbound_num as inboundNum0,
+        t1.create_time as createTime,
+        t1.update_time as updateTime,
+        t1.create_by as createBy,
+        t2.warn_num as warnNum,
+        t1.out_stock_quantity as outStockQuantity,
+        t1.shortage_description as shortageDescription
+        from procurement_record_storage t1
+        left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
+        left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
+        left join product_model t4 on t4.id = t1.product_model_id
+        left join product t5 on t5.id = t4.product_id
+        <where>
+            1 = 1
+            <if test="req.supplierName != null and req.supplierName != ''">
+                and t3.supplier_name like concat('%',#{req.supplierName},'%')
+            </if>
+            <if test="req.timeStr != null and req.timeStr != ''">
+                and t1.create_time like concat('%',#{req.timeStr},'%')
+            </if>
+        </where>
+    </select>
+
+    <select id="list" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDto">
+        select t3.supplier_name as supplierName,
+               t3.purchase_contract_number as purchaseContractNumber,
+               case
+                   when t2.product_category is null then t5.product_name
+                   else t2.product_category end    as productCategory,
+               t1.id,
+               case
+                   when t2.specification_model is null then t4.model
+                   else t2.specification_model end as specificationModel,
+               case
+                   when t2.unit is null then t4.unit
+                   else t2.unit end                as unit,
+               t2.quantity,
+               t2.quantity                         as quantity0,
+               t2.tax_rate                         as taxRate,
+               t2.tax_inclusive_unit_price         as taxInclusiveUnitPrice,
+               t2.tax_inclusive_total_price        as taxInclusiveTotalPrice,
+               t2.tax_exclusive_total_price        as taxExclusiveTotalPrice,
+               t1.inbound_batches                  as inboundBatches,
+               t1.inbound_num                      as inboundNum,
+               t1.create_time                      as createTime,
+               t1.create_time                      as time,
+               t1.create_by                        as createBy
+        from procurement_record_storage t1
+                 left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
+                 left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
+                 left join product_model t4 on t4.id = t1.product_model_id
+                 left join product t5 on t5.id = t4.product_id
+    </select>
+
+    <select id="listPageCopy" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy">
+        select
+        IFNULL(t3.supplier_name, '鎵嬪姩鏂板') as supplierName,
         t3.purchase_contract_number,
-        t2.product_category,
+        case when t2.product_category is null then t5.product_name
+        else t2.product_category end as productCategory,
         t1.id,
         t1.sales_ledger_product_id,
-        t2.specification_model,
-        t2.unit,
+        t1.create_user,
+        case when t2.specification_model is null then t4.model
+        else t2.specification_model end as specificationModel,
+        case when t2.unit is null then t4.unit
+        else t2.unit end as unit,
+        t2.min_stock,
         t2.tax_rate,
         t2.tax_inclusive_unit_price,
         t2.tax_inclusive_total_price,
         t2.tax_exclusive_total_price,
         t1.inbound_batches,
-        t1.inbound_num,
-        t1.inbound_num as inboundNum0,
-        t1.create_date,
-        t1.create_by
-        from  procurement_record_storage t1
-                  left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
-                  left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
+        sum(t1.inbound_num) as inboundNum,
+        sum(t1.inbound_num) as inboundNum0,
+        t1.inbound_num as totalInboundNum,
+        t1.create_time,
+        t1.update_time,
+        t1.create_by,
+        t2.warn_num
+        from procurement_record_storage t1
+        left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
+        left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
+        left join product_model t4 on t4.id = t1.product_model_id
+        left join product t5 on t5.id = t4.product_id
         <where>
             1 = 1
             <if test="req.supplierName != null and req.supplierName != ''">
-                and t3.supplier_name like  concat('%',#{req.supplierName},'%')
+                and (t3.supplier_name like concat('%',#{req.supplierName},'%')
+                or (#{req.supplierName} = '鎵嬪姩鏂板' and t3.supplier_name is null))
             </if>
         </where>
+        group by
+        IFNULL(t3.supplier_name, '鎵嬪姩鏂板'),
+        productCategory,
+        specificationModel,
+        t1.product_model_id,
+        t2.id
+        order by
+        (t3.supplier_name IS NULL) DESC,
+        t3.supplier_name ASC,
+        productCategory ASC
     </select>
-    <select id="list" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDto">
-        select
-            t3.supplier_name,
-            t3.purchase_contract_number,
-            t2.product_category,
-            t1.id,
-            t2.specification_model,
-            t2.unit,
-            t2.quantity,
-            t2.quantity as quantity0,
-            t2.tax_rate,
-            t2.tax_inclusive_unit_price,
-            t2.tax_inclusive_total_price,
-            t2.tax_exclusive_total_price,
-            t1.inbound_batches,
-            t1.inbound_num,
-            t1.create_date,
-            t1.create_by
-        from  procurement_record_storage t1
-                  left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
-                  left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
+
+    <select id="listCopy" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy">
+        select t3.supplier_name,
+               t3.purchase_contract_number,
+               case
+                   when t2.product_category is null then t5.product_name
+                   else t2.product_category end    as productCategory,
+               t1.id,
+               t1.sales_ledger_product_id,
+               t1.create_user,
+               case
+                   when t2.specification_model is null then t4.model
+                   else t2.specification_model end as specificationModel,
+               case
+                   when t2.unit is null then t4.unit
+                   else t2.unit end                as unit,
+               t2.tax_rate,
+               t2.tax_inclusive_unit_price,
+               t2.tax_inclusive_total_price,
+               t2.tax_exclusive_total_price,
+               t1.inbound_batches,
+               t1.inbound_num,
+               t1.inbound_num                      as inboundNum0,
+               t1.create_time,
+               t1.update_time,
+               t1.create_time                      as cTime,
+               t1.update_time                      as uTime,
+               t1.create_by
+        from procurement_record_storage t1
+                 left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
+                 left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
+                 left join product_model t4 on t4.id = t1.product_model_id
+                 left join product t5 on t5.id = t4.product_id
     </select>
-</mapper>
\ No newline at end of file
+</mapper>

--
Gitblit v1.9.3