|
|
@ -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(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |