From bd643b964b84a0be22437c04f0eee375a9623de8 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 29 九月 2026 14:21:50 +0800
Subject: [PATCH] 天津-智科电子 1.协同办公-协同审批:采购及销售审批进入销售流程后也可预览在台账上传的附件
---
src/main/resources/mapper/sales/ShippingInfoMapper.xml | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 112 insertions(+), 5 deletions(-)
diff --git a/src/main/resources/mapper/sales/ShippingInfoMapper.xml b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
index aa73dac..4b0d419 100644
--- a/src/main/resources/mapper/sales/ShippingInfoMapper.xml
+++ b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
@@ -2,6 +2,11 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.sales.mapper.ShippingInfoMapper">
+ <!--
+ 鍙戣揣鍙拌处鍒楄〃 = 鍙戣揣鍗�(shipping_info) UNION ALL 閿�鍞被娌瑰搧鍑哄簱(stock_out_record)銆�
+ 涓ゅ垎鏀垪椤哄簭蹇呴』涓ユ牸涓�鑷达紙鍏� 31 鍒楋級锛屽垪鍚嶄互鍒嗘敮 A 涓哄噯銆�
+ 娉ㄦ剰锛氭暟鎹潈闄愭嫤鎴櫒鍙粰绗竴涓� from 鐨勮〃鍔犳潯浠讹紝鍒嗘敮 B 闇�鍦ㄦ湰 XML 閲岃嚜琛岃ˉ鍚岀瓑杩囨护銆�
+ -->
<select id="listPage" resultType="com.ruoyi.sales.dto.ShippingInfoDto">
SELECT
s.id,
@@ -24,7 +29,17 @@
p.product_name,
sl.customer_name,
spd.totalQuantity,
- sor.outboundBatches
+ sor.outboundBatches,
+ 'shipping' as source,
+ oor.id as stockOutRecordId,
+ oor.out_category as outCategory,
+ oor.tank_no as tankNo,
+ oor.oil_product as oilProduct,
+ oor.oil_depot_name as oilDepotName,
+ oor.driver_name as driverName,
+ oor.contact_person as contactPerson,
+ oor.contact_phone as contactPhone,
+ oor.batch_no as outBatchNo
FROM shipping_info s
LEFT JOIN (select shipping_info_id,sum(quantity) totalQuantity from shipping_product_detail GROUP BY shipping_info_id) spd ON spd.shipping_info_id = s.id
LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
@@ -35,6 +50,12 @@
from stock_out_record
where record_type='13'and approval_status=1
group by record_id)sor on sor.record_id= s.id
+ <!-- 鐢辨补鍝佸嚭搴撳鎵归�氳繃鏃剁敓鎴愮殑鍙戣揣鍗曪細涓�鏉″嚭搴撳搴斾竴鏉¤嚜宸辩殑 shipping_info锛�
+ 鏁呰嚦澶氬懡涓竴琛岋紝涓嶄細鏀惧ぇ琛屾暟銆傛墜寤虹殑鍙戣揣鍗曟病鏈夐厤瀵规补鍝佸嚭搴擄紝杩欎簺鍒椾负绌� -->
+ left join stock_out_record oor
+ on oor.record_id = s.id
+ and TRIM(IFNULL(oor.record_type,'')) = '13'
+ and (oor.type IS NULL or oor.type = '')
WHERE 1=1
<if test="req.salesContractNo != null and req.salesContractNo != ''">
AND sl.sales_contract_no LIKE CONCAT('%',#{req.salesContractNo},'%')
@@ -47,6 +68,86 @@
</if>
<if test="req.expressNumber != null and req.expressNumber != ''">
AND s.express_number LIKE CONCAT('%',#{req.expressNumber},'%')
+ </if>
+ UNION ALL
+ SELECT
+ o.id,
+ o.sales_ledger_id,
+ o.out_date as shipping_date,
+ o.truck_plate_no as shipping_car_number,
+ NULL as express_number,
+ NULL as express_company,
+ o.outbound_batches as shipping_no,
+ NULL as type,
+ '宸插彂璐�' as status,
+ o.create_time,
+ o.update_time,
+ o.create_user,
+ o.update_user,
+ NULL as tenant_id,
+ <!-- 娌瑰搧鍑哄簱鍙粦澶氫釜閿�鍞彴璐︼紙澶氬鎴凤級锛宱.sales_ledger_id 鍙瓨棣栭」锛屾晠浠庣粦瀹氳〃姹囨�诲叏閮ㄥ悎鍚屽彿 -->
+ IFNULL(
+ (select group_concat(distinct slb.sales_contract_no separator ',')
+ from stock_out_record_sales_ledger b
+ join sales_ledger slb on slb.id = b.sales_ledger_id
+ where b.stock_out_record_id = o.id),
+ sl2.sales_contract_no) as sales_contract_no,
+ pm2.model as specification_model,
+ pm2.unit,
+ p2.product_name,
+ o.customer_name,
+ o.stock_out_num as totalQuantity,
+ o.outbound_batches as outboundBatches,
+ 'oilOut' as source,
+ o.id as stockOutRecordId,
+ o.out_category as outCategory,
+ o.tank_no as tankNo,
+ o.oil_product as oilProduct,
+ o.oil_depot_name as oilDepotName,
+ o.driver_name as driverName,
+ o.contact_person as contactPerson,
+ o.contact_phone as contactPhone,
+ o.batch_no as outBatchNo
+ FROM stock_out_record o
+ left join product_model pm2 on pm2.id = o.product_model_id
+ left join product p2 on p2.id = pm2.product_id
+ <!-- 缁戝畾浜嗛攢鍞彴璐︾殑娌瑰搧鍑哄簱甯﹀嚭鍚堝悓鍙凤紱娌$粦鐨勮璇ュ垪浠嶄负绌� -->
+ left join sales_ledger sl2 on sl2.id = o.sales_ledger_id
+ <!-- 鍙彇娌瑰搧鍑哄簱锛坱ype 涓虹┖锛屽叏閮ㄥ嚭搴撶被鍒級锛泃ype=0/1 鐨勫悎鏍笺�佷笉鍚堟牸鍑哄簱涓嶈繘鍙戣揣鍙拌处 -->
+ WHERE (o.type IS NULL OR o.type = '') AND o.approval_status = 1
+ <!-- 宸叉敼閫犳垚銆岄攢鍞�-鍙戣揣鍑哄簱銆嶇殑娌瑰搧琛岀敱鍒嗘敮 A 鐨� shipping_info 灞曠ず锛屾澶勬帓闄ら伩鍏嶅悓涓�鎵硅揣涓よ銆�
+ IFNULL 蹇呴』鍔狅細record_type 涓� NULL 鏃朵笁鍊奸�昏緫浼氭妸鏁磋婊ゆ帀 -->
+ AND NOT (TRIM(IFNULL(o.record_type,'')) = '13' AND IFNULL(o.record_id,0) > 0)
+ <if test="req.salesContractNo != null and req.salesContractNo != ''">
+ <!-- 澶氬彴璐﹀嚭搴撹鎸夈�屼换涓�缁戝畾鍙拌处鐨勫悎鍚屽彿銆嶉兘鑳界瓫鍒帮紝涓嶈兘鍙湅棣栭」 -->
+ AND (sl2.sales_contract_no LIKE CONCAT('%',#{req.salesContractNo},'%')
+ OR EXISTS (select 1
+ from stock_out_record_sales_ledger b
+ join sales_ledger slb on slb.id = b.sales_ledger_id
+ where b.stock_out_record_id = o.id
+ and slb.sales_contract_no LIKE CONCAT('%',#{req.salesContractNo},'%')))
+ </if>
+ <!-- 娌瑰搧鍑哄簱娌℃湁蹇�掑崟锛屾寜蹇�掑崟鍙风瓫閫夋椂涓嶅簲杩斿洖浠讳綍娌瑰搧琛� -->
+ <if test="req.expressNumber != null and req.expressNumber != ''">
+ AND 1=0
+ </if>
+ <if test="req.shippingCarNumber != null and req.shippingCarNumber != ''">
+ AND o.truck_plate_no LIKE CONCAT('%',#{req.shippingCarNumber},'%')
+ </if>
+ <if test="req.shippingNo != null and req.shippingNo != ''">
+ AND o.outbound_batches LIKE CONCAT('%',#{req.shippingNo},'%')
+ </if>
+ <if test="req.createUser != null">
+ AND o.create_user = #{req.createUser}
+ </if>
+ <if test="req.deptId != null">
+ AND o.dept_id = #{req.deptId}
+ </if>
+ <if test="req.deptIds != null and req.deptIds.length > 0">
+ AND o.dept_id IN
+ <foreach collection="req.deptIds" item="deptId" open="(" separator="," close=")">
+ #{deptId}
+ </foreach>
</if>
order by create_time DESC
</select>
@@ -72,12 +173,14 @@
slp.product_category,
slp.specification_model,
slp.unit,
+ slp.product_model_id,
sor.outbound_batches,
sor.stock_out_num,
sor.batch_no,
slp.tax_inclusive_unit_price,
GREATEST(sor.stock_out_num - COALESCE(rs.total_return_num, 0), 0) AS un_quantity,
- COALESCE(rs.total_return_num, 0) AS total_return_num
+ COALESCE(rs.return_num, 0) AS total_return_num,
+ COALESCE(rs.pending_return_num, 0) AS pending_return_num
FROM shipping_info si
LEFT JOIN shipping_product_detail spd ON spd.shipping_info_id = si.id
LEFT JOIN stock_out_record sor ON sor.record_id = si.id and sor.record_type = '13'
@@ -85,7 +188,9 @@
LEFT JOIN (
SELECT
stock_out_record_id,
- SUM(num) AS total_return_num
+ SUM(num) AS total_return_num,
+ SUM( CASE WHEN rsp.STATUS = 0 THEN rsp.num ELSE 0 END ) AS pending_return_num ,
+ SUM( CASE WHEN rsp.STATUS = 1 THEN rsp.num ELSE 0 END ) AS return_num
FROM return_sale_product rsp
left join return_management rm on rm.id = rsp.return_management_id
left join shipping_info si on si.id = rm.shipping_id
@@ -97,10 +202,12 @@
si.id = #{shippingId}
</if>
</where>
+ order by sor.id
</select>
<select id="getShippingInfoByCustomerName" resultType="com.ruoyi.sales.pojo.ShippingInfo">
- select * from shipping_info si
+ select distinct si.* from shipping_info si
left join sales_ledger sl on si.sales_ledger_id = sl.id
- where sl.customer_name = #{customerName}
+ inner join stock_out_record sor on sor.record_id = si.id and sor.record_type = '13' and sor.approval_status = 1
+ where sl.customer_name = #{customerName} and si.status = '瀹℃牳閫氳繃'
</select>
</mapper>
--
Gitblit v1.9.3