From 35a1c88cc80ca675f6173648968ab5394b49e31e Mon Sep 17 00:00:00 2001
From: whycxzp <glperry@163.com>
Date: 星期三, 28 五月 2025 17:14:50 +0800
Subject: [PATCH] 消防机器人websocket逻辑更新

---
 src/main/java/com/whyc/service/EnvironmentService.java                    |   14 +++++++
 src/main/java/com/whyc/service/EnvironmentThresholdService.java           |   14 +++++++
 src/main/java/com/whyc/service/RobotAlarmService.java                     |   14 +++++++
 src/main/java/com/whyc/webSocket/receiver/ThirdPartyWebSocketHandler.java |   10 ++--
 src/main/java/com/whyc/service/RobotStatusService.java                    |   15 +++++++
 5 files changed, 62 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/whyc/service/EnvironmentService.java b/src/main/java/com/whyc/service/EnvironmentService.java
index 78d1887..bd7835c 100644
--- a/src/main/java/com/whyc/service/EnvironmentService.java
+++ b/src/main/java/com/whyc/service/EnvironmentService.java
@@ -1,5 +1,7 @@
 package com.whyc.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.whyc.mapper.EnvironmentMapper;
 import com.whyc.pojo.db_fire_robot.Environment;
 import org.springframework.stereotype.Service;
@@ -15,4 +17,16 @@
     public void add(Environment env) {
         mapper.insert(env);
     }
+
+    public void addOrUpdate(Environment env) {
+        QueryWrapper<Environment> query = Wrappers.query();
+        query.last(" limit 1");
+        Environment envInDB = mapper.selectOne(query);
+        if (envInDB ==null) {
+            mapper.insert(env);
+        }else{
+            env.setId(envInDB.getId());
+            mapper.updateById(env);
+        }
+    }
 }
diff --git a/src/main/java/com/whyc/service/EnvironmentThresholdService.java b/src/main/java/com/whyc/service/EnvironmentThresholdService.java
index af0647f..60d9640 100644
--- a/src/main/java/com/whyc/service/EnvironmentThresholdService.java
+++ b/src/main/java/com/whyc/service/EnvironmentThresholdService.java
@@ -1,5 +1,7 @@
 package com.whyc.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.whyc.mapper.EnvironmentThresholdMapper;
 import com.whyc.pojo.db_fire_robot.EnvironmentThreshold;
 import org.springframework.stereotype.Service;
@@ -15,4 +17,16 @@
     public void add(EnvironmentThreshold threshold) {
         mapper.insert(threshold);
     }
+
+    public void addOrUpdate(EnvironmentThreshold threshold) {
+        QueryWrapper<EnvironmentThreshold> query = Wrappers.query();
+        query.last(" limit 1");
+        EnvironmentThreshold thresholdInDB = mapper.selectOne(query);
+        if (thresholdInDB ==null) {
+            mapper.insert(threshold);
+        }else{
+            threshold.setId(thresholdInDB.getId());
+            mapper.updateById(threshold);
+        }
+    }
 }
diff --git a/src/main/java/com/whyc/service/RobotAlarmService.java b/src/main/java/com/whyc/service/RobotAlarmService.java
index f542634..e310658 100644
--- a/src/main/java/com/whyc/service/RobotAlarmService.java
+++ b/src/main/java/com/whyc/service/RobotAlarmService.java
@@ -1,5 +1,7 @@
 package com.whyc.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.whyc.mapper.EnvironmentMapper;
 import com.whyc.mapper.RobotAlarmMapper;
 import com.whyc.pojo.db_fire_robot.RobotAlarm;
@@ -16,4 +18,16 @@
     public void add(RobotAlarm alarm) {
         mapper.insert(alarm);
     }
+
+    public void addOrUpdate(RobotAlarm alarm) {
+        QueryWrapper<RobotAlarm> query = Wrappers.query();
+        query.last(" limit 1");
+        RobotAlarm alarmInDB = mapper.selectOne(query);
+        if (alarmInDB ==null) {
+            mapper.insert(alarm);
+        }else{
+            alarm.setId(alarmInDB.getId());
+            mapper.updateById(alarm);
+        }
+    }
 }
diff --git a/src/main/java/com/whyc/service/RobotStatusService.java b/src/main/java/com/whyc/service/RobotStatusService.java
index fdaadcf..03f43fa 100644
--- a/src/main/java/com/whyc/service/RobotStatusService.java
+++ b/src/main/java/com/whyc/service/RobotStatusService.java
@@ -1,6 +1,9 @@
 package com.whyc.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.whyc.mapper.RobotStatusMapper;
+import com.whyc.pojo.db_fire_robot.Environment;
 import com.whyc.pojo.db_fire_robot.RobotStatus;
 import org.springframework.stereotype.Service;
 
@@ -15,4 +18,16 @@
     public void add(RobotStatus status) {
         mapper.insert(status);
     }
+
+    public void addOrUpdate(RobotStatus status) {
+        QueryWrapper<RobotStatus> query = Wrappers.query();
+        query.last(" limit 1");
+        RobotStatus statusInDB = mapper.selectOne(query);
+        if (statusInDB ==null) {
+            mapper.insert(status);
+        }else{
+            status.setId(statusInDB.getId());
+            mapper.updateById(status);
+        }
+    }
 }
diff --git a/src/main/java/com/whyc/webSocket/receiver/ThirdPartyWebSocketHandler.java b/src/main/java/com/whyc/webSocket/receiver/ThirdPartyWebSocketHandler.java
index 9e5b13d..5d2c597 100644
--- a/src/main/java/com/whyc/webSocket/receiver/ThirdPartyWebSocketHandler.java
+++ b/src/main/java/com/whyc/webSocket/receiver/ThirdPartyWebSocketHandler.java
@@ -56,8 +56,8 @@
                 }.getType());
                 Environment env = data.getData();
                 env.setRecordTime(now);
-                //瀛樺叆鏁版嵁搴�
-                environmentService.add(env);
+                //瀛樺叆鏁版嵁搴�,鎻掑叆鎴栨洿鏂�
+                environmentService.addOrUpdate(env);
             }break;
             case "status": {
                 FireRobotData<RobotStatus> data = gson.fromJson(jsonStr, new TypeToken<FireRobotData<RobotStatus>>() {
@@ -65,14 +65,14 @@
                 RobotStatus status = data.getData();
                 status.setRecordTime(now);
                 //瀛樺叆鏁版嵁搴�
-                robotStatusService.add(status);
+                robotStatusService.addOrUpdate(status);
             }break;
             case "alarm": {
                 FireRobotData<RobotAlarm> data = gson.fromJson(jsonStr, new TypeToken<FireRobotData<RobotAlarm>>() {
                 }.getType());
                 RobotAlarm alarm = data.getData();
                 //瀛樺叆鏁版嵁搴�
-                robotAlarmService.add(alarm);
+                robotAlarmService.addOrUpdate(alarm);
             }break;
             case "threshold": {
                 FireRobotData<EnvironmentThreshold> data = gson.fromJson(jsonStr, new TypeToken<FireRobotData<EnvironmentThreshold>>() {
@@ -80,7 +80,7 @@
                 EnvironmentThreshold threshold = data.getData();
                 threshold.setRecordTime(now);
                 //瀛樺叆鏁版嵁搴�
-                environmentThresholdService.add(threshold);
+                environmentThresholdService.addOrUpdate(threshold);
             }break;
             case "identifyAlarm": {
                 FireRobotData<IdentifyAlarm> data = gson.fromJson(jsonStr, new TypeToken<FireRobotData<IdentifyAlarm>>() {

--
Gitblit v1.9.1