Browse Source

同步代码

master
白凤吉 5 months ago
parent
commit
7c1725bcc1
  1. 6
      src/main/java/com/qyft/ms/app/common/command/DeviceCommandGenerator.java
  2. 55
      src/main/java/com/qyft/ms/app/handler/CMDResend.java
  3. 13
      src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveClose.java
  4. 12
      src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveOpen.java
  5. 11
      src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageClose.java
  6. 12
      src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageOpen.java
  7. 12
      src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlClose.java
  8. 13
      src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlOpen.java
  9. 11
      src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelClose.java
  10. 13
      src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelOpen.java
  11. 98
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXMove.java
  12. 14
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXOrigin.java
  13. 10
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXStop.java
  14. 10
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXYZPositionGet.java
  15. 55
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYMove.java
  16. 15
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYOrigin.java
  17. 10
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYStop.java
  18. 61
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZMove.java
  19. 13
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZOrigin.java
  20. 11
      src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZStop.java
  21. 11
      src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveClose.java
  22. 14
      src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveOpen.java
  23. 12
      src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveCloseAll.java
  24. 12
      src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenNuzzlePipeline.java
  25. 13
      src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenSyringePipeline.java
  26. 13
      src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveClose.java
  27. 12
      src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveOpen.java
  28. 25
      src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStart.java
  29. 13
      src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStop.java
  30. 64
      src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayChangeParam.java
  31. 64
      src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayContinue.java
  32. 52
      src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayPause.java
  33. 12
      src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStart.java
  34. 2
      src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFill.java
  35. 2
      src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWash.java
  36. 6
      src/main/java/com/qyft/ms/device/device/DeviceInstance.java
  37. 34
      src/main/java/com/qyft/ms/device/handler/DeviceMessageHandler.java

6
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<String, Object> 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);
}
/**

55
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<Integer, Long> receivedCommands = DeviceInstance.getInstance().getReceivedCommands();
long currentTime = System.currentTimeMillis();
Iterator<Map.Entry<Integer, Long>> iterator = receivedCommands.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<Integer, Long> entry = iterator.next();
if (currentTime - entry.getValue() > DUPLICATE_CHECK_INTERVAL) {
iterator.remove();
}
}
// System.out.println("清理完成,当前记录数量: " + receivedCommands.size());
}
}

13
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);

12
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);

11
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);

12
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);

12
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);

13
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<String, Object> 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);

11
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);

13
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);

98
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<String, Object> 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);

14
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();
}

10
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);

10
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);

55
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<String, Object> 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);

15
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);

10
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);

61
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<String, Object> 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);

13
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);

11
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();
}

11
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);

14
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);

12
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);

12
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);

13
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();
}

13
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();
}

12
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);

25
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);

13
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);

64
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;
}

64
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;
}

52
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();

12
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);

2
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();

2
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();

6
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<Integer, Long> receivedCommands = new ConcurrentHashMap<>();
private void updateMotorPosition(MotorNameEnum motorName, Double position) {
if (motorName == MotorNameEnum.X) {
motorX.setPosition(position);

34
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<String, CompletableFuture<DeviceFeedback>> 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<Integer, Long> 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<Integer, Long> 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<Map.Entry<Integer, Long>> iterator = receivedCommands.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<Integer, Long> entry = iterator.next();
if (currentTime - entry.getValue() > DUPLICATE_CHECK_INTERVAL) {
iterator.remove();
}
}
System.out.println("清理完成,当前记录数量: " + receivedCommands.size());
}
}
Loading…
Cancel
Save