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 |  128 ++++++++++++++++++++++++++++--------------
 1 files changed, 85 insertions(+), 43 deletions(-)

diff --git a/src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml b/src/main/resources/mapper/ds1/DustStatisticsValueMapper.xml
index 4726f1b..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">
@@ -23,41 +23,83 @@
     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,
-    CONCAT(ROUND(COUNT(*)/96*100, 2), '%')  as day_online,
-    CONCAT(ROUND(SUM(CASE WHEN dust_value >0 THEN 1 ELSE 0 END)/96 *100, 2), '%') as day_valid,
-    CONCAT(ROUND(SUM(CASE WHEN dust_value >= 1  THEN 1 ELSE 0 END)/96*100,2),'%') 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,
-    CONCAT(ROUND(COUNT(*) / #{count} * 100, 2), '%') AS month_online,
-    CONCAT(ROUND(SUM(CASE WHEN flag = 'N' OR flag = 'A' THEN 1 ELSE 0 END) / #{count} * 100, 2), '%') AS month_valid,
-    CONCAT(ROUND(SUM(CASE WHEN dust_value >= 1 THEN 1 ELSE 0 END) / #{count} * 100, 2), '%') 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>
+    <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