Browse Source

Merge remote-tracking branch 'origin/master'

master
白凤吉 6 months ago
parent
commit
2f0b3d7bf6
  1. 2
      src/main/java/com/qyft/gd/common/result/CMDResultCode.java
  2. 2
      src/main/java/com/qyft/gd/config/WebSocketServer.java
  3. 36
      src/main/java/com/qyft/gd/controller/directive/DirectiveController.java
  4. 16
      src/main/java/com/qyft/gd/model/dto/directive/DirectiveDto.java
  5. 2
      src/main/java/com/qyft/gd/model/vo/ExecutionResult.java
  6. 15
      src/main/java/com/qyft/gd/model/vo/WebsocketResult.java
  7. 152
      src/main/java/com/qyft/gd/service/CMDService.java
  8. 9
      src/main/java/com/qyft/gd/service/DirectiveService.java
  9. 18
      src/main/java/com/qyft/gd/service/impl/DirectiveServiceImpl.java

2
src/main/java/com/qyft/gd/common/result/CMDResultCode.java

@ -10,7 +10,7 @@ import java.io.Serializable;
@NoArgsConstructor
public enum CMDResultCode implements IResultCode, Serializable {
SUCCESS("D0000", "执行完毕"),
FAILURE("D0000", "执行失败");
FAILURE("D1111", "执行失败");
@Override
public String getCode() {

2
src/main/java/com/qyft/gd/service/WebSocketServer.java → src/main/java/com/qyft/gd/config/WebSocketServer.java

@ -1,4 +1,4 @@
package com.qyft.gd.service;
package com.qyft.gd.config;
import jakarta.websocket.*;

36
src/main/java/com/qyft/gd/controller/directive/DirectiveController.java

@ -1,36 +0,0 @@
package com.qyft.gd.controller.directive;
import com.qyft.gd.model.dto.directive.DirectiveDto;
import com.qyft.gd.service.DirectiveService;
import com.qyft.gd.system.common.result.Result;
import com.qyft.gd.system.service.UserService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 指令控制器
*/
@Tag(name = "指令")
@RestController
@RequestMapping("/api/directive")
@RequiredArgsConstructor
@Slf4j
public class DirectiveController {
@Resource
private DirectiveService directiveService;
@Operation(summary = "发送指令")
@PostMapping("/sendDirective")
public Result<String> sendDirective(@RequestBody DirectiveDto dto) {
directiveService.sendDirective(dto);
return Result.success();
}
}

16
src/main/java/com/qyft/gd/model/dto/directive/DirectiveDto.java

@ -1,16 +0,0 @@
package com.qyft.gd.model.dto.directive;
import com.qyft.gd.enums.DirectiveTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(name = "指令数据")
@Data
public class DirectiveDto {
@Schema(description = "指令类型")
private DirectiveTypeEnum type;
@Schema(description = "指令配置")
private String option;
}

2
src/main/java/com/qyft/gd/model/vo/ExecutionResult.java

@ -8,6 +8,8 @@ public class ExecutionResult {
* 任务id
*/
private String commandId;
private String commandName;
/**
* 执行结果
*/

15
src/main/java/com/qyft/gd/model/vo/WebsocketResult.java

@ -0,0 +1,15 @@
package com.qyft.gd.model.vo;
import lombok.Data;
@Data
public class WebsocketResult {
/**
* 推送类型(指令 cmd,报警 warn ,状态 status)
*/
private String type;
/**
* 执行结果
*/
private ExecutionResult data;
}

152
src/main/java/com/qyft/gd/service/CMDService.java

@ -3,37 +3,155 @@ package com.qyft.gd.service;
import cn.hutool.json.JSONUtil;
import com.qyft.gd.common.constant.Commands;
import com.qyft.gd.common.result.CMDResultCode;
import com.qyft.gd.config.WebSocketServer;
import com.qyft.gd.device.service.DeviceService;
import com.qyft.gd.model.form.CMDForm;
import com.qyft.gd.model.vo.ExecutionResult;
import lombok.RequiredArgsConstructor;
import com.qyft.gd.model.vo.WebsocketResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
@Service
@RequiredArgsConstructor
public class CMDService {
DeviceService deviceService;
Map<String, Function<CMDForm, Boolean>> commandMap;
public boolean executeCommand(CMDForm cmdForm) {
switch (cmdForm.getCommand()) {
case Commands.UP_TRAY:
upTray(cmdForm);
break;
case Commands.DOWN_TRAY:
break;
default:
return false;
}
@Autowired
public CMDService(DeviceService deviceService) {
this.deviceService = deviceService;
// 初始化命令映射
this.commandMap = new HashMap<>();
commandMap.put(Commands.UP_TRAY, this::upTray);
commandMap.put(Commands.DOWN_TRAY, this::downTray);
commandMap.put(Commands.INJECT_FLUID, this::injectFluid);
commandMap.put(Commands.KEEP_HEAT, this::keepHeat);
commandMap.put(Commands.MOVE_TO_ACTION_AREA, this::moveToActionArea);
commandMap.put(Commands.CHECK_ACTION_AREA, this::checkActionArea);
commandMap.put(Commands.SHAKE_UP, this::shakeUp);
commandMap.put(Commands.START_HEAT, this::startHeat);
commandMap.put(Commands.STOP_HEAT, this::stopHeat);
commandMap.put(Commands.TAKE_PHOTO, this::takePhoto);
commandMap.put(Commands.MOVE_TO_UNUSUAL, this::moveToUnusual);
commandMap.put(Commands.MOVE_TO_HEAT_AREA, this::moveToHeatArea);
commandMap.put(Commands.TAKE_OFF_CAP, this::takeOffCap);
commandMap.put(Commands.PUT_BACK_CAP, this::putBackCap);
commandMap.put(Commands.MOVE_MACHINE_ARM, this::moveMachineArm);
commandMap.put(Commands.GET_LIQUID_AMOUNT, this::getLiquidAmount);
commandMap.put(Commands.MOVE_TUBE, this::moveTube);
}
private Boolean moveTube(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
private Boolean getLiquidAmount(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
private Boolean moveMachineArm(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
private Boolean putBackCap(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
private Boolean takeOffCap(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
private Boolean moveToHeatArea(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
private Boolean moveToUnusual(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
private Boolean takePhoto(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
private Boolean stopHeat(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
private void upTray(CMDForm cmdForm) {
private Boolean startHeat(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
private Boolean shakeUp(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
private Boolean checkActionArea(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
private Boolean moveToActionArea(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
private Boolean keepHeat(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
private Boolean injectFluid(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
private boolean downTray(CMDForm cmdForm) {
//TODO 执行指令
return false;
}
private boolean upTray(CMDForm cmdForm) {
//TODO 执行指令
return true;
}
public boolean executeCommand(CMDForm cmdForm) {
String commandName = cmdForm.getCommand();
Function<CMDForm, Boolean> command = commandMap.get(commandName);
if (command == null) {
return false;
}
WebsocketResult websocketResult = new WebsocketResult();
websocketResult.setType("cmd");
ExecutionResult executionResult = new ExecutionResult();
executionResult.setCommandId(cmdForm.getCommandId());
executionResult.setStatus(CMDResultCode.SUCCESS.getCode());
executionResult.setMessage(CMDResultCode.SUCCESS.getMsg());
WebSocketServer.sendMessageToClients(JSONUtil.toJsonStr(executionResult));
executionResult.setCommandName(cmdForm.getCommand());
boolean result =command.apply(cmdForm);
if(result) {
executionResult.setStatus(CMDResultCode.SUCCESS.getCode());
executionResult.setMessage(CMDResultCode.SUCCESS.getMsg());
}else {
executionResult.setStatus(CMDResultCode.FAILURE.getCode());
executionResult.setMessage(CMDResultCode.FAILURE.getMsg());
}
websocketResult.setData(executionResult);
// 发送消息给客户端
WebSocketServer.sendMessageToClients(JSONUtil.toJsonStr(websocketResult));
return true;
}
}

9
src/main/java/com/qyft/gd/service/DirectiveService.java

@ -1,9 +0,0 @@
package com.qyft.gd.service;
import com.qyft.gd.model.dto.directive.DirectiveDto;
public interface DirectiveService {
void sendDirective(DirectiveDto dto);
}

18
src/main/java/com/qyft/gd/service/impl/DirectiveServiceImpl.java

@ -1,18 +0,0 @@
package com.qyft.gd.service.impl;
import com.qyft.gd.model.dto.directive.DirectiveDto;
import com.qyft.gd.service.DirectiveService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
* 指令实现类
*/
@Service
@RequiredArgsConstructor
public class DirectiveServiceImpl implements DirectiveService {
@Override
public void sendDirective(DirectiveDto dto) {
// 发送指令
}
}
Loading…
Cancel
Save