From 03b09d308188cff3ad2555600218920594a69cec Mon Sep 17 00:00:00 2001 From: zhaohe Date: Fri, 3 Jan 2025 14:00:08 +0800 Subject: [PATCH] recode --- .../a8k/app/a8kproj/fakeproj/FakeProjInfo.java | 32 +++++++++++----------- .../FakeProjInfoContextFactory.java | 28 +++++++++---------- .../java/a8k/app/a8kproj/optalgo/A8kOptAlgoV2.java | 18 +++++------- .../a8k/app/a8kproj/optanalyzer/A8kOptXGetter.java | 6 ++-- .../optanalyzer/context/OptAnalyzeContext.java | 6 ++-- src/main/java/a8k/app/dao/db/ProjOptInfoDao.java | 15 +++++----- src/main/java/a8k/app/dao/db/type/OptCfg.java | 24 ++++++++++++++++ src/main/java/a8k/app/dao/db/type/ProjOptInfo.java | 23 ---------------- .../a8k/app/factory/FakeReactionResultFactory.java | 2 +- .../app/service/data/ProjIdCardInfoMgrService.java | 2 +- .../a8k/app/service/data/ProjInfoMgrService.java | 32 ++++++++++++++++------ .../lowerctrl/OptScanModuleCtrlService.java | 6 ++-- .../mainflowctrl/action/PLATE_OPT_SCAN.java | 2 +- src/main/java/a8k/app/utils/ProjBuildinInfo.java | 20 +++++++------- src/main/java/a8k/app/utils/ProjInfo.java | 3 -- src/main/java/a8k/app/utils/ZCSVUtils.java | 12 ++++---- .../page/opt_calibration/A8kOptVerification.java | 13 ++++----- .../page/opt_calibration/OptFormulaTestPage.java | 3 +- .../page/opt_calibration/OptFormulaTestPageV2.java | 5 ++-- 19 files changed, 125 insertions(+), 127 deletions(-) create mode 100644 src/main/java/a8k/app/dao/db/type/OptCfg.java delete mode 100644 src/main/java/a8k/app/dao/db/type/ProjOptInfo.java diff --git a/src/main/java/a8k/app/a8kproj/fakeproj/FakeProjInfo.java b/src/main/java/a8k/app/a8kproj/fakeproj/FakeProjInfo.java index 72eaa95..c966d4e 100644 --- a/src/main/java/a8k/app/a8kproj/fakeproj/FakeProjInfo.java +++ b/src/main/java/a8k/app/a8kproj/fakeproj/FakeProjInfo.java @@ -1,7 +1,7 @@ package a8k.app.a8kproj.fakeproj; import a8k.app.dao.db.type.ProjExtInfoCard; -import a8k.app.dao.db.type.ProjOptInfo; +import a8k.app.dao.db.type.OptCfg; import a8k.app.dao.db.type.ProjectBaseInfo; import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType; import a8k.app.dao.db.type.a8kidcard.zenum.A8kReactionFlowType; @@ -73,25 +73,25 @@ public class FakeProjInfo { return projInfo; } - public List buildProjOptInfoList() { - List projOptInfoList = new ArrayList<>(); + public List buildProjOptInfoList() { + List optCfgList = new ArrayList<>(); for (int subIndex = 0; subIndex < subProjNum; subIndex++) { - ProjOptInfo projOptInfo = new ProjOptInfo(); - projOptInfo.id = 0; - projOptInfo.projId = projId; - projOptInfo.projName = projName; - projOptInfo.subProjIndex = subIndex; + OptCfg optCfg = new OptCfg(); + optCfg.id = 0; + optCfg.projId = projId; + optCfg.projName = projName; + optCfg.subProjIndex = subIndex; /*光学配置*/ - projOptInfo.subProjName = String.format("%s_%d", projName, subIndex); - projOptInfo.subProjShortName = String.format("%s_%d", projShortName, subIndex); - projOptInfo.optType = A8kOptType.FOPT; - projOptInfo.optScanRange = 200; - projOptInfo.optScanPeakNum = 3; - projOptInfo.peakNameRefNum = 3; - projOptInfoList.add(projOptInfo); + optCfg.subProjName = String.format("%s_%d", projName, subIndex); + optCfg.subProjShortName = String.format("%s_%d", projShortName, subIndex); + optCfg.optType = A8kOptType.FOPT; + optCfg.optScanRange = 200; + optCfg.optScanPeakNum = 3; + optCfg.peakNameRefNum = 3; + optCfgList.add(optCfg); } - return projOptInfoList; + return optCfgList; } diff --git a/src/main/java/a8k/app/a8kproj/fakeprojcontext/FakeProjInfoContextFactory.java b/src/main/java/a8k/app/a8kproj/fakeprojcontext/FakeProjInfoContextFactory.java index c1487e4..c04dce8 100644 --- a/src/main/java/a8k/app/a8kproj/fakeprojcontext/FakeProjInfoContextFactory.java +++ b/src/main/java/a8k/app/a8kproj/fakeprojcontext/FakeProjInfoContextFactory.java @@ -3,7 +3,7 @@ package a8k.app.a8kproj.fakeprojcontext; import a8k.app.a8ktype.opttype.A8kOptX; import a8k.app.service.data.UtilsProjectColorAllocer; import a8k.app.dao.db.type.ProjExtInfoCard; -import a8k.app.dao.db.type.ProjOptInfo; +import a8k.app.dao.db.type.OptCfg; import a8k.app.dao.db.type.ProjectBaseInfo; import a8k.app.dao.db.type.a8kidcard.A8kNormalFn; import a8k.app.dao.db.type.a8kidcard.A8kOptFnFormula; @@ -191,24 +191,24 @@ public class FakeProjInfoContextFactory { // // ProjOptInfo // - List projOptInfoList = new ArrayList<>(); + List optCfgList = new ArrayList<>(); for (int i = 0; i < cfg.subProjNum; i++) { - ProjOptInfo projOptInfo = new ProjOptInfo(); - projOptInfo.projId = cfg.projId; - projOptInfo.projName = cfg.projName; - projOptInfo.subProjIndex = i; - projOptInfo.subProjName = String.format("SUBPROJ_%d", i); - projOptInfo.subProjShortName = String.format("SP%d", i); - projOptInfo.optType = cfg.optType; - projOptInfo.optScanRange = 250; - projOptInfo.optScanPeakNum = cfg.optScanPeakNum; - projOptInfo.peakNameRefNum = cfg.optPeakNameAssginRefPeakNum; - projOptInfoList.add(projOptInfo); + OptCfg optCfg = new OptCfg(); + optCfg.projId = cfg.projId; + optCfg.projName = cfg.projName; + optCfg.subProjIndex = i; + optCfg.subProjName = String.format("SUBPROJ_%d", i); + optCfg.subProjShortName = String.format("SP%d", i); + optCfg.optType = cfg.optType; + optCfg.optScanRange = 250; + optCfg.optScanPeakNum = cfg.optScanPeakNum; + optCfg.peakNameRefNum = cfg.optPeakNameAssginRefPeakNum; + optCfgList.add(optCfg); } ProjInfo projInfoContext = new ProjInfo(); projInfoContext.projExtInfoCard = projExtInfoCard; - projInfoContext.projBuildinInfo = new ProjBuildinInfo(projInfo,projOptInfoList); + projInfoContext.projBuildinInfo = new ProjBuildinInfo(projInfo, optCfgList); return projInfoContext; } diff --git a/src/main/java/a8k/app/a8kproj/optalgo/A8kOptAlgoV2.java b/src/main/java/a8k/app/a8kproj/optalgo/A8kOptAlgoV2.java index ae122f0..72fec27 100644 --- a/src/main/java/a8k/app/a8kproj/optalgo/A8kOptAlgoV2.java +++ b/src/main/java/a8k/app/a8kproj/optalgo/A8kOptAlgoV2.java @@ -2,12 +2,8 @@ package a8k.app.a8kproj.optalgo; import a8k.app.a8kproj.optalgo.type.*; import a8k.app.a8kproj.optalgo.utils.*; -import a8k.app.a8kproj.optanalyzer.PeakDivisionComputer; import a8k.app.a8kproj.optanalyzer.PeakNameAssigner; -import a8k.app.a8ktype.opttype.PeakDivision; -import a8k.app.a8ktype.opttype.PeakName; -import a8k.app.dao.db.type.ProjOptInfo; -import a8k.app.dao.db.type.ProjectBaseInfo; +import a8k.app.dao.db.type.OptCfg; import a8k.app.utils.ProjBuildinInfo; import lombok.extern.slf4j.Slf4j; @@ -35,17 +31,17 @@ public class A8kOptAlgoV2 { Integer[] rawData; ProjBuildinInfo projInfo; - ProjOptInfo projOptInfo; + OptCfg optCfg; - public OptAlgoAnalysResult processOptData(ProjBuildinInfo projInfo, ProjOptInfo projOptInfo, Integer[] data) { + public OptAlgoAnalysResult processOptData(ProjBuildinInfo projInfo, OptCfg optCfg, Integer[] data) { double[] doubleData = new double[data.length]; for (int i = 0; i < data.length; i++) { doubleData[i] = data[i]; } - this.projInfo = projInfo; - this.projOptInfo = projOptInfo; - this.rawData = data; + this.projInfo = projInfo; + this.optCfg = optCfg; + this.rawData = data; return processOptData(doubleData); } @@ -70,7 +66,7 @@ public class A8kOptAlgoV2 { findpeak(avg, 140, 180, peaks.P160); findpeak(avg, 180, 220, peaks.P200); - PeakNameAssigner.assignPeakName(projInfo.projId, projOptInfo.peakNameRefNum, peaks); + PeakNameAssigner.assignPeakName(projInfo.projId, optCfg.peakNameRefNum, peaks); return OptAlgoAnalysResult.build(rawData, afSubSampling, peaks); diff --git a/src/main/java/a8k/app/a8kproj/optanalyzer/A8kOptXGetter.java b/src/main/java/a8k/app/a8kproj/optanalyzer/A8kOptXGetter.java index d79f2e7..7ae41a1 100644 --- a/src/main/java/a8k/app/a8kproj/optanalyzer/A8kOptXGetter.java +++ b/src/main/java/a8k/app/a8kproj/optanalyzer/A8kOptXGetter.java @@ -4,7 +4,7 @@ import a8k.app.a8kproj.optalgo.type.OptAlgoAnalysResult; import a8k.app.a8kproj.optanalyzer.exception.A8kOptProcessException; import a8k.app.a8ktype.opttype.A8kOptX; import a8k.app.a8ktype.opttype.PeakDivision; -import a8k.app.dao.db.type.ProjOptInfo; +import a8k.app.dao.db.type.OptCfg; import a8k.app.a8ktype.opttype.ReactionResultStatus; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -13,7 +13,7 @@ public class A8kOptXGetter { private static final Logger log = LoggerFactory.getLogger(A8kOptXGetter.class); static class Context { - ProjOptInfo optcfg; + OptCfg optcfg; OptAlgoAnalysResult optAlgoAnalysResult; } @@ -41,7 +41,7 @@ public class A8kOptXGetter { return result; } - static public Double getX(A8kOptX xType, ProjOptInfo optcfg, OptAlgoAnalysResult optAlgoAnalysResult) throws A8kOptProcessException { + static public Double getX(A8kOptX xType, OptCfg optcfg, OptAlgoAnalysResult optAlgoAnalysResult) throws A8kOptProcessException { Context cxt = new Context(); cxt.optcfg = optcfg; diff --git a/src/main/java/a8k/app/a8kproj/optanalyzer/context/OptAnalyzeContext.java b/src/main/java/a8k/app/a8kproj/optanalyzer/context/OptAnalyzeContext.java index d6b21f2..e782d37 100644 --- a/src/main/java/a8k/app/a8kproj/optanalyzer/context/OptAnalyzeContext.java +++ b/src/main/java/a8k/app/a8kproj/optanalyzer/context/OptAnalyzeContext.java @@ -1,7 +1,7 @@ package a8k.app.a8kproj.optanalyzer.context; import a8k.app.a8ktype.state.SampleInfo; -import a8k.app.dao.db.type.ProjOptInfo; +import a8k.app.dao.db.type.OptCfg; import a8k.app.utils.ProjInfo; public class OptAnalyzeContext { @@ -16,8 +16,8 @@ public class OptAnalyzeContext { this.subProjIndex = subProjIndex; } - public ProjOptInfo getProjOptInfo() { - return projInfoCxt.projBuildinInfo.projOptInfos.get(subProjIndex); + public OptCfg getProjOptInfo() { + return projInfoCxt.projBuildinInfo.optcfg.get(subProjIndex); } public String getProjName() { diff --git a/src/main/java/a8k/app/dao/db/ProjOptInfoDao.java b/src/main/java/a8k/app/dao/db/ProjOptInfoDao.java index 3c7e117..27130ea 100644 --- a/src/main/java/a8k/app/dao/db/ProjOptInfoDao.java +++ b/src/main/java/a8k/app/dao/db/ProjOptInfoDao.java @@ -1,8 +1,7 @@ package a8k.app.dao.db; -import a8k.app.dao.db.type.ProjOptInfo; +import a8k.app.dao.db.type.OptCfg; -import a8k.app.utils.ZJsonHelper; import a8k.app.utils.ZSqlite; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; @@ -14,28 +13,28 @@ import java.util.List; @Component @Slf4j -public class ProjOptInfoDao extends ZSqlite { +public class ProjOptInfoDao extends ZSqlite { @Resource JdbcTemplate jdbcTemplate; @PostConstruct void init() { - init(jdbcTemplate, "zapp_a8k_project_opt_config", ProjOptInfo.class, true); + init(jdbcTemplate, "zapp_a8k_project_opt_config", OptCfg.class, true); } - public List findByProjIndex(Integer projId) { + public List findByProjIndex(Integer projId) { return queryList("select * from " + tableName + " where projId = ?;", projId); } - public void add(List vals) { - for (ProjOptInfo val : vals) { + public void add(List vals) { + for (OptCfg val : vals) { add(val); } } - public void add(ProjOptInfo val) { + public void add(OptCfg val) { // checkVal(val); super.add(val); } diff --git a/src/main/java/a8k/app/dao/db/type/OptCfg.java b/src/main/java/a8k/app/dao/db/type/OptCfg.java new file mode 100644 index 0000000..a7fbd7c --- /dev/null +++ b/src/main/java/a8k/app/dao/db/type/OptCfg.java @@ -0,0 +1,24 @@ +package a8k.app.dao.db.type; + +import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType; + +import java.io.Serializable; + +public class OptCfg implements Serializable { + public int id = 0; + public Integer projId; //项目INDEX + public String projName; //项目名称 + public Integer subProjIndex;//子项目INDEX + /*光学配置*/ + public String subProjName; //子项目 名称 + public String subProjShortName; //子项目 缩写名称 + + /*光学类型*/ + public A8kOptType optType; //子项目 光学类型 necessity + public Integer optScanRange; //子项目 扫描范围 扫描范围 + + public Integer optScanPeakNum; //子项目 实际扫描到的峰的数量 + public Integer peakNameRefNum; //子项目 峰的数量 + + +} diff --git a/src/main/java/a8k/app/dao/db/type/ProjOptInfo.java b/src/main/java/a8k/app/dao/db/type/ProjOptInfo.java deleted file mode 100644 index a05e534..0000000 --- a/src/main/java/a8k/app/dao/db/type/ProjOptInfo.java +++ /dev/null @@ -1,23 +0,0 @@ -package a8k.app.dao.db.type; - -import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType; - -import java.io.Serializable; - -public class ProjOptInfo implements Serializable { - public int id = 0; - public Integer projId; //项目INDEX - public String projName; //项目名称 - public Integer subProjIndex;//子项目INDEX - /*光学配置*/ - public String subProjName; //子项目 名称 - public String subProjShortName; //子项目 缩写名称 - - /*光学类型*/ - public A8kOptType optType; //子项目 光学类型 necessity - public Integer optScanRange; //子项目 扫描范围 扫描范围 - - public Integer optScanPeakNum; //子项目 实际扫描到的峰的数量 - public Integer peakNameRefNum; //子项目 峰的数量 - -} diff --git a/src/main/java/a8k/app/factory/FakeReactionResultFactory.java b/src/main/java/a8k/app/factory/FakeReactionResultFactory.java index f3ea1f5..0f65a0a 100644 --- a/src/main/java/a8k/app/factory/FakeReactionResultFactory.java +++ b/src/main/java/a8k/app/factory/FakeReactionResultFactory.java @@ -11,7 +11,7 @@ public class FakeReactionResultFactory { public static List build(ProjInfo projcfg) { List resultList = new ArrayList<>(); - for (int i = 0; i < projcfg.projBuildinInfo.projOptInfos.size(); i++) { + for (int i = 0; i < projcfg.projBuildinInfo.optcfg.size(); i++) { ReactionResult result = new ReactionResult("HSCRP xxxxx", "HC", 11.11, 22.22, 33.33, A8kResultUnit.ngPml, A8kResultUnit.ngPdl, A8kResultUnit.iuPml); resultList.add(result); } diff --git a/src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java b/src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java index b90ca56..37fb2b7 100644 --- a/src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java +++ b/src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java @@ -120,7 +120,7 @@ public class ProjIdCardInfoMgrService { return ecodeList; } - if (projBuildinInfo.projOptInfos.size() != projExtInfoCard.subProjNum) { + if (projBuildinInfo.optcfg.size() != projExtInfoCard.subProjNum) { ecodeList.add(A8kEcode.PROJ_CARD_ERROR_WRONG_OPT_NUM); // 项目卡配置的光学数量与项目配置不匹配 return ecodeList; } diff --git a/src/main/java/a8k/app/service/data/ProjInfoMgrService.java b/src/main/java/a8k/app/service/data/ProjInfoMgrService.java index 35911b5..889a5db 100644 --- a/src/main/java/a8k/app/service/data/ProjInfoMgrService.java +++ b/src/main/java/a8k/app/service/data/ProjInfoMgrService.java @@ -6,23 +6,23 @@ import a8k.app.dao.db.ProjectBaseInfoDao; import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; import a8k.app.dao.db.type.ProjExtInfoCard; -import a8k.app.dao.db.type.ProjOptInfo; import a8k.app.dao.db.type.ProjectBaseInfo; -import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType; import a8k.app.a8ktype.exception.AppException; import a8k.app.utils.ProjBuildinInfo; import a8k.app.utils.ZAppChecker; +import a8k.app.utils.ZJsonHelper; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; -import org.slf4j.Logger; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import org.springframework.util.Assert; import java.util.ArrayList; import java.util.List; @Component +@Slf4j public class ProjInfoMgrService { - static Logger logger = org.slf4j.LoggerFactory.getLogger(ProjInfoMgrService.class); @Resource A8kProjExtInfoCardDao a8KProjExtInfoCardDao; @@ -70,12 +70,26 @@ public class ProjInfoMgrService { try { var allbuildInfo = getAllProjBuildInInfo(); for (var buildInfo : allbuildInfo) { - logger.info("buildInfo:{}", buildInfo); - } - + log.info("buildInfo:{}", ZJsonHelper.objectToJson(buildInfo)); + Assert.notNull(buildInfo, "buildInfo is null"); + //检查项目信息是否正确 + Assert.isTrue(buildInfo.subProjNum == buildInfo.optcfg.size(), "subProjNum is not match"); + //对象所有字段不为空 + for (var field : buildInfo.getClass().getDeclaredFields()) { + field.setAccessible(true); + Assert.notNull(field.get(buildInfo), field.getName() + " is null"); + } + //Opt所有字段不为空 + for (var optInfo : buildInfo.optcfg) { + for (var field : optInfo.getClass().getDeclaredFields()) { + field.setAccessible(true); + Assert.notNull(field.get(optInfo), field.getName() + " is null"); + } + } - } catch (AppException e) { - throw new RuntimeException(e); + } + } catch (AppException | IllegalAccessException e) { + log.info("init error", e); } } } diff --git a/src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java index b5299dc..43c6016 100644 --- a/src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java @@ -12,8 +12,6 @@ import a8k.app.hardware.driver.type.StepMotorMId; import a8k.app.service.param.OptModuleExtParamsMgr; import a8k.app.service.param.OptModuleParamsMgr; import a8k.app.dao.db.type.OptRawScanData; -import a8k.app.dao.db.type.ProjOptInfo; -import a8k.app.dao.db.type.ProjectBaseInfo; import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType; import a8k.app.a8ktype.device.IncubatorPos; import a8k.app.a8ktype.opttype.OptScanDirection; @@ -155,8 +153,8 @@ public class OptScanModuleCtrlService { OptScanResult result = new OptScanResult(); - OptRawScanData rawData = doOptScan(projBuildinInfo.projOptInfos.get(subProjIndex).optType); - OptAlgoAnalysResult analysResult = a8kOptAlgoV2.processOptData(projBuildinInfo, projBuildinInfo.projOptInfos.get(subProjIndex), rawData.rawData); + OptRawScanData rawData = doOptScan(projBuildinInfo.optcfg.get(subProjIndex).optType); + OptAlgoAnalysResult analysResult = a8kOptAlgoV2.processOptData(projBuildinInfo, projBuildinInfo.optcfg.get(subProjIndex), rawData.rawData); result.rawData = rawData; result.analysResult = analysResult; diff --git a/src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/PLATE_OPT_SCAN.java b/src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/PLATE_OPT_SCAN.java index ba37dfb..0026bdd 100644 --- a/src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/PLATE_OPT_SCAN.java +++ b/src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/PLATE_OPT_SCAN.java @@ -88,7 +88,7 @@ public class PLATE_OPT_SCAN extends A8kStepAction { } Integer subProjNum = cxt.getProjBuildinInfo().subProjNum; - Assert.isTrue(subProjNum == cxt.getProjBuildinInfo().projOptInfos.size(), "subProjNum != projOptInfoList.size"); + Assert.isTrue(subProjNum == cxt.getProjBuildinInfo().optcfg.size(), "subProjNum != projOptInfoList.size"); for (int i = 0; i < subProjNum; i++) { A8kOptType optType = cxt.getProjBuildinInfo().getOptType(i); diff --git a/src/main/java/a8k/app/utils/ProjBuildinInfo.java b/src/main/java/a8k/app/utils/ProjBuildinInfo.java index 632de4d..71460cf 100644 --- a/src/main/java/a8k/app/utils/ProjBuildinInfo.java +++ b/src/main/java/a8k/app/utils/ProjBuildinInfo.java @@ -1,6 +1,6 @@ package a8k.app.utils; -import a8k.app.dao.db.type.ProjOptInfo; +import a8k.app.dao.db.type.OptCfg; import a8k.app.dao.db.type.ProjectBaseInfo; import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType; import a8k.app.dao.db.type.a8kidcard.zenum.A8kReactionFlowType; @@ -40,18 +40,18 @@ public class ProjBuildinInfo implements Serializable { public Integer reactionPlateIncubationTimeMin; //反应板孵育时间Min public Integer reactionPlateDropletVolUl; //反应板滴样量ul - public List projOptInfos; + public List optcfg; public A8kOptType getOptType(Integer subProjIndex) { - for (ProjOptInfo projOptInfo : projOptInfos) { - if (projOptInfo.subProjIndex.equals(subProjIndex)) { - return projOptInfo.optType; + for (OptCfg optCfg : optcfg) { + if (optCfg.subProjIndex.equals(subProjIndex)) { + return optCfg.optType; } } return null; } - public ProjBuildinInfo(ProjectBaseInfo baseInfo, List optInfos) { + public ProjBuildinInfo(ProjectBaseInfo baseInfo, List optInfos) { //遍历所有ProjectBaseInfo字段,赋值给ProjBuildinInfo for (var field : baseInfo.getClass().getDeclaredFields()) { if (field.getName().equals("id")) { @@ -66,18 +66,18 @@ public class ProjBuildinInfo implements Serializable { System.exit(1); } } - projOptInfos = optInfos; + optcfg = optInfos; } public String getOptMark() { boolean optT = false; boolean optF = false; - for (ProjOptInfo projOptInfo : projOptInfos) { - if (projOptInfo.optType.equals(A8kOptType.TOPT)) { + for (OptCfg optCfg : optcfg) { + if (optCfg.optType.equals(A8kOptType.TOPT)) { optT = true; } - if (projOptInfo.optType.equals(A8kOptType.FOPT)) { + if (optCfg.optType.equals(A8kOptType.FOPT)) { optF = true; } } diff --git a/src/main/java/a8k/app/utils/ProjInfo.java b/src/main/java/a8k/app/utils/ProjInfo.java index 371f0ac..17c8fb1 100644 --- a/src/main/java/a8k/app/utils/ProjInfo.java +++ b/src/main/java/a8k/app/utils/ProjInfo.java @@ -1,11 +1,8 @@ package a8k.app.utils; import a8k.app.dao.db.type.ProjExtInfoCard; -import a8k.app.dao.db.type.ProjOptInfo; -import a8k.app.dao.db.type.ProjectBaseInfo; import java.io.Serializable; -import java.util.List; public class ProjInfo implements Serializable { public ProjBuildinInfo projBuildinInfo; diff --git a/src/main/java/a8k/app/utils/ZCSVUtils.java b/src/main/java/a8k/app/utils/ZCSVUtils.java index de090f3..acb86c9 100644 --- a/src/main/java/a8k/app/utils/ZCSVUtils.java +++ b/src/main/java/a8k/app/utils/ZCSVUtils.java @@ -1,16 +1,14 @@ package a8k.app.utils; -import a8k.app.dao.db.type.ProjOptInfo; +import a8k.app.dao.db.type.OptCfg; import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.text.csv.CsvReader; -import cn.hutool.core.text.csv.CsvRowHandler; import cn.hutool.core.text.csv.CsvUtil; import cn.hutool.core.text.csv.CsvWriter; import lombok.extern.slf4j.Slf4j; import java.io.File; -import java.io.StringReader; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @@ -80,20 +78,20 @@ public class ZCSVUtils { public static void main(String[] args) { // write demo - List objects = new ArrayList<>(); + List objects = new ArrayList<>(); for (int i = 0; i < 10; i++) { - ProjOptInfo projectBaseInfo = new ProjOptInfo(); + OptCfg projectBaseInfo = new OptCfg(); projectBaseInfo.projId = i; projectBaseInfo.projName = "projName" + i; objects.add(projectBaseInfo); } - writeCSV("tmp/tmp.csv", ProjOptInfo.class, objects); + writeCSV("tmp/tmp.csv", OptCfg.class, objects); // read demo - List projectBaseInfos = readCSV("tmp/tmp.csv", ProjOptInfo.class); + List projectBaseInfos = readCSV("tmp/tmp.csv", OptCfg.class); for (var projectBaseInfo : projectBaseInfos) { log.info("{}", ZJsonHelper.objectToJson(projectBaseInfo)); } diff --git a/src/main/java/a8k/extui/page/opt_calibration/A8kOptVerification.java b/src/main/java/a8k/extui/page/opt_calibration/A8kOptVerification.java index b29a2c3..1e5a9c7 100644 --- a/src/main/java/a8k/extui/page/opt_calibration/A8kOptVerification.java +++ b/src/main/java/a8k/extui/page/opt_calibration/A8kOptVerification.java @@ -18,9 +18,6 @@ import a8k.app.service.data.FileMgrService; import a8k.app.service.data.ProjInfoMgrService; import a8k.app.service.lowerctrl.OptScanModuleCtrlService; import a8k.app.service.lowerctrl.PlateBoxCtrlService; -import a8k.app.hardware.driver.StepMotorCtrlDriver; -import a8k.app.hardware.extdriver.MotorEnableExDriver; -import a8k.app.service.param.OptModuleExtParamsMgr; import a8k.extui.type.ret.A8kScanCurve; import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType; import a8k.app.a8ktype.device.ConsumableGroup; @@ -172,7 +169,7 @@ public class A8kOptVerification { report.optScanCurve = createScanCurve1200Point(optScanResult.rawData.rawData); report.optReportFilePath = fileMgrService.storageOptReport(info.projName, info.projId, subProjIndex, optScanResult); - report.optType = info.projOptInfos.get(subProjIndex).optType; + report.optType = info.optcfg.get(subProjIndex).optType; report.optScanResult = optScanResult; optScanReports.add(report); } @@ -191,8 +188,8 @@ public class A8kOptVerification { if (projInfo == null) { throw AppException.ofSimplePrompt("请先选择项目"); } - for (int i = 0; i < projInfo.projOptInfos.size(); i++) { - OptScanResult scanResult = getOptScanResult(projInfo.projOptInfos.get(i).optType); + for (int i = 0; i < projInfo.optcfg.size(); i++) { + OptScanResult scanResult = getOptScanResult(projInfo.optcfg.get(i).optType); if (scanResult == null) { scanResult = optScanModuleCtrlService.optScan(projInfo, i); } @@ -225,8 +222,8 @@ public class A8kOptVerification { } List results = new ArrayList<>(); - for (int i = 0; i < this.projInfo.projOptInfos.size(); i++) { - OptScanResult optScanResult = getOptScanResult(this.projInfo.projOptInfos.get(i).optType); + for (int i = 0; i < this.projInfo.optcfg.size(); i++) { + OptScanResult optScanResult = getOptScanResult(this.projInfo.optcfg.get(i).optType); Assert.notNull(optScanResult, "光学扫描结果为空"); results.add(A8kReactionResultComputer.optComputeResult(sampleInfo, projInfo, i, optScanResult.analysResult)); } diff --git a/src/main/java/a8k/extui/page/opt_calibration/OptFormulaTestPage.java b/src/main/java/a8k/extui/page/opt_calibration/OptFormulaTestPage.java index 36031fc..d2064c5 100644 --- a/src/main/java/a8k/extui/page/opt_calibration/OptFormulaTestPage.java +++ b/src/main/java/a8k/extui/page/opt_calibration/OptFormulaTestPage.java @@ -2,7 +2,6 @@ package a8k.extui.page.opt_calibration; import a8k.app.a8kproj.A8kReactionResultComputer; -import a8k.app.a8kproj.optalgo.type.A8kOptPeak; import a8k.app.a8kproj.optalgo.type.OptAlgoAnalysResult; import a8k.app.a8ktype.device.BloodType; import a8k.app.a8ktype.exception.AppException; @@ -81,7 +80,7 @@ public class OptFormulaTestPage { ProjInfo projInfoContext = getProjInfo(); - if (projInfoContext.projBuildinInfo.projOptInfos.size() <= optIndex) { + if (projInfoContext.projBuildinInfo.optcfg.size() <= optIndex) { throw AppException.of(A8kEcode.CODEERROR, "当前项目没有第%s个子项目", optIndex); } return A8kReactionResultComputer.optComputeResult(sampleInfo, projInfoContext, optIndex, optAlgoAnalysResult); diff --git a/src/main/java/a8k/extui/page/opt_calibration/OptFormulaTestPageV2.java b/src/main/java/a8k/extui/page/opt_calibration/OptFormulaTestPageV2.java index d6c479d..0524faa 100644 --- a/src/main/java/a8k/extui/page/opt_calibration/OptFormulaTestPageV2.java +++ b/src/main/java/a8k/extui/page/opt_calibration/OptFormulaTestPageV2.java @@ -23,7 +23,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import java.util.HashMap; -import java.util.List; import java.util.Map; @Component @@ -129,7 +128,7 @@ public class OptFormulaTestPageV2 { ProjInfo projInfoContext = getProjInfo(); A8kOptPeaks peaks = new A8kOptPeaks(); - PeakNameAssigner.assignPeakName(projInfoContext.projBuildinInfo.projId, projInfoContext.projBuildinInfo.projOptInfos.get(optIndex).peakNameRefNum, peaks); + PeakNameAssigner.assignPeakName(projInfoContext.projBuildinInfo.projId, projInfoContext.projBuildinInfo.optcfg.get(optIndex).peakNameRefNum, peaks); peaks.trySetPeakArea(PeakName.T4, T4Area); peaks.trySetPeakArea(PeakName.R, RArea); @@ -139,7 +138,7 @@ public class OptFormulaTestPageV2 { optAlgoAnalysResult = OptAlgoAnalysResult.build(new Integer[0], new double[0], peaks); - if (projInfoContext.projBuildinInfo.projOptInfos.size() <= optIndex) { + if (projInfoContext.projBuildinInfo.optcfg.size() <= optIndex) { throw AppException.of(A8kEcode.CODEERROR, "当前项目没有第%s个子项目", optIndex); } return A8kReactionResultComputer.optComputeResult(sampleInfo, projInfoContext, optIndex, optAlgoAnalysResult);