From 4aa82c3c9e89df7584271387542a44c49ddf0c2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Sat, 22 Mar 2025 16:15:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E4=B8=AD=E6=96=AD?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E6=97=B6=E5=90=8C=E6=97=B6=E4=B8=AD=E6=96=AD?= =?UTF-8?q?=E4=BA=86ws=E9=93=BE=E6=8E=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/qyft/ms/app/device/spray/SprayTaskExecutor.java | 8 +++++--- src/main/java/com/qyft/ms/app/device/status/SprayTask.java | 8 ++++++++ .../java/com/qyft/ms/app/front/cmd/business/DeviceSelfTest.java | 6 +++--- .../com/qyft/ms/app/front/cmd/business/MatrixSprayStart.java | 9 +++------ .../java/com/qyft/ms/app/front/cmd/business/MatrixSprayStop.java | 9 ++++----- 5 files changed, 23 insertions(+), 17 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 bb6f280..ad00128 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 @@ -68,6 +68,9 @@ public class SprayTaskExecutor { webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.ERROR, "设备正在喷涂,请先停止喷涂")); return; } + sprayTask.setSpraying(true); + deviceStatus.setSpraying(true); + taskThread = new Thread(() -> { try { webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.START, "喷涂任务开始执行")); @@ -140,7 +143,7 @@ public class SprayTaskExecutor { sprayTaskSprayed.setNumber(sprayNum); sprayTaskSprayed.setIndex(sprayTaskStep.getIndex()); sprayTaskSprayed.setSprayedPoints(new Point2D(nextPoint.getX(), nextPoint.getY())); - sprayTask.getSprayTaskSprayedList().add(sprayTaskSprayed); + sprayTask.addSprayTaskSprayed(sprayTaskSprayed); } } sprayTask.setSuspendable(false);//不可暂停 @@ -179,9 +182,8 @@ public class SprayTaskExecutor { deviceStatus.setPaused(false); deviceStatus.setSuspendable(false); } catch (InterruptedException e) { - deviceStatus.setSuspendable(false); + sprayTask.setPaused(true); webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SEND, "喷涂任务线程停止")); - Thread.currentThread().interrupt(); } catch (Exception e) { log.info("喷涂任务失败", e); webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.FAIL, "喷涂任务执行失败")); 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 6548b59..84f8ddb 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 @@ -110,6 +110,14 @@ public class SprayTask { sprayParams.setPositionList(positionList); } + public synchronized void addSprayTaskSprayed(SprayTaskSprayed task) { + if (sprayTaskSprayedList.size() >= 200) { + // 删除最旧的元素 + sprayTaskSprayedList.remove(0); + } + sprayTaskSprayedList.add(task); + } + public void clear() { cmdId = null; cmdCode = null; diff --git a/src/main/java/com/qyft/ms/app/front/cmd/business/DeviceSelfTest.java b/src/main/java/com/qyft/ms/app/front/cmd/business/DeviceSelfTest.java index 99bf02b..d969eb2 100644 --- a/src/main/java/com/qyft/ms/app/front/cmd/business/DeviceSelfTest.java +++ b/src/main/java/com/qyft/ms/app/front/cmd/business/DeviceSelfTest.java @@ -40,13 +40,13 @@ public class DeviceSelfTest extends BaseCommandHandler { CommandFuture motorZOriginCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorZOriginCommand); commandWait(motorXOriginCommandFuture, motorYOriginCommandFuture, motorZOriginCommandFuture); try { - if (motorXOriginCommandFuture.getResponseResult().getBool("status")) { + if (motorXOriginCommandFuture.getResponseResult().getBool("success")) { selfTestService.getSelfTestStatus().setXAxisAtOrigin(true); } - if (motorYOriginCommandFuture.getResponseResult().getBool("status")) { + if (motorYOriginCommandFuture.getResponseResult().getBool("success")) { selfTestService.getSelfTestStatus().setYAxisAtOrigin(true); } - if (motorZOriginCommandFuture.getResponseResult().getBool("status")) { + if (motorZOriginCommandFuture.getResponseResult().getBool("success")) { selfTestService.getSelfTestStatus().setZAxisAtOrigin(true); } deviceStatus.setSelfTestCompleted(true); 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 68b3204..0b43a20 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 @@ -117,12 +117,10 @@ public class MatrixSprayStart extends BaseCommandHandler { if (sprayTask.isSpraying()) {//判断设备是否正在喷涂 webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.ERROR, "设备正在喷涂,请先停止喷涂")); throw new RuntimeException("设备正在喷涂,请先停止喷涂"); - } else { - sprayTask.setSpraying(true); - deviceStatus.setSpraying(true); - sprayTask.setCmdId(form.getCmdId()); - sprayTask.setCmdCode(form.getCmdCode()); } + sprayTask.setCmdId(form.getCmdId()); + sprayTask.setCmdCode(form.getCmdCode()); + // 1. 参数校验 String matrixPathType = form.getStringParam("matrixPathType"); Double motorZHeight = form.getDoubleParam("motorZHeight"); @@ -334,7 +332,6 @@ public class MatrixSprayStart extends BaseCommandHandler { CommandFuture nozzleValveOpenCommandFuture = deviceCommandService.sendCommand(sprayTask.getCmdId(), sprayTask.getCmdCode(), nozzleValveOpenCommand); commandWait(nozzleValveOpenCommandFuture); - // 10. 启动喷涂线程,开始喷涂 sprayTaskExecutor.startTask(); webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(form.getCmdId(), form.getCmdCode(), CommandStatus.SEND, "已开启喷涂线程")); 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 60f3429..8783f9e 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 @@ -32,6 +32,10 @@ public class MatrixSprayStop extends BaseCommandHandler { @Override public CompletableFuture handle(FrontCmdControlForm form) { + SprayTask.getInstance().clear(); + deviceStatus.setSpraying(false); + deviceStatus.setPaused(false); + deviceStatus.setSuspendable(false); return runAsync(() -> { sprayTaskExecutor.stopTask();//终止喷涂任务线程 @@ -59,11 +63,6 @@ public class MatrixSprayStop extends BaseCommandHandler { 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); - deviceStatus.setSuspendable(false); }); } }