|
|
@ -9,6 +9,8 @@ import com.dreamworks.boditech.entity.parameter.ParamTestSearch; |
|
|
|
import com.dreamworks.boditech.entity.parameter.ParamTestTubeRackTaskSave; |
|
|
|
import com.dreamworks.boditech.entity.parameter.ParamTestTubeRackTaskSaveTube; |
|
|
|
import com.dreamworks.boditech.mapper.*; |
|
|
|
import com.dreamworks.boditech.utils.AppError; |
|
|
|
import com.dreamworks.boditech.utils.AppRuntimeException; |
|
|
|
import com.dreamworks.boditech.utils.MyCommon; |
|
|
|
import jakarta.annotation.Resource; |
|
|
|
import org.springframework.context.annotation.Lazy; |
|
|
@ -18,6 +20,7 @@ import java.time.format.DateTimeFormatter; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Calendar; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Objects; |
|
|
|
|
|
|
|
@Service |
|
|
|
public class TestService { |
|
|
@ -43,18 +46,26 @@ public class TestService { |
|
|
|
// fetch task from database |
|
|
|
public List<Task> fetchTask() { |
|
|
|
// find emergency task first |
|
|
|
// MdbEmergencyTestTask test = this.emergencyTestTaskMapper.findExecutableTask(); |
|
|
|
// if ( null != test ) { |
|
|
|
// List<Integer> projectIds = (List<Integer>)MyCommon.jsonToObject(test.projectIds, List.class); |
|
|
|
// List<Task> tasks = new ArrayList<>(); |
|
|
|
// for (Integer projectId : projectIds) { |
|
|
|
// TaskTestEmergency task = new TaskTestEmergency(); |
|
|
|
// task.setMdbEmergencyTestTask(test); |
|
|
|
// task.setProjectId(projectId); |
|
|
|
// tasks.add(task); |
|
|
|
// } |
|
|
|
// return tasks; |
|
|
|
// } |
|
|
|
MdbEmergencyTestTask test = this.emergencyTestTaskMapper.findExecutableTask(); |
|
|
|
if ( null != test ) { |
|
|
|
List<Integer> projectIds = (List<Integer>)MyCommon.jsonToObject(test.projectIds, List.class); |
|
|
|
if (Objects.equals(test.projectDetectType, MdbEmergencyTestTask.PROJECT_DETECT_TYPE_AUTO)) { |
|
|
|
// @TODO : 这里需要从 LIS 获取项目信息之类的数据了, 这里先模拟个hsCRP |
|
|
|
projectIds = List.of(1); |
|
|
|
test.sampleType = "WB"; |
|
|
|
} |
|
|
|
if ( projectIds.isEmpty() ) { |
|
|
|
throw new AppRuntimeException(AppError.TEST_NO_PROJECT_ASSIGNED); |
|
|
|
} |
|
|
|
List<Task> tasks = new ArrayList<>(); |
|
|
|
for (Integer projectId : projectIds) { |
|
|
|
TaskTestEmergency task = new TaskTestEmergency(); |
|
|
|
task.setMdbEmergencyTestTask(test); |
|
|
|
task.setProjectId(projectId); |
|
|
|
tasks.add(task); |
|
|
|
} |
|
|
|
return tasks; |
|
|
|
} |
|
|
|
|
|
|
|
// find test tube rack task |
|
|
|
MdbTestTubeRackTestTask rack = this.testTubeRackTestTaskMapper.findExecutableTask(); |
|
|
@ -142,11 +153,6 @@ public class TestService { |
|
|
|
return this.testTubeRackTestTaskTubeMapper.findAllByRackId(rackId); |
|
|
|
} |
|
|
|
|
|
|
|
// test tube rack task tube status update |
|
|
|
public void testTubeRackTaskTubeStatusUpdate( MdbTestTubeRackTestTaskTube tube ) { |
|
|
|
this.testTubeRackTestTaskTubeMapper.statusUpdate(tube); |
|
|
|
} |
|
|
|
|
|
|
|
// test tube rack task delete |
|
|
|
public void testTubeRackTaskDeleteById(Integer id) { |
|
|
|
this.actionLog.log("test-tube-rack-task.delete", id); |
|
|
@ -247,9 +253,49 @@ public class TestService { |
|
|
|
return this.testTubeRackTestTaskMapper.findCurrentTask(); |
|
|
|
} |
|
|
|
|
|
|
|
// update test tube rack task |
|
|
|
public void regularTaskUpdate( MdbTestTubeRackTestTask task ) { |
|
|
|
this.testTubeRackTestTaskMapper.update(task); |
|
|
|
} |
|
|
|
|
|
|
|
// regular task start |
|
|
|
public void regularTaskStart( MdbTestTubeRackTestTask task ) { |
|
|
|
task.status = MdbTestTubeRackTestTask.STATUS_EXECUTING; |
|
|
|
task.execStartedAt = System.currentTimeMillis(); |
|
|
|
this.testTubeRackTestTaskMapper.testStart(task); |
|
|
|
} |
|
|
|
|
|
|
|
// regular task tube update |
|
|
|
public void regularTaskTubeUpdate( MdbTestTubeRackTestTaskTube tube ) { |
|
|
|
this.testTubeRackTestTaskTubeMapper.update(tube); |
|
|
|
} |
|
|
|
|
|
|
|
// test tube rack task tube status update |
|
|
|
public void regularTaskTubeStatusUpdate( MdbTestTubeRackTestTaskTube tube ) { |
|
|
|
this.testTubeRackTestTaskTubeMapper.statusUpdate(tube); |
|
|
|
} |
|
|
|
|
|
|
|
// regular task tube start |
|
|
|
public void regularTaskTubeStart( MdbTestTubeRackTestTask task, MdbTestTubeRackTestTaskTube tube ) { |
|
|
|
tube.status = MdbTestTubeRackTestTaskTube.STATUS_EXECUTING; |
|
|
|
tube.execStartedAt = System.currentTimeMillis(); |
|
|
|
this.testTubeRackTestTaskTubeMapper.testStart(tube); |
|
|
|
} |
|
|
|
|
|
|
|
// emergency task end |
|
|
|
public void regularTaskTubeEnd( MdbTestTubeRackTestTask task, MdbTestTubeRackTestTaskTube tube ) { |
|
|
|
// @TODO : implement this method later |
|
|
|
tube.status = MdbTestTubeRackTestTaskTube.STATUS_FINISHED; |
|
|
|
tube.execFinishedAt = System.currentTimeMillis(); |
|
|
|
this.testTubeRackTestTaskTubeMapper.testEnd(tube); |
|
|
|
|
|
|
|
Integer finishedCount = this.testTubeRackTestTaskTubeMapper.countByRackIdAndStatus(task.id, MdbTestTubeRackTestTaskTube.STATUS_FINISHED); |
|
|
|
Integer ignoredCount = this.testTubeRackTestTaskTubeMapper.countByRackIdAndStatus(task.id, MdbTestTubeRackTestTaskTube.STATUS_IGNORED); |
|
|
|
Integer totalCount = this.testTubeRackTestTaskTubeMapper.countByRackId(task.id); |
|
|
|
if ( finishedCount + ignoredCount >= totalCount ) { |
|
|
|
task.status = MdbTestTubeRackTestTask.STATUS_FINISHED; |
|
|
|
task.execFinishedAt = System.currentTimeMillis(); |
|
|
|
this.testTubeRackTestTaskMapper.testFinish(task); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// emergency task cancel |
|
|
|