Browse Source

recode

tags/v0
zhaohe 7 months ago
parent
commit
03b09d3081
  1. 32
      src/main/java/a8k/app/a8kproj/fakeproj/FakeProjInfo.java
  2. 28
      src/main/java/a8k/app/a8kproj/fakeprojcontext/FakeProjInfoContextFactory.java
  3. 14
      src/main/java/a8k/app/a8kproj/optalgo/A8kOptAlgoV2.java
  4. 6
      src/main/java/a8k/app/a8kproj/optanalyzer/A8kOptXGetter.java
  5. 6
      src/main/java/a8k/app/a8kproj/optanalyzer/context/OptAnalyzeContext.java
  6. 15
      src/main/java/a8k/app/dao/db/ProjOptInfoDao.java
  7. 3
      src/main/java/a8k/app/dao/db/type/OptCfg.java
  8. 2
      src/main/java/a8k/app/factory/FakeReactionResultFactory.java
  9. 2
      src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java
  10. 30
      src/main/java/a8k/app/service/data/ProjInfoMgrService.java
  11. 6
      src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java
  12. 2
      src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/PLATE_OPT_SCAN.java
  13. 20
      src/main/java/a8k/app/utils/ProjBuildinInfo.java
  14. 3
      src/main/java/a8k/app/utils/ProjInfo.java
  15. 12
      src/main/java/a8k/app/utils/ZCSVUtils.java
  16. 13
      src/main/java/a8k/extui/page/opt_calibration/A8kOptVerification.java
  17. 3
      src/main/java/a8k/extui/page/opt_calibration/OptFormulaTestPage.java
  18. 5
      src/main/java/a8k/extui/page/opt_calibration/OptFormulaTestPageV2.java

32
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<ProjOptInfo> buildProjOptInfoList() {
List<ProjOptInfo> projOptInfoList = new ArrayList<>();
public List<OptCfg> buildProjOptInfoList() {
List<OptCfg> 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;
}

28
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<ProjOptInfo> projOptInfoList = new ArrayList<>();
List<OptCfg> 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;
}

14
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,16 +31,16 @@ 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.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);

6
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;

6
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() {

15
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<ProjOptInfo> {
public class ProjOptInfoDao extends ZSqlite<OptCfg> {
@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<ProjOptInfo> findByProjIndex(Integer projId) {
public List<OptCfg> findByProjIndex(Integer projId) {
return queryList("select * from " + tableName + " where projId = ?;", projId);
}
public void add(List<ProjOptInfo> vals) {
for (ProjOptInfo val : vals) {
public void add(List<OptCfg> vals) {
for (OptCfg val : vals) {
add(val);
}
}
public void add(ProjOptInfo val) {
public void add(OptCfg val) {
// checkVal(val);
super.add(val);
}

3
src/main/java/a8k/app/dao/db/type/ProjOptInfo.java → src/main/java/a8k/app/dao/db/type/OptCfg.java

@ -4,7 +4,7 @@ import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType;
import java.io.Serializable;
public class ProjOptInfo implements Serializable {
public class OptCfg implements Serializable {
public int id = 0;
public Integer projId; //项目INDEX
public String projName; //项目名称
@ -20,4 +20,5 @@ public class ProjOptInfo implements Serializable {
public Integer optScanPeakNum; //子项目 实际扫描到的峰的数量
public Integer peakNameRefNum; //子项目 峰的数量
}

2
src/main/java/a8k/app/factory/FakeReactionResultFactory.java

@ -11,7 +11,7 @@ public class FakeReactionResultFactory {
public static List<ReactionResult> build(ProjInfo projcfg) {
List<ReactionResult> 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);
}

2
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;
}

30
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);
}
}
}

6
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;

2
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);

20
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<ProjOptInfo> projOptInfos;
public List<OptCfg> 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<ProjOptInfo> optInfos) {
public ProjBuildinInfo(ProjectBaseInfo baseInfo, List<OptCfg> 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;
}
}

3
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;

12
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<ProjOptInfo> objects = new ArrayList<>();
List<OptCfg> 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<ProjOptInfo> projectBaseInfos = readCSV("tmp/tmp.csv", ProjOptInfo.class);
List<OptCfg> projectBaseInfos = readCSV("tmp/tmp.csv", OptCfg.class);
for (var projectBaseInfo : projectBaseInfos) {
log.info("{}", ZJsonHelper.objectToJson(projectBaseInfo));
}

13
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<ReactionResult> 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));
}

3
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);

5
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);

Loading…
Cancel
Save