From e1edcf68b0cc6c43bdd9512639b56caa98e24e44 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 12:05:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=96=B7=E6=B6=82=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0=E5=96=B7=E6=B6=82=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=B7=B2=E5=96=B7=E6=B6=82=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ms/app/controller/SprayTaskController.java | 4 +- .../ms/app/device/spray/SprayTaskExecutor.java | 3 +- .../com/qyft/ms/app/device/status/SprayTask.java | 10 +- .../qyft/ms/app/device/status/SprayTask_bak.java | 300 ++++++++++----------- .../app/front/cmd/business/MatrixSprayStart.java | 2 - .../com/qyft/ms/app/model/bo/SprayTaskSprayed.java | 14 +- .../qyft/ms/app/model/vo/SprayTaskStatusVO.java | 3 +- 7 files changed, 174 insertions(+), 162 deletions(-) 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 963241e..6485f88 100644 --- a/src/main/java/com/qyft/ms/app/controller/SprayTaskController.java +++ b/src/main/java/com/qyft/ms/app/controller/SprayTaskController.java @@ -29,8 +29,8 @@ public class SprayTaskController { SprayTaskStatusVO sprayTaskStatusVO = new SprayTaskStatusVO(); sprayTaskStatusVO.setCmdId(sprayTask.getCmdId()); sprayTaskStatusVO.setCmdCode(sprayTask.getCmdCode()); -// sprayTaskStatusVO.setSprayTaskSprayedList(sprayTask.getSprayTaskSprayedList()); -// sprayTaskStatusVO.setSprayParams(sprayTask.getCacheParams()); + sprayTaskStatusVO.setSprayTaskSprayedList(sprayTask.getSprayTaskSprayedList()); + sprayTaskStatusVO.setSprayTaskParams(sprayTask.getSprayTaskParams()); 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 2562560..9b08fad 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 @@ -73,12 +73,12 @@ public class SprayTaskExecutor { webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.START, "喷涂任务开始执行")); List sprayTaskParams = sprayTask.getSprayTaskParams(); int currentStep = 0; //不管是暂停还是新的线程,记录当前线程喷涂步骤序号 - int sprayNum = 1; //当前玻片是第几次喷涂 for (SprayTaskParams sprayTaskParam : sprayTaskParams) {//循环玻片 if (sprayTask.getCurrentIndex() != null && sprayTaskParam.getIndex() > sprayTask.getCurrentIndex()) { continue; } sprayTask.setCurrentIndex(sprayTaskParam.getIndex()); + int sprayNum = 1; //当前玻片是第几次喷涂 for (SprayTimes sprayTimes : sprayTaskParam.getTimes()) {//每个拨片有多次喷涂,循环每次喷涂 sprayTask.setSprayTimes(sprayTimes); Double[] slide = slideArr[sprayTaskParam.getIndex()];//获取玻片的坐标 @@ -150,6 +150,7 @@ public class SprayTaskExecutor { commandFutureList.add(commandFuture); cacheYPoint = currentPoint.y; } + 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);//向前端推送当前路径 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 2864b25..12d85d9 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 @@ -2,9 +2,12 @@ package com.qyft.ms.app.device.status; 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; import java.util.List; @Data @@ -39,10 +42,14 @@ public class SprayTask { */ private SprayTimes sprayTimes = null; /** + * 已喷涂点位 + */ + private volatile List sprayTaskSprayedList = new ArrayList<>(); + + /** * 标志喷涂任务暂停 */ private volatile boolean paused = false; - /** * 标志喷涂任务结束 */ @@ -72,6 +79,7 @@ public class SprayTask { sprayTimes = null; currentPausedPoint = null; currentIndex = null; + sprayTaskSprayedList.clear(); } private static class Holder { diff --git a/src/main/java/com/qyft/ms/app/device/status/SprayTask_bak.java b/src/main/java/com/qyft/ms/app/device/status/SprayTask_bak.java index e057036..59d10db 100644 --- a/src/main/java/com/qyft/ms/app/device/status/SprayTask_bak.java +++ b/src/main/java/com/qyft/ms/app/device/status/SprayTask_bak.java @@ -1,150 +1,150 @@ -package com.qyft.ms.app.device.status; - -import com.qyft.ms.app.model.bo.SprayParams; -import com.qyft.ms.app.model.bo.SprayTaskSprayed; -import com.qyft.ms.app.model.bo.SprayTaskStep; -import lombok.Data; - -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArrayList; - -@Data -public class SprayTask_bak { - - /** - * 喷涂步骤列表 - */ - private final List sprayTaskStepList = new CopyOnWriteArrayList<>(); - /** - * 喷涂参数 - */ - private final SprayParams sprayParams = new SprayParams(); - /** - * 前端指令id - */ - private String cmdId; - /** - * 前端指令code - */ - private String cmdCode; - /** - * 喷涂任务暂停状态 - */ - private volatile boolean paused = false; - /** - * 当前状态是否可以暂停 - */ - private volatile boolean suspendable = false; - /** - * 是否正在结束 - */ - private volatile boolean closing = false; - /** - * 设备是否正在进行的喷涂 - */ - private volatile boolean spraying = false; - /** - * 当前正在执行的步骤序号 - */ - private volatile int currentStep = 0; - - private volatile boolean firstImmobility = false; - - /** - * 缓存前端的参数 - */ - private Map cacheParams = null; - - /** - * 已喷涂点位 - */ - private volatile List sprayTaskSprayedList = new CopyOnWriteArrayList<>(); - - private SprayTask_bak() { - } - - public static SprayTask_bak getInstance() { - return Holder.INSTANCE; - } - - public void setChangeSprayParam(Double motorZHeight, - Double gasPressure, - Double volume, - Boolean highVoltage, - Double highVoltageValue, - Double movingSpeed) { - if (motorZHeight != null) { - sprayParams.setMotorZHeight(motorZHeight); - } - if (gasPressure != null) { - sprayParams.setGasPressure(gasPressure); - } - if (volume != null) { - sprayParams.setVolume(volume); - } - if (highVoltage != null) { - sprayParams.setHighVoltage(highVoltage); - } - if (highVoltageValue != null) { - sprayParams.setHighVoltageValue(highVoltageValue); - } - if (movingSpeed != null) { - sprayParams.setMovingSpeed(movingSpeed); - } - - } - - public void setSprayParam(String matrixPathType, - Double motorZHeight, - Double gasPressure, - Double volume, - Boolean highVoltage, - Double highVoltageValue, - Double spacing, - Double movingSpeed, - Double times, - List> positionList) { - sprayParams.setMatrixPathType(matrixPathType); - sprayParams.setMotorZHeight(motorZHeight); - sprayParams.setGasPressure(gasPressure); - sprayParams.setVolume(volume); - sprayParams.setHighVoltage(highVoltage); - sprayParams.setHighVoltageValue(highVoltageValue); - sprayParams.setSpacing(spacing); - sprayParams.setMovingSpeed(movingSpeed); - sprayParams.setTimes(times); - sprayParams.setPositionList(positionList); - } - - public synchronized void addSprayTaskSprayed(SprayTaskSprayed task) { - LinkedHashSet distinctNumbers = new LinkedHashSet<>(); - for (SprayTaskSprayed item : sprayTaskSprayedList) { - distinctNumbers.add(item.getSprayCount()); - } - if (!distinctNumbers.contains(task.getSprayCount()) && distinctNumbers.size() >= 120) { - Integer oldestNumber = distinctNumbers.iterator().next(); - sprayTaskSprayedList.removeIf(item -> item.getSprayCount().equals(oldestNumber)); - } - sprayTaskSprayedList.add(task); - } - - public void clear() { - cmdId = null; - cmdCode = null; - paused = false; - suspendable = false; - spraying = false; - sprayTaskStepList.clear(); - currentStep = 0; - firstImmobility = false; - sprayTaskSprayedList.clear(); - cacheParams = null; - } - - private static class Holder { - private static final SprayTask_bak INSTANCE = new SprayTask_bak(); - } - -} \ No newline at end of file +//package com.qyft.ms.app.device.status; +// +//import com.qyft.ms.app.model.bo.SprayParams; +//import com.qyft.ms.app.model.bo.SprayTaskSprayed; +//import com.qyft.ms.app.model.bo.SprayTaskStep; +//import lombok.Data; +// +//import java.util.LinkedHashSet; +//import java.util.List; +//import java.util.Map; +//import java.util.concurrent.CopyOnWriteArrayList; +// +//@Data +//public class SprayTask_bak { +// +// /** +// * 喷涂步骤列表 +// */ +// private final List sprayTaskStepList = new CopyOnWriteArrayList<>(); +// /** +// * 喷涂参数 +// */ +// private final SprayParams sprayParams = new SprayParams(); +// /** +// * 前端指令id +// */ +// private String cmdId; +// /** +// * 前端指令code +// */ +// private String cmdCode; +// /** +// * 喷涂任务暂停状态 +// */ +// private volatile boolean paused = false; +// /** +// * 当前状态是否可以暂停 +// */ +// private volatile boolean suspendable = false; +// /** +// * 是否正在结束 +// */ +// private volatile boolean closing = false; +// /** +// * 设备是否正在进行的喷涂 +// */ +// private volatile boolean spraying = false; +// /** +// * 当前正在执行的步骤序号 +// */ +// private volatile int currentStep = 0; +// +// private volatile boolean firstImmobility = false; +// +// /** +// * 缓存前端的参数 +// */ +// private Map cacheParams = null; +// +// /** +// * 已喷涂点位 +// */ +// private volatile List sprayTaskSprayedList = new CopyOnWriteArrayList<>(); +// +// private SprayTask_bak() { +// } +// +// public static SprayTask_bak getInstance() { +// return Holder.INSTANCE; +// } +// +// public void setChangeSprayParam(Double motorZHeight, +// Double gasPressure, +// Double volume, +// Boolean highVoltage, +// Double highVoltageValue, +// Double movingSpeed) { +// if (motorZHeight != null) { +// sprayParams.setMotorZHeight(motorZHeight); +// } +// if (gasPressure != null) { +// sprayParams.setGasPressure(gasPressure); +// } +// if (volume != null) { +// sprayParams.setVolume(volume); +// } +// if (highVoltage != null) { +// sprayParams.setHighVoltage(highVoltage); +// } +// if (highVoltageValue != null) { +// sprayParams.setHighVoltageValue(highVoltageValue); +// } +// if (movingSpeed != null) { +// sprayParams.setMovingSpeed(movingSpeed); +// } +// +// } +// +// public void setSprayParam(String matrixPathType, +// Double motorZHeight, +// Double gasPressure, +// Double volume, +// Boolean highVoltage, +// Double highVoltageValue, +// Double spacing, +// Double movingSpeed, +// Double times, +// List> positionList) { +// sprayParams.setMatrixPathType(matrixPathType); +// sprayParams.setMotorZHeight(motorZHeight); +// sprayParams.setGasPressure(gasPressure); +// sprayParams.setVolume(volume); +// sprayParams.setHighVoltage(highVoltage); +// sprayParams.setHighVoltageValue(highVoltageValue); +// sprayParams.setSpacing(spacing); +// sprayParams.setMovingSpeed(movingSpeed); +// sprayParams.setTimes(times); +// sprayParams.setPositionList(positionList); +// } +// +// public synchronized void addSprayTaskSprayed(SprayTaskSprayed task) { +// LinkedHashSet distinctNumbers = new LinkedHashSet<>(); +// for (SprayTaskSprayed item : sprayTaskSprayedList) { +// distinctNumbers.add(item.getSprayCount()); +// } +// if (!distinctNumbers.contains(task.getSprayCount()) && distinctNumbers.size() >= 120) { +// Integer oldestNumber = distinctNumbers.iterator().next(); +// sprayTaskSprayedList.removeIf(item -> item.getSprayCount().equals(oldestNumber)); +// } +// sprayTaskSprayedList.add(task); +// } +// +// public void clear() { +// cmdId = null; +// cmdCode = null; +// paused = false; +// suspendable = false; +// spraying = false; +// sprayTaskStepList.clear(); +// currentStep = 0; +// firstImmobility = false; +// sprayTaskSprayedList.clear(); +// cacheParams = null; +// } +// +// private static class Holder { +// private static final SprayTask_bak INSTANCE = new SprayTask_bak(); +// } +// +//} \ 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 023c014..eb81d58 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 @@ -44,9 +44,7 @@ public class MatrixSprayStart extends BaseCommandHandler { private static final ExecutorService singleExecutor = Executors.newSingleThreadExecutor(); private final SprayTaskExecutor sprayTaskExecutor; - private final PositionService positionService; private final DeviceStatus deviceStatus; - private final OperationLogService operationLogService; private final WebSocketService webSocketService; private final DeviceCommandService deviceCommandService; 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 index adf9345..843ca48 100644 --- a/src/main/java/com/qyft/ms/app/model/bo/SprayTaskSprayed.java +++ b/src/main/java/com/qyft/ms/app/model/bo/SprayTaskSprayed.java @@ -9,11 +9,8 @@ public class SprayTaskSprayed { /** * 当前玻片是第几次喷涂 */ - Integer number; - /** - * 总喷涂计数 - */ - Integer sprayCount; + @Schema(description = "当前玻片是第几次喷涂") + private Integer number; /** * 玻片序号 */ @@ -22,6 +19,13 @@ public class SprayTaskSprayed { /** * 已喷涂点位 */ + @Schema(description = "已喷涂点位") private volatile Point2D sprayedPoints; + public SprayTaskSprayed(Integer number, Integer index, Point2D sprayedPoints) { + this.number = number; + this.index = index; + this.sprayedPoints = sprayedPoints; + } + } 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 75fefb8..28621cb 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 @@ -1,5 +1,6 @@ package com.qyft.ms.app.model.vo; +import com.qyft.ms.app.model.bo.SprayTaskParams; import com.qyft.ms.app.model.bo.SprayTaskSprayed; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -30,7 +31,7 @@ public class SprayTaskStatusVO { * 喷涂参数 */ @Schema(description = "喷涂参数") - private Map sprayParams; + private List sprayTaskParams; }