Browse Source

试管任务保存

master
sige 2 years ago
parent
commit
226d6b5d5a
  1. 16
      src/main/java/com/dreamworks/boditech/controller/DeviceController.java
  2. 111
      src/main/java/com/dreamworks/boditech/controller/TestController.java
  3. 14
      src/main/java/com/dreamworks/boditech/entity/MdbTestTubeRackTestTask.java
  4. 23
      src/main/java/com/dreamworks/boditech/entity/MdbTestTubeRackTestTaskTube.java
  5. 7
      src/main/java/com/dreamworks/boditech/entity/ParamTestRegularAppend.java
  6. 16
      src/main/java/com/dreamworks/boditech/entity/ParamTestRegularAppendTask.java
  7. 12
      src/main/java/com/dreamworks/boditech/entity/parameter/ParamTestTubeRackTaskSave.java
  8. 20
      src/main/java/com/dreamworks/boditech/entity/parameter/ParamTestTubeRackTaskSaveTube.java
  9. 26
      src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskMapper.java
  10. 18
      src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskTubeMapper.java
  11. 8
      src/main/java/com/dreamworks/boditech/service/AccountService.java
  12. 53
      src/main/java/com/dreamworks/boditech/service/DeviceService.java
  13. 87
      src/main/java/com/dreamworks/boditech/service/TestService.java

16
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() {

111
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<String,Object> params) {
List<Map<String,Object>> list = new ArrayList<>();
for (int i = 0; i < 20; i++) {
Map<String,Object> 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<String,Object> params ) {
return this.success();
}
@Resource
private TestService testService;
@ResponseBody
@PostMapping("/api/test/test-tube-rack-save")
public ApiResponse testTubeRackSave( @RequestBody Map<String,Object> 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<String,Object> 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<String,Object> params) {
List<Map<String,Object>> list = new ArrayList<>();
for (int i = 0; i < 20; i++) {
Map<String,Object> 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<String,Object> params ) {
return this.success();
}
@ResponseBody
@PostMapping("/api/test/test-tube-rack-update")
public ApiResponse testTubeRackUpdate( @RequestBody Map<String,Object> params ) {

14
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;
}

23
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;
}

7
src/main/java/com/dreamworks/boditech/entity/ParamTestRegularAppend.java

@ -1,7 +0,0 @@
package com.dreamworks.boditech.entity;
import java.util.List;
public class ParamTestRegularAppend {
public String id;
// tasks
public List<ParamTestRegularAppendTask> tubes;
}

16
src/main/java/com/dreamworks/boditech/entity/ParamTestRegularAppendTask.java

@ -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<Integer> projectIds;
// blood type
public String sampleType;
// bar code
public String barCode;
// user id
public String sampleUid;
}

12
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<ParamTestTubeRackTaskSaveTube> tubes;
}

20
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<Integer> 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;
}

26
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);
}

18
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);
}

8
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;

53
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;

87
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<String> 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) {

Loading…
Cancel
Save