From 512ddb42f73f1560661865225dd03870e021e1d2 Mon Sep 17 00:00:00 2001
From: liulin <lin.liu@88.com>
Date: 星期三, 09 七月 2025 09:08:26 +0800
Subject: [PATCH] 修改故障上报

---
 src/main/java/com/lunhan/water/service/PaymentRecordsService.java |   60 ++++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 42 insertions(+), 18 deletions(-)

diff --git a/src/main/java/com/lunhan/water/service/PaymentRecordsService.java b/src/main/java/com/lunhan/water/service/PaymentRecordsService.java
index cfe0de8..2012ef5 100644
--- a/src/main/java/com/lunhan/water/service/PaymentRecordsService.java
+++ b/src/main/java/com/lunhan/water/service/PaymentRecordsService.java
@@ -80,6 +80,8 @@
     private FacilityAlarmRecordMapperImpl facilityAlarmRecordMapper;
     @Autowired
     private WaterFacilityRecordsMapperImpl waterFacilityRecordsMapper;
+    @Autowired
+    private AlarmHistoryMapperImpl alarmHistoryMapper;
 
     public ExecutedResult<Long> create(ReqCreatePaymentRecords request) {
         // 转换po
@@ -310,23 +312,6 @@
             DEBUG_LOGGER.error("设备数据未找到!");
             return;
         }
-
-//        数据上报格式:
-//        主题格式:zundong/QS001/data
-//        数据格式:{"Data":
-//          [
-//              {"name":"QS001_state","value":1}, //状态
-//              {"name":"QS001_fault","value":0}, //是否故障
-//              {"name":"QS001_count","value":10000} //总水量
-//          ],"time":"2025-07-02 15:19:17"
-//        }
-//        心跳上报格式:
-//        主题格式:zundong/QS001/state
-//        数据格式:{"Data":
-//              [
-//               {"name":"QS001_heartbeat","value":1} //心跳
-//              ],"time":"2025-07-02 15:19:17"
-//          }
         //消息解析
         Gson gson = new Gson();
         JsonObject object = gson.fromJson(msg, JsonObject.class);
@@ -350,6 +335,8 @@
         CountVO stateVo = listVo.stream().filter(x -> x.getName().equals(facilityPO.getFacilityCode() + "_state1")).findFirst().orElse(null);
         CountVO heartbeat = listVo.stream().filter(x -> x.getName().equals(facilityPO.getFacilityCode() + "_heartbeat")).findFirst().orElse(null);
         CountVO countVO = listVo.stream().filter(x -> x.getName().equals(facilityPO.getFacilityCode() + "_count1")).findFirst().orElse(null);
+        AlarmHistoryPO alarmHistoryPO=new AlarmHistoryPO();
+        alarmHistoryPO.setFacilityId(facilityPO.getId());
         switch (stateVo.getValue()) {
             case "0"://取水完成
                 BigDecimal divide = new BigDecimal(countVO.getValue()).setScale(2,RoundingMode.DOWN);
@@ -370,11 +357,48 @@
                 }
                 break;
             case "1"://运行
+                facilityPO.setState(1);
+                waterFacilityMapper.updateById(facilityPO);
                 break;
             case "2"://停止
+                facilityPO.setState(2);
+                waterFacilityMapper.updateById(facilityPO);
                 break;
-            case "3"://故障
+            case "10"://故障
+                alarmHistoryPO.setCode("500");
+                alarmHistoryPO.setDescription("管道缺水");
                 break;
+            case "11"://故障
+                alarmHistoryPO.setCode("501");
+                alarmHistoryPO.setDescription("流量计故障");
+                break;
+            case "12"://故障
+                alarmHistoryPO.setCode("502");
+                alarmHistoryPO.setDescription("阀门故障");
+                break;
+            case "13"://故障
+                alarmHistoryPO.setCode("503");
+                alarmHistoryPO.setDescription("柜内温度过低");
+                break;
+            case "14"://故障
+                alarmHistoryPO.setCode("504");
+                alarmHistoryPO.setDescription("柜内温度过高");
+                break;
+        }
+        if(StringUtil.isNotNullOrEmpty(alarmHistoryPO.getCode())){
+            AlarmHistoryPO historyPO = alarmHistoryMapper.getByCode(facilityPO.getId(), alarmHistoryPO.getCode());
+            if(Objects.nonNull(historyPO)){
+                historyPO.setLastTime(LocalDateTimeUtil.nowDateTimeStr());
+                historyPO.setCount(historyPO.getCount()+1);
+                alarmHistoryMapper.updateById(historyPO);
+            }else {
+                alarmHistoryPO.setLastTime(LocalDateTimeUtil.nowDateTimeStr());
+                alarmHistoryPO.setCreateTime(LocalDateTimeUtil.nowTimeStamp());
+                alarmHistoryMapper.insert(alarmHistoryPO);
+            }
+
+        }else {
+            alarmHistoryMapper.deleteByFacilityId(facilityPO.getId());
         }
         HeartbeatDataPO heartbeatDataPO = heartbeatDataMapper.getByKey(facilityPO.getFacilityCode());
         if(Objects.nonNull(heartbeatDataPO)){

--
Gitblit v1.9.3