From b390faa262eb55f5f7e5fce9b6dacf074c5fd116 Mon Sep 17 00:00:00 2001 From: sige Date: Thu, 4 Jan 2024 20:42:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=93=E5=89=8D=E6=B5=8B=E8=AF=95=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boditech/controller/TestController.java | 21 +++++++++++++++++++++ .../driver/task/TaskTestTubeRackPrepare.java | 2 +- .../com/dreamworks/boditech/entity/MdbTest.java | 2 ++ .../com/dreamworks/boditech/mapper/TestMapper.java | 7 +++++-- .../dreamworks/boditech/service/TestService.java | 18 ++++++++++++++---- 5 files changed, 43 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/dreamworks/boditech/controller/TestController.java b/src/main/java/com/dreamworks/boditech/controller/TestController.java index 0c685d7..e68b709 100644 --- a/src/main/java/com/dreamworks/boditech/controller/TestController.java +++ b/src/main/java/com/dreamworks/boditech/controller/TestController.java @@ -24,6 +24,27 @@ public class TestController extends BaseController { private ProjectService projectService; @ResponseBody + @PostMapping("/api/test/active-batch-list") + public ApiResponse activeBatchList() { + List> list = new ArrayList<>(); + List tests = this.testService.testActiveBatchList(); + for ( MdbTest test : tests ) { + Map item = MyCommon.objectToMap(test); + long letfTime = test.incubateStartedAt + test.incubateTime - System.currentTimeMillis(); + if ( letfTime < 0 ) { + letfTime = 0L; + } + letfTime /= 1000; + Integer sec = (int)(letfTime % 60); + Integer min = (int)(letfTime / 60); + item.put("incubateLeftTime", String.format("%02d:%02d", min, sec)); + item.put("results", MyCommon.jsonToObject(test.result, List.class)); + list.add(item); + } + return this.success(list); + } + + @ResponseBody @PostMapping("/api/test/test-tube-rack-list") public ApiResponse testTubeRackList() { List> list = new ArrayList<>(); 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 815a450..659ecea 100644 --- a/src/main/java/com/dreamworks/boditech/driver/task/TaskTestTubeRackPrepare.java +++ b/src/main/java/com/dreamworks/boditech/driver/task/TaskTestTubeRackPrepare.java @@ -44,6 +44,7 @@ public class TaskTestTubeRackPrepare extends TaskBase { @Override public void execute( Executor executor ) { this.setStatus(Task.STATUS_EXECUTING); + this.testService.regularTaskStart(this.mdbTask); this.device = executor.getDevice(); this.testTubeFeedMotor = (ActMotor)this.device.getActuator(ActuatorModule.TEST_TUBE_RACK_FEED_MOTOR); @@ -93,7 +94,6 @@ public class TaskTestTubeRackPrepare extends TaskBase { TaskBatchTubeExit exitTask = new TaskBatchTubeExit(); executor.appendTask(exitTask); - this.testService.regularTaskStart(this.mdbTask); this.setStatus(Task.STATUS_FINISHED); } diff --git a/src/main/java/com/dreamworks/boditech/entity/MdbTest.java b/src/main/java/com/dreamworks/boditech/entity/MdbTest.java index 52d4357..90fec07 100644 --- a/src/main/java/com/dreamworks/boditech/entity/MdbTest.java +++ b/src/main/java/com/dreamworks/boditech/entity/MdbTest.java @@ -2,6 +2,8 @@ package com.dreamworks.boditech.entity; public class MdbTest { // id public Integer id; + // batch id + public Long batchId; // serial code public String serialCode; // task type diff --git a/src/main/java/com/dreamworks/boditech/mapper/TestMapper.java b/src/main/java/com/dreamworks/boditech/mapper/TestMapper.java index 192631b..3abc1db 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 (" + - "serialCode, barCode, lotCode, taskType, taskId, sampleUid, projectId, projectName, sampleType, tubeType, startedAt, startedBy" + + "batchId, serialCode, barCode, lotCode, taskType, taskId, sampleUid, projectId, projectName, sampleType, tubeType, startedAt, startedBy" + ") VALUES (" + - "#{serialCode}, #{barCode}, #{lotCode}, #{taskType}, #{taskId}, #{sampleUid}, #{projectId}, #{projectName}, #{sampleType}, #{tubeType}, #{startedAt}, #{startedBy}" + + "#{batchId}, #{serialCode}, #{barCode}, #{lotCode}, #{taskType}, #{taskId}, #{sampleUid}, #{projectId}, #{projectName}, #{sampleType}, #{tubeType}, #{startedAt}, #{startedBy}" + ")") @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id") int insert(MdbTest test); @@ -41,4 +41,7 @@ public interface TestMapper { "WHERE id = #{id}" ) void update( MdbTest test ); + + @Select("SELECT * FROM bdt_tests WHERE batchId=#{batchId} ORDER BY id DESC LIMIT 20") + List activeBatchList( Long batchId ); } diff --git a/src/main/java/com/dreamworks/boditech/service/TestService.java b/src/main/java/com/dreamworks/boditech/service/TestService.java index c8e79ae..1780cff 100644 --- a/src/main/java/com/dreamworks/boditech/service/TestService.java +++ b/src/main/java/com/dreamworks/boditech/service/TestService.java @@ -12,6 +12,7 @@ import com.dreamworks.boditech.mapper.*; import com.dreamworks.boditech.utils.AppError; import com.dreamworks.boditech.utils.AppRuntimeException; import com.dreamworks.boditech.utils.MyCommon; +import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -42,6 +43,13 @@ public class TestService { @Resource @Lazy private DeviceService deviceService; + // batch id + private Long batchId = null; + + @PostConstruct + public void init() { + this.batchId = System.currentTimeMillis(); + } // fetch task from database public List fetchTask() { @@ -346,7 +354,10 @@ public class TestService { return this.testMapper.count(param); } - + // test list + public List testActiveBatchList() { + return this.testMapper.activeBatchList(this.batchId); + } @@ -364,9 +375,8 @@ public class TestService { Long startTime = calendar.getTimeInMillis(); int count = this.testMapper.countByTimeRange(startTime, System.currentTimeMillis()); test.serialCode = String.format("%s_%03d", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMdd")), count + 1); - - // @TODO : startedBy should be set to the current user - test.startedBy = 0; + test.batchId = this.batchId; + test.startedBy = this.accountService.getCurrentAccountId(); test.startedAt = System.currentTimeMillis(); this.testMapper.insert(test); }