From 73d124ce71e60685b19cc74a44e21dc080f7bfb6 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期二, 24 三月 2026 14:11:10 +0800
Subject: [PATCH] 调整

---
 jyz-base-start/src/main/java/com/tievd/jyz/service/IOilRecordService.java         |    2 +
 jyz-base-start/src/main/java/com/tievd/jyz/controller/DataTableController.java    |    9 ++++
 jyz-base-start/src/main/resources/xml/OilRecordMapper.xml                         |   48 ++++++++++++++++++++++++
 jyz-base-start/src/main/java/com/tievd/jyz/service/impl/OilRecordServiceImpl.java |    5 ++
 jyz-base-start/src/main/java/com/tievd/jyz/mapper/OilRecordMapper.java            |    2 +
 jyz-base-start/src/main/java/com/tievd/jyz/entity/vo/DataStatisReqVo.java         |   12 ++++++
 6 files changed, 78 insertions(+), 0 deletions(-)

diff --git a/jyz-base-start/src/main/java/com/tievd/jyz/controller/DataTableController.java b/jyz-base-start/src/main/java/com/tievd/jyz/controller/DataTableController.java
index 2427ed2..e180133 100644
--- a/jyz-base-start/src/main/java/com/tievd/jyz/controller/DataTableController.java
+++ b/jyz-base-start/src/main/java/com/tievd/jyz/controller/DataTableController.java
@@ -66,6 +66,15 @@
         StatDataTableVo total = oilRecordService.statisTotal(param);
         return Result.ok(total);
     }
+
+    @PostMapping("/statisOilFreqCompare")
+    @Operation(summary = "娲诲姩鍓嶅悗杞﹁締鍔犳补棰戞缁熻")
+    public Result<?> statisOilFreqCompare(@RequestBody DataStatisReqVo param) {
+        LoginUser user = SystemContextUtil.currentLoginUser();
+        param.setOrgCodeIfnull(user.getOrgCode());
+        List<Map> list = oilRecordService.statisOilFreqCompare(param);
+        return Result.ok(list);
+    }
     
     @GetMapping("/clientTop")
     @Operation(summary = "瀹㈡埛绫诲瀷top10")
diff --git a/jyz-base-start/src/main/java/com/tievd/jyz/entity/vo/DataStatisReqVo.java b/jyz-base-start/src/main/java/com/tievd/jyz/entity/vo/DataStatisReqVo.java
index 3e63897..cfe3341 100644
--- a/jyz-base-start/src/main/java/com/tievd/jyz/entity/vo/DataStatisReqVo.java
+++ b/jyz-base-start/src/main/java/com/tievd/jyz/entity/vo/DataStatisReqVo.java
@@ -28,6 +28,18 @@
 
     @Schema(description = "缁撴潫鏃堕棿")
     private String endTime;
+
+    @Schema(description = "娲诲姩鍓嶅紑濮嬫椂闂�")
+    private String beforeStartTime;
+
+    @Schema(description = "娲诲姩鍓嶇粨鏉熸椂闂�")
+    private String beforeEndTime;
+
+    @Schema(description = "娲诲姩鍚庡紑濮嬫椂闂�")
+    private String afterStartTime;
+
+    @Schema(description = "娲诲姩鍚庣粨鏉熸椂闂�")
+    private String afterEndTime;
     
     public void setOrgCodeIfnull(String orgCode) {
         if (this.orgCode == null || this.orgCode.equals("")){
diff --git a/jyz-base-start/src/main/java/com/tievd/jyz/mapper/OilRecordMapper.java b/jyz-base-start/src/main/java/com/tievd/jyz/mapper/OilRecordMapper.java
index d69b973..ee0e5f9 100644
--- a/jyz-base-start/src/main/java/com/tievd/jyz/mapper/OilRecordMapper.java
+++ b/jyz-base-start/src/main/java/com/tievd/jyz/mapper/OilRecordMapper.java
@@ -100,6 +100,8 @@
     List<Map> statisOrgTopOil(DataStatisReqVo param);
     
     List<Map> statisOrgTopVolume(DataStatisReqVo param);
+
+    List<Map> statisOilFreqCompare(DataStatisReqVo param);
     
     List<StatDataTableVo> statFanByModel(DataStatisReqVo param);
     
diff --git a/jyz-base-start/src/main/java/com/tievd/jyz/service/IOilRecordService.java b/jyz-base-start/src/main/java/com/tievd/jyz/service/IOilRecordService.java
index df76d7c..3e0bd48 100644
--- a/jyz-base-start/src/main/java/com/tievd/jyz/service/IOilRecordService.java
+++ b/jyz-base-start/src/main/java/com/tievd/jyz/service/IOilRecordService.java
@@ -40,6 +40,8 @@
     List<Map> statisOrgTopOil(DataStatisReqVo param);
     
     List<Map> statisOrgTopVolume(DataStatisReqVo param);
+
+    List<Map> statisOilFreqCompare(DataStatisReqVo param);
     
     JSONObject statFan(DataStatisReqVo param);
     
diff --git a/jyz-base-start/src/main/java/com/tievd/jyz/service/impl/OilRecordServiceImpl.java b/jyz-base-start/src/main/java/com/tievd/jyz/service/impl/OilRecordServiceImpl.java
index d9dbd53..89493f6 100644
--- a/jyz-base-start/src/main/java/com/tievd/jyz/service/impl/OilRecordServiceImpl.java
+++ b/jyz-base-start/src/main/java/com/tievd/jyz/service/impl/OilRecordServiceImpl.java
@@ -154,6 +154,11 @@
     public List<Map> statisOrgTopVolume(DataStatisReqVo param) {
         return oilRecordMapper.statisOrgTopVolume(param);
     }
+
+    @Override
+    public List<Map> statisOilFreqCompare(DataStatisReqVo param) {
+        return oilRecordMapper.statisOilFreqCompare(param);
+    }
     
     @Override
     public JSONObject statFan(DataStatisReqVo param) {
diff --git a/jyz-base-start/src/main/resources/xml/OilRecordMapper.xml b/jyz-base-start/src/main/resources/xml/OilRecordMapper.xml
index a4201eb..9de9e24 100644
--- a/jyz-base-start/src/main/resources/xml/OilRecordMapper.xml
+++ b/jyz-base-start/src/main/resources/xml/OilRecordMapper.xml
@@ -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
         *,
@@ -183,6 +199,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,

--
Gitblit v1.8.0