Browse Source

增加控制三通阀

master
仁冬 5 months ago
parent
commit
9c57b5eab8
  1. 88
      src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveCloseAll.java
  2. 88
      src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenNuzzlePipeline.java
  3. 87
      src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenSyringePipeline.java

88
src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveCloseAll.java

@ -0,0 +1,88 @@
package com.qyft.ms.app.handler.debugimpl;
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 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.util.Map;
/**
* z轴回原点
*/
@Slf4j
@Component
@RequiredArgsConstructor
@Async("asyncExecutor")
@CommandMapping("three_way_valve_close_all")//业务指令注解
public class ThreeWayValveCloseAll implements CommandHandler {
private final TcpClient deviceClient;
@Override
public void handle(CMDFormV2 cmdForm, ResponseBodyEmitter emitter) throws Exception {
String frontCmdId = cmdForm.getCmdId();
String frontCmdName = cmdForm.getCmdName();
/**
* 1.向前端发送接收到指令
*/
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON);
/**
* 2.生成指令并发送指令
*/
CMDToDevice cmdToDevice = DeviceCommandGenerator.three_way_valve_close_all();//关闭喷嘴阀
CommandFuture cmdToDeviceFuture = new CommandFuture();
cmdToDeviceFuture.setCmdToDevice(cmdToDevice);
Integer nozzleValveCloseCMDToDeviceCmdId = cmdToDevice.getCmdId();
CurrentSendCmdMapInstance.getInstance().putCommand(nozzleValveCloseCMDToDeviceCmdId, cmdToDeviceFuture); // 将指令放入map
deviceClient.sendToJSON(cmdToDevice); // 发送指令给设备
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了全部关闭指令", cmdToDevice), MediaType.APPLICATION_JSON);
/**
* 3.等待
*/
cmdToDeviceFuture.waitForContinue(); // 等待设备的反馈
/**
* 4.处理结果
*/
JSONObject laser_control_open_CMDToDeviceResult = cmdToDeviceFuture.getCallbackResult(); // 拿到设备返回结果
CurrentSendCmdMapInstance.getInstance().removeCommand(nozzleValveCloseCMDToDeviceCmdId); // 从map中删除该指令
if (!cmdToDeviceFuture.isReceived()) {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "全部关闭指令响应超时", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON);
emitter.complete();
}
if (laser_control_open_CMDToDeviceResult.getJSONObject("error") != null) {
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();
}
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "全部关闭指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON);
emitter.complete();
}
}

88
src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenNuzzlePipeline.java

@ -0,0 +1,88 @@
package com.qyft.ms.app.handler.debugimpl;
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 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.util.Map;
/**
* z轴回原点
*/
@Slf4j
@Component
@RequiredArgsConstructor
@Async("asyncExecutor")
@CommandMapping("three_way_valve_open_nozzle_pipeline")//业务指令注解
public class ThreeWayValveOpenNuzzlePipeline implements CommandHandler {
private final TcpClient deviceClient;
@Override
public void handle(CMDFormV2 cmdForm, ResponseBodyEmitter emitter) throws Exception {
String frontCmdId = cmdForm.getCmdId();
String frontCmdName = cmdForm.getCmdName();
/**
* 1.向前端发送接收到指令
*/
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON);
/**
* 2.生成指令并发送指令
*/
CMDToDevice cmdToDevice = DeviceCommandGenerator.three_way_valve_open_nozzle_pipeline();
CommandFuture cmdToDeviceFuture = new CommandFuture();
cmdToDeviceFuture.setCmdToDevice(cmdToDevice);
Integer nozzleValveCloseCMDToDeviceCmdId = cmdToDevice.getCmdId();
CurrentSendCmdMapInstance.getInstance().putCommand(nozzleValveCloseCMDToDeviceCmdId, cmdToDeviceFuture); // 将指令放入map
deviceClient.sendToJSON(cmdToDevice); // 发送指令给设备
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了打开喷嘴管路指令", cmdToDevice), MediaType.APPLICATION_JSON);
/**
* 3.等待
*/
cmdToDeviceFuture.waitForContinue(); // 等待设备的反馈
/**
* 4.处理结果
*/
JSONObject laser_control_open_CMDToDeviceResult = cmdToDeviceFuture.getCallbackResult(); // 拿到设备返回结果
CurrentSendCmdMapInstance.getInstance().removeCommand(nozzleValveCloseCMDToDeviceCmdId); // 从map中删除该指令
if (!cmdToDeviceFuture.isReceived()) {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开喷嘴管路指令响应超时", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON);
emitter.complete();
}
if (laser_control_open_CMDToDeviceResult.getJSONObject("error") != null) {
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();
}
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "打开喷嘴管路指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON);
emitter.complete();
}
}

87
src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenSyringePipeline.java

@ -0,0 +1,87 @@
package com.qyft.ms.app.handler.debugimpl;
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 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.util.Map;
/**
* z轴回原点
*/
@Slf4j
@Component
@RequiredArgsConstructor
@Async("asyncExecutor")
@CommandMapping("three_way_valve_open_syringe_pipeline")//业务指令注解
public class ThreeWayValveOpenSyringePipeline implements CommandHandler {
private final TcpClient deviceClient;
@Override
public void handle(CMDFormV2 cmdForm, ResponseBodyEmitter emitter) throws Exception {
String frontCmdId = cmdForm.getCmdId();
String frontCmdName = cmdForm.getCmdName();
/**
* 1.向前端发送接收到指令
*/
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON);
/**
* 2.生成指令并发送指令
*/
CMDToDevice cmdToDevice = DeviceCommandGenerator.three_way_valve_open_syringe_pipeline();
CommandFuture cmdToDeviceFuture = new CommandFuture();
cmdToDeviceFuture.setCmdToDevice(cmdToDevice);
Integer nozzleValveCloseCMDToDeviceCmdId = cmdToDevice.getCmdId();
CurrentSendCmdMapInstance.getInstance().putCommand(nozzleValveCloseCMDToDeviceCmdId, cmdToDeviceFuture); // 将指令放入map
deviceClient.sendToJSON(cmdToDevice); // 发送指令给设备
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.SEND, "已向设备发送了打开注射器管路指令", cmdToDevice), MediaType.APPLICATION_JSON);
/**
* 3.等待
*/
cmdToDeviceFuture.waitForContinue(); // 等待设备的反馈
/**
* 4.处理结果
*/
JSONObject laser_control_open_CMDToDeviceResult = cmdToDeviceFuture.getCallbackResult(); // 拿到设备返回结果
CurrentSendCmdMapInstance.getInstance().removeCommand(nozzleValveCloseCMDToDeviceCmdId); // 从map中删除该指令
if (!cmdToDeviceFuture.isReceived()) {
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.ERROR, "打开注射器管路指令响应超时", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON);
emitter.complete();
}
if (laser_control_open_CMDToDeviceResult.getJSONObject("error") != null) {
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();
}
emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RESULT, "打开注射器管路指令反馈", laser_control_open_CMDToDeviceResult), MediaType.APPLICATION_JSON);
emitter.complete();
}
}
Loading…
Cancel
Save