Browse Source

试管架任务列表,删除,锁定,解除锁定

master
sige 2 years ago
parent
commit
7a3002c066
  1. 165
      src/main/java/com/dreamworks/boditech/controller/TestController.java
  2. 2
      src/main/java/com/dreamworks/boditech/entity/parameter/ParamTestTubeRackTaskSaveTube.java
  3. 3
      src/main/java/com/dreamworks/boditech/mapper/ProjectMapper.java
  4. 17
      src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskMapper.java
  5. 11
      src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskTubeMapper.java
  6. 10
      src/main/java/com/dreamworks/boditech/service/ProjectService.java
  7. 47
      src/main/java/com/dreamworks/boditech/service/TestService.java
  8. 20
      src/main/java/com/dreamworks/boditech/utils/MyCommon.java

165
src/main/java/com/dreamworks/boditech/controller/TestController.java

@ -1,8 +1,12 @@
package com.dreamworks.boditech.controller;
import com.dreamworks.boditech.controller.entity.ApiResponse;
import com.dreamworks.boditech.entity.MdbTestTubeRackTestTask;
import com.dreamworks.boditech.entity.MdbTestTubeRackTestTaskTube;
import com.dreamworks.boditech.entity.Project;
import com.dreamworks.boditech.entity.parameter.ParamTestTubeRackTaskSave;
import com.dreamworks.boditech.service.ProjectService;
import com.dreamworks.boditech.service.TestService;
import com.dreamworks.boditech.utils.MyCommon;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
@ -16,6 +20,8 @@ import java.util.Map;
public class TestController extends BaseController {
@Resource
private TestService testService;
@Resource
private ProjectService projectService;
@ResponseBody
@PostMapping("/api/test/test-tube-rack-save")
@ -28,101 +34,60 @@ public class TestController extends BaseController {
@PostMapping("/api/test/test-tube-rack-list")
public ApiResponse testTubeRackList() {
List<Map<String,Object>> list = new ArrayList<>();
Map<String,Object> item = new HashMap<>();
item.put("id", 1);
item.put("status", "WAITING");
item.put("tubeTypeDetectType", "AUTO");
item.put("tubeType", "");
item.put("editable", false);
List<Map<String,Object>> tubes = new ArrayList<>();
for ( int i=0; i<10; i++ ) {
Map<String,Object> tube = new HashMap<>();
tube.put("tubeIndex", Integer.toString(i));
tube.put("projectDetectType", "MANUAL");
List<Map<String,Object>> projects = new ArrayList<>();
for ( int pi=0; pi<3; pi++ ) {
Map<String,Object> project = new HashMap<>();
project.put("id", Integer.toString(i));
project.put("name", "hsCRP");
project.put("color", "red");
projects.add(project);
}
tube.put("projects", projects);
tube.put("sampleTypeDetectType", "MANUAL");
tube.put("sampleUid", "016");
tube.put("sampleType","WB");
tube.put("barCode", "123456789");
tube.put("preprocess", Map.of("preprocess",true));
tubes.add(tube);
}
item.put("tubes", tubes);
list.add(item);
Map<String,Object> item2 = new HashMap<>();
item2.put("id", 2);
item2.put("status", "WAITING");
item2.put("tubeTypeDetectType", "AUTO");
item2.put("tubeType", "");
item2.put("editable", false);
List<Map<String,Object>> tubes2 = new ArrayList<>();
for ( int i=0; i<10; i++ ) {
Map<String,Object> tube = new HashMap<>();
tube.put("tubeIndex", Integer.toString(i));
tube.put("projectDetectType", "MANUAL");
List<Map<String,Object>> projects = new ArrayList<>();
for ( int pi=0; pi<1; pi++ ) {
Map<String,Object> project = new HashMap<>();
project.put("id", Integer.toString(i));
project.put("name", "hsCRP");
project.put("color", "red");
projects.add(project);
}
tube.put("projects", projects);
tube.put("sampleTypeDetectType", "MANUAL");
tube.put("sampleUid", "016");
tube.put("sampleType","WB");
tube.put("barCode", "123456789");
tube.put("preprocess", Map.of("preprocess",true));
tubes2.add(tube);
}
item2.put("tubes", tubes);
list.add(item2);
Map<String,Object> item3 = new HashMap<>();
item3.put("id", 3);
item3.put("status", "CONFIGURING");
item3.put("tubeTypeDetectType", "AUTO");
item3.put("tubeType", "");
item3.put("editable", true);
List<Map<String,Object>> tubes3 = new ArrayList<>();
for ( int i=0; i<10; i++ ) {
Map<String,Object> tube = new HashMap<>();
tube.put("tubeIndex", Integer.toString(i));
tube.put("projectDetectType", "MANUAL");
List<Map<String,Object>> projects = new ArrayList<>();
for ( int pi=0; pi<1; pi++ ) {
Map<String,Object> project = new HashMap<>();
project.put("id", Integer.toString(i));
project.put("name", "hsCRP");
project.put("color", "red");
projects.add(project);
List<MdbTestTubeRackTestTask> racks = this.testService.testTubeRackTaskList();
for ( MdbTestTubeRackTestTask rack : racks ) {
Map<String,Object> item = MyCommon.objectToMap(rack);
// attach tubes to rack
List<MdbTestTubeRackTestTaskTube> tubes = this.testService.testTubeRackTaskTubeListByRackId(rack.id);
List<Map<String,Object>> tubeList = new ArrayList<>();
for ( MdbTestTubeRackTestTaskTube tube : tubes ) {
Map<String,Object> tubeItem = MyCommon.objectToMap(tube);
// attach projects to tube
String[] ids = tube.projectIds.isEmpty() ? new String[0] : tube.projectIds.split(",");
List<Integer> projectIds = new ArrayList<>();
List<Map<String,Object>> projectList = new ArrayList<>();
for ( String id : ids ) {
Project project = this.projectService.activeProjectGetById(Integer.parseInt(id));
Map<String,Object> projectItem = MyCommon.objectToMap(project);
projectItem.remove("steps");
projectList.add(projectItem);
projectIds.add(Integer.parseInt(id));
}
tubeItem.put("projects", projectList);
tubeItem.put("projectIds", projectIds);
tubeList.add(tubeItem);
}
tube.put("projects", projects);
tube.put("sampleTypeDetectType", "MANUAL");
tube.put("sampleUid", "016");
tube.put("sampleType","WB");
tube.put("barCode", "123456789");
tube.put("preprocess", Map.of("preprocess",true));
tubes3.add(tube);
item.put("tubes", tubeList);
list.add(item);
}
item3.put("tubes", tubes);
list.add(item3);
return this.success(list);
}
@ResponseBody
@PostMapping("/api/test/test-tube-rack-delete")
public ApiResponse testTubeRackBatchDelete( @RequestBody Map<String,Object> params ) {
Integer id = Integer.parseInt(params.get("id").toString());
this.testService.testTubeRackTaskDeleteById(id);
return this.success();
}
@ResponseBody
@PostMapping("/api/test/test-tube-rack-lock")
public ApiResponse testTubeRackLock(@RequestBody Map<String,Object> params) {
Integer id = Integer.parseInt(params.get("id").toString());
this.testService.testTubeRackTestLock(id);
return this.success();
}
@ResponseBody
@PostMapping("/api/test/test-tube-rack-unlock")
public ApiResponse testTubeRackUnlock(@RequestBody Map<String,Object> params) {
Integer id = Integer.parseInt(params.get("id").toString());
this.testService.testTubeRackTestUnlock(id);
return this.success();
}
@ -164,30 +129,6 @@ public class TestController extends BaseController {
}
@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 ) {
return this.success();
}
@ResponseBody
@PostMapping("/api/test/test-tube-rack-lock")
public ApiResponse testTubeRackLock() {
return this.success();
}
@ResponseBody
@PostMapping("/api/test/test-tube-rack-unlock")
public ApiResponse testTubeRackUnlock() {
return this.success();
}
@ResponseBody
@PostMapping("/api/test/search")
public ApiResponse search( @RequestBody Map<String,Object> params ) {
List<Map<String,Object>> list = new ArrayList<>();

2
src/main/java/com/dreamworks/boditech/entity/parameter/ParamTestTubeRackTaskSaveTube.java

@ -2,7 +2,7 @@ package com.dreamworks.boditech.entity.parameter;
import java.util.List;
public class ParamTestTubeRackTaskSaveTube {
// index of tube
public Integer tubeIndex;
public Integer index;
// project detect type
public String projectDetectType;
// project ids

3
src/main/java/com/dreamworks/boditech/mapper/ProjectMapper.java

@ -2,6 +2,9 @@ package com.dreamworks.boditech.mapper;
import com.dreamworks.boditech.entity.Project;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface ProjectMapper {
@Select("SELECT * FROM bdt_projects WHERE id=#{id} LIMIT 1")

17
src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskMapper.java

@ -2,6 +2,8 @@ package com.dreamworks.boditech.mapper;
import com.dreamworks.boditech.entity.MdbTestTubeRackTestTask;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface TestTubeRackTestTaskMapper {
@Insert("INSERT INTO btd_test_tube_rack_test_tasks " +
@ -21,6 +23,21 @@ public interface TestTubeRackTestTaskMapper {
)
void update(MdbTestTubeRackTestTask task);
@Update("UPDATE btd_test_tube_rack_test_tasks SET " +
"editable = #{editable}, " +
"status = #{status}, " +
"updatedAt = #{updatedAt}, " +
"updatedBy = #{updatedBy} " +
"WHERE id = #{id}"
)
void updateLock(MdbTestTubeRackTestTask task);
@Select("SELECT * FROM btd_test_tube_rack_test_tasks WHERE id = #{id}")
MdbTestTubeRackTestTask findById(Integer id);
@Select("SELECT * FROM btd_test_tube_rack_test_tasks ORDER BY createdAt DESC")
List<MdbTestTubeRackTestTask> findAll();
@Delete("DELETE FROM btd_test_tube_rack_test_tasks WHERE id = #{id}")
void deleteById(Integer id);
}

11
src/main/java/com/dreamworks/boditech/mapper/TestTubeRackTestTaskTubeMapper.java

@ -1,9 +1,9 @@
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;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface TestTubeRackTestTaskTubeMapper {
@Insert("INSERT INTO btd_test_tube_rack_test_task_tubes " +
@ -15,4 +15,7 @@ public interface TestTubeRackTestTaskTubeMapper {
@Delete("DELETE FROM btd_test_tube_rack_test_task_tubes WHERE rackId = #{rackId}")
void deleteAllByRackId(Integer rackId);
@Select("SELECT * FROM btd_test_tube_rack_test_task_tubes WHERE rackId = #{rackId} ORDER BY `index` ASC")
List<MdbTestTubeRackTestTaskTube> findAllByRackId(Integer rackId);
}

10
src/main/java/com/dreamworks/boditech/service/ProjectService.java

@ -23,6 +23,16 @@ public class ProjectService {
}
}
// get active project by given id
public Project activeProjectGetById( Integer id ) {
for ( Project project : this.projects ) {
if ( null != project && project.id.equals(id) ) {
return project;
}
}
throw new RuntimeException("PROJECT_CODE_NOT_ACTIVE");
}
// get active project by given code num
public Project activeProjectGetByCodeNum( Integer codeNum, String lotCode ) {
for ( Project project : this.projects ) {

47
src/main/java/com/dreamworks/boditech/service/TestService.java

@ -78,7 +78,7 @@ public class TestService {
for (ParamTestTubeRackTaskSaveTube tube : param.tubes) {
MdbTestTubeRackTestTaskTube item = new MdbTestTubeRackTestTaskTube();
item.rackId = task.id;
item.index = tube.tubeIndex;
item.index = tube.index;
item.projectDetectType = tube.projectDetectType;
item.sampleTypeDetectType = tube.sampleTypeDetectType;
item.sampleType = tube.sampleType;
@ -94,8 +94,53 @@ public class TestService {
}
}
// test tube rack task list
public List<MdbTestTubeRackTestTask> testTubeRackTaskList() {
return this.testTubeRackTestTaskMapper.findAll();
}
// test tube rack task tube list
public List<MdbTestTubeRackTestTaskTube> testTubeRackTaskTubeListByRackId(Integer rackId) {
return this.testTubeRackTestTaskTubeMapper.findAllByRackId(rackId);
}
// test tube rack task delete
public void testTubeRackTaskDeleteById(Integer id) {
this.testTubeRackTestTaskMapper.deleteById(id);
this.testTubeRackTestTaskTubeMapper.deleteAllByRackId(id);
}
// test tube rack task lock
public void testTubeRackTestLock(Integer id) {
MdbTestTubeRackTestTask task = this.testTubeRackTestTaskMapper.findById(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.editable = false;
task.status = "WAITING";
task.updatedAt = System.currentTimeMillis();
task.updatedBy = this.accountService.getCurrentAccountId();
this.testTubeRackTestTaskMapper.updateLock(task);
}
// test tube rack task unlock
public void testTubeRackTestUnlock(Integer id) {
MdbTestTubeRackTestTask task = this.testTubeRackTestTaskMapper.findById(id);
if ( null == task ) {
throw new RuntimeException("TEST_TUBE_RACK_TASK_NOT_FOUND");
}
if ( task.editable ) {
throw new RuntimeException("TEST_TUBE_RACK_TASK_NOT_LOCKED");
}
task.editable = true;
task.status = "CONFIGURING";
task.updatedAt = System.currentTimeMillis();
task.updatedBy = this.accountService.getCurrentAccountId();
this.testTubeRackTestTaskMapper.updateLock(task);
}

20
src/main/java/com/dreamworks/boditech/utils/MyCommon.java

@ -1,4 +1,11 @@
package com.dreamworks.boditech.utils;
import org.springframework.cglib.beans.BeanMap;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
public class MyCommon {
// easy sleep
public static void easySleep(int ms) {
@ -6,4 +13,17 @@ public class MyCommon {
Thread.sleep(ms);
} catch (InterruptedException ignored) {}
}
// object to map
public static Map<String, Object> objectToMap(Object obj) {
Map<String, Object> map = new HashMap<String, Object>();
Field[] fields = obj.getClass().getDeclaredFields();
for ( Field field : fields ) {
field.setAccessible(true);
try {
map.put(field.getName(), field.get(obj));
} catch (IllegalAccessException ignored) {}
}
return map;
}
}
Loading…
Cancel
Save