Browse Source

急诊任务修复

master
sige 1 year ago
parent
commit
5da63bf3f4
  1. 52
      src/main/java/com/dreamworks/boditech/driver/task/TaskTestEmergency.java

52
src/main/java/com/dreamworks/boditech/driver/task/TaskTestEmergency.java

@ -1,19 +1,24 @@
package com.dreamworks.boditech.driver.task;
import com.dreamworks.boditech.driver.consumable.CsmSampleTube;
import com.dreamworks.boditech.entity.MdbEmergencyTestTask;
import com.dreamworks.boditech.entity.MdbTest;
import com.dreamworks.boditech.model.MdbEmergencyTestTask;
import com.dreamworks.boditech.model.MdbTest;
import com.dreamworks.boditech.model.MyActiveRecord;
import java.util.Map;
public class TaskTestEmergency extends TaskTestBase {
// mdb emergency test task
private MdbEmergencyTestTask mdbTask;
// set mdb emergency test task
public void setMdbEmergencyTestTask(MdbEmergencyTestTask mdbEmergencyTestTask) {
this.mdbTask = mdbEmergencyTestTask;
public void setMdbEmergencyTestTaskId(Long id) {
this.mdbTask = MyActiveRecord.findById(MdbEmergencyTestTask.class, id);
}
@Override
protected void beforeTaskExecute(MdbTest test) {
this.taskExecutor.getDevice().testService.emergencyTaskStart(this.mdbTask);
// start task
this.mdbTask.status = MdbEmergencyTestTask.STATUS_EXECUTING;
this.mdbTask.execStartedAt = System.currentTimeMillis();
this.mdbTask.save();
// setup test info
test.barCode = this.mdbTask.barCode;
@ -49,11 +54,44 @@ public class TaskTestEmergency extends TaskTestBase {
@Override
protected void afterTaskExecute(MdbTest test) {
this.taskExecutor.getDevice().testService.emergencyTaskEnd(this.mdbTask);
Integer finishCount = MyActiveRecord.count(MdbTest.class, Map.of(
"taskId", this.mdbTask.id,
"taskType", "emergency",
"status", "FINISHED"
));
if ( finishCount < this.mdbTask.getProjectIdList().size() ) {
return ;
}
this.mdbTask.status = MdbEmergencyTestTask.STATUS_FINISHED;
this.mdbTask.execFinishedAt = System.currentTimeMillis();
this.mdbTask.save();
this.releaseBatchEmergencySlot();
}
@Override
protected void afterTestStop(MdbTest test) {
this.taskExecutor.getDevice().testService.emergencyTaskCancel(this.mdbTask);
this.mdbTask.status = MdbEmergencyTestTask.STATUS_CANCELED;
this.mdbTask.execFinishedAt = System.currentTimeMillis();
this.mdbTask.save();
this.releaseBatchEmergencySlot();
}
// release batch emergency slot
private void releaseBatchEmergencySlot() {
String batchId = this.mdbTask.testBatchId;
var tasks = MyActiveRecord.findAll(MdbEmergencyTestTask.class, Map.of(
"testBatchId", batchId,
"status", "FINISHED"
));
if ( 2 != tasks.size() ) { // each batch should have 2 tasks
return ;
}
for ( MdbEmergencyTestTask task : tasks ) {
task.isSlotLocked = 0;
task.save();
}
}
}
Loading…
Cancel
Save