From 2dbe052b0c2d56dd80f27f070c4a9c6507980128 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Tue, 15 Jul 2025 14:26:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=96=B7=E6=B6=82=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ms/app/controller/OperationLogController.java | 20 ++++++++++---------- .../qyft/ms/app/device/spray/SprayTaskExecutor.java | 11 +++++++++-- .../com/qyft/ms/app/device/status/SprayTask.java | 6 +++++- .../app/front/cmd/business/MatrixSprayContinue.java | 7 +++++++ .../ms/app/front/cmd/business/MatrixSprayPause.java | 7 +++++++ .../ms/app/front/cmd/business/MatrixSprayStart.java | 20 ++++++++++++-------- .../ms/app/front/cmd/business/MatrixSprayStop.java | 7 +++++++ .../com/qyft/ms/app/model/entity/OperationLog.java | 7 +------ 8 files changed, 58 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/qyft/ms/app/controller/OperationLogController.java b/src/main/java/com/qyft/ms/app/controller/OperationLogController.java index 334ed0b..9458d1d 100644 --- a/src/main/java/com/qyft/ms/app/controller/OperationLogController.java +++ b/src/main/java/com/qyft/ms/app/controller/OperationLogController.java @@ -20,11 +20,11 @@ import org.springframework.web.bind.annotation.*; public class OperationLogController { private final OperationLogService op; - @Operation(summary = "新增日志") - @PostMapping("/add") - public Result add(@RequestBody OperationLog operationLog) { - return Result.success(op.add(operationLog)); - } +// @Operation(summary = "新增日志") +// @PostMapping("/add") +// public Result add(@RequestBody OperationLog operationLog) { +// return Result.success(op.add(operationLog)); +// } @Operation(summary = "日志详情") @GetMapping("/{id}") @@ -44,11 +44,11 @@ public class OperationLogController { return Result.success(op.getIng()); } - @Operation(summary = "日志更新") - @PutMapping - public Result update(@RequestBody OperationLog operationLog) { - return Result.success(op.updateById(operationLog)); - } +// @Operation(summary = "日志更新") +// @PutMapping +// public Result update(@RequestBody OperationLog operationLog) { +// return Result.success(op.updateById(operationLog)); +// } @Operation(summary = "日志删除") @DeleteMapping("/{ids}") diff --git a/src/main/java/com/qyft/ms/app/device/spray/SprayTaskExecutor.java b/src/main/java/com/qyft/ms/app/device/spray/SprayTaskExecutor.java index f75fe6b..a2f43fd 100644 --- a/src/main/java/com/qyft/ms/app/device/spray/SprayTaskExecutor.java +++ b/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.SprayTask; 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.SysSettings; +import com.qyft.ms.app.service.OperationLogService; import com.qyft.ms.app.service.PositionService; import com.qyft.ms.app.service.SysSettingsService; import com.qyft.ms.system.common.constant.CommandStatus; @@ -39,6 +41,7 @@ public class SprayTaskExecutor { private final SysSettingsService sysSettingsService; private final DeviceStatus deviceStatus; private final PositionService positionService; + private final OperationLogService operationLogService; private Thread taskThread; private Double[][] slideArr; @@ -189,10 +192,14 @@ public class SprayTaskExecutor { CommandFuture motorZOriginCommandFuture = deviceCommandService.sendCommandSprayTask(sprayTask.getCmdId(), sprayTask.getCmdCode(), motorZOriginCommand); commandWait(motorXOriginCommandFuture, motorYOriginCommandFuture, motorZOriginCommandFuture); - SprayTask.getInstance().clear(); + sprayTask.clear(); deviceStatus.setSpraying(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.SPRAY_TASK_FINISH, "喷涂任务结束")); } catch (InterruptedException e) { @@ -201,7 +208,7 @@ public class SprayTaskExecutor { log.info("喷涂任务失败", e); webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.FAIL, "喷涂任务执行失败")); webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SPRAY_TASK_FINISH, "喷涂任务结束")); - SprayTask.getInstance().clear(); + sprayTask.clear(); deviceStatus.setSpraying(false);//是否正在进行喷涂 deviceStatus.setPaused(false);//是否暂停 } finally { diff --git a/src/main/java/com/qyft/ms/app/device/status/SprayTask.java b/src/main/java/com/qyft/ms/app/device/status/SprayTask.java index 12d85d9..0b4d1e3 100644 --- a/src/main/java/com/qyft/ms/app/device/status/SprayTask.java +++ b/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.SprayTaskSprayed; import com.qyft.ms.app.model.bo.SprayTimes; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.ArrayList; @@ -22,6 +21,10 @@ public class SprayTask { */ private String cmdCode; /** + * 本次喷涂记录id + */ + private Long operationLogId = null; + /** * 当前正在执行的步骤序号 */ private volatile int currentStep = 0; @@ -79,6 +82,7 @@ public class SprayTask { sprayTimes = null; currentPausedPoint = null; currentIndex = null; + operationLogId = null; sprayTaskSprayedList.clear(); } diff --git a/src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayContinue.java b/src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayContinue.java index d641cbb..e479ab0 100644 --- a/src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayContinue.java +++ b/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.SprayTask; 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.device.command.CommandFuture; import com.qyft.ms.system.common.device.command.DeviceCommandGenerator; @@ -29,6 +31,7 @@ public class MatrixSprayContinue extends BaseCommandHandler { private final DeviceCommandService deviceCommandService; private final SprayTaskExecutor sprayTaskExecutor; private final DeviceStatus deviceStatus; + private final OperationLogService operationLogService; @Override public CompletableFuture handle(FrontCmdControlForm form) { @@ -40,6 +43,10 @@ public class MatrixSprayContinue extends BaseCommandHandler { deviceStatus.setPaused(false); SprayTimes sprayTimes = sprayTask.getSprayTimes(); return runAsync(() -> { + OperationLog operationLog = operationLogService.getById(sprayTask.getOperationLogId()); + operationLog.setStatus(0); + operationLogService.updateById(operationLog); + if (sprayTimes.getHighVoltage()) { DeviceCommand highVoltageOpenCommand = DeviceCommandGenerator.highVoltageOpen(sprayTimes.getHighVoltageValue()); //打开高压 CommandFuture highVoltageOpenCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), highVoltageOpenCommand); diff --git a/src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayPause.java b/src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayPause.java index 49c70cf..9853527 100644 --- a/src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayPause.java +++ b/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.SprayTask; 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.device.command.CommandFuture; import com.qyft.ms.system.common.device.command.DeviceCommandGenerator; @@ -31,6 +33,7 @@ public class MatrixSprayPause extends BaseCommandHandler { private final DeviceCommandService deviceCommandService; private final SprayTaskExecutor sprayTaskExecutor; private final DeviceStatus deviceStatus; + private final OperationLogService operationLogService; @Override public CompletableFuture handle(FrontCmdControlForm form) { @@ -67,6 +70,10 @@ public class MatrixSprayPause extends BaseCommandHandler { Point3D point3D = new Point3D(xAxisPosition, yAxisPosition, zAxisPosition); sprayTask.setCurrentPausedPoint(point3D); + OperationLog operationLog = operationLogService.getById(sprayTask.getOperationLogId()); + operationLog.setStatus(2); + operationLogService.updateById(operationLog); + //XYZ回原点 DeviceCommand motorXOriginCommand = DeviceCommandGenerator.motorXOrigin(); DeviceCommand motorYOriginCommand = DeviceCommandGenerator.motorYOrigin(); diff --git a/src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStart.java b/src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStart.java index eb81d58..c963830 100644 --- a/src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStart.java +++ b/src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStart.java @@ -1,16 +1,11 @@ package com.qyft.ms.app.front.cmd.business; 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.status.DeviceStatus; 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.Position; 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.constant.CommandStatus; import com.qyft.ms.system.common.device.command.CommandFuture; @@ -27,8 +22,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; 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.ExecutorService; import java.util.concurrent.Executors; @@ -47,6 +43,7 @@ public class MatrixSprayStart extends BaseCommandHandler { private final DeviceStatus deviceStatus; private final WebSocketService webSocketService; 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, "设备正在喷涂,请先停止喷涂")); throw new RuntimeException("设备正在喷涂,请先停止喷涂"); } - if(sprayTask.getSprayTaskParams() == null){ + if (sprayTask.getSprayTaskParams() == null) { webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.DEVICE_ERROR, "未设置喷涂参数")); throw new RuntimeException("未设置喷涂参数"); } @@ -71,6 +68,13 @@ public class MatrixSprayStart extends BaseCommandHandler { sprayTask.setCmdCode(form.getCmdCode()); sprayTask.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(() -> { //喷涂开始前先回原点 DeviceCommand overallDeviceStatusGetCommand = DeviceCommandGenerator.overallDeviceStatusGet(); diff --git a/src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStop.java b/src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStop.java index d770a64..899c5be 100644 --- a/src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStop.java +++ b/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.status.DeviceStatus; 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.constant.CommandStatus; import com.qyft.ms.system.common.device.command.CommandFuture; @@ -33,6 +35,7 @@ public class MatrixSprayStop extends BaseCommandHandler { private final SprayTaskExecutor sprayTaskExecutor; private final DeviceStatus deviceStatus; private final WebSocketService webSocketService; + private final OperationLogService operationLogService; @Override public CompletableFuture handle(FrontCmdControlForm form) { @@ -65,6 +68,10 @@ public class MatrixSprayStop extends BaseCommandHandler { CommandFuture motorZStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorZStopCommand); commandWait(motorXStopCommandFuture, motorYStopCommandFuture, motorZStopCommandFuture); + OperationLog operationLog = operationLogService.getById(sprayTask.getOperationLogId()); + operationLog.setStatus(3); + operationLogService.updateById(operationLog); + //XYZ回原点 DeviceCommand motorXOriginCommand = DeviceCommandGenerator.motorXOrigin(); DeviceCommand motorYOriginCommand = DeviceCommandGenerator.motorYOrigin(); diff --git a/src/main/java/com/qyft/ms/app/model/entity/OperationLog.java b/src/main/java/com/qyft/ms/app/model/entity/OperationLog.java index 3508721..5365c4e 100644 --- a/src/main/java/com/qyft/ms/app/model/entity/OperationLog.java +++ b/src/main/java/com/qyft/ms/app/model/entity/OperationLog.java @@ -13,18 +13,13 @@ import lombok.EqualsAndHashCode; @Data public class OperationLog extends BaseEntity { @NotBlank - @Schema(description = "所选基质") - private Long matrixId; - - @NotBlank @Schema(description = "工艺参数") private String matrixInfo; @NotBlank - @Schema(description = "完成状态 0 进行中 1 已完成") + @Schema(description = "完成状态 0进行中 1已完成 2手动暂停 3手动停止") private Integer status; - @Schema(description = "创建人") private Long createUser; }