Browse Source

feat:喷涂状态接口增加喷涂任务已喷涂记录

master
白凤吉 3 weeks ago
parent
commit
e1edcf68b0
  1. 4
      src/main/java/com/qyft/ms/app/controller/SprayTaskController.java
  2. 3
      src/main/java/com/qyft/ms/app/device/spray/SprayTaskExecutor.java
  3. 10
      src/main/java/com/qyft/ms/app/device/status/SprayTask.java
  4. 300
      src/main/java/com/qyft/ms/app/device/status/SprayTask_bak.java
  5. 2
      src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStart.java
  6. 14
      src/main/java/com/qyft/ms/app/model/bo/SprayTaskSprayed.java
  7. 3
      src/main/java/com/qyft/ms/app/model/vo/SprayTaskStatusVO.java

4
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);
}

3
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> 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);//向前端推送当前路径

10
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<SprayTaskSprayed> 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 {

300
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<SprayTaskStep> 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<String, Object> cacheParams = null;
/**
* 已喷涂点位
*/
private volatile List<SprayTaskSprayed> 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<Map<String, Object>> 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<Integer> 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();
}
}
//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<SprayTaskStep> 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<String, Object> cacheParams = null;
//
// /**
// * 已喷涂点位
// */
// private volatile List<SprayTaskSprayed> 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<Map<String, Object>> 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<Integer> 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();
// }
//
//}

2
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;

14
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;
}
}

3
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<String, Object> sprayParams;
private List<SprayTaskParams> sprayTaskParams;
}
Loading…
Cancel
Save