【优化实训加载速度,结束后直接获取下一步】

This commit is contained in:
weizhihong 2022-09-01 18:39:33 +08:00
parent 9d1677128f
commit 8e6060eaa2

View File

@ -72,23 +72,14 @@ public class Training2Service {
return; return;
} }
// 获取运行步骤 // 获取运行步骤
Step2 step = training2.getCurrentRunStep(); Step2 step = getNextStepAndCheckTrainingStatus(training2, simulation);
if (step == null) { // 步骤已经运行完毕 if (step == null) {
training2.finish();
// 发送实训完成消息
sendTrainingFinish(training2, simulation);
return; return;
} }
// 步骤是否已经触发 // 尝试触发步骤
// 没有触发则检查触发状态如果可以触发则继续不能触发则返回 if (!tryTriggerStep(step, simulation)) {
if (!Step2.StepStatus.isAlreadyTrigger(step.getStepStatus()) && !step.doTriggerVail()) {
return; return;
} }
// 发送步骤提示信息
if (!step.isPrompt()) {
step.setPrompt(true); // 标识已发送过消息
sendStepTips(step, simulation);
}
// 获取步骤中未完成的操作 // 获取步骤中未完成的操作
Operation2 operation2 = step.getCurrentRunOperation(); Operation2 operation2 = step.getCurrentRunOperation();
// 操作全部完成的情况检查步骤完成条件 // 操作全部完成的情况检查步骤完成条件
@ -126,7 +117,7 @@ public class Training2Service {
sendOperationFinish(operation2, simulation); sendOperationFinish(operation2, simulation);
// 如果是最后一步直接检查步骤有没有完成 // 如果是最后一步直接检查步骤有没有完成
if (step.getOperations().indexOf(operation2) == (step.getOperations().size() - 1) && completion) { if (step.getOperations().indexOf(operation2) == (step.getOperations().size() - 1) && completion) {
checkTrainStepCompletion(step, simulation); checkStepCompletionAndSendNext(step, simulation);
} }
} }
} }
@ -283,7 +274,7 @@ public class Training2Service {
} }
} }
if (result) { if (result) {
checkTrainStepCompletion(step, simulation); // 直接检查步骤是否完成 checkStepCompletionAndSendNext(step, simulation); // 直接检查步骤是否完成
} }
// 恢复前端运行 // 恢复前端运行
pauseOrStartSimulation(simulation, false); pauseOrStartSimulation(simulation, false);
@ -492,6 +483,55 @@ public class Training2Service {
sendStepFinish(step, simulation); sendStepFinish(step, simulation);
} }
/**
* 获取实训下一步未执行的步骤如果实训已结束则返回null
*/
private Step2 getNextStepAndCheckTrainingStatus(Training2 training2, Simulation simulation) {
// 获取运行步骤
Step2 nextStep = training2.getCurrentRunStep();
if (nextStep == null) { // 步骤已经运行完毕
training2.finish();
// 发送实训完成消息
sendTrainingFinish(training2, simulation);
return null;
}
return nextStep;
}
/**
* 尝试触发步骤如果触发返回true可以继续未触发返回false
*/
private boolean tryTriggerStep(Step2 step, Simulation simulation) {
// 步骤是否已经触发
// 没有触发则检查触发状态如果可以触发则继续不能触发则返回
if (!Step2.StepStatus.isAlreadyTrigger(step.getStepStatus()) && !step.doTriggerVail()) {
return false;
}
// 发送步骤提示信息
if (!step.isPrompt()) {
step.setPrompt(true); // 标识已发送过消息
sendStepTips(step, simulation);
}
return true;
}
/**
* 直接完成并尝试触发下一步
*/
private void checkStepCompletionAndSendNext(Step2 step, Simulation simulation) {
boolean result = step.doCompletionVail();
if (result) {
// 发送步骤完成信息
sendStepFinish(step, simulation);
// 获取运行步骤
Step2 nextStep = getNextStepAndCheckTrainingStatus(simulation.getTraining2(), simulation);
if (nextStep == null) {
return;
}
tryTriggerStep(nextStep, simulation);
}
}
/** /**
* 暂停恢复实训 * 暂停恢复实训
*/ */