You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package com.qyft.ms.service;
import cn.hutool.json.JSONUtil; import com.qyft.ms.common.constant.WebSocketMessageType; import com.qyft.ms.common.result.CMDResultCode; import com.qyft.ms.device.model.bo.DeviceCtrlFuncCMD; import com.qyft.ms.device.service.ICtrlFuncService; import com.qyft.ms.model.form.CMDForm; import com.qyft.ms.model.vo.ExecutionResult; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service;
import java.util.List; import java.util.function.Supplier;
@Slf4j @RequiredArgsConstructor @Service public class CMDService {
private final WebSocketService webSocketService; private final ICtrlFuncService ctrlFuncService; CMDForm form;
private void run(List<Supplier<Boolean>> cmdList) { ExecutionResult executionResult = new ExecutionResult(); executionResult.setCommandId(form.getCommandId()); executionResult.setCommandName(form.getCommand());
// 执行所有命令
for (Supplier<Boolean> command : cmdList) { boolean result = command.get(); if (!result) { log.error("指令执行异常: {}", JSONUtil.toJsonStr(form)); executionResult.setStatus(CMDResultCode.FAILURE.getCode()); executionResult.setMessage(CMDResultCode.FAILURE.getMsg()); webSocketService.pushMsg(WebSocketMessageType.CMD, executionResult); return; } } executionResult.setStatus(CMDResultCode.SUCCESS.getCode()); executionResult.setMessage(CMDResultCode.SUCCESS.getMsg()); webSocketService.pushMsg(WebSocketMessageType.CMD, executionResult); }
public boolean executeCommand(CMDForm cmdForm) { String commandName = cmdForm.getCommand(); List<DeviceCtrlFuncCMD> deviceCtrlFuncCMDList = ctrlFuncService.findAllStepCMD(); for (DeviceCtrlFuncCMD deviceCtrlFuncCMD : deviceCtrlFuncCMDList) { if (deviceCtrlFuncCMD.getDeviceCmd().equals(commandName)) { new Thread(() -> run(cmdForm)).start(); return true; } } return false; }
}
|