From 9f14cdcbec45e1d3a6a9e816d0be3b050958a6d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Thu, 13 Mar 2025 17:40:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=AE=9A=E4=B9=89=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/common/command/DeviceCommandGenerator.java | 7 +++ .../qyft/ms/app/controller/FrontCmdController.java | 44 +--------------- .../ms/app/handler/impl/DehumidifierStart.java | 59 ++++----------------- .../qyft/ms/app/handler/impl/DehumidifierStop.java | 60 ++++++++++++++++++++++ .../app/handler/impl/MatrixSprayChangeParam.java | 9 +--- .../ms/app/handler/impl/MatrixSprayContinue.java | 9 +--- .../qyft/ms/app/handler/impl/MatrixSprayPause.java | 9 +--- .../qyft/ms/app/handler/impl/MatrixSprayStart.java | 9 +--- .../qyft/ms/app/handler/impl/MatrixSprayStop.java | 10 +--- .../com/qyft/ms/app/handler/impl/MotorXToHome.java | 6 +-- .../com/qyft/ms/app/handler/impl/MotorYToHome.java | 6 +-- .../com/qyft/ms/app/handler/impl/MotorZToHome.java | 6 +-- .../ms/app/handler/impl/NozzlePipelinePreFill.java | 5 -- .../handler/impl/NozzlePipelinePreFillStop.java | 34 ++++++++++++ .../ms/app/handler/impl/NozzlePipelineWash.java | 47 +---------------- .../com/qyft/ms/app/handler/impl/SlideTrayIn.java | 15 +++--- .../com/qyft/ms/app/handler/impl/SlideTrayOut.java | 15 ++---- .../ms/app/handler/impl/SyringePipelineWash.java | 9 +--- .../app/handler/impl/SyringePipelineWashStop.java | 24 +++++++++ 19 files changed, 163 insertions(+), 220 deletions(-) create mode 100644 src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStop.java create mode 100644 src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFillStop.java create mode 100644 src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWashStop.java diff --git a/src/main/java/com/qyft/ms/app/common/command/DeviceCommandGenerator.java b/src/main/java/com/qyft/ms/app/common/command/DeviceCommandGenerator.java index 9cb7bb0..f203df3 100644 --- a/src/main/java/com/qyft/ms/app/common/command/DeviceCommandGenerator.java +++ b/src/main/java/com/qyft/ms/app/common/command/DeviceCommandGenerator.java @@ -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 params) { diff --git a/src/main/java/com/qyft/ms/app/controller/FrontCmdController.java b/src/main/java/com/qyft/ms/app/controller/FrontCmdController.java index 98d7914..eac0980 100644 --- a/src/main/java/com/qyft/ms/app/controller/FrontCmdController.java +++ b/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(); diff --git a/src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStart.java b/src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStart.java index 2734375..01d476d 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStart.java +++ b/src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStart.java @@ -37,25 +37,15 @@ public class DehumidifierStart implements CommandHandler { String frontCmdId = cmdForm.getCmdId(); String frontCmdName = cmdForm.getCmdName(); Map 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(); } diff --git a/src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStop.java b/src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStop.java new file mode 100644 index 0000000..047d294 --- /dev/null +++ b/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(); + } +} diff --git a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayChangeParam.java b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayChangeParam.java index 80aed05..d268da7 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayChangeParam.java +++ b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayChangeParam.java @@ -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 diff --git a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayContinue.java b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayContinue.java index b0c92cb..f59821d 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayContinue.java +++ b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayContinue.java @@ -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 diff --git a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayPause.java b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayPause.java index 5180718..50eba11 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayPause.java +++ b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayPause.java @@ -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 diff --git a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStart.java b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStart.java index 97a08dd..17ed682 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStart.java +++ b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStart.java @@ -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 diff --git a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStop.java b/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStop.java index 547e975..60aa127 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStop.java +++ b/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 diff --git a/src/main/java/com/qyft/ms/app/handler/impl/MotorXToHome.java b/src/main/java/com/qyft/ms/app/handler/impl/MotorXToHome.java index d3109e6..8ffaeb5 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/MotorXToHome.java +++ b/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); } } } diff --git a/src/main/java/com/qyft/ms/app/handler/impl/MotorYToHome.java b/src/main/java/com/qyft/ms/app/handler/impl/MotorYToHome.java index ccf82d4..94ae307 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/MotorYToHome.java +++ b/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); } } } diff --git a/src/main/java/com/qyft/ms/app/handler/impl/MotorZToHome.java b/src/main/java/com/qyft/ms/app/handler/impl/MotorZToHome.java index f8ffea5..dc7396f 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/MotorZToHome.java +++ b/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); } } } diff --git a/src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFill.java b/src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFill.java index ff525cb..bfe9942 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFill.java +++ b/src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFill.java @@ -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 param = cmdForm.getParam(); emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON);//向前端发送接收到指令 - - - } } diff --git a/src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFillStop.java b/src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFillStop.java new file mode 100644 index 0000000..bc47390 --- /dev/null +++ b/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 param = cmdForm.getParam(); + emitter.send(FrontCommandAck.backstageAck(frontCmdId, frontCmdName, CommandStatus.RECEIVE, "后台已收到指令"), MediaType.APPLICATION_JSON);//向前端发送接收到指令 + + + } +} diff --git a/src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelineWash.java b/src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelineWash.java index 19f37d4..b100290 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelineWash.java +++ b/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.开启三通阀到喷嘴管路 } } \ No newline at end of file diff --git a/src/main/java/com/qyft/ms/app/handler/impl/SlideTrayIn.java b/src/main/java/com/qyft/ms/app/handler/impl/SlideTrayIn.java index 5db3296..62a58dc 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/SlideTrayIn.java +++ b/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); } } } diff --git a/src/main/java/com/qyft/ms/app/handler/impl/SlideTrayOut.java b/src/main/java/com/qyft/ms/app/handler/impl/SlideTrayOut.java index 9759c8d..6156800 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/SlideTrayOut.java +++ b/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); } } } \ No newline at end of file diff --git a/src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWash.java b/src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWash.java index 8290d41..bf3ae72 100644 --- a/src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWash.java +++ b/src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWash.java @@ -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 diff --git a/src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWashStop.java b/src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWashStop.java new file mode 100644 index 0000000..552e6c2 --- /dev/null +++ b/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 { + + } +} \ No newline at end of file