From ecd5affdc1900afc4d460e10e7d0d55a78b9e9c6 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:44:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E7=BB=A7=E7=BB=AD?= =?UTF-8?q?=E6=9A=82=E5=81=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qyft/ms/app/device/spray/SprayTaskExecutor.java | 13 +++++++++---- src/main/java/com/qyft/ms/app/device/status/SprayTask.java | 5 +++++ 2 files changed, 14 insertions(+), 4 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 734bc53..ebf6078 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 @@ -75,7 +75,6 @@ public class SprayTaskExecutor { try { webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.START, "喷涂任务开始执行")); List sprayTaskParams = sprayTask.getSprayTaskParams(); - int currentStep = 0; //不管是暂停还是新的线程,记录当前线程喷涂步骤序号 for (SprayTaskParams sprayTaskParam : sprayTaskParams) {//循环玻片 if (sprayTask.getCurrentIndex() != null && sprayTaskParam.getIndex() < sprayTask.getCurrentIndex()) { continue; @@ -83,6 +82,9 @@ public class SprayTaskExecutor { sprayTask.setCurrentIndex(sprayTaskParam.getIndex()); int sprayNum = 1; //当前玻片是第几次喷涂 for (SprayTimes sprayTimes : sprayTaskParam.getTimes()) {//每个拨片有多次喷涂,循环每次喷涂 + if (sprayNum < sprayTask.getSprayNum()) { + continue; + } sprayTask.setSprayTimes(sprayTimes); Double[] slide = slideArr[sprayTaskParam.getIndex()];//获取玻片的坐标 @@ -124,6 +126,7 @@ public class SprayTaskExecutor { //因为走的是折现,所以单词指令只需要移动x或y,缓存上一个点位用来判断本次是走x还是y double cacheXPoint = -1; double cacheYPoint = -1; + int currentStep = 0; //记录当前线程喷涂步骤序号 for (SprayTaskStep sprayTaskStep : sprayTaskStepList) {//因为田字格喷涂其实是两次 if (sprayTimes.getHighVoltage()) {//加电 DeviceCommand highVoltageOpenCommand = DeviceCommandGenerator.highVoltageOpen(sprayTimes.getHighVoltageValue());//开启高压 @@ -153,7 +156,7 @@ public class SprayTaskExecutor { commandFutureList.add(commandFuture); cacheYPoint = currentPoint.y; } - sprayTask.getSprayTaskSprayedList().add(new SprayTaskSprayed(sprayNum,sprayTaskParam.getIndex(),currentPoint)); + sprayTask.getSprayTaskSprayedList().add(new SprayTaskSprayed(sprayNum, sprayTaskParam.getIndex(), currentPoint)); SprayTaskPointCollectorPushBO sprayTaskPointCollectorPushBO = new SprayTaskPointCollectorPushBO(sprayTask.getCmdId(), sprayTask.getCmdCode(), sprayTaskParam.getIndex(), sprayNum, currentPoint); webSocketService.pushMsg(WebSocketMessageType.SPRAY_POINT, sprayTaskPointCollectorPushBO);//向前端推送当前路径 @@ -166,14 +169,16 @@ public class SprayTaskExecutor { DeviceCommand syringePumpStopCommand = DeviceCommandGenerator.syringePumpStop();//停止推动注射泵 CommandFuture syringePumpStopCommandFuture = deviceCommandService.sendCommandSprayTask(sprayTask.getCmdId(), sprayTask.getCmdCode(), syringePumpStopCommand); commandWait(syringePumpStopCommandFuture); - if(sprayTimes.getGridDelay() != null){ + if (sprayTimes.getGridDelay() != null) { delay(sprayTimes.getGridDelay() * 1000); } } sprayNum++; + sprayTask.setSprayNum(sprayNum); + sprayTask.setCurrentStep(0); delay(sprayTimes.getDelay() * 1000); } - + sprayTask.setSprayNum(0); } //喷涂完毕 DeviceCommand highVoltageCloseCommand = DeviceCommandGenerator.highVoltageClose();//关闭高压 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 202e237..9824bdf 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 @@ -33,6 +33,10 @@ public class SprayTask { */ private Integer currentIndex = null; /** + * 当前玻片是第几次喷涂 + */ + private volatile int sprayNum = 0; + /** * 当前暂停点位 */ private Point3D currentPausedPoint = null; @@ -83,6 +87,7 @@ public class SprayTask { sprayTimes = null; currentPausedPoint = null; currentIndex = null; + sprayNum = 0; operationLogId = null; sprayTaskSprayedList.clear(); }