From 8aa64e4158dfaf8bb0422af23e7d665185796f37 Mon Sep 17 00:00:00 2001
From: tianyuan <2861334240@qq.com>
Date: Sun, 30 Nov 2025 22:35:20 +0800
Subject: [PATCH] =?UTF-8?q?=E7=9B=AE=E5=BD=95=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 6 +-
.../water/service/MqttSensorReceiver.java | 2 +-
.../water/service/MqttSensorSender.java | 28 +++----
.../app/WorkOrderControllerTest.java | 74 -------------------
.../commen/LoginControllerTest.java | 73 ------------------
.../web/DeviceDataControllerTest.java | 55 --------------
.../java/com/campus/water/test/BaseTest.java | 29 --------
7 files changed, 19 insertions(+), 248 deletions(-)
delete mode 100644 src/test/java/com/campus/water/controller/app/WorkOrderControllerTest.java
delete mode 100644 src/test/java/com/campus/water/controller/commen/LoginControllerTest.java
delete mode 100644 src/test/java/com/campus/water/controller/web/DeviceDataControllerTest.java
delete mode 100644 src/test/java/com/campus/water/test/BaseTest.java
diff --git a/pom.xml b/pom.xml
index ecb5d06..82594e2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,9 +21,9 @@
- 1.8
- 1.8
- 1.8
+ 23
+ 23
+ 23
UTF-8
diff --git a/src/main/java/com/campus/water/service/MqttSensorReceiver.java b/src/main/java/com/campus/water/service/MqttSensorReceiver.java
index 880cf3e..c73df0a 100644
--- a/src/main/java/com/campus/water/service/MqttSensorReceiver.java
+++ b/src/main/java/com/campus/water/service/MqttSensorReceiver.java
@@ -93,7 +93,7 @@ public class MqttSensorReceiver {
entity.setWaterFlow2(sensorData.getWaterFlow2());
entity.setWaterPress(sensorData.getWaterPress());
entity.setFilterLife(sensorData.getFilterLife());
- entity.setLeakage(sensorData.getLeakage() ? 1 : 0); // 数据库存储:1=漏水,0=正常
+ entity.setLeakage(sensorData.getLeakage() ? true: false); // 数据库存储:true=漏水,false=正常
entity.setWaterQuality(sensorData.getWaterQuality());
entity.setStatus(WaterMakerRealtimeData.DeviceStatus.valueOf(sensorData.getStatus().toUpperCase()));
entity.setRecordTime(sensorData.getRecordTime());
diff --git a/src/main/java/com/campus/water/service/MqttSensorSender.java b/src/main/java/com/campus/water/service/MqttSensorSender.java
index e553b73..6ff5c52 100644
--- a/src/main/java/com/campus/water/service/MqttSensorSender.java
+++ b/src/main/java/com/campus/water/service/MqttSensorSender.java
@@ -34,16 +34,17 @@ public class MqttSensorSender {
// 1. 构建模拟数据(符合正常业务范围)
WaterMakerSensorData data = new WaterMakerSensorData();
data.setDeviceId(deviceId);
- data.setTdsValue(50 + random.nextDouble() * 30); // 50-80(正常范围)
- data.setWaterFlow(random.nextDouble() * 2); // 0-2 L/min
- data.setWaterPressure(0.2 + random.nextDouble() * 0.3); // 0.2-0.5 MPa
+ data.setTdsValue1(50 + random.nextDouble() * 30); // 50-80(正常范围)
+ data.setTdsValue2(50 + random.nextDouble() * 30);
+ data.setTdsValue3(50 + random.nextDouble() * 30);
+ data.setWaterFlow1(random.nextDouble() * 2); // 0-2 L/min
+ data.setWaterFlow2(random.nextDouble() * 2);
+ data.setWaterPress(0.2 + random.nextDouble() * 0.3); // 0.2-0.5 MPa
data.setFilterLife(30 + random.nextInt(70)); // 30-100%
data.setLeakage(random.nextBoolean() && random.nextBoolean()); // 漏水概率较低(25%)
- data.setTemperature(20 + random.nextDouble() * 5); // 20-25℃
- data.setHumidity(40 + random.nextDouble() * 20); // 40-60%RH
data.setWaterQuality("合格");
data.setStatus("normal");
- data.setTimestamp(LocalDateTime.now());
+ data.setRecordTime(LocalDateTime.now());
// 2. 序列化JSON(MQTT消息 payload 为JSON字符串)
String payload = objectMapper.writeValueAsString(data);
@@ -67,14 +68,16 @@ public class MqttSensorSender {
// 1. 构建异常数据(超出正常范围)
WaterMakerSensorData data = new WaterMakerSensorData();
data.setDeviceId(deviceId);
- data.setTdsValue(150 + random.nextDouble() * 50); // 150-200(异常范围)
- data.setWaterFlow(0.1 + random.nextDouble() * 0.3); // 流量极低
- data.setWaterPressure(0.1 + random.nextDouble() * 0.1); // 水压过低(0.1-0.2 MPa)
+ data.setTdsValue1(150 + random.nextDouble() * 50); // 150-200(异常范围)
+ data.setTdsValue2(150 + random.nextDouble() * 50);
+ data.setTdsValue3(150 + random.nextDouble() * 50);
+ data.setWaterFlow1(0.1 + random.nextDouble() * 0.3); // 流量极低
+ data.setWaterFlow2(0.1 + random.nextDouble() * 0.3);
+ data.setWaterPress(0.1 + random.nextDouble() * 0.1); // 水压过低(0.1-0.2 MPa)
data.setFilterLife(5 + random.nextInt(10)); // 滤芯寿命低(5-15%)
data.setLeakage(true); // 强制漏水
- data.setTemperature(28 + random.nextDouble() * 3); // 水温过高(28-31℃)
data.setStatus("error");
- data.setTimestamp(LocalDateTime.now());
+ data.setRecordTime(LocalDateTime.now());
// 2. 序列化+发送
String payload = objectMapper.writeValueAsString(data);
@@ -96,10 +99,9 @@ public class MqttSensorSender {
WaterSupplySensorData data = new WaterSupplySensorData();
data.setDeviceId(deviceId);
data.setWaterFlow(random.nextDouble() * 3); // 0-3 L/min
- data.setWaterPressure(0.1 + random.nextDouble() * 0.2); // 0.1-0.3 MPa
+ data.setWaterPress(0.1 + random.nextDouble() * 0.2); // 0.1-0.3 MPa
data.setWaterLevel(30 + random.nextDouble() * 50); // 30-80%
data.setTemperature(18 + random.nextDouble() * 4); // 18-22℃
- data.setHumidity(35 + random.nextDouble() * 15); // 35-50%RH
data.setStatus("normal");
data.setTimestamp(LocalDateTime.now());
diff --git a/src/test/java/com/campus/water/controller/app/WorkOrderControllerTest.java b/src/test/java/com/campus/water/controller/app/WorkOrderControllerTest.java
deleted file mode 100644
index 732b7a7..0000000
--- a/src/test/java/com/campus/water/controller/app/WorkOrderControllerTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.campus.water.controller.app;
-
-import com.campus.water.test.BaseTest;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.junit.jupiter.api.Test;
-import org.springframework.http.MediaType;
-import java.util.HashMap;
-import java.util.Map;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-/**
- * 工单管理接口测试(抢单/拒单,后端2开发)
- * 直接复制粘贴,修改接口路径即可
- */
-public class WorkOrderControllerTest extends BaseTest {
-
- // 工具:将Map转为JSON字符串
- private final ObjectMapper objectMapper = new ObjectMapper();
-
- // 测试1:维修人员抢单(正常场景)
- @Test
- public void testGrabWorkOrder() throws Exception {
- // 构造请求参数
- Map params = new HashMap<>();
- params.put("orderId", "1001"); // 测试工单ID
- params.put("repairId", "REPAIR001"); // 测试维修人员ID
-
- mockMvc.perform(
- // 替换为你项目的抢单接口路径,比如/api/app/workOrder/grab
- post("/api/app/workOrder/grab")
- .contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(params)) // 传入JSON参数
- )
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code").value(200))
- .andExpect(jsonPath("$.msg").value("抢单成功"));
- }
-
- // 测试2:抢已被抢的工单(异常场景)
- @Test
- public void testGrabGrabbedOrder() throws Exception {
- Map params = new HashMap<>();
- params.put("orderId", "1001"); // 已被抢的工单ID
- params.put("repairId", "REPAIR002");
-
- mockMvc.perform(
- post("/api/app/workOrder/grab")
- .contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(params))
- )
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code").value(500))
- .andExpect(jsonPath("$.msg").value("工单已被抢"));
- }
-
- // 测试3:维修人员拒单
- @Test
- public void testRejectWorkOrder() throws Exception {
- Map params = new HashMap<>();
- params.put("orderId", "1002");
- params.put("repairId", "REPAIR001");
- params.put("reason", "设备位置太远"); // 拒单原因
-
- mockMvc.perform(
- post("/api/app/workOrder/reject")
- .contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(params))
- )
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code").value(200))
- .andExpect(jsonPath("$.msg").value("拒单成功"));
- }
-}
\ No newline at end of file
diff --git a/src/test/java/com/campus/water/controller/commen/LoginControllerTest.java b/src/test/java/com/campus/water/controller/commen/LoginControllerTest.java
deleted file mode 100644
index 2b5f57f..0000000
--- a/src/test/java/com/campus/water/controller/commen/LoginControllerTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.campus.water.controller.common;
-
-import com.campus.water.test.BaseTest;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.junit.jupiter.api.Test;
-import org.springframework.http.MediaType;
-import java.util.HashMap;
-import java.util.Map;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-/**
- * 登录接口测试用例
- */
-public class LoginControllerTest extends BaseTest {
-
- private final ObjectMapper objectMapper = new ObjectMapper();
-
- // 测试1:维修人员正常登录
- @Test
- public void testRepairLogin() throws Exception {
- Map loginParams = new HashMap<>();
- loginParams.put("username", "REPAIR001");
- loginParams.put("password", "123456");
- loginParams.put("userType", "repairer"); // 必须指定用户类型
-
- mockMvc.perform(
- post("/api/common/login")
- .contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(loginParams))
- )
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code").value(200)) // 正常响应code
- .andExpect(jsonPath("$.data.token").isNotEmpty())
- .andExpect(jsonPath("$.data.userType").value("repairer"));
- }
-
- // 测试2:学生登录(密码错误)
- @Test
- public void testStudentLoginWithWrongPwd() throws Exception {
- Map loginParams = new HashMap<>();
- loginParams.put("username", "STUDENT001");
- loginParams.put("password", "wrong123");
- loginParams.put("userType", "user");
-
- mockMvc.perform(
- post("/api/common/login")
- .contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(loginParams))
- )
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code").value(401))
- .andExpect(jsonPath("$.msg").value("密码错误"));
- }
-
- // 测试3:无效用户类型
- @Test
- public void testInvalidUserType() throws Exception {
- Map loginParams = new HashMap<>();
- loginParams.put("username", "TEST001");
- loginParams.put("password", "123456");
- loginParams.put("userType", "invalid");
-
- mockMvc.perform(
- post("/api/common/login")
- .contentType(MediaType.APPLICATION_JSON)
- .content(objectMapper.writeValueAsString(loginParams))
- )
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code").value(401))
- .andExpect(jsonPath("$.msg").value("无效的用户类型:invalid"));
- }
-}
\ No newline at end of file
diff --git a/src/test/java/com/campus/water/controller/web/DeviceDataControllerTest.java b/src/test/java/com/campus/water/controller/web/DeviceDataControllerTest.java
deleted file mode 100644
index 02c238e..0000000
--- a/src/test/java/com/campus/water/controller/web/DeviceDataControllerTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.campus.water.controller.web;
-
-import com.campus.water.test.BaseTest;
-import org.junit.jupiter.api.Test;
-import org.springframework.http.MediaType;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-/**
- * 设备数据查询接口测试(后端2开发的接口)
- */
-public class DeviceDataControllerTest extends BaseTest {
-
- // 测试1:按设备ID查询数据(正常场景)
- @Test
- public void testQueryDeviceDataByDeviceId() throws Exception {
- mockMvc.perform(
- // 替换为你项目的实际接口路径,比如/api/web/device/data
- get("/api/web/device/data")
- .param("deviceId", "ZSJ001") // 传入测试设备ID
- .contentType(MediaType.APPLICATION_JSON)
- )
- .andExpect(status().isOk()) // 断言返回200
- .andExpect(jsonPath("$.code").value(200)) // 断言返回码(如果你的接口有统一返回体)
- .andExpect(jsonPath("$.data.deviceId").value("ZSJ001")); // 断言返回的设备ID正确
- }
-
- // 测试2:按设备ID查询数据(设备ID不存在)
- @Test
- public void testQueryDeviceDataWithInvalidId() throws Exception {
- mockMvc.perform(
- get("/api/web/device/data")
- .param("deviceId", "INVALID001")
- .contentType(MediaType.APPLICATION_JSON)
- )
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code").value(404)) // 断言返回404
- .andExpect(jsonPath("$.msg").value("设备不存在")); // 断言提示语
- }
-
- // 测试3:按时间范围查询数据(正常场景)
- @Test
- public void testQueryDeviceDataByTime() throws Exception {
- mockMvc.perform(
- get("/api/web/device/data")
- .param("deviceId", "ZSJ001")
- .param("startTime", "2025-11-01 00:00:00")
- .param("endTime", "2025-11-01 23:59:59")
- .contentType(MediaType.APPLICATION_JSON)
- )
- .andExpect(status().isOk())
- .andExpect(jsonPath("$.code").value(200))
- .andExpect(jsonPath("$.data").isArray()); // 断言返回数组
- }
-}
\ No newline at end of file
diff --git a/src/test/java/com/campus/water/test/BaseTest.java b/src/test/java/com/campus/water/test/BaseTest.java
deleted file mode 100644
index b4f2f44..0000000
--- a/src/test/java/com/campus/water/test/BaseTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.campus.water.test;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.TestInstance;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.web.context.WebApplicationContext;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-/**
- * 测试基类,初始化MockMvc
- */
-@SpringBootTest(classes = com.campus.water.CampusWaterApplication.class)
-@AutoConfigureMockMvc
-@TestInstance(TestInstance.Lifecycle.PER_CLASS)
-public class BaseTest {
-
- protected MockMvc mockMvc;
-
- @Autowired
- private WebApplicationContext webApplicationContext;
-
- @BeforeEach
- public void setUp() {
- this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
- }
-}
\ No newline at end of file
--
2.34.1