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.ParamEmergencyTaskSave; 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; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Controller public class TestController extends BaseController { @Resource private TestService testService; @Resource private ProjectService projectService; @ResponseBody @PostMapping("/api/test/test-tube-rack-save") public ApiResponse testTubeRackTaskSave(@RequestBody ParamTestTubeRackTaskSave param ) { MdbTestTubeRackTestTask task = this.testService.testTubeRackTaskSave(param); return this.success(task); } @ResponseBody @PostMapping("/api/test/test-tube-rack-list") public ApiResponse testTubeRackList() { List> list = new ArrayList<>(); List racks = this.testService.testTubeRackTaskList(); for ( MdbTestTubeRackTestTask rack : racks ) { Map item = MyCommon.objectToMap(rack); // attach tubes to rack List tubes = this.testService.testTubeRackTaskTubeListByRackId(rack.id); List> tubeList = new ArrayList<>(); for ( MdbTestTubeRackTestTaskTube tube : tubes ) { Map tubeItem = MyCommon.objectToMap(tube); // attach projects to tube String[] ids = tube.projectIds.isEmpty() ? new String[0] : tube.projectIds.split(","); List projectIds = new ArrayList<>(); List> projectList = new ArrayList<>(); for ( String id : ids ) { Project project = this.projectService.activeProjectGetById(Integer.parseInt(id)); Map 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); } item.put("tubes", tubeList); list.add(item); } return this.success(list); } @ResponseBody @PostMapping("/api/test/test-tube-rack-delete") public ApiResponse testTubeRackBatchDelete( @RequestBody Map 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 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 params) { Integer id = Integer.parseInt(params.get("id").toString()); this.testService.testTubeRackTestUnlock(id); return this.success(); } @ResponseBody @PostMapping("/api/test/emergency-task-append") public ApiResponse testEmergencyAppend( @RequestBody List param) { for ( ParamEmergencyTaskSave item : param ) { this.testService.emergencyTaskSave(item); } return this.success(); } @ResponseBody @PostMapping("/api/test/emergency-slot-status-get") public ApiResponse emergencySlotStatusGet() { String slot0Status = this.testService.emergencyTaskStatusGet(0); if ( null == slot0Status ) { slot0Status = "EMPTY"; } String slot1Status = this.testService.emergencyTaskStatusGet(1); if ( null == slot1Status ) { slot1Status = "EMPTY"; } return this.success(List.of( Map.of("index","0","status",slot0Status), Map.of("index","1","status",slot1Status) )); } @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/search") public ApiResponse search( @RequestBody Map params ) { List> list = new ArrayList<>(); for (int i = 0; i < 20; i++) { List> results = new ArrayList<>(); for (int j = 0; j < 2; j++) { Map result = new HashMap<>(); result.put("name", "sth01"); result.put("value", "123.45mg/L"); results.add(result); } 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)); item.put("results", results); list.add(item); } return this.success(Map.of( "totalCount", "100", "list", list )); } }