From 3728fa293e1faf4bf4f9bf41105b84ddb43dc82e Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 02 十一月 2026 16:53:02 +0800
Subject: [PATCH] feat(order-rates): 新增筛选条件下全部订单费用汇总接口

---
 inspect-server/src/main/resources/mapper/InsOrderRatesMapper.xml |   34 ++++++++++++++++++++++++----------
 1 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/inspect-server/src/main/resources/mapper/InsOrderRatesMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderRatesMapper.xml
index 0778648..d12bbc5 100644
--- a/inspect-server/src/main/resources/mapper/InsOrderRatesMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsOrderRatesMapper.xml
@@ -1,30 +1,44 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.ruoyi.inspect.mapper.InsOrderRatesMapper">
-    <!-- 鏌ヨ璐圭敤鍒楄〃 -->
-    <select id="selectInsOrderRates" resultType="com.ruoyi.inspect.dto.SampleOrderDto">
-        select *
-        from (select io.*,
+    <!-- 鍒楄〃鍜屽叏閮ㄦ眹鎬诲叡鐢ㄧ浉鍚岃鍗曡寖鍥达紝姣忎釜璁㈠崟浠呰璐逛竴娆°�� -->
+    <sql id="ratesOrders">
+        select io.*,
         case
         when
         io.type_source = 0
         then io.sample_view
         else io.sample end                            sampleStr,
         GROUP_CONCAT(DISTINCT isa.model SEPARATOR ' ') AS sample_model,
-        COALESCE(sum(st.price), 0) total_price
+        MAX(rates.total_price) total_price
         from ins_order io
         LEFT JOIN ins_sample isa ON isa.ins_order_id = io.id
-        left join ins_order_standard_template iost on iost.ins_order_id = io.id
-        left join standard_template st on st.id = iost.template_id
-        where iost.id is not null
-        and io.state != 5
-        group by io.id) a
+        join (select iost.ins_order_id, COALESCE(sum(st.price), 0) total_price
+              from ins_order_standard_template iost
+              left join standard_template st on st.id = iost.template_id
+              group by iost.ins_order_id) rates on rates.ins_order_id = io.id
+        where io.state != 5
+        group by io.id
+    </sql>
+    <sql id="ratesFilter">
         <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
             ${ew.customSqlSegment}
         </if>
+    </sql>
+    <select id="selectInsOrderRates" resultType="com.ruoyi.inspect.dto.SampleOrderDto">
+        select * from (<include refid="ratesOrders"/>) a
+        <include refid="ratesFilter"/>
         order by a.sample_date desc, a.id desc
     </select>
 
+    <select id="selectRatesSummary" resultType="com.ruoyi.inspect.dto.OrderRatesSummaryDto">
+        select count(*) as count,
+               COALESCE(sum(case when a.is_discount = 1 and a.discount_amount is not null
+                                 then a.discount_amount else a.total_price end), 0) as total_amount
+        from (<include refid="ratesOrders"/>) a
+        <include refid="ratesFilter"/>
+    </select>
+
     <!-- 鏇存柊璁㈠崟鐨勮垂鐢ㄤ紭鎯犱笌澶囨敞 -->
     <update id="updateOrderFee">
         update ins_order

--
Gitblit v1.9.3