From 226d6b5d5a83c509b64245d2f5529ab848b59d4c Mon Sep 17 00:00:00 2001 From: sige Date: Mon, 25 Dec 2023 14:27:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=95=E7=AE=A1=E4=BB=BB=E5=8A=A1=E4=BF=9D?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boditech/controller/DeviceController.java | 16 ++- .../boditech/controller/TestController.java | 111 +++++++++++---------- .../boditech/entity/MdbTestTubeRackTestTask.java | 14 ++- .../entity/MdbTestTubeRackTestTaskTube.java | 23 ++++- .../boditech/entity/ParamTestRegularAppend.java | 7 -- .../entity/ParamTestRegularAppendTask.java | 16 --- .../parameter/ParamTestTubeRackTaskSave.java | 12 +++ .../parameter/ParamTestTubeRackTaskSaveTube.java | 20 ++++ .../mapper/TestTubeRackTestTaskMapper.java | 26 +++++ .../mapper/TestTubeRackTestTaskTubeMapper.java | 18 ++++ .../boditech/service/AccountService.java | 8 ++ .../dreamworks/boditech/service/DeviceService.java | 53 +++++++--- .../dreamworks/boditech/service/TestService.java | 87 ++++++++++++++++ 13 files changed, 315 insertions(+), 96 deletions(-) delete mode 100644 src/main/java/com/dreamworks/boditech/entity/ParamTestRegularAppend.java delete mode 100644 src/main/java/com/dreamworks/boditech/entity/ParamTestRegularAppendTask.java create mode 100644 src/main/java/com/dreamworks/boditech/entity/parameter/ParamTestTubeRackTaskSave.java create mode 100644 src/main/java/com/dreamworks/boditech/entity/parameter/ParamTestTubeRackTaskSaveTube.java create mode 100644 src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskMapper.java create mode 100644 src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskTubeMapper.java diff --git a/src/main/java/com/dreamworks/boditech/controller/DeviceController.java b/src/main/java/com/dreamworks/boditech/controller/DeviceController.java index b7a3df0..a13e655 100644 --- a/src/main/java/com/dreamworks/boditech/controller/DeviceController.java +++ b/src/main/java/com/dreamworks/boditech/controller/DeviceController.java @@ -36,6 +36,13 @@ public class DeviceController extends BaseController { return this.success(); } + @ResponseBody + @PostMapping("/api/device/start") + public ApiResponse start() { + this.deviceService.start(); + return this.success(); + } + @@ -239,15 +246,6 @@ public class DeviceController extends BaseController { )); } - - - @ResponseBody - @PostMapping("/api/device/start") - public ApiResponse start() { -// this.deviceService.start(); - return this.success(); - } - @ResponseBody @PostMapping("/api/device/stop") public ApiResponse stop() { diff --git a/src/main/java/com/dreamworks/boditech/controller/TestController.java b/src/main/java/com/dreamworks/boditech/controller/TestController.java index 3518468..7c00a07 100644 --- a/src/main/java/com/dreamworks/boditech/controller/TestController.java +++ b/src/main/java/com/dreamworks/boditech/controller/TestController.java @@ -1,7 +1,9 @@ package com.dreamworks.boditech.controller; import com.dreamworks.boditech.controller.entity.ApiResponse; -import com.dreamworks.boditech.entity.ParamTestEmergencyAppend; -import com.dreamworks.boditech.entity.ParamTestRegularAppend; +import com.dreamworks.boditech.entity.MdbTestTubeRackTestTask; +import com.dreamworks.boditech.entity.parameter.ParamTestTubeRackTaskSave; +import com.dreamworks.boditech.service.TestService; +import jakarta.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -12,53 +14,14 @@ import java.util.List; import java.util.Map; @Controller public class TestController extends BaseController { - @ResponseBody - @PostMapping("/api/test/list") - public ApiResponse list(@RequestBody Map params) { - List> list = new ArrayList<>(); - for (int i = 0; i < 20; i++) { - Map item = new HashMap<>(); - item.put("recordUUID", "202110-01"); - item.put("samplePID", "ABCD1234"); - item.put("sampleUID", "016"); - item.put("projectName", "hsCRP"); - item.put("lotCode", "1234567890"); - item.put("tubeIndex", "05"); - item.put("tubeType", "WB"); - item.put("sampleType", "FB"); - item.put("incubateStartedAt", "2012-12-15 00:00:44"); - item.put("incubateTime", "3600"); - item.put("status", "INUSE"); - item.put("slotIndex", Integer.toString(i)); - list.add(item); - } - return this.success(list); - } - - @ResponseBody - @PostMapping("/api/test/emergency-append") - public ApiResponse testEmergencyAppend( @RequestBody Object param) { - // this.deviceService.testEmergencyAppend(param); - return this.success(); - } - - @ResponseBody - @PostMapping("/api/test/test-tube-rack-append") - public ApiResponse testRegularAppend(@RequestBody ParamTestRegularAppend param ) { - // this.deviceService.regularTaskAppend(param); - return this.success(); - } - - @ResponseBody - @PostMapping("/api/test/test-tube-rack-batch-delete") - public ApiResponse testTubeRackBatchDelete( @RequestBody Map params ) { - return this.success(); - } + @Resource + private TestService testService; @ResponseBody @PostMapping("/api/test/test-tube-rack-save") - public ApiResponse testTubeRackSave( @RequestBody Map params ) { - return this.success(Map.of("id", 10)); + public ApiResponse testTubeRackTaskSave(@RequestBody ParamTestTubeRackTaskSave param ) { + MdbTestTubeRackTestTask task = this.testService.testTubeRackTaskSave(param); + return this.success(task); } @ResponseBody @@ -87,7 +50,7 @@ public class TestController extends BaseController { tube.put("projects", projects); tube.put("sampleTypeDetectType", "MANUAL"); tube.put("sampleUid", "016"); - tube.put("sampleType","FB"); + tube.put("sampleType","WB"); tube.put("barCode", "123456789"); tube.put("preprocess", Map.of("preprocess",true)); tubes.add(tube); @@ -117,7 +80,7 @@ public class TestController extends BaseController { tube.put("projects", projects); tube.put("sampleTypeDetectType", "MANUAL"); tube.put("sampleUid", "016"); - tube.put("sampleType","FB"); + tube.put("sampleType","WB"); tube.put("barCode", "123456789"); tube.put("preprocess", Map.of("preprocess",true)); tubes2.add(tube); @@ -127,7 +90,7 @@ public class TestController extends BaseController { Map item3 = new HashMap<>(); item3.put("id", 3); - item3.put("status", "WAITING"); + item3.put("status", "CONFIGURING"); item3.put("tubeTypeDetectType", "AUTO"); item3.put("tubeType", ""); item3.put("editable", true); @@ -147,7 +110,7 @@ public class TestController extends BaseController { tube.put("projects", projects); tube.put("sampleTypeDetectType", "MANUAL"); tube.put("sampleUid", "016"); - tube.put("sampleType","FB"); + tube.put("sampleType","WB"); tube.put("barCode", "123456789"); tube.put("preprocess", Map.of("preprocess",true)); tubes3.add(tube); @@ -158,6 +121,54 @@ public class TestController extends BaseController { return this.success(list); } + + + + + + + + + + + + + @ResponseBody + @PostMapping("/api/test/list") + public ApiResponse list(@RequestBody Map params) { + List> list = new ArrayList<>(); + for (int i = 0; i < 20; i++) { + Map item = new HashMap<>(); + item.put("recordUUID", "202110-01"); + item.put("samplePID", "ABCD1234"); + item.put("sampleUID", "016"); + item.put("projectName", "hsCRP"); + item.put("lotCode", "1234567890"); + item.put("tubeIndex", "05"); + item.put("tubeType", "WB"); + item.put("sampleType", "FB"); + item.put("incubateStartedAt", "2012-12-15 00:00:44"); + item.put("incubateTime", "3600"); + item.put("status", "INUSE"); + item.put("slotIndex", Integer.toString(i)); + list.add(item); + } + return this.success(list); + } + + @ResponseBody + @PostMapping("/api/test/emergency-append") + public ApiResponse testEmergencyAppend( @RequestBody Object param) { + // this.deviceService.testEmergencyAppend(param); + return this.success(); + } + + @ResponseBody + @PostMapping("/api/test/test-tube-rack-batch-delete") + public ApiResponse testTubeRackBatchDelete( @RequestBody Map params ) { + return this.success(); + } + @ResponseBody @PostMapping("/api/test/test-tube-rack-update") public ApiResponse testTubeRackUpdate( @RequestBody Map params ) { diff --git a/src/main/java/com/dreamworks/boditech/entity/MdbTestTubeRackTestTask.java b/src/main/java/com/dreamworks/boditech/entity/MdbTestTubeRackTestTask.java index f290a03..0c74856 100644 --- a/src/main/java/com/dreamworks/boditech/entity/MdbTestTubeRackTestTask.java +++ b/src/main/java/com/dreamworks/boditech/entity/MdbTestTubeRackTestTask.java @@ -1,2 +1,14 @@ -package com.dreamworks.boditech.entity;public class MdbTestTubeRackTestTask { +package com.dreamworks.boditech.entity; +public class MdbTestTubeRackTestTask { + public Integer id; + public String status; + public String tubeTypeDetectType; + public String tubeType; + public Boolean editable; + public Long createdAt; + public Integer createdBy; + public Long updatedAt; + public Integer updatedBy; + public Long execStartedAt; + public Long execFinishedAt; } diff --git a/src/main/java/com/dreamworks/boditech/entity/MdbTestTubeRackTestTaskTube.java b/src/main/java/com/dreamworks/boditech/entity/MdbTestTubeRackTestTaskTube.java index 498b398..815667e 100644 --- a/src/main/java/com/dreamworks/boditech/entity/MdbTestTubeRackTestTaskTube.java +++ b/src/main/java/com/dreamworks/boditech/entity/MdbTestTubeRackTestTaskTube.java @@ -1,2 +1,23 @@ -package com.dreamworks.boditech.entity;public class MdbTestTubeRackTestTaskTube { +package com.dreamworks.boditech.entity; +public class MdbTestTubeRackTestTaskTube { + // id + public Integer id; + // test tube rack test rack id + public Integer rackId; + // index of tube + public Integer index; + // project detect type + public String projectDetectType; + // project ids + public String projectIds; + // sample type detect type + public String sampleTypeDetectType; + // sample type + public String sampleType; + // sample uid + public String sampleUid; + // bar code + public String barCode; + // preprocess + public Boolean attenuation; } diff --git a/src/main/java/com/dreamworks/boditech/entity/ParamTestRegularAppend.java b/src/main/java/com/dreamworks/boditech/entity/ParamTestRegularAppend.java deleted file mode 100644 index c7466f4..0000000 --- a/src/main/java/com/dreamworks/boditech/entity/ParamTestRegularAppend.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dreamworks.boditech.entity; -import java.util.List; -public class ParamTestRegularAppend { - public String id; - // tasks - public List tubes; -} diff --git a/src/main/java/com/dreamworks/boditech/entity/ParamTestRegularAppendTask.java b/src/main/java/com/dreamworks/boditech/entity/ParamTestRegularAppendTask.java deleted file mode 100644 index 88639c4..0000000 --- a/src/main/java/com/dreamworks/boditech/entity/ParamTestRegularAppendTask.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.dreamworks.boditech.entity; -import java.util.List; -public class ParamTestRegularAppendTask { - // tube index - public Integer tubeIndex; - // tube type - public String tubeType; - // project name - public List projectIds; - // blood type - public String sampleType; - // bar code - public String barCode; - // user id - public String sampleUid; -} diff --git a/src/main/java/com/dreamworks/boditech/entity/parameter/ParamTestTubeRackTaskSave.java b/src/main/java/com/dreamworks/boditech/entity/parameter/ParamTestTubeRackTaskSave.java new file mode 100644 index 0000000..1bf7975 --- /dev/null +++ b/src/main/java/com/dreamworks/boditech/entity/parameter/ParamTestTubeRackTaskSave.java @@ -0,0 +1,12 @@ +package com.dreamworks.boditech.entity.parameter; +import java.util.List; +public class ParamTestTubeRackTaskSave { + // test tube rack task id + public Integer id; + // tube type detect type + public String tubeTypeDetectType; + // tube type + public String tubeType; + // tasks + public List tubes; +} diff --git a/src/main/java/com/dreamworks/boditech/entity/parameter/ParamTestTubeRackTaskSaveTube.java b/src/main/java/com/dreamworks/boditech/entity/parameter/ParamTestTubeRackTaskSaveTube.java new file mode 100644 index 0000000..7425f4e --- /dev/null +++ b/src/main/java/com/dreamworks/boditech/entity/parameter/ParamTestTubeRackTaskSaveTube.java @@ -0,0 +1,20 @@ +package com.dreamworks.boditech.entity.parameter; +import java.util.List; +public class ParamTestTubeRackTaskSaveTube { + // index of tube + public Integer tubeIndex; + // project detect type + public String projectDetectType; + // project ids + public List projectIds; + // sample type detect type + public String sampleTypeDetectType; + // sample type + public String sampleType; + // sample uid + public String sampleUid; + // bar code + public String barCode; + // preprocess + public Boolean attenuation; +} diff --git a/src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskMapper.java b/src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskMapper.java new file mode 100644 index 0000000..40a6d59 --- /dev/null +++ b/src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskMapper.java @@ -0,0 +1,26 @@ +package com.dreamworks.boditech.mapper; +import com.dreamworks.boditech.entity.MdbTestTubeRackTestTask; +import org.apache.ibatis.annotations.*; + +@Mapper +public interface TestTubeRackTestTaskMapper { + @Insert("INSERT INTO btd_test_tube_rack_test_tasks " + + "(status, tubeTypeDetectType, tubeType, editable, createdAt, createdBy) " + + "VALUES " + + "(#{status}, #{tubeTypeDetectType}, #{tubeType}, #{editable}, #{createdAt}, #{createdBy})" + ) + @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id") + void insert(MdbTestTubeRackTestTask task); + + @Update("UPDATE btd_test_tube_rack_test_tasks SET " + + "tubeTypeDetectType = #{tubeTypeDetectType}, " + + "tubeType = #{tubeType}, " + + "updatedAt = #{updatedAt}, " + + "updatedBy = #{updatedBy} " + + "WHERE id = #{id}" + ) + void update(MdbTestTubeRackTestTask task); + + @Select("SELECT * FROM btd_test_tube_rack_test_tasks WHERE id = #{id}") + MdbTestTubeRackTestTask findById(Integer id); +} diff --git a/src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskTubeMapper.java b/src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskTubeMapper.java new file mode 100644 index 0000000..9ea431c --- /dev/null +++ b/src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskTubeMapper.java @@ -0,0 +1,18 @@ +package com.dreamworks.boditech.mapper; +import com.dreamworks.boditech.entity.MdbTestTubeRackTestTaskTube; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Options; +@Mapper +public interface TestTubeRackTestTaskTubeMapper { + @Insert("INSERT INTO btd_test_tube_rack_test_task_tubes " + + "(rackId, `index`, projectDetectType, projectIds, sampleTypeDetectType, sampleType, sampleUid, barCode, attenuation) " + + "VALUES " + + "(#{rackId}, #{index}, #{projectDetectType}, #{projectIds}, #{sampleTypeDetectType}, #{sampleType}, #{sampleUid}, #{barCode}, #{attenuation})") + @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id") + void insert(MdbTestTubeRackTestTaskTube tube); + + @Delete("DELETE FROM btd_test_tube_rack_test_task_tubes WHERE rackId = #{rackId}") + void deleteAllByRackId(Integer rackId); +} diff --git a/src/main/java/com/dreamworks/boditech/service/AccountService.java b/src/main/java/com/dreamworks/boditech/service/AccountService.java index 34b107d..5e805ee 100644 --- a/src/main/java/com/dreamworks/boditech/service/AccountService.java +++ b/src/main/java/com/dreamworks/boditech/service/AccountService.java @@ -20,6 +20,14 @@ public class AccountService { // current user private Account curAccount = null; + // get current user id + public Integer getCurrentAccountId() { + if ( null == this.curAccount ) { + return 0; + } + return this.curAccount.id; + } + // get current user public Account getCurAccount() { return this.curAccount; diff --git a/src/main/java/com/dreamworks/boditech/service/DeviceService.java b/src/main/java/com/dreamworks/boditech/service/DeviceService.java index f35779b..3ec8d54 100644 --- a/src/main/java/com/dreamworks/boditech/service/DeviceService.java +++ b/src/main/java/com/dreamworks/boditech/service/DeviceService.java @@ -5,8 +5,8 @@ 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.ParamTestRegularAppend; -import com.dreamworks.boditech.entity.ParamTestRegularAppendTask; +import com.dreamworks.boditech.entity.parameter.ParamTestTubeRackTaskSave; +import com.dreamworks.boditech.entity.parameter.ParamTestTubeRackTaskSaveTube; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import java.util.*; @@ -59,6 +59,43 @@ public class DeviceService { this.device.largeBufferTubes.clear(); } + /** + * start task executor + */ + public void start() { + this.actionLog.log("device.start"); + this.taskExecutor = new Executor(this.tasks, this.device); + this.taskExecutorThread = new Thread(this.taskExecutor); + this.taskExecutorThread.setName("task-executor"); + this.taskExecutorThread.start(); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -129,14 +166,6 @@ public class DeviceService { return new HashMap<>(); } - // start - public void start() { - this.taskExecutor = new Executor(this.tasks, this.device); - this.taskExecutorThread = new Thread(this.taskExecutor); - this.taskExecutorThread.setName("task-executor"); - this.taskExecutorThread.start(); - } - // stop public void stop() { TaskStopReset task = new TaskStopReset(); @@ -162,10 +191,10 @@ public class DeviceService { } // regular task append - public void regularTaskAppend(ParamTestRegularAppend param) { + public void regularTaskAppend(ParamTestTubeRackTaskSave param) { TaskBatchTubePrepare task = new TaskBatchTubePrepare(); task.tests = new ArrayList<>(); - for (ParamTestRegularAppendTask taskItem : param.tubes) { + for (ParamTestTubeRackTaskSaveTube taskItem : param.tubes) { TaskBatchTubeTestInfo test = new TaskBatchTubeTestInfo(); // test.tubeIndex = taskItem.tubeIndex; // test.patientCode = taskItem.patientCode; diff --git a/src/main/java/com/dreamworks/boditech/service/TestService.java b/src/main/java/com/dreamworks/boditech/service/TestService.java index 8367cae..7a46e6e 100644 --- a/src/main/java/com/dreamworks/boditech/service/TestService.java +++ b/src/main/java/com/dreamworks/boditech/service/TestService.java @@ -1,18 +1,105 @@ package com.dreamworks.boditech.service; +import com.dreamworks.boditech.entity.MdbTestTubeRackTestTask; +import com.dreamworks.boditech.entity.MdbTestTubeRackTestTaskTube; import com.dreamworks.boditech.entity.Test; import com.dreamworks.boditech.entity.TestStepLogEntry; +import com.dreamworks.boditech.entity.parameter.ParamTestTubeRackTaskSave; +import com.dreamworks.boditech.entity.parameter.ParamTestTubeRackTaskSaveTube; import com.dreamworks.boditech.mapper.TestMapper; import com.dreamworks.boditech.mapper.TestStepMapper; +import com.dreamworks.boditech.mapper.TestTubeRackTestTaskMapper; +import com.dreamworks.boditech.mapper.TestTubeRackTestTaskTubeMapper; import jakarta.annotation.Resource; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + @Service public class TestService { @Resource private TestMapper testMapper; @Resource private TestStepMapper testStepMapper; + @Resource + private TestTubeRackTestTaskMapper testTubeRackTestTaskMapper; + @Resource + private TestTubeRackTestTaskTubeMapper testTubeRackTestTaskTubeMapper; + @Resource + @Lazy + private AccountService accountService; + + // test tube rack task save + public MdbTestTubeRackTestTask testTubeRackTaskSave(ParamTestTubeRackTaskSave param) { + if ( null == param.id ) { + return this.testTubeRackTaskSaveInsert(param); + } else { + return this.testTubeRackTaskSaveUpdate(param); + } + } + + // test tube rack task save insert + private MdbTestTubeRackTestTask testTubeRackTaskSaveInsert (ParamTestTubeRackTaskSave param) { + MdbTestTubeRackTestTask task = new MdbTestTubeRackTestTask(); + task.status = "CONFIGURING"; + task.editable = true; + task.createdAt = System.currentTimeMillis(); + task.createdBy = this.accountService.getCurrentAccountId(); + task.tubeTypeDetectType = param.tubeTypeDetectType; + task.tubeType = param.tubeType; + this.testTubeRackTestTaskMapper.insert(task); + this.testTubeRackTaskSaveUpdateTubes(task, param); + return task; + } + + // test tube rack task save update + private MdbTestTubeRackTestTask testTubeRackTaskSaveUpdate (ParamTestTubeRackTaskSave param) { + MdbTestTubeRackTestTask task = this.testTubeRackTestTaskMapper.findById(param.id); + if ( null == task ) { + throw new RuntimeException("TEST_TUBE_RACK_TASK_NOT_FOUND"); + } + if ( !task.editable ) { + throw new RuntimeException("TEST_TUBE_RACK_TASK_NOT_EDITABLE"); + } + task.tubeTypeDetectType = param.tubeTypeDetectType; + task.tubeType = param.tubeType; + task.updatedAt = System.currentTimeMillis(); + task.updatedBy = this.accountService.getCurrentAccountId(); + this.testTubeRackTestTaskMapper.update(task); + this.testTubeRackTaskSaveUpdateTubes(task, param); + return task; + } + + // test tube rack task save update tubes + private void testTubeRackTaskSaveUpdateTubes(MdbTestTubeRackTestTask task, ParamTestTubeRackTaskSave param) { + this.testTubeRackTestTaskTubeMapper.deleteAllByRackId(task.id); + for (ParamTestTubeRackTaskSaveTube tube : param.tubes) { + MdbTestTubeRackTestTaskTube item = new MdbTestTubeRackTestTaskTube(); + item.rackId = task.id; + item.index = tube.tubeIndex; + item.projectDetectType = tube.projectDetectType; + item.sampleTypeDetectType = tube.sampleTypeDetectType; + item.sampleType = tube.sampleType; + 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); + this.testTubeRackTestTaskTubeMapper.insert(item); + } + } + + + + + + + // create test public void insert(Test test) {