From c6842e8498c2d9b469890b38cd9f0d714392c445 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期五, 01 十二月 2023 13:22:02 +0800
Subject: [PATCH] 1. 修改优化日统计和风险统计的逻辑

---
 src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml |   92 +++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 86 insertions(+), 6 deletions(-)

diff --git a/src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml b/src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml
index 40edb30..23b89f8 100644
--- a/src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml
+++ b/src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml
@@ -8,12 +8,12 @@
     <id column="id" jdbcType="INTEGER" property="id" />
     <result column="mn_code" jdbcType="VARCHAR" property="mnCode" />
     <result column="lst" jdbcType="DATE" property="lst" />
-    <result column="day_avg" jdbcType="VARCHAR" property="dayAvg" />
-    <result column="min" jdbcType="VARCHAR" property="min" />
-    <result column="max" jdbcType="VARCHAR" property="max" />
-    <result column="day_online" jdbcType="VARCHAR" property="dayOnline" />
-    <result column="day_valid" jdbcType="VARCHAR" property="dayValid" />
-    <result column="day_exceeding" jdbcType="VARCHAR" property="dayExceeding" />
+    <result column="day_avg" jdbcType="DOUBLE" property="dayAvg" />
+    <result column="min" jdbcType="DOUBLE" property="min" />
+    <result column="max" jdbcType="DOUBLE" property="max" />
+    <result column="day_online" jdbcType="DOUBLE" property="dayOnline" />
+    <result column="day_valid" jdbcType="DOUBLE" property="dayValid" />
+    <result column="day_exceeding" jdbcType="DOUBLE" property="dayExceeding" />
     <result column="type" jdbcType="VARCHAR" property="type" />
   </resultMap>
   <sql id="Base_Column_List">
@@ -22,4 +22,84 @@
     -->
     id, mn_code, lst, day_avg, min, max, day_online, day_valid, day_exceeding, type
   </sql>
+
+    <insert id="dailyStatics">
+        insert into dust_statistics_value(mn_code,lst,day_avg,min,max,day_online,day_valid,day_exceeding,type)
+        select a.*
+        from (select
+        mn_code as mn_code,
+        DATE(lst) as lst,
+        ROUND(AVG(dust_value),3) as day_avg,
+        min(dust_value) as min,
+        max(dust_value) as max,
+        ROUND(COUNT(*)/96, 4) as day_online,
+        ROUND(SUM(CASE WHEN dust_value &gt;0 THEN 1 ELSE 0 END)/96, 4) as day_valid,
+        ROUND(SUM(CASE WHEN dust_value &gt;= 1 THEN 1 ELSE 0 END)/96, 4) as day_exceeding,
+        'day' as type
+        from ja_t_dust_site_data_info
+        where lst between #{beginTime} and #{endTime}
+        GROUP BY mn_code,DATE(lst)
+        ) as a
+    </insert>
+    <insert id="monthlyStatics">
+        insert into dust_statistics_value(mn_code,lst,day_avg,min,max,day_online,day_valid,day_exceeding,type)
+        select a.*
+        from (
+        SELECT
+        mn_code AS mn_code,
+        DATE_FORMAT(lst, '%Y-%m-01') AS month,
+        ROUND(AVG(dust_value), 3) AS month_avg,
+        MIN(dust_value) AS min,
+        MAX(dust_value) AS max,
+        ROUND(COUNT(*) / #{count}, 4) AS month_online,
+        ROUND(SUM(CASE WHEN flag = 'N' OR flag = 'A' THEN 1 ELSE 0 END) / #{count}, 4) AS month_valid,
+        ROUND(SUM(CASE WHEN dust_value &gt;= 1 THEN 1 ELSE 0 END) / #{count}, 4) AS month_exceeding,
+        'month' as type
+        FROM ja_t_dust_site_data_info
+        WHERE lst BETWEEN #{beginTime} and #{endTime}
+        GROUP BY mn_code, DATE_FORMAT(lst, '%Y-%m-01')
+        ) as a
+    </insert>
+
+    <!--    鏍规嵁绔欑偣鍚嶅瓧鍜屾椂娈佃繘琛岀粺璁″垎鏋�-->
+    <select id="selectByOrder" resultType="com.flightfeather.monitor.pojo.AnalysisDustData">
+        select c.name,d.*
+        from dust_statistics_value as d
+        left join ja_t_dust_site_info as c on c.mn_code = d.mn_code
+        <where>
+            <if test="siteName != null and siteName != ''">
+                and c.name = #{siteName}
+            </if>
+            <if test="beginTime != null and endTime != null">
+                and d.lst between #{beginTime} and #{endTime} and d.type = 'day'
+            </if>
+        </where>
+        <if test="orderProp == 'lst'">
+            order by d.lst
+        </if>
+        <if test="orderProp == 'day_avg'">
+            order by d.day_avg
+        </if>
+        <if test="orderProp == 'min'">
+            order by d.min
+        </if>
+        <if test="orderProp == 'max'">
+            order by d.max
+        </if>
+        <if test="orderProp == 'day_online'">
+            order by d.day_online
+        </if>
+        <if test="orderProp == 'day_valid'">
+            order by d.day_valid
+        </if>
+        <if test="orderProp == 'day_exceeding'">
+            order by d.day_exceeding
+        </if>
+        <if test="orderProp != null and asc">
+            asc
+        </if>
+        <if test="orderProp != null and !asc">
+            desc
+        </if>
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3