From 077827d2eb9f52784245511b9c2ea66aa35f8535 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Fri, 14 Feb 2025 17:41:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E6=94=B6=E8=AE=BE=E5=A4=87=E6=8A=A5?= =?UTF-8?q?=E8=AD=A6=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qyft/gd/device/controller/TestController.java | 71 +++++----------------- .../gd/device/handler/DeviceMessageHandler.java | 4 +- .../com/qyft/gd/device/model/bo/DeviceAlarm.java | 7 +++ .../com/qyft/gd/device/service/DeviceService.java | 18 +++++- .../java/com/qyft/gd/system/model/entity/Role.java | 8 +-- .../java/com/qyft/gd/system/model/entity/User.java | 8 +-- 6 files changed, 49 insertions(+), 67 deletions(-) diff --git a/src/main/java/com/qyft/gd/device/controller/TestController.java b/src/main/java/com/qyft/gd/device/controller/TestController.java index 65a19a9..efb0734 100644 --- a/src/main/java/com/qyft/gd/device/controller/TestController.java +++ b/src/main/java/com/qyft/gd/device/controller/TestController.java @@ -2,6 +2,7 @@ package com.qyft.gd.device.controller; import com.qyft.gd.device.model.bo.DeviceStatus; import com.qyft.gd.device.service.DeviceService; +import com.qyft.gd.device.service.DeviceStateService; import com.qyft.gd.system.common.result.Result; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -12,9 +13,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; -import java.util.List; - @Tag(name = "测试") @RestController @RequestMapping("/api/test") @@ -22,6 +20,7 @@ import java.util.List; @Slf4j public class TestController { private final DeviceService deviceService; + private final DeviceStateService deviceStateService; @Operation(summary = "开门") @GetMapping("/openDoor") @@ -253,65 +252,23 @@ public class TestController { return Result.failed("拍照失败"); } } + @Operation(summary = "生成设备状态实体") @GetMapping("/getDeviceStatus") public Result getDeviceStatus() { - // 创建 RailArm 对象 - DeviceStatus.RailArm railArm = new DeviceStatus.RailArm(); - railArm.setX(100); - railArm.setY(200); - railArm.setZ(300); - railArm.setJoint1(45.5); - railArm.setJoint2(90.0); - railArm.setRailDistance(10.5); - railArm.setClawDistance(5.5); - railArm.setSpeed(20); - railArm.setClawStatus(true); // 夹爪张开状态 - - // 创建 LiquidArm 对象 - DeviceStatus.LiquidArm liquidArm = new DeviceStatus.LiquidArm(); - liquidArm.setX(150); - liquidArm.setY(250); - liquidArm.setZ(350); - liquidArm.setJoint1(30.0); - liquidArm.setJoint2(60.0); - liquidArm.setSpeed(15); - - // 创建 Pump 对象 (8个 Pump) - List pumps = new ArrayList<>(); - for (int i = 1; i <= 8; i++) { - DeviceStatus.Pump pump = new DeviceStatus.Pump(); - pump.setPumpId("PUMP00" + i); - pump.setFlowRate(100 + i * 10); // 设置流量 - pumps.add(pump); - } + DeviceStatus deviceStatus = deviceStateService.getDeviceStatus(); + return Result.success(deviceStatus); + } - // 创建 Heater 对象 (6个 Heater) - List heaters = new ArrayList<>(); - for (int i = 1; i <= 6; i++) { - DeviceStatus.Heater heater = new DeviceStatus.Heater(); - heater.setHeaterId("HEATER00" + i); - heater.setTrayStatus(i % 2 == 0); // 偶数加热器托盘状态为存在,奇数为无托盘 - heater.setTrayHeight(i * 0.5); // 设置托盘高度 - heater.setTraySpeed(0.8 + i * 0.1); // 设置托盘速度 - heater.setHeatingStatus(80.0 + i); // 设置加热状态(温度) - heater.setTemperature(90.0 + i); // 设置目标加热温度 - heater.setCapStatus(true); // 拍子状态 - heaters.add(heater); + @Operation(summary = "触发测试报警") + @GetMapping("/alarmTest") + public Result alarmTest(@RequestParam String code, @RequestParam String msg, @RequestParam String module) { + boolean success = deviceService.alarmTest(code, msg, module); + if (success) { + return Result.success(); + } else { + return Result.failed("触发测试报警失败"); } - - // 创建 DeviceStatus 对象 - DeviceStatus deviceStatus = new DeviceStatus(); - deviceStatus.setDoorStatus(true); // 门开启 - deviceStatus.setRailArm(railArm); - deviceStatus.setLiquidArm(liquidArm); - deviceStatus.setPump(pumps); - deviceStatus.setShakingStatus(true); // 正在摇匀 - deviceStatus.setShakingSpeed(50); - deviceStatus.setHeatingStatus(true); // 正在加热 - deviceStatus.setHeater(heaters); - deviceStatus.setLiquidTrayStatus(false); - return Result.success(deviceStatus); } } diff --git a/src/main/java/com/qyft/gd/device/handler/DeviceMessageHandler.java b/src/main/java/com/qyft/gd/device/handler/DeviceMessageHandler.java index a5b82b1..1b39ec9 100644 --- a/src/main/java/com/qyft/gd/device/handler/DeviceMessageHandler.java +++ b/src/main/java/com/qyft/gd/device/handler/DeviceMessageHandler.java @@ -3,6 +3,7 @@ package com.qyft.gd.device.handler; import cn.hutool.json.JSONUtil; import com.qyft.gd.device.common.constant.TcpMessageType; import com.qyft.gd.device.common.jsonrpc.JsonRpcResponse; +import com.qyft.gd.device.model.bo.DeviceAlarm; import com.qyft.gd.device.model.bo.DeviceFeedback; import com.qyft.gd.device.model.bo.DeviceStatus; import com.qyft.gd.device.service.DeviceStateService; @@ -33,13 +34,14 @@ public class DeviceMessageHandler extends ChannelInboundHandlerAdapter { public void channelRead(ChannelHandlerContext ctx, Object msg) { ByteBuf buf = (ByteBuf) msg; String serverMsg = buf.toString(CharsetUtil.UTF_8); - log.info("TCP服务消息:{}", serverMsg); + log.debug("TCP服务消息:{}", serverMsg); try { JsonRpcResponse jsonRpcResponse = JSONUtil.toBean(serverMsg, JsonRpcResponse.class); if (TcpMessageType.STATUS.equals(jsonRpcResponse.getType())) {//设备状态 DeviceStatus deviceStatus = JSONUtil.toBean(jsonRpcResponse.getData(), DeviceStatus.class); deviceStateService.updateDeviceStatus(deviceStatus); // 更新设备状态 } else if (TcpMessageType.ALARM.equals(jsonRpcResponse.getType())) {//设备报警 + DeviceAlarm deviceAlarm = JSONUtil.toBean(jsonRpcResponse.getData(), DeviceAlarm.class); } else if (TcpMessageType.FEEDBACK.equals(jsonRpcResponse.getType())) {//设备指令反馈 DeviceFeedback deviceFeedback = JSONUtil.toBean(jsonRpcResponse.getData(), DeviceFeedback.class); diff --git a/src/main/java/com/qyft/gd/device/model/bo/DeviceAlarm.java b/src/main/java/com/qyft/gd/device/model/bo/DeviceAlarm.java index 0a7879f..91a530c 100644 --- a/src/main/java/com/qyft/gd/device/model/bo/DeviceAlarm.java +++ b/src/main/java/com/qyft/gd/device/model/bo/DeviceAlarm.java @@ -1,11 +1,18 @@ package com.qyft.gd.device.model.bo; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** * 设备报警信息 */ +@Schema(description = "设备报警信息") @Data public class DeviceAlarm { + @Schema(description = "报警代码") + private String code; + @Schema(description = "报警信息") private String msg; + @Schema(description = "报警模块") + private String module; } diff --git a/src/main/java/com/qyft/gd/device/service/DeviceService.java b/src/main/java/com/qyft/gd/device/service/DeviceService.java index 43afe0c..213bbdd 100644 --- a/src/main/java/com/qyft/gd/device/service/DeviceService.java +++ b/src/main/java/com/qyft/gd/device/service/DeviceService.java @@ -271,7 +271,7 @@ public class DeviceService { /** * 开始加热 * - * @param heaterId 加热器id + * @param heaterId 加热器id * @param temperature 温度值 */ public boolean startHeating(String heaterId, double temperature) { @@ -342,4 +342,20 @@ public class DeviceService { } return true; } + + /** + * 触发报警 + */ + public boolean alarmTest(String code, String msg, String module) { + Map params = new HashMap<>(); + params.put("code", code); + params.put("msg", msg); + params.put("module", module); + DeviceFeedback deviceFeedback = tcpClient.sendCommand("alarmTest", params); + if (deviceFeedback == null || deviceFeedback.getError() != null) { + log.error("TCP alarmTest 指令执行错误 {}", JSONUtil.toJsonStr(deviceFeedback)); + return false; + } + return true; + } } diff --git a/src/main/java/com/qyft/gd/system/model/entity/Role.java b/src/main/java/com/qyft/gd/system/model/entity/Role.java index 7c82374..a3e211a 100644 --- a/src/main/java/com/qyft/gd/system/model/entity/Role.java +++ b/src/main/java/com/qyft/gd/system/model/entity/Role.java @@ -4,16 +4,16 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.qyft.gd.system.common.base.BaseEntity; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; -import lombok.Getter; -import lombok.Setter; +import lombok.Data; +import lombok.EqualsAndHashCode; /** * 角色实体 */ +@EqualsAndHashCode(callSuper = true) @Schema(description = "角色信息") @TableName("sys_role") -@Getter -@Setter +@Data public class Role extends BaseEntity { @NotBlank() @Schema(description = "角色名称") diff --git a/src/main/java/com/qyft/gd/system/model/entity/User.java b/src/main/java/com/qyft/gd/system/model/entity/User.java index 79939bc..519af04 100644 --- a/src/main/java/com/qyft/gd/system/model/entity/User.java +++ b/src/main/java/com/qyft/gd/system/model/entity/User.java @@ -5,16 +5,16 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.qyft.gd.system.common.base.BaseEntity; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; -import lombok.Getter; -import lombok.Setter; +import lombok.Data; +import lombok.EqualsAndHashCode; /** * 用户实体 */ +@EqualsAndHashCode(callSuper = true) @Schema(description = "用户基础信息") @TableName("sys_user") -@Getter -@Setter +@Data public class User extends BaseEntity { @NotBlank()