From 74e332504d98caaf8fab951d7d24be762b169f49 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期三, 25 三月 2026 14:15:14 +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 < #{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 < #{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 < #{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 <= #{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