Browse Source

fix:DeviceStatus交由spring管理

tags/1.0
白凤吉 5 months ago
parent
commit
21937cbb4c
  1. 3
      src/main/java/com/qyft/ms/app/core/aspect/DeviceStatusAspect.java
  2. 13
      src/main/java/com/qyft/ms/app/device/spray/SprayTaskExecutor.java
  3. 8
      src/main/java/com/qyft/ms/app/device/spray/SprayTaskPointCollector.java
  4. 22
      src/main/java/com/qyft/ms/app/device/status/DeviceStatus.java
  5. 3
      src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStart.java
  6. 3
      src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStop.java
  7. 3
      src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayPause.java
  8. 3
      src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStart.java
  9. 7
      src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStop.java
  10. 3
      src/main/java/com/qyft/ms/app/front/cmd/business/NozzlePipelinePreFill.java
  11. 5
      src/main/java/com/qyft/ms/app/front/cmd/business/NozzlePipelinePreFillStop.java
  12. 3
      src/main/java/com/qyft/ms/app/front/cmd/business/NozzlePipelineWash.java
  13. 3
      src/main/java/com/qyft/ms/app/front/cmd/business/SyringePipelineWash.java
  14. 5
      src/main/java/com/qyft/ms/app/front/cmd/business/SyringePipelineWashStop.java
  15. 3
      src/main/java/com/qyft/ms/app/service/SelfTestService.java
  16. 10
      src/main/java/com/qyft/ms/system/controller/FrontCmdController.java

3
src/main/java/com/qyft/ms/app/core/aspect/DeviceStatusAspect.java

@ -15,6 +15,7 @@ import org.springframework.stereotype.Component;
@RequiredArgsConstructor @RequiredArgsConstructor
public class DeviceStatusAspect { public class DeviceStatusAspect {
private final WebSocketService webSocketService; private final WebSocketService webSocketService;
private final DeviceStatus deviceStatus;
@Pointcut("execution(* com.qyft.ms.app.device.status.DeviceStatus.set*(..))") @Pointcut("execution(* com.qyft.ms.app.device.status.DeviceStatus.set*(..))")
public void setterMethods() { public void setterMethods() {
@ -22,6 +23,6 @@ public class DeviceStatusAspect {
@After("setterMethods()") @After("setterMethods()")
public void afterSetter(JoinPoint joinPoint) throws Throwable { public void afterSetter(JoinPoint joinPoint) throws Throwable {
webSocketService.pushMsg(WebSocketMessageType.DEVICE_STATUS_CHANGE, DeviceStatus.getInstance());
webSocketService.pushMsg(WebSocketMessageType.DEVICE_STATUS_CHANGE, deviceStatus.toJSON());
} }
} }

13
src/main/java/com/qyft/ms/app/device/spray/SprayTaskExecutor.java

@ -30,6 +30,7 @@ public class SprayTaskExecutor {
private final DeviceCommandService deviceCommandService; private final DeviceCommandService deviceCommandService;
private final SprayTaskPointCollector sprayTaskPointCollector; private final SprayTaskPointCollector sprayTaskPointCollector;
private final SysSettingsService sysSettingsService; private final SysSettingsService sysSettingsService;
private final DeviceStatus deviceStatus;
private Thread taskThread; private Thread taskThread;
@ -86,7 +87,7 @@ public class SprayTaskExecutor {
List<Point2D> sprayStepList = new ArrayList<>(); List<Point2D> sprayStepList = new ArrayList<>();
sprayTask.setSuspendable(true);//可以暂停单次喷涂范围内可以进行暂停 sprayTask.setSuspendable(true);//可以暂停单次喷涂范围内可以进行暂停
DeviceStatus.getInstance().setSuspendable(true);
deviceStatus.setSuspendable(true);
for (List<DeviceCommand> deviceCommandAgg : deviceCommandList) {//单次喷涂 for (List<DeviceCommand> deviceCommandAgg : deviceCommandList) {//单次喷涂
if (reCurrentStep < currentStep) { if (reCurrentStep < currentStep) {
break; break;
@ -113,7 +114,7 @@ public class SprayTaskExecutor {
} }
currentSprayIndex++; currentSprayIndex++;
sprayTask.setSuspendable(false);//不可暂停 sprayTask.setSuspendable(false);//不可暂停
DeviceStatus.getInstance().setSuspendable(false);
deviceStatus.setSuspendable(false);
sprayTask.getSprayedPoints().add(sprayStepList); sprayTask.getSprayedPoints().add(sprayStepList);
DeviceCommand nozzleValveCloseCommand = DeviceCommandGenerator.nozzleValveClose();//关闭喷嘴阀 DeviceCommand nozzleValveCloseCommand = DeviceCommandGenerator.nozzleValveClose();//关闭喷嘴阀
@ -135,7 +136,7 @@ public class SprayTaskExecutor {
CommandFuture motorYPositionSetCommandFuture = deviceCommandService.sendCommand(motorYPositionSetCommand); CommandFuture motorYPositionSetCommandFuture = deviceCommandService.sendCommand(motorYPositionSetCommand);
CommandFuture motorZPositionSetCommandFuture = deviceCommandService.sendCommand(motorZPositionSetCommand); CommandFuture motorZPositionSetCommandFuture = deviceCommandService.sendCommand(motorZPositionSetCommand);
commandWait(motorXPositionSetCommandFuture, motorYPositionSetCommandFuture, motorZPositionSetCommandFuture); commandWait(motorXPositionSetCommandFuture, motorYPositionSetCommandFuture, motorZPositionSetCommandFuture);
webSocketService.pushMsg(WebSocketMessageType.SPRAY_TASK, "喷涂任务执行完毕");
} catch (InterruptedException e) { } catch (InterruptedException e) {
webSocketService.pushMsg(WebSocketMessageType.SPRAY_TASK, "喷涂任务线程停止"); webSocketService.pushMsg(WebSocketMessageType.SPRAY_TASK, "喷涂任务线程停止");
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
@ -147,9 +148,9 @@ public class SprayTaskExecutor {
synchronized (this) { synchronized (this) {
taskThread = null; taskThread = null;
SprayTask.getInstance().clear(); SprayTask.getInstance().clear();
DeviceStatus.getInstance().setSpraying(false);
DeviceStatus.getInstance().setPaused(false);
DeviceStatus.getInstance().setSuspendable(false);
deviceStatus.setSpraying(false);
deviceStatus.setPaused(false);
deviceStatus.setSuspendable(false);
} }
} }
}); });

8
src/main/java/com/qyft/ms/app/device/spray/SprayTaskPointCollector.java

@ -1,7 +1,9 @@
package com.qyft.ms.app.device.spray; package com.qyft.ms.app.device.spray;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.qyft.ms.app.common.constant.WebSocketMessageType; import com.qyft.ms.app.common.constant.WebSocketMessageType;
import com.qyft.ms.app.device.status.SprayTask;
import com.qyft.ms.app.model.bo.Point2D; import com.qyft.ms.app.model.bo.Point2D;
import com.qyft.ms.app.model.bo.SprayTaskPointCollectorPushBO; import com.qyft.ms.app.model.bo.SprayTaskPointCollectorPushBO;
import com.qyft.ms.system.common.device.command.CommandFuture; import com.qyft.ms.system.common.device.command.CommandFuture;
@ -54,6 +56,9 @@ public class SprayTaskPointCollector {
private void collectPoints() { private void collectPoints() {
try { try {
if(SprayTask.getInstance().isPaused()){
stopCollecting();
}
DeviceCommand motorXyzPositionGetCommand = DeviceCommandGenerator.motorXyzPositionGet(); //生成电机XYZ相对原点坐标指令 DeviceCommand motorXyzPositionGetCommand = DeviceCommandGenerator.motorXyzPositionGet(); //生成电机XYZ相对原点坐标指令
CommandFuture motorXyzPositionGetCommandFuture = deviceCommandService.sendCommand(motorXyzPositionGetCommand); CommandFuture motorXyzPositionGetCommandFuture = deviceCommandService.sendCommand(motorXyzPositionGetCommand);
JSONObject motorXyzPositionGetCommandResult = motorXyzPositionGetCommandFuture.getResponseResult(); JSONObject motorXyzPositionGetCommandResult = motorXyzPositionGetCommandFuture.getResponseResult();
@ -61,9 +66,10 @@ public class SprayTaskPointCollector {
Double yAxisPosition = motorXyzPositionGetCommandResult.getDouble("yAxisPosition"); Double yAxisPosition = motorXyzPositionGetCommandResult.getDouble("yAxisPosition");
Point2D point2D = new Point2D(xAxisPosition, yAxisPosition); Point2D point2D = new Point2D(xAxisPosition, yAxisPosition);
SprayTaskPointCollectorPushBO sprayTaskPointCollectorPushBO = new SprayTaskPointCollectorPushBO(currentSprayIndex, point2D); SprayTaskPointCollectorPushBO sprayTaskPointCollectorPushBO = new SprayTaskPointCollectorPushBO(currentSprayIndex, point2D);
log.info("喷涂点位采集,采集到点位:{}", JSONUtil.toJsonStr(sprayTaskPointCollectorPushBO));
webSocketService.pushMsg(WebSocketMessageType.SPRAY_POINT, sprayTaskPointCollectorPushBO); webSocketService.pushMsg(WebSocketMessageType.SPRAY_POINT, sprayTaskPointCollectorPushBO);
} catch (Exception e) { } catch (Exception e) {
log.error("喷涂任务点位采集错误", e);
log.error("喷涂点位采集发生错误", e);
} }
} }
} }

22
src/main/java/com/qyft/ms/app/device/status/DeviceStatus.java

@ -1,16 +1,16 @@
package com.qyft.ms.app.device.status; package com.qyft.ms.app.device.status;
import cn.hutool.json.JSONObject;
import lombok.Data; import lombok.Data;
import org.springframework.stereotype.Component;
/** /**
* 设备运行状态 * 设备运行状态
*/ */
@Data @Data
@Component
public class DeviceStatus { public class DeviceStatus {
private DeviceStatus() {
}
/** /**
* 设备是否正在进行的喷涂任务 * 设备是否正在进行的喷涂任务
*/ */
@ -51,11 +51,17 @@ public class DeviceStatus {
*/ */
private volatile boolean selfTestCompleted = false; private volatile boolean selfTestCompleted = false;
private static class Holder {
private static final DeviceStatus INSTANCE = new DeviceStatus();
public JSONObject toJSON() {
JSONObject json = new JSONObject();
json.putOnce("spraying", spraying);
json.putOnce("paused", paused);
json.putOnce("suspendable", suspendable);
json.putOnce("cleaningSyringePipeline", cleaningSyringePipeline);
json.putOnce("cleaningNozzlePipeline", cleaningNozzlePipeline);
json.putOnce("prefilling", prefilling);
json.putOnce("dehumidifierRunning", dehumidifierRunning);
json.putOnce("selfTestCompleted", selfTestCompleted);
return json;
} }
public static DeviceStatus getInstance() {
return DeviceStatus.Holder.INSTANCE;
}
} }

3
src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStart.java

@ -29,6 +29,7 @@ import java.util.concurrent.CompletableFuture;
public class DehumidifierStart extends BaseCommandHandler { public class DehumidifierStart extends BaseCommandHandler {
private final DeviceCommandService deviceCommandService; private final DeviceCommandService deviceCommandService;
private final DeviceStatus deviceStatus;
@Override @Override
public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) { public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) {
@ -60,7 +61,7 @@ public class DehumidifierStart extends BaseCommandHandler {
CommandFuture dehumidifierValveOpenCmdFuture = deviceCommandService.sendCommand(dehumidifierValveOpenCmd, form, emitter); CommandFuture dehumidifierValveOpenCmdFuture = deviceCommandService.sendCommand(dehumidifierValveOpenCmd, form, emitter);
commandWait(dehumidifierValveOpenCmdFuture); commandWait(dehumidifierValveOpenCmdFuture);
DeviceStatus.getInstance().setDehumidifierRunning(true);
deviceStatus.setDehumidifierRunning(true);
}); });
} }
} }

3
src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStop.java

@ -26,6 +26,7 @@ import java.util.concurrent.CompletableFuture;
public class DehumidifierStop extends BaseCommandHandler { public class DehumidifierStop extends BaseCommandHandler {
private final DeviceCommandService deviceCommandService; private final DeviceCommandService deviceCommandService;
private final DeviceStatus deviceStatus;
@Override @Override
public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) { public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) {
@ -34,7 +35,7 @@ public class DehumidifierStop extends BaseCommandHandler {
CommandFuture dehumidifierStopCommandFuture = deviceCommandService.sendCommand(dehumidifierStopCommand, form, emitter); CommandFuture dehumidifierStopCommandFuture = deviceCommandService.sendCommand(dehumidifierStopCommand, form, emitter);
commandWait(dehumidifierStopCommandFuture); commandWait(dehumidifierStopCommandFuture);
DeviceStatus.getInstance().setDehumidifierRunning(false);
deviceStatus.setDehumidifierRunning(false);
}); });
} }
} }

3
src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayPause.java

@ -32,6 +32,7 @@ public class MatrixSprayPause extends BaseCommandHandler {
private final DeviceCommandService deviceCommandService; private final DeviceCommandService deviceCommandService;
private final SprayTaskExecutor sprayTaskExecutor; private final SprayTaskExecutor sprayTaskExecutor;
private final DeviceStatus deviceStatus;
@Override @Override
public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) { public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) {
@ -57,7 +58,7 @@ public class MatrixSprayPause extends BaseCommandHandler {
CommandFuture motorZStopCommandFuture = deviceCommandService.sendCommand(motorZStopCommand, form, emitter); CommandFuture motorZStopCommandFuture = deviceCommandService.sendCommand(motorZStopCommand, form, emitter);
commandWait(motorXStopCommandFuture, motorYStopCommandFuture, motorZStopCommandFuture); commandWait(motorXStopCommandFuture, motorYStopCommandFuture, motorZStopCommandFuture);
sprayTask.setPaused(true); sprayTask.setPaused(true);
DeviceStatus.getInstance().setPaused(true);
deviceStatus.setPaused(true);
}else{ }else{
emitter.send(FrontCommand.backstage(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "当前喷涂任务不可暂停"), MediaType.APPLICATION_JSON); emitter.send(FrontCommand.backstage(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "当前喷涂任务不可暂停"), MediaType.APPLICATION_JSON);
} }

3
src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStart.java

@ -43,6 +43,7 @@ public class MatrixSprayStart extends BaseCommandHandler {
private final SprayTaskExecutor sprayTaskExecutor; private final SprayTaskExecutor sprayTaskExecutor;
private final PositionService positionService; private final PositionService positionService;
private final DeviceStatus deviceStatus;
private static boolean nonNullCheck(ResponseBodyEmitter emitter, String cmdId, String cmdCode, private static boolean nonNullCheck(ResponseBodyEmitter emitter, String cmdId, String cmdCode,
@ -113,7 +114,7 @@ public class MatrixSprayStart extends BaseCommandHandler {
return; return;
} else { } else {
sprayTask.setSpraying(true); sprayTask.setSpraying(true);
DeviceStatus.getInstance().setSpraying(true);
deviceStatus.setSpraying(true);
} }
// 1. 参数校验 // 1. 参数校验

7
src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStop.java

@ -29,6 +29,7 @@ public class MatrixSprayStop extends BaseCommandHandler {
private final DeviceCommandService deviceCommandService; private final DeviceCommandService deviceCommandService;
private final SprayTaskExecutor sprayTaskExecutor; private final SprayTaskExecutor sprayTaskExecutor;
private final DeviceStatus deviceStatus;
@Override @Override
public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) { public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) {
@ -61,9 +62,9 @@ public class MatrixSprayStop extends BaseCommandHandler {
commandWait(motorXPositionSetCommandFuture, motorYPositionSetCommandFuture, motorZPositionSetCommandFuture); commandWait(motorXPositionSetCommandFuture, motorYPositionSetCommandFuture, motorZPositionSetCommandFuture);
SprayTask.getInstance().clear(); SprayTask.getInstance().clear();
DeviceStatus.getInstance().setSpraying(false);
DeviceStatus.getInstance().setPaused(false);
DeviceStatus.getInstance().setSuspendable(false);
deviceStatus.setSpraying(false);
deviceStatus.setPaused(false);
deviceStatus.setSuspendable(false);
}); });
} }
} }

3
src/main/java/com/qyft/ms/app/front/cmd/business/NozzlePipelinePreFill.java

@ -37,6 +37,7 @@ public class NozzlePipelinePreFill extends BaseCommandHandler {
private final DeviceCommandService deviceCommandService; private final DeviceCommandService deviceCommandService;
private final SysSettingsService sysSettingsService; private final SysSettingsService sysSettingsService;
private final PositionService positionService; private final PositionService positionService;
private final DeviceStatus deviceStatus;
@Override @Override
public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) { public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) {
@ -84,7 +85,7 @@ public class NozzlePipelinePreFill extends BaseCommandHandler {
CommandFuture syringePumpStartCommandFuture = deviceCommandService.sendCommand(syringePumpStartCommand, form, emitter); CommandFuture syringePumpStartCommandFuture = deviceCommandService.sendCommand(syringePumpStartCommand, form, emitter);
commandWait(syringePumpStartCommandFuture); commandWait(syringePumpStartCommandFuture);
DeviceStatus.getInstance().setPrefilling(true);
deviceStatus.setPrefilling(true);
}); });
} }

5
src/main/java/com/qyft/ms/app/front/cmd/business/NozzlePipelinePreFillStop.java

@ -21,10 +21,11 @@ import java.util.concurrent.CompletableFuture;
@Slf4j @Slf4j
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
@CommandMapping("matrix_prefill")//业务指令注解
@CommandMapping("matrix_prefill_stop")//业务指令注解
public class NozzlePipelinePreFillStop extends BaseCommandHandler { public class NozzlePipelinePreFillStop extends BaseCommandHandler {
private final DeviceCommandService deviceCommandService; private final DeviceCommandService deviceCommandService;
private final DeviceStatus deviceStatus;
@Override @Override
public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) { public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) {
@ -40,7 +41,7 @@ public class NozzlePipelinePreFillStop extends BaseCommandHandler {
CommandFuture nozzleValveCloseCommandFuture = deviceCommandService.sendCommand(nozzleValveCloseCommand, form, emitter); CommandFuture nozzleValveCloseCommandFuture = deviceCommandService.sendCommand(nozzleValveCloseCommand, form, emitter);
commandWait(syringePumpStopCommandFuture, threeWayValveCloseAllCommandFuture, nozzleValveCloseCommandFuture); commandWait(syringePumpStopCommandFuture, threeWayValveCloseAllCommandFuture, nozzleValveCloseCommandFuture);
DeviceStatus.getInstance().setPrefilling(false);
deviceStatus.setPrefilling(false);
}); });
} }

3
src/main/java/com/qyft/ms/app/front/cmd/business/NozzlePipelineWash.java

@ -36,6 +36,7 @@ public class NozzlePipelineWash extends BaseCommandHandler {
private final DeviceCommandService deviceCommandService; private final DeviceCommandService deviceCommandService;
private final SysSettingsService sysSettingsService; private final SysSettingsService sysSettingsService;
private final PositionService positionService; private final PositionService positionService;
private final DeviceStatus deviceStatus;
@Override @Override
public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) { public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) {
@ -71,7 +72,7 @@ public class NozzlePipelineWash extends BaseCommandHandler {
CommandFuture threeWayValveOpenSyringePipelineCommandFuture = deviceCommandService.sendCommand(threeWayValveOpenSyringePipelineCommand, form, emitter); CommandFuture threeWayValveOpenSyringePipelineCommandFuture = deviceCommandService.sendCommand(threeWayValveOpenSyringePipelineCommand, form, emitter);
commandWait(threeWayValveOpenSyringePipelineCommandFuture); commandWait(threeWayValveOpenSyringePipelineCommandFuture);
DeviceStatus.getInstance().setCleaningNozzlePipeline(true);
deviceStatus.setCleaningNozzlePipeline(true);
}); });
} }

3
src/main/java/com/qyft/ms/app/front/cmd/business/SyringePipelineWash.java

@ -36,6 +36,7 @@ public class SyringePipelineWash extends BaseCommandHandler {
private final DeviceCommandService deviceCommandService; private final DeviceCommandService deviceCommandService;
private final SysSettingsService sysSettingsService; private final SysSettingsService sysSettingsService;
private final PositionService positionService; private final PositionService positionService;
private final DeviceStatus deviceStatus;
@Override @Override
public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) { public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) {
@ -80,7 +81,7 @@ public class SyringePipelineWash extends BaseCommandHandler {
CommandFuture syringePumpStartCommandFuture = deviceCommandService.sendCommand(syringePumpStartCommand, form, emitter); CommandFuture syringePumpStartCommandFuture = deviceCommandService.sendCommand(syringePumpStartCommand, form, emitter);
commandWait(syringePumpStartCommandFuture); commandWait(syringePumpStartCommandFuture);
DeviceStatus.getInstance().setCleaningSyringePipeline(true);
deviceStatus.setCleaningSyringePipeline(true);
}); });
} }

5
src/main/java/com/qyft/ms/app/front/cmd/business/SyringePipelineWashStop.java

@ -25,6 +25,7 @@ import java.util.concurrent.CompletableFuture;
public class SyringePipelineWashStop extends BaseCommandHandler { public class SyringePipelineWashStop extends BaseCommandHandler {
private final DeviceCommandService deviceCommandService; private final DeviceCommandService deviceCommandService;
private final DeviceStatus deviceStatus;
@Override @Override
public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) { public CompletableFuture<Void> handle(FrontCmdControlForm form, ResponseBodyEmitter emitter) {
@ -37,8 +38,8 @@ public class SyringePipelineWashStop extends BaseCommandHandler {
CommandFuture threeWayValveCloseAllCommandFuture = deviceCommandService.sendCommand(threeWayValveCloseAllCommand, form, emitter); CommandFuture threeWayValveCloseAllCommandFuture = deviceCommandService.sendCommand(threeWayValveCloseAllCommand, form, emitter);
commandWait(syringePumpStopCommandFuture, threeWayValveCloseAllCommandFuture); commandWait(syringePumpStopCommandFuture, threeWayValveCloseAllCommandFuture);
DeviceStatus.getInstance().setCleaningSyringePipeline(false);
DeviceStatus.getInstance().setCleaningNozzlePipeline(true);
deviceStatus.setCleaningSyringePipeline(false);
deviceStatus.setCleaningNozzlePipeline(true);
}); });
} }

3
src/main/java/com/qyft/ms/app/service/SelfTestService.java

@ -10,13 +10,14 @@ import org.springframework.stereotype.Service;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class SelfTestService { public class SelfTestService {
private final DeviceStatus deviceStatus;
/** /**
* 开始自检 * 开始自检
*/ */
public SelfTestVO startTest() { public SelfTestVO startTest() {
SelfTestVO selfTestBO = new SelfTestVO(); SelfTestVO selfTestBO = new SelfTestVO();
DeviceStatus.getInstance().setSelfTestCompleted(true);
deviceStatus.setSelfTestCompleted(true);
return selfTestBO; return selfTestBO;
} }
} }

10
src/main/java/com/qyft/ms/system/controller/FrontCmdController.java

@ -38,22 +38,26 @@ public class FrontCmdController {
CommandHandler commandHandler = registry.getHandler(code); CommandHandler commandHandler = registry.getHandler(code);
if (commandHandler == null) { if (commandHandler == null) {
emitter.send(FrontCommand.backstage(id, code, CommandStatus.ERROR, "未找到对应的业务指令"), MediaType.APPLICATION_JSON); emitter.send(FrontCommand.backstage(id, code, CommandStatus.ERROR, "未找到对应的业务指令"), MediaType.APPLICATION_JSON);
log.error("未找到对应的业务指令");
emitter.complete(); emitter.complete();
return emitter; return emitter;
} }
emitter.send(FrontCommand.backstage(id, code, CommandStatus.START, "业务指令开始执行"), MediaType.APPLICATION_JSON); emitter.send(FrontCommand.backstage(id, code, CommandStatus.START, "业务指令开始执行"), MediaType.APPLICATION_JSON);
log.info("业务指令开始执行");
CompletableFuture<Void> future = commandHandler.handle(form, emitter); CompletableFuture<Void> future = commandHandler.handle(form, emitter);
future.whenComplete((v, ex) -> { future.whenComplete((v, ex) -> {
try { try {
if (ex != null) { if (ex != null) {
emitter.send(FrontCommand.backstage(id, code, CommandStatus.ERROR, "业务指令处理异常", ex.getMessage()), MediaType.APPLICATION_JSON);
emitter.send(FrontCommand.backstage(id, code, CommandStatus.ERROR, "业务指令执行异常", ex.getMessage()), MediaType.APPLICATION_JSON);
log.error("执行业务指令发生异常: {}", JSONUtil.toJsonStr(form), ex); log.error("执行业务指令发生异常: {}", JSONUtil.toJsonStr(form), ex);
} }
emitter.send(FrontCommand.backstage(id, code, CommandStatus.FINISH, "业务指令处理结束"), MediaType.APPLICATION_JSON);
Thread.sleep(50);
emitter.send(FrontCommand.backstage(id, code, CommandStatus.FINISH, "业务指令执行结束"), MediaType.APPLICATION_JSON);
log.info("业务指令执行结束");
} catch (Exception e) { } catch (Exception e) {
log.error("执行业务指令发生异常: {}", JSONUtil.toJsonStr(form), e); log.error("执行业务指令发生异常: {}", JSONUtil.toJsonStr(form), e);
} finally { } finally {
log.info("业务指令 emitter complete");
emitter.complete(); emitter.complete();
} }
}); });

Loading…
Cancel
Save