From 963a8c24874c2e10a329a6ea39774bc5eda0f762 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期三, 25 三月 2026 15:02:56 +0800
Subject: [PATCH] 销售金额

---
 jyz-base-start/src/main/resources/xml/OilRecordMapper.xml |  104 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 102 insertions(+), 2 deletions(-)

diff --git a/jyz-base-start/src/main/resources/xml/OilRecordMapper.xml b/jyz-base-start/src/main/resources/xml/OilRecordMapper.xml
index a4201eb..65a05ef 100644
--- a/jyz-base-start/src/main/resources/xml/OilRecordMapper.xml
+++ b/jyz-base-start/src/main/resources/xml/OilRecordMapper.xml
@@ -52,7 +52,7 @@
         select
         oil_position oilPosition, count(1) oilCount,  sum(oil_volume) OilVolume
         from t_oil_record
-        where org_code =#{orgCode}
+        where org_code like concat(#{orgCode}, '%')
         <if test="dateMonth != null and dateMonth != ''">and DATE_FORMAT(start_time, '%Y-%m')=#{dateMonth}</if>
         GROUP BY oil_position
     </select>
@@ -90,6 +90,22 @@
             <if test="orgCode != null and orgCode != ''">and org_code like concat(#{orgCode}, '%')</if>
         </where>
     </sql>
+    <sql id="statBeforeOilFreqCondition">
+        <where>
+            and behavior = 1
+            <if test="beforeStartTime != null and beforeStartTime != ''">and start_time >= #{beforeStartTime}</if>
+            <if test="beforeEndTime != null and beforeEndTime != ''">and start_time &lt; #{beforeEndTime}</if>
+            <if test="orgCode != null and orgCode != ''">and org_code like concat(#{orgCode}, '%')</if>
+        </where>
+    </sql>
+    <sql id="statAfterOilFreqCondition">
+        <where>
+            and behavior = 1
+            <if test="afterStartTime != null and afterStartTime != ''">and start_time >= #{afterStartTime}</if>
+            <if test="afterEndTime != null and afterEndTime != ''">and start_time &lt; #{afterEndTime}</if>
+            <if test="orgCode != null and orgCode != ''">and org_code like concat(#{orgCode}, '%')</if>
+        </where>
+    </sql>
     <select id="statisTotal" parameterType="com.tievd.jyz.entity.vo.DataStatisReqVo" resultType="com.tievd.jyz.entity.vo.StatDataTableVo">
         select
         *,
@@ -104,7 +120,8 @@
             count(if(behavior=1,1,null)) oilCount,
             sum(oil_volume) oilVolume,
             sum(spand_time) sumSpand,
-            count(DISTINCT if(behavior=1, r.license_num, null)) onceOilCount
+            count(DISTINCT if(behavior=1, r.license_num, null)) onceOilCount,
+            sum(if(behavior=1, total_amount, 0)) totalAmount
             from t_oil_record r
             join (
             select sum(car_count) carCount from t_traffic_flow
@@ -183,6 +200,38 @@
         GROUP BY org_code
         limit 10
     </select>
+    <select id="statisOilFreqCompare" resultType="java.util.Map" parameterType="com.tievd.jyz.entity.vo.DataStatisReqVo">
+        select
+        l.licenseNum licenseNum,
+        ifnull(b.beforeOilCount, 0) beforeOilCount,
+        ifnull(a.afterOilCount, 0) afterOilCount,
+        ifnull(a.afterOilCount, 0) - ifnull(b.beforeOilCount, 0) diffOilCount,
+        case
+            when ifnull(b.beforeOilCount, 0) = 0 then null
+            else round((ifnull(a.afterOilCount, 0) - ifnull(b.beforeOilCount, 0)) * 100 / ifnull(b.beforeOilCount, 0), 2)
+        end diffRate
+        from (
+            select license_num licenseNum from t_oil_record
+            <include refid="statBeforeOilFreqCondition"/>
+            union
+            select license_num licenseNum from t_oil_record
+            <include refid="statAfterOilFreqCondition"/>
+        ) l
+        left join (
+            select license_num licenseNum, count(1) beforeOilCount
+            from t_oil_record
+            <include refid="statBeforeOilFreqCondition"/>
+            group by license_num
+        ) b on l.licenseNum = b.licenseNum
+        left join (
+            select license_num licenseNum, count(1) afterOilCount
+            from t_oil_record
+            <include refid="statAfterOilFreqCondition"/>
+            group by license_num
+        ) a on l.licenseNum = a.licenseNum
+        order by afterOilCount desc, beforeOilCount desc, licenseNum asc
+        limit 200
+    </select>
     <select id="statFanByModel" resultType="com.tievd.jyz.entity.vo.StatDataTableVo" parameterType="com.tievd.jyz.entity.vo.DataStatisReqVo">
         select
         count(if(behavior=1,1,null)) oilCount,
@@ -220,4 +269,55 @@
           GROUP BY model_code
         ) f on m.model_code = f.model_code
     </select>
+
+    <select id="statFanByOilType" resultType="com.tievd.jyz.entity.vo.StatDataTableVo" parameterType="com.tievd.jyz.entity.vo.DataStatisReqVo">
+        select
+        count(if(behavior=1,1,null)) oilCount,
+        sum(oil_volume) oilVolume,
+        sum(if(behavior=1, total_amount, 0)) totalAmount,
+        oil_type oilType
+        from t_oil_record
+        <include refid="statRecordCondition" />
+        and oil_type is not null and oil_type != ''
+        GROUP BY oil_type
+    </select>
+
+    <select id="getVehicleFrequencyBeforeActivity" resultType="java.util.Map">
+        SELECT 
+            COUNT(DISTINCT license_num) as totalVehicles,
+            COUNT(*) as totalOilRecords,
+            AVG(oil_volume) as avgOilVolume,
+            SUM(oil_volume) as totalOilVolume
+        FROM t_oil_record
+        WHERE start_time &lt; #{startTime}
+        <foreach collection="orgCodes" item="orgCode" open="AND (" separator=" OR " close=")">
+            org_code LIKE concat(#{orgCode}, '%')
+        </foreach>
+    </select>
+
+    <select id="getVehicleFrequencyDuringActivity" resultType="java.util.Map">
+        SELECT 
+            COUNT(DISTINCT license_num) as totalVehicles,
+            COUNT(*) as totalOilRecords,
+            AVG(oil_volume) as avgOilVolume,
+            SUM(oil_volume) as totalOilVolume
+        FROM t_oil_record
+        WHERE start_time >= #{startTime} AND start_time &lt;= #{endTime}
+        <foreach collection="orgCodes" item="orgCode" open="AND (" separator=" OR " close=")">
+            org_code LIKE concat(#{orgCode}, '%')
+        </foreach>
+    </select>
+
+    <select id="getVehicleFrequencyAfterActivity" resultType="java.util.Map">
+        SELECT 
+            COUNT(DISTINCT license_num) as totalVehicles,
+            COUNT(*) as totalOilRecords,
+            AVG(oil_volume) as avgOilVolume,
+            SUM(oil_volume) as totalOilVolume
+        FROM t_oil_record
+        WHERE start_time > #{endTime}
+        <foreach collection="orgCodes" item="orgCode" open="AND (" separator=" OR " close=")">
+            org_code LIKE concat(#{orgCode}, '%')
+        </foreach>
+    </select>
 </mapper>

--
Gitblit v1.8.0