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() { public synchronized void startTask() {
SprayTask sprayTask = SprayTask.getInstance(); SprayTask sprayTask = SprayTask.getInstance();
if (taskThread != null && taskThread.isAlive()) { 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; return;
} }
sprayTask.setSpraying(true); 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(); 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"); Double humidity = form.getDoubleParam("humidity");
// 参数校验humidity 必填 // 参数校验humidity 必填
if (humidity == null) { 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 必填"); throw new RuntimeException("参数 humidity 必填");
} }
return runAsync(() -> { return runAsync(() -> {
@ -53,7 +53,7 @@ public class DehumidifierStart extends BaseCommandHandler {
// 判断是否需要除湿若前端设定湿度大于当前湿度则无需开启除湿阀 // 判断是否需要除湿若前端设定湿度大于当前湿度则无需开启除湿阀
if (humidity > deviceHumidity) { 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("设定湿度大于当前湿度,无需除湿"); 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"); Double movingSpeed = form.getDoubleParam("movingSpeed");
if (highVoltageValue > 6000) { 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"); 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()) { for (Map.Entry<String, Object> entry : paramMap.entrySet()) {
if (entry.getValue() == null) { if (entry.getValue() == null) {
String errorMsg = "参数 " + entry.getKey() + " 必填"; 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); throw new RuntimeException(errorMsg);
} }
} }
@ -115,7 +115,7 @@ public class MatrixSprayStart extends BaseCommandHandler {
public CompletableFuture<Void> handle(FrontCmdControlForm form) { public CompletableFuture<Void> handle(FrontCmdControlForm form) {
SprayTask sprayTask = SprayTask.getInstance(); SprayTask sprayTask = SprayTask.getInstance();
if (sprayTask.isSpraying()) {//判断设备是否正在喷涂 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("设备正在喷涂,请先停止喷涂"); throw new RuntimeException("设备正在喷涂,请先停止喷涂");
} }
sprayTask.setCmdId(form.getCmdId()); 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); nonNullCheck(matrixPathType, form.getCmdId(), form.getCmdCode(), motorZHeight, gasPressure, volume, highVoltage, spacing, movingSpeed, times, positionList);
if (highVoltageValue > 6000) { 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"); throw new RuntimeException("电压不能大于6000V");
} }
if (positionList.isEmpty()) { 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("喷涂区域不能为空"); throw new RuntimeException("喷涂区域不能为空");
} }
// 3. 设定喷涂参数 // 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"); Double speed = form.getDoubleParam("speed");
if (speed == null) { 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 必填"); throw new RuntimeException("参数 speed 必填");
} }
if (speed > 100) { 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"); throw new RuntimeException("预充速度不能大于100");
} }
deviceStatus.setPrefilling(true); deviceStatus.setPrefilling(true);
@ -61,7 +61,7 @@ public class NozzlePipelinePreFill extends BaseCommandHandler {
JSONObject motorXyzPositionGetCommandDeviceResult = motorXyzPositionGetCommandFuture.getResponseResult(); JSONObject motorXyzPositionGetCommandDeviceResult = motorXyzPositionGetCommandFuture.getResponseResult();
Double zAxisPosition = motorXyzPositionGetCommandDeviceResult.getJSONObject("data").getDouble("zAxisPosition"); Double zAxisPosition = motorXyzPositionGetCommandDeviceResult.getJSONObject("data").getDouble("zAxisPosition");
if (zAxisPosition == null) { 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相对原点坐标失败"); throw new RuntimeException("获得电机XYZ相对原点坐标失败");
} }
SysSettings safeZHeightSysSettings = sysSettingsService.getOne(new LambdaQueryWrapper<SysSettings>().eq(SysSettings::getCode, "safe_z_height")); 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(); JSONObject motorXyzPositionGetCommandDeviceResult = motorXyzPositionGetCommandFuture.getResponseResult();
Double zAxisPosition = motorXyzPositionGetCommandDeviceResult.getJSONObject("data").getDouble("zAxisPosition"); Double zAxisPosition = motorXyzPositionGetCommandDeviceResult.getJSONObject("data").getDouble("zAxisPosition");
if (zAxisPosition == null) { 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相对原点坐标失败"); throw new RuntimeException("获得电机XYZ相对原点坐标失败");
} }
SysSettings safeZHeightSysSettings = sysSettingsService.getOne(new LambdaQueryWrapper<SysSettings>().eq(SysSettings::getCode, "safe_z_height")); 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"); Double speed = form.getDoubleParam("speed");
if (speed == null) { 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 必填"); throw new RuntimeException("参数 speed 必填");
} }
if (speed > 100) { 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"); throw new RuntimeException("预充速度不能大于100");
} }
deviceStatus.setCleaningSyringePipeline(true); deviceStatus.setCleaningSyringePipeline(true);
@ -62,7 +62,7 @@ public class SyringePipelineWash extends BaseCommandHandler {
JSONObject motorXyzPositionGetCommandDeviceResult = motorXyzPositionGetCommandFuture.getResponseResult(); JSONObject motorXyzPositionGetCommandDeviceResult = motorXyzPositionGetCommandFuture.getResponseResult();
Double zAxisPosition = motorXyzPositionGetCommandDeviceResult.getJSONObject("data").getDouble("zAxisPosition"); Double zAxisPosition = motorXyzPositionGetCommandDeviceResult.getJSONObject("data").getDouble("zAxisPosition");
if (zAxisPosition == null) { 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相对原点坐标失败"); throw new RuntimeException("获得电机XYZ相对原点坐标失败");
} }
SysSettings safeZHeightSysSettings = sysSettingsService.getOne(new LambdaQueryWrapper<SysSettings>().eq(SysSettings::getCode, "safe_z_height")); 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 RECEIVE = "receive";
/** /**
* 开始执行业务指令反馈
* 业务指令 开始执行业务指令
*/ */
public static final String START = "start"; 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 SUCCESS = "success";
/** /**
* 指令执行失败
* 业务指令 执行失败
*/ */
public static final String FAIL = "fail"; public static final String FAIL = "fail";
/** /**
* 指令执行失败
* 业务指令 喷涂完毕
*/ */
public static final String SPRAY_TASK_FINISH = "spray_task_finish"; public static final String SPRAY_TASK_FINISH = "spray_task_finish";
/** /**
* 业务指令处理完毕反馈
* 业务指令 指令处理完毕反馈
*/ */
public static final String FINISH = "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, "已收到业务指令请求,开始处理")); webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.RECEIVE, "已收到业务指令请求,开始处理"));
CommandHandler commandHandler = registry.getHandler(cmdCode); CommandHandler commandHandler = registry.getHandler(cmdCode);
if (commandHandler == null) { if (commandHandler == null) {
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.ERROR, "未找到对应的业务指令"));
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.DEVICE_ERROR, "未找到对应的业务指令"));
log.error("未找到对应的业务指令"); log.error("未找到对应的业务指令");
return Result.failed(); 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, "已收到调试指令请求,开始处理")); webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.RECEIVE, "已收到调试指令请求,开始处理"));
CommandHandler commandHandler = registry.getHandler(cmdCode); CommandHandler commandHandler = registry.getHandler(cmdCode);
if (commandHandler == null) { if (commandHandler == null) {
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.ERROR, "未找到对应的调试指令"));
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.DEVICE_ERROR, "未找到对应的调试指令"));
log.error("未找到对应的调试指令"); log.error("未找到对应的调试指令");
return Result.failed(); 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 -> { 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错误"; String message = deviceCommand.getCmdName() + "指令,设备response错误";
throw new RuntimeException(message); throw new RuntimeException(message);
} }
@ -84,7 +84,7 @@ public class DeviceCommandService {
// webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.RESULT, deviceCommand.getCmdName() + "指令,设备ack正常", result)); // webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.RESULT, deviceCommand.getCmdName() + "指令,设备ack正常", result));
// return result; // return result;
// }); // });
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.DEVICE_SEND, deviceCommand.getCmdName() + "指令,已发给设备", deviceCommand));
commandFuture.getResponseFuture().thenApply(result -> { commandFuture.getResponseFuture().thenApply(result -> {
Boolean success = result.getBool("success"); Boolean success = result.getBool("success");
if (success == null || !success) { //response失败 if (success == null || !success) { //response失败
@ -92,7 +92,7 @@ public class DeviceCommandService {
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.SEND, message, result)); webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(cmdId, cmdCode, CommandStatus.SEND, message, result));
throw new RuntimeException(message); 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"); return result.get("data");
}); });

Loading…
Cancel
Save