Browse Source

feat:获取喷涂状态需要标注是第几个玻片

tags/1.0
白凤吉 5 months ago
parent
commit
74f7895f9f
  1. 2
      src/main/java/com/qyft/ms/app/controller/SprayTaskController.java
  2. 16
      src/main/java/com/qyft/ms/app/device/spray/SprayTaskExecutor.java
  3. 12
      src/main/java/com/qyft/ms/app/device/status/SprayTask.java
  4. 21
      src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStart.java
  5. 22
      src/main/java/com/qyft/ms/app/model/bo/SprayTaskSprayed.java
  6. 22
      src/main/java/com/qyft/ms/app/model/bo/SprayTaskStep.java
  7. 5
      src/main/java/com/qyft/ms/app/model/vo/SprayTaskStatusVO.java

2
src/main/java/com/qyft/ms/app/controller/SprayTaskController.java

@ -25,7 +25,7 @@ public class SprayTaskController {
public Result<SprayTaskStatusVO> 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);
}

16
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<List<DeviceCommand>> 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<Point2D> sprayStepList = new ArrayList<>();
sprayTask.setSuspendable(true);//可以暂停单次喷涂范围内可以进行暂停
deviceStatus.setSuspendable(true);
for (List<DeviceCommand> deviceCommandAgg : deviceCommandList) {//单次喷涂
for (List<DeviceCommand> sprayStepCommands : sprayTaskStep.getSpraySteps()) {//单次喷涂
if (reCurrentStep < currentStep) {
break;
}
List<CommandFuture> 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();//停止推动注射泵

12
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<List<List<DeviceCommand>>> spraySteps = new CopyOnWriteArrayList<>();
private final List<SprayTaskStep> sprayTaskStepList = new CopyOnWriteArrayList<>();
/**
* 当前正在执行的步骤序号
@ -48,7 +48,7 @@ public class SprayTask {
/**
* 已喷涂点位
*/
private volatile List<List<Point2D>> sprayedPoints = new CopyOnWriteArrayList<>();
private volatile List<SprayTaskSprayed> 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();
}
}

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

22
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<Point2D> sprayedPoints;
}

22
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<List<DeviceCommand>> spraySteps;
}

5
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<List<Point2D>> sprayedPoints = new CopyOnWriteArrayList<>();
private volatile List<SprayTaskSprayed> sprayTaskSprayedList;
/**
* 喷涂参数
*/
@Schema(description = "喷涂参数")
private SprayParams sprayParams = new SprayParams();
private SprayParams sprayParams;
}
Loading…
Cancel
Save