Browse Source

feat:定义业务指令

master
白凤吉 5 months ago
parent
commit
9f14cdcbec
  1. 7
      src/main/java/com/qyft/ms/app/common/command/DeviceCommandGenerator.java
  2. 44
      src/main/java/com/qyft/ms/app/controller/FrontCmdController.java
  3. 59
      src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStart.java
  4. 60
      src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStop.java
  5. 9
      src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayChangeParam.java
  6. 9
      src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayContinue.java
  7. 9
      src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayPause.java
  8. 9
      src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStart.java
  9. 10
      src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStop.java
  10. 6
      src/main/java/com/qyft/ms/app/handler/impl/MotorXToHome.java
  11. 6
      src/main/java/com/qyft/ms/app/handler/impl/MotorYToHome.java
  12. 6
      src/main/java/com/qyft/ms/app/handler/impl/MotorZToHome.java
  13. 5
      src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFill.java
  14. 34
      src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFillStop.java
  15. 47
      src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelineWash.java
  16. 15
      src/main/java/com/qyft/ms/app/handler/impl/SlideTrayIn.java
  17. 15
      src/main/java/com/qyft/ms/app/handler/impl/SlideTrayOut.java
  18. 9
      src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWash.java
  19. 24
      src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWashStop.java

7
src/main/java/com/qyft/ms/app/common/command/DeviceCommandGenerator.java

@ -379,6 +379,13 @@ public class DeviceCommandGenerator {
}
/**
* 获取设备整体状态
*/
public static CMDToDevice overall_device_status_get() {
return getInfoCmd("device");
}
/**
* 控制指令
*/
public static CMDToDevice controlCmd(String device, String action, Map<String, Object> params) {

44
src/main/java/com/qyft/ms/app/controller/FrontCmdController.java

@ -2,8 +2,8 @@ package com.qyft.ms.app.controller;
import cn.hutool.json.JSONUtil;
import com.qyft.ms.app.common.command.CurrentSendCmdMapInstance;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.core.registry.CommandHandlerRegistry;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.service.DeviceTcpCMDServiceV2;
import io.swagger.v3.oas.annotations.Operation;
@ -50,48 +50,6 @@ public class FrontCmdController {
return emitter;
}
// @Operation(summary = "前端统一调用一个接口")
// @PostMapping("/control")
// public ResponseBodyEmitter controlMethod(@RequestBody CMDFormV2 cmdForm) {
// ResponseBodyEmitter emitter = new ResponseBodyEmitter();
// String frontCmdName = cmdForm.getCmdName();
//
// if ("device_status_get".equals(frontCmdName)) {
//
//
// } else if ("dehumidifier_start".equals(frontCmdName)) {
// /*
// 除湿该方法接收Double类型参数 humidity
// */
// DehumidifierStart dehumidifierStart = new DehumidifierStart();
// DehumidifierStart.handle(deviceTcpCMDServiceV2, emitter, cmdForm);
//
// } else if ("matrix_prefill".equals(frontCmdName)) {
//
// } else if ("spray_pipeline_wash".equals(frontCmdName)) {
//
// } else if ("syringe_pipeline_wash".equals(frontCmdName)) {
//
// } else if ("matrix_spray_start".equals(frontCmdName)) {
//
// } else if ("matrix_spray_change_param".equals(frontCmdName)) {
//
// } else if ("matrix_spray_stop".equals(frontCmdName)) {
//
// } else if ("matrix_spray_pause".equals(frontCmdName)) {
//
// } else if ("matrix_spray_continue".equals(frontCmdName)) {
//
// } else if ("slide_tray_in".equals(frontCmdName)) {
//
// } else if ("slide_tray_out".equals(frontCmdName)) {
//
// }
//
// return emitter;
// }
@RequestMapping("/controlTest")
public void controlMethodTest() {
CurrentSendCmdMapInstance.getInstance().getCommand(1).commandContinue();

59
src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStart.java

@ -37,25 +37,15 @@ public class DehumidifierStart implements CommandHandler {
String frontCmdId = cmdForm.getCmdId();
String frontCmdName = cmdForm.getCmdName();
Map<String, Object> param = cmdForm.getParam();
//向前端发送接收到指令
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON);
/**
* 1判断参数是否合法
*/
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON);//向前端发送接收到指令
//1.判断参数是否合法
Integer frontHumidity = (Integer) param.get("humidity");
if (frontHumidity == null) {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "参数 humidity 必填"), MediaType.APPLICATION_JSON);
emitter.complete();
return;
}
/**
* 2获取设备湿度
*/
//2.获取设备湿度
CMDToDevice humidityCmdToDevice = DeviceCommandGenerator.humidity_get();//生成指令 获取当前湿度
CommandFuture humidityGetFuture = new CommandFuture();
humidityGetFuture.setCmdToDevice(humidityCmdToDevice);
@ -63,34 +53,19 @@ public class DehumidifierStart implements CommandHandler {
CurrentSendCmdMapInstance.getInstance().putCommand(toDeviceCmdId, humidityGetFuture);//将指令放入map
deviceClient.sendToJSON(humidityCmdToDevice); //发送指令给设备
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了获取湿度指令", humidityCmdToDevice), MediaType.APPLICATION_JSON);
humidityGetFuture.waitForContinue();//等待设备的反馈
/**
* 3处理返回结果或者没有响应
*/
//3.处理返回结果或者没有响应
JSONObject deviceResult = humidityGetFuture.getCallbackResult();//拿到设备返回结果
CurrentSendCmdMapInstance.getInstance().removeCommand(toDeviceCmdId);//将指令从map中删除
if (humidityGetFuture.isReceived() || humidityGetFuture.isGetResult()) {
//设备已经收到指令并且执行成功
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "设备指令反馈", deviceResult), MediaType.APPLICATION_JSON);
Double deviceHumidity = deviceResult.getJSONObject("result").getDouble("humidity");//拿到设备返回的湿度数值
if (frontHumidity > deviceHumidity) {
//如果小于设置值提醒用户不用除湿
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "设定湿度大于当前湿度,无需除湿"), MediaType.APPLICATION_JSON);
} else {
/**
* 4如果大于设置值开始除湿;打开除湿阀门
*/
//4.如果大于设置值开始除湿;打开除湿阀门
CMDToDevice dehumidifier_valve_control = DeviceCommandGenerator.dehumidifier_valve_control("open");//生成指令 开启除湿阀
CommandFuture dehumidifier_valve_control_Future = new CommandFuture();
humidityGetFuture.setCmdToDevice(dehumidifier_valve_control);
@ -98,34 +73,18 @@ public class DehumidifierStart implements CommandHandler {
CurrentSendCmdMapInstance.getInstance().putCommand(dehumidifier_valve_control_cmdId, dehumidifier_valve_control_Future);//将指令放入map
deviceClient.sendToJSON(dehumidifier_valve_control); //发送指令给设备
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了开启除湿阀指令", dehumidifier_valve_control), MediaType.APPLICATION_JSON);
dehumidifier_valve_control_Future.waitForContinue();//等待设备的反馈
/**
* 5处理打开除湿阀门返回结果
*/
//5.处理打开除湿阀门返回结果
JSONObject dehumidifier_valve_control_result = dehumidifier_valve_control_Future.getCallbackResult();//拿到设备返回结果
CurrentSendCmdMapInstance.getInstance().removeCommand(dehumidifier_valve_control_cmdId);//将指令从map中删除
if (dehumidifier_valve_control_Future.isReceived() || dehumidifier_valve_control_Future.isGetResult()) {
//设备已经收到指令并且执行成功
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "开启除湿阀指令指令设备反馈", dehumidifier_valve_control_result), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "开启除湿阀指令指令设备反馈", dehumidifier_valve_control_result), MediaType.APPLICATION_JSON);//设备已经收到指令并且执行成功
} else {
//设备未收到指令或者执行失败
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "开启除湿阀指令没有响应", deviceResult), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "开启除湿阀指令没有响应", deviceResult), MediaType.APPLICATION_JSON); //设备未收到指令或者执行失败
}
}
} else {
//设备未收到指令或者执行失败
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "设备没有响应", deviceResult), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "设备没有响应", deviceResult), MediaType.APPLICATION_JSON);//设备未收到指令或者执行失败
}
emitter.complete();
}

60
src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStop.java

@ -0,0 +1,60 @@
package com.qyft.ms.app.handler.impl;
import cn.hutool.json.JSONObject;
import com.qyft.ms.app.common.annotation.CommandMapping;
import com.qyft.ms.app.common.command.CommandFuture;
import com.qyft.ms.app.common.command.CurrentSendCmdMapInstance;
import com.qyft.ms.app.common.command.DeviceCommandGenerator;
import com.qyft.ms.app.common.command.FrontCommandAck;
import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
/**
* 停止除湿
*/
@Component
@RequiredArgsConstructor
@Async("asyncExecutor")
@CommandMapping("dehumidifier_stop")//业务指令注解
public class DehumidifierStop implements CommandHandler {
/**
* 设备通信client
*/
private final TcpClient deviceClient;
@Override
public void handle(CMDFormV2 cmdForm, ResponseBodyEmitter emitter) throws Exception {
String frontCmdId = cmdForm.getCmdId();
String frontCmdName = cmdForm.getCmdName();
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON);//向前端发送接收到指令
CMDToDevice cmdToDevice = DeviceCommandGenerator.dehumidifier_valve_close();//生成指令 关闭除湿阀
CommandFuture cmdToDeviceFuture = new CommandFuture();
cmdToDeviceFuture.setCmdToDevice(cmdToDevice);
Integer toDeviceCmdId = cmdToDevice.getCmdId();
CurrentSendCmdMapInstance.getInstance().putCommand(toDeviceCmdId, cmdToDeviceFuture);//将指令放入map
deviceClient.sendToJSON(cmdToDevice); //发送指令给设备
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了关闭除湿阀指令", cmdToDevice), MediaType.APPLICATION_JSON);
cmdToDeviceFuture.waitForContinue();//等待设备的反馈
JSONObject deviceResult = cmdToDeviceFuture.getCallbackResult();//拿到设备返回结果
CurrentSendCmdMapInstance.getInstance().removeCommand(toDeviceCmdId);//将指令从map中删除
if (cmdToDeviceFuture.isReceived()) {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "关闭除湿阀指令设备反馈", deviceResult), MediaType.APPLICATION_JSON);
} else {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "关闭除湿阀指令有响应", deviceResult), MediaType.APPLICATION_JSON);
}
emitter.complete();
}
}

9
src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayChangeParam.java

@ -1,23 +1,16 @@
package com.qyft.ms.app.handler.impl;
import com.qyft.ms.app.common.annotation.CommandMapping;
import com.qyft.ms.app.common.command.FrontCommandAck;
import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.service.DeviceTcpCMDServiceV2;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.io.IOException;
import java.util.Map;
/**
* 喷涂过程中参数实时调整
* 喷涂_喷涂过程中参数实时调整
*/
@Slf4j
@Component

9
src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayContinue.java

@ -1,23 +1,16 @@
package com.qyft.ms.app.handler.impl;
import com.qyft.ms.app.common.annotation.CommandMapping;
import com.qyft.ms.app.common.command.FrontCommandAck;
import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.service.DeviceTcpCMDServiceV2;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.io.IOException;
import java.util.Map;
/**
* 前端继续基质喷涂
* 喷涂_基质喷涂继续
*/
@Slf4j
@Component

9
src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayPause.java

@ -1,23 +1,16 @@
package com.qyft.ms.app.handler.impl;
import com.qyft.ms.app.common.annotation.CommandMapping;
import com.qyft.ms.app.common.command.FrontCommandAck;
import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.service.DeviceTcpCMDServiceV2;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.io.IOException;
import java.util.Map;
/**
* 前端暂停基质喷涂
* 喷涂_基质喷涂暂停
*/
@Slf4j
@Component

9
src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStart.java

@ -1,23 +1,16 @@
package com.qyft.ms.app.handler.impl;
import com.qyft.ms.app.common.annotation.CommandMapping;
import com.qyft.ms.app.common.command.FrontCommandAck;
import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.service.DeviceTcpCMDServiceV2;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.io.IOException;
import java.util.Map;
/**
* 前端开始基质喷涂
* 喷涂_基质喷涂开始
*/
@Slf4j
@Component

10
src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStop.java

@ -1,23 +1,17 @@
package com.qyft.ms.app.handler.impl;
import com.qyft.ms.app.common.annotation.CommandMapping;
import com.qyft.ms.app.common.command.FrontCommandAck;
import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.service.DeviceTcpCMDServiceV2;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.io.IOException;
import java.util.Map;
/**
* 前端主动结束基质喷涂
* 喷涂_基质喷涂结束
* (还有自动结束喷涂)
*/
@Slf4j
@Component

6
src/main/java/com/qyft/ms/app/handler/impl/MotorXToHome.java

@ -42,7 +42,7 @@ public class MotorXToHome implements CommandHandler {
Integer toDeviceCmdId = motorXToHomeCmdToDevice.getCmdId();
CurrentSendCmdMapInstance.getInstance().putCommand(toDeviceCmdId, motorXToHomeCmdToDeviceFuture);//将指令放入map
deviceClient.sendToJSON(motorXToHomeCmdToDevice); //发送指令给设备
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了x轴回原点指令" , motorXToHomeCmdToDevice), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了x轴回原点指令", motorXToHomeCmdToDevice), MediaType.APPLICATION_JSON);
motorXToHomeCmdToDeviceFuture.waitForContinue();//等待设备的反馈
@ -50,9 +50,9 @@ public class MotorXToHome implements CommandHandler {
CurrentSendCmdMapInstance.getInstance().removeCommand(toDeviceCmdId);//将指令从map中删除
if (motorXToHomeCmdToDeviceFuture.isReceived()) {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "x轴回原点指令设备反馈" , deviceResult), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "x轴回原点指令设备反馈", deviceResult), MediaType.APPLICATION_JSON);
} else {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "x轴回原点指令没有响应" , deviceResult), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "x轴回原点指令没有响应", deviceResult), MediaType.APPLICATION_JSON);
}
}
}

6
src/main/java/com/qyft/ms/app/handler/impl/MotorYToHome.java

@ -42,7 +42,7 @@ public class MotorYToHome implements CommandHandler {
Integer toDeviceCmdId = motorYToHomeCmdToDevice.getCmdId();
CurrentSendCmdMapInstance.getInstance().putCommand(toDeviceCmdId, motorYToHomeCmdToDeviceFuture);//将指令放入map
deviceClient.sendToJSON(motorYToHomeCmdToDevice); //发送指令给设备
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了y轴回原点指令" , motorYToHomeCmdToDevice), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了y轴回原点指令", motorYToHomeCmdToDevice), MediaType.APPLICATION_JSON);
motorYToHomeCmdToDeviceFuture.waitForContinue();//等待设备的反馈
@ -50,9 +50,9 @@ public class MotorYToHome implements CommandHandler {
CurrentSendCmdMapInstance.getInstance().removeCommand(toDeviceCmdId);//将指令从map中删除
if (motorYToHomeCmdToDeviceFuture.isReceived()) {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "y轴回原点指令设备反馈" , deviceResult), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "y轴回原点指令设备反馈", deviceResult), MediaType.APPLICATION_JSON);
} else {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "y轴回原点指令没有响应" , deviceResult), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "y轴回原点指令没有响应", deviceResult), MediaType.APPLICATION_JSON);
}
}
}

6
src/main/java/com/qyft/ms/app/handler/impl/MotorZToHome.java

@ -42,7 +42,7 @@ public class MotorZToHome implements CommandHandler {
Integer toDeviceCmdId = motorZToHomeCmdToDevice.getCmdId();
CurrentSendCmdMapInstance.getInstance().putCommand(toDeviceCmdId, motorZToHomeCmdToDeviceFuture);//将指令放入map
deviceClient.sendToJSON(motorZToHomeCmdToDevice); //发送指令给设备
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了z轴回原点指令" , motorZToHomeCmdToDevice), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了z轴回原点指令", motorZToHomeCmdToDevice), MediaType.APPLICATION_JSON);
motorZToHomeCmdToDeviceFuture.waitForContinue();//等待设备的反馈
@ -50,9 +50,9 @@ public class MotorZToHome implements CommandHandler {
CurrentSendCmdMapInstance.getInstance().removeCommand(toDeviceCmdId);//将指令从map中删除
if (motorZToHomeCmdToDeviceFuture.isReceived()) {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "z轴回原点指令设备反馈" , deviceResult), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "z轴回原点指令设备反馈", deviceResult), MediaType.APPLICATION_JSON);
} else {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "z轴回原点指令没有响应" , deviceResult), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "z轴回原点指令没有响应", deviceResult), MediaType.APPLICATION_JSON);
}
}
}

5
src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFill.java

@ -5,14 +5,12 @@ import com.qyft.ms.app.common.command.FrontCommandAck;
import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.service.DeviceTcpCMDServiceV2;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.io.IOException;
import java.util.Map;
/**
@ -30,8 +28,5 @@ public class NozzlePipelinePreFill implements CommandHandler {
String frontCmdName = cmdForm.getCmdName();
Map<String, Object> param = cmdForm.getParam();
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON);//向前端发送接收到指令
}
}

34
src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFillStop.java

@ -0,0 +1,34 @@
package com.qyft.ms.app.handler.impl;
import com.qyft.ms.app.common.annotation.CommandMapping;
import com.qyft.ms.app.common.command.FrontCommandAck;
import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.form.CMDFormV2;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.util.Map;
/**
* 喷嘴管路_停止基质预充
*/
@Component
@RequiredArgsConstructor
@Async("asyncExecutor")
@CommandMapping("matrix_prefill")//业务指令注解
public class NozzlePipelinePreFillStop implements CommandHandler {
@Override
public void handle(CMDFormV2 cmdForm, ResponseBodyEmitter emitter) throws Exception {
String frontCmdId = cmdForm.getCmdId();
String frontCmdName = cmdForm.getCmdName();
Map<String, Object> param = cmdForm.getParam();
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON);//向前端发送接收到指令
}
}

47
src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelineWash.java

@ -1,14 +1,9 @@
package com.qyft.ms.app.handler.impl;
import cn.hutool.json.JSONObject;
import com.qyft.ms.app.common.annotation.CommandMapping;
import com.qyft.ms.app.common.command.CommandFuture;
import com.qyft.ms.app.common.command.CurrentSendCmdMapInstance;
import com.qyft.ms.app.common.command.DeviceCommandGenerator;
import com.qyft.ms.app.common.command.FrontCommandAck;
import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import lombok.RequiredArgsConstructor;
@ -18,7 +13,7 @@ import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
/**
* 清洗喷嘴管路
* 喷嘴管路_清洗喷嘴管路
*/
@Component
@RequiredArgsConstructor
@ -33,46 +28,6 @@ public class NozzlePipelineWash implements CommandHandler {
String frontCmdName = cmdForm.getCmdName();
//向前端发送接收到指令
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON);
//1.先把z回原点
CMDToDevice motorZToHomeCmdToDevice = DeviceCommandGenerator.motor_z_origin();//生成指令 回原点
CommandFuture motorXToHomeCmdToDeviceFuture = new CommandFuture();
motorXToHomeCmdToDeviceFuture.setCmdToDevice(motorZToHomeCmdToDevice);
Integer toDeviceCmdId = motorZToHomeCmdToDevice.getCmdId();
CurrentSendCmdMapInstance.getInstance().putCommand(toDeviceCmdId, motorXToHomeCmdToDeviceFuture);//将指令放入map
deviceClient.sendToJSON(motorZToHomeCmdToDevice); //发送指令给设备
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了z轴回原点指令:" , motorZToHomeCmdToDevice), MediaType.APPLICATION_JSON);
motorXToHomeCmdToDeviceFuture.waitForContinue();//等待设备的反馈
JSONObject deviceResult = motorXToHomeCmdToDeviceFuture.getCallbackResult();//拿到设备返回结果
CurrentSendCmdMapInstance.getInstance().removeCommand(toDeviceCmdId);//将指令从map中删除
if (motorXToHomeCmdToDeviceFuture.isReceived()) {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "x轴回原点指令设备反馈:" , deviceResult), MediaType.APPLICATION_JSON);
} else {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "x轴回原点指令没有响应:" , deviceResult), MediaType.APPLICATION_JSON);
}
//2.移动x到废液瓶上方
// CMDToDevice motorZToHomeCmdToDevice = DeviceCommandGenerator.motor_z_to_home();//生成指令 回原点
// CommandFuture motorXToHomeCmdToDeviceFuture = new CommandFuture();
// motorXToHomeCmdToDeviceFuture.setCmdToDevice(motorZToHomeCmdToDevice);
// Integer toDeviceCmdId = motorZToHomeCmdToDevice.getCmdId();
// CurrentSendCmdMapInstance.getInstance().putCommand(toDeviceCmdId, motorXToHomeCmdToDeviceFuture);//将指令放入map
//
// deviceClient.sendToJSON(motorZToHomeCmdToDevice); //发送指令给设备
// emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了z轴回原点指令:" + JSONUtil.toJsonStr(motorZToHomeCmdToDevice)), MediaType.APPLICATION_JSON);
//
// motorXToHomeCmdToDeviceFuture.waitForContinue();//等待设备的反馈
//
// JSONObject deviceResult = motorXToHomeCmdToDeviceFuture.getCallbackResult();//拿到设备返回结果
// CurrentSendCmdMapInstance.getInstance().removeCommand(toDeviceCmdId);//将指令从map中删除
//
// if (motorXToHomeCmdToDeviceFuture.isReceived()) {
// emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "x轴回原点指令设备反馈:" + JSONUtil.toJsonStr(deviceResult)), MediaType.APPLICATION_JSON);
// } else {
// emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "x轴回原点指令没有响应:" + JSONUtil.toJsonStr(deviceResult)), MediaType.APPLICATION_JSON);
// }
//3.开启三通阀到喷嘴管路
}
}

15
src/main/java/com/qyft/ms/app/handler/impl/SlideTrayIn.java

@ -1,7 +1,6 @@
package com.qyft.ms.app.handler.impl;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.qyft.ms.app.common.annotation.CommandMapping;
import com.qyft.ms.app.common.command.CommandFuture;
import com.qyft.ms.app.common.command.CurrentSendCmdMapInstance;
@ -18,10 +17,8 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.util.Map;
/**
* 处理前端推入托盘
* 玻片托盘_推入托盘
*/
@Component
@RequiredArgsConstructor
@ -40,14 +37,14 @@ public class SlideTrayIn implements CommandHandler {
String frontCmdName = cmdForm.getCmdName();
//向前端发送接收到指令
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON);
CMDToDevice slideTrayInCmdToDevice = DeviceCommandGenerator.slide_tray_in( 0, 2);//生成指令 推入玻片托盘
CMDToDevice slideTrayInCmdToDevice = DeviceCommandGenerator.slide_tray_in(0, 2);//生成指令 推入玻片托盘
CommandFuture slideTrayInCmdToDeviceFuture = new CommandFuture();
slideTrayInCmdToDeviceFuture.setCmdToDevice(slideTrayInCmdToDevice);
Integer toDeviceCmdId = slideTrayInCmdToDevice.getCmdId();
CurrentSendCmdMapInstance.getInstance().putCommand(toDeviceCmdId, slideTrayInCmdToDeviceFuture);//将指令放入map
deviceClient.sendToJSON(slideTrayInCmdToDevice); //发送指令给设备
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了推入玻片托盘指令:" , slideTrayInCmdToDevice), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了推入玻片托盘指令:", slideTrayInCmdToDevice), MediaType.APPLICATION_JSON);
slideTrayInCmdToDeviceFuture.waitForContinue();//等待设备的反馈
@ -55,9 +52,9 @@ public class SlideTrayIn implements CommandHandler {
CurrentSendCmdMapInstance.getInstance().removeCommand(toDeviceCmdId);//将指令从map中删除
if (slideTrayInCmdToDeviceFuture.isReceived()) {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "推入玻片托盘指令设备反馈:" , deviceResult), MediaType.APPLICATION_JSON);
}else{
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "推入玻片托盘指令没有响应:" , deviceResult), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "推入玻片托盘指令设备反馈:", deviceResult), MediaType.APPLICATION_JSON);
} else {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "推入玻片托盘指令没有响应:", deviceResult), MediaType.APPLICATION_JSON);
}
}
}

15
src/main/java/com/qyft/ms/app/handler/impl/SlideTrayOut.java

@ -1,7 +1,6 @@
package com.qyft.ms.app.handler.impl;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.qyft.ms.app.common.annotation.CommandMapping;
import com.qyft.ms.app.common.command.CommandFuture;
import com.qyft.ms.app.common.command.CurrentSendCmdMapInstance;
@ -12,18 +11,14 @@ import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.bo.CMDToDevice;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.client.TcpClient;
import com.qyft.ms.device.service.DeviceTcpCMDServiceV2;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.io.IOException;
import java.util.Map;
/**
* 处理前端推出托盘
* 玻片托盘_推出托盘
*/
@Component
@RequiredArgsConstructor
@ -49,7 +44,7 @@ public class SlideTrayOut implements CommandHandler {
Integer toDeviceCmdId = slideTrayOutCmdToDevice.getCmdId();
CurrentSendCmdMapInstance.getInstance().putCommand(toDeviceCmdId, slideTrayOutCmdToDeviceFuture);//将指令放入map
deviceClient.sendToJSON(slideTrayOutCmdToDevice); //发送指令给设备
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了推出玻片托盘指令:" , slideTrayOutCmdToDevice), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了推出玻片托盘指令:", slideTrayOutCmdToDevice), MediaType.APPLICATION_JSON);
slideTrayOutCmdToDeviceFuture.waitForContinue();//等待设备的反馈
@ -57,9 +52,9 @@ public class SlideTrayOut implements CommandHandler {
CurrentSendCmdMapInstance.getInstance().removeCommand(toDeviceCmdId);//将指令从map中删除
if (slideTrayOutCmdToDeviceFuture.isReceived()) {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "推出玻片托盘指令设备反馈:" , deviceResult), MediaType.APPLICATION_JSON);
}else{
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "推出玻片托盘指令没有响应:" , deviceResult), MediaType.APPLICATION_JSON);
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "推出玻片托盘指令设备反馈:", deviceResult), MediaType.APPLICATION_JSON);
} else {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "推出玻片托盘指令没有响应:", deviceResult), MediaType.APPLICATION_JSON);
}
}
}

9
src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWash.java

@ -1,22 +1,15 @@
package com.qyft.ms.app.handler.impl;
import com.qyft.ms.app.common.annotation.CommandMapping;
import com.qyft.ms.app.common.command.FrontCommandAck;
import com.qyft.ms.app.common.constant.CommandStatus;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.form.CMDFormV2;
import com.qyft.ms.device.service.DeviceTcpCMDServiceV2;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.io.IOException;
import java.util.Map;
/**
* 处理前端清洗注射器管路
* 注射器管路_清洗注射器管路
*/
@Component
@RequiredArgsConstructor

24
src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWashStop.java

@ -0,0 +1,24 @@
package com.qyft.ms.app.handler.impl;
import com.qyft.ms.app.common.annotation.CommandMapping;
import com.qyft.ms.app.handler.CommandHandler;
import com.qyft.ms.app.model.form.CMDFormV2;
import lombok.RequiredArgsConstructor;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
/**
* 注射器管路_停止清洗注射器管路
*/
@Component
@RequiredArgsConstructor
@Async("asyncExecutor")
@CommandMapping("syringe_pipeline_wash_stop")//业务指令注解
public class SyringePipelineWashStop implements CommandHandler {
@Override
public void handle(CMDFormV2 cmdForm, ResponseBodyEmitter emitter) throws Exception {
}
}
Loading…
Cancel
Save