From bc6d54dc210a7cef6029df5e7cf1975f9d917395 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Fri, 10 Jan 2025 14:55:21 +0800 Subject: [PATCH] recode --- .../hardware/driver/TemperatureControlDriver.java | 2 +- .../service/exparam/HbotConsumableParamMgr.java | 8 +- .../app/service/exparam/PipetteGunParamExMgr.java | 118 ------------------ .../lowerctrl/ConsumablesScanCtrlService.java | 2 +- .../service/lowerctrl/HbotMoveExCtrlService.java | 6 +- .../lowerctrl/LiquidOperationCtrlService.java | 8 +- .../lowerctrl/OptScanModuleCtrlService.java | 4 +- .../app/service/lowerctrl/PlateBoxCtrlService.java | 2 +- .../service/lowerctrl/TubeFeedingCtrlService.java | 2 +- .../lowerctrl/TubePreProcesModuleCtrlService.java | 3 +- .../service/lowerctrl/TurnableMoveCtrlService.java | 2 +- .../app/service/param/Hbot2DCodeScanParamMgr.java | 89 -------------- .../app/service/param/HbotFixedPosParamMgr.java | 46 ------- .../app/service/param/HbotLargeBottleBSPosMgr.java | 78 ------------ .../a8k/app/service/param/HbotLittleBSPosMgr.java | 129 -------------------- .../service/param/HbotProbeSubstancePosMgr.java | 31 ----- .../app/service/param/HbotSamplePosParamMgr.java | 68 ----------- .../java/a8k/app/service/param/HbotTipPosMgr.java | 132 --------------------- .../app/service/param/OptModuleExtParamsMgr.java | 68 ----------- .../a8k/app/service/param/OptModuleParamsMgr.java | 59 --------- .../app/service/param/PipetteGunExParamMgr.java | 51 -------- .../app/service/param/PipetteGunLLDParamMgr.java | 41 ------- .../app/service/param/PipetteGunLLFParamMgr.java | 57 --------- .../app/service/param/PlatesBoxPosParamMgr.java | 79 ------------ .../app/service/param/TemperatureCtrlParamMgr.java | 42 ------- .../service/param/TubeFeedingModuleParamMgr.java | 114 ------------------ .../service/param/TubePreProcesPosParamMgr.java | 91 -------------- .../app/service/param/TurntablePosParamMgr.java | 86 -------------- .../param/hbotpos/Hbot2DCodeScanParamMgr.java | 90 ++++++++++++++ .../param/hbotpos/HbotFixedPosParamMgr.java | 46 +++++++ .../param/hbotpos/HbotLargeBottleBSPosMgr.java | 78 ++++++++++++ .../service/param/hbotpos/HbotLittleBSPosMgr.java | 129 ++++++++++++++++++++ .../param/hbotpos/HbotProbeSubstancePosMgr.java | 27 +++++ .../param/hbotpos/HbotSamplePosParamMgr.java | 68 +++++++++++ .../app/service/param/hbotpos/HbotTipPosMgr.java | 132 +++++++++++++++++++++ .../param/optparam/OptModuleExtParamsMgr.java | 68 +++++++++++ .../service/param/optparam/OptModuleParamsMgr.java | 50 ++++++++ .../param/pipetteparam/PipetteGunExParamMgr.java | 51 ++++++++ .../param/pipetteparam/PipetteGunLLDParamMgr.java | 41 +++++++ .../param/pipetteparam/PipetteGunLLFParamMgr.java | 57 +++++++++ .../service/param/pos/PlatesBoxPosParamMgr.java | 79 ++++++++++++ .../service/param/pos/TemperatureCtrlParamMgr.java | 42 +++++++ .../param/pos/TubeFeedingModuleParamMgr.java | 114 ++++++++++++++++++ .../param/pos/TubePreProcesPosParamMgr.java | 79 ++++++++++++ .../service/param/pos/TurntablePosParamMgr.java | 86 ++++++++++++++ .../Hbot2DCodeScanPosCalibration.java | 2 +- .../HbotLargeBottleBSPosCalibration.java | 2 +- .../HbotLittleBSPosCalibration.java | 2 +- .../HbotProbeSubstancePosCalibration.java | 2 +- .../pos_calibration/HbotTipPosCalibration.java | 2 +- .../OptModuleParamPosCalibration.java | 2 +- .../TubeFeedingModulePosCalibration.java | 2 +- .../TubePreProcesPosCalibration.java | 2 +- .../page/extapp/OptModuleParamCalibration.java | 2 +- .../page/extapp/P01PipetteGunVerification.java | 4 +- .../page/extapp/P02A8kTemperaturaVerfication.java | 2 +- .../P02TubeFeedingModulePosCalibrationPage.java | 2 +- .../P03TubePreProcesPosCalibrationPage.java | 2 +- ...tionPlatesTransmitControlerCalibrationPage.java | 6 +- .../P20HbotTipPosCalibrationPage.java | 4 +- .../P21HbotLittleBSPosCalibrationPage.java | 2 +- .../P23HbotLargeBottleBSPosCalibrationPage.java | 2 +- .../P24Hbot2DCodeScanPosCalibrationPage.java | 2 +- .../P25HbotSamplePosCalibrationPage.java | 2 +- src/main/java/a8k/unittest/TestBeforeRun.java | 2 +- 65 files changed, 1280 insertions(+), 1423 deletions(-) delete mode 100644 src/main/java/a8k/app/service/exparam/PipetteGunParamExMgr.java delete mode 100644 src/main/java/a8k/app/service/param/Hbot2DCodeScanParamMgr.java delete mode 100644 src/main/java/a8k/app/service/param/HbotFixedPosParamMgr.java delete mode 100644 src/main/java/a8k/app/service/param/HbotLargeBottleBSPosMgr.java delete mode 100644 src/main/java/a8k/app/service/param/HbotLittleBSPosMgr.java delete mode 100644 src/main/java/a8k/app/service/param/HbotProbeSubstancePosMgr.java delete mode 100644 src/main/java/a8k/app/service/param/HbotSamplePosParamMgr.java delete mode 100644 src/main/java/a8k/app/service/param/HbotTipPosMgr.java delete mode 100644 src/main/java/a8k/app/service/param/OptModuleExtParamsMgr.java delete mode 100644 src/main/java/a8k/app/service/param/OptModuleParamsMgr.java delete mode 100644 src/main/java/a8k/app/service/param/PipetteGunExParamMgr.java delete mode 100644 src/main/java/a8k/app/service/param/PipetteGunLLDParamMgr.java delete mode 100644 src/main/java/a8k/app/service/param/PipetteGunLLFParamMgr.java delete mode 100644 src/main/java/a8k/app/service/param/PlatesBoxPosParamMgr.java delete mode 100644 src/main/java/a8k/app/service/param/TemperatureCtrlParamMgr.java delete mode 100644 src/main/java/a8k/app/service/param/TubeFeedingModuleParamMgr.java delete mode 100644 src/main/java/a8k/app/service/param/TubePreProcesPosParamMgr.java delete mode 100644 src/main/java/a8k/app/service/param/TurntablePosParamMgr.java create mode 100644 src/main/java/a8k/app/service/param/hbotpos/Hbot2DCodeScanParamMgr.java create mode 100644 src/main/java/a8k/app/service/param/hbotpos/HbotFixedPosParamMgr.java create mode 100644 src/main/java/a8k/app/service/param/hbotpos/HbotLargeBottleBSPosMgr.java create mode 100644 src/main/java/a8k/app/service/param/hbotpos/HbotLittleBSPosMgr.java create mode 100644 src/main/java/a8k/app/service/param/hbotpos/HbotProbeSubstancePosMgr.java create mode 100644 src/main/java/a8k/app/service/param/hbotpos/HbotSamplePosParamMgr.java create mode 100644 src/main/java/a8k/app/service/param/hbotpos/HbotTipPosMgr.java create mode 100644 src/main/java/a8k/app/service/param/optparam/OptModuleExtParamsMgr.java create mode 100644 src/main/java/a8k/app/service/param/optparam/OptModuleParamsMgr.java create mode 100644 src/main/java/a8k/app/service/param/pipetteparam/PipetteGunExParamMgr.java create mode 100644 src/main/java/a8k/app/service/param/pipetteparam/PipetteGunLLDParamMgr.java create mode 100644 src/main/java/a8k/app/service/param/pipetteparam/PipetteGunLLFParamMgr.java create mode 100644 src/main/java/a8k/app/service/param/pos/PlatesBoxPosParamMgr.java create mode 100644 src/main/java/a8k/app/service/param/pos/TemperatureCtrlParamMgr.java create mode 100644 src/main/java/a8k/app/service/param/pos/TubeFeedingModuleParamMgr.java create mode 100644 src/main/java/a8k/app/service/param/pos/TubePreProcesPosParamMgr.java create mode 100644 src/main/java/a8k/app/service/param/pos/TurntablePosParamMgr.java diff --git a/src/main/java/a8k/app/hardware/driver/TemperatureControlDriver.java b/src/main/java/a8k/app/hardware/driver/TemperatureControlDriver.java index 2ba5527..e186982 100644 --- a/src/main/java/a8k/app/hardware/driver/TemperatureControlDriver.java +++ b/src/main/java/a8k/app/hardware/driver/TemperatureControlDriver.java @@ -4,7 +4,7 @@ import a8k.app.hardware.basedriver.A8kCanBusService; import a8k.app.hardware.type.a8kcanprotocol.CmdId; import a8k.app.hardware.driver.type.TemperatureControlerMid; import a8k.app.hardware.driver.type.TemperatureControlerRegIndex; -import a8k.app.service.param.TemperatureCtrlParamMgr; +import a8k.app.service.param.pos.TemperatureCtrlParamMgr; import a8k.app.a8ktype.param.TemperatureCtrlParam; import a8k.app.a8ktype.exception.AppException; import jakarta.annotation.Resource; diff --git a/src/main/java/a8k/app/service/exparam/HbotConsumableParamMgr.java b/src/main/java/a8k/app/service/exparam/HbotConsumableParamMgr.java index 7389989..5a01cf0 100644 --- a/src/main/java/a8k/app/service/exparam/HbotConsumableParamMgr.java +++ b/src/main/java/a8k/app/service/exparam/HbotConsumableParamMgr.java @@ -1,10 +1,10 @@ package a8k.app.service.exparam; import a8k.app.a8ktype.device.ConsumableGroup; -import a8k.app.service.param.HbotLargeBottleBSPosMgr; -import a8k.app.service.param.HbotLittleBSPosMgr; -import a8k.app.service.param.HbotProbeSubstancePosMgr; -import a8k.app.service.param.HbotTipPosMgr; +import a8k.app.service.param.hbotpos.HbotLargeBottleBSPosMgr; +import a8k.app.service.param.hbotpos.HbotLittleBSPosMgr; +import a8k.app.service.param.hbotpos.HbotProbeSubstancePosMgr; +import a8k.app.service.param.hbotpos.HbotTipPosMgr; import a8k.app.a8ktype.device.Pos3d; import a8k.app.a8ktype.device.TipGroup; import jakarta.annotation.PostConstruct; diff --git a/src/main/java/a8k/app/service/exparam/PipetteGunParamExMgr.java b/src/main/java/a8k/app/service/exparam/PipetteGunParamExMgr.java deleted file mode 100644 index d806e6e..0000000 --- a/src/main/java/a8k/app/service/exparam/PipetteGunParamExMgr.java +++ /dev/null @@ -1,118 +0,0 @@ -package a8k.app.service.exparam; - -import a8k.app.a8ktype.state.ProjectTaskContext; -import a8k.app.service.exparam.base.PipetteGunBindActionType; -import a8k.app.service.exparam.base.LLDParamPack; -import a8k.app.service.exparam.base.LLFParamPack; -import a8k.app.service.param.HbotLargeBottleBSPosMgr; -import a8k.app.service.param.HbotSamplePosParamMgr; -import a8k.app.service.param.PipetteGunLLDParamMgr; -import a8k.app.service.param.PipetteGunLLFParamMgr; -import a8k.app.a8ktype.param.type.A8kSamplePos; -import a8k.app.a8ktype.param.pipette.PipetteGunLLDThresholdParam; -import a8k.app.a8ktype.param.pipette.PipetteGunLLDTypeParam; -import a8k.app.a8ktype.device.ConsumableGroup; -import a8k.app.a8ktype.device.Pos3d; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Component; -import org.springframework.util.Assert; - -@Component -public class PipetteGunParamExMgr { - - @Resource - PipetteGunLLDParamMgr pipetteGunLLDParamMgr; - - @Resource - PipetteGunLLFParamMgr pipetteGunLLFParamMgr; - - @Resource - HbotSamplePosParamMgr hbotSamplePosParamMgr; - - @Resource - HbotLargeBottleBSPosMgr hbotLargeBottleBSPosMgr; - - @Resource - HbotConsumableParamMgr hbotConsumableParamMgr; - - /** - * 获取液面探测相关参数 - * @param type 操作类型 - * @param cxt 上下文 - * @return 液面探测相关参数 - */ - public LLDParamPack getLLDParam(PipetteGunBindActionType type, ProjectTaskContext cxt) { - LLDParamPack paramPack = null; - switch (type) { - case SAMPLE -> { - A8kSamplePos samplePos = cxt.getSamplePos(); - Pos3d sampleStartPos = hbotSamplePosParamMgr.getSampleStartPos(samplePos); - Pos3d sampleEndPos = hbotSamplePosParamMgr.getSampleEndPos(samplePos); - - paramPack = new LLDParamPack(); - paramPack.type = pipetteGunLLDParamMgr.getLLDType(PipetteGunLLDTypeParam.DEFAULT_LLD_TYPE); - paramPack.startZ = sampleStartPos.z; - paramPack.endZ = sampleEndPos.z; - paramPack.cThreshold = pipetteGunLLDParamMgr.getLLDThresholdParam(PipetteGunLLDThresholdParam.DEFAULT_C_THRESHOLD); - paramPack.pThreshold = pipetteGunLLDParamMgr.getLLDThresholdParam(PipetteGunLLDThresholdParam.DEFAULT_P_THRESHOLD); - } - case TAKE_LARGE_BUFFER_SOLUTION -> { - ConsumableGroup group = cxt.getConsumable().getGroup(); - var sStartPos = hbotLargeBottleBSPosMgr.getLLDStartPos(group); - var sEndPos = hbotLargeBottleBSPosMgr.getSamplePosEnd(group); - - paramPack = new LLDParamPack(); - paramPack.type = pipetteGunLLDParamMgr.getLLDType(PipetteGunLLDTypeParam.DEFAULT_LLD_TYPE); - paramPack.startZ = sStartPos.z; - paramPack.endZ = sEndPos.z; - paramPack.cThreshold = pipetteGunLLDParamMgr.getLLDThresholdParam(PipetteGunLLDThresholdParam.DEFAULT_C_THRESHOLD); - paramPack.pThreshold = pipetteGunLLDParamMgr.getLLDThresholdParam(PipetteGunLLDThresholdParam.DEFAULT_P_THRESHOLD); - } - } - - Assert.notNull(paramPack, "未知的操作类型"); - return paramPack; - } - - /** - * 获取液面跟随相关参数 - * @param type 操作类型 - * @param cxt 上下文 - * @return 液面跟随相关参数 - */ - public LLFParamPack getLLFParam(PipetteGunBindActionType type, ProjectTaskContext cxt) { - LLFParamPack paramPack = null; - switch (type) { - // 取样 - case MIX_SAMPLE, SAMPLE -> { // - A8kSamplePos samplePos = cxt.getSamplePos(); - paramPack = new LLFParamPack(); - paramPack.llfVel = pipetteGunLLFParamMgr.getSampleLLFVel(samplePos); - paramPack.llfStartPos = hbotSamplePosParamMgr.getSampleStartPos(samplePos).z; - paramPack.llfEndPos = hbotSamplePosParamMgr.getSampleStartPos(samplePos).z; - - } - //取大瓶缓冲液 - case TAKE_LARGE_BUFFER_SOLUTION -> { // - paramPack = new LLFParamPack(); - paramPack.llfVel = pipetteGunLLFParamMgr.getLargeBSBottleLlfVel(); - paramPack.llfStartPos = hbotConsumableParamMgr.getLargeBufferSamplePos(cxt.getConsumable().getGroup()).z; - paramPack.llfEndPos = hbotConsumableParamMgr.getLargeBufferSamplePosEnd(cxt.getConsumable().getGroup()).z; - } - - //混合反应液,分配大瓶缓冲液到探测物质中 - case MIX_REACTION_LIQUOR, DISTRIBUTION_LARGE_BUFFER_SOLUTION_PROBE_SUBSTANCE -> { - paramPack = new LLFParamPack(); - paramPack.llfVel = 0; - paramPack.llfStartPos = 0; - paramPack.llfEndPos = 0; - } - } - - Assert.notNull(paramPack, "未知的操作类型"); - Assert.notNull(paramPack.llfVel, "未知的试管类型"); - return paramPack; - } - - -} diff --git a/src/main/java/a8k/app/service/lowerctrl/ConsumablesScanCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/ConsumablesScanCtrlService.java index d0f77f1..7b8f3b1 100644 --- a/src/main/java/a8k/app/service/lowerctrl/ConsumablesScanCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/ConsumablesScanCtrlService.java @@ -1,7 +1,7 @@ package a8k.app.service.lowerctrl; import a8k.app.hardware.driver.CodeScanerDriver; -import a8k.app.service.param.Hbot2DCodeScanParamMgr; +import a8k.app.service.param.hbotpos.Hbot2DCodeScanParamMgr; import a8k.teststate.VirtualDevice; import a8k.app.a8ktype.type.ConsumableOneChRawResult; import a8k.app.a8ktype.type.ConsumableScanRawResult; diff --git a/src/main/java/a8k/app/service/lowerctrl/HbotMoveExCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/HbotMoveExCtrlService.java index 8bb946e..09d1cee 100644 --- a/src/main/java/a8k/app/service/lowerctrl/HbotMoveExCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/HbotMoveExCtrlService.java @@ -5,11 +5,11 @@ import a8k.app.constant.AppConstant; import a8k.app.hardware.driver.type.PipetteRegIndex; import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; import a8k.app.hardware.driver.HbotDriver; -import a8k.app.service.param.HbotTipPosMgr; +import a8k.app.service.param.hbotpos.HbotTipPosMgr; import a8k.app.hardware.driver.PipetteCtrlDriver; import a8k.app.service.exparam.HbotConsumableParamMgr; -import a8k.app.service.param.HbotFixedPosParamMgr; -import a8k.app.service.param.HbotSamplePosParamMgr; +import a8k.app.service.param.hbotpos.HbotFixedPosParamMgr; +import a8k.app.service.param.hbotpos.HbotSamplePosParamMgr; import a8k.app.a8ktype.param.type.A8kSamplePos; import a8k.app.a8ktype.param.hbotpos.HbotSamplePos; import a8k.app.a8ktype.exception.AppException; diff --git a/src/main/java/a8k/app/service/lowerctrl/LiquidOperationCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/LiquidOperationCtrlService.java index 814ad28..39daeec 100644 --- a/src/main/java/a8k/app/service/lowerctrl/LiquidOperationCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/LiquidOperationCtrlService.java @@ -11,9 +11,9 @@ import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; import a8k.app.hardware.driver.PipetteCtrlDriver; import a8k.app.a8ktype.exception.AppException; import a8k.app.service.exparam.HbotConsumableParamMgr; -import a8k.app.service.param.HbotSamplePosParamMgr; -import a8k.app.service.param.PipetteGunExParamMgr; -import a8k.app.service.param.PipetteGunLLFParamMgr; +import a8k.app.service.param.hbotpos.HbotSamplePosParamMgr; +import a8k.app.service.param.pipetteparam.PipetteGunExParamMgr; +import a8k.app.service.param.pipetteparam.PipetteGunLLFParamMgr; import a8k.app.service.statemgr.ConsumablesMgrService; import a8k.app.service.statemgr.GStateMgrService; import a8k.app.utils.ProjBuildinInfo; @@ -348,7 +348,7 @@ public class LiquidOperationCtrlService { //取样 (该过程不需要预先吸入空气,因为分配的时候都是接触分配) // pipetteCtrlDriver.zMotorMoveToBlock(liquidLevel); - aspirate(sampleEndPos.z, aspiratePumpVmax, pipetteGunLLFParamMgr.getLargeBSBottleLlfVel(), ul * 1.0); + aspirate(sampleEndPos.z, aspiratePumpVmax, pipetteGunLLFParamMgr.getSampleLLFVel(from), ul * 1.0); pipetteCtrlDriver.zMotorMoveToBlock(0); } diff --git a/src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java index 43c6016..aa44cf8 100644 --- a/src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java @@ -9,8 +9,8 @@ import a8k.app.hardware.driver.OptModuleDriver; import a8k.app.hardware.driver.StepMotorCtrlDriver; import a8k.app.hardware.driver.type.OptModuleRegIndex; import a8k.app.hardware.driver.type.StepMotorMId; -import a8k.app.service.param.OptModuleExtParamsMgr; -import a8k.app.service.param.OptModuleParamsMgr; +import a8k.app.service.param.optparam.OptModuleExtParamsMgr; +import a8k.app.service.param.optparam.OptModuleParamsMgr; import a8k.app.dao.db.type.OptRawScanData; import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType; import a8k.app.a8ktype.device.IncubatorPos; diff --git a/src/main/java/a8k/app/service/lowerctrl/PlateBoxCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/PlateBoxCtrlService.java index ef2de7b..43dc8aa 100644 --- a/src/main/java/a8k/app/service/lowerctrl/PlateBoxCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/PlateBoxCtrlService.java @@ -2,7 +2,7 @@ package a8k.app.service.lowerctrl; import a8k.app.hardware.driver.StepMotorCtrlDriver; import a8k.app.hardware.driver.type.StepMotorMId; -import a8k.app.service.param.PlatesBoxPosParamMgr; +import a8k.app.service.param.pos.PlatesBoxPosParamMgr; import a8k.app.a8ktype.device.ConsumableGroup; import a8k.app.a8ktype.device.IncubatorPos; import a8k.app.a8ktype.exception.AppException; diff --git a/src/main/java/a8k/app/service/lowerctrl/TubeFeedingCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/TubeFeedingCtrlService.java index 26272c9..bc02b4d 100644 --- a/src/main/java/a8k/app/service/lowerctrl/TubeFeedingCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/TubeFeedingCtrlService.java @@ -7,7 +7,7 @@ import a8k.app.hardware.driver.MiniServoDriver; import a8k.app.hardware.driver.StepMotorCtrlDriver; import a8k.app.hardware.driver.type.MiniServoMId; import a8k.app.hardware.driver.type.StepMotorMId; -import a8k.app.service.param.TubeFeedingModuleParamMgr; +import a8k.app.service.param.pos.TubeFeedingModuleParamMgr; import a8k.app.service.bases.AppEventBusService; import a8k.app.a8ktype.appevent.AppWarningNotifyEvent; import a8k.app.a8ktype.type.TubeHolderScanResult; diff --git a/src/main/java/a8k/app/service/lowerctrl/TubePreProcesModuleCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/TubePreProcesModuleCtrlService.java index 9fa3590..f07d589 100644 --- a/src/main/java/a8k/app/service/lowerctrl/TubePreProcesModuleCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/TubePreProcesModuleCtrlService.java @@ -1,12 +1,11 @@ package a8k.app.service.lowerctrl; import a8k.app.hardware.basedriver.A8kCanBusService; -import a8k.app.hardware.type.a8kcanprotocol.MId; import a8k.app.hardware.driver.MiniServoDriver; import a8k.app.hardware.driver.StepMotorCtrlDriver; import a8k.app.hardware.driver.type.MiniServoMId; import a8k.app.hardware.driver.type.StepMotorMId; -import a8k.app.service.param.TubePreProcesPosParamMgr; +import a8k.app.service.param.pos.TubePreProcesPosParamMgr; import a8k.app.a8ktype.exception.AppException; import jakarta.annotation.Resource; import org.slf4j.Logger; diff --git a/src/main/java/a8k/app/service/lowerctrl/TurnableMoveCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/TurnableMoveCtrlService.java index 1cb0bd4..359aa20 100644 --- a/src/main/java/a8k/app/service/lowerctrl/TurnableMoveCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/TurnableMoveCtrlService.java @@ -2,7 +2,7 @@ package a8k.app.service.lowerctrl; import a8k.app.hardware.driver.StepMotorCtrlDriver; import a8k.app.hardware.driver.type.StepMotorMId; -import a8k.app.service.param.TurntablePosParamMgr; +import a8k.app.service.param.pos.TurntablePosParamMgr; import a8k.app.a8ktype.device.IncubatorPos; import a8k.app.a8ktype.exception.AppException; import a8k.app.hardware.basedriver.A8kCanBusService; diff --git a/src/main/java/a8k/app/service/param/Hbot2DCodeScanParamMgr.java b/src/main/java/a8k/app/service/param/Hbot2DCodeScanParamMgr.java deleted file mode 100644 index a7aac5f..0000000 --- a/src/main/java/a8k/app/service/param/Hbot2DCodeScanParamMgr.java +++ /dev/null @@ -1,89 +0,0 @@ -package a8k.app.service.param; - -import a8k.app.service.param.base.ParamMgr; -import a8k.app.a8ktype.param.hbotpos.Hbot2DCodeScanPos; -import a8k.app.a8ktype.device.Pos2d; -import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * HBOT二维码扫描坐标参数 - */ -@Component -public class Hbot2DCodeScanParamMgr extends ParamMgr { - static final Logger logger = LoggerFactory.getLogger(Hbot2DCodeScanParamMgr.class); - - @Resource - HbotLittleBSPosMgr hbotLittleBSPosMgr; - - @Resource - PlatesBoxPosParamMgr platesBoxPosParamMgr; - - @Resource - HbotLargeBottleBSPosMgr largeBottleBSPosMgr; - - - @PostConstruct - void initialize() { - for (Hbot2DCodeScanPos pos : Hbot2DCodeScanPos.values()) { - initParam(pos, pos.chName, pos.type); - } - - for (int i = 0; i < 6; i++) { - getPBScanPosX(i); - getLittBSX(i); - getLarBSX(i); - } - } - - public void setPBScanPosX(Pos2d pos) { - setParam(Hbot2DCodeScanPos.PBScanPos0, pos); - } - - public void setLittBSX(Pos2d pos) { - setParam(Hbot2DCodeScanPos.LittBS0, pos); - } - - public void setLarBSX(Pos2d pos) { - setParam(Hbot2DCodeScanPos.LarBS0, pos); - } - - public Pos2d getPBScanPosX(Integer X) { - Pos2d pos = getParam(Hbot2DCodeScanPos.PBScanPos0, Pos2d.class); - if (pos == null) { - return null; - } - pos.y = pos.y + platesBoxPosParamMgr.getYSpacing().intValue(); - return pos; - } - - public Pos2d getLittBSX(Integer X) { - Integer xoff = X % 3; - Integer yoff = X / 3; - Pos2d pos = getParam(Hbot2DCodeScanPos.LittBS0, Pos2d.class); - if (pos == null) { - return null; - } - pos.x = (int) (pos.x + xoff * hbotLittleBSPosMgr.getGroupDX()); - pos.y = (int) (pos.y + yoff * hbotLittleBSPosMgr.getGroupDY()); - return pos; - } - - - public Pos2d getLarBSX(Integer X) { - Integer xoff = X % 3; - Integer yoff = X / 3; - Pos2d pos = getParam(Hbot2DCodeScanPos.LarBS0, Pos2d.class); - if (pos == null) { - return null; - } - pos.x = (int) (pos.x + xoff * largeBottleBSPosMgr.getLargeBufferScanPosDx()); - pos.y = (int) (pos.y + yoff * largeBottleBSPosMgr.getLargeBufferScanPosDy()); - return pos; - } - -} - diff --git a/src/main/java/a8k/app/service/param/HbotFixedPosParamMgr.java b/src/main/java/a8k/app/service/param/HbotFixedPosParamMgr.java deleted file mode 100644 index 3bdba8d..0000000 --- a/src/main/java/a8k/app/service/param/HbotFixedPosParamMgr.java +++ /dev/null @@ -1,46 +0,0 @@ -package a8k.app.service.param; - -import a8k.app.service.param.base.ParamMgr; -import a8k.app.a8ktype.device.Pos3d; -import jakarta.annotation.PostConstruct; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * HBOT二维码扫描坐标参数 - */ -@Component -public class HbotFixedPosParamMgr extends ParamMgr { - static final Logger logger = LoggerFactory.getLogger(HbotFixedPosParamMgr.class); - - public enum Pos { - DropLiquidPos("滴液位置", Pos3d.class), - ; - public final String chName; - public final Class type; - - Pos(String chName, Class type) { - this.chName = chName; - this.type = type; - } - } - - @PostConstruct - void initialize() { - for (Pos pos : Pos.values()) { - initParam(pos, pos.chName, pos.type); - } - //check - getDropLiquidPos(); - } - - public Pos3d getDropLiquidPos() { - return getParam(Pos.DropLiquidPos, Pos3d.class); - } - - public void setDropLiquidPos(Pos3d pos) { - setParam(Pos.DropLiquidPos.name(), pos); - } -} - diff --git a/src/main/java/a8k/app/service/param/HbotLargeBottleBSPosMgr.java b/src/main/java/a8k/app/service/param/HbotLargeBottleBSPosMgr.java deleted file mode 100644 index eb5d960..0000000 --- a/src/main/java/a8k/app/service/param/HbotLargeBottleBSPosMgr.java +++ /dev/null @@ -1,78 +0,0 @@ -package a8k.app.service.param; - -import a8k.app.a8ktype.device.ConsumableGroup; -import a8k.app.service.param.base.ParamMgr; -import a8k.app.a8ktype.param.hbotpos.HbotLargeBottleBSPos; -import a8k.app.a8ktype.device.Pos2d; -import a8k.app.a8ktype.device.Pos3d; -import jakarta.annotation.PostConstruct; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.Arrays; - -/** - * HBOT二维码扫描坐标参数 - */ -@Component -@Slf4j -public class HbotLargeBottleBSPosMgr extends ParamMgr { - - @PostConstruct - void initialize() { - for (HbotLargeBottleBSPos param : HbotLargeBottleBSPos.values()) { - initParam(param, param.chName, param.type); - } - // 校验参数类型,获取的过程中会自动校验,所以这里只是逐个获取一遍 - Arrays.stream(ConsumableGroup.values()).sequential().forEach(this::getLLDStartPos); - Arrays.stream(ConsumableGroup.values()).sequential().forEach(this::getSamplePosEnd); - } - - public void setParam(HbotLargeBottleBSPos param, Object val) { - setParam(param.name(), val); - } - - public void setPos0(Pos2d pos) { - setParam(HbotLargeBottleBSPos.LargeBuffer_0Pos, pos); - } - - public void setDxAndDy(double dx, double dy) { - setParam(HbotLargeBottleBSPos.LargeBuffer_DX, dx); - setParam(HbotLargeBottleBSPos.LargeBuffer_DY, dy); - } - - public Pos3d getLLDStartPos(ConsumableGroup group) { - Pos2d pos00 = getParam(HbotLargeBottleBSPos.LargeBuffer_0Pos, Pos2d.class); - Double dx = getParam(HbotLargeBottleBSPos.LargeBuffer_DX, Double.class); - Double dy = getParam(HbotLargeBottleBSPos.LargeBuffer_DY, Double.class); - - int xoff = group.off % 3; - int yoff = group.off / 3; - - double x = pos00.x + xoff * dx; - double y = pos00.y + yoff * dy; - double z = getParam(HbotLargeBottleBSPos.LargeBottleBufferLLDStartZAxisPos, Double.class); - return new Pos3d((int) x, (int) y, (int) z); - } - - public Integer getSampleEndZPos(ConsumableGroup group) { - return getParam(HbotLargeBottleBSPos.LargeBottleBufferBottomZAxisPos, Double.class).intValue(); - } - - public Integer getLLDStartZPos(ConsumableGroup group) { - return getParam(HbotLargeBottleBSPos.LargeBottleBufferLLDStartZAxisPos, Double.class).intValue(); - } - - public Pos3d getSamplePosEnd(ConsumableGroup group) { - Pos3d var = getLLDStartPos(group); - var.z = getParam(HbotLargeBottleBSPos.LargeBottleBufferBottomZAxisPos, Double.class).intValue(); - return var; - } - public Double getLargeBufferScanPosDx() { - return getParam(HbotLargeBottleBSPos.LargeBufferScanPos_DX, Double.class); - } - - public Double getLargeBufferScanPosDy() { - return getParam(HbotLargeBottleBSPos.LargeBufferScanPos_DY, Double.class); - } -} diff --git a/src/main/java/a8k/app/service/param/HbotLittleBSPosMgr.java b/src/main/java/a8k/app/service/param/HbotLittleBSPosMgr.java deleted file mode 100644 index e5a40b6..0000000 --- a/src/main/java/a8k/app/service/param/HbotLittleBSPosMgr.java +++ /dev/null @@ -1,129 +0,0 @@ -package a8k.app.service.param; - -import a8k.app.a8ktype.device.ConsumableGroup; -import a8k.app.service.param.base.ParamMgr; -import a8k.app.a8ktype.param.hbotpos.HbotLittleBSPos; -import a8k.app.a8ktype.device.Pos2d; -import a8k.app.a8ktype.device.Pos3d; -import jakarta.annotation.PostConstruct; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * HBOT二维码扫描坐标参数 - */ -@Component -public class HbotLittleBSPosMgr extends ParamMgr { - static final Logger logger = LoggerFactory.getLogger(HbotLittleBSPosMgr.class); - - - @PostConstruct - void initialize() { - for (HbotLittleBSPos param : HbotLittleBSPos.values()) { - initParam(param, param.chName, param.type); - } - - //校验参数类型 - for (var group : ConsumableGroup.values()) { - for (int i = 0; i < 25; i++) { - getLittleBSPos(group, i); - getLittleBSPiercePos(group, i); - getLittleBSSamplePos(group, i); - } - } - } - - public void setParam(HbotLittleBSPos param, Object val) { - setParam(param.name(), val); - } - - - public Pos3d getLittleBSPos(ConsumableGroup group, Integer off) { - - Pos2d pos00 = getParam(HbotLittleBSPos.LittleBufferGroup0_000Pos, Pos2d.class); - Double gdx = getParam(HbotLittleBSPos.GroupDX, Double.class); - Double gdy = getParam(HbotLittleBSPos.GroupDY, Double.class); - Double dx = getParam(HbotLittleBSPos.LittleBufferDX, Double.class); - Double dy = getParam(HbotLittleBSPos.LittleBufferDY, Double.class); - - Integer xoff = off % 5; - Integer yoff = off / 5; - - Integer gxoff = group.off % 3; - Integer gyoff = group.off / 3; - - - double x = pos00.x + xoff * dx + gxoff * gdx; - double y = pos00.y + yoff * dy + gyoff * gdy; - - return new Pos3d((int) x, (int) y, 0); - - } - - public Pos3d getLittleBSPiercePos(ConsumableGroup group, Integer off) { - Pos3d pos = getLittleBSPos(group, off); - Double appDistance = getParam(HbotLittleBSPos.LittleBSPierceXYAppendDistance, Double.class); - pos.x += appDistance.intValue(); - pos.y += appDistance.intValue(); - pos.z = getParam(HbotLittleBSPos.LittleBSPierceZPos, Integer.class); - return pos; - } - - public Pos3d getLittleBSSamplePos(ConsumableGroup group, Integer off) { - Pos3d pos = getLittleBSPos(group, off); - pos.z = getParam(HbotLittleBSPos.LittleBSSampleZPos, Integer.class); - return pos; - } - - - Pos3d getProbeSubstanceXYPos(ConsumableGroup group, Integer off) { - - Pos2d pos00 = getParam(HbotLittleBSPos.ProbeSubstanceGroup0_000Pos, Pos2d.class); - Double gdx = getParam(HbotLittleBSPos.GroupDX, Double.class); - Double gdy = getParam(HbotLittleBSPos.GroupDY, Double.class); - Double dx = getParam(HbotLittleBSPos.ProbeSubstanceDX, Double.class); - Double dy = getParam(HbotLittleBSPos.ProbeSubstanceDY, Double.class); - - Integer xoff = off % 5; - Integer yoff = off / 5; - - Integer gxoff = group.off % 3; - Integer gyoff = group.off / 3; - - - double x = pos00.x + xoff * dx + gxoff * gdx; - double y = pos00.y + yoff * dy + gyoff * gdy; - - return new Pos3d((int) x, (int) y, 0); - - } - - public Double getGroupDX() { - return getParam(HbotLittleBSPos.GroupDX, Double.class); - } - - public Double getGroupDY() { - return getParam(HbotLittleBSPos.GroupDY, Double.class); - } - - // public Pos3d getSamplePos(ConsumableGroup group, Integer off) { - // Pos3d pos = getXYPos(group, off); - // pos.z = getParam(HbotProbeSubstancePos.ProbeSubstanceSampleZPos, Double.class).intValue(); - // return pos; - // } - - public Pos3d getProbeSubstanceSamplePos(ConsumableGroup group, Integer off) { - Pos3d pos = getProbeSubstanceXYPos(group, off); - pos.z = getParam(HbotLittleBSPos.ProbeSubstanceSampleZPos, Integer.class); - return pos; - } - - public Pos3d getProbeSubstancePiercePos(ConsumableGroup group, Integer off) { - Pos3d pos = getProbeSubstanceXYPos(group, off); - pos.z = getParam(HbotLittleBSPos.ProbeSubstancePierceZPos, Integer.class); - pos.x += getParam(HbotLittleBSPos.ProbeSubstancePierceXYAppendDistance, Double.class).intValue(); - pos.y += getParam(HbotLittleBSPos.ProbeSubstancePierceXYAppendDistance, Double.class).intValue(); - return pos; - } -} diff --git a/src/main/java/a8k/app/service/param/HbotProbeSubstancePosMgr.java b/src/main/java/a8k/app/service/param/HbotProbeSubstancePosMgr.java deleted file mode 100644 index 64bfc38..0000000 --- a/src/main/java/a8k/app/service/param/HbotProbeSubstancePosMgr.java +++ /dev/null @@ -1,31 +0,0 @@ -package a8k.app.service.param; - -import a8k.app.service.param.base.ParamMgr; - -import a8k.app.a8ktype.device.ConsumableGroup; -import a8k.app.a8ktype.device.Pos2d; -import a8k.app.a8ktype.device.Pos3d; -import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * HBOT二维码扫描坐标参数 - */ -@Component -public class HbotProbeSubstancePosMgr extends ParamMgr { - - @Resource - HbotLittleBSPosMgr hbotLittleBSPosMgr; - - public Pos3d getSamplePos(ConsumableGroup group, Integer off) { - return hbotLittleBSPosMgr.getProbeSubstanceSamplePos(group, off); - } - - public Pos3d getPiercePos(ConsumableGroup group, Integer off) { - return hbotLittleBSPosMgr.getProbeSubstancePiercePos(group, off); - } - -} diff --git a/src/main/java/a8k/app/service/param/HbotSamplePosParamMgr.java b/src/main/java/a8k/app/service/param/HbotSamplePosParamMgr.java deleted file mode 100644 index 68fbbea..0000000 --- a/src/main/java/a8k/app/service/param/HbotSamplePosParamMgr.java +++ /dev/null @@ -1,68 +0,0 @@ -package a8k.app.service.param; - -import a8k.app.service.param.base.ParamMgr; -import a8k.app.a8ktype.param.type.A8kSamplePos; -import a8k.app.a8ktype.param.hbotpos.HbotSamplePos; -import a8k.app.a8ktype.device.Pos3d; -import jakarta.annotation.PostConstruct; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * - */ -@Component -public class HbotSamplePosParamMgr extends ParamMgr { - static final Logger logger = LoggerFactory.getLogger(HbotSamplePosParamMgr.class); - - - @PostConstruct - void initialize() { - for (HbotSamplePos pos : HbotSamplePos.values()) { - initParam(pos, pos.chName,pos.type); - } - - //校验参数类型 - for (A8kSamplePos samplePos : A8kSamplePos.values()) { - getSampleStartPos(samplePos); - getSampleEndPos(samplePos); - } - } - - public Pos3d getSamplePos(HbotSamplePos pos) { - return getParam(pos, Pos3d.class); - } - - public void setSamplePos(HbotSamplePos pos, Pos3d pos3d) { - setParam(pos, pos3d); - } - - - public Pos3d getSampleStartPos(A8kSamplePos samplePos) { - return switch (samplePos) { - case EmergencyTubePos -> getSamplePos(HbotSamplePos.EmergencyTubeSamplePos); - case BloodHTubePos -> getSamplePos(HbotSamplePos.BloodHTubeSamplePos); - case BloodSTubePos -> getSamplePos(HbotSamplePos.BloodSTubeSamplePos); - case MiniTubePos -> getSamplePos(HbotSamplePos.MiniTubeSamplePos); - case MiniBloodPos -> getSamplePos(HbotSamplePos.MiniBloodSamplePos); - case Bulltube1P5Pos -> getSamplePos(HbotSamplePos.Bulltube1P5SamplePos); - case Bulltube0P5Pos -> getSamplePos(HbotSamplePos.Bulltube0P5SamplePos); - case StoolTestTubePos -> getSamplePos(HbotSamplePos.StoolTestTubeSamplePos); - }; - } - - public Pos3d getSampleEndPos(A8kSamplePos samplePos) { - return switch (samplePos) { - case EmergencyTubePos -> getSamplePos(HbotSamplePos.EmergencyTubeSampleEndPos); - case BloodHTubePos -> getSamplePos(HbotSamplePos.BloodHTubeSampleEndPos); - case BloodSTubePos -> getSamplePos(HbotSamplePos.BloodSTubeSampleEndPos); - case MiniTubePos -> getSamplePos(HbotSamplePos.MinitubeSampleEndPos); - case MiniBloodPos -> getSamplePos(HbotSamplePos.MiniBloodSampleEndPos); - case Bulltube1P5Pos -> getSamplePos(HbotSamplePos.Bulltube1P5SampleEndPos); - case Bulltube0P5Pos -> getSamplePos(HbotSamplePos.Bulltube0P5SampleEndPos); - case StoolTestTubePos -> getSamplePos(HbotSamplePos.StoolTestTubeSampleEndPos); - }; - } -} - diff --git a/src/main/java/a8k/app/service/param/HbotTipPosMgr.java b/src/main/java/a8k/app/service/param/HbotTipPosMgr.java deleted file mode 100644 index 85a0e93..0000000 --- a/src/main/java/a8k/app/service/param/HbotTipPosMgr.java +++ /dev/null @@ -1,132 +0,0 @@ -package a8k.app.service.param; - -import a8k.app.constant.AppConstant; -import a8k.app.service.param.base.ParamMgr; -import a8k.app.a8ktype.param.hbotpos.HbotTipPosParam; -import a8k.app.a8ktype.type.TipPosConfig; -import a8k.app.a8ktype.device.Pos3d; -import a8k.app.a8ktype.device.TipGroup; -import jakarta.annotation.PostConstruct; -import org.springframework.stereotype.Component; -import org.springframework.util.Assert; - -/** - * HBOT二维码扫描坐标参数 - */ -@Component -public class HbotTipPosMgr extends ParamMgr { - - @PostConstruct - void initialize() { - for (HbotTipPosParam param : HbotTipPosParam.values()) { - initParam(param, param.chName, param.type); - } - - //校验参数类型 - for (TipGroup tipGroup : TipGroup.values()) { - getTipPosCfg(tipGroup); - for (int i = 0; i < AppConstant.TIP_NUM; i++) { - getTipPos(tipGroup, i); - } - } - - } - - public void setParam(HbotTipPosParam param, Object val) { - setParam(param.name(), val); - } - - public void setTipGroupParam(TipGroup tipGroup, Pos3d tip000, Double dx, Double dy) { - HbotTipPosParam tip000Pos = null; - HbotTipPosParam tipDxPos = null; - HbotTipPosParam tipDyPos = null; - if (tip000 == null) - tip000 = new Pos3d(0, 0, 0); - if (dx == null) - dx = 0.0; - if (dy == null) - dy = 0.0; - - if (tipGroup == TipGroup.TipG1) { - tip000Pos = HbotTipPosParam.TipGroup0_000Pos; - tipDxPos = HbotTipPosParam.TipGroup0_SpaceingX; - tipDyPos = HbotTipPosParam.TipGroup0_SpaceingY; - } else if (tipGroup == TipGroup.TipG2) { - tip000Pos = HbotTipPosParam.TipGroup1_000Pos; - tipDxPos = HbotTipPosParam.TipGroup1_SpaceingX; - tipDyPos = HbotTipPosParam.TipGroup1_SpaceingY; - } else if (tipGroup == TipGroup.TipG3) { - tip000Pos = HbotTipPosParam.TipGroup2_000Pos; - tipDxPos = HbotTipPosParam.TipGroup2_SpaceingX; - tipDyPos = HbotTipPosParam.TipGroup2_SpaceingY; - } - - Assert.isTrue(tip000Pos != null, "tip000Pos != null"); - - setParam(tip000Pos, tip000); - setParam(tipDxPos, dx); - setParam(tipDyPos, dy); - } - - public void setTipPosCfg(TipGroup tipGroup, TipPosConfig cfg) { - setTipGroupParam(tipGroup, cfg.tip000, cfg.spaceingX, cfg.spaceingY); - } - - public TipPosConfig getTipPosCfg(TipGroup tipGroup) { - Pos3d tip000 = null; - Double dx = 0.0; - Double dy = 0.0; - - if (tipGroup == TipGroup.TipG1) { - tip000 = getParam(HbotTipPosParam.TipGroup0_000Pos, Pos3d.class); - dx = getParam(HbotTipPosParam.TipGroup0_SpaceingX, Double.class); - dy = getParam(HbotTipPosParam.TipGroup0_SpaceingY, Double.class); - - } else if (tipGroup == TipGroup.TipG2) { - tip000 = getParam(HbotTipPosParam.TipGroup1_000Pos, Pos3d.class); - dx = getParam(HbotTipPosParam.TipGroup1_SpaceingX, Double.class); - dy = getParam(HbotTipPosParam.TipGroup1_SpaceingY, Double.class); - } else if (tipGroup == TipGroup.TipG3) { - tip000 = getParam(HbotTipPosParam.TipGroup2_000Pos, Pos3d.class); - dx = getParam(HbotTipPosParam.TipGroup2_SpaceingX, Double.class); - dy = getParam(HbotTipPosParam.TipGroup2_SpaceingY, Double.class); - } - - TipPosConfig cfg = new TipPosConfig(); - if (tip000 == null) { - tip000 = new Pos3d(0, 0, 0); - } - cfg.tip000 = tip000; - cfg.spaceingX = dx; - cfg.spaceingY = dy; - cfg.tipGroup = tipGroup; - return cfg; - } - - - public Pos3d getTipPos(TipGroup tipGroup, Integer tipoff) { - TipPosConfig cfg = getTipPosCfg(tipGroup); - - Assert.isTrue(cfg.tip000 != null, "tip000 != null"); - Assert.isTrue(cfg.spaceingX != null, "dx != null"); - Assert.isTrue(cfg.spaceingY != null, "dy != null"); - - int xoff = tipoff % 12; - int yoff = tipoff / 12; - - double x = cfg.tip000.x + xoff * cfg.spaceingX; - double y = cfg.tip000.y + yoff * cfg.spaceingY; - double z = cfg.tip000.z; - - return new Pos3d((int) x, (int) y, (int) z); - } - - - public void setDropTipPos(Pos3d pos) { - setParam(HbotTipPosParam.DropTipPos, pos); - } - - public Pos3d getDropTipPos() { - return getParam(HbotTipPosParam.DropTipPos, Pos3d.class); - } -} diff --git a/src/main/java/a8k/app/service/param/OptModuleExtParamsMgr.java b/src/main/java/a8k/app/service/param/OptModuleExtParamsMgr.java deleted file mode 100644 index 243c402..0000000 --- a/src/main/java/a8k/app/service/param/OptModuleExtParamsMgr.java +++ /dev/null @@ -1,68 +0,0 @@ -package a8k.app.service.param; - - -import a8k.app.service.param.base.ParamMgr; -import a8k.app.a8ktype.param.optpos.OptModuleExtParam; -import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType; -import jakarta.annotation.PostConstruct; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; -import org.springframework.util.Assert; - -import java.util.Arrays; - -/** - * HBOT二维码扫描坐标参数 - */ -@Component -public class OptModuleExtParamsMgr extends ParamMgr { - static final Logger logger = LoggerFactory.getLogger(OptModuleExtParamsMgr.class); - - - @PostConstruct - void initialize() { - for (OptModuleExtParam pos : OptModuleExtParam.values()) { - initParam(pos, pos.chName, pos.type); - } - - //校验参数类型 - Arrays.stream(A8kOptType.values()).sequential().forEach(this::getOptScanStartPos); - Arrays.stream(A8kOptType.values()).sequential().forEach(this::getScanGain); - Arrays.stream(A8kOptType.values()).sequential().forEach(this::getOptLasterRawGain); - - } - - public void setOptParam(OptModuleExtParam pos, Object value) { - setParam(pos, value); - } - - public Integer getOptScanStartPos(A8kOptType type) { - Integer shift = switch (type) { - case TOPT -> getParam(OptModuleExtParam.TOptScanShift, Integer.class); - case FOPT -> getParam(OptModuleExtParam.FOptScanShift, Integer.class); - }; - - Assert.notNull(shift, "扫描偏移量不能为空"); - Assert.isTrue(shift > 0, "扫描偏移量必须大于0"); - - // Integer scanStartPos = getParam(OptModuleExtParam.OptScanRefPos, Integer.class); - return shift; - } - - public Double getScanGain(A8kOptType type) { - return switch (type) { - case TOPT -> getParam(OptModuleExtParam.TOptScanGainVal, Double.class); - case FOPT -> getParam(OptModuleExtParam.FOptScanGainVal, Double.class); - }; - } - - public Integer getOptLasterRawGain(A8kOptType type) { - return switch (type) { - case TOPT -> getParam(OptModuleExtParam.TOptEmissionIntensity, Integer.class); - case FOPT -> getParam(OptModuleExtParam.FOptEmissionIntensity, Integer.class); - }; - } - -} - diff --git a/src/main/java/a8k/app/service/param/OptModuleParamsMgr.java b/src/main/java/a8k/app/service/param/OptModuleParamsMgr.java deleted file mode 100644 index ff3fd36..0000000 --- a/src/main/java/a8k/app/service/param/OptModuleParamsMgr.java +++ /dev/null @@ -1,59 +0,0 @@ -package a8k.app.service.param; - - -import a8k.app.service.param.base.ParamMgr; -import a8k.app.a8ktype.param.optpos.OptModuleParam; -import jakarta.annotation.PostConstruct; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * HBOT二维码扫描坐标参数 - */ -@Component -public class OptModuleParamsMgr extends ParamMgr { - static final Logger logger = LoggerFactory.getLogger(OptModuleParamsMgr.class); - - - @PostConstruct - void initialize() { - for (OptModuleParam pos : OptModuleParam.values()) { - initParam(pos, pos.chName, pos.type); - } - - //校验参数类型 - getPullerTargetPos(); - getOptScanerDropPos(); - getOptScanerScandbyPos(); - } - -// public void paramReset() { -// logger.info("init param"); -// setParam(OptModuleParam.PullerTargetPos, 1147); -// setParam(OptModuleParam.OptScanerDropPos, -349); -// setParam(OptModuleParam.OptScanerScandbyPos, 305); -// setParam(OptModuleParam.OptScanerScandbyPos, 4000); -// -// } - - - public void setOptParam(OptModuleParam pos, Object value) { - setParam(pos, value); - } - - - public Integer getPullerTargetPos() { - return getParam(OptModuleParam.PullerTargetPos, Integer.class); - } - - public Integer getOptScanerDropPos() { - return getParam(OptModuleParam.OptScanerDropPos, Integer.class); - } - - public Integer getOptScanerScandbyPos() { - return getParam(OptModuleParam.OptScanerScandbyPos, Integer.class); - } - -} - diff --git a/src/main/java/a8k/app/service/param/PipetteGunExParamMgr.java b/src/main/java/a8k/app/service/param/PipetteGunExParamMgr.java deleted file mode 100644 index 7d41c7e..0000000 --- a/src/main/java/a8k/app/service/param/PipetteGunExParamMgr.java +++ /dev/null @@ -1,51 +0,0 @@ -package a8k.app.service.param; - -import a8k.app.service.param.base.ParamMgr; -import jakarta.annotation.PostConstruct; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -@Component -@Slf4j -public class PipetteGunExParamMgr extends ParamMgr { - enum PipetteGunParam { - VOLUME_CALIBRATION_COEFFICIENT_A("体积校准系数-A", Double.class), - VOLUME_CALIBRATION_COEFFICIENT_B("体积校准系数-B", Double.class), - ; - - public final String chName; - public final Class type; - - PipetteGunParam(String chName, Class type) { - this.chName = chName; - this.type = type; - } - } - - - @PostConstruct - void initialize() { - for (PipetteGunParam param : PipetteGunParam.values()) { - initParam(param, param.chName, param.type); - } - } - - public void setVolumeCalibrationCoefficient(Double A, Double B) { - setParam(PipetteGunParam.VOLUME_CALIBRATION_COEFFICIENT_A, A); - setParam(PipetteGunParam.VOLUME_CALIBRATION_COEFFICIENT_B, B); - } - - public double calibrateVolume(double rawVolume) { - Double A = getParam(PipetteGunParam.VOLUME_CALIBRATION_COEFFICIENT_A, Double.class); - Double B = getParam(PipetteGunParam.VOLUME_CALIBRATION_COEFFICIENT_B, Double.class); - return A * rawVolume + B; - } - - public double getCoefficientA() { - return getParam(PipetteGunParam.VOLUME_CALIBRATION_COEFFICIENT_A, Double.class); - } - - public double getCoefficientB() { - return getParam(PipetteGunParam.VOLUME_CALIBRATION_COEFFICIENT_B, Double.class); - } -} diff --git a/src/main/java/a8k/app/service/param/PipetteGunLLDParamMgr.java b/src/main/java/a8k/app/service/param/PipetteGunLLDParamMgr.java deleted file mode 100644 index 440e7c3..0000000 --- a/src/main/java/a8k/app/service/param/PipetteGunLLDParamMgr.java +++ /dev/null @@ -1,41 +0,0 @@ -package a8k.app.service.param; - -import a8k.app.hardware.type.LldType; -import a8k.app.service.param.base.ParamMgr; -import a8k.app.a8ktype.param.pipette.PipetteGunLLDThresholdParam; -import a8k.app.a8ktype.param.pipette.PipetteGunLLDTypeParam; -import jakarta.annotation.PostConstruct; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.Arrays; - -/** - * HBOT二维码扫描坐标参数 - */ -@Component -@Slf4j -public class PipetteGunLLDParamMgr extends ParamMgr { - - @PostConstruct - void initialize() { - for (PipetteGunLLDThresholdParam param : PipetteGunLLDThresholdParam.values()) { - initParam(param, param.chName, param.type); - } - for (PipetteGunLLDTypeParam param : PipetteGunLLDTypeParam.values()) { - initParam(param, param.chName, param.type); - } - - // 校验参数类型 - Arrays.stream(PipetteGunLLDTypeParam.values()).sequential().forEach(this::getLLDType); - Arrays.stream(PipetteGunLLDThresholdParam.values()).sequential().forEach(this::getLLDThresholdParam); - } - - public Integer getLLDThresholdParam(PipetteGunLLDThresholdParam param) { - return getParam(param, Integer.class); - } - - public LldType getLLDType(PipetteGunLLDTypeParam param) { - return getParam(param, LldType.class); - } -} diff --git a/src/main/java/a8k/app/service/param/PipetteGunLLFParamMgr.java b/src/main/java/a8k/app/service/param/PipetteGunLLFParamMgr.java deleted file mode 100644 index 416361c..0000000 --- a/src/main/java/a8k/app/service/param/PipetteGunLLFParamMgr.java +++ /dev/null @@ -1,57 +0,0 @@ -package a8k.app.service.param; - -import a8k.app.service.param.base.ParamMgr; -import a8k.app.a8ktype.param.type.A8kSamplePos; -import a8k.app.a8ktype.param.pipette.PipetteGunLLFParam; -import jakarta.annotation.PostConstruct; -import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.Arrays; - -/** - * HBOT二维码扫描坐标参数 - */ -@Component -@Slf4j -public class PipetteGunLLFParamMgr extends ParamMgr { - static final Logger logger = LoggerFactory.getLogger(PipetteGunLLFParamMgr.class); - - - @PostConstruct - void initialize() { - for (PipetteGunLLFParam param : PipetteGunLLFParam.values()) { - initParam(param, param.chName, param.type); - } - - // 校验参数类型 - Arrays.stream(PipetteGunLLFParam.values()).sequential().forEach(this::getLlfVel); - Arrays.stream(A8kSamplePos.values()).sequential().forEach(this::getSampleLLFVel); - getLargeBSBottleLlfVel(); - - } - - public Integer getLlfVel(PipetteGunLLFParam param) { - return getParam(param, Integer.class); - } - - - public Integer getSampleLLFVel(A8kSamplePos pos) { - return switch (pos) { - case EmergencyTubePos -> getLlfVel(PipetteGunLLFParam.EMERGENCY_TUBE_LLF_VEL); - case BloodHTubePos, BloodSTubePos -> getLlfVel(PipetteGunLLFParam.BLOOD_TUBE_LLF_VEL); - case MiniTubePos -> getLlfVel(PipetteGunLLFParam.MINI_TUBE_LLF_VEL); - case MiniBloodPos -> getLlfVel(PipetteGunLLFParam.MINI_BLOOD_LLF_VEL); - case Bulltube1P5Pos -> getLlfVel(PipetteGunLLFParam.BULLET_TUBE_1P5_LLF_VEL); - case Bulltube0P5Pos -> getLlfVel(PipetteGunLLFParam.BULLET_TUBE_0P5_LLF_VEL); - case StoolTestTubePos -> getLlfVel(PipetteGunLLFParam.STOOL_TEST_TUBE_LLF_VEL); - }; - } - - public Integer getLargeBSBottleLlfVel() { - return getLlfVel(PipetteGunLLFParam.LARGE_BS_BOTTLE_LLF_VEL); - } - -} diff --git a/src/main/java/a8k/app/service/param/PlatesBoxPosParamMgr.java b/src/main/java/a8k/app/service/param/PlatesBoxPosParamMgr.java deleted file mode 100644 index 6b83b8f..0000000 --- a/src/main/java/a8k/app/service/param/PlatesBoxPosParamMgr.java +++ /dev/null @@ -1,79 +0,0 @@ -package a8k.app.service.param; - - -import a8k.app.service.param.base.ParamMgr; -import jakarta.annotation.PostConstruct; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - - -@Component -public class PlatesBoxPosParamMgr extends ParamMgr { - static final Logger logger = LoggerFactory.getLogger(PlatesBoxPosParamMgr.class); - - enum POS { - Ch0YPos("通道0Y轴位置", Integer.class), - ChDPos("通道间距", Double.class), - // Ch5YPos("通道5Y轴位置", Integer.class), - - PushEndXPos("推杆到位坐标", Integer.class), - ; - public final String chName; - public final Class type; - - POS(String chName, Class type) { - this.chName = chName; - this.type = type; - } - } - - - @PostConstruct - void initialize() { - for (POS pos : POS.values()) { - initParam(pos, pos.chName, pos.type); - } - //校验参数类型 - getCh0YPos(); - getPushEndXPos(); - getYSpacing(); - } - - // - // public void paramReset() { - // logger.info("init param"); - // setParam(POS.Ch0YPos, -17); - // setParam(POS.Ch5YPos, 1308); - // setParam(POS.PushEndXPos, 1160); - // } - - public Integer getCh0YPos() { - return getParam(POS.Ch0YPos, Integer.class); - } - - public Double getYSpacing() { - return getParam(POS.ChDPos, Double.class); - } - - public Integer getChXPos(int ch) { - return (int) (getCh0YPos() + ch * getYSpacing()); - } - - public Integer getPushEndXPos() { - return getParam(POS.PushEndXPos, Integer.class); - } - - public void setCh0YPos(Integer pos) { - setParam(POS.Ch0YPos, pos); - } - - public void setYSpacing(Double pos) { - setParam(POS.ChDPos, pos); - } - - public void setPushEndXPos(Integer pos) { - setParam(POS.PushEndXPos, pos); - } -} - diff --git a/src/main/java/a8k/app/service/param/TemperatureCtrlParamMgr.java b/src/main/java/a8k/app/service/param/TemperatureCtrlParamMgr.java deleted file mode 100644 index d10eaca..0000000 --- a/src/main/java/a8k/app/service/param/TemperatureCtrlParamMgr.java +++ /dev/null @@ -1,42 +0,0 @@ -package a8k.app.service.param; - -import a8k.app.service.param.base.ParamMgr; -import a8k.app.a8ktype.param.TemperatureCtrlParam; -import jakarta.annotation.PostConstruct; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.Arrays; - -/** - * HBOT二维码扫描坐标参数 - */ -@Component -public class TemperatureCtrlParamMgr extends ParamMgr { - static final Logger logger = LoggerFactory.getLogger(TemperatureCtrlParamMgr.class); - - @PostConstruct - void initialize() { - for (TemperatureCtrlParam pos : TemperatureCtrlParam.values()) { - initParam(pos, pos.chName, pos.type); - } - Arrays.stream(TemperatureCtrlParam.values()).sequential().forEach(this::getParam); - - } - - void setParam(TemperatureCtrlParam pos, Double value) { - super.setParam(pos, value); - } - - public Double getParam(TemperatureCtrlParam pos) { - Double obj = super.getParam(pos, Double.class); - if (obj == null) { - return switch (pos) { - case IncubatorTCMTempOffset, PlatesBoxTCMTempOffset -> 0.0; - }; - } - return obj; - } -} - diff --git a/src/main/java/a8k/app/service/param/TubeFeedingModuleParamMgr.java b/src/main/java/a8k/app/service/param/TubeFeedingModuleParamMgr.java deleted file mode 100644 index 170245f..0000000 --- a/src/main/java/a8k/app/service/param/TubeFeedingModuleParamMgr.java +++ /dev/null @@ -1,114 +0,0 @@ -package a8k.app.service.param; - -import a8k.app.service.param.base.ParamMgr; -import a8k.app.a8ktype.param.tubefeeding.TubeFeedingModuleSetting; -import a8k.app.a8ktype.param.tubefeeding.TubeFeedingModulePos; -import jakarta.annotation.PostConstruct; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - - -@Component -public class TubeFeedingModuleParamMgr extends ParamMgr { - static final Logger logger = LoggerFactory.getLogger(TubeFeedingModuleParamMgr.class); - - @PostConstruct - void initialize() { - for (TubeFeedingModulePos pos : TubeFeedingModulePos.values()) { - initParam(pos, pos.chName, pos.type); - } - for (TubeFeedingModuleSetting param : TubeFeedingModuleSetting.values()) { - initParam(param, param.chName, param.type); - } - - // 校验参数类型 - for (int i = 0; i < 10; i++) { - getTubePreProcessPos(i); - getTubeScanPos(i); - getTubeAltitJudgPos(i); - getTubeExistJudgPos(i); - } - getTubeHolderEnterXPos(); - getTubeHolderExitXPos(); - getTubeHolderScanXPos(); - getTubeScanServoTorque(); - } - - /** - * 获取管子预处理位置 - * @param tubeIndex 管子序号 - * @return 坐标 - */ - public Integer getTubePreProcessPos(Integer tubeIndex) { - Integer startPos = getParam(TubeFeedingModulePos.Tube0PreProcessPos, Integer.class); - Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); - return (int) (startPos + spacing * tubeIndex); - } - - /** - * 获取试管扫描位置 - * @param tubeIndex 管子序号 - * @return 坐标 - */ - public Integer getTubeScanPos(Integer tubeIndex) { - Integer startPos = getParam(TubeFeedingModulePos.Tube0ScanPos, Integer.class); - Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); - return (int) (startPos + spacing * tubeIndex); - } - - /** - * 获取试管高度判断位置 - * @param tubeIndex 管子序号 - * @return 坐标 - */ - public Integer getTubeAltitJudgPos(Integer tubeIndex) { - Integer startPos = getParam(TubeFeedingModulePos.Tube0AltitJudgPos, Integer.class); - Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); - return (int) (startPos + spacing * tubeIndex); - } - - /** - * 获取试管存在判断位置 - * @param tubeIndex 管子序号 - * @return 坐标 - */ - public Integer getTubeExistJudgPos(Integer tubeIndex) { - Integer startPos = getParam(TubeFeedingModulePos.Tube0ExistJudgPos, Integer.class); - Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); - return (int) (startPos + spacing * tubeIndex); - } - - - /** - * 获取试管架进入位置 - * @return X轴坐标 - */ - public Integer getTubeHolderEnterXPos() { - return getParam(TubeFeedingModulePos.TubeHolderEnterXPos, Integer.class); - } - - /** - * 获取试管架出口位置 - * @return X轴坐标 - */ - public Integer getTubeHolderExitXPos() { - return getParam(TubeFeedingModulePos.TubeHolderExitXPos, Integer.class); - } - - /** - * 获取试管架扫描位置 - * @return X轴坐标 - */ - public Integer getTubeHolderScanXPos() { - return getParam(TubeFeedingModulePos.TubeHolderScanXPos, Integer.class); - } - - /** - * 获取试管架扫描位置 - * @return X轴坐标 - */ - public Integer getTubeScanServoTorque() { - return getParam(TubeFeedingModuleSetting.TubeScanServoTorque, Integer.class); - } -} diff --git a/src/main/java/a8k/app/service/param/TubePreProcesPosParamMgr.java b/src/main/java/a8k/app/service/param/TubePreProcesPosParamMgr.java deleted file mode 100644 index ef68bc8..0000000 --- a/src/main/java/a8k/app/service/param/TubePreProcesPosParamMgr.java +++ /dev/null @@ -1,91 +0,0 @@ -package a8k.app.service.param; - -import a8k.app.service.param.base.ParamMgr; -import a8k.app.a8ktype.param.tubepreprocess.TubePreProcessGripperPos; -import a8k.app.a8ktype.param.tubepreprocess.TubePreProcessTubeClamp; -import a8k.app.a8ktype.param.tubepreprocess.TubePreProcessYPos; -import a8k.app.a8ktype.param.tubepreprocess.TubePreProcessZAxisPos; -import jakarta.annotation.PostConstruct; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -@Component -public class TubePreProcesPosParamMgr extends ParamMgr { - static final Logger logger = LoggerFactory.getLogger(TubeFeedingModuleParamMgr.class); - - @PostConstruct - void initialize() { - for (var pos : TubePreProcessGripperPos.values()) { - initParam(pos, pos.chName, pos.type); - } - for (var pos : TubePreProcessTubeClamp.values()) { - initParam(pos, pos.chName, pos.type); - } - for (var pos : TubePreProcessYPos.values()) { - initParam(pos, pos.chName, pos.type); - } - for (var pos : TubePreProcessZAxisPos.values()) { - initParam(pos, pos.chName, pos.type); - } - //校验参数类型 - getGripperServoOpenPos(); - getGripperServoTakeCapPos(); - getYServoTakeTubePos(); - getYServoShakePos(); - getZMotorTakeTubePos(false); - getZMotorTakeTubePos(true); - getZMotorShakeTubePos(); - getZMotorPutCapPos(); - getShakeClampMotorClampPos(); - getShakeClampMotorReleasePos(); - - } - - public void setPos(TubePreProcessGripperPos pos, Integer value) {setParam(pos, value);} - - public void setPos(TubePreProcessTubeClamp pos, Integer value) {setParam(pos, value);} - - public void setPos(TubePreProcessYPos pos, Integer value) {setParam(pos, value);} - - public void setPos(TubePreProcessZAxisPos pos, Integer value) {setParam(pos, value);} - - private Integer getParamInteger(Enum pos) {return getParam(pos, Integer.class);} - - //Public - - public Integer getPos(TubePreProcessGripperPos pos) {return getParamInteger(pos);} - - public Integer getPos(TubePreProcessTubeClamp pos) {return getParamInteger(pos);} - - public Integer getPos(TubePreProcessYPos pos) {return getParamInteger(pos);} - - public Integer getPos(TubePreProcessZAxisPos pos) {return getParamInteger(pos);} - - - public Integer getGripperServoOpenPos() {return getParamInteger(TubePreProcessGripperPos.GripperServoOpenPos);} - - public Integer getGripperServoTakeCapPos() {return getParamInteger(TubePreProcessGripperPos.GripperServoTakeCapPos);} - - public Integer getYServoTakeTubePos() {return getParamInteger(TubePreProcessYPos.YServoTakeTubePos);} - - public Integer getYServoShakePos() {return getParamInteger(TubePreProcessYPos.YServoShakePos);} - - public Integer getZMotorTakeTubePos(Boolean hightTuhe) { - if (hightTuhe) { - return getParamInteger(TubePreProcessZAxisPos.ZMotorTakeHTubePos); - } else { - return getParamInteger(TubePreProcessZAxisPos.ZMotorTakeSTubePos); - } - } - - public Integer getZMotorShakeTubePos() {return getParamInteger(TubePreProcessZAxisPos.ZMotorShakeTubePos);} - - public Integer getZMotorPutCapPos() {return getParamInteger(TubePreProcessZAxisPos.ZMotorShakeTubePos) + getParamInteger(TubePreProcessGripperPos.GripperRedundancyHeight);} - - public Integer getShakeClampMotorClampPos() {return getParamInteger(TubePreProcessTubeClamp.ShakeClampMotorClampPos);} - - public Integer getShakeClampMotorReleasePos() {return getParamInteger(TubePreProcessTubeClamp.ShakeClampMotorReleasePos);} - - -} diff --git a/src/main/java/a8k/app/service/param/TurntablePosParamMgr.java b/src/main/java/a8k/app/service/param/TurntablePosParamMgr.java deleted file mode 100644 index ea4891e..0000000 --- a/src/main/java/a8k/app/service/param/TurntablePosParamMgr.java +++ /dev/null @@ -1,86 +0,0 @@ -package a8k.app.service.param; - -import a8k.app.service.param.base.ParamMgr; -import jakarta.annotation.PostConstruct; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * HBOT二维码扫描坐标参数 - */ -@Component -public class TurntablePosParamMgr extends ParamMgr { - static final Logger logger = LoggerFactory.getLogger(TurntablePosParamMgr.class); - - /* - * 转盘相关位置 - */ - enum POS { - PushPos0("入板位置", Integer.class), - PullPos0("出板位置", Integer.class), - DropLiquidPos0("滴液位置", Integer.class), - PosSpacing("位置间隔", Integer.class), - ; - final public String chName; - final public Class type; - - POS(String chName, Class type) { - this.chName = chName; - this.type = type; - } - } - - @PostConstruct - void initialize() { - for (POS pos : POS.values()) { - initParam(pos, pos.chName, pos.type); - } - } - - public void paramReset() { - logger.info("init param"); - setParam(POS.PushPos0, 1650); - setParam(POS.PullPos0, 19700); - setParam(POS.DropLiquidPos0, 1650 + 8950); - setParam(POS.PosSpacing, 1800); - - getPushPos0(); - getPullPos0(); - getDropLiquidPos0(); - getPosSpacing(); - } - - public Integer getPushPos0() { - return getParam(POS.PushPos0, Integer.class); - } - - public Integer getPullPos0() { - return getParam(POS.PullPos0, Integer.class); - } - - public Integer getDropLiquidPos0() { - return getParam(POS.DropLiquidPos0, Integer.class); - } - - public Integer getPosSpacing() { - return getParam(POS.PosSpacing, Integer.class); - } - - public void setPushPos0(Integer pos) { - setParam(POS.PushPos0, pos); - } - - public void setPullPos0(Integer pos) { - setParam(POS.PullPos0, pos); - } - - public void setDropLiquidPos0(Integer pos) { - setParam(POS.DropLiquidPos0, pos); - } - - public void setPosSpacing(Integer pos) { - setParam(POS.PosSpacing, pos); - } -} - diff --git a/src/main/java/a8k/app/service/param/hbotpos/Hbot2DCodeScanParamMgr.java b/src/main/java/a8k/app/service/param/hbotpos/Hbot2DCodeScanParamMgr.java new file mode 100644 index 0000000..a56b37d --- /dev/null +++ b/src/main/java/a8k/app/service/param/hbotpos/Hbot2DCodeScanParamMgr.java @@ -0,0 +1,90 @@ +package a8k.app.service.param.hbotpos; + +import a8k.app.service.param.pos.PlatesBoxPosParamMgr; +import a8k.app.service.param.base.ParamMgr; +import a8k.app.a8ktype.param.hbotpos.Hbot2DCodeScanPos; +import a8k.app.a8ktype.device.Pos2d; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +/** + * HBOT二维码扫描坐标参数 + */ +@Component +public class Hbot2DCodeScanParamMgr extends ParamMgr { + static final Logger logger = LoggerFactory.getLogger(Hbot2DCodeScanParamMgr.class); + + @Resource + HbotLittleBSPosMgr hbotLittleBSPosMgr; + + @Resource + PlatesBoxPosParamMgr platesBoxPosParamMgr; + + @Resource + HbotLargeBottleBSPosMgr largeBottleBSPosMgr; + + + @PostConstruct + void initialize() { + for (Hbot2DCodeScanPos pos : Hbot2DCodeScanPos.values()) { + initParam(pos, pos.chName, pos.type); + } + + for (int i = 0; i < 6; i++) { + getPBScanPosX(i); + getLittBSX(i); + getLarBSX(i); + } + } + + public void setPBScanPosX(Pos2d pos) { + setParam(Hbot2DCodeScanPos.PBScanPos0, pos); + } + + public void setLittBSX(Pos2d pos) { + setParam(Hbot2DCodeScanPos.LittBS0, pos); + } + + public void setLarBSX(Pos2d pos) { + setParam(Hbot2DCodeScanPos.LarBS0, pos); + } + + public Pos2d getPBScanPosX(Integer X) { + Pos2d pos = getParam(Hbot2DCodeScanPos.PBScanPos0, Pos2d.class); + if (pos == null) { + return null; + } + pos.y = pos.y + platesBoxPosParamMgr.getYSpacing().intValue(); + return pos; + } + + public Pos2d getLittBSX(Integer X) { + Integer xoff = X % 3; + Integer yoff = X / 3; + Pos2d pos = getParam(Hbot2DCodeScanPos.LittBS0, Pos2d.class); + if (pos == null) { + return null; + } + pos.x = (int) (pos.x + xoff * hbotLittleBSPosMgr.getGroupDX()); + pos.y = (int) (pos.y + yoff * hbotLittleBSPosMgr.getGroupDY()); + return pos; + } + + + public Pos2d getLarBSX(Integer X) { + Integer xoff = X % 3; + Integer yoff = X / 3; + Pos2d pos = getParam(Hbot2DCodeScanPos.LarBS0, Pos2d.class); + if (pos == null) { + return null; + } + pos.x = (int) (pos.x + xoff * largeBottleBSPosMgr.getLargeBufferScanPosDx()); + pos.y = (int) (pos.y + yoff * largeBottleBSPosMgr.getLargeBufferScanPosDy()); + return pos; + } + +} + diff --git a/src/main/java/a8k/app/service/param/hbotpos/HbotFixedPosParamMgr.java b/src/main/java/a8k/app/service/param/hbotpos/HbotFixedPosParamMgr.java new file mode 100644 index 0000000..0d92804 --- /dev/null +++ b/src/main/java/a8k/app/service/param/hbotpos/HbotFixedPosParamMgr.java @@ -0,0 +1,46 @@ +package a8k.app.service.param.hbotpos; + +import a8k.app.service.param.base.ParamMgr; +import a8k.app.a8ktype.device.Pos3d; +import jakarta.annotation.PostConstruct; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +/** + * HBOT二维码扫描坐标参数 + */ +@Component +public class HbotFixedPosParamMgr extends ParamMgr { + static final Logger logger = LoggerFactory.getLogger(HbotFixedPosParamMgr.class); + + public enum Pos { + DropLiquidPos("滴液位置", Pos3d.class), + ; + public final String chName; + public final Class type; + + Pos(String chName, Class type) { + this.chName = chName; + this.type = type; + } + } + + @PostConstruct + void initialize() { + for (Pos pos : Pos.values()) { + initParam(pos, pos.chName, pos.type); + } + //check + getDropLiquidPos(); + } + + public Pos3d getDropLiquidPos() { + return getParam(Pos.DropLiquidPos, Pos3d.class); + } + + public void setDropLiquidPos(Pos3d pos) { + setParam(Pos.DropLiquidPos.name(), pos); + } +} + diff --git a/src/main/java/a8k/app/service/param/hbotpos/HbotLargeBottleBSPosMgr.java b/src/main/java/a8k/app/service/param/hbotpos/HbotLargeBottleBSPosMgr.java new file mode 100644 index 0000000..fe0fdca --- /dev/null +++ b/src/main/java/a8k/app/service/param/hbotpos/HbotLargeBottleBSPosMgr.java @@ -0,0 +1,78 @@ +package a8k.app.service.param.hbotpos; + +import a8k.app.a8ktype.device.ConsumableGroup; +import a8k.app.service.param.base.ParamMgr; +import a8k.app.a8ktype.param.hbotpos.HbotLargeBottleBSPos; +import a8k.app.a8ktype.device.Pos2d; +import a8k.app.a8ktype.device.Pos3d; +import jakarta.annotation.PostConstruct; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Arrays; + +/** + * HBOT二维码扫描坐标参数 + */ +@Component +@Slf4j +public class HbotLargeBottleBSPosMgr extends ParamMgr { + + @PostConstruct + void initialize() { + for (HbotLargeBottleBSPos param : HbotLargeBottleBSPos.values()) { + initParam(param, param.chName, param.type); + } + // 校验参数类型,获取的过程中会自动校验,所以这里只是逐个获取一遍 + Arrays.stream(ConsumableGroup.values()).sequential().forEach(this::getLLDStartPos); + Arrays.stream(ConsumableGroup.values()).sequential().forEach(this::getSamplePosEnd); + } + + public void setParam(HbotLargeBottleBSPos param, Object val) { + setParam(param.name(), val); + } + + public void setPos0(Pos2d pos) { + setParam(HbotLargeBottleBSPos.LargeBuffer_0Pos, pos); + } + + public void setDxAndDy(double dx, double dy) { + setParam(HbotLargeBottleBSPos.LargeBuffer_DX, dx); + setParam(HbotLargeBottleBSPos.LargeBuffer_DY, dy); + } + + public Pos3d getLLDStartPos(ConsumableGroup group) { + Pos2d pos00 = getParam(HbotLargeBottleBSPos.LargeBuffer_0Pos, Pos2d.class); + Double dx = getParam(HbotLargeBottleBSPos.LargeBuffer_DX, Double.class); + Double dy = getParam(HbotLargeBottleBSPos.LargeBuffer_DY, Double.class); + + int xoff = group.off % 3; + int yoff = group.off / 3; + + double x = pos00.x + xoff * dx; + double y = pos00.y + yoff * dy; + double z = getParam(HbotLargeBottleBSPos.LargeBottleBufferLLDStartZAxisPos, Double.class); + return new Pos3d((int) x, (int) y, (int) z); + } + + public Integer getSampleEndZPos(ConsumableGroup group) { + return getParam(HbotLargeBottleBSPos.LargeBottleBufferBottomZAxisPos, Double.class).intValue(); + } + + public Integer getLLDStartZPos(ConsumableGroup group) { + return getParam(HbotLargeBottleBSPos.LargeBottleBufferLLDStartZAxisPos, Double.class).intValue(); + } + + public Pos3d getSamplePosEnd(ConsumableGroup group) { + Pos3d var = getLLDStartPos(group); + var.z = getParam(HbotLargeBottleBSPos.LargeBottleBufferBottomZAxisPos, Double.class).intValue(); + return var; + } + public Double getLargeBufferScanPosDx() { + return getParam(HbotLargeBottleBSPos.LargeBufferScanPos_DX, Double.class); + } + + public Double getLargeBufferScanPosDy() { + return getParam(HbotLargeBottleBSPos.LargeBufferScanPos_DY, Double.class); + } +} diff --git a/src/main/java/a8k/app/service/param/hbotpos/HbotLittleBSPosMgr.java b/src/main/java/a8k/app/service/param/hbotpos/HbotLittleBSPosMgr.java new file mode 100644 index 0000000..2581d54 --- /dev/null +++ b/src/main/java/a8k/app/service/param/hbotpos/HbotLittleBSPosMgr.java @@ -0,0 +1,129 @@ +package a8k.app.service.param.hbotpos; + +import a8k.app.a8ktype.device.ConsumableGroup; +import a8k.app.service.param.base.ParamMgr; +import a8k.app.a8ktype.param.hbotpos.HbotLittleBSPos; +import a8k.app.a8ktype.device.Pos2d; +import a8k.app.a8ktype.device.Pos3d; +import jakarta.annotation.PostConstruct; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +/** + * HBOT二维码扫描坐标参数 + */ +@Component +public class HbotLittleBSPosMgr extends ParamMgr { + static final Logger logger = LoggerFactory.getLogger(HbotLittleBSPosMgr.class); + + + @PostConstruct + void initialize() { + for (HbotLittleBSPos param : HbotLittleBSPos.values()) { + initParam(param, param.chName, param.type); + } + + //校验参数类型 + for (var group : ConsumableGroup.values()) { + for (int i = 0; i < 25; i++) { + getLittleBSPos(group, i); + getLittleBSPiercePos(group, i); + getLittleBSSamplePos(group, i); + } + } + } + + public void setParam(HbotLittleBSPos param, Object val) { + setParam(param.name(), val); + } + + + public Pos3d getLittleBSPos(ConsumableGroup group, Integer off) { + + Pos2d pos00 = getParam(HbotLittleBSPos.LittleBufferGroup0_000Pos, Pos2d.class); + Double gdx = getParam(HbotLittleBSPos.GroupDX, Double.class); + Double gdy = getParam(HbotLittleBSPos.GroupDY, Double.class); + Double dx = getParam(HbotLittleBSPos.LittleBufferDX, Double.class); + Double dy = getParam(HbotLittleBSPos.LittleBufferDY, Double.class); + + Integer xoff = off % 5; + Integer yoff = off / 5; + + Integer gxoff = group.off % 3; + Integer gyoff = group.off / 3; + + + double x = pos00.x + xoff * dx + gxoff * gdx; + double y = pos00.y + yoff * dy + gyoff * gdy; + + return new Pos3d((int) x, (int) y, 0); + + } + + public Pos3d getLittleBSPiercePos(ConsumableGroup group, Integer off) { + Pos3d pos = getLittleBSPos(group, off); + Double appDistance = getParam(HbotLittleBSPos.LittleBSPierceXYAppendDistance, Double.class); + pos.x += appDistance.intValue(); + pos.y += appDistance.intValue(); + pos.z = getParam(HbotLittleBSPos.LittleBSPierceZPos, Integer.class); + return pos; + } + + public Pos3d getLittleBSSamplePos(ConsumableGroup group, Integer off) { + Pos3d pos = getLittleBSPos(group, off); + pos.z = getParam(HbotLittleBSPos.LittleBSSampleZPos, Integer.class); + return pos; + } + + + Pos3d getProbeSubstanceXYPos(ConsumableGroup group, Integer off) { + + Pos2d pos00 = getParam(HbotLittleBSPos.ProbeSubstanceGroup0_000Pos, Pos2d.class); + Double gdx = getParam(HbotLittleBSPos.GroupDX, Double.class); + Double gdy = getParam(HbotLittleBSPos.GroupDY, Double.class); + Double dx = getParam(HbotLittleBSPos.ProbeSubstanceDX, Double.class); + Double dy = getParam(HbotLittleBSPos.ProbeSubstanceDY, Double.class); + + Integer xoff = off % 5; + Integer yoff = off / 5; + + Integer gxoff = group.off % 3; + Integer gyoff = group.off / 3; + + + double x = pos00.x + xoff * dx + gxoff * gdx; + double y = pos00.y + yoff * dy + gyoff * gdy; + + return new Pos3d((int) x, (int) y, 0); + + } + + public Double getGroupDX() { + return getParam(HbotLittleBSPos.GroupDX, Double.class); + } + + public Double getGroupDY() { + return getParam(HbotLittleBSPos.GroupDY, Double.class); + } + + // public Pos3d getSamplePos(ConsumableGroup group, Integer off) { + // Pos3d pos = getXYPos(group, off); + // pos.z = getParam(HbotProbeSubstancePos.ProbeSubstanceSampleZPos, Double.class).intValue(); + // return pos; + // } + + public Pos3d getProbeSubstanceSamplePos(ConsumableGroup group, Integer off) { + Pos3d pos = getProbeSubstanceXYPos(group, off); + pos.z = getParam(HbotLittleBSPos.ProbeSubstanceSampleZPos, Integer.class); + return pos; + } + + public Pos3d getProbeSubstancePiercePos(ConsumableGroup group, Integer off) { + Pos3d pos = getProbeSubstanceXYPos(group, off); + pos.z = getParam(HbotLittleBSPos.ProbeSubstancePierceZPos, Integer.class); + pos.x += getParam(HbotLittleBSPos.ProbeSubstancePierceXYAppendDistance, Double.class).intValue(); + pos.y += getParam(HbotLittleBSPos.ProbeSubstancePierceXYAppendDistance, Double.class).intValue(); + return pos; + } +} diff --git a/src/main/java/a8k/app/service/param/hbotpos/HbotProbeSubstancePosMgr.java b/src/main/java/a8k/app/service/param/hbotpos/HbotProbeSubstancePosMgr.java new file mode 100644 index 0000000..c8d4485 --- /dev/null +++ b/src/main/java/a8k/app/service/param/hbotpos/HbotProbeSubstancePosMgr.java @@ -0,0 +1,27 @@ +package a8k.app.service.param.hbotpos; + +import a8k.app.service.param.base.ParamMgr; + +import a8k.app.a8ktype.device.ConsumableGroup; +import a8k.app.a8ktype.device.Pos3d; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; + +/** + * HBOT二维码扫描坐标参数 + */ +@Component +public class HbotProbeSubstancePosMgr extends ParamMgr { + + @Resource + HbotLittleBSPosMgr hbotLittleBSPosMgr; + + public Pos3d getSamplePos(ConsumableGroup group, Integer off) { + return hbotLittleBSPosMgr.getProbeSubstanceSamplePos(group, off); + } + + public Pos3d getPiercePos(ConsumableGroup group, Integer off) { + return hbotLittleBSPosMgr.getProbeSubstancePiercePos(group, off); + } + +} diff --git a/src/main/java/a8k/app/service/param/hbotpos/HbotSamplePosParamMgr.java b/src/main/java/a8k/app/service/param/hbotpos/HbotSamplePosParamMgr.java new file mode 100644 index 0000000..7fc5be1 --- /dev/null +++ b/src/main/java/a8k/app/service/param/hbotpos/HbotSamplePosParamMgr.java @@ -0,0 +1,68 @@ +package a8k.app.service.param.hbotpos; + +import a8k.app.service.param.base.ParamMgr; +import a8k.app.a8ktype.param.type.A8kSamplePos; +import a8k.app.a8ktype.param.hbotpos.HbotSamplePos; +import a8k.app.a8ktype.device.Pos3d; +import jakarta.annotation.PostConstruct; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +/** + * + */ +@Component +public class HbotSamplePosParamMgr extends ParamMgr { + static final Logger logger = LoggerFactory.getLogger(HbotSamplePosParamMgr.class); + + + @PostConstruct + void initialize() { + for (HbotSamplePos pos : HbotSamplePos.values()) { + initParam(pos, pos.chName,pos.type); + } + + //校验参数类型 + for (A8kSamplePos samplePos : A8kSamplePos.values()) { + getSampleStartPos(samplePos); + getSampleEndPos(samplePos); + } + } + + public Pos3d getSamplePos(HbotSamplePos pos) { + return getParam(pos, Pos3d.class); + } + + public void setSamplePos(HbotSamplePos pos, Pos3d pos3d) { + setParam(pos, pos3d); + } + + + public Pos3d getSampleStartPos(A8kSamplePos samplePos) { + return switch (samplePos) { + case EmergencyTubePos -> getSamplePos(HbotSamplePos.EmergencyTubeSamplePos); + case BloodHTubePos -> getSamplePos(HbotSamplePos.BloodHTubeSamplePos); + case BloodSTubePos -> getSamplePos(HbotSamplePos.BloodSTubeSamplePos); + case MiniTubePos -> getSamplePos(HbotSamplePos.MiniTubeSamplePos); + case MiniBloodPos -> getSamplePos(HbotSamplePos.MiniBloodSamplePos); + case Bulltube1P5Pos -> getSamplePos(HbotSamplePos.Bulltube1P5SamplePos); + case Bulltube0P5Pos -> getSamplePos(HbotSamplePos.Bulltube0P5SamplePos); + case StoolTestTubePos -> getSamplePos(HbotSamplePos.StoolTestTubeSamplePos); + }; + } + + public Pos3d getSampleEndPos(A8kSamplePos samplePos) { + return switch (samplePos) { + case EmergencyTubePos -> getSamplePos(HbotSamplePos.EmergencyTubeSampleEndPos); + case BloodHTubePos -> getSamplePos(HbotSamplePos.BloodHTubeSampleEndPos); + case BloodSTubePos -> getSamplePos(HbotSamplePos.BloodSTubeSampleEndPos); + case MiniTubePos -> getSamplePos(HbotSamplePos.MinitubeSampleEndPos); + case MiniBloodPos -> getSamplePos(HbotSamplePos.MiniBloodSampleEndPos); + case Bulltube1P5Pos -> getSamplePos(HbotSamplePos.Bulltube1P5SampleEndPos); + case Bulltube0P5Pos -> getSamplePos(HbotSamplePos.Bulltube0P5SampleEndPos); + case StoolTestTubePos -> getSamplePos(HbotSamplePos.StoolTestTubeSampleEndPos); + }; + } +} + diff --git a/src/main/java/a8k/app/service/param/hbotpos/HbotTipPosMgr.java b/src/main/java/a8k/app/service/param/hbotpos/HbotTipPosMgr.java new file mode 100644 index 0000000..67203e0 --- /dev/null +++ b/src/main/java/a8k/app/service/param/hbotpos/HbotTipPosMgr.java @@ -0,0 +1,132 @@ +package a8k.app.service.param.hbotpos; + +import a8k.app.constant.AppConstant; +import a8k.app.service.param.base.ParamMgr; +import a8k.app.a8ktype.param.hbotpos.HbotTipPosParam; +import a8k.app.a8ktype.type.TipPosConfig; +import a8k.app.a8ktype.device.Pos3d; +import a8k.app.a8ktype.device.TipGroup; +import jakarta.annotation.PostConstruct; +import org.springframework.stereotype.Component; +import org.springframework.util.Assert; + +/** + * HBOT二维码扫描坐标参数 + */ +@Component +public class HbotTipPosMgr extends ParamMgr { + + @PostConstruct + void initialize() { + for (HbotTipPosParam param : HbotTipPosParam.values()) { + initParam(param, param.chName, param.type); + } + + //校验参数类型 + for (TipGroup tipGroup : TipGroup.values()) { + getTipPosCfg(tipGroup); + for (int i = 0; i < AppConstant.TIP_NUM; i++) { + getTipPos(tipGroup, i); + } + } + + } + + public void setParam(HbotTipPosParam param, Object val) { + setParam(param.name(), val); + } + + public void setTipGroupParam(TipGroup tipGroup, Pos3d tip000, Double dx, Double dy) { + HbotTipPosParam tip000Pos = null; + HbotTipPosParam tipDxPos = null; + HbotTipPosParam tipDyPos = null; + if (tip000 == null) + tip000 = new Pos3d(0, 0, 0); + if (dx == null) + dx = 0.0; + if (dy == null) + dy = 0.0; + + if (tipGroup == TipGroup.TipG1) { + tip000Pos = HbotTipPosParam.TipGroup0_000Pos; + tipDxPos = HbotTipPosParam.TipGroup0_SpaceingX; + tipDyPos = HbotTipPosParam.TipGroup0_SpaceingY; + } else if (tipGroup == TipGroup.TipG2) { + tip000Pos = HbotTipPosParam.TipGroup1_000Pos; + tipDxPos = HbotTipPosParam.TipGroup1_SpaceingX; + tipDyPos = HbotTipPosParam.TipGroup1_SpaceingY; + } else if (tipGroup == TipGroup.TipG3) { + tip000Pos = HbotTipPosParam.TipGroup2_000Pos; + tipDxPos = HbotTipPosParam.TipGroup2_SpaceingX; + tipDyPos = HbotTipPosParam.TipGroup2_SpaceingY; + } + + Assert.isTrue(tip000Pos != null, "tip000Pos != null"); + + setParam(tip000Pos, tip000); + setParam(tipDxPos, dx); + setParam(tipDyPos, dy); + } + + public void setTipPosCfg(TipGroup tipGroup, TipPosConfig cfg) { + setTipGroupParam(tipGroup, cfg.tip000, cfg.spaceingX, cfg.spaceingY); + } + + public TipPosConfig getTipPosCfg(TipGroup tipGroup) { + Pos3d tip000 = null; + Double dx = 0.0; + Double dy = 0.0; + + if (tipGroup == TipGroup.TipG1) { + tip000 = getParam(HbotTipPosParam.TipGroup0_000Pos, Pos3d.class); + dx = getParam(HbotTipPosParam.TipGroup0_SpaceingX, Double.class); + dy = getParam(HbotTipPosParam.TipGroup0_SpaceingY, Double.class); + + } else if (tipGroup == TipGroup.TipG2) { + tip000 = getParam(HbotTipPosParam.TipGroup1_000Pos, Pos3d.class); + dx = getParam(HbotTipPosParam.TipGroup1_SpaceingX, Double.class); + dy = getParam(HbotTipPosParam.TipGroup1_SpaceingY, Double.class); + } else if (tipGroup == TipGroup.TipG3) { + tip000 = getParam(HbotTipPosParam.TipGroup2_000Pos, Pos3d.class); + dx = getParam(HbotTipPosParam.TipGroup2_SpaceingX, Double.class); + dy = getParam(HbotTipPosParam.TipGroup2_SpaceingY, Double.class); + } + + TipPosConfig cfg = new TipPosConfig(); + if (tip000 == null) { + tip000 = new Pos3d(0, 0, 0); + } + cfg.tip000 = tip000; + cfg.spaceingX = dx; + cfg.spaceingY = dy; + cfg.tipGroup = tipGroup; + return cfg; + } + + + public Pos3d getTipPos(TipGroup tipGroup, Integer tipoff) { + TipPosConfig cfg = getTipPosCfg(tipGroup); + + Assert.isTrue(cfg.tip000 != null, "tip000 != null"); + Assert.isTrue(cfg.spaceingX != null, "dx != null"); + Assert.isTrue(cfg.spaceingY != null, "dy != null"); + + int xoff = tipoff % 12; + int yoff = tipoff / 12; + + double x = cfg.tip000.x + xoff * cfg.spaceingX; + double y = cfg.tip000.y + yoff * cfg.spaceingY; + double z = cfg.tip000.z; + + return new Pos3d((int) x, (int) y, (int) z); + } + + + public void setDropTipPos(Pos3d pos) { + setParam(HbotTipPosParam.DropTipPos, pos); + } + + public Pos3d getDropTipPos() { + return getParam(HbotTipPosParam.DropTipPos, Pos3d.class); + } +} diff --git a/src/main/java/a8k/app/service/param/optparam/OptModuleExtParamsMgr.java b/src/main/java/a8k/app/service/param/optparam/OptModuleExtParamsMgr.java new file mode 100644 index 0000000..37752a7 --- /dev/null +++ b/src/main/java/a8k/app/service/param/optparam/OptModuleExtParamsMgr.java @@ -0,0 +1,68 @@ +package a8k.app.service.param.optparam; + + +import a8k.app.service.param.base.ParamMgr; +import a8k.app.a8ktype.param.optpos.OptModuleExtParam; +import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType; +import jakarta.annotation.PostConstruct; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.util.Assert; + +import java.util.Arrays; + +/** + * HBOT二维码扫描坐标参数 + */ +@Component +public class OptModuleExtParamsMgr extends ParamMgr { + static final Logger logger = LoggerFactory.getLogger(OptModuleExtParamsMgr.class); + + + @PostConstruct + void initialize() { + for (OptModuleExtParam pos : OptModuleExtParam.values()) { + initParam(pos, pos.chName, pos.type); + } + + //校验参数类型 + Arrays.stream(A8kOptType.values()).sequential().forEach(this::getOptScanStartPos); + Arrays.stream(A8kOptType.values()).sequential().forEach(this::getScanGain); + Arrays.stream(A8kOptType.values()).sequential().forEach(this::getOptLasterRawGain); + + } + + public void setOptParam(OptModuleExtParam pos, Object value) { + setParam(pos, value); + } + + public Integer getOptScanStartPos(A8kOptType type) { + Integer shift = switch (type) { + case TOPT -> getParam(OptModuleExtParam.TOptScanShift, Integer.class); + case FOPT -> getParam(OptModuleExtParam.FOptScanShift, Integer.class); + }; + + Assert.notNull(shift, "扫描偏移量不能为空"); + Assert.isTrue(shift > 0, "扫描偏移量必须大于0"); + + // Integer scanStartPos = getParam(OptModuleExtParam.OptScanRefPos, Integer.class); + return shift; + } + + public Double getScanGain(A8kOptType type) { + return switch (type) { + case TOPT -> getParam(OptModuleExtParam.TOptScanGainVal, Double.class); + case FOPT -> getParam(OptModuleExtParam.FOptScanGainVal, Double.class); + }; + } + + public Integer getOptLasterRawGain(A8kOptType type) { + return switch (type) { + case TOPT -> getParam(OptModuleExtParam.TOptEmissionIntensity, Integer.class); + case FOPT -> getParam(OptModuleExtParam.FOptEmissionIntensity, Integer.class); + }; + } + +} + diff --git a/src/main/java/a8k/app/service/param/optparam/OptModuleParamsMgr.java b/src/main/java/a8k/app/service/param/optparam/OptModuleParamsMgr.java new file mode 100644 index 0000000..1adf270 --- /dev/null +++ b/src/main/java/a8k/app/service/param/optparam/OptModuleParamsMgr.java @@ -0,0 +1,50 @@ +package a8k.app.service.param.optparam; + + +import a8k.app.service.param.base.ParamMgr; +import a8k.app.a8ktype.param.optpos.OptModuleParam; +import jakarta.annotation.PostConstruct; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +/** + * HBOT二维码扫描坐标参数 + */ +@Component +public class OptModuleParamsMgr extends ParamMgr { + static final Logger logger = LoggerFactory.getLogger(OptModuleParamsMgr.class); + + + @PostConstruct + void initialize() { + for (OptModuleParam pos : OptModuleParam.values()) { + initParam(pos, pos.chName, pos.type); + } + + //校验参数类型 + getPullerTargetPos(); + getOptScanerDropPos(); + getOptScanerScandbyPos(); + } + + + public void setOptParam(OptModuleParam pos, Object value) { + setParam(pos, value); + } + + + public Integer getPullerTargetPos() { + return getParam(OptModuleParam.PullerTargetPos, Integer.class); + } + + public Integer getOptScanerDropPos() { + return getParam(OptModuleParam.OptScanerDropPos, Integer.class); + } + + public Integer getOptScanerScandbyPos() { + return getParam(OptModuleParam.OptScanerScandbyPos, Integer.class); + } + +} + diff --git a/src/main/java/a8k/app/service/param/pipetteparam/PipetteGunExParamMgr.java b/src/main/java/a8k/app/service/param/pipetteparam/PipetteGunExParamMgr.java new file mode 100644 index 0000000..37f3d45 --- /dev/null +++ b/src/main/java/a8k/app/service/param/pipetteparam/PipetteGunExParamMgr.java @@ -0,0 +1,51 @@ +package a8k.app.service.param.pipetteparam; + +import a8k.app.service.param.base.ParamMgr; +import jakarta.annotation.PostConstruct; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class PipetteGunExParamMgr extends ParamMgr { + enum PipetteGunParam { + VOLUME_CALIBRATION_COEFFICIENT_A("体积校准系数-A", Double.class), + VOLUME_CALIBRATION_COEFFICIENT_B("体积校准系数-B", Double.class), + ; + + public final String chName; + public final Class type; + + PipetteGunParam(String chName, Class type) { + this.chName = chName; + this.type = type; + } + } + + + @PostConstruct + void initialize() { + for (PipetteGunParam param : PipetteGunParam.values()) { + initParam(param, param.chName, param.type); + } + } + + public void setVolumeCalibrationCoefficient(Double A, Double B) { + setParam(PipetteGunParam.VOLUME_CALIBRATION_COEFFICIENT_A, A); + setParam(PipetteGunParam.VOLUME_CALIBRATION_COEFFICIENT_B, B); + } + + public double calibrateVolume(double rawVolume) { + Double A = getParam(PipetteGunParam.VOLUME_CALIBRATION_COEFFICIENT_A, Double.class); + Double B = getParam(PipetteGunParam.VOLUME_CALIBRATION_COEFFICIENT_B, Double.class); + return A * rawVolume + B; + } + + public double getCoefficientA() { + return getParam(PipetteGunParam.VOLUME_CALIBRATION_COEFFICIENT_A, Double.class); + } + + public double getCoefficientB() { + return getParam(PipetteGunParam.VOLUME_CALIBRATION_COEFFICIENT_B, Double.class); + } +} diff --git a/src/main/java/a8k/app/service/param/pipetteparam/PipetteGunLLDParamMgr.java b/src/main/java/a8k/app/service/param/pipetteparam/PipetteGunLLDParamMgr.java new file mode 100644 index 0000000..9928795 --- /dev/null +++ b/src/main/java/a8k/app/service/param/pipetteparam/PipetteGunLLDParamMgr.java @@ -0,0 +1,41 @@ +package a8k.app.service.param.pipetteparam; + +import a8k.app.hardware.type.LldType; +import a8k.app.service.param.base.ParamMgr; +import a8k.app.a8ktype.param.pipette.PipetteGunLLDThresholdParam; +import a8k.app.a8ktype.param.pipette.PipetteGunLLDTypeParam; +import jakarta.annotation.PostConstruct; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Arrays; + +/** + * HBOT二维码扫描坐标参数 + */ +@Component +@Slf4j +public class PipetteGunLLDParamMgr extends ParamMgr { + + @PostConstruct + void initialize() { + for (PipetteGunLLDThresholdParam param : PipetteGunLLDThresholdParam.values()) { + initParam(param, param.chName, param.type); + } + for (PipetteGunLLDTypeParam param : PipetteGunLLDTypeParam.values()) { + initParam(param, param.chName, param.type); + } + + // // 校验参数类型 + Arrays.stream(PipetteGunLLDTypeParam.values()).sequential().forEach(this::getLLDType); + Arrays.stream(PipetteGunLLDThresholdParam.values()).sequential().forEach(this::getLLDThresholdParam); + } + + public Integer getLLDThresholdParam(PipetteGunLLDThresholdParam param) { + return getParam(param, Integer.class); + } + + public LldType getLLDType(PipetteGunLLDTypeParam param) { + return getParam(param, LldType.class); + } +} diff --git a/src/main/java/a8k/app/service/param/pipetteparam/PipetteGunLLFParamMgr.java b/src/main/java/a8k/app/service/param/pipetteparam/PipetteGunLLFParamMgr.java new file mode 100644 index 0000000..22ee497 --- /dev/null +++ b/src/main/java/a8k/app/service/param/pipetteparam/PipetteGunLLFParamMgr.java @@ -0,0 +1,57 @@ +package a8k.app.service.param.pipetteparam; + +import a8k.app.service.param.base.ParamMgr; +import a8k.app.a8ktype.param.type.A8kSamplePos; +import a8k.app.a8ktype.param.pipette.PipetteGunLLFParam; +import jakarta.annotation.PostConstruct; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import java.util.Arrays; + +/** + * HBOT二维码扫描坐标参数 + */ +@Component +@Slf4j +public class PipetteGunLLFParamMgr extends ParamMgr { + static final Logger logger = LoggerFactory.getLogger(PipetteGunLLFParamMgr.class); + + + @PostConstruct + void initialize() { + for (PipetteGunLLFParam param : PipetteGunLLFParam.values()) { + initParam(param, param.chName, param.type); + } + + // 校验参数类型 + Arrays.stream(PipetteGunLLFParam.values()).sequential().forEach(this::getLlfVel); + Arrays.stream(A8kSamplePos.values()).sequential().forEach(this::getSampleLLFVel); + getLargeBSBottleLlfVel(); + + } + + public Integer getLlfVel(PipetteGunLLFParam param) { + return getParam(param, Integer.class); + } + + + public Integer getSampleLLFVel(A8kSamplePos pos) { + return switch (pos) { + case EmergencyTubePos -> getLlfVel(PipetteGunLLFParam.EMERGENCY_TUBE_LLF_VEL); + case BloodHTubePos, BloodSTubePos -> getLlfVel(PipetteGunLLFParam.BLOOD_TUBE_LLF_VEL); + case MiniTubePos -> getLlfVel(PipetteGunLLFParam.MINI_TUBE_LLF_VEL); + case MiniBloodPos -> getLlfVel(PipetteGunLLFParam.MINI_BLOOD_LLF_VEL); + case Bulltube1P5Pos -> getLlfVel(PipetteGunLLFParam.BULLET_TUBE_1P5_LLF_VEL); + case Bulltube0P5Pos -> getLlfVel(PipetteGunLLFParam.BULLET_TUBE_0P5_LLF_VEL); + case StoolTestTubePos -> getLlfVel(PipetteGunLLFParam.STOOL_TEST_TUBE_LLF_VEL); + }; + } + + public Integer getLargeBSBottleLlfVel() { + return getLlfVel(PipetteGunLLFParam.LARGE_BS_BOTTLE_LLF_VEL); + } + +} diff --git a/src/main/java/a8k/app/service/param/pos/PlatesBoxPosParamMgr.java b/src/main/java/a8k/app/service/param/pos/PlatesBoxPosParamMgr.java new file mode 100644 index 0000000..94e4577 --- /dev/null +++ b/src/main/java/a8k/app/service/param/pos/PlatesBoxPosParamMgr.java @@ -0,0 +1,79 @@ +package a8k.app.service.param.pos; + + +import a8k.app.service.param.base.ParamMgr; +import jakarta.annotation.PostConstruct; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + + +@Component +public class PlatesBoxPosParamMgr extends ParamMgr { + static final Logger logger = LoggerFactory.getLogger(PlatesBoxPosParamMgr.class); + + enum POS { + Ch0YPos("通道0Y轴位置", Integer.class), + ChDPos("通道间距", Double.class), + // Ch5YPos("通道5Y轴位置", Integer.class), + + PushEndXPos("推杆到位坐标", Integer.class), + ; + public final String chName; + public final Class type; + + POS(String chName, Class type) { + this.chName = chName; + this.type = type; + } + } + + + @PostConstruct + void initialize() { + for (POS pos : POS.values()) { + initParam(pos, pos.chName, pos.type); + } + //校验参数类型 + getCh0YPos(); + getPushEndXPos(); + getYSpacing(); + } + + // + // public void paramReset() { + // logger.info("init param"); + // setParam(POS.Ch0YPos, -17); + // setParam(POS.Ch5YPos, 1308); + // setParam(POS.PushEndXPos, 1160); + // } + + public Integer getCh0YPos() { + return getParam(POS.Ch0YPos, Integer.class); + } + + public Double getYSpacing() { + return getParam(POS.ChDPos, Double.class); + } + + public Integer getChXPos(int ch) { + return (int) (getCh0YPos() + ch * getYSpacing()); + } + + public Integer getPushEndXPos() { + return getParam(POS.PushEndXPos, Integer.class); + } + + public void setCh0YPos(Integer pos) { + setParam(POS.Ch0YPos, pos); + } + + public void setYSpacing(Double pos) { + setParam(POS.ChDPos, pos); + } + + public void setPushEndXPos(Integer pos) { + setParam(POS.PushEndXPos, pos); + } +} + diff --git a/src/main/java/a8k/app/service/param/pos/TemperatureCtrlParamMgr.java b/src/main/java/a8k/app/service/param/pos/TemperatureCtrlParamMgr.java new file mode 100644 index 0000000..b03e41b --- /dev/null +++ b/src/main/java/a8k/app/service/param/pos/TemperatureCtrlParamMgr.java @@ -0,0 +1,42 @@ +package a8k.app.service.param.pos; + +import a8k.app.service.param.base.ParamMgr; +import a8k.app.a8ktype.param.TemperatureCtrlParam; +import jakarta.annotation.PostConstruct; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import java.util.Arrays; + +/** + * HBOT二维码扫描坐标参数 + */ +@Component +public class TemperatureCtrlParamMgr extends ParamMgr { + static final Logger logger = LoggerFactory.getLogger(TemperatureCtrlParamMgr.class); + + @PostConstruct + void initialize() { + for (TemperatureCtrlParam pos : TemperatureCtrlParam.values()) { + initParam(pos, pos.chName, pos.type); + } + Arrays.stream(TemperatureCtrlParam.values()).sequential().forEach(this::getParam); + + } + + void setParam(TemperatureCtrlParam pos, Double value) { + super.setParam(pos, value); + } + + public Double getParam(TemperatureCtrlParam pos) { + Double obj = super.getParam(pos, Double.class); + if (obj == null) { + return switch (pos) { + case IncubatorTCMTempOffset, PlatesBoxTCMTempOffset -> 0.0; + }; + } + return obj; + } +} + diff --git a/src/main/java/a8k/app/service/param/pos/TubeFeedingModuleParamMgr.java b/src/main/java/a8k/app/service/param/pos/TubeFeedingModuleParamMgr.java new file mode 100644 index 0000000..b1b47bf --- /dev/null +++ b/src/main/java/a8k/app/service/param/pos/TubeFeedingModuleParamMgr.java @@ -0,0 +1,114 @@ +package a8k.app.service.param.pos; + +import a8k.app.service.param.base.ParamMgr; +import a8k.app.a8ktype.param.tubefeeding.TubeFeedingModuleSetting; +import a8k.app.a8ktype.param.tubefeeding.TubeFeedingModulePos; +import jakarta.annotation.PostConstruct; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + + +@Component +public class TubeFeedingModuleParamMgr extends ParamMgr { + static final Logger logger = LoggerFactory.getLogger(TubeFeedingModuleParamMgr.class); + + @PostConstruct + void initialize() { + for (TubeFeedingModulePos pos : TubeFeedingModulePos.values()) { + initParam(pos, pos.chName, pos.type); + } + for (TubeFeedingModuleSetting param : TubeFeedingModuleSetting.values()) { + initParam(param, param.chName, param.type); + } + + // 校验参数类型 + for (int i = 0; i < 10; i++) { + getTubePreProcessPos(i); + getTubeScanPos(i); + getTubeAltitJudgPos(i); + getTubeExistJudgPos(i); + } + getTubeHolderEnterXPos(); + getTubeHolderExitXPos(); + getTubeHolderScanXPos(); + getTubeScanServoTorque(); + } + + /** + * 获取管子预处理位置 + * @param tubeIndex 管子序号 + * @return 坐标 + */ + public Integer getTubePreProcessPos(Integer tubeIndex) { + Integer startPos = getParam(TubeFeedingModulePos.Tube0PreProcessPos, Integer.class); + Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int) (startPos + spacing * tubeIndex); + } + + /** + * 获取试管扫描位置 + * @param tubeIndex 管子序号 + * @return 坐标 + */ + public Integer getTubeScanPos(Integer tubeIndex) { + Integer startPos = getParam(TubeFeedingModulePos.Tube0ScanPos, Integer.class); + Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int) (startPos + spacing * tubeIndex); + } + + /** + * 获取试管高度判断位置 + * @param tubeIndex 管子序号 + * @return 坐标 + */ + public Integer getTubeAltitJudgPos(Integer tubeIndex) { + Integer startPos = getParam(TubeFeedingModulePos.Tube0AltitJudgPos, Integer.class); + Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int) (startPos + spacing * tubeIndex); + } + + /** + * 获取试管存在判断位置 + * @param tubeIndex 管子序号 + * @return 坐标 + */ + public Integer getTubeExistJudgPos(Integer tubeIndex) { + Integer startPos = getParam(TubeFeedingModulePos.Tube0ExistJudgPos, Integer.class); + Double spacing = getParam(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int) (startPos + spacing * tubeIndex); + } + + + /** + * 获取试管架进入位置 + * @return X轴坐标 + */ + public Integer getTubeHolderEnterXPos() { + return getParam(TubeFeedingModulePos.TubeHolderEnterXPos, Integer.class); + } + + /** + * 获取试管架出口位置 + * @return X轴坐标 + */ + public Integer getTubeHolderExitXPos() { + return getParam(TubeFeedingModulePos.TubeHolderExitXPos, Integer.class); + } + + /** + * 获取试管架扫描位置 + * @return X轴坐标 + */ + public Integer getTubeHolderScanXPos() { + return getParam(TubeFeedingModulePos.TubeHolderScanXPos, Integer.class); + } + + /** + * 获取试管架扫描位置 + * @return X轴坐标 + */ + public Integer getTubeScanServoTorque() { + return getParam(TubeFeedingModuleSetting.TubeScanServoTorque, Integer.class); + } +} diff --git a/src/main/java/a8k/app/service/param/pos/TubePreProcesPosParamMgr.java b/src/main/java/a8k/app/service/param/pos/TubePreProcesPosParamMgr.java new file mode 100644 index 0000000..0623cfb --- /dev/null +++ b/src/main/java/a8k/app/service/param/pos/TubePreProcesPosParamMgr.java @@ -0,0 +1,79 @@ +package a8k.app.service.param.pos; + +import a8k.app.service.param.base.ParamMgr; +import a8k.app.a8ktype.param.tubepreprocess.TubePreProcessGripperPos; +import a8k.app.a8ktype.param.tubepreprocess.TubePreProcessTubeClamp; +import a8k.app.a8ktype.param.tubepreprocess.TubePreProcessYPos; +import a8k.app.a8ktype.param.tubepreprocess.TubePreProcessZAxisPos; +import jakarta.annotation.PostConstruct; +import org.springframework.stereotype.Component; + +@Component +public class TubePreProcesPosParamMgr extends ParamMgr { + + @PostConstruct + void initialize() { + for (var pos : TubePreProcessGripperPos.values()) { + initParam(pos, pos.chName, pos.type); + } + for (var pos : TubePreProcessTubeClamp.values()) { + initParam(pos, pos.chName, pos.type); + } + for (var pos : TubePreProcessYPos.values()) { + initParam(pos, pos.chName, pos.type); + } + for (var pos : TubePreProcessZAxisPos.values()) { + initParam(pos, pos.chName, pos.type); + } + //校验参数类型 + getGripperServoOpenPos(); + getGripperServoTakeCapPos(); + getYServoTakeTubePos(); + getYServoShakePos(); + getZMotorTakeTubePos(false); + getZMotorTakeTubePos(true); + getZMotorShakeTubePos(); + getZMotorPutCapPos(); + getShakeClampMotorClampPos(); + getShakeClampMotorReleasePos(); + + } + + public void setPos(TubePreProcessGripperPos pos, Integer value) {setParam(pos, value);} + + public void setPos(TubePreProcessTubeClamp pos, Integer value) {setParam(pos, value);} + + public void setPos(TubePreProcessYPos pos, Integer value) {setParam(pos, value);} + + public void setPos(TubePreProcessZAxisPos pos, Integer value) {setParam(pos, value);} + + private Integer getParamInteger(Enum pos) {return getParam(pos, Integer.class);} + + + + public Integer getGripperServoOpenPos() {return getParamInteger(TubePreProcessGripperPos.GripperServoOpenPos);} + + public Integer getGripperServoTakeCapPos() {return getParamInteger(TubePreProcessGripperPos.GripperServoTakeCapPos);} + + public Integer getYServoTakeTubePos() {return getParamInteger(TubePreProcessYPos.YServoTakeTubePos);} + + public Integer getYServoShakePos() {return getParamInteger(TubePreProcessYPos.YServoShakePos);} + + public Integer getZMotorTakeTubePos(Boolean hightTuhe) { + if (hightTuhe) { + return getParamInteger(TubePreProcessZAxisPos.ZMotorTakeHTubePos); + } else { + return getParamInteger(TubePreProcessZAxisPos.ZMotorTakeSTubePos); + } + } + + public Integer getZMotorShakeTubePos() {return getParamInteger(TubePreProcessZAxisPos.ZMotorShakeTubePos);} + + public Integer getZMotorPutCapPos() {return getParamInteger(TubePreProcessZAxisPos.ZMotorShakeTubePos) + getParamInteger(TubePreProcessGripperPos.GripperRedundancyHeight);} + + public Integer getShakeClampMotorClampPos() {return getParamInteger(TubePreProcessTubeClamp.ShakeClampMotorClampPos);} + + public Integer getShakeClampMotorReleasePos() {return getParamInteger(TubePreProcessTubeClamp.ShakeClampMotorReleasePos);} + + +} diff --git a/src/main/java/a8k/app/service/param/pos/TurntablePosParamMgr.java b/src/main/java/a8k/app/service/param/pos/TurntablePosParamMgr.java new file mode 100644 index 0000000..57602ef --- /dev/null +++ b/src/main/java/a8k/app/service/param/pos/TurntablePosParamMgr.java @@ -0,0 +1,86 @@ +package a8k.app.service.param.pos; + +import a8k.app.service.param.base.ParamMgr; +import jakarta.annotation.PostConstruct; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +/** + * HBOT二维码扫描坐标参数 + */ +@Component +public class TurntablePosParamMgr extends ParamMgr { + static final Logger logger = LoggerFactory.getLogger(TurntablePosParamMgr.class); + + /* + * 转盘相关位置 + */ + enum POS { + PushPos0("入板位置", Integer.class), + PullPos0("出板位置", Integer.class), + DropLiquidPos0("滴液位置", Integer.class), + PosSpacing("位置间隔", Integer.class), + ; + final public String chName; + final public Class type; + + POS(String chName, Class type) { + this.chName = chName; + this.type = type; + } + } + + @PostConstruct + void initialize() { + for (POS pos : POS.values()) { + initParam(pos, pos.chName, pos.type); + } + } + + public void paramReset() { + logger.info("init param"); + setParam(POS.PushPos0, 1650); + setParam(POS.PullPos0, 19700); + setParam(POS.DropLiquidPos0, 1650 + 8950); + setParam(POS.PosSpacing, 1800); + + getPushPos0(); + getPullPos0(); + getDropLiquidPos0(); + getPosSpacing(); + } + + public Integer getPushPos0() { + return getParam(POS.PushPos0, Integer.class); + } + + public Integer getPullPos0() { + return getParam(POS.PullPos0, Integer.class); + } + + public Integer getDropLiquidPos0() { + return getParam(POS.DropLiquidPos0, Integer.class); + } + + public Integer getPosSpacing() { + return getParam(POS.PosSpacing, Integer.class); + } + + public void setPushPos0(Integer pos) { + setParam(POS.PushPos0, pos); + } + + public void setPullPos0(Integer pos) { + setParam(POS.PullPos0, pos); + } + + public void setDropLiquidPos0(Integer pos) { + setParam(POS.DropLiquidPos0, pos); + } + + public void setPosSpacing(Integer pos) { + setParam(POS.PosSpacing, pos); + } +} + diff --git a/src/main/java/a8k/extui/oldpage/pos_calibration/Hbot2DCodeScanPosCalibration.java b/src/main/java/a8k/extui/oldpage/pos_calibration/Hbot2DCodeScanPosCalibration.java index 4cb0b8a..e9d9823 100644 --- a/src/main/java/a8k/extui/oldpage/pos_calibration/Hbot2DCodeScanPosCalibration.java +++ b/src/main/java/a8k/extui/oldpage/pos_calibration/Hbot2DCodeScanPosCalibration.java @@ -6,7 +6,7 @@ //import a8k.app.hardware.driver.PipetteCtrlDriver; //import a8k.app.hardware.driver.CodeScanerDriver; //import a8k.app.service.lowerctrl.ConsumablesScanCtrlService; -//import a8k.app.service.param.Hbot2DCodeScanParamMgr; +//import a8k.app.service.param.hbotpos.Hbot2DCodeScanParamMgr; //import a8k.app.a8ktype.device.ConsumableGroup; //import a8k.app.a8ktype.type.ConsumableScanRawResult; //import a8k.app.a8ktype.exception.AppException; diff --git a/src/main/java/a8k/extui/oldpage/pos_calibration/HbotLargeBottleBSPosCalibration.java b/src/main/java/a8k/extui/oldpage/pos_calibration/HbotLargeBottleBSPosCalibration.java index c68a850..d980b96 100644 --- a/src/main/java/a8k/extui/oldpage/pos_calibration/HbotLargeBottleBSPosCalibration.java +++ b/src/main/java/a8k/extui/oldpage/pos_calibration/HbotLargeBottleBSPosCalibration.java @@ -7,7 +7,7 @@ import a8k.app.a8ktype.param.hbotpos.HbotLargeBottleBSPos; import a8k.app.hardware.driver.HbotDriver; import a8k.app.hardware.driver.PipetteCtrlDriver; import a8k.app.service.lowerctrl.HbotMoveExCtrlService; -import a8k.app.service.param.HbotLargeBottleBSPosMgr; +import a8k.app.service.param.hbotpos.HbotLargeBottleBSPosMgr; import a8k.app.a8ktype.device.Pos2d; import a8k.app.a8ktype.exception.AppException; import a8k.app.utils.ZJsonHelper; diff --git a/src/main/java/a8k/extui/oldpage/pos_calibration/HbotLittleBSPosCalibration.java b/src/main/java/a8k/extui/oldpage/pos_calibration/HbotLittleBSPosCalibration.java index 8f1e224..5a57281 100644 --- a/src/main/java/a8k/extui/oldpage/pos_calibration/HbotLittleBSPosCalibration.java +++ b/src/main/java/a8k/extui/oldpage/pos_calibration/HbotLittleBSPosCalibration.java @@ -4,7 +4,7 @@ //import a8k.app.constant.AppConstant; //import a8k.extui.mgr.ExtApiPageMgr; //import a8k.app.service.lowerctrl.HbotMoveCtrlService; -//import a8k.app.service.param.HbotLittleBSPosMgr; +//import a8k.app.service.param.hbotpos.HbotLittleBSPosMgr; //import a8k.app.a8ktype.param.hbotpos.HbotLittleBSPos; //import a8k.app.hardware.driver.HbotDriver; //import a8k.app.hardware.driver.PipetteCtrlDriver; diff --git a/src/main/java/a8k/extui/oldpage/pos_calibration/HbotProbeSubstancePosCalibration.java b/src/main/java/a8k/extui/oldpage/pos_calibration/HbotProbeSubstancePosCalibration.java index 6c87b38..12f264d 100644 --- a/src/main/java/a8k/extui/oldpage/pos_calibration/HbotProbeSubstancePosCalibration.java +++ b/src/main/java/a8k/extui/oldpage/pos_calibration/HbotProbeSubstancePosCalibration.java @@ -4,7 +4,7 @@ //import a8k.app.constant.AppConstant; //import a8k.extui.mgr.ExtApiPageMgr; //import a8k.app.service.lowerctrl.HbotMoveCtrlService; -//import a8k.app.service.param.HbotProbeSubstancePosMgr; +//import a8k.app.service.param.hbotpos.HbotProbeSubstancePosMgr; //import a8k.app.service.lowerctrl.HbotMoveExCtrlService; //import a8k.app.hardware.driver.HbotDriver; //import a8k.app.hardware.driver.PipetteCtrlDriver; diff --git a/src/main/java/a8k/extui/oldpage/pos_calibration/HbotTipPosCalibration.java b/src/main/java/a8k/extui/oldpage/pos_calibration/HbotTipPosCalibration.java index 2fc0a18..4c8a51e 100644 --- a/src/main/java/a8k/extui/oldpage/pos_calibration/HbotTipPosCalibration.java +++ b/src/main/java/a8k/extui/oldpage/pos_calibration/HbotTipPosCalibration.java @@ -5,7 +5,7 @@ import a8k.app.constant.AppConstant; import a8k.extui.mgr.ExtApiPageMgr; import a8k.app.service.lowerctrl.HbotMoveCtrlService; import a8k.app.service.exparam.HbotConsumableParamMgr; -import a8k.app.service.param.HbotTipPosMgr; +import a8k.app.service.param.hbotpos.HbotTipPosMgr; import a8k.app.hardware.driver.HbotDriver; import a8k.app.hardware.driver.PipetteCtrlDriver; import a8k.app.service.lowerctrl.HbotMoveExCtrlService; diff --git a/src/main/java/a8k/extui/oldpage/pos_calibration/OptModuleParamPosCalibration.java b/src/main/java/a8k/extui/oldpage/pos_calibration/OptModuleParamPosCalibration.java index 191c11c..22f0497 100644 --- a/src/main/java/a8k/extui/oldpage/pos_calibration/OptModuleParamPosCalibration.java +++ b/src/main/java/a8k/extui/oldpage/pos_calibration/OptModuleParamPosCalibration.java @@ -6,7 +6,7 @@ //import a8k.app.hardware.driver.StepMotorCtrlDriver; //import a8k.app.hardware.driver.type.StepMotorMId; //import a8k.app.hardware.extdriver.MotorEnableExDriver; -//import a8k.app.service.param.OptModuleExtParamsMgr; +//import a8k.app.service.param.optparam.OptModuleExtParamsMgr; //import a8k.extui.mgr.ExtApiPageMgr; //import a8k.extui.type.ExtApiStatu; //import jakarta.annotation.PostConstruct; diff --git a/src/main/java/a8k/extui/oldpage/pos_calibration/TubeFeedingModulePosCalibration.java b/src/main/java/a8k/extui/oldpage/pos_calibration/TubeFeedingModulePosCalibration.java index bdf4f61..649b8b9 100644 --- a/src/main/java/a8k/extui/oldpage/pos_calibration/TubeFeedingModulePosCalibration.java +++ b/src/main/java/a8k/extui/oldpage/pos_calibration/TubeFeedingModulePosCalibration.java @@ -8,7 +8,7 @@ import a8k.app.hardware.extdriver.MotorMoveZeroExDriver; import a8k.app.service.lowerctrl.TubeFeedingExCtrlService; import a8k.app.hardware.driver.type.StepMotorMId; import a8k.app.service.lowerctrl.TubeFeedingCtrlService; -import a8k.app.service.param.TubeFeedingModuleParamMgr; +import a8k.app.service.param.pos.TubeFeedingModuleParamMgr; import a8k.app.dao.db.type.Parameter; import a8k.app.a8ktype.param.tubefeeding.TubeFeedingModulePos; import a8k.app.a8ktype.param.tubefeeding.TubeFeedingModuleSetting; diff --git a/src/main/java/a8k/extui/oldpage/pos_calibration/TubePreProcesPosCalibration.java b/src/main/java/a8k/extui/oldpage/pos_calibration/TubePreProcesPosCalibration.java index bf785e7..611a557 100644 --- a/src/main/java/a8k/extui/oldpage/pos_calibration/TubePreProcesPosCalibration.java +++ b/src/main/java/a8k/extui/oldpage/pos_calibration/TubePreProcesPosCalibration.java @@ -9,7 +9,7 @@ import a8k.app.service.lowerctrl.TubePreProcesModuleExCtrlService; import a8k.app.hardware.extdriver.MotorEnableExDriver; import a8k.app.hardware.extdriver.MotorMoveZeroExDriver; import a8k.app.service.lowerctrl.TubePreProcesModuleCtrlService; -import a8k.app.service.param.TubePreProcesPosParamMgr; +import a8k.app.service.param.pos.TubePreProcesPosParamMgr; import a8k.app.a8ktype.param.tubepreprocess.TubePreProcessGripperPos; import a8k.app.a8ktype.param.tubepreprocess.TubePreProcessTubeClamp; import a8k.app.a8ktype.param.tubepreprocess.TubePreProcessYPos; diff --git a/src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java b/src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java index c367eaa..25ef5a9 100644 --- a/src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java +++ b/src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java @@ -8,7 +8,7 @@ import a8k.extui.type.ret.A8kScanCurve; import a8k.extui.type.ExtApiStatu; import a8k.app.service.lowerctrl.OptScanModuleCtrlService; import a8k.app.service.lowerctrl.PlateBoxCtrlService; -import a8k.app.service.param.OptModuleExtParamsMgr; +import a8k.app.service.param.optparam.OptModuleExtParamsMgr; import a8k.app.a8ktype.param.optpos.OptModuleExtParam; import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType; import a8k.app.a8ktype.exception.AppException; diff --git a/src/main/java/a8k/extui/page/extapp/P01PipetteGunVerification.java b/src/main/java/a8k/extui/page/extapp/P01PipetteGunVerification.java index dec7528..44013fb 100644 --- a/src/main/java/a8k/extui/page/extapp/P01PipetteGunVerification.java +++ b/src/main/java/a8k/extui/page/extapp/P01PipetteGunVerification.java @@ -1,8 +1,8 @@ package a8k.extui.page.extapp; import a8k.app.constant.AppConstant; -import a8k.app.service.param.HbotTipPosMgr; -import a8k.app.service.param.PipetteGunExParamMgr; +import a8k.app.service.param.hbotpos.HbotTipPosMgr; +import a8k.app.service.param.pipetteparam.PipetteGunExParamMgr; import a8k.extui.mgr.ExtApiPageMgr; import a8k.extui.type.ExtUIPageCfg; import a8k.app.hardware.type.LldType; diff --git a/src/main/java/a8k/extui/page/extapp/P02A8kTemperaturaVerfication.java b/src/main/java/a8k/extui/page/extapp/P02A8kTemperaturaVerfication.java index e583b96..fffea79 100644 --- a/src/main/java/a8k/extui/page/extapp/P02A8kTemperaturaVerfication.java +++ b/src/main/java/a8k/extui/page/extapp/P02A8kTemperaturaVerfication.java @@ -2,7 +2,7 @@ package a8k.extui.page.extapp; import a8k.app.a8ktype.param.TemperatureCtrlParam; import a8k.app.service.background.BackgroudProcessCtrlService; -import a8k.app.service.param.TemperatureCtrlParamMgr; +import a8k.app.service.param.pos.TemperatureCtrlParamMgr; import a8k.extui.type.ret.ExtApiCurve; import a8k.extui.factory.CurveBuilder; import a8k.extui.type.ExtApiStatu; diff --git a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P02TubeFeedingModulePosCalibrationPage.java b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P02TubeFeedingModulePosCalibrationPage.java index 40cfe97..ba2b41c 100644 --- a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P02TubeFeedingModulePosCalibrationPage.java +++ b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P02TubeFeedingModulePosCalibrationPage.java @@ -2,7 +2,7 @@ package a8k.extui.page.extsetting.pos_calibration; import a8k.app.a8ktype.param.tubefeeding.TubeFeedingModulePos; import a8k.app.a8ktype.param.tubefeeding.TubeFeedingModuleSetting; -import a8k.app.service.param.TubeFeedingModuleParamMgr; +import a8k.app.service.param.pos.TubeFeedingModuleParamMgr; import a8k.extui.mgr.ExtApiPageMgr; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; diff --git a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P03TubePreProcesPosCalibrationPage.java b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P03TubePreProcesPosCalibrationPage.java index 597a5d5..9fdd743 100644 --- a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P03TubePreProcesPosCalibrationPage.java +++ b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P03TubePreProcesPosCalibrationPage.java @@ -4,7 +4,7 @@ import a8k.app.a8ktype.param.tubepreprocess.TubePreProcessGripperPos; import a8k.app.a8ktype.param.tubepreprocess.TubePreProcessTubeClamp; import a8k.app.a8ktype.param.tubepreprocess.TubePreProcessYPos; import a8k.app.a8ktype.param.tubepreprocess.TubePreProcessZAxisPos; -import a8k.app.service.param.TubePreProcesPosParamMgr; +import a8k.app.service.param.pos.TubePreProcesPosParamMgr; import a8k.extui.mgr.ExtApiPageMgr; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; diff --git a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P04ReactionPlatesTransmitControlerCalibrationPage.java b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P04ReactionPlatesTransmitControlerCalibrationPage.java index 501e4e9..9b63401 100644 --- a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P04ReactionPlatesTransmitControlerCalibrationPage.java +++ b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P04ReactionPlatesTransmitControlerCalibrationPage.java @@ -1,9 +1,9 @@ package a8k.extui.page.extsetting.pos_calibration; import a8k.app.a8ktype.param.optpos.OptModuleParam; -import a8k.app.service.param.OptModuleParamsMgr; -import a8k.app.service.param.PlatesBoxPosParamMgr; -import a8k.app.service.param.TurntablePosParamMgr; +import a8k.app.service.param.optparam.OptModuleParamsMgr; +import a8k.app.service.param.pos.PlatesBoxPosParamMgr; +import a8k.app.service.param.pos.TurntablePosParamMgr; import a8k.extui.mgr.ExtApiPageMgr; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; diff --git a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P20HbotTipPosCalibrationPage.java b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P20HbotTipPosCalibrationPage.java index 7718f8b..74b99f6 100644 --- a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P20HbotTipPosCalibrationPage.java +++ b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P20HbotTipPosCalibrationPage.java @@ -4,8 +4,8 @@ package a8k.extui.page.extsetting.pos_calibration; import a8k.app.a8ktype.device.Pos3d; import a8k.app.a8ktype.device.TipGroup; import a8k.app.a8ktype.type.TipPosConfig; -import a8k.app.service.param.HbotFixedPosParamMgr; -import a8k.app.service.param.HbotTipPosMgr; +import a8k.app.service.param.hbotpos.HbotFixedPosParamMgr; +import a8k.app.service.param.hbotpos.HbotTipPosMgr; import a8k.extui.mgr.ExtApiPageMgr; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; diff --git a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P21HbotLittleBSPosCalibrationPage.java b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P21HbotLittleBSPosCalibrationPage.java index ec82a3a..8b089ed 100644 --- a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P21HbotLittleBSPosCalibrationPage.java +++ b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P21HbotLittleBSPosCalibrationPage.java @@ -2,7 +2,7 @@ package a8k.extui.page.extsetting.pos_calibration; import a8k.app.a8ktype.device.Pos2d; import a8k.app.a8ktype.param.hbotpos.HbotLittleBSPos; -import a8k.app.service.param.HbotLittleBSPosMgr; +import a8k.app.service.param.hbotpos.HbotLittleBSPosMgr; import a8k.extui.mgr.ExtApiPageMgr; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; diff --git a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P23HbotLargeBottleBSPosCalibrationPage.java b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P23HbotLargeBottleBSPosCalibrationPage.java index 9ef8bfb..77a970c 100644 --- a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P23HbotLargeBottleBSPosCalibrationPage.java +++ b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P23HbotLargeBottleBSPosCalibrationPage.java @@ -2,7 +2,7 @@ package a8k.extui.page.extsetting.pos_calibration; import a8k.app.a8ktype.device.Pos2d; import a8k.app.a8ktype.param.hbotpos.HbotLargeBottleBSPos; -import a8k.app.service.param.HbotLargeBottleBSPosMgr; +import a8k.app.service.param.hbotpos.HbotLargeBottleBSPosMgr; import a8k.extui.mgr.ExtApiPageMgr; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; diff --git a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P24Hbot2DCodeScanPosCalibrationPage.java b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P24Hbot2DCodeScanPosCalibrationPage.java index c3a6f4f..5d9354f 100644 --- a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P24Hbot2DCodeScanPosCalibrationPage.java +++ b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P24Hbot2DCodeScanPosCalibrationPage.java @@ -1,7 +1,7 @@ package a8k.extui.page.extsetting.pos_calibration; import a8k.app.a8ktype.device.Pos2d; -import a8k.app.service.param.Hbot2DCodeScanParamMgr; +import a8k.app.service.param.hbotpos.Hbot2DCodeScanParamMgr; import a8k.extui.mgr.ExtApiPageMgr; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; diff --git a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P25HbotSamplePosCalibrationPage.java b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P25HbotSamplePosCalibrationPage.java index b410c91..976f82c 100644 --- a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P25HbotSamplePosCalibrationPage.java +++ b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P25HbotSamplePosCalibrationPage.java @@ -2,7 +2,7 @@ package a8k.extui.page.extsetting.pos_calibration; import a8k.app.a8ktype.device.Pos3d; import a8k.app.a8ktype.param.hbotpos.HbotSamplePos; -import a8k.app.service.param.HbotSamplePosParamMgr; +import a8k.app.service.param.hbotpos.HbotSamplePosParamMgr; import a8k.extui.mgr.ExtApiPageMgr; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; diff --git a/src/main/java/a8k/unittest/TestBeforeRun.java b/src/main/java/a8k/unittest/TestBeforeRun.java index 70b406f..2a61843 100644 --- a/src/main/java/a8k/unittest/TestBeforeRun.java +++ b/src/main/java/a8k/unittest/TestBeforeRun.java @@ -1,7 +1,7 @@ package a8k.unittest; -import a8k.app.service.param.PipetteGunLLDParamMgr; +import a8k.app.service.param.pipetteparam.PipetteGunLLDParamMgr; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; import org.springframework.stereotype.Component;