Browse Source

fix:喷涂记录接口调整

master
白凤吉 3 weeks ago
parent
commit
2dbe052b0c
  1. 20
      src/main/java/com/qyft/ms/app/controller/OperationLogController.java
  2. 11
      src/main/java/com/qyft/ms/app/device/spray/SprayTaskExecutor.java
  3. 6
      src/main/java/com/qyft/ms/app/device/status/SprayTask.java
  4. 7
      src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayContinue.java
  5. 7
      src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayPause.java
  6. 20
      src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStart.java
  7. 7
      src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStop.java
  8. 7
      src/main/java/com/qyft/ms/app/model/entity/OperationLog.java

20
src/main/java/com/qyft/ms/app/controller/OperationLogController.java

@ -20,11 +20,11 @@ import org.springframework.web.bind.annotation.*;
public class OperationLogController { public class OperationLogController {
private final OperationLogService op; private final OperationLogService op;
@Operation(summary = "新增日志")
@PostMapping("/add")
public Result<Integer> add(@RequestBody OperationLog operationLog) {
return Result.success(op.add(operationLog));
}
// @Operation(summary = "新增日志")
// @PostMapping("/add")
// public Result<Integer> add(@RequestBody OperationLog operationLog) {
// return Result.success(op.add(operationLog));
// }
@Operation(summary = "日志详情") @Operation(summary = "日志详情")
@GetMapping("/{id}") @GetMapping("/{id}")
@ -44,11 +44,11 @@ public class OperationLogController {
return Result.success(op.getIng()); return Result.success(op.getIng());
} }
@Operation(summary = "日志更新")
@PutMapping
public Result<Boolean> update(@RequestBody OperationLog operationLog) {
return Result.success(op.updateById(operationLog));
}
// @Operation(summary = "日志更新")
// @PutMapping
// public Result<Boolean> update(@RequestBody OperationLog operationLog) {
// return Result.success(op.updateById(operationLog));
// }
@Operation(summary = "日志删除") @Operation(summary = "日志删除")
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")

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

@ -6,8 +6,10 @@ import com.qyft.ms.app.common.generator.PathGenerator;
import com.qyft.ms.app.device.status.DeviceStatus; import com.qyft.ms.app.device.status.DeviceStatus;
import com.qyft.ms.app.device.status.SprayTask; import com.qyft.ms.app.device.status.SprayTask;
import com.qyft.ms.app.model.bo.*; import com.qyft.ms.app.model.bo.*;
import com.qyft.ms.app.model.entity.OperationLog;
import com.qyft.ms.app.model.entity.Position; import com.qyft.ms.app.model.entity.Position;
import com.qyft.ms.app.model.entity.SysSettings; import com.qyft.ms.app.model.entity.SysSettings;
import com.qyft.ms.app.service.OperationLogService;
import com.qyft.ms.app.service.PositionService; import com.qyft.ms.app.service.PositionService;
import com.qyft.ms.app.service.SysSettingsService; import com.qyft.ms.app.service.SysSettingsService;
import com.qyft.ms.system.common.constant.CommandStatus; import com.qyft.ms.system.common.constant.CommandStatus;
@ -39,6 +41,7 @@ public class SprayTaskExecutor {
private final SysSettingsService sysSettingsService; private final SysSettingsService sysSettingsService;
private final DeviceStatus deviceStatus; private final DeviceStatus deviceStatus;
private final PositionService positionService; private final PositionService positionService;
private final OperationLogService operationLogService;
private Thread taskThread; private Thread taskThread;
private Double[][] slideArr; private Double[][] slideArr;
@ -189,10 +192,14 @@ public class SprayTaskExecutor {
CommandFuture motorZOriginCommandFuture = deviceCommandService.sendCommandSprayTask(sprayTask.getCmdId(), sprayTask.getCmdCode(), motorZOriginCommand); CommandFuture motorZOriginCommandFuture = deviceCommandService.sendCommandSprayTask(sprayTask.getCmdId(), sprayTask.getCmdCode(), motorZOriginCommand);
commandWait(motorXOriginCommandFuture, motorYOriginCommandFuture, motorZOriginCommandFuture); commandWait(motorXOriginCommandFuture, motorYOriginCommandFuture, motorZOriginCommandFuture);
SprayTask.getInstance().clear();
sprayTask.clear();
deviceStatus.setSpraying(false);//是否正在进行喷涂 deviceStatus.setSpraying(false);//是否正在进行喷涂
deviceStatus.setPaused(false);//是否暂停 deviceStatus.setPaused(false);//是否暂停
OperationLog operationLog = operationLogService.getById(sprayTask.getOperationLogId());
operationLog.setStatus(1);
operationLogService.updateById(operationLog);
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SUCCESS, "喷涂任务执行成功")); webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SUCCESS, "喷涂任务执行成功"));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SPRAY_TASK_FINISH, "喷涂任务结束")); webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SPRAY_TASK_FINISH, "喷涂任务结束"));
} catch (InterruptedException e) { } catch (InterruptedException e) {
@ -201,7 +208,7 @@ public class SprayTaskExecutor {
log.info("喷涂任务失败", e); log.info("喷涂任务失败", e);
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.FAIL, "喷涂任务执行失败")); webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.FAIL, "喷涂任务执行失败"));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SPRAY_TASK_FINISH, "喷涂任务结束")); webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SPRAY_TASK_FINISH, "喷涂任务结束"));
SprayTask.getInstance().clear();
sprayTask.clear();
deviceStatus.setSpraying(false);//是否正在进行喷涂 deviceStatus.setSpraying(false);//是否正在进行喷涂
deviceStatus.setPaused(false);//是否暂停 deviceStatus.setPaused(false);//是否暂停
} finally { } finally {

6
src/main/java/com/qyft/ms/app/device/status/SprayTask.java

@ -4,7 +4,6 @@ import com.qyft.ms.app.model.bo.Point3D;
import com.qyft.ms.app.model.bo.SprayTaskParams; import com.qyft.ms.app.model.bo.SprayTaskParams;
import com.qyft.ms.app.model.bo.SprayTaskSprayed; import com.qyft.ms.app.model.bo.SprayTaskSprayed;
import com.qyft.ms.app.model.bo.SprayTimes; import com.qyft.ms.app.model.bo.SprayTimes;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.util.ArrayList; import java.util.ArrayList;
@ -22,6 +21,10 @@ public class SprayTask {
*/ */
private String cmdCode; private String cmdCode;
/** /**
* 本次喷涂记录id
*/
private Long operationLogId = null;
/**
* 当前正在执行的步骤序号 * 当前正在执行的步骤序号
*/ */
private volatile int currentStep = 0; private volatile int currentStep = 0;
@ -79,6 +82,7 @@ public class SprayTask {
sprayTimes = null; sprayTimes = null;
currentPausedPoint = null; currentPausedPoint = null;
currentIndex = null; currentIndex = null;
operationLogId = null;
sprayTaskSprayedList.clear(); sprayTaskSprayedList.clear();
} }

7
src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayContinue.java

@ -4,6 +4,8 @@ import com.qyft.ms.app.device.spray.SprayTaskExecutor;
import com.qyft.ms.app.device.status.DeviceStatus; import com.qyft.ms.app.device.status.DeviceStatus;
import com.qyft.ms.app.device.status.SprayTask; import com.qyft.ms.app.device.status.SprayTask;
import com.qyft.ms.app.model.bo.SprayTimes; import com.qyft.ms.app.model.bo.SprayTimes;
import com.qyft.ms.app.model.entity.OperationLog;
import com.qyft.ms.app.service.OperationLogService;
import com.qyft.ms.system.common.annotation.CommandMapping; import com.qyft.ms.system.common.annotation.CommandMapping;
import com.qyft.ms.system.common.device.command.CommandFuture; import com.qyft.ms.system.common.device.command.CommandFuture;
import com.qyft.ms.system.common.device.command.DeviceCommandGenerator; import com.qyft.ms.system.common.device.command.DeviceCommandGenerator;
@ -29,6 +31,7 @@ public class MatrixSprayContinue extends BaseCommandHandler {
private final DeviceCommandService deviceCommandService; private final DeviceCommandService deviceCommandService;
private final SprayTaskExecutor sprayTaskExecutor; private final SprayTaskExecutor sprayTaskExecutor;
private final DeviceStatus deviceStatus; private final DeviceStatus deviceStatus;
private final OperationLogService operationLogService;
@Override @Override
public CompletableFuture<Void> handle(FrontCmdControlForm form) { public CompletableFuture<Void> handle(FrontCmdControlForm form) {
@ -40,6 +43,10 @@ public class MatrixSprayContinue extends BaseCommandHandler {
deviceStatus.setPaused(false); deviceStatus.setPaused(false);
SprayTimes sprayTimes = sprayTask.getSprayTimes(); SprayTimes sprayTimes = sprayTask.getSprayTimes();
return runAsync(() -> { return runAsync(() -> {
OperationLog operationLog = operationLogService.getById(sprayTask.getOperationLogId());
operationLog.setStatus(0);
operationLogService.updateById(operationLog);
if (sprayTimes.getHighVoltage()) { if (sprayTimes.getHighVoltage()) {
DeviceCommand highVoltageOpenCommand = DeviceCommandGenerator.highVoltageOpen(sprayTimes.getHighVoltageValue()); //打开高压 DeviceCommand highVoltageOpenCommand = DeviceCommandGenerator.highVoltageOpen(sprayTimes.getHighVoltageValue()); //打开高压
CommandFuture highVoltageOpenCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), highVoltageOpenCommand); CommandFuture highVoltageOpenCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), highVoltageOpenCommand);

7
src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayPause.java

@ -6,6 +6,8 @@ import com.qyft.ms.app.device.spray.SprayTaskExecutor;
import com.qyft.ms.app.device.status.DeviceStatus; import com.qyft.ms.app.device.status.DeviceStatus;
import com.qyft.ms.app.device.status.SprayTask; import com.qyft.ms.app.device.status.SprayTask;
import com.qyft.ms.app.model.bo.Point3D; import com.qyft.ms.app.model.bo.Point3D;
import com.qyft.ms.app.model.entity.OperationLog;
import com.qyft.ms.app.service.OperationLogService;
import com.qyft.ms.system.common.annotation.CommandMapping; import com.qyft.ms.system.common.annotation.CommandMapping;
import com.qyft.ms.system.common.device.command.CommandFuture; import com.qyft.ms.system.common.device.command.CommandFuture;
import com.qyft.ms.system.common.device.command.DeviceCommandGenerator; import com.qyft.ms.system.common.device.command.DeviceCommandGenerator;
@ -31,6 +33,7 @@ public class MatrixSprayPause extends BaseCommandHandler {
private final DeviceCommandService deviceCommandService; private final DeviceCommandService deviceCommandService;
private final SprayTaskExecutor sprayTaskExecutor; private final SprayTaskExecutor sprayTaskExecutor;
private final DeviceStatus deviceStatus; private final DeviceStatus deviceStatus;
private final OperationLogService operationLogService;
@Override @Override
public CompletableFuture<Void> handle(FrontCmdControlForm form) { public CompletableFuture<Void> handle(FrontCmdControlForm form) {
@ -67,6 +70,10 @@ public class MatrixSprayPause extends BaseCommandHandler {
Point3D point3D = new Point3D(xAxisPosition, yAxisPosition, zAxisPosition); Point3D point3D = new Point3D(xAxisPosition, yAxisPosition, zAxisPosition);
sprayTask.setCurrentPausedPoint(point3D); sprayTask.setCurrentPausedPoint(point3D);
OperationLog operationLog = operationLogService.getById(sprayTask.getOperationLogId());
operationLog.setStatus(2);
operationLogService.updateById(operationLog);
//XYZ回原点 //XYZ回原点
DeviceCommand motorXOriginCommand = DeviceCommandGenerator.motorXOrigin(); DeviceCommand motorXOriginCommand = DeviceCommandGenerator.motorXOrigin();
DeviceCommand motorYOriginCommand = DeviceCommandGenerator.motorYOrigin(); DeviceCommand motorYOriginCommand = DeviceCommandGenerator.motorYOrigin();

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

@ -1,16 +1,11 @@
package com.qyft.ms.app.front.cmd.business; package com.qyft.ms.app.front.cmd.business;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qyft.ms.app.common.generator.PathGenerator;
import com.qyft.ms.app.device.spray.SprayTaskExecutor; import com.qyft.ms.app.device.spray.SprayTaskExecutor;
import com.qyft.ms.app.device.status.DeviceStatus; import com.qyft.ms.app.device.status.DeviceStatus;
import com.qyft.ms.app.device.status.SprayTask; import com.qyft.ms.app.device.status.SprayTask;
import com.qyft.ms.app.model.bo.SprayTaskStep;
import com.qyft.ms.app.model.entity.OperationLog; import com.qyft.ms.app.model.entity.OperationLog;
import com.qyft.ms.app.model.entity.Position;
import com.qyft.ms.app.service.OperationLogService; import com.qyft.ms.app.service.OperationLogService;
import com.qyft.ms.app.service.PositionService;
import com.qyft.ms.system.common.annotation.CommandMapping; import com.qyft.ms.system.common.annotation.CommandMapping;
import com.qyft.ms.system.common.constant.CommandStatus; import com.qyft.ms.system.common.constant.CommandStatus;
import com.qyft.ms.system.common.device.command.CommandFuture; import com.qyft.ms.system.common.device.command.CommandFuture;
@ -27,8 +22,9 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.text.DecimalFormat;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
@ -47,6 +43,7 @@ public class MatrixSprayStart extends BaseCommandHandler {
private final DeviceStatus deviceStatus; private final DeviceStatus deviceStatus;
private final WebSocketService webSocketService; private final WebSocketService webSocketService;
private final DeviceCommandService deviceCommandService; private final DeviceCommandService deviceCommandService;
private final OperationLogService operationLogService;
/** /**
* 使用单线程执行器保证线程安全防止喷涂指令被多次调用 * 使用单线程执行器保证线程安全防止喷涂指令被多次调用
@ -63,7 +60,7 @@ public class MatrixSprayStart extends BaseCommandHandler {
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "设备正在喷涂,请先停止喷涂")); webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "设备正在喷涂,请先停止喷涂"));
throw new RuntimeException("设备正在喷涂,请先停止喷涂"); throw new RuntimeException("设备正在喷涂,请先停止喷涂");
} }
if(sprayTask.getSprayTaskParams() == null){
if (sprayTask.getSprayTaskParams() == null) {
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "未设置喷涂参数")); webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "未设置喷涂参数"));
throw new RuntimeException("未设置喷涂参数"); throw new RuntimeException("未设置喷涂参数");
} }
@ -71,6 +68,13 @@ public class MatrixSprayStart extends BaseCommandHandler {
sprayTask.setCmdCode(form.getCmdCode()); sprayTask.setCmdCode(form.getCmdCode());
sprayTask.setSpraying(true);//正在进行喷涂 sprayTask.setSpraying(true);//正在进行喷涂
deviceStatus.setSpraying(true); deviceStatus.setSpraying(true);
OperationLog operationLog = new OperationLog();
operationLog.setMatrixInfo(JSONUtil.toJsonStr(sprayTask.getSprayTaskParams()));
operationLog.setStatus(0);
operationLogService.save(operationLog);
sprayTask.setOperationLogId(operationLog.getId());
return runAsync(() -> { return runAsync(() -> {
//喷涂开始前先回原点 //喷涂开始前先回原点
DeviceCommand overallDeviceStatusGetCommand = DeviceCommandGenerator.overallDeviceStatusGet(); DeviceCommand overallDeviceStatusGetCommand = DeviceCommandGenerator.overallDeviceStatusGet();

7
src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStop.java

@ -3,6 +3,8 @@ package com.qyft.ms.app.front.cmd.business;
import com.qyft.ms.app.device.spray.SprayTaskExecutor; import com.qyft.ms.app.device.spray.SprayTaskExecutor;
import com.qyft.ms.app.device.status.DeviceStatus; import com.qyft.ms.app.device.status.DeviceStatus;
import com.qyft.ms.app.device.status.SprayTask; import com.qyft.ms.app.device.status.SprayTask;
import com.qyft.ms.app.model.entity.OperationLog;
import com.qyft.ms.app.service.OperationLogService;
import com.qyft.ms.system.common.annotation.CommandMapping; import com.qyft.ms.system.common.annotation.CommandMapping;
import com.qyft.ms.system.common.constant.CommandStatus; import com.qyft.ms.system.common.constant.CommandStatus;
import com.qyft.ms.system.common.device.command.CommandFuture; import com.qyft.ms.system.common.device.command.CommandFuture;
@ -33,6 +35,7 @@ public class MatrixSprayStop extends BaseCommandHandler {
private final SprayTaskExecutor sprayTaskExecutor; private final SprayTaskExecutor sprayTaskExecutor;
private final DeviceStatus deviceStatus; private final DeviceStatus deviceStatus;
private final WebSocketService webSocketService; private final WebSocketService webSocketService;
private final OperationLogService operationLogService;
@Override @Override
public CompletableFuture<Void> handle(FrontCmdControlForm form) { public CompletableFuture<Void> handle(FrontCmdControlForm form) {
@ -65,6 +68,10 @@ public class MatrixSprayStop extends BaseCommandHandler {
CommandFuture motorZStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorZStopCommand); CommandFuture motorZStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorZStopCommand);
commandWait(motorXStopCommandFuture, motorYStopCommandFuture, motorZStopCommandFuture); commandWait(motorXStopCommandFuture, motorYStopCommandFuture, motorZStopCommandFuture);
OperationLog operationLog = operationLogService.getById(sprayTask.getOperationLogId());
operationLog.setStatus(3);
operationLogService.updateById(operationLog);
//XYZ回原点 //XYZ回原点
DeviceCommand motorXOriginCommand = DeviceCommandGenerator.motorXOrigin(); DeviceCommand motorXOriginCommand = DeviceCommandGenerator.motorXOrigin();
DeviceCommand motorYOriginCommand = DeviceCommandGenerator.motorYOrigin(); DeviceCommand motorYOriginCommand = DeviceCommandGenerator.motorYOrigin();

7
src/main/java/com/qyft/ms/app/model/entity/OperationLog.java

@ -13,18 +13,13 @@ import lombok.EqualsAndHashCode;
@Data @Data
public class OperationLog extends BaseEntity { public class OperationLog extends BaseEntity {
@NotBlank @NotBlank
@Schema(description = "所选基质")
private Long matrixId;
@NotBlank
@Schema(description = "工艺参数") @Schema(description = "工艺参数")
private String matrixInfo; private String matrixInfo;
@NotBlank @NotBlank
@Schema(description = "完成状态 0 进行中 1 已完成")
@Schema(description = "完成状态 0进行中 1已完成 2手动暂停 3手动停止")
private Integer status; private Integer status;
@Schema(description = "创建人") @Schema(description = "创建人")
private Long createUser; private Long createUser;
} }
Loading…
Cancel
Save