From 21ec078a98bc9293f9b08bd68dc6a009a96763f2 Mon Sep 17 00:00:00 2001 From: sige Date: Thu, 28 Dec 2023 21:14:33 +0800 Subject: [PATCH] - --- .../boditech/controller/DeviceController.java | 7 +- .../boditech/controller/TestController.java | 45 ++++++++++-- .../dreamworks/boditech/driver/task/Executor.java | 16 +++-- .../boditech/driver/task/TaskTestEmergency.java | 1 + .../boditech/driver/task/TaskTestRegular.java | 52 +++++++++----- .../driver/task/TaskTestTubeRackPrepare.java | 80 ++++++++++++++-------- .../entity/MdbTestTubeRackTestTaskTube.java | 11 +++ .../com/dreamworks/boditech/mapper/TestMapper.java | 6 +- .../mapper/TestTubeRackTestTaskMapper.java | 6 ++ .../mapper/TestTubeRackTestTaskTubeMapper.java | 7 +- .../dreamworks/boditech/service/DeviceService.java | 21 ------ .../dreamworks/boditech/service/TestService.java | 50 ++++++++++---- 12 files changed, 202 insertions(+), 100 deletions(-) diff --git a/src/main/java/com/dreamworks/boditech/controller/DeviceController.java b/src/main/java/com/dreamworks/boditech/controller/DeviceController.java index a1c56cd..057e45a 100644 --- a/src/main/java/com/dreamworks/boditech/controller/DeviceController.java +++ b/src/main/java/com/dreamworks/boditech/controller/DeviceController.java @@ -175,6 +175,11 @@ public class DeviceController extends BaseController { @ResponseBody @PostMapping("/api/device/init") public ApiResponse init() { + if ( this.deviceService.device.enable ) { + this.deviceService.reset(false); + return this.success(); + } + if ( initCount > 0 ) { this.initCount --; ApiResponse response = new ApiResponse(); @@ -351,7 +356,6 @@ public class DeviceController extends BaseController { } - @ResponseBody @PostMapping("/api/device/test-tube-rack-status-get") public ApiResponse testTubeRackStatusGet() { @@ -360,6 +364,7 @@ public class DeviceController extends BaseController { List> tasks = new ArrayList<>(); for ( int ti=0; ti<3; ti++ ) { Map task = new HashMap<>(); + task.put("projectColor", "red"); task.put("projectName", "hsCRP"); task.put("projectId", "01"); tasks.add(task); diff --git a/src/main/java/com/dreamworks/boditech/controller/TestController.java b/src/main/java/com/dreamworks/boditech/controller/TestController.java index 0d7547a..5f2d444 100644 --- a/src/main/java/com/dreamworks/boditech/controller/TestController.java +++ b/src/main/java/com/dreamworks/boditech/controller/TestController.java @@ -48,18 +48,19 @@ public class TestController extends BaseController { Map tubeItem = MyCommon.objectToMap(tube); // attach projects to tube - String[] ids = tube.projectIds.isEmpty() ? new String[0] : tube.projectIds.split(","); - List projectIds = new ArrayList<>(); + if ( tube.projectIds.isEmpty() ) { + tube.projectIds = "[]"; + } + List projectIds = MyCommon.jsonToObject(tube.projectIds, List.class); List> projectList = new ArrayList<>(); - for ( String id : ids ) { - Project project = this.projectService.activeProjectGetById(Integer.parseInt(id)); + for ( Integer projectId : projectIds ) { + Project project = this.projectService.activeProjectGetById(projectId); Map projectItem = MyCommon.objectToMap(project); projectItem.remove("steps"); projectList.add(projectItem); - projectIds.add(Integer.parseInt(id)); } tubeItem.put("projects", projectList); - tubeItem.put("projectIds", projectIds); + tubeItem.put("projectIds", projectIds.isEmpty() ? new ArrayList<>() : projectIds); tubeList.add(tubeItem); } item.put("tubes", tubeList); @@ -136,4 +137,36 @@ public class TestController extends BaseController { "list", list )); } + + @ResponseBody + @PostMapping("/api/test/test-tube-rack-status-get") + public ApiResponse testTubeRackStatusGet() { + MdbTestTubeRackTestTask task = this.testService.testTubeRackTaskCurrentGet(); + if (null == task) { + return this.success(null); + } + + Map rackTask = MyCommon.objectToMap(task); + List tubes = this.testService.testTubeRackTaskTubeListByRackId(task.id); + List> tubeList = new ArrayList<>(); + for (MdbTestTubeRackTestTaskTube tube : tubes) { + Map tubeItem = MyCommon.objectToMap(tube); + + // attach projects to tube + List projectIds = MyCommon.jsonToObject(tube.projectIds, List.class); + List> projectList = new ArrayList<>(); + for (Integer projectId : projectIds) { + Project project = this.projectService.activeProjectGetById(projectId); + Map projectItem = MyCommon.objectToMap(project); + projectItem.remove("steps"); + projectList.add(projectItem); + projectIds.add(projectId); + } + tubeItem.put("projects", projectList); + tubeItem.put("projectIds", projectIds); + tubeList.add(tubeItem); + } + rackTask.put("tubes", tubeList); + return this.success(rackTask); + } } diff --git a/src/main/java/com/dreamworks/boditech/driver/task/Executor.java b/src/main/java/com/dreamworks/boditech/driver/task/Executor.java index 9d07534..0a0481c 100644 --- a/src/main/java/com/dreamworks/boditech/driver/task/Executor.java +++ b/src/main/java/com/dreamworks/boditech/driver/task/Executor.java @@ -171,6 +171,14 @@ public class Executor implements Runnable { } } + // append task + public void appendTask(Task task) { + synchronized (this.tasks) { + this.tasks.add(task); + this.tasks.notify(); + } + } + @@ -223,13 +231,7 @@ public class Executor implements Runnable { return this.device; } - // append task - public void appendTask(Task task) { -// synchronized (this.tasks) { -// this.tasks.add(task); -// this.tasks.notify(); -// } - } + /** * pause executor diff --git a/src/main/java/com/dreamworks/boditech/driver/task/TaskTestEmergency.java b/src/main/java/com/dreamworks/boditech/driver/task/TaskTestEmergency.java index d8f7775..7281de1 100644 --- a/src/main/java/com/dreamworks/boditech/driver/task/TaskTestEmergency.java +++ b/src/main/java/com/dreamworks/boditech/driver/task/TaskTestEmergency.java @@ -16,6 +16,7 @@ public class TaskTestEmergency extends TaskTestBase { this.taskExecutor.getDevice().testService.emergencyTaskStart(this.mdbTask); // setup test info + test.barCode = this.mdbTask.barCode; test.taskType = "emergency"; test.taskId = this.mdbTask.id; test.lotCode = this.project.lotCode; diff --git a/src/main/java/com/dreamworks/boditech/driver/task/TaskTestRegular.java b/src/main/java/com/dreamworks/boditech/driver/task/TaskTestRegular.java index 437a3c2..c6af24d 100644 --- a/src/main/java/com/dreamworks/boditech/driver/task/TaskTestRegular.java +++ b/src/main/java/com/dreamworks/boditech/driver/task/TaskTestRegular.java @@ -4,41 +4,57 @@ import com.dreamworks.boditech.driver.actuator.ActMotor; import com.dreamworks.boditech.driver.actuator.ActuatorModule; import com.dreamworks.boditech.driver.consumable.CsmSampleTube; import com.dreamworks.boditech.entity.MdbTest; +import com.dreamworks.boditech.entity.MdbTestTubeRackTestTask; +import com.dreamworks.boditech.entity.MdbTestTubeRackTestTaskTube; public class TaskTestRegular extends TaskTestBase { - // tube index - public Integer tubeIndex; - // tube type - public String tubeType; - // blood type - public String bloodType; - // bar code - public String barcode; - // user id - public String patientCode; + // mdb test tube rack test task + private MdbTestTubeRackTestTask mdbTask; + // mdb test tube rack test task tube + private MdbTestTubeRackTestTaskTube tube; + + // set mdb test tube rack test task + public void setMdbTestTubeRackTestTask(MdbTestTubeRackTestTask mdbTestTubeRackTestTask) { + this.mdbTask = mdbTestTubeRackTestTask; + } + + // set mdb test tube rack test task tube + public void setMdbTestTubeRackTestTaskTube(MdbTestTubeRackTestTaskTube tube) { + this.tube = tube; + } @Override protected void beforeTaskExecute(MdbTest test) { + // setup test info + test.taskType = "regular"; + test.barCode = this.tube.barCode; + test.taskId = this.mdbTask.id; + test.lotCode = this.project.lotCode; + test.projectId = this.project.id; + test.projectName = this.project.name; + test.tubeType = this.mdbTask.tubeType; + test.tubeIndex = this.tube.index; + test.sampleUid = this.tube.sampleUid; + test.sampleType = this.tube.sampleType; + if ( test.sampleType.isEmpty() ) { + // @TODO : 这里的SampleType为空的时候需要从LIS获取数据了 ~~~ + throw new RuntimeException("sampleType is empty"); + } + Device device = this.taskExecutor.getDevice(); ActMotor testTubeMoveMotor = (ActMotor)device.getActuator(ActuatorModule.TEST_TUBE_RACK_MOVE_MOTOR); CsmSampleTube sampleTube = new CsmSampleTube(this.taskExecutor.getDevice()); - sampleTube.type = this.tubeType; + sampleTube.type = test.tubeType; sampleTube.taskType = CsmSampleTube.TASK_TYPE_REGULAR; sampleTube.locationY = this.taskExecutor.getDevice().getLocationByName("testTubeRackTubeSampling.y"); sampleTube.locationX = this.taskExecutor.getDevice().getLocationByName("testTubeRackTubeSampling.x"); this.setSampleTube(sampleTube); - // setup test info - test.tubeType = this.tubeType; -// test.projectName = this.projectName; - test.sampleType = this.bloodType; -// test.patientCode = this.patientCode; - // move tube to sampling position Integer samplingStartPos = device.getLocationByName("testTubeRackTubeSamplingStart"); Integer samplingDistance = device.getLocationByName("testTubeRackTubeSamplingDistance"); - int samplingPos = samplingStartPos + samplingDistance * this.tubeIndex; + int samplingPos = samplingStartPos + samplingDistance * test.tubeIndex; testTubeMoveMotor.moveTo(samplingPos); } diff --git a/src/main/java/com/dreamworks/boditech/driver/task/TaskTestTubeRackPrepare.java b/src/main/java/com/dreamworks/boditech/driver/task/TaskTestTubeRackPrepare.java index 4b4d5ff..071e588 100644 --- a/src/main/java/com/dreamworks/boditech/driver/task/TaskTestTubeRackPrepare.java +++ b/src/main/java/com/dreamworks/boditech/driver/task/TaskTestTubeRackPrepare.java @@ -3,12 +3,32 @@ import com.dreamworks.boditech.driver.Device; import com.dreamworks.boditech.driver.actuator.*; import com.dreamworks.boditech.driver.entity.LisTestInfo; import com.dreamworks.boditech.driver.entity.TaskBatchTubeTestInfo; +import com.dreamworks.boditech.entity.MdbTestTubeRackTestTask; +import com.dreamworks.boditech.entity.MdbTestTubeRackTestTaskTube; +import com.dreamworks.boditech.service.TestService; +import com.dreamworks.boditech.utils.MyCommon; + import java.util.ArrayList; import java.util.List; import java.util.Objects; -public class TaskBatchTubePrepare extends TaskBase { - // tests - public List tests; +public class TaskTestTubeRackPrepare extends TaskBase { + // test service + private TestService testService; + // test tube rack test task + private MdbTestTubeRackTestTask mdbTask; + + // test tube rack test task tubes + public void setTestService(TestService testService) { + this.testService = testService; + } + + // set mdb test tube rack test task + public void setMdbTestTubeRackTestTask(MdbTestTubeRackTestTask mdbTestTubeRackTestTask) { + this.mdbTask = mdbTestTubeRackTestTask; + } + + + // device private Device device; // testTubeMovement @@ -20,6 +40,8 @@ public class TaskBatchTubePrepare extends TaskBase { // testTubeBarcodes private String[] testTubeBarcodes; + + @Override public void execute( Executor executor ) { this.setStatus(Task.STATUS_EXECUTING); @@ -58,6 +80,11 @@ public class TaskBatchTubePrepare extends TaskBase { this.testTubeBarcodes[i] = code; } + if ( this.mdbTask.tubeType.isEmpty() ) { + // @TODO : 试管为空需要扫描试管架了 + this.mdbTask.tubeType = "BloodTube5ml"; + } + // 04. 扫描完成后推送到预备区域 testTubeMoveMotor.moveTo("testTubeRackStandby"); @@ -70,39 +97,38 @@ public class TaskBatchTubePrepare extends TaskBase { // 追加测试到执行器 private void appendTestTasksToExecutor(Executor executor) { - for ( TaskBatchTubeTestInfo test : this.tests ) { - if ( !this.testTubeExistsStatus[test.tubeIndex] ) { + List tubes = this.testService.testTubeRackTaskTubeListByRackId(this.mdbTask.id); + for (MdbTestTubeRackTestTaskTube tube : tubes) { + if ( !this.testTubeExistsStatus[tube.index] ) { continue; } - String barCode = test.barcode; - if ( barCode.isEmpty() ) { - barCode = this.testTubeBarcodes[test.tubeIndex]; + if ( tube.barCode.isEmpty() ) { + tube.barCode = this.testTubeBarcodes[tube.index]; } + // @TODO : 这里的SampleType为空的时候需要从LIS获取数据了 ~~~ // 获取LIS测试信息 - LisTestInfo lisTestInfo = device.lis.requestTestInfo(barCode); - if ( null == lisTestInfo ) { - lisTestInfo = new LisTestInfo(); - lisTestInfo.sampleType = ""; - lisTestInfo.projectNames = new ArrayList<>(); - } - lisTestInfo.sampleType = test.blood.isEmpty() ? lisTestInfo.sampleType : test.blood; - lisTestInfo.projectNames = test.projectNames.isEmpty() ? lisTestInfo.projectNames : test.projectNames; - - // 追加测试任务 - for ( String projectName : lisTestInfo.projectNames ) { +// LisTestInfo lisTestInfo = device.lis.requestTestInfo(barCode); +// if ( null == lisTestInfo ) { +// lisTestInfo = new LisTestInfo(); +// lisTestInfo.sampleType = ""; +// lisTestInfo.projectNames = new ArrayList<>(); +// } +// lisTestInfo.sampleType = test.blood.isEmpty() ? lisTestInfo.sampleType : test.blood; +// lisTestInfo.projectNames = test.projectNames.isEmpty() ? lisTestInfo.projectNames : test.projectNames; + + List projectIds = (List) MyCommon.jsonToObject(tube.projectIds, List.class); + for (Integer projectId : projectIds) { TaskTestRegular task = new TaskTestRegular(); - task.tubeIndex = test.tubeIndex; - task.patientCode = test.patientCode; - task.tubeType = test.testTube; - task.barcode = barCode; -// task.projectName = projectName; - task.bloodType = lisTestInfo.sampleType; + task.setMdbTestTubeRackTestTask(this.mdbTask); + task.setMdbTestTubeRackTestTaskTube(tube); + task.setProjectId(projectId); executor.appendTask(task); - -// Device.LOG.info("append test task: {}", task.projectName); } + + tube.status = MdbTestTubeRackTestTaskTube.STATUS_WAITING; + this.testService.testTubeRackTaskTubeStatusUpdate(tube); } } diff --git a/src/main/java/com/dreamworks/boditech/entity/MdbTestTubeRackTestTaskTube.java b/src/main/java/com/dreamworks/boditech/entity/MdbTestTubeRackTestTaskTube.java index 815667e..8667245 100644 --- a/src/main/java/com/dreamworks/boditech/entity/MdbTestTubeRackTestTaskTube.java +++ b/src/main/java/com/dreamworks/boditech/entity/MdbTestTubeRackTestTaskTube.java @@ -1,5 +1,14 @@ package com.dreamworks.boditech.entity; public class MdbTestTubeRackTestTaskTube { + // status : new + public final static String STATUS_NEW = "NEW"; + // status : waiting + public final static String STATUS_WAITING = "WAITING"; + // status : executing + public final static String STATUS_EXECUTING = "EXECUTING"; + // status : finished + public final static String STATUS_FINISHED = "FINISHED"; + // id public Integer id; // test tube rack test rack id @@ -20,4 +29,6 @@ public class MdbTestTubeRackTestTaskTube { public String barCode; // preprocess public Boolean attenuation; + // status + public String status; } diff --git a/src/main/java/com/dreamworks/boditech/mapper/TestMapper.java b/src/main/java/com/dreamworks/boditech/mapper/TestMapper.java index 15ab4c8..192631b 100644 --- a/src/main/java/com/dreamworks/boditech/mapper/TestMapper.java +++ b/src/main/java/com/dreamworks/boditech/mapper/TestMapper.java @@ -8,9 +8,9 @@ import java.util.List; @Mapper public interface TestMapper { @Insert("INSERT INTO bdt_tests (" + - "lotCode, taskType, taskId, sampleUid, projectId, projectName, sampleType, tubeType, startedAt, startedBy" + + "serialCode, barCode, lotCode, taskType, taskId, sampleUid, projectId, projectName, sampleType, tubeType, startedAt, startedBy" + ") VALUES (" + - "#{lotCode}, #{taskType}, #{taskId}, #{sampleUid}, #{projectId}, #{projectName}, #{sampleType}, #{tubeType}, #{startedAt}, #{startedBy}" + + "#{serialCode}, #{barCode}, #{lotCode}, #{taskType}, #{taskId}, #{sampleUid}, #{projectId}, #{projectName}, #{sampleType}, #{tubeType}, #{startedAt}, #{startedBy}" + ")") @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id") int insert(MdbTest test); @@ -34,8 +34,6 @@ public interface TestMapper { Integer count(ParamTestSearch param); @Update("UPDATE bdt_tests SET " + - "barCode = #{barCode}, " + - "serialCode = #{serialCode}, " + "tubeIndex = #{tubeIndex}, " + "incubateStartedAt = #{incubateStartedAt}, " + "incubateTime = #{incubateTime}, " + diff --git a/src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskMapper.java b/src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskMapper.java index e2f9b6c..733c824 100644 --- a/src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskMapper.java +++ b/src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskMapper.java @@ -40,4 +40,10 @@ public interface TestTubeRackTestTaskMapper { @Delete("DELETE FROM btd_test_tube_rack_test_tasks WHERE id = #{id}") void deleteById(Integer id); + + @Select("SELECT * FROM btd_test_tube_rack_test_tasks WHERE status = 'WAITING' ORDER BY id ASC LIMIT 1") + MdbTestTubeRackTestTask findExecutableTask(); + + @Select("SELECT * FROM btd_test_tube_rack_test_tasks WHERE status = 'EXECUTING' ORDER BY id ASC LIMIT 1") + MdbTestTubeRackTestTask findCurrentTask(); } diff --git a/src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskTubeMapper.java b/src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskTubeMapper.java index dd3b507..95436c4 100644 --- a/src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskTubeMapper.java +++ b/src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskTubeMapper.java @@ -7,9 +7,9 @@ import java.util.List; @Mapper public interface TestTubeRackTestTaskTubeMapper { @Insert("INSERT INTO btd_test_tube_rack_test_task_tubes " + - "(rackId, `index`, projectDetectType, projectIds, sampleTypeDetectType, sampleType, sampleUid, barCode, attenuation) " + + "(rackId, `index`, projectDetectType, projectIds, sampleTypeDetectType, sampleType, sampleUid, barCode, attenuation, status) " + "VALUES " + - "(#{rackId}, #{index}, #{projectDetectType}, #{projectIds}, #{sampleTypeDetectType}, #{sampleType}, #{sampleUid}, #{barCode}, #{attenuation})") + "(#{rackId}, #{index}, #{projectDetectType}, #{projectIds}, #{sampleTypeDetectType}, #{sampleType}, #{sampleUid}, #{barCode}, #{attenuation}, #{status})") @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id") void insert(MdbTestTubeRackTestTaskTube tube); @@ -18,4 +18,7 @@ public interface TestTubeRackTestTaskTubeMapper { @Select("SELECT * FROM btd_test_tube_rack_test_task_tubes WHERE rackId = #{rackId} ORDER BY `index` ASC") List findAllByRackId(Integer rackId); + + @Update("UPDATE btd_test_tube_rack_test_task_tubes SET status = #{status} WHERE id = #{id}") + void statusUpdate( MdbTestTubeRackTestTaskTube tube ); } diff --git a/src/main/java/com/dreamworks/boditech/service/DeviceService.java b/src/main/java/com/dreamworks/boditech/service/DeviceService.java index a521191..10b22c3 100644 --- a/src/main/java/com/dreamworks/boditech/service/DeviceService.java +++ b/src/main/java/com/dreamworks/boditech/service/DeviceService.java @@ -4,8 +4,6 @@ import com.dreamworks.boditech.driver.consumable.*; import com.dreamworks.boditech.driver.entity.*; import com.dreamworks.boditech.driver.task.*; import com.dreamworks.boditech.driver.task.TaskStopReset; -import com.dreamworks.boditech.entity.ParamTestEmergencyAppend; -import com.dreamworks.boditech.entity.Project; import com.dreamworks.boditech.entity.parameter.ParamTestTubeRackTaskSave; import com.dreamworks.boditech.entity.parameter.ParamTestTubeRackTaskSaveTube; import jakarta.annotation.Resource; @@ -208,25 +206,6 @@ public class DeviceService { return new HashMap<>(); } - - - // regular task append - public void regularTaskAppend(ParamTestTubeRackTaskSave param) { - TaskBatchTubePrepare task = new TaskBatchTubePrepare(); - task.tests = new ArrayList<>(); - for (ParamTestTubeRackTaskSaveTube taskItem : param.tubes) { - TaskBatchTubeTestInfo test = new TaskBatchTubeTestInfo(); -// test.tubeIndex = taskItem.tubeIndex; -// test.patientCode = taskItem.patientCode; -// test.barcode = taskItem.barCode; -// test.testTube = taskItem.tubeType; -// test.projectNames = taskItem.projectNames; -// test.blood = taskItem.bloodType; - task.tests.add(test); - } - this.taskAppend(task); - } - // append task public void taskAppend(Task task) { synchronized (this.tasks) { diff --git a/src/main/java/com/dreamworks/boditech/service/TestService.java b/src/main/java/com/dreamworks/boditech/service/TestService.java index fa32816..a798497 100644 --- a/src/main/java/com/dreamworks/boditech/service/TestService.java +++ b/src/main/java/com/dreamworks/boditech/service/TestService.java @@ -1,6 +1,8 @@ package com.dreamworks.boditech.service; import com.dreamworks.boditech.driver.task.Task; import com.dreamworks.boditech.driver.task.TaskTestEmergency; +import com.dreamworks.boditech.driver.task.TaskTestRegular; +import com.dreamworks.boditech.driver.task.TaskTestTubeRackPrepare; import com.dreamworks.boditech.entity.*; import com.dreamworks.boditech.entity.parameter.ParamEmergencyTaskSave; import com.dreamworks.boditech.entity.parameter.ParamTestSearch; @@ -41,18 +43,30 @@ public class TestService { // fetch task from database public List fetchTask() { // find emergency task first - MdbEmergencyTestTask test = this.emergencyTestTaskMapper.findExecutableTask(); - if ( null != test ) { - List projectIds = (List)MyCommon.jsonToObject(test.projectIds, List.class); +// MdbEmergencyTestTask test = this.emergencyTestTaskMapper.findExecutableTask(); +// if ( null != test ) { +// List projectIds = (List)MyCommon.jsonToObject(test.projectIds, List.class); +// List 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(); + if ( null != rack ) { List tasks = new ArrayList<>(); - for (Integer projectId : projectIds) { - TaskTestEmergency task = new TaskTestEmergency(); - task.setMdbEmergencyTestTask(test); - task.setProjectId(projectId); - tasks.add(task); - } + TaskTestTubeRackPrepare prepare = new TaskTestTubeRackPrepare(); + prepare.setTestService(this); + prepare.setMdbTestTubeRackTestTask(rack); + tasks.add(prepare); return tasks; } + return new ArrayList<>(); } @@ -112,11 +126,8 @@ public class TestService { item.sampleUid = tube.sampleUid; item.barCode = tube.barCode; item.attenuation = tube.attenuation; - List projectIds = new ArrayList<>(); - for (Integer projectId : tube.projectIds) { - projectIds.add(projectId.toString()); - } - item.projectIds = String.join(",", projectIds); + item.projectIds = MyCommon.objectToJson(tube.projectIds); + item.status = MdbTestTubeRackTestTaskTube.STATUS_NEW; this.testTubeRackTestTaskTubeMapper.insert(item); } } @@ -131,6 +142,11 @@ 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); @@ -153,6 +169,8 @@ public class TestService { task.updatedAt = System.currentTimeMillis(); task.updatedBy = this.accountService.getCurrentAccountId(); this.testTubeRackTestTaskMapper.updateLock(task); + this.deviceService.getTaskExecutor().newTaskNotify(); + } // test tube rack task unlock @@ -224,6 +242,10 @@ public class TestService { this.emergencyTestTaskMapper.executeCancel(task); } + // test tube rack task current get + public MdbTestTubeRackTestTask testTubeRackTaskCurrentGet() { + return this.testTubeRackTestTaskMapper.findCurrentTask(); + }