From 123ed266760b75e0ffb89e24b3cec57d564419a4 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 07 二月 2025 09:36:22 +0800
Subject: [PATCH] 大屏展示模块:当前信息统计优化,监测信息统计实现。

---
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsCtrl.java |    9 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoCurrentInfo.java                          |   29 +++--
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ls4StatisticsMapper.xml                                           |  137 +++++++++++++++++++++++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoMonitorInfo.java                          |   47 ++++++++-
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsSv.java   |   32 ++++-
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoLargeScreen/Ls4StatisticsMapper.java                   |   43 ++++++++
 6 files changed, 267 insertions(+), 30 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoLargeScreen/Ls4StatisticsMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoLargeScreen/Ls4StatisticsMapper.java
index 9f27c42..ebf5a7c 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoLargeScreen/Ls4StatisticsMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoLargeScreen/Ls4StatisticsMapper.java
@@ -75,4 +75,47 @@
      */
     Integer totalCountOfNoAlarm(@Param("dt") Date dt) ;
 
+
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇句笂鎶ヨ繃鏁版嵁鐨勬�绘暟
+     */
+    Integer mTotalCountOfReport(@Param("fromDt") Date fromDt) ;
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏈浘涓婃姤杩囨暟鎹殑鎬绘暟
+     */
+    Integer mTotalCountOfNoReport(@Param("fromDt") Date fromDt) ;
+    /**
+     * 浠庢湭涓婃姤杩囨暟鎹殑鎬绘暟
+     */
+    Integer mTotalCountOfNeverReport() ;
+
+
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇鹃榾寮�鎬绘暟
+     */
+    Integer mTotalCountOfOpenValve(@Param("fromDt") Date fromDt) ;
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇鹃榾鍏虫�绘暟
+     */
+    Integer mTotalCountOfCloseValve(@Param("fromDt") Date fromDt) ;
+    /**
+     * 浠庢湭寮�杩囬榾鐨勬�绘暟
+     */
+    Integer mTotalCountOfNeverOpenValve() ;
+
+
+
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇炬姤璀︽�绘暟
+     */
+    Integer mTotalCountOfAlarm(@Param("fromDt") Date fromDt) ;
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇炬棤鎶ヨ鎬绘暟
+     */
+    Integer mTotalCountOfNoAlarm(@Param("fromDt") Date fromDt) ;
+    /**
+     * 浠庢湭鎶ヨ繃璀︽�绘暟
+     */
+    Integer mTotalCountOfNeverAlarm() ;
+
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoCurrentInfo.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoCurrentInfo.java
index a76175a..7677923 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoCurrentInfo.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoCurrentInfo.java
@@ -10,11 +10,14 @@
  */
 
 @Data
-@JsonPropertyOrder({"totalCountOfOnLine",
-        "totalCountOfOffLine",
-        "totalCountOfOpenValve",
-        "totalCountOfCloseValve",
-        "totalCountOfUnknownValve"
+@JsonPropertyOrder({"cTotalCountOfOnLine",
+        "cTotalCountOfOffLine",
+        "cTotalCountOfOpenValve",
+        "cTotalCountOfCloseValve",
+        "cTotalCountOfUnknownValve",
+        "cTotalCountOfAlarm",
+        "cTotalCountOfNoAlarm",
+        "cTotalCountOfUnknownAlarm"
         })
 public class VoCurrentInfo {
 
@@ -23,36 +26,36 @@
     /**
      * 鍦ㄧ嚎鎬绘暟
      */
-    public Integer totalCountOfOnLine ;
+    public Integer cTotalCountOfOnLine;
     /**
      * 绂荤嚎鎬绘暟
      */
-    public Integer totalCountOfOffLine ;
+    public Integer cTotalCountOfOffLine;
 
     /**
      * 闃�寮�鎬绘暟
      */
-    public Integer totalCountOfOpenValve ;
+    public Integer cTotalCountOfOpenValve;
     /**
      * 闃�鍏虫�绘暟
      */
-    public Integer totalCountOfCloseValve ;
+    public Integer cTotalCountOfCloseValve;
    /**
      * 鏈煡闃�闂ㄧ姸鎬佹�绘暟
      */
-    public Integer totalCountOfUnknownValve ;
+    public Integer cTotalCountOfUnknownValve;
 
     /**
      * 鎶ヨ鎬绘暟
      */
-    public Integer totalCountOfAlarm ;
+    public Integer cTotalCountOfAlarm;
     /**
      * 鏃犳姤璀︽�绘暟
      */
-    public Integer totalCountOfNoAlarm ;
+    public Integer cTotalCountOfNoAlarm;
    /**
      * 鏈煡鎶ヨ鐘舵�佹�绘暟
      */
-    public Integer totalCountOfUnknownAlarm ;
+    public Integer cTotalCountOfUnknownAlarm;
 
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoMonitorInfo.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoMonitorInfo.java
index 2909d0b..6ee70a3 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoMonitorInfo.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voLargeScreen/VoMonitorInfo.java
@@ -10,24 +10,59 @@
  */
 
 @Data
-@JsonPropertyOrder({"totalCountOfOnLine",
-        "totalCountOfOffLine"
+@JsonPropertyOrder({"mTotalCountOfReport",
+        "mTotalCountOfNoReport",
+        "mTotalCountOfNeverReport",
+        "mTotalCountOfOpenValve",
+        "mTotalCountOfCloseValve",
+        "mTotalCountOfUnknownValve",
+        "mTotalCountOfAlarm",
+        "mTotalCountOfNoAlarm",
+        "mTotalCountOfUnknownAlarm"
         })
 public class VoMonitorInfo {
 
-    private static final long serialVersionUID = 202502061348001L;
+    private static final long serialVersionUID = 202502061348321L;
 
     /**
      * 浠庢煇鏃朵互鏉ワ紝鏇句笂鎶ヨ繃鏁版嵁鐨勬�绘暟
      */
-    public Integer totalCountOfReport ;
+    public Integer mTotalCountOfReport;
     /**
      * 浠庢煇鏃朵互鏉ワ紝鏈浘涓婃姤杩囨暟鎹殑鎬绘暟
      */
-    public Integer totalCountOfNoReport ;
+    public Integer mTotalCountOfNoReport;
     /**
      * 浠庢湭涓婃姤杩囨暟鎹殑鎬绘暟
      */
-    public Integer totalCountOfNeverReport ;
+    public Integer mTotalCountOfNeverReport;
+
+
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇鹃榾寮�鎬绘暟
+     */
+    public Integer mTotalCountOfOpenValve ;
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇鹃榾鍏虫�绘暟
+     */
+    public Integer mTotalCountOfCloseValve ;
+    /**
+     * 浠庢湭寮�杩囬榾鐨勬�绘暟
+     */
+    public Integer mTotalCountOfNeverOpenValve ;
+
+
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇炬姤璀︽�绘暟
+     */
+    public Integer mTotalCountOfAlarm ;
+    /**
+     * 浠庢煇鏃朵互鏉ワ紝鏇炬棤鎶ヨ鎬绘暟
+     */
+    public Integer mTotalCountOfNoAlarm ;
+    /**
+     * 浠庢湭鎶ヨ繃璀︽�绘暟
+     */
+    public Integer mTotalCountOfNeverAlarm ;
 
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ls4StatisticsMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ls4StatisticsMapper.xml
index 8674548..70353ff 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ls4StatisticsMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ls4StatisticsMapper.xml
@@ -130,5 +130,142 @@
         </if>
     </select>
 
+    <select id="mTotalCountOfReport" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from rm_on_hour_report_last tb
+        where tb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
+    </select>
+
+    <select id="mTotalCountOfNoReport" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from pr_intake tb
+            left join (
+                select ltb.intake_id
+                from rm_on_hour_report_last ltb
+                where ltb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
+            ) temTb on tb.id = temTb.intake_id
+        where temTb.intake_id is null
+    </select>
+
+
+    <select id="mTotalCountOfNeverReport" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from pr_intake tb
+            left join (
+                select ltb.intake_id
+                from rm_on_hour_report_last ltb
+            ) temTb on tb.id = temTb.intake_id
+        where temTb.intake_id is null
+    </select>
+
+
+
+
+    <select id="mTotalCountOfOpenValve" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from rm_alarm_state_last tb
+        where valve_state = 0
+        <if test="fromDt != null ">
+            AND tb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
+        </if>
+    </select>
+
+    <select id="mTotalCountOfCloseValve" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from rm_alarm_state_last tb
+        where valve_state = 1
+        <if test="fromDt != null ">
+            AND tb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
+        </if>
+    </select>
+
+    <select id="mTotalCountOfNeverOpenValve" resultType="java.lang.Integer">
+        select
+            count(*) as count
+        from pr_intake tb
+            left join (
+                /* 姝ゅ鐞嗚В涓烘湁杩囪褰曪紝閭d箞灏卞紑杩囬榾 */
+                select ltb.intake_id
+                from rm_alarm_state_last ltb
+            ) temTb on tb.id = temTb.intake_id
+        where temTb.intake_id is null
+    </select>
+
+
+    <select id="mTotalCountOfAlarm" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from rm_alarm_state_last tb
+        where (alarm_remain_water = 1 or
+        alarm_exceed_year = 1 or
+        alarm_water_meter_fault = 1 or
+        alarm_loss = 1 or
+        alarm_water_meter_break = 1 or
+        alarm_ele_meter_fault = 1 or
+        alarm_inner_door = 1 or
+        alarm_outer_door = 1 or
+        alarm_ele_miss = 1 or
+        alarm_ele_exceed = 1 or
+        alarm_ele_low_volt = 1 or
+        state_ic_enable = 1 or
+        alarm_battery_volt = 1 or
+        alarm_valve = 1)
+        <if test="fromDt != null ">
+            AND tb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
+        </if>
+    </select>
+
+    <select id="mTotalCountOfNoAlarm" resultType="java.lang.Integer">
+        select
+        count(*) as count
+        from rm_alarm_state_last tb
+        where ((alarm_remain_water is null or alarm_remain_water = 0) and
+        (alarm_remain_water is null or alarm_exceed_year = 0)  and
+        (alarm_remain_water is null or alarm_water_meter_fault = 0)  and
+        (alarm_remain_water is null or alarm_loss = 0)  and
+        (alarm_remain_water is null or alarm_water_meter_break = 0)  and
+        (alarm_remain_water is null or alarm_ele_meter_fault = 0)  and
+        (alarm_remain_water is null or alarm_inner_door = 0)  and
+        (alarm_remain_water is null or alarm_outer_door = 0)  and
+        (alarm_remain_water is null or alarm_ele_miss = 0)  and
+        (alarm_remain_water is null or alarm_ele_exceed = 0)  and
+        (alarm_remain_water is null or alarm_ele_low_volt = 0)  and
+        (alarm_remain_water is null or state_ic_enable = 0)  and
+        (alarm_remain_water is null or alarm_battery_volt = 0)  and
+        (alarm_remain_water is null or alarm_valve = 0) )
+        <if test="fromDt != null ">
+            AND tb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
+        </if>
+    </select>
+
+    <select id="mTotalCountOfNeverAlarm" resultType="java.lang.Integer">
+        select
+            count(*) as count
+        from pr_intake tb
+                 left join (
+            select ltb.intake_id
+            from rm_alarm_state_last ltb
+            where ((ltb.alarm_remain_water is null or ltb.alarm_remain_water = 0) and
+                   (ltb.alarm_remain_water is null or ltb.alarm_exceed_year = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_water_meter_fault = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_loss = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_water_meter_break = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_ele_meter_fault = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_inner_door = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_outer_door = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_ele_miss = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_ele_exceed = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_ele_low_volt = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.state_ic_enable = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_battery_volt = 0)  and
+                   (ltb.alarm_remain_water is null or ltb.alarm_valve = 0) )
+        ) temTb on tb.id = temTb.intake_id
+        where temTb.intake_id is null
+    </select>
 
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsCtrl.java
index e42cbc0..fdd99cf 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsCtrl.java
@@ -1,6 +1,7 @@
 package com.dy.pipIrrStatistics.largeScreen;
 
 import com.dy.common.aop.SsoAop;
+import com.dy.common.util.DateTime;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.common.webUtil.ResultCodeMsg;
@@ -86,7 +87,7 @@
     /**
      * 澶у睆灞曠ず---鐩戞祴淇℃伅
      * @return 鐩戞祴淇℃伅
-     * @param startDt 寮�濮嬫棩鏈燂紙鏍煎紡 yyyy-mm-dd锛�
+     * @param fromDt 寮�濮嬫棩鏈燂紙鏍煎紡 yyyy-mm-dd锛�
      */
     @Operation(summary = "澶у睆灞曠ず", description = "鐩戞祴淇℃伅")
     @ApiResponses(value = {
@@ -99,7 +100,11 @@
     })
     @GetMapping(path = "monitorInfo")
     @SsoAop()
-    public BaseResponse<VoMonitorInfo> monitorInfo(Date startDt) {
+    public BaseResponse<VoMonitorInfo> monitorInfo(String fromDt) throws Exception {
+        if(fromDt == null || fromDt.trim().equals("")){
+            return BaseResponseUtils.buildException("寮�濮嬫棩鏈熶笉鑳戒负绌�");
+        }
+        Date startDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(fromDt + " 00:00:00");
         VoMonitorInfo res = this.sv.monitorInfo(startDt);
         return BaseResponseUtils.buildSuccess(res);
     }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsSv.java
index 620ad5f..09d573f 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsSv.java
@@ -72,14 +72,16 @@
         Date dtAtXHourBefore = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(DateTime.lastXHour_yyyy_MM_dd_HH_mm_ss(24)) ;//X涓皬鏃跺墠
         VoCurrentInfo vo = new VoCurrentInfo() ;
         Integer[] result = this.queryMwOnAndOffLine() ;
-        vo.totalCountOfOnLine = result[0] ;
-        vo.totalCountOfOffLine = totalCountOfIntake - vo.totalCountOfOnLine; ;
-        vo.totalCountOfOpenValve = this.dao.totalCountOfOpenValve(dtAtXHourBefore) ;
-        vo.totalCountOfCloseValve = this.dao.totalCountOfCloseValve(dtAtXHourBefore) ;
-        vo.totalCountOfUnknownValve = totalCountOfIntake - vo.totalCountOfOpenValve - vo.totalCountOfCloseValve ;
-        vo.totalCountOfAlarm = this.dao.totalCountOfAlarm(dtAtXHourBefore) ;
-        vo.totalCountOfNoAlarm = this.dao.totalCountOfNoAlarm(dtAtXHourBefore) ;
-        vo.totalCountOfUnknownAlarm = totalCountOfIntake - vo.totalCountOfAlarm - vo.totalCountOfNoAlarm ;
+        vo.cTotalCountOfOnLine = result[0] ;
+        vo.cTotalCountOfOffLine = totalCountOfIntake - vo.cTotalCountOfOnLine;
+
+        vo.cTotalCountOfOpenValve = this.dao.totalCountOfOpenValve(dtAtXHourBefore) ;
+        vo.cTotalCountOfCloseValve = this.dao.totalCountOfCloseValve(dtAtXHourBefore) ;
+        vo.cTotalCountOfUnknownValve = totalCountOfIntake - vo.cTotalCountOfOpenValve - vo.cTotalCountOfCloseValve;
+
+        vo.cTotalCountOfAlarm = this.dao.totalCountOfAlarm(dtAtXHourBefore) ;
+        vo.cTotalCountOfNoAlarm = this.dao.totalCountOfNoAlarm(dtAtXHourBefore) ;
+        vo.cTotalCountOfUnknownAlarm = totalCountOfIntake - vo.cTotalCountOfAlarm - vo.cTotalCountOfNoAlarm;
         return vo ;
     }
 
@@ -87,8 +89,20 @@
      * 鐩戞祴淇℃伅缁熻
      * @return
      */
-    public VoMonitorInfo monitorInfo(Date startDt){
+    public VoMonitorInfo monitorInfo(Date fromDt){
         VoMonitorInfo vo = new VoMonitorInfo() ;
+        vo.mTotalCountOfReport = this.dao.mTotalCountOfReport(fromDt) ;
+        vo.mTotalCountOfNoReport = this.dao.mTotalCountOfNoReport(fromDt) ;
+        vo.mTotalCountOfNeverReport = this.dao.mTotalCountOfNeverReport() ;
+
+        vo.mTotalCountOfOpenValve = this.dao.mTotalCountOfOpenValve(fromDt) ;
+        vo.mTotalCountOfCloseValve = this.dao.mTotalCountOfCloseValve(fromDt) ;
+        vo.mTotalCountOfNeverOpenValve = this.dao.mTotalCountOfNeverOpenValve() ;
+
+        vo.mTotalCountOfAlarm = this.dao.mTotalCountOfAlarm(fromDt) ;
+        vo.mTotalCountOfNoAlarm = this.dao.mTotalCountOfNoAlarm(fromDt) ;
+        vo.mTotalCountOfNeverAlarm = this.dao.mTotalCountOfNeverAlarm() ;
+
         return vo ;
     }
 

--
Gitblit v1.8.0