Browse Source

fix: 批量加热逻辑修改

master
guoapeng 5 months ago
parent
commit
c340d59bed
  1. 23
      src/main/java/com/qyft/gd/controller/CMDController.java
  2. 13
      src/main/java/com/qyft/gd/model/dto/StartHeatDTO.java
  3. 30
      src/main/java/com/qyft/gd/service/CMDService.java

23
src/main/java/com/qyft/gd/controller/CMDController.java

@ -2,6 +2,7 @@ package com.qyft.gd.controller;
import cn.hutool.json.JSONUtil;
import com.qyft.gd.model.dto.CmdInjectFluidDTO;
import com.qyft.gd.model.dto.StartHeatDTO;
import com.qyft.gd.model.form.CMDForm;
import com.qyft.gd.service.CMDService;
import com.qyft.gd.system.common.result.Result;
@ -48,17 +49,19 @@ public class CMDController {
@Operation(summary = "批量加热")
@PostMapping("/startHeat")
public Result<String> startHeat(@RequestBody int[] list) {
for (int i : list) {
CMDForm cmdForm = new CMDForm();
cmdForm.setCommand("startHeat");
cmdForm.setCommandId(UUID.randomUUID().toString());
Map<String, Object> params = new HashMap<>();
params.put("heatId", i);
cmdForm.setParams(params);
cmdService.executeCommand(cmdForm);
}
public Result<String> startHeat(@RequestBody StartHeatDTO dto) {
cmdService.startHeats(dto);
return Result.success("操作成功");
// for (int i : list) {
// CMDForm cmdForm = new CMDForm();
// cmdForm.setCommand("startHeat");
// cmdForm.setCommandId(UUID.randomUUID().toString());
// Map<String, Object> params = new HashMap<>();
// params.put("heatId", i);
// cmdForm.setParams(params);
// cmdService.executeCommand(cmdForm);
// }
// return Result.success("操作成功");
}
@Operation(summary = "批量加液")

13
src/main/java/com/qyft/gd/model/dto/StartHeatDTO.java

@ -0,0 +1,13 @@
package com.qyft.gd.model.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class StartHeatDTO {
@Schema(description = "指令id")
private String commandId;
@Schema(description = "加液数据list")
private Integer[] heatIds;
}

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

@ -7,6 +7,7 @@ import com.qyft.gd.common.result.CMDResultCode;
import com.qyft.gd.device.service.DeviceService;
import com.qyft.gd.model.dto.CmdInjectFluidDTO;
import com.qyft.gd.model.dto.InjectFluid;
import com.qyft.gd.model.dto.StartHeatDTO;
import com.qyft.gd.model.entity.TaskSteps;
import com.qyft.gd.model.entity.Tasks;
import com.qyft.gd.model.form.CMDForm;
@ -274,6 +275,34 @@ public class CMDService {
return cmdList;
}
// 批量加热
public void startHeats(StartHeatDTO dto) {
List<Supplier<Boolean>> cmdList = new ArrayList<>();
for (Integer i : dto.getHeatIds()) {
Map<String, Object> map = new HashMap<>();
map.put("heatId", i);
cmdList.addAll(startHeat(map));
}
new Thread(() -> {
ExecutionResult executionResult = new ExecutionResult();
executionResult.setCommandId(dto.getCommandId());
// 执行所有命令
for (Supplier<Boolean> command : cmdList) {
boolean result = command.get();
if (!result) {
log.error("指令执行异常: {}", JSONUtil.toJsonStr(dto));
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);
}).start();
}
// 开始加热
public List<Supplier<Boolean>> startHeat(Map<String, Object> params) {
List<Supplier<Boolean>> cmdList = new ArrayList<>();
@ -484,4 +513,5 @@ public class CMDService {
}
}
Loading…
Cancel
Save