3 changed files with 263 additions and 0 deletions
-
88src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveCloseAll.java
-
88src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenNuzzlePipeline.java
-
87src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenSyringePipeline.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(); |
||||
|
} |
||||
|
} |
@ -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(); |
||||
|
} |
||||
|
} |
@ -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(); |
||||
|
} |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue