From 4e985f487b9a3d7f57807ad2e48acdc07d1fdba5 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 15:03:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E7=AC=AC=E4=BA=8C?= =?UTF-8?q?=E6=AC=A1=E5=96=B7=E6=B6=82=E6=97=A0=E6=B3=95=E7=BB=93=E6=9D=9F?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ms/app/device/spray/SprayTaskExecutor.java | 13 +++-- .../com/qyft/ms/app/device/status/SprayTask.java | 1 + .../ms/app/front/cmd/business/MatrixSprayStop.java | 64 +++++++++++----------- 3 files changed, 42 insertions(+), 36 deletions(-) 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 d538188..b3e234d 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 @@ -198,19 +198,22 @@ public class SprayTaskExecutor { webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SUCCESS, "喷涂任务执行成功")); webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SPRAY_TASK_FINISH, "喷涂任务结束")); + + sprayTask.clear(); + deviceStatus.setSpraying(false);//是否正在进行喷涂 + deviceStatus.setPaused(false);//是否暂停 } catch (InterruptedException e) { webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SEND, "喷涂任务线程停止")); } catch (Exception e) { 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.clear(); + deviceStatus.setSpraying(false);//是否正在进行喷涂 + deviceStatus.setPaused(false);//是否暂停 } finally { webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SEND, "喷涂任务线程退出")); - if(sprayTask.isPaused()){//如果不是暂停状态的话则清空数据 - sprayTask.clear(); - deviceStatus.setSpraying(false);//是否正在进行喷涂 - deviceStatus.setPaused(false);//是否暂停 - } // 在线程结束后将 taskThread 设置为 null,保证状态一致和资源释放 synchronized (this) { taskThread = null; 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 0b4d1e3..202e237 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 @@ -76,6 +76,7 @@ public class SprayTask { cmdId = null; cmdCode = null; paused = false; + close = false; spraying = false; currentStep = 0; sprayTaskParams = null; 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 899c5be..984c4af 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 @@ -49,41 +49,43 @@ public class MatrixSprayStop extends BaseCommandHandler { webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SPRAY_TASK_FINISH, "喷涂任务结束")); return runAsync(() -> { - sprayTask.setClose(true); - sprayTaskExecutor.stopTask();//终止喷涂任务线程 + try{ + sprayTask.setClose(true); + sprayTaskExecutor.stopTask();//终止喷涂任务线程 - DeviceCommand syringePumpStopCommand = DeviceCommandGenerator.syringePumpStop(); //停止推动注射泵 - CommandFuture syringePumpStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), syringePumpStopCommand); - DeviceCommand nozzleValveCloseCommand = DeviceCommandGenerator.nozzleValveClose(); //关闭喷嘴阀 - CommandFuture nozzleValveCloseCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), nozzleValveCloseCommand); - DeviceCommand highVoltageCloseCommand = DeviceCommandGenerator.highVoltageClose(); //关闭高压 - CommandFuture highVoltageCloseCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), highVoltageCloseCommand); - commandWait(syringePumpStopCommandFuture, nozzleValveCloseCommandFuture, highVoltageCloseCommandFuture); + DeviceCommand syringePumpStopCommand = DeviceCommandGenerator.syringePumpStop(); //停止推动注射泵 + CommandFuture syringePumpStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), syringePumpStopCommand); + DeviceCommand nozzleValveCloseCommand = DeviceCommandGenerator.nozzleValveClose(); //关闭喷嘴阀 + CommandFuture nozzleValveCloseCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), nozzleValveCloseCommand); + DeviceCommand highVoltageCloseCommand = DeviceCommandGenerator.highVoltageClose(); //关闭高压 + CommandFuture highVoltageCloseCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), highVoltageCloseCommand); + commandWait(syringePumpStopCommandFuture, nozzleValveCloseCommandFuture, highVoltageCloseCommandFuture); - DeviceCommand motorXStopCommand = DeviceCommandGenerator.motorXStop(); //x轴停止移动 - DeviceCommand motorYStopCommand = DeviceCommandGenerator.motorYStop(); //y轴停止移动 - DeviceCommand motorZStopCommand = DeviceCommandGenerator.motorZStop(); //z轴停止移动 - CommandFuture motorXStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorXStopCommand); - CommandFuture motorYStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorYStopCommand); - CommandFuture motorZStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorZStopCommand); - commandWait(motorXStopCommandFuture, motorYStopCommandFuture, motorZStopCommandFuture); + DeviceCommand motorXStopCommand = DeviceCommandGenerator.motorXStop(); //x轴停止移动 + DeviceCommand motorYStopCommand = DeviceCommandGenerator.motorYStop(); //y轴停止移动 + DeviceCommand motorZStopCommand = DeviceCommandGenerator.motorZStop(); //z轴停止移动 + CommandFuture motorXStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorXStopCommand); + CommandFuture motorYStopCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorYStopCommand); + 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); + OperationLog operationLog = operationLogService.getById(sprayTask.getOperationLogId()); + operationLog.setStatus(3); + operationLogService.updateById(operationLog); - //XYZ回原点 - DeviceCommand motorXOriginCommand = DeviceCommandGenerator.motorXOrigin(); - DeviceCommand motorYOriginCommand = DeviceCommandGenerator.motorYOrigin(); - DeviceCommand motorZOriginCommand = DeviceCommandGenerator.motorZOrigin(); - CommandFuture motorXOriginCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorXOriginCommand); - CommandFuture motorYOriginCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorYOriginCommand); - CommandFuture motorZOriginCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorZOriginCommand); - commandWait(motorXOriginCommandFuture, motorYOriginCommandFuture, motorZOriginCommandFuture); - - SprayTask.getInstance().clear(); - deviceStatus.setSpraying(false); - deviceStatus.setPaused(false); + //XYZ回原点 + DeviceCommand motorXOriginCommand = DeviceCommandGenerator.motorXOrigin(); + DeviceCommand motorYOriginCommand = DeviceCommandGenerator.motorYOrigin(); + DeviceCommand motorZOriginCommand = DeviceCommandGenerator.motorZOrigin(); + CommandFuture motorXOriginCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorXOriginCommand); + CommandFuture motorYOriginCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorYOriginCommand); + CommandFuture motorZOriginCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorZOriginCommand); + commandWait(motorXOriginCommandFuture, motorYOriginCommandFuture, motorZOriginCommandFuture); + }finally { + sprayTask.clear(); + deviceStatus.setSpraying(false); + deviceStatus.setPaused(false); + } }); } }