From 35ec248566962801c314e59a80c7c76a466613e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Thu, 17 Jul 2025 10:48:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E9=99=A4=E6=B9=BF=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E6=8E=A7=E5=88=B6=E8=BE=BE=E5=88=B0=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=B9=BF=E5=BA=A6=E8=87=AA=E5=8A=A8=E5=81=9C=E6=AD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qyft/ms/app/controller/TestController.java | 10 ++++++++++ .../com/qyft/ms/app/device/spray/SensorCollector.java | 5 +++++ .../com/qyft/ms/app/device/status/DeviceStatus.java | 19 ++++++++++++++++++- .../ms/app/front/cmd/business/DehumidifierStart.java | 12 ++++++++++++ .../ms/app/front/cmd/business/DehumidifierStop.java | 6 +++--- .../com/qyft/ms/app/service/VirtualDeviceService.java | 13 ++++++++++--- 6 files changed, 58 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/qyft/ms/app/controller/TestController.java b/src/main/java/com/qyft/ms/app/controller/TestController.java index 434d70b..eada1fd 100644 --- a/src/main/java/com/qyft/ms/app/controller/TestController.java +++ b/src/main/java/com/qyft/ms/app/controller/TestController.java @@ -4,6 +4,7 @@ import cn.hutool.json.JSONObject; import com.qyft.ms.app.device.status.DeviceStatus; import com.qyft.ms.app.model.bo.Point3D; import com.qyft.ms.app.model.vo.SelfTestVO; +import com.qyft.ms.app.service.VirtualDeviceService; import com.qyft.ms.system.common.device.command.CommandFuture; import com.qyft.ms.system.common.device.command.DeviceCommandGenerator; import com.qyft.ms.system.common.result.Result; @@ -32,6 +33,7 @@ import java.util.concurrent.TimeUnit; public class TestController { private final DeviceStatus deviceStatus; private final DeviceCommandService deviceCommandService; + private final VirtualDeviceService virtualDeviceService; @Operation(summary = "启动虚拟模式") @PostMapping("/virtual") @@ -63,6 +65,14 @@ public class TestController { return Result.success(point3D); } + @Operation(summary = "设置模拟环境湿度") + @PostMapping("/set-humidity") + public Result setHumidity(double humidity) { + virtualDeviceService.setHumidity(humidity); + return Result.success(); + } + + protected void commandWait(CommandFuture... futures) throws Exception { CompletableFuture[] responseFutures = Arrays.stream(futures) .map(CommandFuture::getResponseFuture) diff --git a/src/main/java/com/qyft/ms/app/device/spray/SensorCollector.java b/src/main/java/com/qyft/ms/app/device/spray/SensorCollector.java index c98f585..421b839 100644 --- a/src/main/java/com/qyft/ms/app/device/spray/SensorCollector.java +++ b/src/main/java/com/qyft/ms/app/device/spray/SensorCollector.java @@ -2,6 +2,7 @@ package com.qyft.ms.app.device.spray; import cn.hutool.json.JSONObject; import com.qyft.ms.app.common.constant.WebSocketMessageType; +import com.qyft.ms.app.device.status.DeviceStatus; import com.qyft.ms.system.common.device.command.CommandFuture; import com.qyft.ms.system.common.device.command.DeviceCommandGenerator; import com.qyft.ms.system.model.bo.DeviceCommand; @@ -23,6 +24,7 @@ import java.util.concurrent.*; public class SensorCollector { private final WebSocketService webSocketService; private final DeviceCommandService deviceCommandService; + private final DeviceStatus deviceStatus; @PostConstruct public void init() { @@ -42,6 +44,9 @@ public class SensorCollector { Double deviceHumidity = humidityGetCmdFutureResult.getJSONObject("data").getDouble("humidity"); Double slideTemperature = getSlidePlatHeatFutureResult.getJSONObject("data").getDouble("temperature"); Double nozzleTemperature = getNozzleHeatCmdFutureResult.getJSONObject("data").getDouble("temperature"); + deviceStatus.setDeviceHumidity(deviceHumidity); + deviceStatus.setSlideTemperature(slideTemperature); + deviceStatus.setNozzleTemperature(nozzleTemperature); Map map = new HashMap<>(); map.put("humidity", deviceHumidity); map.put("slideTemperature", slideTemperature); diff --git a/src/main/java/com/qyft/ms/app/device/status/DeviceStatus.java b/src/main/java/com/qyft/ms/app/device/status/DeviceStatus.java index 8222b47..d8707ff 100644 --- a/src/main/java/com/qyft/ms/app/device/status/DeviceStatus.java +++ b/src/main/java/com/qyft/ms/app/device/status/DeviceStatus.java @@ -1,7 +1,6 @@ package com.qyft.ms.app.device.status; import cn.hutool.json.JSONObject; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springframework.stereotype.Component; @@ -67,6 +66,21 @@ public class DeviceStatus { */ private boolean slidePlatHeating = false; + /** + * 当前湿度 + */ + private volatile Double deviceHumidity = 0.0; + + /** + * 当前载玻台湿度 + */ + private volatile Double slideTemperature = 0.0; + + /** + * 当前喷嘴湿度 + */ + private volatile Double nozzleTemperature = 0.0; + public JSONObject toJSON() { JSONObject json = new JSONObject(); json.putOnce("spraying", spraying); @@ -80,6 +94,9 @@ public class DeviceStatus { json.putOnce("virtual", virtual); json.putOnce("nozzleHeating", nozzleHeating); json.putOnce("slidePlatHeating", slidePlatHeating); + json.putOnce("deviceHumidity", deviceHumidity); + json.putOnce("slideTemperature", slideTemperature); + json.putOnce("nozzleTemperature", nozzleTemperature); return json; } diff --git a/src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStart.java b/src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStart.java index a0b9bbe..3a4a2b4 100644 --- a/src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStart.java +++ b/src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStart.java @@ -63,6 +63,18 @@ public class DehumidifierStart extends BaseCommandHandler { commandWait(dehumidifierValveOpenCmdFuture); deviceStatus.setDehumidifierRunning(true); + + while (deviceStatus.isDehumidifierRunning()) { + if(deviceStatus.getDeviceHumidity() < humidity) { + DeviceCommand dehumidifierStopCommand = DeviceCommandGenerator.dehumidifierValveClose(); // 生成关闭除湿阀指令 + CommandFuture dehumidifierStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), dehumidifierStopCommand); + commandWait(dehumidifierStopCommandFuture); + deviceStatus.setDehumidifierRunning(false); + break; + }else{ + Thread.sleep(1000); + } + } }); } } diff --git a/src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStop.java b/src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStop.java index 8a2ff93..3882196 100644 --- a/src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStop.java +++ b/src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStop.java @@ -29,9 +29,9 @@ public class DehumidifierStop extends BaseCommandHandler { @Override public CompletableFuture handle(FrontCmdControlForm form) { return runAsync(() -> { - DeviceCommand dehumidifierStopCommand = DeviceCommandGenerator.dehumidifierValveClose(); // 生成关闭除湿阀指令 - CommandFuture dehumidifierStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), dehumidifierStopCommand); - commandWait(dehumidifierStopCommandFuture); +// DeviceCommand dehumidifierStopCommand = DeviceCommandGenerator.dehumidifierValveClose(); // 生成关闭除湿阀指令 +// CommandFuture dehumidifierStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), dehumidifierStopCommand); +// commandWait(dehumidifierStopCommandFuture); deviceStatus.setDehumidifierRunning(false); }); diff --git a/src/main/java/com/qyft/ms/app/service/VirtualDeviceService.java b/src/main/java/com/qyft/ms/app/service/VirtualDeviceService.java index 8fca416..6165297 100644 --- a/src/main/java/com/qyft/ms/app/service/VirtualDeviceService.java +++ b/src/main/java/com/qyft/ms/app/service/VirtualDeviceService.java @@ -4,6 +4,7 @@ import cn.hutool.json.JSONObject; import com.qyft.ms.system.model.bo.DeviceCommand; import com.qyft.ms.system.service.device.DeviceCommandService; import lombok.RequiredArgsConstructor; +import lombok.Setter; import org.springframework.stereotype.Service; /** @@ -13,6 +14,12 @@ import org.springframework.stereotype.Service; @RequiredArgsConstructor public class VirtualDeviceService { private final DeviceCommandService deviceCommandService; + @Setter + private volatile double humidity = 26; + @Setter + private volatile double slideTemperature = 27; + @Setter + private volatile double nozzleTemperature = 28; public void completeCommandResponse(DeviceCommand cmdToDevice) { @@ -33,7 +40,7 @@ public class VirtualDeviceService { if (device.contains("humidity")) { if (action.contains("get")) {//获取温度 JSONObject data = new JSONObject(); - data.putOnce("humidity", 26); + data.putOnce("humidity", humidity); jsonObject.putOnce("data", data); } }else if (device.contains("device")) { @@ -47,13 +54,13 @@ public class VirtualDeviceService { }else if (device.contains("slide_temperature")) { if (action.contains("get")) {//获取设备整体状态 JSONObject data = new JSONObject(); - data.putOnce("temperature", 50); + data.putOnce("temperature", slideTemperature); jsonObject.putOnce("data", data); } }else if (device.contains("nozzle_temperature")) { if (action.contains("get")) {//获取设备整体状态 JSONObject data = new JSONObject(); - data.putOnce("temperature", 60); + data.putOnce("temperature", nozzleTemperature); jsonObject.putOnce("data", data); } }else if (device.contains("xyz")) {