Browse Source

fix:commandStatus应当区分业务指令与设备指令

tags/1.0
白凤吉 4 months ago
parent
commit
eed1a95ef1
  1. 17
      src/main/java/com/qyft/ms/app/controller/SysMonitorController.java
  2. 2
      src/main/java/com/qyft/ms/app/device/spray/SprayTaskExecutor.java
  3. 2
      src/main/java/com/qyft/ms/app/front/cmd/DemoCommand.java
  4. 4
      src/main/java/com/qyft/ms/app/front/cmd/business/DehumidifierStart.java
  5. 2
      src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayChangeParam.java
  6. 8
      src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStart.java
  7. 6
      src/main/java/com/qyft/ms/app/front/cmd/business/NozzlePipelinePreFill.java
  8. 2
      src/main/java/com/qyft/ms/app/front/cmd/business/NozzlePipelineWash.java
  9. 6
      src/main/java/com/qyft/ms/app/front/cmd/business/SyringePipelineWash.java
  10. 37
      src/main/java/com/qyft/ms/system/common/constant/CommandStatus.java
  11. 2
      src/main/java/com/qyft/ms/system/controller/FrontCmdController.java
  12. 2
      src/main/java/com/qyft/ms/system/controller/FrontCmdDebugController.java
  13. 8
      src/main/java/com/qyft/ms/system/service/device/DeviceCommandService.java

17
src/main/java/com/qyft/ms/app/controller/SysMonitorController.java

@ -0,0 +1,17 @@
package com.qyft.ms.app.controller;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Tag(name = "系统监控A")
@RestController
@RequestMapping("/api/sys/monitor")
@RequiredArgsConstructor
@Slf4j
public class SysMonitorController {
}

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

@ -65,7 +65,7 @@ public class SprayTaskExecutor {
public synchronized void startTask() {
SprayTask sprayTask = SprayTask.getInstance();
if (taskThread != null && taskThread.isAlive()) {
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.ERROR, "设备正在喷涂,请先停止喷涂"));
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.DEVICE_ERROR, "设备正在喷涂,请先停止喷涂"));
return;
}
sprayTask.setSpraying(true);

2
src/main/java/com/qyft/ms/app/front/cmd/DemoCommand.java

@ -47,7 +47,7 @@ public class DemoCommand extends BaseCommandHandler {
JSONObject responseResultJson = motorXyzPositionGetCommandFuture.getResponseResult();
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "参数XXX必填"));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "参数XXX必填"));
});
}

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

@ -39,7 +39,7 @@ public class DehumidifierStart extends BaseCommandHandler {
Double humidity = form.getDoubleParam("humidity");
// 参数校验humidity 必填
if (humidity == null) {
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "参数 humidity 必填"));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "参数 humidity 必填"));
throw new RuntimeException("参数 humidity 必填");
}
return runAsync(() -> {
@ -53,7 +53,7 @@ public class DehumidifierStart extends BaseCommandHandler {
// 判断是否需要除湿若前端设定湿度大于当前湿度则无需开启除湿阀
if (humidity > deviceHumidity) {
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "设定湿度大于当前湿度,无需除湿"));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "设定湿度大于当前湿度,无需除湿"));
throw new RuntimeException("设定湿度大于当前湿度,无需除湿");
}

2
src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayChangeParam.java

@ -44,7 +44,7 @@ public class MatrixSprayChangeParam extends BaseCommandHandler {
Double movingSpeed = form.getDoubleParam("movingSpeed");
if (highVoltageValue > 6000) {
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "电压不能大于6000V"));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "电压不能大于6000V"));
throw new RuntimeException("电压不能大于6000V");
}

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

@ -79,7 +79,7 @@ public class MatrixSprayStart extends BaseCommandHandler {
for (Map.Entry<String, Object> entry : paramMap.entrySet()) {
if (entry.getValue() == null) {
String errorMsg = "参数 " + entry.getKey() + " 必填";
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.ERROR, errorMsg));
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.DEVICE_ERROR, errorMsg));
throw new RuntimeException(errorMsg);
}
}
@ -115,7 +115,7 @@ public class MatrixSprayStart extends BaseCommandHandler {
public CompletableFuture<Void> handle(FrontCmdControlForm form) {
SprayTask sprayTask = SprayTask.getInstance();
if (sprayTask.isSpraying()) {//判断设备是否正在喷涂
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "设备正在喷涂,请先停止喷涂"));
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "设备正在喷涂,请先停止喷涂"));
throw new RuntimeException("设备正在喷涂,请先停止喷涂");
}
sprayTask.setCmdId(form.getCmdId());
@ -136,11 +136,11 @@ public class MatrixSprayStart extends BaseCommandHandler {
nonNullCheck(matrixPathType, form.getCmdId(), form.getCmdCode(), motorZHeight, gasPressure, volume, highVoltage, spacing, movingSpeed, times, positionList);
if (highVoltageValue > 6000) {
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "电压不能大于6000V"));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "电压不能大于6000V"));
throw new RuntimeException("电压不能大于6000V");
}
if (positionList.isEmpty()) {
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "喷涂区域不能为空"));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "喷涂区域不能为空"));
throw new RuntimeException("喷涂区域不能为空");
}
// 3. 设定喷涂参数

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

@ -45,11 +45,11 @@ public class NozzlePipelinePreFill extends BaseCommandHandler {
}
Double speed = form.getDoubleParam("speed");
if (speed == null) {
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "参数 speed 必填"));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "参数 speed 必填"));
throw new RuntimeException("参数 speed 必填");
}
if (speed > 100) {
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "预充速度不能大于100"));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "预充速度不能大于100"));
throw new RuntimeException("预充速度不能大于100");
}
deviceStatus.setPrefilling(true);
@ -61,7 +61,7 @@ public class NozzlePipelinePreFill extends BaseCommandHandler {
JSONObject motorXyzPositionGetCommandDeviceResult = motorXyzPositionGetCommandFuture.getResponseResult();
Double zAxisPosition = motorXyzPositionGetCommandDeviceResult.getJSONObject("data").getDouble("zAxisPosition");
if (zAxisPosition == null) {
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "获得电机XYZ相对原点坐标失败"));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "获得电机XYZ相对原点坐标失败"));
throw new RuntimeException("获得电机XYZ相对原点坐标失败");
}
SysSettings safeZHeightSysSettings = sysSettingsService.getOne(new LambdaQueryWrapper<SysSettings>().eq(SysSettings::getCode, "safe_z_height"));

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

@ -53,7 +53,7 @@ public class NozzlePipelineWash extends BaseCommandHandler {
JSONObject motorXyzPositionGetCommandDeviceResult = motorXyzPositionGetCommandFuture.getResponseResult();
Double zAxisPosition = motorXyzPositionGetCommandDeviceResult.getJSONObject("data").getDouble("zAxisPosition");
if (zAxisPosition == null) {
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "获得电机XYZ相对原点坐标失败", motorXyzPositionGetCommandDeviceResult));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "获得电机XYZ相对原点坐标失败", motorXyzPositionGetCommandDeviceResult));
throw new RuntimeException("获得电机XYZ相对原点坐标失败");
}
SysSettings safeZHeightSysSettings = sysSettingsService.getOne(new LambdaQueryWrapper<SysSettings>().eq(SysSettings::getCode, "safe_z_height"));

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

@ -45,11 +45,11 @@ public class SyringePipelineWash extends BaseCommandHandler {
}
Double speed = form.getDoubleParam("speed");
if (speed == null) {
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "参数 speed 必填"));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "参数 speed 必填"));
throw new RuntimeException("参数 speed 必填");
}
if (speed > 100) {
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "清洗速度不能大于100"));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "清洗速度不能大于100"));
throw new RuntimeException("预充速度不能大于100");
}
deviceStatus.setCleaningSyringePipeline(true);
@ -62,7 +62,7 @@ public class SyringePipelineWash extends BaseCommandHandler {
JSONObject motorXyzPositionGetCommandDeviceResult = motorXyzPositionGetCommandFuture.getResponseResult();
Double zAxisPosition = motorXyzPositionGetCommandDeviceResult.getJSONObject("data").getDouble("zAxisPosition");
if (zAxisPosition == null) {
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "获得电机XYZ相对原点坐标失败", motorXyzPositionGetCommandDeviceResult));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "获得电机XYZ相对原点坐标失败", motorXyzPositionGetCommandDeviceResult));
throw new RuntimeException("获得电机XYZ相对原点坐标失败");
}
SysSettings safeZHeightSysSettings = sysSettingsService.getOne(new LambdaQueryWrapper<SysSettings>().eq(SysSettings::getCode, "safe_z_height"));

37
src/main/java/com/qyft/ms/system/common/constant/CommandStatus.java

@ -4,37 +4,44 @@ public class CommandStatus {
/**
* 普通消息反馈
*/
public static final String SEND = "SEND";
public static final String SEND = "send";
/**
* 收到业务指令反馈
* 业务指令 收到指令
*/
public static final String RECEIVE = "receive";
/**
* 开始执行业务指令反馈
* 业务指令 开始执行业务指令
*/
public static final String START = "start";
/**
* 收到设备结果反馈
*/
public static final String RESULT = "result";
/**
* 指令执行错误反馈
*/
public static final String ERROR = "error";
/**
* 指令执行成功
* 业务指令 执行成功
*/
public static final String SUCCESS = "success";
/**
* 指令执行失败
* 业务指令 执行失败
*/
public static final String FAIL = "fail";
/**
* 指令执行失败
* 业务指令 喷涂完毕
*/
public static final String SPRAY_TASK_FINISH = "spray_task_finish";
/**
* 业务指令处理完毕反馈
* 业务指令 指令处理完毕反馈
*/
public static final String FINISH = "finish";
/**
* 设备指令 发送设备指令
*/
public static final String DEVICE_SEND = "device_send";
/**
* 设备指令 收到设备指令反馈
*/
public static final String DEVICE_RESULT = "device_result";
/**
* 设备指令 收到设备指令反馈 错误
*/
public static final String DEVICE_ERROR = "device_error";
}

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

@ -45,7 +45,7 @@ public class FrontCmdController {
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.RECEIVE, "已收到业务指令请求,开始处理"));
CommandHandler commandHandler = registry.getHandler(cmdCode);
if (commandHandler == null) {
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.ERROR, "未找到对应的业务指令"));
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.DEVICE_ERROR, "未找到对应的业务指令"));
log.error("未找到对应的业务指令");
return Result.failed();
}

2
src/main/java/com/qyft/ms/system/controller/FrontCmdDebugController.java

@ -37,7 +37,7 @@ public class FrontCmdDebugController {
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.RECEIVE, "已收到调试指令请求,开始处理"));
CommandHandler commandHandler = registry.getHandler(cmdCode);
if (commandHandler == null) {
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.ERROR, "未找到对应的调试指令"));
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.DEVICE_ERROR, "未找到对应的调试指令"));
log.error("未找到对应的调试指令");
return Result.failed();
}

8
src/main/java/com/qyft/ms/system/service/device/DeviceCommandService.java

@ -60,8 +60,8 @@ public class DeviceCommandService {
// });
commandFuture.getResponseFuture().thenApply(result -> {
Boolean status = result.getBool("status");
if (!status) { //response失败
Boolean success = result.getBool("success");
if (!success) { //response失败
String message = deviceCommand.getCmdName() + "指令,设备response错误";
throw new RuntimeException(message);
}
@ -84,7 +84,7 @@ public class DeviceCommandService {
// webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.RESULT, deviceCommand.getCmdName() + "指令,设备ack正常", result));
// return result;
// });
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.DEVICE_SEND, deviceCommand.getCmdName() + "指令,已发给设备", deviceCommand));
commandFuture.getResponseFuture().thenApply(result -> {
Boolean success = result.getBool("success");
if (success == null || !success) { //response失败
@ -92,7 +92,7 @@ public class DeviceCommandService {
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.SEND, message, result));
throw new RuntimeException(message);
}
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.RESULT, deviceCommand.getCmdName() + "指令,设备response正常,耗时:" + (commandFuture.getEndSendTime() - commandFuture.getStartSendTime()), result));
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.DEVICE_RESULT, deviceCommand.getCmdName() + "指令,设备response正常,耗时:" + (commandFuture.getEndSendTime() - commandFuture.getStartSendTime()), result));
return result.get("data");
});

Loading…
Cancel
Save