From 71c677841f40f855dd3ef2c4022c4ac8072fba22 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 17 Oct 2024 08:56:31 +0800 Subject: [PATCH] update --- app.db | Bin 225280 -> 225280 bytes pom.xml | 13 ++++ src/main/java/a8k/BoditechA800Application.java | 2 + src/main/java/a8k/SpringBootBeanUtil.java | 1 + .../pagecontrol/ExtApiTabConfig.java | 3 +- .../calibration/HbotConsumablePosCalibration.java | 17 ++++-- .../app/devicedriver/ctrl/HbotControler.java | 6 +- .../app/devicedriver/pos/HbotConsumablePosMgr.java | 68 +++++++++++++-------- src/main/java/a8k/type/HbotConsumablePos.java | 55 +++++++++-------- src/main/java/a8k/type/cfg/Pos3d.java | 4 -- src/main/java/a8k/utils/ZJsonHelper.java | 10 +++ 11 files changed, 112 insertions(+), 67 deletions(-) diff --git a/app.db b/app.db index f20169500520a1a1a1154d96230e1cff1118163d..f739c7f8a3f7bab7d716222a38add1ab3446f611 100644 GIT binary patch delta 1174 zcmZ`&Uq};i9KXBY-EBA9c9Z3FL(Q2)o|C)V=I%C{B`ygH7W5FPZI*v3GpC`s;y?^y z2!SE=gL*279(t++eKm^cDSYdp7eR$cAM7;>`rh59+bX!<-TglQeqZkUz4=Y&{HAls zUmIE>2qFfn3)XRhuzz~oAscAt>>>jY!5cTi^(Obojo{@iPp-GP_6P^jM7Ynn>YUt> zi#1EOIpzs^N@@T$E%X=i%MDwy{$X1nsluH8V<$jSg}b`z+fUff>W=T5@SM^2cD=N| z{xwhP55H`YG=vW>d-ycR7V@ldCb1l2*Iw-JukcxMm8WQ4r}x2SvgSBSkl z#S+mFmK0RSpC6hY8|j%D9UYlYPu>xuxFvx)S-U_8MTM_Q(UUXGzAz>e$m^;k@sx@h zI4v~-l5kOi`xMj;*kl#vDT!}a5pG({$PuFsAE%w205)2R%BYAZqd2D`KTx--s9Ng4 zmK*}E&9c?wcPeV;wB&dh#>g2-RPaX9NJ`$UWJF0SF_|(3PsGif8)X60sbLWr#(z)ZpP6?TwNuc9{xA0;Q1|leOM4Q_^i@1_V*5j8sL-Aj?HV zSgUCx`k;va)vc(iRfQBiu=EZbp5gEKtL~UpRp_9qsMcc+X|ePF98(yN)G)-BPnsL+ z3JSn*TmzzFZm>r+iK|tF0R7LJ#hD{rk9}5`uasl&O$`3a`BE2SoCe#|rL7-NB~T-$ vo$Lo&AmBFt4qWq`a*^`dMgqmWWGl9((F3O&Y{y_V!(#D38U=JZd!hLc3oRIM delta 6417 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 ZJX*0e>VnTQ_;lBg9Ln@fwBLQO|Ns4$24(;N diff --git a/pom.xml b/pom.xml index cecb3d1..0d9adc5 100644 --- a/pom.xml +++ b/pom.xml @@ -22,6 +22,18 @@ spring-boot-starter-web + org.springframework.boot + spring-boot-starter-aop + + + org.springframework + spring-aop + + + org.aspectj + aspectjweaver + + org.xerial sqlite-jdbc 3.45.2.0 @@ -57,6 +69,7 @@ lombok annotationProcessor + diff --git a/src/main/java/a8k/BoditechA800Application.java b/src/main/java/a8k/BoditechA800Application.java index ce79558..0cba5bd 100644 --- a/src/main/java/a8k/BoditechA800Application.java +++ b/src/main/java/a8k/BoditechA800Application.java @@ -3,8 +3,10 @@ package a8k; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.EnableAspectJAutoProxy; @SpringBootApplication +@EnableAspectJAutoProxy public class BoditechA800Application { public static void main(String[] args) { SpringApplication.run(BoditechA800Application.class, args); diff --git a/src/main/java/a8k/SpringBootBeanUtil.java b/src/main/java/a8k/SpringBootBeanUtil.java index 6fcd6d4..8eba9ab 100644 --- a/src/main/java/a8k/SpringBootBeanUtil.java +++ b/src/main/java/a8k/SpringBootBeanUtil.java @@ -3,6 +3,7 @@ package a8k; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; +import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.stereotype.Component; import java.io.File; diff --git a/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java b/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java index 789d198..8d025d7 100644 --- a/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java +++ b/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java @@ -18,11 +18,12 @@ public enum ExtApiTabConfig { TubeFeedingModulePosCalibration("校准.试管入料校准", true), TubePreProcesPosCalibration("校准.试管预处理校准", true), ReactionPlatesTransmitControlerCalibration("校准.反应板相关位置校准", true), + HbotConsumablePosCalibration("校准.耗材位置校准", true), ActionReactorService("底层调试.单步调试", false),//OK Hbot2DCodeScanPos("参数.Hbot二维码扫描坐标参数", false), //底层硬件 - A8kPipetteCtrlModule("A8kPipetteCtrlModule", false), + A8kPipetteCtrlModule("A8kPipetteCtrlModule", true), SampleTransportParam("参数.样本出入料&扫描参数", false), PosParam("PosParam", false), diff --git a/src/main/java/a8k/service/app/devicedriver/calibration/HbotConsumablePosCalibration.java b/src/main/java/a8k/service/app/devicedriver/calibration/HbotConsumablePosCalibration.java index 849bdb3..9893251 100644 --- a/src/main/java/a8k/service/app/devicedriver/calibration/HbotConsumablePosCalibration.java +++ b/src/main/java/a8k/service/app/devicedriver/calibration/HbotConsumablePosCalibration.java @@ -26,13 +26,17 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import jakarta.annotation.Resource; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; import org.slf4j.Logger; +import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import java.util.Map; -@ExtApiTab(cfg = ExtApiTabConfig.Hbot2DCodeScanPosCalibration) +@ExtApiTab(cfg = ExtApiTabConfig.HbotConsumablePosCalibration) @Component +@Aspect public class HbotConsumablePosCalibration { static Logger logger = org.slf4j.LoggerFactory.getLogger(HbotConsumablePosCalibration.class); @@ -71,10 +75,6 @@ public class HbotConsumablePosCalibration { return hbotConsumablePosMgr.getParams(); } - @ExtApiFn(name = "获取所有坐标中文说明", group = "基础", order = 2) - public Object getPossChName() throws AppException { - return hbotConsumablePosMgr.getParamsChName(); - } // 测试工具 @@ -102,12 +102,15 @@ public class HbotConsumablePosCalibration { // @ExtApiFn(name = "标定HBOT坐标", group = "标定", order = 21) - void calibratePos(HbotConsumablePos hbotConsumablePos) throws AppException { + public void calibratePos(HbotConsumablePos hbotConsumablePos) throws AppException { enableModule(); Pos2d xypos = hbotModule.readPos(); pipetteCtrlModule.zMotorMeasureDistance(); Integer z = pipetteCtrlModule.zMotorReadMeasureDistanceResult(); hbotConsumablePosMgr.setParam(hbotConsumablePos, new Pos3d(xypos.x, xypos.y, z)); + if (hbotConsumablePos.ordinal() <= HbotConsumablePos.Tip02_119Pos.ordinal()) { + pipetteCtrlModule.putTipBlock(); + } } @@ -170,4 +173,6 @@ public class HbotConsumablePosCalibration { public void stopTest() throws AppException { setStopFlag(); } + + } diff --git a/src/main/java/a8k/service/app/devicedriver/ctrl/HbotControler.java b/src/main/java/a8k/service/app/devicedriver/ctrl/HbotControler.java index 5f65209..63300b9 100644 --- a/src/main/java/a8k/service/app/devicedriver/ctrl/HbotControler.java +++ b/src/main/java/a8k/service/app/devicedriver/ctrl/HbotControler.java @@ -60,9 +60,9 @@ public class HbotControler { //取tip pipetteCtrlModule.zMotorMoveToBlock(tipPos.z - 100); - if (!pipetteCtrlModule.isHasTip()) { - throw new AppException(A8kEcode.APPE_TAKE_TIP_FAIL); - } +// if (!pipetteCtrlModule.isHasTip()) { +// throw new AppException(A8kEcode.APPE_TAKE_TIP_FAIL); +// } //丢tip pipetteCtrlModule.putTipBlock(); diff --git a/src/main/java/a8k/service/app/devicedriver/pos/HbotConsumablePosMgr.java b/src/main/java/a8k/service/app/devicedriver/pos/HbotConsumablePosMgr.java index 5e97e53..fd2f161 100644 --- a/src/main/java/a8k/service/app/devicedriver/pos/HbotConsumablePosMgr.java +++ b/src/main/java/a8k/service/app/devicedriver/pos/HbotConsumablePosMgr.java @@ -10,12 +10,18 @@ import a8k.type.HbotConsumablePos; import a8k.type.cfg.Pos3d; import a8k.type.type.TipGroup; import a8k.utils.PlaneUtils; +import a8k.utils.ZJsonHelper; +import a8k.utils.ZSqliteJdbcHelper; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; /** @@ -31,7 +37,7 @@ public class HbotConsumablePosMgr { LowerDeviceParameterDBService lowerDeviceParameterDBService; PosParameterReader posReader = null; - static Integer nowParaVersion = 0; + static Integer nowParaVersion = 2; @PostConstruct void initialize() { @@ -45,36 +51,46 @@ public class HbotConsumablePosMgr { public void paramReset() { logger.info("init param"); posReader.setVersion(nowParaVersion); - posReader.updatePos(HbotConsumablePos.Tip00_000Pos.name(), new Pos3d(0, 0, 0)); - posReader.updatePos(HbotConsumablePos.Tip00_119Pos.name(), new Pos3d(0, 0, 0)); - posReader.updatePos(HbotConsumablePos.Tip01_000Pos.name(), new Pos3d(0, 0, 0)); - posReader.updatePos(HbotConsumablePos.Tip01_119Pos.name(), new Pos3d(0, 0, 0)); - posReader.updatePos(HbotConsumablePos.Tip02_000Pos.name(), new Pos3d(0, 0, 0)); - posReader.updatePos(HbotConsumablePos.Tip02_119Pos.name(), new Pos3d(0, 0, 0)); - - posReader.updatePos(HbotConsumablePos.LittleBufferPos00_00.name(), new Pos3d(0, 0, 0)); - posReader.updatePos(HbotConsumablePos.LittleBufferPos05_24.name(), new Pos3d(0, 0, 0)); - - posReader.updatePos(HbotConsumablePos.ProbeSubstance00_00.name(), new Pos3d(0, 0, 0)); - posReader.updatePos(HbotConsumablePos.ProbeSubstance05_24.name(), new Pos3d(0, 0, 0)); - } - public Map getParams() { - Map map = new java.util.HashMap<>(); - for (HbotConsumablePos param : HbotConsumablePos.values()) { - map.put(param.name(), posReader.getPos(param.name(), Pos3d.class)); - } - return map; + posReader.updatePos(HbotConsumablePos.Tip00_000Pos, new Pos3d()); + posReader.updatePos(HbotConsumablePos.Tip00_011Pos, new Pos3d()); + posReader.updatePos(HbotConsumablePos.Tip00_108Pos, new Pos3d()); + posReader.updatePos(HbotConsumablePos.Tip00_119Pos, new Pos3d()); + posReader.updatePos(HbotConsumablePos.Tip01_000Pos, new Pos3d()); + posReader.updatePos(HbotConsumablePos.Tip01_011Pos, new Pos3d()); + posReader.updatePos(HbotConsumablePos.Tip01_108Pos, new Pos3d()); + posReader.updatePos(HbotConsumablePos.Tip01_119Pos, new Pos3d()); + posReader.updatePos(HbotConsumablePos.Tip02_000Pos, new Pos3d()); + posReader.updatePos(HbotConsumablePos.Tip02_011Pos, new Pos3d()); + posReader.updatePos(HbotConsumablePos.Tip02_108Pos, new Pos3d()); + posReader.updatePos(HbotConsumablePos.Tip02_119Pos, new Pos3d()); + posReader.updatePos(HbotConsumablePos.LittleBufferPos00_00, new Pos3d()); + posReader.updatePos(HbotConsumablePos.LittleBufferPos00_24, new Pos3d()); + posReader.updatePos(HbotConsumablePos.LittleBufferPos05_00, new Pos3d()); + posReader.updatePos(HbotConsumablePos.LittleBufferPos05_24, new Pos3d()); + posReader.updatePos(HbotConsumablePos.ProbeSubstance00_00, new Pos3d()); + posReader.updatePos(HbotConsumablePos.ProbeSubstance00_24, new Pos3d()); + posReader.updatePos(HbotConsumablePos.ProbeSubstance05_00, new Pos3d()); + posReader.updatePos(HbotConsumablePos.ProbeSubstance05_24, new Pos3d()); + posReader.updatePos(HbotConsumablePos.LargeBufferPos00, new Pos3d()); + posReader.updatePos(HbotConsumablePos.LargeBufferPos05, new Pos3d()); + + } - public Map getParamsChName() { - Map map = new java.util.HashMap<>(); + public List getParams() { + List list = new java.util.ArrayList<>(); for (HbotConsumablePos param : HbotConsumablePos.values()) { - map.put(param.name(), param.chName); + ObjectNode posNode = ZJsonHelper.createObjectNode(); + posNode.put("pos", ZJsonHelper.createObjectNode(posReader.getPos(param.name(), Pos3d.class))); + posNode.put("name", param.name()); + posNode.put("chName", param.chName); + list.add(posNode); } - return map; + return list; } + public void setParam(HbotConsumablePos param, Pos3d pos) { posReader.updatePos(param.name(), pos); } @@ -109,9 +125,9 @@ public class HbotConsumablePosMgr { assert tip119 != null; //水平方向 - double dx = (tip119.x - tip000.x) / 12.0; + double dx = (tip119.x - tip000.x) / 11.0; //前后方向 - double dy = (tip119.y - tip000.y) / 10.0; + double dy = (tip119.y - tip000.y) / 9.0; int xoff = tipoff % 12; int yoff = tipoff / 12; diff --git a/src/main/java/a8k/type/HbotConsumablePos.java b/src/main/java/a8k/type/HbotConsumablePos.java index 6ce0a1d..04a0602 100644 --- a/src/main/java/a8k/type/HbotConsumablePos.java +++ b/src/main/java/a8k/type/HbotConsumablePos.java @@ -1,36 +1,37 @@ package a8k.type; public enum HbotConsumablePos { - Tip00_000Pos("Tip00_000Pos"), - Tip00_011Pos("Tip00_011Pos"), - Tip00_108Pos("Tip00_108Pos"), - Tip00_119Pos("Tip00_119Pos"), - - Tip01_000Pos("Tip01_000Pos"), - Tip01_011Pos("Tip01_011Pos"), - Tip01_108Pos("Tip01_108Pos"), - Tip01_119Pos("Tip01_119Pos"), - - Tip02_000Pos("Tip02_000Pos"), - Tip02_011Pos("Tip02_011Pos"), - Tip02_108Pos("Tip02_108Pos"), - Tip02_119Pos("Tip02_119Pos"), - - LittleBufferPos00_00("LittleBufferPos00_00"), - LittleBufferPos00_24("LittleBufferPos00_24"), - LittleBufferPos05_00("LittleBufferPos05_00"), - LittleBufferPos05_24("LittleBufferPos05_24"), - - ProbeSubstance00_00("ProbeSubstance00_00"), - ProbeSubstance00_24("ProbeSubstance00_24"), - ProbeSubstance05_00("ProbeSubstance05_00"), - ProbeSubstance05_24("ProbeSubstance05_24"), - - LargeBufferPos00("LargeBufferPos00"), - LargeBufferPos05("LargeBufferPos05"), + Tip00_000Pos("第0组TIP的第0个位置"), + Tip00_011Pos("第0组TIP的第11个位置"), + Tip00_108Pos("第0组TIP的第108个位置"), + Tip00_119Pos("第0组TIP的第119个位置"), + + Tip01_000Pos("第1组TIP的第0个位置"), + Tip01_011Pos("第1组TIP的第11个位置"), + Tip01_108Pos("第1组TIP的第108个位置"), + Tip01_119Pos("第1组TIP的第119个位置"), + + Tip02_000Pos("第2组TIP的第0个位置"), + Tip02_011Pos("第2组TIP的第11个位置"), + Tip02_108Pos("第2组TIP的第108个位置"), + Tip02_119Pos("第2组TIP的第119个位置"), + + LittleBufferPos00_00("第0组小瓶的第0个位置"), + LittleBufferPos00_24("第0组小瓶的第24个位置"), + LittleBufferPos05_00("第5组小瓶的第0个位置"), + LittleBufferPos05_24("第5组小瓶的第24个位置"), + + ProbeSubstance00_00("第0组探针的第0个位置"), + ProbeSubstance00_24("第0组探针的第24个位置"), + ProbeSubstance05_00("第5组探针的第0个位置"), + ProbeSubstance05_24("第5组探针的第24个位置"), + + LargeBufferPos00("左上角大瓶位置"), + LargeBufferPos05("右下角大瓶位置"), ; final public String chName; + HbotConsumablePos(String chName) { this.chName = chName; } diff --git a/src/main/java/a8k/type/cfg/Pos3d.java b/src/main/java/a8k/type/cfg/Pos3d.java index cd3689e..d5cadac 100644 --- a/src/main/java/a8k/type/cfg/Pos3d.java +++ b/src/main/java/a8k/type/cfg/Pos3d.java @@ -14,10 +14,6 @@ public class Pos3d { this.z = z; } - public Pos2d getXYPos() { - return new Pos2d(x, y); - } - public String toString() { return String.format("(%d, %d, %d)", x, y, z); } diff --git a/src/main/java/a8k/utils/ZJsonHelper.java b/src/main/java/a8k/utils/ZJsonHelper.java index f51a7e2..50aaa0f 100644 --- a/src/main/java/a8k/utils/ZJsonHelper.java +++ b/src/main/java/a8k/utils/ZJsonHelper.java @@ -1,6 +1,9 @@ package a8k.utils; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; public class ZJsonHelper { public static String objectToJson(Object obj) { @@ -13,5 +16,12 @@ public class ZJsonHelper { } } + public static ObjectNode createObjectNode() { + return new ObjectMapper().createObjectNode(); + } + public static ObjectNode createObjectNode(Object obj) { + ObjectMapper ObjectMapper = new ObjectMapper(); + return ObjectMapper.valueToTree(obj); + } }