From fcff2b59d0b5328035183498c5883deabb595be9 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 26 Apr 2025 20:21:19 +0800 Subject: [PATCH 1/2] fix some bug --- .../ExperimentConsistencyTestingService.java | 55 +++++++++++----------- src/main/java/a8k/app/service/utils/UISender.java | 7 +++ .../ExperimentConsistencyTestingPage.java | 9 ++++ 3 files changed, 44 insertions(+), 27 deletions(-) diff --git a/src/main/java/a8k/app/engineer/service/qatest/ExperimentConsistencyTestingService.java b/src/main/java/a8k/app/engineer/service/qatest/ExperimentConsistencyTestingService.java index 6182bba..998d899 100644 --- a/src/main/java/a8k/app/engineer/service/qatest/ExperimentConsistencyTestingService.java +++ b/src/main/java/a8k/app/engineer/service/qatest/ExperimentConsistencyTestingService.java @@ -44,6 +44,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.Assert; +import javax.swing.*; import java.util.List; import java.util.Objects; @@ -289,44 +290,44 @@ public class ExperimentConsistencyTestingService { } Assert.isTrue(scanResult.tube[tubeoff].isTubeExist, String.format("位置[%d]未放入是试管", tubeoff + 1)); - //移动试管架到预处理位置 int finalTubeoff = tubeoff; UISender.txInfoMsg(log, "开始处理第%d个试管", finalTubeoff + 1); docmd("移动试管到处理位", () -> tubeFeedingCtrlService.moveTubeToPreProcessPos(finalTubeoff)); - //尝试处理孵育完成的反应板 - incubationPlateProcess(false); + for (int j = 0; j < getRepeatTimes(tubeoff); j++) { - //申请耗材 - var consumableInfo = consumablesMgrService.reserveConsumable(expectedProjId); - if (consumableInfo == null) { - throw AppException.of(A8kEcode.CODEERROR, "耗材不足?"); //理论上开始阶段已经核对过了耗材数量,此时应该不会不足 - } - consumablesMgrService.useReserveConsumable(consumableInfo); + //尝试处理孵育完成的反应板 + incubationPlateProcess(false); - //构造项目信息 - ProjBuildinInfo projBuildinInfo = projInfoMgrService.getProjBuildInInfo(expectedProjId); - ProjExtInfoCard projExtInfoCard = projInfoMgrService.getProjExtInfoCard(consumableInfo.lotid); - ProjBriefInfo projBriefInfo = ProjInfoUtils.buildProjBrefInfo(projBuildinInfo); + //申请耗材 + var consumableInfo = consumablesMgrService.reserveConsumable(expectedProjId); + if (consumableInfo == null) { + throw AppException.of(A8kEcode.CODEERROR, "耗材不足?"); //理论上开始阶段已经核对过了耗材数量,此时应该不会不足 + } + consumablesMgrService.useReserveConsumable(consumableInfo); - Assert.notNull(projBuildinInfo, "projBuildInInfo is null"); - Assert.notNull(projExtInfoCard, "projExtInfoCard is null"); + //构造项目信息 + ProjBuildinInfo projBuildinInfo = projInfoMgrService.getProjBuildInInfo(expectedProjId); + ProjExtInfoCard projExtInfoCard = projInfoMgrService.getProjExtInfoCard(consumableInfo.lotid); + ProjBriefInfo projBriefInfo = ProjInfoUtils.buildProjBrefInfo(projBuildinInfo); - //处理样本 - Tube tube = new Tube(tubeoff); - tube.setIsHighTube(false); - tube.setIsEmergency(false); - tube.setBloodType(BloodType.WHOLE_BLOOD); - tube.setSampleBarcode(tubeSetting.sampleBarcode); - tube.setUserid(tubeSetting.userid); - tube.setProjInfo(ZList.of(projBriefInfo)); - tube.setProjIds(ZList.of(expectedProjId)); - String sampleId = tubeStateMgrService.newSample(tube); - tube.setSampleId(sampleId); + Assert.notNull(projBuildinInfo, "projBuildInInfo is null"); + Assert.notNull(projExtInfoCard, "projExtInfoCard is null"); + + //处理样本 + Tube tube = new Tube(tubeoff); + tube.setIsHighTube(false); + tube.setIsEmergency(false); + tube.setBloodType(BloodType.WHOLE_BLOOD); + tube.setSampleBarcode(tubeSetting.sampleBarcode); + tube.setUserid(tubeSetting.userid); + tube.setProjInfo(ZList.of(projBriefInfo)); + tube.setProjIds(ZList.of(expectedProjId)); + String sampleId = tubeStateMgrService.newSample(tube); + tube.setSampleId(sampleId); - for (int j = 0; j < getRepeatTimes(tubeoff); j++) { //处理试管 processTube(tube, tubeoff, consumableInfo, tubeSetting); if (!tube.getErrors().isEmpty()) { diff --git a/src/main/java/a8k/app/service/utils/UISender.java b/src/main/java/a8k/app/service/utils/UISender.java index 2a445df..eb3827a 100644 --- a/src/main/java/a8k/app/service/utils/UISender.java +++ b/src/main/java/a8k/app/service/utils/UISender.java @@ -25,6 +25,13 @@ public class UISender { service.pushMessageBox(new MessageBox(MessageLevel.Error, String.format(msg, args))); } + public static void txErrorMsg(Logger logger, AppError e, String msg, Object... args) { + logger.error("{}", String.format(msg, args), e); + var service = SpringBootBeanUtil.getBean(FrontEndMessageBoxAndEventMgr.class); + service.pushMessageBox(new MessageBox(MessageLevel.Error, String.format(msg, args))); + } + + public static void txErrorPrompt(AppError error) { var ebus = SpringBootBeanUtil.getBean(AppEventBusService.class); ebus.pushEvent(ZAppPromoptFactory.buildAppPromoptEvent(error)); diff --git a/src/main/java/a8k/extui/page/extapp/profession_test/ExperimentConsistencyTestingPage.java b/src/main/java/a8k/extui/page/extapp/profession_test/ExperimentConsistencyTestingPage.java index fd6f6a4..a467bec 100644 --- a/src/main/java/a8k/extui/page/extapp/profession_test/ExperimentConsistencyTestingPage.java +++ b/src/main/java/a8k/extui/page/extapp/profession_test/ExperimentConsistencyTestingPage.java @@ -2,6 +2,8 @@ package a8k.extui.page.extapp.profession_test; import a8k.app.engineer.service.qatest.ExperimentConsistencyTestingService; +import a8k.app.engineer.service.state.EngineerModeStateMgrService; +import a8k.app.engineer.service.type.EngineerModeState; import a8k.app.engineer.service.type.TubeExConfig; import a8k.app.engineer.service.type.TubeHolderExConfig; import a8k.app.type.exception.AppException; @@ -20,6 +22,8 @@ public class ExperimentConsistencyTestingPage { private final ExtApiPageMgr extApiPageMgr; private final ExperimentConsistencyTestingService experimentConsistencyTestingService; + private final EngineerModeStateMgrService engineerModeStateMgrService; + @ExtApiStatu(name = "", group = "试管1", order = 1) public TubeExConfig getTubeExConfig1() { @@ -71,6 +75,11 @@ public class ExperimentConsistencyTestingPage { return experimentConsistencyTestingService.getTubeExConfig().tubeExConfigs.get(9); } + @ExtApiStatu(name = "", group = "获取状态", order = 11) + public EngineerModeState getState() { + return engineerModeStateMgrService.getState(); + } + @PostConstruct void init() { From 492a826909aeeb70e66307669c9d610262eefc85 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 26 Apr 2025 23:12:59 +0800 Subject: [PATCH 2/2] fix some bug --- .../engineer/service/qatest/ExperimentConsistencyTestingService.java | 4 +++- src/main/java/a8k/app/service/lowerctrl/HbotMoveExCtrlService.java | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/a8k/app/engineer/service/qatest/ExperimentConsistencyTestingService.java b/src/main/java/a8k/app/engineer/service/qatest/ExperimentConsistencyTestingService.java index 998d899..4ac2cd4 100644 --- a/src/main/java/a8k/app/engineer/service/qatest/ExperimentConsistencyTestingService.java +++ b/src/main/java/a8k/app/engineer/service/qatest/ExperimentConsistencyTestingService.java @@ -38,6 +38,7 @@ import a8k.app.type.exception.AppException; import a8k.app.type.param.type.A8kSamplePos; import a8k.app.type.ui.TubeHolderSetting; import a8k.app.type.ui.TubeSetting; +import a8k.app.utils.ZJsonHelper; import a8k.app.utils.ZList; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -112,6 +113,7 @@ public class ExperimentConsistencyTestingService { if (tubeExTubeHolderExConfig != null) { this.tubeHolderExConfig = tubeExTubeHolderExConfig; } + log.info("更新试管架配置 {}", ZJsonHelper.objectToJson(tubeHolderExConfig)); } synchronized public TubeHolderExConfig getTubeExConfig() { @@ -161,7 +163,7 @@ public class ExperimentConsistencyTestingService { int testTotalTimes = 0; for (TubeSetting tubeSetting : tubeHolderSetting.tubeSettings) { for (Integer ignored : tubeSetting.projId) { - testTotalTimes++; + testTotalTimes += tubeHolderExConfig.tubeExConfigs.get(tubeSetting.tubeIndex).repeatTimes; } } if (consumablesMgrService.getConsumableNum(1/*hscrp项目*/) < testTotalTimes) { diff --git a/src/main/java/a8k/app/service/lowerctrl/HbotMoveExCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/HbotMoveExCtrlService.java index e1f9355..02a428d 100644 --- a/src/main/java/a8k/app/service/lowerctrl/HbotMoveExCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/HbotMoveExCtrlService.java @@ -160,6 +160,7 @@ public class HbotMoveExCtrlService { hbotMoveCtrlService.hbotMoveTo(hbotTipPosMgr.getDropTipPos()); pipetteCtrlDriver.pipetteInitDeviceBlock(); pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock(); + moveQuickToZero(); } public void quickResetHbot() throws AppException {