From 74f7895f9f99ab5e313ea0e506ecc457f1e09649 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Thu, 20 Mar 2025 13:32:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=8E=B7=E5=8F=96=E5=96=B7=E6=B6=82?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E9=9C=80=E8=A6=81=E6=A0=87=E6=B3=A8=E6=98=AF?= =?UTF-8?q?=E7=AC=AC=E5=87=A0=E4=B8=AA=E7=8E=BB=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ms/app/controller/SprayTaskController.java | 2 +- .../ms/app/device/spray/SprayTaskExecutor.java | 16 +++++++++------- .../com/qyft/ms/app/device/status/SprayTask.java | 12 ++++++------ .../app/front/cmd/business/MatrixSprayStart.java | 21 +++++++++++++++++---- .../com/qyft/ms/app/model/bo/SprayTaskSprayed.java | 22 ++++++++++++++++++++++ .../com/qyft/ms/app/model/bo/SprayTaskStep.java | 22 ++++++++++++++++++++++ .../qyft/ms/app/model/vo/SprayTaskStatusVO.java | 5 +++-- 7 files changed, 80 insertions(+), 20 deletions(-) create mode 100644 src/main/java/com/qyft/ms/app/model/bo/SprayTaskSprayed.java create mode 100644 src/main/java/com/qyft/ms/app/model/bo/SprayTaskStep.java diff --git a/src/main/java/com/qyft/ms/app/controller/SprayTaskController.java b/src/main/java/com/qyft/ms/app/controller/SprayTaskController.java index fda4966..8c8bc49 100644 --- a/src/main/java/com/qyft/ms/app/controller/SprayTaskController.java +++ b/src/main/java/com/qyft/ms/app/controller/SprayTaskController.java @@ -25,7 +25,7 @@ public class SprayTaskController { public Result getStatus() { SprayTask sprayTask = SprayTask.getInstance(); SprayTaskStatusVO sprayTaskStatusVO = new SprayTaskStatusVO(); - sprayTaskStatusVO.setSprayedPoints(sprayTask.getSprayedPoints()); + sprayTaskStatusVO.setSprayTaskSprayedList(sprayTask.getSprayTaskSprayedList()); sprayTaskStatusVO.setSprayParams(sprayTask.getSprayParams()); return Result.success(sprayTaskStatusVO); } 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 ca80459..6e4bb88 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,6 +6,8 @@ import com.qyft.ms.app.common.constant.WebSocketMessageType; import com.qyft.ms.app.device.status.DeviceStatus; import com.qyft.ms.app.device.status.SprayTask; import com.qyft.ms.app.model.bo.Point2D; +import com.qyft.ms.app.model.bo.SprayTaskSprayed; +import com.qyft.ms.app.model.bo.SprayTaskStep; import com.qyft.ms.app.model.entity.SysSettings; import com.qyft.ms.app.service.SysSettingsService; import com.qyft.ms.system.common.device.command.CommandFuture; @@ -76,8 +78,7 @@ public class SprayTaskExecutor { int reCurrentStep = sprayTask.getCurrentStep(); int currentStep = 0; //当前喷涂步骤 - int currentSprayIndex = 0; //喷涂计数 - for (List> deviceCommandList : sprayTask.getSpraySteps()) {//循环进行多次喷涂 + for (SprayTaskStep sprayTaskStep : sprayTask.getSprayTaskStepList()) {//循环进行多次喷涂 DeviceCommand nozzleValveOpenCommand = DeviceCommandGenerator.nozzleValveOpen();//开启喷嘴阀 DeviceCommand syringePumpForwardCommand = DeviceCommandGenerator.syringePumpForward(sprayTask.getSprayParams().getVolume());//推动移动注射泵 @@ -88,17 +89,17 @@ public class SprayTaskExecutor { List sprayStepList = new ArrayList<>(); sprayTask.setSuspendable(true);//可以暂停,单次喷涂范围内可以进行暂停 deviceStatus.setSuspendable(true); - for (List deviceCommandAgg : deviceCommandList) {//单次喷涂 + for (List sprayStepCommands : sprayTaskStep.getSpraySteps()) {//单次喷涂 if (reCurrentStep < currentStep) { break; } List commandFutureList = new ArrayList<>(); - for (DeviceCommand sprayStep : deviceCommandAgg) { + for (DeviceCommand sprayStep : sprayStepCommands) { CommandFuture commandFuture = deviceCommandService.sendCommand(sprayStep); commandFutureList.add(commandFuture); } CommandFuture[] commandFutureArray = commandFutureList.toArray(new CommandFuture[0]); - sprayTaskPointCollector.startCollecting(currentSprayIndex); //开启点位推送 + sprayTaskPointCollector.startCollecting(sprayTaskStep.getIndex()); //开启点位推送 commandWait(commandFutureArray); sprayTaskPointCollector.stopCollecting();//关闭点位推送 currentStep++; @@ -112,10 +113,11 @@ public class SprayTaskExecutor { Double yAxisPosition = motorXyzPositionGetCommandResult.getDouble("yAxisPosition"); sprayStepList.add(new Point2D(xAxisPosition, yAxisPosition)); } - currentSprayIndex++; sprayTask.setSuspendable(false);//不可暂停 deviceStatus.setSuspendable(false); - sprayTask.getSprayedPoints().add(sprayStepList); + SprayTaskSprayed sprayTaskSprayed = new SprayTaskSprayed(); + sprayTaskSprayed.setIndex(sprayTaskStep.getIndex()); + sprayTaskSprayed.setSprayedPoints(sprayStepList); DeviceCommand nozzleValveCloseCommand = DeviceCommandGenerator.nozzleValveClose();//关闭喷嘴阀 DeviceCommand syringePumpStopCommand = DeviceCommandGenerator.syringePumpStop();//停止推动注射泵 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 683e51d..5e5ec44 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 @@ -1,8 +1,8 @@ package com.qyft.ms.app.device.status; -import com.qyft.ms.app.model.bo.Point2D; import com.qyft.ms.app.model.bo.SprayParams; -import com.qyft.ms.system.model.bo.DeviceCommand; +import com.qyft.ms.app.model.bo.SprayTaskSprayed; +import com.qyft.ms.app.model.bo.SprayTaskStep; import lombok.Data; import java.util.List; @@ -38,7 +38,7 @@ public class SprayTask { /** * 喷涂步骤列表 */ - private final List>> spraySteps = new CopyOnWriteArrayList<>(); + private final List sprayTaskStepList = new CopyOnWriteArrayList<>(); /** * 当前正在执行的步骤序号 @@ -48,7 +48,7 @@ public class SprayTask { /** * 已喷涂点位 */ - private volatile List> sprayedPoints = new CopyOnWriteArrayList<>(); + private volatile List sprayTaskSprayedList = new CopyOnWriteArrayList<>(); /** * 喷涂参数 @@ -104,9 +104,9 @@ public class SprayTask { suspendable = false; spraying = false; sprayPreStepsCompleted = false; - spraySteps.clear(); + sprayTaskStepList.clear(); currentStep = 0; - sprayedPoints.clear(); + sprayTaskSprayedList.clear(); } } \ No newline at end of file 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 b5c0305..fcdac04 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 @@ -6,6 +6,7 @@ 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; @@ -186,7 +187,10 @@ public class MatrixSprayStart extends BaseCommandHandler { deviceCommands.add(DeviceCommandGenerator.motorYPositionSet(75.5 - p.getY()));//移动y轴 deviceCommandList.add(deviceCommands); } - sprayTask.getSpraySteps().add(deviceCommandList); + SprayTaskStep sprayTaskStep = new SprayTaskStep(); + sprayTaskStep.setIndex(index); + sprayTaskStep.setSpraySteps(deviceCommandList); + sprayTask.getSprayTaskStepList().add(sprayTaskStep); } } else if ("vertical".equals(matrixPathType)) { for (int i = 0; i < times; i++) { @@ -209,7 +213,10 @@ public class MatrixSprayStart extends BaseCommandHandler { deviceCommands.add(DeviceCommandGenerator.motorYPositionSet(75.5 - p.getY()));//移动y轴 deviceCommandList.add(deviceCommands); } - sprayTask.getSpraySteps().add(deviceCommandList); + SprayTaskStep sprayTaskStep = new SprayTaskStep(); + sprayTaskStep.setIndex(index); + sprayTaskStep.setSpraySteps(deviceCommandList); + sprayTask.getSprayTaskStepList().add(sprayTaskStep); } } else if ("grid".equals(matrixPathType)) { for (int i = 0; i < times; i++) { @@ -236,7 +243,10 @@ public class MatrixSprayStart extends BaseCommandHandler { deviceCommands.add(DeviceCommandGenerator.motorYPositionSet(75.5 - p.getY()));//移动y轴 deviceCommandList.add(deviceCommands); } - sprayTask.getSpraySteps().add(deviceCommandList); + SprayTaskStep sprayTaskStep = new SprayTaskStep(); + sprayTaskStep.setIndex(index); + sprayTaskStep.setSpraySteps(deviceCommandList); + sprayTask.getSprayTaskStepList().add(sprayTaskStep); pathList = PathGenerator.generatePathPoints( leftReal, rightReal, topReal, bottomReal, @@ -250,7 +260,10 @@ public class MatrixSprayStart extends BaseCommandHandler { deviceCommands.add(DeviceCommandGenerator.motorYPositionSet(75.5 - p.getY()));//移动y轴 deviceCommandList.add(deviceCommands); } - sprayTask.getSpraySteps().add(deviceCommandList); + SprayTaskStep sprayTaskStep2 = new SprayTaskStep(); + sprayTaskStep2.setIndex(index); + sprayTaskStep2.setSpraySteps(deviceCommandList); + sprayTask.getSprayTaskStepList().add(sprayTaskStep2); } } diff --git a/src/main/java/com/qyft/ms/app/model/bo/SprayTaskSprayed.java b/src/main/java/com/qyft/ms/app/model/bo/SprayTaskSprayed.java new file mode 100644 index 0000000..bf57db2 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/bo/SprayTaskSprayed.java @@ -0,0 +1,22 @@ +package com.qyft.ms.app.model.bo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +@Schema(description = "喷涂任务已喷涂记录") +public class SprayTaskSprayed { + /** + * 玻片序号 + */ + @Schema(description = "玻片序号") + private Integer index; + + /** + * 已喷涂点位 + */ + private volatile List sprayedPoints; + +} diff --git a/src/main/java/com/qyft/ms/app/model/bo/SprayTaskStep.java b/src/main/java/com/qyft/ms/app/model/bo/SprayTaskStep.java new file mode 100644 index 0000000..626adf9 --- /dev/null +++ b/src/main/java/com/qyft/ms/app/model/bo/SprayTaskStep.java @@ -0,0 +1,22 @@ +package com.qyft.ms.app.model.bo; + +import com.qyft.ms.system.model.bo.DeviceCommand; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +@Schema(description = "喷涂任务点位步骤") +public class SprayTaskStep { + /** + * 玻片序号 + */ + @Schema(description = "玻片序号") + private Integer index; + /** + * 单词喷涂的完整路线步骤 + */ + @Schema(description = "单词喷涂的完整路线步骤") + private List> spraySteps; +} \ No newline at end of file diff --git a/src/main/java/com/qyft/ms/app/model/vo/SprayTaskStatusVO.java b/src/main/java/com/qyft/ms/app/model/vo/SprayTaskStatusVO.java index 66a12d7..507f2d5 100644 --- a/src/main/java/com/qyft/ms/app/model/vo/SprayTaskStatusVO.java +++ b/src/main/java/com/qyft/ms/app/model/vo/SprayTaskStatusVO.java @@ -2,6 +2,7 @@ package com.qyft.ms.app.model.vo; import com.qyft.ms.app.model.bo.Point2D; import com.qyft.ms.app.model.bo.SprayParams; +import com.qyft.ms.app.model.bo.SprayTaskSprayed; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -18,13 +19,13 @@ public class SprayTaskStatusVO { * 已喷涂点位 */ @Schema(description = "已喷涂点位") - private List> sprayedPoints = new CopyOnWriteArrayList<>(); + private volatile List sprayTaskSprayedList; /** * 喷涂参数 */ @Schema(description = "喷涂参数") - private SprayParams sprayParams = new SprayParams(); + private SprayParams sprayParams; }