From 7c1725bcc15382d3849022676fe97afc34a78b5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Fri, 14 Mar 2025 12:07:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/common/command/DeviceCommandGenerator.java | 6 +- .../java/com/qyft/ms/app/handler/CMDResend.java | 55 ++++++++++++ .../handler/debugimpl/DehumidifierValveClose.java | 13 +-- .../handler/debugimpl/DehumidifierValveOpen.java | 12 +-- .../ms/app/handler/debugimpl/HighVoltageClose.java | 11 +-- .../ms/app/handler/debugimpl/HighVoltageOpen.java | 12 +-- .../app/handler/debugimpl/LaserControlClose.java | 12 +-- .../ms/app/handler/debugimpl/LaserControlOpen.java | 13 +-- .../app/handler/debugimpl/LightingPanelClose.java | 11 +-- .../app/handler/debugimpl/LightingPanelOpen.java | 13 ++- .../qyft/ms/app/handler/debugimpl/MotorXMove.java | 98 ++++++++++++++-------- .../ms/app/handler/debugimpl/MotorXOrigin.java | 14 ++-- .../qyft/ms/app/handler/debugimpl/MotorXStop.java | 10 ++- .../app/handler/debugimpl/MotorXYZPositionGet.java | 10 ++- .../qyft/ms/app/handler/debugimpl/MotorYMove.java | 55 +++++++----- .../ms/app/handler/debugimpl/MotorYOrigin.java | 15 ++-- .../qyft/ms/app/handler/debugimpl/MotorYStop.java | 10 ++- .../qyft/ms/app/handler/debugimpl/MotorZMove.java | 61 ++++++++------ .../ms/app/handler/debugimpl/MotorZOrigin.java | 13 ++- .../qyft/ms/app/handler/debugimpl/MotorZStop.java | 11 +-- .../ms/app/handler/debugimpl/NozzleValveClose.java | 11 +-- .../ms/app/handler/debugimpl/NozzleValveOpen.java | 14 ++-- .../handler/debugimpl/ThreeWayValveCloseAll.java | 12 +-- .../debugimpl/ThreeWayValveOpenNuzzlePipeline.java | 12 +-- .../ThreeWayValveOpenSyringePipeline.java | 13 ++- .../ms/app/handler/debugimpl/WashValveClose.java | 13 ++- .../ms/app/handler/debugimpl/WashValveOpen.java | 12 +-- .../ms/app/handler/impl/DehumidifierStart.java | 25 +++--- .../qyft/ms/app/handler/impl/DehumidifierStop.java | 13 +-- .../app/handler/impl/MatrixSprayChangeParam.java | 64 ++++++++------ .../ms/app/handler/impl/MatrixSprayContinue.java | 64 ++++++++------ .../qyft/ms/app/handler/impl/MatrixSprayPause.java | 52 ++++++++---- .../qyft/ms/app/handler/impl/MatrixSprayStart.java | 12 +-- .../ms/app/handler/impl/NozzlePipelinePreFill.java | 2 +- .../ms/app/handler/impl/SyringePipelineWash.java | 2 +- .../com/qyft/ms/device/device/DeviceInstance.java | 6 ++ .../ms/device/handler/DeviceMessageHandler.java | 34 ++------ 37 files changed, 493 insertions(+), 323 deletions(-) create mode 100644 src/main/java/com/qyft/ms/app/handler/CMDResend.java diff --git a/src/main/java/com/qyft/ms/app/common/command/DeviceCommandGenerator.java b/src/main/java/com/qyft/ms/app/common/command/DeviceCommandGenerator.java index 4227b24..1b14cdb 100644 --- a/src/main/java/com/qyft/ms/app/common/command/DeviceCommandGenerator.java +++ b/src/main/java/com/qyft/ms/app/common/command/DeviceCommandGenerator.java @@ -138,7 +138,7 @@ public class DeviceCommandGenerator { * * @param power 功率[0-100] */ - public static CMDToDevice laser_control_open(Integer power) { + public static CMDToDevice laser_control_open(Double power) { return laser_control("open", power); } @@ -147,7 +147,7 @@ public class DeviceCommandGenerator { * * @param power 功率[0-100] */ - public static CMDToDevice laser_control(String action, Integer power) { + public static CMDToDevice laser_control(String action, Double power) { Map params = new HashMap<>(); params.put("power", power); return controlCmd("laser", action, params); @@ -450,7 +450,7 @@ public class DeviceCommandGenerator { * 获取信息指令 */ public static CMDToDevice getInfoCmd(String device) { - return deviceCmd("controlCmd", device, "get", null); + return deviceCmd("getInfoCmd", device, "get", null); } /** diff --git a/src/main/java/com/qyft/ms/app/handler/CMDResend.java b/src/main/java/com/qyft/ms/app/handler/CMDResend.java new file mode 100644 index 0000000..46739ef --- /dev/null +++ b/src/main/java/com/qyft/ms/app/handler/CMDResend.java @@ -0,0 +1,55 @@ +package com.qyft.ms.app.handler; + +import com.qyft.ms.device.device.DeviceInstance; +import io.netty.channel.ChannelHandler; +import jakarta.annotation.PostConstruct; +import lombok.RequiredArgsConstructor; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Iterator; +import java.util.Map; +import java.util.concurrent.*; + +@Slf4j +@Component +@RequiredArgsConstructor +public class CMDResend { + + @Setter + private volatile CountDownLatch latch; + + private static final long CLEANUP_INTERVAL = 2000; // 5 秒清理一次 + private static final long DUPLICATE_CHECK_INTERVAL = 300;//ms + + @PostConstruct + public void init() { + ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); + executorService.scheduleAtFixedRate(() -> { + try { + cleanupOldCommands(); + } catch (Exception e) { + if (!executorService.isShutdown()) { + executorService.shutdown(); // 关闭 ScheduledExecutorService + } + log.error("定时器异常", e); + } + }, CLEANUP_INTERVAL, 100, TimeUnit.MILLISECONDS); + } + + + private static void cleanupOldCommands() { + + Map receivedCommands = DeviceInstance.getInstance().getReceivedCommands(); + long currentTime = System.currentTimeMillis(); + Iterator> iterator = receivedCommands.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + if (currentTime - entry.getValue() > DUPLICATE_CHECK_INTERVAL) { + iterator.remove(); + } + } +// System.out.println("清理完成,当前记录数量: " + receivedCommands.size()); + } +} diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveClose.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveClose.java index e99f8fb..d4d787f 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveClose.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveClose.java @@ -37,7 +37,6 @@ public class DehumidifierValveClose implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON); - CMDToDevice cmdToDevice = DeviceCommandGenerator.dehumidifier_valve_close();// 关闭除湿阀 CommandFuture cmdToDeviceFuture = new CommandFuture(); cmdToDeviceFuture.setCmdToDevice(cmdToDevice); @@ -58,11 +57,13 @@ public class DehumidifierValveClose implements CommandHandler { emitter.complete(); return; } - Boolean cmdStatus = deviceResult.getBool("result"); - if (!cmdStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭除湿阀指令执行失败", deviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return; + Object resultStatus = deviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭除湿阀指令执行失败", deviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "关闭除湿阀指令反馈", deviceResult), MediaType.APPLICATION_JSON); emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "指令执行完毕"), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveOpen.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveOpen.java index 0f51a4e..0c8815e 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveOpen.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveOpen.java @@ -56,11 +56,13 @@ public class DehumidifierValveOpen implements CommandHandler { emitter.complete(); return; } - Boolean dehumidifierValveStatus = dehumidifierValveResult.getBool("result"); - if (!dehumidifierValveStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "开启除湿阀指令执行失败", dehumidifierValveResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return; + Object resultStatus = dehumidifierValveResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "开启除湿阀指令执行失败", dehumidifierValveResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "开启除湿阀指令反馈", dehumidifierValveResult), MediaType.APPLICATION_JSON); emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "指令执行完毕"), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageClose.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageClose.java index 563fa80..9e3d7df 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageClose.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageClose.java @@ -48,7 +48,6 @@ public class HighVoltageClose implements CommandHandler { */ - /** * 3.生成指令,并发送指令 */ @@ -82,10 +81,12 @@ public class HighVoltageClose implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭高压指令返回错误", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = laser_control_open_CMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭高压指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = laser_control_open_CMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭高压指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "关闭高压指令指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageOpen.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageOpen.java index b74f91c..65a34f6 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageOpen.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageOpen.java @@ -18,7 +18,6 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; -import java.nio.DoubleBuffer; import java.util.Map; /** @@ -49,7 +48,6 @@ public class HighVoltageOpen implements CommandHandler { */ - /** * 3.生成指令,并发送指令 */ @@ -83,10 +81,12 @@ public class HighVoltageOpen implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开高压指令返回错误", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = laser_control_open_CMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开高压指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = laser_control_open_CMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开高压指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "打开高压指令指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlClose.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlClose.java index cb3c48e..c2e073f 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlClose.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlClose.java @@ -18,8 +18,6 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; -import java.util.Map; - /** * z轴回原点 */ @@ -73,10 +71,12 @@ public class LaserControlClose implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭激光指令返回错误", nozzleValveCloseCMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = nozzleValveCloseCMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭激光指令执行失败", nozzleValveCloseCMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = nozzleValveCloseCMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭激光指令执行失败", nozzleValveCloseCMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "关闭激光指令指令反馈", nozzleValveCloseCMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlOpen.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlOpen.java index ae324ea..f9372ad 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlOpen.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlOpen.java @@ -37,7 +37,7 @@ public class LaserControlOpen implements CommandHandler { String frontCmdName = cmdForm.getCmdName(); Map param = cmdForm.getParam(); - Integer power = (Integer) param.get("power"); + Double power = (Double) param.get("power"); /** * 1.向前端发送接收到指令 @@ -48,7 +48,6 @@ public class LaserControlOpen implements CommandHandler { */ - /** * 3.生成指令,并发送指令 */ @@ -82,10 +81,12 @@ public class LaserControlOpen implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开激光指令返回错误", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = laser_control_open_CMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开激光指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = laser_control_open_CMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开激光指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "打开激光指令指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelClose.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelClose.java index 9fc4395..7931bd7 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelClose.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelClose.java @@ -70,11 +70,12 @@ public class LightingPanelClose implements CommandHandler { emitter.complete(); } - Boolean nozzleValveOpenCMDToDeviceResultStatus = lightingPanelOpenCMDToDeviceResult.getBool("result"); - if (!nozzleValveOpenCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭照明灯指令执行失败", lightingPanelOpenCMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); - + Object resultStatus = lightingPanelOpenCMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭照明灯指令执行失败", lightingPanelOpenCMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "关闭照明灯指令反馈", lightingPanelOpenCMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelOpen.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelOpen.java index 000a138..0ba3f95 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelOpen.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelOpen.java @@ -37,9 +37,6 @@ public class LightingPanelOpen implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON); - - - CMDToDevice lightingPanelOpenCMDToDevice = DeviceCommandGenerator.lighting_panel_open();//生成指令 开启喷嘴阀 CommandFuture lightingPanelCMDToDeviceFuture = new CommandFuture(); lightingPanelCMDToDeviceFuture.setCmdToDevice(lightingPanelOpenCMDToDevice); @@ -66,11 +63,13 @@ public class LightingPanelOpen implements CommandHandler { emitter.complete(); } - Boolean nozzleValveOpenCMDToDeviceResultStatus = lightingPanelOpenCMDToDeviceResult.getBool("result"); - if (!nozzleValveOpenCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "开启照明灯指令执行失败", lightingPanelOpenCMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = lightingPanelOpenCMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "开启照明灯指令执行失败", lightingPanelOpenCMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "开启照明灯指令反馈", lightingPanelOpenCMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXMove.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXMove.java index 1b0cd3a..d8d6f2d 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXMove.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXMove.java @@ -19,6 +19,7 @@ import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; import java.util.Map; +import java.util.Optional; /** * z轴回原点 @@ -27,23 +28,24 @@ import java.util.Map; @Component @RequiredArgsConstructor @Async("asyncExecutor") -@CommandMapping("motor_x_move")//业务指令注解 +@CommandMapping("motor_x_to_position")//业务指令注解 public class MotorXMove implements CommandHandler { private final TcpClient deviceClient; /** * { - * cmdName:'motor_x_move', - * cmdId:'', - * device:'x', - * action:'move', - * param:{ - * current:'',//这四个参数可以不同时存在 - * direction:'forward|backward', - * position:'', - * speed:'' - * } + * cmdName:'motor_x_move', + * cmdId:'', + * device:'x', + * action:'move', + * param:{ + * current:'',//这四个参数可以不同时存在 + * direction:'forward|backward', + * position:'', + * speed:'' * } + * } + * * @param cmdForm * @param emitter * @throws Exception @@ -53,7 +55,15 @@ public class MotorXMove implements CommandHandler { String frontCmdId = cmdForm.getCmdId(); String frontCmdName = cmdForm.getCmdName(); Map param = cmdForm.getParam(); - Double position = (Double) param.get("position"); + Double position = Optional.ofNullable(param.get("position")) + .map(Object::toString) + .map(Double::parseDouble) + .orElse(null); + Double speed = Optional.ofNullable(param.get("speed")) + .map(Object::toString) + .map(Double::parseDouble) + .orElse(null); + String direction = (String) param.get("direction"); @@ -67,19 +77,39 @@ public class MotorXMove implements CommandHandler { * 2.获取电机X的位置 */ - CMDToDevice cmdToDevice = DeviceCommandGenerator.motor_xyz_position_get();//关闭喷嘴阀 + CMDToDevice cmdToDevice = DeviceCommandGenerator.motor_xyz_position_get();//获得电机XYZ相对原点坐标 CommandFuture cmdToDeviceFuture = new CommandFuture(); cmdToDeviceFuture.setCmdToDevice(cmdToDevice); - Integer cmdToDeviceCmdId = cmdToDevice.getCmdId(); - CurrentSendCmdMapInstance.getInstance().putCommand(cmdToDeviceCmdId, cmdToDeviceFuture); // 将指令放入map + Integer cmdId = cmdToDevice.getCmdId(); + CurrentSendCmdMapInstance.getInstance().putCommand(cmdId, cmdToDeviceFuture); // 将指令放入map deviceClient.sendToJSON(cmdToDevice); // 发送指令给设备 + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了获得电机XYZ相对原点坐标指令", cmdToDevice), MediaType.APPLICATION_JSON); - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了XYZ获取位置指令", cmdToDevice), MediaType.APPLICATION_JSON); + cmdToDeviceFuture.waitForContinue(); // 等待设备反馈 + JSONObject deviceResult = cmdToDeviceFuture.getCallbackResult(); // 获取设备返回结果 + CurrentSendCmdMapInstance.getInstance().removeCommand(cmdId); // 从map中删除该指令 - /** - * 3.等待 - */ - cmdToDeviceFuture.waitForContinue(); // 等待设备的反馈 + if (!cmdToDeviceFuture.isReceived()) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "获得电机XYZ相对原点坐标指令响应超时", deviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } + + if (deviceResult.getJSONObject("error") != null) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "获得电机XYZ相对原点坐标指令返回错误", deviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } + + Object resultStatus = deviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "获得电机XYZ相对原点坐标指令执行失败", deviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } + } + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "获得电机XYZ相对原点坐标指令反馈", deviceResult), MediaType.APPLICATION_JSON); /** * "{ @@ -100,23 +130,20 @@ public class MotorXMove implements CommandHandler { /** * 4.处理电机位置结果 */ - JSONObject resultObject = cmdToDeviceFuture.getCallbackResult(); // 拿到设备返回结果 - CurrentSendCmdMapInstance.getInstance().removeCommand(cmdToDeviceCmdId); // 从map中删除该指令 - - JSONObject cmdToDeviceResult = resultObject.getJSONObject("result"); + JSONObject cmdToDeviceResult = deviceResult.getJSONObject("result"); Double xAxisPosition = cmdToDeviceResult.getDouble("xAxisPosition"); Double finalPosition = 0.0; - if("forward".equals(direction)){ - finalPosition+=xAxisPosition+position; + if ("forward".equals(direction)) { + finalPosition = xAxisPosition + position; } - if("backward".equals(direction)){ - finalPosition-=xAxisPosition-position; + if ("backward".equals(direction)) { + finalPosition = xAxisPosition - position; - if(finalPosition<0){ + if (finalPosition < 0) { finalPosition = 0.0; } } @@ -126,7 +153,7 @@ public class MotorXMove implements CommandHandler { * 5.生成电机移动指令,并发送指令 */ - cmdToDevice = DeviceCommandGenerator.motor_x_position_set(finalPosition);//关闭喷嘴阀 + cmdToDevice = DeviceCommandGenerator.motor_x_position_set(finalPosition, speed);//移动x轴到指定位置 cmdToDeviceFuture = new CommandFuture(); cmdToDeviceFuture.setCmdToDevice(cmdToDevice); Integer nozzleValveCloseCMDToDeviceCmdId = cmdToDevice.getCmdId(); @@ -155,10 +182,13 @@ public class MotorXMove implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "X移动指令返回错误", cmdToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = cmdToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "X移动指令执行失败", cmdToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + + Object nozzleValveCloseCMDToDeviceResultStatus = deviceResult.getObj("result"); + if (nozzleValveCloseCMDToDeviceResultStatus instanceof Boolean) { + if (!(Boolean) nozzleValveCloseCMDToDeviceResultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "X移动指令执行失败", cmdToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "X移动指令反馈", cmdToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXOrigin.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXOrigin.java index 84bb504..0516248 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXOrigin.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXOrigin.java @@ -68,17 +68,21 @@ public class MotorXOrigin implements CommandHandler { if (!cmdToDeviceFuture.isReceived()) { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "X回原点指令响应超时", cmdToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); + return; } if (cmdToDeviceResult.getJSONObject("error") != null) { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "X回原点指令返回错误", cmdToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); + return; } - Boolean nozzleValveCloseCMDToDeviceResultStatus = cmdToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "X回原点指令执行失败", cmdToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = cmdToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "X回原点指令执行失败", cmdToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } } - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "X回原点指令指令反馈", cmdToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXStop.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXStop.java index ea10609..ec823a5 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXStop.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXStop.java @@ -73,10 +73,12 @@ public class MotorXStop implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "X停止指令返回错误", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = laser_control_open_CMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "X停止指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = laser_control_open_CMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "X停止指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "X停止指令指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXYZPositionGet.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXYZPositionGet.java index be5be48..6353fb1 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXYZPositionGet.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXYZPositionGet.java @@ -73,10 +73,12 @@ public class MotorXYZPositionGet implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "XYZ获取位置指令返回错误", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean cmdToDeviceResultStatus = laser_control_open_CMDToDeviceResult.getBool("result"); - if (!cmdToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "XYZ获取位置指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = laser_control_open_CMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "XYZ获取位置指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "XYZ获取位置指令指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYMove.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYMove.java index 36842a3..22ff0b1 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYMove.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYMove.java @@ -19,6 +19,7 @@ import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; import java.util.Map; +import java.util.Optional; /** * z轴回原点 @@ -27,23 +28,24 @@ import java.util.Map; @Component @RequiredArgsConstructor @Async("asyncExecutor") -@CommandMapping("motor_x_move")//业务指令注解 +@CommandMapping("motor_y_to_position")//业务指令注解 public class MotorYMove implements CommandHandler { private final TcpClient deviceClient; /** * { - * cmdName:'motor_y_move', - * cmdId:'', - * device:'x', - * action:'move', - * param:{ - * current:'',//这四个参数可以不同时存在 - * direction:'forward|backward', - * position:'', - * speed:'' - * } + * cmdName:'motor_y_move', + * cmdId:'', + * device:'x', + * action:'move', + * param:{ + * current:'',//这四个参数可以不同时存在 + * direction:'forward|backward', + * position:'', + * speed:'' * } + * } + * * @param cmdForm * @param emitter * @throws Exception @@ -53,7 +55,14 @@ public class MotorYMove implements CommandHandler { String frontCmdId = cmdForm.getCmdId(); String frontCmdName = cmdForm.getCmdName(); Map param = cmdForm.getParam(); - Double position = (Double) param.get("position"); + Double position = Optional.ofNullable(param.get("position")) + .map(Object::toString) + .map(Double::parseDouble) + .orElse(null); + Double speed = Optional.ofNullable(param.get("speed")) + .map(Object::toString) + .map(Double::parseDouble) + .orElse(null); String direction = (String) param.get("direction"); @@ -110,13 +119,13 @@ public class MotorYMove implements CommandHandler { Double finalPosition = 0.0; - if("forward".equals(direction)){ - finalPosition+=yAxisPosition+position; + if ("forward".equals(direction)) { + finalPosition = yAxisPosition + position; } - if("backward".equals(direction)){ - finalPosition-=yAxisPosition-position; + if ("backward".equals(direction)) { + finalPosition = yAxisPosition - position; - if(finalPosition<0){ + if (finalPosition < 0) { finalPosition = 0.0; } } @@ -126,7 +135,7 @@ public class MotorYMove implements CommandHandler { * 5.生成电机移动指令,并发送指令 */ - cmdToDevice = DeviceCommandGenerator.motor_y_position_set(finalPosition);//关闭喷嘴阀 + cmdToDevice = DeviceCommandGenerator.motor_y_position_set(finalPosition, speed); cmdToDeviceFuture = new CommandFuture(); cmdToDeviceFuture.setCmdToDevice(cmdToDevice); Integer nozzleValveCloseCMDToDeviceCmdId = cmdToDevice.getCmdId(); @@ -155,10 +164,12 @@ public class MotorYMove implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Y移动指令返回错误", cmdToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = cmdToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Y移动指令执行失败", cmdToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = cmdToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Y移动指令执行失败", cmdToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "Y移动指令反馈", cmdToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYOrigin.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYOrigin.java index c114301..09e210c 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYOrigin.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYOrigin.java @@ -18,8 +18,6 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; -import java.util.Map; - /** * z轴回原点 */ @@ -70,15 +68,20 @@ public class MotorYOrigin implements CommandHandler { if (!cmdToDeviceFuture.isReceived()) { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Y回原点指令响应超时", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); + return; } if (laser_control_open_CMDToDeviceResult.getJSONObject("error") != null) { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Y回原点指令返回错误", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); + return; } - Boolean nozzleValveCloseCMDToDeviceResultStatus = laser_control_open_CMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Y回原点指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = laser_control_open_CMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Y回原点指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "Y回原点指令指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYStop.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYStop.java index 49398a1..d863e4b 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYStop.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYStop.java @@ -73,10 +73,12 @@ public class MotorYStop implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "X停止指令返回错误", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = laser_control_open_CMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Y停止指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = laser_control_open_CMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Y停止指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "Y停止指令指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZMove.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZMove.java index b5f47ea..ea2200d 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZMove.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZMove.java @@ -19,6 +19,7 @@ import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; import java.util.Map; +import java.util.Optional; /** * z轴回原点 @@ -27,23 +28,24 @@ import java.util.Map; @Component @RequiredArgsConstructor @Async("asyncExecutor") -@CommandMapping("motor_x_move")//业务指令注解 +@CommandMapping("motor_z_to_position")//业务指令注解 public class MotorZMove implements CommandHandler { private final TcpClient deviceClient; /** * { - * cmdName:'motor_z_move', - * cmdId:'', - * device:'x', - * action:'move', - * param:{ - * current:'',//这四个参数可以不同时存在 - * direction:'forward|backward', - * position:'', - * speed:'' - * } + * cmdName:'motor_z_move', + * cmdId:'', + * device:'x', + * action:'move', + * param:{ + * current:'',//这四个参数可以不同时存在 + * direction:'forward|backward', + * position:'', + * speed:'' * } + * } + * * @param cmdForm * @param emitter * @throws Exception @@ -53,16 +55,23 @@ public class MotorZMove implements CommandHandler { String frontCmdId = cmdForm.getCmdId(); String frontCmdName = cmdForm.getCmdName(); Map param = cmdForm.getParam(); - Double position = (Double) param.get("position"); - String direction = (String) param.get("direction"); - - /** * 1.向前端发送接收到指令 */ emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON); + Double position = Optional.ofNullable(param.get("position")) + .map(Object::toString) + .map(Double::parseDouble) + .orElse(null); + Double speed = Optional.ofNullable(param.get("speed")) + .map(Object::toString) + .map(Double::parseDouble) + .orElse(null); + String direction = (String) param.get("direction"); + + /** * 2.获取电机Z的位置 */ @@ -110,13 +119,13 @@ public class MotorZMove implements CommandHandler { Double finalPosition = 0.0; - if("forward".equals(direction)){ - finalPosition+=zAxisPosition+position; + if ("forward".equals(direction)) { + finalPosition = zAxisPosition + position; } - if("backward".equals(direction)){ - finalPosition-=zAxisPosition-position; + if ("backward".equals(direction)) { + finalPosition = zAxisPosition - position; - if(finalPosition<0){ + if (finalPosition < 0) { finalPosition = 0.0; } } @@ -126,7 +135,7 @@ public class MotorZMove implements CommandHandler { * 5.生成电机移动指令,并发送指令 */ - cmdToDevice = DeviceCommandGenerator.motor_x_position_set(finalPosition);//关闭喷嘴阀 + cmdToDevice = DeviceCommandGenerator.motor_z_position_set(finalPosition, speed); cmdToDeviceFuture = new CommandFuture(); cmdToDeviceFuture.setCmdToDevice(cmdToDevice); Integer nozzleValveCloseCMDToDeviceCmdId = cmdToDevice.getCmdId(); @@ -155,10 +164,12 @@ public class MotorZMove implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "X移动指令返回错误", cmdToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = cmdToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "X移动指令执行失败", cmdToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = cmdToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "X移动指令执行失败", cmdToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "X移动指令反馈", cmdToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZOrigin.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZOrigin.java index d4fed88..f7374b4 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZOrigin.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZOrigin.java @@ -68,15 +68,20 @@ public class MotorZOrigin implements CommandHandler { if (!cmdToDeviceFuture.isReceived()) { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Z回原点指令响应超时", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); + return; } if (laser_control_open_CMDToDeviceResult.getJSONObject("error") != null) { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Z回原点指令返回错误", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); + return; } - Boolean nozzleValveCloseCMDToDeviceResultStatus = laser_control_open_CMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Z回原点指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = laser_control_open_CMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Z回原点指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "Z回原点指令指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZStop.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZStop.java index 3dade9a..1ab586c 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZStop.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZStop.java @@ -73,12 +73,13 @@ public class MotorZStop implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Z停止指令返回错误", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = laser_control_open_CMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Z停止指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = laser_control_open_CMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "Z停止指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "Z停止指令指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveClose.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveClose.java index 299ee0b..dd495de 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveClose.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveClose.java @@ -50,7 +50,6 @@ public class NozzleValveClose implements CommandHandler { cmdToDeviceFuture.waitForContinue(); // 等待设备的反馈 - JSONObject nozzleValveCloseCMDToDeviceResult = cmdToDeviceFuture.getCallbackResult(); // 拿到设备返回结果 CurrentSendCmdMapInstance.getInstance().removeCommand(nozzleValveCloseCMDToDeviceCmdId); // 从map中删除该指令 @@ -62,10 +61,12 @@ public class NozzleValveClose implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭喷嘴阀指令返回错误", nozzleValveCloseCMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = nozzleValveCloseCMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭喷嘴阀指令执行失败", nozzleValveCloseCMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = nozzleValveCloseCMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭喷嘴阀指令执行失败", nozzleValveCloseCMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "关闭喷嘴阀指令反馈", nozzleValveCloseCMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveOpen.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveOpen.java index 41deb4e..72568f4 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveOpen.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveOpen.java @@ -37,9 +37,6 @@ public class NozzleValveOpen implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON); - - - CMDToDevice cmdToDevice = DeviceCommandGenerator.nozzle_valve_open();//生成指令 开启喷嘴阀 CommandFuture cmdToDeviceFuture = new CommandFuture(); cmdToDeviceFuture.setCmdToDevice(cmdToDevice); @@ -66,11 +63,12 @@ public class NozzleValveOpen implements CommandHandler { emitter.complete(); } - Boolean nozzleValveOpenCMDToDeviceResultStatus = nozzleValveOpenCMDToDeviceResult.getBool("result"); - if (!nozzleValveOpenCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "开启喷嘴阀指令执行失败", nozzleValveOpenCMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); - + Object resultStatus = nozzleValveOpenCMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "开启喷嘴阀指令执行失败", nozzleValveOpenCMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "开启喷嘴阀指令反馈", nozzleValveOpenCMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveCloseAll.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveCloseAll.java index 6a86217..4c7a161 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveCloseAll.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveCloseAll.java @@ -18,8 +18,6 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; -import java.util.Map; - /** * z轴回原点 */ @@ -76,10 +74,12 @@ public class ThreeWayValveCloseAll implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "全部关闭指令返回错误", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = laser_control_open_CMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "全部关闭指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = laser_control_open_CMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "全部关闭指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "全部关闭指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenNuzzlePipeline.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenNuzzlePipeline.java index 9c97dd5..baa721d 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenNuzzlePipeline.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenNuzzlePipeline.java @@ -18,8 +18,6 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; -import java.util.Map; - /** * z轴回原点 */ @@ -76,10 +74,12 @@ public class ThreeWayValveOpenNuzzlePipeline implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开喷嘴管路指令返回错误", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = laser_control_open_CMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开喷嘴管路指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = laser_control_open_CMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开喷嘴管路指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "打开喷嘴管路指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenSyringePipeline.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenSyringePipeline.java index 4a15c8d..ce7154e 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenSyringePipeline.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenSyringePipeline.java @@ -18,8 +18,6 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; -import java.util.Map; - /** * z轴回原点 */ @@ -75,12 +73,13 @@ public class ThreeWayValveOpenSyringePipeline implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开注射器管路指令返回错误", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = laser_control_open_CMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开注射器管路指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = laser_control_open_CMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开注射器管路指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "打开注射器管路指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveClose.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveClose.java index 0859418..3a44edb 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveClose.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveClose.java @@ -18,8 +18,6 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; -import java.util.Map; - /** * z轴回原点 */ @@ -75,12 +73,13 @@ public class WashValveClose implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭清洗阀指令返回错误", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = laser_control_open_CMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭清洗阀指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = laser_control_open_CMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭清洗阀指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "关闭清洗阀指令指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } diff --git a/src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveOpen.java b/src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveOpen.java index 9d13d40..843f478 100644 --- a/src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveOpen.java +++ b/src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveOpen.java @@ -18,8 +18,6 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; -import java.util.Map; - /** * z轴回原点 */ @@ -76,10 +74,12 @@ public class WashValveOpen implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开清洗阀指令返回错误", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.complete(); } - Boolean nozzleValveCloseCMDToDeviceResultStatus = laser_control_open_CMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开清洗阀指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); + Object resultStatus = laser_control_open_CMDToDeviceResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开清洗阀指令执行失败", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "打开清洗阀指令指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStart.java b/src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStart.java index cc48a68..2b6572b 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStart.java +++ b/src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStart.java @@ -66,11 +66,13 @@ public class DehumidifierStart implements CommandHandler { emitter.complete(); return; } - Boolean humidityStatus = humidityResult.getBool("result"); - if (!humidityStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "获取湿度指令执行失败", humidityResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return; + Object resultStatus = humidityResult.getObj("result"); + if (resultStatus instanceof Boolean) { + if (!(Boolean) resultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "获取湿度指令执行失败", humidityResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "获取湿度指令反馈", humidityResult), MediaType.APPLICATION_JSON); Double deviceHumidity = humidityResult.getJSONObject("result").getDouble("humidity"); @@ -102,11 +104,14 @@ public class DehumidifierStart implements CommandHandler { emitter.complete(); return; } - Boolean dehumidifierValveStatus = dehumidifierValveResult.getBool("result"); - if (!dehumidifierValveStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "开启除湿阀指令执行失败", dehumidifierValveResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return; + + Object dehumidifierValveStatus = dehumidifierValveResult.getObj("result"); + if (dehumidifierValveStatus instanceof Boolean) { + if (!(Boolean) dehumidifierValveStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "开启除湿阀指令执行失败", dehumidifierValveResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "开启除湿阀指令反馈", dehumidifierValveResult), MediaType.APPLICATION_JSON); emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "指令执行完毕"), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStop.java b/src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStop.java index 7bcb558..647d9f7 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStop.java +++ b/src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStop.java @@ -55,11 +55,14 @@ public class DehumidifierStop implements CommandHandler { emitter.complete(); return; } - Boolean cmdStatus = deviceResult.getBool("result"); - if (!cmdStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭除湿阀指令执行失败", deviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return; + + Object cmdStatus = deviceResult.getObj("result"); + if (cmdStatus instanceof Boolean) { + if (!(Boolean) cmdStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭除湿阀指令执行失败", deviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "关闭除湿阀指令反馈", deviceResult), MediaType.APPLICATION_JSON); emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "指令执行完毕"), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayChangeParam.java b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayChangeParam.java index 3010ae5..ba24379 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayChangeParam.java +++ b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayChangeParam.java @@ -135,11 +135,14 @@ public class MatrixSprayChangeParam implements CommandHandler { emitter.complete(); return true; } - Boolean motorXSpeedSetStatus = motorXSpeedSetResult.getBool("result"); - if (!motorXSpeedSetStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "x轴电机速度设置指令执行失败", motorXSpeedSetResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return true; + + Object motorXSpeedSetStatus = motorXSpeedSetResult.getObj("result"); + if (motorXSpeedSetStatus instanceof Boolean) { + if (!(Boolean) motorXSpeedSetStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "x轴电机速度设置指令执行失败", motorXSpeedSetResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return true; + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "x轴电机速度设置指令反馈", motorXSpeedSetResult), MediaType.APPLICATION_JSON); @@ -232,11 +235,13 @@ public class MatrixSprayChangeParam implements CommandHandler { return true; } - Boolean syringePumpVolumeSetStatus = syringePumpVolumeSetResult.getBool("result"); - if (!syringePumpVolumeSetStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "注射泵流速设置指令执行失败", syringePumpVolumeSetResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return true; + Object syringePumpVolumeSetStatus = syringePumpVolumeSetResult.getObj("result"); + if (syringePumpVolumeSetStatus instanceof Boolean) { + if (!(Boolean) syringePumpVolumeSetStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "注射泵流速设置指令执行失败", syringePumpVolumeSetResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return true; + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "注射泵流速设置指令反馈", syringePumpVolumeSetResult), MediaType.APPLICATION_JSON); @@ -268,12 +273,15 @@ public class MatrixSprayChangeParam implements CommandHandler { return; } - Boolean highVoltageCloseStatus = highVoltageCloseResult.getBool("result"); - if (!highVoltageCloseStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭高压指令执行失败", highVoltageCloseResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return; + Object highVoltageCloseStatus = highVoltageCloseResult.getObj("result"); + if (highVoltageCloseStatus instanceof Boolean) { + if (!(Boolean) highVoltageCloseStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭高压指令执行失败", highVoltageCloseResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } } + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "关闭高压指令反馈", highVoltageCloseResult), MediaType.APPLICATION_JSON); } @@ -339,12 +347,15 @@ public class MatrixSprayChangeParam implements CommandHandler { return true; } - Boolean motorZPositionSetDownCmdToDeviceResultStatus = motorZPositionSetDownCmdToDeviceResult.getBool("result"); - if (!motorZPositionSetDownCmdToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "移动z轴到指定位指令执行失败", motorZPositionSetDownCmdToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return true; + Object motorZPositionSetDownCmdToDeviceResultStatus = motorZPositionSetDownCmdToDeviceResult.getObj("result"); + if (motorZPositionSetDownCmdToDeviceResultStatus instanceof Boolean) { + if (!(Boolean) motorZPositionSetDownCmdToDeviceResultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "移动z轴到指定位指令执行失败", motorZPositionSetDownCmdToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return true; + } } + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "移动z轴到指定位指令反馈", motorZPositionSetDownCmdToDeviceResult), MediaType.APPLICATION_JSON); return false; } @@ -370,12 +381,15 @@ public class MatrixSprayChangeParam implements CommandHandler { emitter.complete(); return true; } - Boolean highVoltageOpenStatus = highVoltageOpenResult.getBool("result"); - if (!highVoltageOpenStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "开启高压指令执行失败", highVoltageOpenResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return true; + Object highVoltageOpenStatus = highVoltageOpenResult.getObj("result"); + if (highVoltageOpenStatus instanceof Boolean) { + if (!(Boolean) highVoltageOpenStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "开启高压指令执行失败", highVoltageOpenResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return true; + } } + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "开启高压指令反馈", highVoltageOpenResult), MediaType.APPLICATION_JSON); return false; } diff --git a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayContinue.java b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayContinue.java index 2931f65..94a1039 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayContinue.java +++ b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayContinue.java @@ -215,12 +215,15 @@ public class MatrixSprayContinue implements CommandHandler { emitter.complete(); return true; } - Boolean motorXSpeedSetStatus = motorXSpeedSetResult.getBool("result"); - if (!motorXSpeedSetStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "x轴电机速度设置指令执行失败", motorXSpeedSetResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return true; + Object motorXSpeedSetStatus = motorXSpeedSetResult.getObj("result"); + if (motorXSpeedSetStatus instanceof Boolean) { + if (!(Boolean) motorXSpeedSetStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "x轴电机速度设置指令执行失败", motorXSpeedSetResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return true; + } } + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "x轴电机速度设置指令反馈", motorXSpeedSetResult), MediaType.APPLICATION_JSON); @@ -312,11 +315,13 @@ public class MatrixSprayContinue implements CommandHandler { return true; } - Boolean syringePumpVolumeSetStatus = syringePumpVolumeSetResult.getBool("result"); - if (!syringePumpVolumeSetStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "注射泵流速设置指令执行失败", syringePumpVolumeSetResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return true; + Object syringePumpVolumeSetStatus = syringePumpVolumeSetResult.getObj("result"); + if (syringePumpVolumeSetStatus instanceof Boolean) { + if (!(Boolean) syringePumpVolumeSetStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "注射泵流速设置指令执行失败", syringePumpVolumeSetResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return true; + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "注射泵流速设置指令反馈", syringePumpVolumeSetResult), MediaType.APPLICATION_JSON); @@ -348,12 +353,15 @@ public class MatrixSprayContinue implements CommandHandler { return; } - Boolean highVoltageCloseStatus = highVoltageCloseResult.getBool("result"); - if (!highVoltageCloseStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭高压指令执行失败", highVoltageCloseResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return; + Object highVoltageCloseStatus = highVoltageCloseResult.getObj("result"); + if (highVoltageCloseStatus instanceof Boolean) { + if (!(Boolean) highVoltageCloseStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭高压指令执行失败", highVoltageCloseResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } } + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "关闭高压指令反馈", highVoltageCloseResult), MediaType.APPLICATION_JSON); } @@ -419,12 +427,15 @@ public class MatrixSprayContinue implements CommandHandler { return true; } - Boolean motorZPositionSetDownCmdToDeviceResultStatus = motorZPositionSetDownCmdToDeviceResult.getBool("result"); - if (!motorZPositionSetDownCmdToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "移动z轴到指定位指令执行失败", motorZPositionSetDownCmdToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return true; + Object motorZPositionSetDownCmdToDeviceResultStatus = motorZPositionSetDownCmdToDeviceResult.getObj("result"); + if (motorZPositionSetDownCmdToDeviceResultStatus instanceof Boolean) { + if (!(Boolean) motorZPositionSetDownCmdToDeviceResultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "移动z轴到指定位指令执行失败", motorZPositionSetDownCmdToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return true; + } } + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "移动z轴到指定位指令反馈", motorZPositionSetDownCmdToDeviceResult), MediaType.APPLICATION_JSON); return false; } @@ -450,12 +461,15 @@ public class MatrixSprayContinue implements CommandHandler { emitter.complete(); return true; } - Boolean highVoltageOpenStatus = highVoltageOpenResult.getBool("result"); - if (!highVoltageOpenStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "开启高压指令执行失败", highVoltageOpenResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return true; + Object highVoltageOpenStatus = highVoltageOpenResult.getObj("result"); + if (highVoltageOpenStatus instanceof Boolean) { + if (!(Boolean) highVoltageOpenStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "开启高压指令执行失败", highVoltageOpenResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return true; + } } + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "开启高压指令反馈", highVoltageOpenResult), MediaType.APPLICATION_JSON); return false; } diff --git a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayPause.java b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayPause.java index c7f42c0..31a1212 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayPause.java +++ b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayPause.java @@ -64,12 +64,16 @@ public class MatrixSprayPause implements CommandHandler { emitter.complete(); return; } - Boolean motorXStopStatus = motorXStopResult.getBool("result"); - if (!motorXStopStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "x轴停止移动指令执行失败", motorXStopResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return; + + Object motorXStopStatus = motorXStopResult.getObj("result"); + if (motorXStopStatus instanceof Boolean) { + if (!(Boolean) motorXStopStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "x轴停止移动指令执行失败", motorXStopResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } } + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "x轴停止移动指令反馈", motorXStopResult), MediaType.APPLICATION_JSON); CMDToDevice motorYStopCMDToDevice = DeviceCommandGenerator.motor_y_stop(); //y轴停止移动 @@ -94,12 +98,16 @@ public class MatrixSprayPause implements CommandHandler { emitter.complete(); return; } - Boolean motorYStopStatus = motorYStopResult.getBool("result"); - if (!motorYStopStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "y轴停止移动指令执行失败", motorYStopResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return; + + Object motorYStopStatus = motorYStopResult.getObj("result"); + if (motorYStopStatus instanceof Boolean) { + if (!(Boolean) motorYStopStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "y轴停止移动指令执行失败", motorYStopResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } } + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "y轴停止移动指令反馈", motorYStopResult), MediaType.APPLICATION_JSON); //获取xy位置 emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "判断z轴是否在安全距离,如果不在安全距离可以不抬升z轴"), MediaType.APPLICATION_JSON); @@ -123,6 +131,14 @@ public class MatrixSprayPause implements CommandHandler { emitter.complete(); return; } + Object motorXYZPositionGetCmdToDeviceResultStatus = motorXYZPositionGetCmdToDeviceResult.getObj("result"); + if (motorXYZPositionGetCmdToDeviceResultStatus instanceof Boolean) { + if (!(Boolean) motorXYZPositionGetCmdToDeviceResultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "获得电机XYZ相对原点坐标指令执行失败", motorXYZPositionGetCmdToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } + } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "电机XYZ相对原点坐标指令反馈", motorXYZPositionGetCmdToDeviceResult), MediaType.APPLICATION_JSON); Double xAxisPosition = motorXYZPositionGetCmdToDeviceResult.getJSONObject("result").getDouble("xAxisPosition");//当前x轴相对于原点的位置 if (xAxisPosition == null || xAxisPosition < 0.0) { @@ -130,6 +146,7 @@ public class MatrixSprayPause implements CommandHandler { emitter.complete(); return; } + Double yAxisPosition = motorXYZPositionGetCmdToDeviceResult.getJSONObject("result").getDouble("yAxisPosition");//当前y轴相对于原点的位置 if (yAxisPosition == null || yAxisPosition < 0.0) { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "获得电机XYZ相对原点坐标指令执行失败", motorXYZPositionGetCmdToDeviceResult), MediaType.APPLICATION_JSON); @@ -160,12 +177,17 @@ public class MatrixSprayPause implements CommandHandler { emitter.complete(); return; } - Boolean nozzleValveCloseCMDToDeviceResultStatus = nozzleValveCloseCMDToDeviceResult.getBool("result"); - if (!nozzleValveCloseCMDToDeviceResultStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭喷嘴阀指令执行失败", nozzleValveCloseCMDToDeviceResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return; + + + Object nozzleValveCloseCMDToDeviceResultStatus = nozzleValveCloseCMDToDeviceResult.getObj("result"); + if (nozzleValveCloseCMDToDeviceResultStatus instanceof Boolean) { + if (!(Boolean) nozzleValveCloseCMDToDeviceResultStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭喷嘴阀指令执行失败", nozzleValveCloseCMDToDeviceResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return; + } } + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "关闭喷嘴阀指令反馈", nozzleValveCloseCMDToDeviceResult), MediaType.APPLICATION_JSON); emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "指令执行完毕"), MediaType.APPLICATION_JSON); emitter.complete(); diff --git a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStart.java b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStart.java index 1430473..7e9f684 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStart.java +++ b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStart.java @@ -725,11 +725,13 @@ public class MatrixSprayStart implements CommandHandler { return true; } - Boolean motorZOriginStatus = motorZOriginResult.getBool("result"); - if (!motorZOriginStatus) { - emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "z轴回原点指令执行失败", motorZOriginResult), MediaType.APPLICATION_JSON); - emitter.complete(); - return true; + Object motorZOriginStatus = motorZOriginResult.getObj("result"); + if (motorZOriginStatus instanceof Boolean) { + if (!(Boolean) motorZOriginStatus) { + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "z轴回原点指令执行失败", motorZOriginResult), MediaType.APPLICATION_JSON); + emitter.complete(); + return true; + } } emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "z轴回原点指令反馈", motorZOriginResult), MediaType.APPLICATION_JSON); diff --git a/src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFill.java b/src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFill.java index b1a6197..9259f5c 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFill.java +++ b/src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFill.java @@ -225,7 +225,7 @@ public class NozzlePipelinePreFill implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "移动z轴完毕", motorZPositionSetDownCmdToDeviceResult), MediaType.APPLICATION_JSON); //5.打开三通阀注射器管路 emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "打开三通阀注射器管路"), MediaType.APPLICATION_JSON); - CMDToDevice threeWayValveOpenSprayPipelineCMDToDevice = DeviceCommandGenerator.three_way_valve_open_spray_pipeline();//生成指令 打开三通阀注射器管路 + CMDToDevice threeWayValveOpenSprayPipelineCMDToDevice = DeviceCommandGenerator.three_way_valve_open_nozzle_pipeline();//生成指令 打开三通阀注射器管路 CommandFuture threeWayValveOpenSprayPipelineCMDToDeviceFuture = new CommandFuture(); threeWayValveOpenSprayPipelineCMDToDeviceFuture.setCmdToDevice(threeWayValveOpenSprayPipelineCMDToDevice); Integer threeWayValveOpenSprayPipelineCMDToDeviceCmdId = threeWayValveOpenSprayPipelineCMDToDevice.getCmdId(); diff --git a/src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWash.java b/src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWash.java index cca8001..d898118 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWash.java +++ b/src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWash.java @@ -225,7 +225,7 @@ public class SyringePipelineWash implements CommandHandler { emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "移动z轴完毕", motorZPositionSetDownCmdToDeviceResult), MediaType.APPLICATION_JSON); //5.打开三通阀注射器管路 emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "打开三通阀注射器管路"), MediaType.APPLICATION_JSON); - CMDToDevice threeWayValveOpenSprayPipelineCMDToDevice = DeviceCommandGenerator.three_way_valve_open_spray_pipeline();//生成指令 打开三通阀注射器管路 + CMDToDevice threeWayValveOpenSprayPipelineCMDToDevice = DeviceCommandGenerator.three_way_valve_open_nozzle_pipeline();//生成指令 打开三通阀注射器管路 CommandFuture threeWayValveOpenSprayPipelineCMDToDeviceFuture = new CommandFuture(); threeWayValveOpenSprayPipelineCMDToDeviceFuture.setCmdToDevice(threeWayValveOpenSprayPipelineCMDToDevice); Integer threeWayValveOpenSprayPipelineCMDToDeviceCmdId = threeWayValveOpenSprayPipelineCMDToDevice.getCmdId(); diff --git a/src/main/java/com/qyft/ms/device/device/DeviceInstance.java b/src/main/java/com/qyft/ms/device/device/DeviceInstance.java index e91e965..1f0735b 100644 --- a/src/main/java/com/qyft/ms/device/device/DeviceInstance.java +++ b/src/main/java/com/qyft/ms/device/device/DeviceInstance.java @@ -3,6 +3,8 @@ package com.qyft.ms.device.device; import com.qyft.ms.device.model.DeviceStatusEnum; import lombok.Data; +import java.util.concurrent.ConcurrentHashMap; + @Data public class DeviceInstance { private static DeviceInstance instance; @@ -43,6 +45,10 @@ public class DeviceInstance { private MotorY motorY; private MotorZ motorZ; + + private ConcurrentHashMap receivedCommands = new ConcurrentHashMap<>(); + + private void updateMotorPosition(MotorNameEnum motorName, Double position) { if (motorName == MotorNameEnum.X) { motorX.setPosition(position); diff --git a/src/main/java/com/qyft/ms/device/handler/DeviceMessageHandler.java b/src/main/java/com/qyft/ms/device/handler/DeviceMessageHandler.java index a1c5239..3186011 100644 --- a/src/main/java/com/qyft/ms/device/handler/DeviceMessageHandler.java +++ b/src/main/java/com/qyft/ms/device/handler/DeviceMessageHandler.java @@ -5,6 +5,7 @@ import cn.hutool.json.JSONUtil; import com.qyft.ms.app.common.command.CommandFuture; import com.qyft.ms.app.common.command.CurrentSendCmdMapInstance; import com.qyft.ms.app.service.WebSocketService; +import com.qyft.ms.device.device.DeviceInstance; import com.qyft.ms.device.model.bo.DeviceFeedback; import com.qyft.ms.device.service.DeviceStatusService; import io.netty.buffer.ByteBuf; @@ -32,12 +33,11 @@ public class DeviceMessageHandler extends ChannelInboundHandlerAdapter { public final Map> responseMap = new ConcurrentHashMap<>(); private final DeviceStatusService deviceStatusService; private final WebSocketService webSocketService; - + private static final long DUPLICATE_CHECK_INTERVAL = 300;//ms @Setter private volatile CountDownLatch latch; - private static final long DUPLICATE_CHECK_INTERVAL = 300;//ms - private static final long CLEANUP_INTERVAL = 2000; // 5 秒清理一次 - private static final ConcurrentHashMap receivedCommands = new ConcurrentHashMap<>(); + + @Override public void channelRead(ChannelHandlerContext ctx, Object msg) { @@ -50,7 +50,7 @@ public class DeviceMessageHandler extends ChannelInboundHandlerAdapter { String tag = deviceResult.get("tag").toString(); Integer cmdId = payload.getInt("cmdId"); - + Map receivedCommands = DeviceInstance.getInstance().getReceivedCommands(); long currentTime = System.currentTimeMillis(); if (receivedCommands.containsKey(payload.getInt("cmdId"))) { long lastReceivedTime = receivedCommands.get(payload.getInt("cmdId")); @@ -96,30 +96,6 @@ public class DeviceMessageHandler extends ChannelInboundHandlerAdapter { } } - @PostConstruct - public void cleanupOldCommandsPeriodically() { - while (true) { - try { - Thread.sleep(CLEANUP_INTERVAL); - cleanupOldCommands(); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - break; - } - } - } - - private static void cleanupOldCommands() { - long currentTime = System.currentTimeMillis(); - Iterator> iterator = receivedCommands.entrySet().iterator(); - while (iterator.hasNext()) { - Map.Entry entry = iterator.next(); - if (currentTime - entry.getValue() > DUPLICATE_CHECK_INTERVAL) { - iterator.remove(); - } - } - System.out.println("清理完成,当前记录数量: " + receivedCommands.size()); - } } \ No newline at end of file