From 684e4306a08feeae188070f264148e6765da8dcf Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期日, 20 九月 2026 19:25:15 +0800
Subject: [PATCH] feat(account): 更新往来付款回款流水表及接口
---
src/main/resources/mapper/stock/StockInventoryMapper.xml | 880 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 795 insertions(+), 85 deletions(-)
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index 4e7adf6..487000b 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -86,7 +86,272 @@
</if>
</select>
+ <!-- 鎶ュ簾鍝侀�夋枡锛氬彧鏌ヤ骇鍝佹爲銆屽嵄搴熷缃鐢熷嵄搴熴�嶅ぇ绫伙紙鍚叾鎵�鏈夊瓙鑺傜偣锛変笅鐨勫悎鏍煎簱瀛橈紝甯︽壒鍙枫��
+ 澶х被鍚嶆寜涓氬姟鍙e緞鍐欐鍦ㄨ繖閲岋紝鏀瑰彛寰勫彧闇�鏀硅繖涓�澶勩��
+ 璇ユ煡璇互 WITH 寮�澶达紝鑰屾暟鎹潈闄愭嫤鎴櫒鍙鐞� select 寮�澶寸殑 SQL锛屽洜姝や笉浼氳拷鍔� dept_id/create_user,
+ 涓庛�屽簱瀛樻槸鍏辩敤鍩虹鏁版嵁銆侀�夋枡涓嶅簲鍙楀缓鍗曚汉闄愬埗銆嶇殑鍙e緞涓�鑷达紱淇濈暀 /*data_scope*/ 鏍囪璁╄繖涓剰鍥炬樉寮忓彲璇汇��
+ 涓嶅奖鍝嶅師 pagestockInventory -->
+ <select id="selectScrapStockPage" resultType="com.ruoyi.stock.dto.StockInventoryDto">
+ WITH RECURSIVE scrap_product_tree AS (
+ SELECT id
+ FROM product
+ WHERE product_name = '鍗卞簾澶勭疆娆$敓鍗卞簾'
+ UNION ALL
+ SELECT p.id
+ FROM product p
+ INNER JOIN scrap_product_tree t ON p.parent_id = t.id
+ )
+ select /*data_scope*/ si.id,
+ si.product_model_id,
+ si.batch_no,
+ si.qualitity,
+ COALESCE(si.locked_quantity, 0) as locked_quantity,
+ (si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
+ si.remark,
+ si.version,
+ pm.model,
+ pm.unit,
+ p.product_name
+ 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 pm.product_id in (select id from scrap_product_tree)
+ <if test="ew.productModelId != null">
+ and si.product_model_id = #{ew.productModelId}
+ </if>
+ <if test="ew.batchNo != null and ew.batchNo != ''">
+ and si.batch_no like concat('%',#{ew.batchNo},'%')
+ </if>
+ <if test="ew.productName != null and ew.productName != ''">
+ and p.product_name like concat('%',#{ew.productName},'%')
+ </if>
+ order by si.update_time desc
+ </select>
+
<select id="pageListCombinedStockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
+ WITH RECURSIVE product_tree AS (
+ SELECT id
+ FROM product
+ WHERE id = #{ew.topParentProductId}
+
+ UNION ALL
+
+ SELECT p.id
+ FROM product p
+ INNER JOIN product_tree pt ON p.parent_id = pt.id
+ )
+ select
+ GROUP_CONCAT(DISTINCT batch_no ORDER BY batch_no SEPARATOR ',') as batch_no,
+ MAX(qualifiedId) as qualifiedId,
+ MAX(unQualifiedId) as unQualifiedId,
+ SUM(qualifiedQuantity) as qualifiedQuantity,
+ SUM(unQualifiedQuantity) as unQualifiedQuantity,
+ SUM(qualifiedLockedQuantity) as qualifiedLockedQuantity,
+ SUM(unQualifiedLockedQuantity) as unQualifiedLockedQuantity,
+ SUM(qualifiedQuantity - qualifiedLockedQuantity - IFNULL(qualifiedPendingOut, 0)) as qualifiedUnLockedQuantity,
+ SUM(unQualifiedQuantity - unQualifiedLockedQuantity - IFNULL(unQualifiedPendingOut, 0)) as unQualifiedUnLockedQuantity,
+ SUM(IFNULL(qualifiedPendingOut, 0)) as qualifiedPendingOutQuantity,
+ SUM(IFNULL(unQualifiedPendingOut, 0)) as unQualifiedPendingOutQuantity,
+ product_model_id,
+ MAX(create_time) as create_time,
+ MAX(update_time) as update_time,
+ MAX(warn_num) as warn_num,
+ MAX(version) as version,
+ model,
+ MAX(remark) as remark,
+ unit,
+ product_name,
+ product_id,
+ 'combined' as stockType,
+ (
+ select sir.tank_no
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ order by sir.id desc
+ limit 1
+ ) as tank_no,
+ (
+ select sir.oil_product
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ order by sir.id desc
+ limit 1
+ ) as oil_product,
+ (
+ select sir.tank_inspection_status
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ order by sir.id desc
+ limit 1
+ ) as tank_inspection_status,
+ (
+ select sir.unloading_crane_position
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ order by sir.id desc
+ limit 1
+ ) as unloading_crane_position,
+ (
+ select sir.density
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ order by sir.id desc
+ limit 1
+ ) as density,
+ (
+ select sir.unload_photos
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ order by sir.id desc
+ limit 1
+ ) as unload_photos,
+ (
+ select sir.gross_weight
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ order by sir.id desc
+ limit 1
+ ) as gross_weight,
+ (
+ select sir.tare_weight
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ order by sir.id desc
+ limit 1
+ ) as tare_weight,
+ (
+ select sir.net_weight
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ order by sir.id desc
+ limit 1
+ ) as net_weight,
+ (
+ select sir.loss_quantity
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ order by sir.id desc
+ limit 1
+ ) as loss_quantity,
+ (
+ select sir.actual_volume
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ order by sir.id desc
+ limit 1
+ ) as actual_volume,
+ (
+ select sir.pound_photos
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ order by sir.id desc
+ limit 1
+ ) as pound_photos
+ from (
+ select
+ si.batch_no,
+ si.id as qualifiedId,
+ null as unQualifiedId,
+ si.qualitity as qualifiedQuantity,
+ 0 as unQualifiedQuantity,
+ COALESCE(si.locked_quantity, 0) as locked_quantity,
+ COALESCE(si.locked_quantity, 0) as qualifiedLockedQuantity,
+ 0 as unQualifiedLockedQuantity,
+ si.product_model_id,
+ si.create_time,
+ si.update_time,
+ COALESCE(si.warn_num, 0) as warn_num,
+ si.version,
+ (si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
+ pm.model,
+ si.remark,
+ pm.unit,
+ p.product_name,
+ p.id as product_id,
+ (
+ select IFNULL(SUM(sor.stock_out_num), 0)
+ from stock_out_record sor
+ where sor.product_model_id = si.product_model_id
+ and (
+ (si.batch_no is null and sor.batch_no is null)
+ or si.batch_no = sor.batch_no
+ )
+ and sor.type = '0'
+ and sor.approval_status = 0
+ ) as qualifiedPendingOut,
+ 0 as unQualifiedPendingOut
+ 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
+
+ union all
+
+ select
+ su.batch_no,
+ null as qualifiedId,
+ su.id as unQualifiedId,
+ 0 as qualifiedQuantity,
+ su.qualitity as unQualifiedQuantity,
+ COALESCE(su.locked_quantity, 0) as locked_quantity,
+ 0 as qualifiedLockedQuantity,
+ COALESCE(su.locked_quantity, 0) as unQualifiedLockedQuantity,
+ su.product_model_id,
+ su.create_time,
+ su.update_time,
+ 0 as warn_num,
+ su.version,
+ (su.qualitity - COALESCE(su.locked_quantity, 0)) as un_locked_quantity,
+ pm.model,
+ su.remark,
+ pm.unit,
+ p.product_name,
+ p.id as product_id,
+ 0 as qualifiedPendingOut,
+ (
+ select IFNULL(SUM(sor.stock_out_num), 0)
+ from stock_out_record sor
+ where sor.product_model_id = su.product_model_id
+ and (
+ (su.batch_no is null and sor.batch_no is null)
+ or su.batch_no = sor.batch_no
+ )
+ and sor.type = '1'
+ and sor.approval_status = 0
+ ) as unQualifiedPendingOut
+ 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
+ ) as combined
+ <where>
+ <if test="ew.productName != null and ew.productName !=''">
+ and combined.product_name in (
+ select distinct p.product_name
+ from product p
+ left join product_model pm on p.id = pm.product_id
+ where p.product_name like concat('%',#{ew.productName},'%')
+ or pm.model like concat('%',#{ew.productName},'%')
+ )
+ </if>
+ <if test="ew.topParentProductId != null and ew.topParentProductId > 0">
+ and combined.product_id in (select id from product_tree)
+ </if>
+ <if test="ew.model != null and ew.model !=''">
+ and combined.model like concat('%',#{ew.model},'%')
+ </if>
+ <if test="ew.batchNo != null and ew.batchNo !=''">
+ and combined.batch_no like concat('%',#{ew.batchNo},'%')
+ </if>
+ </where>
+ group by
+ product_model_id,
+ model,
+ unit,
+ product_name,
+ product_id
+ order by create_time desc
+ </select>
+
+ <select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData">
WITH RECURSIVE product_tree AS (
SELECT id
FROM product
@@ -120,7 +385,15 @@
unit,
product_name,
product_id,
- 'combined' as stockType
+ 'combined' as stockType,
+ (
+ select sir.tank_no
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as tank_no
from (
select
si.batch_no,
@@ -205,87 +478,6 @@
</where>
group by batch_no, product_model_id, model, unit, product_name, product_id
</select>
-
- <select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData">
- WITH RECURSIVE product_tree AS (
- SELECT id
- FROM product
- WHERE id = #{ew.topParentProductId}
-
- UNION ALL
-
- SELECT p.id
- FROM product p
- INNER JOIN product_tree pt ON p.parent_id = pt.id
- )
- select
- SUM(qualifiedQuantity) as qualifiedQuantity,
- SUM(unQualifiedQuantity) as unQualifiedQuantity,
- SUM(qualifiedLockedQuantity) as qualifiedLockedQuantity,
- SUM(unQualifiedLockedQuantity) as unQualifiedLockedQuantity,
- model,
- unit,
- product_name,
- batch_no,
- MAX(warn_num) as warn_num,
- MAX(remark) as remark,
- MAX(update_time) as update_time
- from (
- select
- si.qualitity as qualifiedQuantity,
- 0 as unQualifiedQuantity,
- COALESCE(si.locked_quantity, 0) as qualifiedLockedQuantity,
- 0 as unQualifiedLockedQuantity,
- si.product_model_id,
- si.create_time,
- si.update_time,
- si.batch_no,
- COALESCE(si.warn_num, 0) as warn_num,
- si.remark,
- pm.model,
- pm.unit,
- p.product_name,
- p.id as product_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
-
- union all
-
- select
- 0 as qualifiedQuantity,
- su.qualitity as unQualifiedQuantity,
- 0 as qualifiedLockedQuantity,
- COALESCE(su.locked_quantity, 0) as unQualifiedLockedQuantity,
- su.product_model_id,
- su.create_time,
- su.update_time,
- 0 as warn_num,
- su.batch_no,
- su.remark,
- pm.model,
- pm.unit,
- p.product_name,
- p.id as product_id
- 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
- ) as combined
- <where>
- <if test="ew.productName != null and ew.productName !=''">
- and combined.product_name in (
- select distinct p.product_name
- from product p
- left join product_model pm on p.id = pm.product_id
- where p.product_name like concat('%',#{ew.productName},'%') or pm.model like concat('%',#{ew.productName},'%')
- )
- </if>
- <if test="ew.topParentProductId != null and ew.topParentProductId > 0">
- and combined.product_id in (select id from product_tree)
- </if>
- </where>
- group by product_model_id, model, unit, product_name,batch_no
- </select>
<select id="stockInventoryPage" resultType="com.ruoyi.stock.dto.StockInRecordDto">
select sir.*,si.qualitity as current_stock,
pm.model,
@@ -294,7 +486,11 @@
su.nick_name as create_by
from
stock_in_record sir
- left join stock_inventory si on sir.product_model_id = si.product_model_id
+ left join (
+ select product_model_id, sum(qualitity) as qualitity
+ from stock_inventory
+ group by product_model_id
+ ) si on sir.product_model_id = si.product_model_id
left join product_model pm on sir.product_model_id = pm.id
left join product p on pm.product_id = p.id
left join sys_user su on sir.create_user = su.user_id
@@ -310,6 +506,7 @@
and sir.create_time <= #{ew.endMonth}
</if>
</where>
+ order by sir.id desc
</select>
<select id="stockInAndOutRecord" resultType="com.ruoyi.stock.dto.StockInventoryDto">
@@ -455,8 +652,9 @@
and (si.qualitity - ifnull(si.locked_quantity, 0)) > 0
order by si.product_model_id, si.batch_no
</select>
- <select id="getByModelId" resultType="com.ruoyi.stock.pojo.StockInventory">
- select si.id, si.batch_no, si.locked_quantity, (si.qualitity - IFNULL(sd.qualitity, 0)) as qualitity
+ <select id="getByModelId" resultType="com.ruoyi.stock.dto.StockInventoryDto">
+ select si.id, si.batch_no, si.locked_quantity, (si.qualitity - IFNULL(sd.qualitity, 0)) as qualitity,
+ p.product_name, pm.model, pm.unit
from stock_inventory si
left join (
select spd.stock_inventory_id, sum(spd.quantity) as qualitity
@@ -473,7 +671,519 @@
)
group by spd.stock_inventory_id
) as sd on sd.stock_inventory_id = si.id
+ left join product_model pm on si.product_model_id = pm.id
+ left join product p on pm.product_id = p.id
where si.product_model_id = #{productModelId}
+ and si.qualitity > IFNULL(sd.qualitity, 0)
+ </select>
+
+ <select id="getBatchNoQty" resultType="com.ruoyi.stock.dto.StockInventoryDto">
+ select
+ batch_no,
+ MAX(qualifiedId) as qualifiedId,
+ MAX(unQualifiedId) as unQualifiedId,
+
+ SUM(qualifiedQuantity) as qualifiedQuantity,
+ SUM(unQualifiedQuantity) as unQualifiedQuantity,
+
+ SUM(qualifiedLockedQuantity) as qualifiedLockedQuantity,
+ SUM(unQualifiedLockedQuantity) as unQualifiedLockedQuantity,
+
+ SUM(IFNULL(qualifiedPendingOut, 0)) as qualifiedPendingOutQuantity,
+ SUM(IFNULL(unQualifiedPendingOut, 0)) as unQualifiedPendingOutQuantity,
+
+ SUM(qualifiedQuantity - qualifiedLockedQuantity - IFNULL(qualifiedPendingOut, 0)) as qualifiedUnLockedQuantity,
+ SUM(unQualifiedQuantity - unQualifiedLockedQuantity - IFNULL(unQualifiedPendingOut, 0)) as unQualifiedUnLockedQuantity,
+
+ product_model_id,
+ model,
+ unit,
+ product_name,
+ product_id,
+
+ MAX(create_time) as create_time,
+ MAX(update_time) as update_time,
+ MAX(warn_num) as warn_num,
+ MAX(version) as version,
+ MAX(remark) as remark,
+
+ 'combined' as stockType,
+ (
+ select sir.oil_product
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as oil_product,
+ (
+ select sir.tank_inspection_status
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as tank_inspection_status,
+ (
+ select sir.unloading_crane_position
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as unloading_crane_position,
+ (
+ select sir.density
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as density,
+ (
+ select sir.unload_photos
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as unload_photos,
+ (
+ select sir.gross_weight
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as gross_weight,
+ (
+ select sir.tare_weight
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as tare_weight,
+ (
+ select sir.net_weight
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as net_weight,
+ (
+ select sir.loss_quantity
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as loss_quantity,
+ (
+ select sir.actual_volume
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as actual_volume,
+ (
+ select sir.pound_photos
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as pound_photos,
+ (
+ select sor.out_category
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_category,
+ (
+ select sor.out_date
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_date,
+ (
+ select sor.out_tonnage
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_tonnage,
+ (
+ select sor.customer_name
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_customer_name,
+ (
+ select sor.loading_inspection_status
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as loading_inspection_status,
+ (
+ select sor.loading_crane_position
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as loading_crane_position,
+ (
+ select sor.density
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_density,
+ (
+ select sor.driver_name
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_driver_name,
+ (
+ select sor.truck_plate_no
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_truck_plate_no,
+ (
+ select sor.loading_photos
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as loading_photos,
+ (
+ select sor.pound_photos
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_pound_photos,
+ (
+ select sor.oil_depot_name
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_oil_depot_name,
+ (
+ select sor.tank_no
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_tank_no,
+ (
+ select sor.oil_product
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_oil_product,
+ (
+ select sor.contact_person
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_contact_person,
+ (
+ select sor.contact_phone
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_contact_phone,
+ (
+ select sor.gross_weight
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_gross_weight,
+ (
+ select sor.tare_weight
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_tare_weight,
+ (
+ select sor.net_weight
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_net_weight,
+ (
+ select sor.loss_quantity
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_loss_quantity,
+ (
+ select sor.actual_volume
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_actual_volume,
+ (
+ select sor.driver_phone
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_driver_phone,
+ (
+ select sor.escort_name
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_escort_name,
+ (
+ select sor.escort_phone
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_escort_phone,
+ (
+ select sor.trailer_plate_no
+ from stock_out_record sor
+ where sor.product_model_id = combined.product_model_id
+ order by sor.id desc
+ limit 1
+ ) as out_trailer_plate_no,
+ (
+ select sir.oil_depot_name
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as oil_depot_name,
+ (
+ select sir.inbound_category
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as inbound_category,
+ (
+ select sir.tank_no
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as tank_no,
+ (
+ select sir.inbound_time
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as inbound_time,
+ (
+ select sir.original_quantity
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as original_quantity,
+ (
+ select sir.customer_name
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as customer_name,
+ (
+ select sir.contact_person
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as contact_person,
+ (
+ select sir.contact_phone
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as contact_phone,
+ (
+ select sir.driver_name
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as driver_name,
+ (
+ select sir.driver_phone
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as driver_phone,
+ (
+ select sir.escort_name
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as escort_name,
+ (
+ select sir.escort_phone
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as escort_phone,
+ (
+ select sir.truck_plate_no
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as truck_plate_no,
+ (
+ select sir.trailer_plate_no
+ from stock_in_record sir
+ where sir.product_model_id = combined.product_model_id
+ and (sir.batch_no = combined.batch_no or (combined.batch_no is null and sir.batch_no is null))
+ order by sir.id desc
+ limit 1
+ ) as trailer_plate_no
+ from (
+ select
+ si.batch_no,
+ si.id as qualifiedId,
+ null as unQualifiedId,
+
+ si.qualitity as qualifiedQuantity,
+ 0 as unQualifiedQuantity,
+
+ COALESCE(si.locked_quantity, 0) as qualifiedLockedQuantity,
+ 0 as unQualifiedLockedQuantity,
+
+ si.product_model_id,
+ pm.model,
+ pm.unit,
+ p.product_name,
+ p.id as product_id,
+
+ si.create_time,
+ si.update_time,
+ COALESCE(si.warn_num, 0) as warn_num,
+ si.version,
+ si.remark,
+
+ (
+ select IFNULL(SUM(sor.stock_out_num), 0)
+ from stock_out_record sor
+ where sor.product_model_id = si.product_model_id
+ and (
+ (si.batch_no is null and sor.batch_no is null)
+ or si.batch_no = sor.batch_no
+ )
+ and sor.type = '0'
+ and sor.approval_status = 0
+ ) as qualifiedPendingOut,
+
+ 0 as unQualifiedPendingOut
+ 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
+
+ union all
+
+ select
+ su.batch_no,
+ null as qualifiedId,
+ su.id as unQualifiedId,
+
+ 0 as qualifiedQuantity,
+ su.qualitity as unQualifiedQuantity,
+
+ 0 as qualifiedLockedQuantity,
+ COALESCE(su.locked_quantity, 0) as unQualifiedLockedQuantity,
+
+ su.product_model_id,
+ pm.model,
+ pm.unit,
+ p.product_name,
+ p.id as product_id,
+
+ su.create_time,
+ su.update_time,
+ 0 as warn_num,
+ su.version,
+ su.remark,
+
+ 0 as qualifiedPendingOut,
+
+ (
+ select IFNULL(SUM(sor.stock_out_num), 0)
+ from stock_out_record sor
+ where sor.product_model_id = su.product_model_id
+ and (
+ (su.batch_no is null and sor.batch_no is null)
+ or su.batch_no = sor.batch_no
+ )
+ and sor.type = '1'
+ and sor.approval_status = 0
+ ) as unQualifiedPendingOut
+ 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
+ ) as combined
+ <where>
+ <if test="ew.productModelId != null and ew.productModelId > 0">
+ and combined.product_model_id = #{ew.productModelId}
+ </if>
+
+ <if test="ew.productId != null and ew.productId > 0">
+ and combined.product_id = #{ew.productId}
+ </if>
+ </where>
+ group by
+ batch_no,
+ product_model_id,
+ model,
+ unit,
+ product_name,
+ product_id
+ order by
+ MAX(update_time) desc
</select>
</mapper>
--
Gitblit v1.9.3