Browse Source

fix:修复第二次喷涂无法结束的问题

master
白凤吉 3 weeks ago
parent
commit
4e985f487b
  1. 11
      src/main/java/com/qyft/ms/app/device/spray/SprayTaskExecutor.java
  2. 1
      src/main/java/com/qyft/ms/app/device/status/SprayTask.java
  3. 6
      src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStop.java

11
src/main/java/com/qyft/ms/app/device/spray/SprayTaskExecutor.java

@ -198,19 +198,22 @@ public class SprayTaskExecutor {
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SUCCESS, "喷涂任务执行成功")); webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SUCCESS, "喷涂任务执行成功"));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SPRAY_TASK_FINISH, "喷涂任务结束")); webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SPRAY_TASK_FINISH, "喷涂任务结束"));
sprayTask.clear();
deviceStatus.setSpraying(false);//是否正在进行喷涂
deviceStatus.setPaused(false);//是否暂停
} catch (InterruptedException e) { } catch (InterruptedException e) {
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SEND, "喷涂任务线程停止")); webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SEND, "喷涂任务线程停止"));
} catch (Exception e) { } catch (Exception e) {
log.info("喷涂任务失败", e); log.info("喷涂任务失败", e);
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.FAIL, "喷涂任务执行失败")); webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.FAIL, "喷涂任务执行失败"));
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SPRAY_TASK_FINISH, "喷涂任务结束")); webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SPRAY_TASK_FINISH, "喷涂任务结束"));
} finally {
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SEND, "喷涂任务线程退出"));
if(sprayTask.isPaused()){//如果不是暂停状态的话则清空数据
sprayTask.clear(); sprayTask.clear();
deviceStatus.setSpraying(false);//是否正在进行喷涂 deviceStatus.setSpraying(false);//是否正在进行喷涂
deviceStatus.setPaused(false);//是否暂停 deviceStatus.setPaused(false);//是否暂停
}
} finally {
webSocketService.pushDebugMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SEND, "喷涂任务线程退出"));
// 在线程结束后将 taskThread 设置为 null保证状态一致和资源释放 // 在线程结束后将 taskThread 设置为 null保证状态一致和资源释放
synchronized (this) { synchronized (this) {
taskThread = null; taskThread = null;

1
src/main/java/com/qyft/ms/app/device/status/SprayTask.java

@ -76,6 +76,7 @@ public class SprayTask {
cmdId = null; cmdId = null;
cmdCode = null; cmdCode = null;
paused = false; paused = false;
close = false;
spraying = false; spraying = false;
currentStep = 0; currentStep = 0;
sprayTaskParams = null; sprayTaskParams = null;

6
src/main/java/com/qyft/ms/app/front/cmd/business/MatrixSprayStop.java

@ -49,6 +49,7 @@ public class MatrixSprayStop extends BaseCommandHandler {
webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SPRAY_TASK_FINISH, "喷涂任务结束")); webSocketService.pushCMDResponseMsg(FrontResponseGenerator.generateJson(sprayTask.getCmdId(), sprayTask.getCmdCode(), CommandStatus.SPRAY_TASK_FINISH, "喷涂任务结束"));
return runAsync(() -> { return runAsync(() -> {
try{
sprayTask.setClose(true); sprayTask.setClose(true);
sprayTaskExecutor.stopTask();//终止喷涂任务线程 sprayTaskExecutor.stopTask();//终止喷涂任务线程
@ -80,10 +81,11 @@ public class MatrixSprayStop extends BaseCommandHandler {
CommandFuture motorYOriginCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorYOriginCommand); CommandFuture motorYOriginCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorYOriginCommand);
CommandFuture motorZOriginCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorZOriginCommand); CommandFuture motorZOriginCommandFuture = deviceCommandService.sendCommand(form.getCmdId(), form.getCmdCode(), motorZOriginCommand);
commandWait(motorXOriginCommandFuture, motorYOriginCommandFuture, motorZOriginCommandFuture); commandWait(motorXOriginCommandFuture, motorYOriginCommandFuture, motorZOriginCommandFuture);
SprayTask.getInstance().clear();
}finally {
sprayTask.clear();
deviceStatus.setSpraying(false); deviceStatus.setSpraying(false);
deviceStatus.setPaused(false); deviceStatus.setPaused(false);
}
}); });
} }
} }
Loading…
Cancel
Save