Browse Source

重构部分代码

tags/v0
zhaohe 4 months ago
parent
commit
c39a76d70f
  1. 14
      src/main/java/a8k/app/a8kproj/A8kIdCardDataParseService.java
  2. 22
      src/main/java/a8k/app/a8kproj/optalgo/type/LineProcessContext.java
  3. 6
      src/main/java/a8k/app/a8kproj/optalgo/type/LinearResultSeq.java
  4. 9
      src/main/java/a8k/app/a8kproj/optalgo/type/OptAlgoError.java
  5. 5
      src/main/java/a8k/app/a8kproj/optalgo/type/OptCfg.java
  6. 7
      src/main/java/a8k/app/a8kproj/optalgo/type/OptProcessContext.java
  7. 32
      src/main/java/a8k/app/a8kproj/optalgo/utils/A8kOptAlgoUtils.java
  8. 38
      src/main/java/a8k/app/a8kproj/optalgo/utils/Filter.java
  9. 28
      src/main/java/a8k/app/a8kproj/optanalyzer/context/OptAnalyzeContext.java
  10. 6
      src/main/java/a8k/app/a8ktype/state/ProjectTaskContext.java
  11. 4
      src/main/java/a8k/app/a8ktype/type/ReactionResult.java
  12. 2
      src/main/java/a8k/app/dao/type/OptCfg.java
  13. 2
      src/main/java/a8k/app/dao/type/OptRawScanData.java
  14. 2
      src/main/java/a8k/app/dao/type/ProjExtInfoCard.java
  15. 2
      src/main/java/a8k/app/dao/type/ProjectBaseInfo.java
  16. 4
      src/main/java/a8k/app/dao/type/ReactionReport.java
  17. 6
      src/main/java/a8k/app/dao/type/a8kidcard/zenum/A8kOptType.java
  18. 2
      src/main/java/a8k/app/hardware/driver/OptModuleDriver.java
  19. 2
      src/main/java/a8k/app/hardware/utils/OptGainConvert.java
  20. 33
      src/main/java/a8k/app/optalgo/A8kOptCurveAnalyzer.java
  21. 122
      src/main/java/a8k/app/optalgo/A8kPeakAnalyzer.java
  22. 8
      src/main/java/a8k/app/optalgo/README.md
  23. 2
      src/main/java/a8k/app/optalgo/algo/BasicAlgo.java
  24. 4
      src/main/java/a8k/app/optalgo/algo/LeastSquare.java
  25. 2
      src/main/java/a8k/app/optalgo/algo/SubSampling.java
  26. 2
      src/main/java/a8k/app/optalgo/algo/SupperSampling.java
  27. 4
      src/main/java/a8k/app/optalgo/type/A8kOptPeak.java
  28. 25
      src/main/java/a8k/app/optalgo/type/A8kOptPeakInfo.java
  29. 3
      src/main/java/a8k/app/optalgo/type/A8kOptPeaks.java
  30. 4
      src/main/java/a8k/app/optalgo/type/A8kOptProcessException.java
  31. 2
      src/main/java/a8k/app/optalgo/type/A8kOptX.java
  32. 2
      src/main/java/a8k/app/optalgo/type/LinearResult.java
  33. 2
      src/main/java/a8k/app/optalgo/type/OptScanDirection.java
  34. 6
      src/main/java/a8k/app/optalgo/type/OptScanResult.java
  35. 2
      src/main/java/a8k/app/optalgo/type/PeakDivision.java
  36. 2
      src/main/java/a8k/app/optalgo/type/PeakFindState.java
  37. 2
      src/main/java/a8k/app/optalgo/type/PeakName.java
  38. 2
      src/main/java/a8k/app/optalgo/type/ReactionResultStatus.java
  39. 4
      src/main/java/a8k/app/optalgo/type/a8kidcard/A8kNormalFn.java
  40. 4
      src/main/java/a8k/app/optalgo/type/a8kidcard/A8kOptFnFormula.java
  41. 4
      src/main/java/a8k/app/optalgo/type/a8kidcard/A8kPiecewiseFn.java
  42. 4
      src/main/java/a8k/app/optalgo/type/a8kidcard/A8kResultBuilderFn.java
  43. 4
      src/main/java/a8k/app/optalgo/type/a8kidcard/A8kResultUnitConverter.java
  44. 2
      src/main/java/a8k/app/optalgo/type/a8kidcard/zenum/A8kFnType.java
  45. 6
      src/main/java/a8k/app/optalgo/type/a8kidcard/zenum/A8kOptType.java
  46. 2
      src/main/java/a8k/app/optalgo/type/a8kidcard/zenum/A8kReactionFlowType.java
  47. 2
      src/main/java/a8k/app/optalgo/type/a8kidcard/zenum/A8kResultUnit.java
  48. 2
      src/main/java/a8k/app/optalgo/utils/A8kOptGainAdjuster.java
  49. 37
      src/main/java/a8k/app/optalgo/utils/A8kOptPeakInfoBuilder.java
  50. 34
      src/main/java/a8k/app/optalgo/utils/A8kOptXGetter.java
  51. 16
      src/main/java/a8k/app/optalgo/utils/OptChecker.java
  52. 11
      src/main/java/a8k/app/optalgo/utils/PeakDivisionComputer.java
  53. 6
      src/main/java/a8k/app/optalgo/utils/PeakNameAssigner.java
  54. 2
      src/main/java/a8k/app/optalgo/version/OptAlogVersion.java
  55. 44
      src/main/java/a8k/app/service/data/FileMgrService.java
  56. 14
      src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java
  57. 2
      src/main/java/a8k/app/service/data/ReactionRecordMgrService.java
  58. 18
      src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java
  59. 2
      src/main/java/a8k/app/service/mainctrl/AppConsumablesScanService.java
  60. 8
      src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/AC20ScanReactionPlate.java
  61. 2
      src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/AC41ProcessSample.java
  62. 2
      src/main/java/a8k/app/service/param/optparam/OptModuleExtParamsMgr.java
  63. 4
      src/main/java/a8k/app/utils/ProjBuildinInfo.java
  64. 2
      src/main/java/a8k/app/utils/ProjInfoUtils.java
  65. 42
      src/main/java/a8k/extui/factory/FakeOptScanResultFactory.java
  66. 10
      src/main/java/a8k/extui/factory/ProjExtInfoCardFactory.java
  67. 8
      src/main/java/a8k/extui/page/extapp/A8kOptVerification.java
  68. 8
      src/main/java/a8k/extui/page/extapp/OptFullFlowVerificationPage.java
  69. 2
      src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java
  70. 10
      src/main/java/a8k/extui/page/extapp/debug_assistant/FakeReactionRecordGeneratorPage.java
  71. 4
      src/main/java/a8k/extui/page/extapp/debug_assistant/FakeStateGeneratorPage.java
  72. 4
      src/main/java/a8k/extui/page/extsetting/db/ReactionRecordMgrDebugPage.java
  73. 8
      src/main/java/a8k/extui/page/test/codetest/OptFormulaTestPage.java
  74. 19
      src/main/java/a8k/extui/page/test/codetest/OptFormulaTestPageV2.java
  75. 8
      src/main/java/a8k/extui/page/test/verification/P51FullFlowVerificationPage.java

14
src/main/java/a8k/app/a8kproj/A8kIdCardDataParseService.java

@ -1,15 +1,15 @@
package a8k.app.a8kproj;
import a8k.app.dao.ProjectBaseInfoDao;
import a8k.app.dao.type.a8kidcard.A8kNormalFn;
import a8k.app.optalgo.type.a8kidcard.A8kNormalFn;
import a8k.app.hardware.type.a8kcanprotocol.A8kEcode;
import a8k.app.a8ktype.opttype.A8kOptX;
import a8k.app.optalgo.type.A8kOptX;
import a8k.app.dao.type.ProjectBaseInfo;
import a8k.app.dao.type.a8kidcard.A8kPiecewiseFn;
import a8k.app.dao.type.a8kidcard.A8kResultBuilderFn;
import a8k.app.dao.type.a8kidcard.zenum.A8kFnType;
import a8k.app.dao.type.a8kidcard.zenum.A8kResultUnit;
import a8k.app.dao.type.a8kidcard.A8kOptFnFormula;
import a8k.app.optalgo.type.a8kidcard.A8kPiecewiseFn;
import a8k.app.optalgo.type.a8kidcard.A8kResultBuilderFn;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kFnType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kResultUnit;
import a8k.app.optalgo.type.a8kidcard.A8kOptFnFormula;
import a8k.app.dao.type.ProjExtInfoCard;
import a8k.app.a8ktype.error.AppError;
import a8k.app.a8ktype.exception.AppException;

22
src/main/java/a8k/app/a8kproj/optalgo/type/LineProcessContext.java

@ -1,22 +0,0 @@
package a8k.app.a8kproj.optalgo.type;
public class LineProcessContext {
//过采样6000
public double[] afSupperVal;
//中值滤波6000
public double[] afSupperMedianVal;
//下采样到1000个点
public double[] raw1000;
//生成1000个的平滑曲线
public double[] avg1000;
//生成1000个的斜率曲线
public double[] diff1000;
//求数据的均值(巴迪泰A5000算法)
public double avgLine;
//在曲线开始的位置第10个到15点的斜率
public double baselineSlope;
}

6
src/main/java/a8k/app/a8kproj/optalgo/type/LinearResultSeq.java

@ -1,6 +0,0 @@
package a8k.app.a8kproj.optalgo.type;
public class LinearResultSeq {
public Float[] slope;
public Float intercept;
}

9
src/main/java/a8k/app/a8kproj/optalgo/type/OptAlgoError.java

@ -1,9 +0,0 @@
package a8k.app.a8kproj.optalgo.type;
public enum OptAlgoError {
Success,
LostPeak,
LostPeakStart,
LostPeakEnd,
}

5
src/main/java/a8k/app/a8kproj/optalgo/type/OptCfg.java

@ -1,5 +0,0 @@
package a8k.app.a8kproj.optalgo.type;
public class OptCfg {
public Integer peakNum;
}

7
src/main/java/a8k/app/a8kproj/optalgo/type/OptProcessContext.java

@ -1,7 +0,0 @@
package a8k.app.a8kproj.optalgo.type;
public class OptProcessContext {
Double[] supperVal; //超采样1200*5=6000
Double[] supperMedianVal; //supper_val,窗口平滑滤波,6000
Double[] supperSmoothSubVal; //supper_smooth_val 均值压缩6000/24=25
}

32
src/main/java/a8k/app/a8kproj/optalgo/utils/A8kOptAlgoUtils.java

@ -1,32 +0,0 @@
package a8k.app.a8kproj.optalgo.utils;
public class A8kOptAlgoUtils {
static public Integer[] supperSamplingAndSubSampling(Integer[] data) {
double[] indata = new double[data.length];
for (int i = 0; i < data.length; i++) {
indata[i] = data[i];
}
var result = supperSamplingAndSubSampling(indata);
Integer[] outdata = new Integer[result.length];
for (int i = 0; i < result.length; i++) {
outdata[i] = (int) result[i];
}
return outdata;
}
static public double[] supperSamplingAndSubSampling(double[] data) {
//过采样
var afSupperVal = SupperSampling.process(data, 5);
//中值滤波
var afSupperMedianVal = Filter.medianFiltering(afSupperVal, 25);
//下采样到1000个点
var raw1000 = SubSampling.process(afSupperMedianVal, 6);
//生成1000个的平滑曲线
var avg1000 = Filter.smooth(raw1000, 13);
return SubSampling.process(avg1000, 4);
}
}

38
src/main/java/a8k/app/a8kproj/optalgo/utils/Filter.java

@ -1,38 +0,0 @@
package a8k.app.a8kproj.optalgo.utils;
public class Filter {
static public double[] medianFiltering(double[] inputRaw, int windows_size) {
double[] medianRaw = new double[inputRaw.length];
double[] windows = new double[windows_size];
int windows_size_half = (windows_size - 1) / 2;
for (int index = windows_size_half; index < inputRaw.length - windows_size_half; index++) {
System.arraycopy(inputRaw, index - windows_size_half, windows, 0, windows_size);
BasicAlgo.bubbleSort(windows); // 从小到大顺序排序
medianRaw[index] = windows[windows_size_half + 1];
}
BasicAlgo.padArraryAfWindowsAlgo(medianRaw, windows_size);
return medianRaw;
}
static public double[] smooth(double[] inputRaw, int windows_size) {
double[] smoothRaw = new double[inputRaw.length];
int windows_size_half = (windows_size - 1) / 2;
for (int index = windows_size_half; index < inputRaw.length - windows_size_half; index++) {
double sum = 0;
for (int i = index - windows_size_half; i <= index + windows_size_half; i++) {
sum += inputRaw[i];
}
smoothRaw[index] = sum / windows_size;
}
BasicAlgo.padArraryAfWindowsAlgo(smoothRaw, windows_size);
return smoothRaw;
}
}

28
src/main/java/a8k/app/a8kproj/optanalyzer/context/OptAnalyzeContext.java

@ -1,28 +0,0 @@
package a8k.app.a8kproj.optanalyzer.context;
import a8k.app.a8ktype.state.SampleInfo;
import a8k.app.dao.type.OptCfg;
import a8k.app.utils.ProjInfo;
public class OptAnalyzeContext {
public SampleInfo sampleInfo;
public ProjInfo projInfoCxt;
public int subProjIndex;
public OptAnalyzeContext(SampleInfo sampleInfo, ProjInfo projInfoCxt, int subProjIndex) {
this.sampleInfo = sampleInfo;
this.projInfoCxt = projInfoCxt;
this.subProjIndex = subProjIndex;
}
public OptCfg getProjOptInfo() {
return projInfoCxt.buildIn.optcfg.get(subProjIndex);
}
public String getProjName() {
return projInfoCxt.buildIn.projName;
}
}

6
src/main/java/a8k/app/a8ktype/state/ProjectTaskContext.java

@ -1,12 +1,12 @@
package a8k.app.a8ktype.state;
import a8k.SpringBootBeanUtil;
import a8k.app.a8kproj.optalgo.type.OptScanResult;
import a8k.app.optalgo.type.OptScanResult;
import a8k.app.a8ktype.device.*;
import a8k.app.a8ktype.param.type.A8kSamplePos;
import a8k.app.dao.type.ProjExtInfoCard;
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType;
import a8k.app.dao.type.a8kidcard.zenum.A8kReactionFlowType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kOptType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kReactionFlowType;
import a8k.app.service.exparam.HbotConsumableExParamMgr;
import a8k.app.utils.ProjBuildinInfo;
import a8k.app.utils.ProjInfoReader;

4
src/main/java/a8k/app/a8ktype/type/ReactionResult.java

@ -1,7 +1,7 @@
package a8k.app.a8ktype.type;
import a8k.app.dao.type.a8kidcard.A8kResultUnitConverter;
import a8k.app.a8ktype.opttype.ReactionResultStatus;
import a8k.app.optalgo.type.a8kidcard.A8kResultUnitConverter;
import a8k.app.optalgo.type.ReactionResultStatus;
import a8k.app.utils.ZJsonHelper;
import io.swagger.v3.oas.annotations.media.Schema;

2
src/main/java/a8k/app/dao/type/OptCfg.java

@ -1,6 +1,6 @@
package a8k.app.dao.type;
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kOptType;
import java.io.Serializable;

2
src/main/java/a8k/app/dao/type/OptRawScanData.java

@ -1,6 +1,6 @@
package a8k.app.dao.type;
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kOptType;
import a8k.app.utils.ZJsonHelper;
public class OptRawScanData {

2
src/main/java/a8k/app/dao/type/ProjExtInfoCard.java

@ -1,6 +1,6 @@
package a8k.app.dao.type;
import a8k.app.dao.type.a8kidcard.A8kOptFnFormula;
import a8k.app.optalgo.type.a8kidcard.A8kOptFnFormula;
import a8k.app.utils.ZDateUtils;
import com.fasterxml.jackson.databind.ObjectMapper;

2
src/main/java/a8k/app/dao/type/ProjectBaseInfo.java

@ -1,6 +1,6 @@
package a8k.app.dao.type;
import a8k.app.dao.type.a8kidcard.zenum.A8kReactionFlowType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kReactionFlowType;
import a8k.app.utils.ZJsonHelper;
import java.io.Serializable;

4
src/main/java/a8k/app/dao/type/ReactionReport.java

@ -1,9 +1,9 @@
package a8k.app.dao.type;
import a8k.app.a8kproj.optalgo.type.OptScanResult;
import a8k.app.optalgo.type.OptScanResult;
import a8k.app.a8ktype.type.ReactionResult;
import a8k.app.a8ktype.device.BloodType;
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kOptType;
import a8k.app.utils.ProjInfo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;

6
src/main/java/a8k/app/dao/type/a8kidcard/zenum/A8kOptType.java

@ -1,6 +0,0 @@
package a8k.app.dao.type.a8kidcard.zenum;
public enum A8kOptType {
FOPT,
TOPT,
}

2
src/main/java/a8k/app/hardware/driver/OptModuleDriver.java

@ -8,7 +8,7 @@ import a8k.app.hardware.type.a8kcanprotocol.CmdId;
import a8k.app.hardware.type.a8kcanprotocol.MId;
import a8k.app.hardware.type.a8kcanprotocol.ModuleStatus;
import a8k.app.hardware.driver.type.OptModuleRegIndex;
import a8k.app.a8ktype.opttype.OptScanDirection;
import a8k.app.optalgo.type.OptScanDirection;
import a8k.app.a8ktype.error.AEHardwareError;
import a8k.app.a8ktype.exception.AppException;
import a8k.app.utils.ByteArray;

2
src/main/java/a8k/app/hardware/utils/OptGainConvert.java

@ -1,6 +1,6 @@
package a8k.app.hardware.utils;
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kOptType;
public class OptGainConvert {

33
src/main/java/a8k/app/a8kproj/optalgo/A8kOptAlgoV2.java → src/main/java/a8k/app/optalgo/A8kOptCurveAnalyzer.java

@ -1,15 +1,16 @@
package a8k.app.a8kproj.optalgo;
package a8k.app.optalgo;
import a8k.app.a8kproj.optalgo.type.*;
import a8k.app.a8kproj.optalgo.utils.*;
import a8k.app.a8kproj.optanalyzer.PeakNameAssigner;
import a8k.app.optalgo.algo.LeastSquare;
import a8k.app.optalgo.algo.SubSampling;
import a8k.app.optalgo.algo.SupperSampling;
import a8k.app.optalgo.type.*;
import a8k.app.optalgo.utils.*;
import a8k.app.dao.type.OptCfg;
import a8k.app.utils.ProjBuildinInfo;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class A8kOptAlgoV2 {
public class A8kOptCurveAnalyzer {
double[] avg;
double[] diffx2;
double[] diff;
@ -19,22 +20,22 @@ public class A8kOptAlgoV2 {
Integer[] rawData;
ProjBuildinInfo projInfo;
OptCfg optCfg;
OptCfg optCfg;
Integer projId;
public OptAlgoAnalysResult processOptData(ProjBuildinInfo projInfo, OptCfg optCfg, Integer[] data) {
public A8kOptPeakInfo analysCurve(Integer projId, 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.optCfg = optCfg;
this.rawData = data;
return processOptData(doubleData);
this.optCfg = optCfg;
this.rawData = data;
this.projId = projId;
return analysCurve(doubleData);
}
private OptAlgoAnalysResult processOptData(double[] data) {
private A8kOptPeakInfo analysCurve(double[] data) {
//过采样
@ -55,10 +56,10 @@ public class A8kOptAlgoV2 {
findpeak(avg, 140, 180, peaks.P160);
findpeak(avg, 180, 220, peaks.P200);
PeakNameAssigner.assignPeakName(projInfo.projId, optCfg.peakNameRefNum, peaks);
PeakNameAssigner.assignPeakName(projId, optCfg.peakNameRefNum, peaks);
return OptAlgoAnalysResult.build(afSubSampling, peaks);
return A8kOptPeakInfoBuilder.build(afSubSampling, peaks);
}
double findAvgLine(double[] inputRaw) {

122
src/main/java/a8k/app/a8kproj/A8kReactionResultComputer.java → src/main/java/a8k/app/optalgo/A8kPeakAnalyzer.java

@ -1,18 +1,18 @@
package a8k.app.a8kproj;
package a8k.app.optalgo;
import a8k.app.a8kproj.optalgo.type.OptAlgoAnalysResult;
import a8k.app.a8kproj.optanalyzer.A8kOptXGetter;
import a8k.app.a8kproj.optanalyzer.OptChecker;
import a8k.app.a8kproj.optanalyzer.context.OptAnalyzeContext;
import a8k.app.a8kproj.optanalyzer.exception.A8kOptProcessException;
import a8k.app.dao.type.OptCfg;
import a8k.app.optalgo.type.A8kOptPeakInfo;
import a8k.app.optalgo.type.A8kOptProcessException;
import a8k.app.a8ktype.state.SampleInfo;
import a8k.app.dao.type.a8kidcard.A8kNormalFn;
import a8k.app.dao.type.a8kidcard.A8kOptFnFormula;
import a8k.app.dao.type.a8kidcard.A8kPiecewiseFn;
import a8k.app.dao.type.a8kidcard.A8kResultBuilderFn;
import a8k.app.dao.type.a8kidcard.zenum.A8kFnType;
import a8k.app.optalgo.type.a8kidcard.A8kNormalFn;
import a8k.app.optalgo.type.a8kidcard.A8kOptFnFormula;
import a8k.app.optalgo.type.a8kidcard.A8kPiecewiseFn;
import a8k.app.optalgo.type.a8kidcard.A8kResultBuilderFn;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kFnType;
import a8k.app.a8ktype.type.ReactionResult;
import a8k.app.a8ktype.opttype.ReactionResultStatus;
import a8k.app.optalgo.type.ReactionResultStatus;
import a8k.app.optalgo.utils.A8kOptXGetter;
import a8k.app.optalgo.utils.OptChecker;
import a8k.app.utils.ProjInfo;
import a8k.app.utils.ProjInfoUtils;
import a8k.app.utils.ZloggerRecorder;
@ -27,9 +27,60 @@ import org.springframework.util.Assert;
//
@Slf4j
public class A8kReactionResultComputer {
public class A8kPeakAnalyzer {
static ZloggerRecorder zloggerRecorder = new ZloggerRecorder(LoggerFactory.getLogger(A8kReactionResultComputer.class));
static public class OptAnalyzeContext {
public SampleInfo sampleInfo;
public ProjInfo projInfoCxt;
public int subProjIndex;
public OptAnalyzeContext(SampleInfo sampleInfo, ProjInfo projInfoCxt, int subProjIndex) {
this.sampleInfo = sampleInfo;
this.projInfoCxt = projInfoCxt;
this.subProjIndex = subProjIndex;
}
public OptCfg getProjOptInfo() {
return projInfoCxt.buildIn.optcfg.get(subProjIndex);
}
public String getProjName() {
return projInfoCxt.buildIn.projName;
}
}
//
// PUBLIC
//
static public ReactionResult analysisPeakInfo(SampleInfo sampleInfo, ProjInfo projInfoCxt, int subProjIndex, A8kOptPeakInfo a8kOptPeakInfo) {
zloggerRecorder.clear();
zloggerRecorder.info("================OPT COMPUTE RESULT=============");
zloggerRecorder.info("optComputeResult:%s proj:%s(%s) sub-proj:%s", sampleInfo.sampleId, projInfoCxt.buildIn.projId, projInfoCxt.buildIn.projName, subProjIndex);
OptAnalyzeContext optAnalyzeContext = new OptAnalyzeContext(sampleInfo, projInfoCxt, subProjIndex);
try {
return analyzeResult(optAnalyzeContext, a8kOptPeakInfo);
} catch (A8kOptProcessException e) {
zloggerRecorder.error("optComputeResult fail:%s,%s ", e.status, e.errorMsg);
return new ReactionResult(optAnalyzeContext.getProjOptInfo().subProjName, optAnalyzeContext.getProjOptInfo().subProjShortName, e.status, e.errorMsg);
}
}
static public String getComputeContext() {
return zloggerRecorder.getRecord();
}
//
// PRIVATE
//
static ZloggerRecorder zloggerRecorder = new ZloggerRecorder(LoggerFactory.getLogger(A8kPeakAnalyzer.class));
static String fmt(Double val) {
return val == null ? "null" : String.format("%.5f", val);
@ -78,7 +129,7 @@ public class A8kReactionResultComputer {
//普通函数
static Double callNorFn(OptAnalyzeContext optcxt, A8kNormalFn fn, OptAlgoAnalysResult optAlgoAnalysResult) throws A8kOptProcessException {
static Double callNorFn(OptAnalyzeContext optcxt, A8kNormalFn fn, A8kOptPeakInfo a8kOptPeakInfo) throws A8kOptProcessException {
zloggerRecorder.info("==========NormalFn==========");
zloggerRecorder.info("-XType : %s", fn.x);
zloggerRecorder.info("-Fromula : Y = %sX^2+%sX+%s", fmt(fn.A), fmt(fn.B), fmt(fn.C));
@ -86,7 +137,7 @@ public class A8kReactionResultComputer {
zloggerRecorder.info("-ResultRange: [%s:%s]", fmt(fn.lowLimit), fmt(fn.upLimit));
zloggerRecorder.info("-==========Result==========");
Double X = A8kOptXGetter.getX(fn.x, optcxt.getProjOptInfo(), optAlgoAnalysResult);
Double X = A8kOptXGetter.getX(fn.x, optcxt.getProjOptInfo(), a8kOptPeakInfo);
zloggerRecorder.info("-Result:X = %s", fmt(X));
OptChecker.checkX(X, fn.xMin, fn.xMax);
@ -98,7 +149,7 @@ public class A8kReactionResultComputer {
// 分段函数系数
static Double callPiecewiseFn(OptAnalyzeContext optcxt, A8kPiecewiseFn fn, OptAlgoAnalysResult optAlgoAnalysResult) throws A8kOptProcessException {
static Double callPiecewiseFn(OptAnalyzeContext optcxt, A8kPiecewiseFn fn, A8kOptPeakInfo a8kOptPeakInfo) throws A8kOptProcessException {
zloggerRecorder.info("==========PiecewiseFn==========");
zloggerRecorder.info("+JudeX :%s", fn.judeX);
zloggerRecorder.info("+JudeThres :%s", fmt(fn.judeThres));
@ -110,15 +161,15 @@ public class A8kReactionResultComputer {
zloggerRecorder.info("+ResultRange : [%s:%s]", fmt(fn.lowLimit), fmt(fn.upLimit));
Double pwFnJudeX = A8kOptXGetter.getX(fn.judeX, optcxt.getProjOptInfo(), optAlgoAnalysResult);
Double pwFnJudeX = A8kOptXGetter.getX(fn.judeX, optcxt.getProjOptInfo(), a8kOptPeakInfo);
Double X = null;
Double result1 = null;
boolean isHX = false;
if (pwFnJudeX < fn.judeThres) {
X = A8kOptXGetter.getX(fn.lX, optcxt.getProjOptInfo(), optAlgoAnalysResult);
X = A8kOptXGetter.getX(fn.lX, optcxt.getProjOptInfo(), a8kOptPeakInfo);
result1 = fn.A0 * X * X * X + fn.B0 * X * X + fn.C0 * X + fn.D0;
} else {
X = A8kOptXGetter.getX(fn.hX, optcxt.getProjOptInfo(), optAlgoAnalysResult);
X = A8kOptXGetter.getX(fn.hX, optcxt.getProjOptInfo(), a8kOptPeakInfo);
result1 = fn.A1 * X * X * X + fn.B1 * X * X + fn.C1 * X + fn.D1;
isHX = true;
}
@ -136,49 +187,32 @@ public class A8kReactionResultComputer {
static ReactionResult buildResult(OptAnalyzeContext optcxt, A8kResultBuilderFn fn, Double result1) {
Assert.isTrue(result1 != null, "result1 must not be null");
Double result2 = compute2ndResult(fn, result1);
Double result3 = compute3rdResult(fn, result1);
Double result2 = compute2ndResult(fn, result1);
Double result3 = compute3rdResult(fn, result1);
ReactionResult reactionResult = new ReactionResult(optcxt.getProjOptInfo().subProjName, optcxt.getProjOptInfo().subProjShortName, result1, fn.toResultUnitConverters());
reactionResult.status = ReactionResultStatus.SUCCESS;
return reactionResult;
}
static private ReactionResult analyzeResult(OptAnalyzeContext optcxt, OptAlgoAnalysResult optAlgoAnalysResult) throws A8kOptProcessException {
static private ReactionResult analyzeResult(OptAnalyzeContext optcxt, A8kOptPeakInfo a8kOptPeakInfo) throws A8kOptProcessException {
// A8kOptFnFormula fnFormual = optcxt.projInfoCxt.getA8kOptFnFormula(optcxt.subProjIndex);
A8kOptFnFormula fnFormual = ProjInfoUtils.getA8kOptFnFormula(optcxt.projInfoCxt.ext, optcxt.subProjIndex);
Assert.isTrue(fnFormual != null, "fnFormual must not be null");
Double result1 = null;
if (fnFormual.fnType.equals(A8kFnType.NormalFn)) {
result1 = switch (optcxt.sampleInfo.bloodType) {
case WHOLE_BLOOD -> callNorFn(optcxt, fnFormual.bloodNorFn, optAlgoAnalysResult);
case SERUM_OR_PLASMA -> callNorFn(optcxt, fnFormual.serumNorFn, optAlgoAnalysResult);
case WHOLE_BLOOD -> callNorFn(optcxt, fnFormual.bloodNorFn, a8kOptPeakInfo);
case SERUM_OR_PLASMA -> callNorFn(optcxt, fnFormual.serumNorFn, a8kOptPeakInfo);
};
} else if (fnFormual.fnType.equals(A8kFnType.PiecewiseFn)) {
result1 = switch (optcxt.sampleInfo.bloodType) {
case WHOLE_BLOOD -> callPiecewiseFn(optcxt, fnFormual.bloodPiecewiseFn, optAlgoAnalysResult);
case SERUM_OR_PLASMA -> callPiecewiseFn(optcxt, fnFormual.serumPiecewiseFn, optAlgoAnalysResult);
case WHOLE_BLOOD -> callPiecewiseFn(optcxt, fnFormual.bloodPiecewiseFn, a8kOptPeakInfo);
case SERUM_OR_PLASMA -> callPiecewiseFn(optcxt, fnFormual.serumPiecewiseFn, a8kOptPeakInfo);
};
}
return buildResult(optcxt, fnFormual.resultBuilderFn, result1);
}
static public ReactionResult optComputeResult(SampleInfo sampleInfo, ProjInfo projInfoCxt, int subProjIndex, OptAlgoAnalysResult optAlgoAnalysResult) {
zloggerRecorder.clear();
zloggerRecorder.info("================OPT COMPUTE RESULT=============");
zloggerRecorder.info("optComputeResult:%s proj:%s(%s) sub-proj:%s", sampleInfo.sampleId, projInfoCxt.buildIn.projId, projInfoCxt.buildIn.projName, subProjIndex);
OptAnalyzeContext optAnalyzeContext = new OptAnalyzeContext(sampleInfo, projInfoCxt, subProjIndex);
try {
return analyzeResult(optAnalyzeContext, optAlgoAnalysResult);
} catch (A8kOptProcessException e) {
zloggerRecorder.error("optComputeResult fail:%s,%s ", e.status, e.errorMsg);
return new ReactionResult(optAnalyzeContext.getProjOptInfo().subProjName, optAnalyzeContext.getProjOptInfo().subProjShortName, e.status, e.errorMsg);
}
}
static public String getComputeContext() {
return zloggerRecorder.getRecord();
}
}

8
src/main/java/a8k/app/optalgo/README.md

@ -0,0 +1,8 @@
```angular2html
1. 该目录为巴迪泰光学算法相关内容
2. 入口类为Ak8OptAlgoV2
3. utils部分工具也可以使用
4. 不包含任何Component
```

2
src/main/java/a8k/app/a8kproj/optalgo/utils/BasicAlgo.java → src/main/java/a8k/app/optalgo/algo/BasicAlgo.java

@ -1,4 +1,4 @@
package a8k.app.a8kproj.optalgo.utils;
package a8k.app.optalgo.algo;
import org.springframework.util.Assert;

4
src/main/java/a8k/app/a8kproj/optalgo/utils/LeastSquare.java → src/main/java/a8k/app/optalgo/algo/LeastSquare.java

@ -1,6 +1,6 @@
package a8k.app.a8kproj.optalgo.utils;
package a8k.app.optalgo.algo;
import a8k.app.a8kproj.optalgo.type.LinearResult;
import a8k.app.optalgo.type.LinearResult;
import org.springframework.util.Assert;
public class LeastSquare {

2
src/main/java/a8k/app/a8kproj/optalgo/utils/SubSampling.java → src/main/java/a8k/app/optalgo/algo/SubSampling.java

@ -1,4 +1,4 @@
package a8k.app.a8kproj.optalgo.utils;
package a8k.app.optalgo.algo;
public class SubSampling {
public static double[] process(double[] inputRaw, int nSubSampleRate) {

2
src/main/java/a8k/app/a8kproj/optalgo/utils/SupperSampling.java → src/main/java/a8k/app/optalgo/algo/SupperSampling.java

@ -1,4 +1,4 @@
package a8k.app.a8kproj.optalgo.utils;
package a8k.app.optalgo.algo;
public class SupperSampling {
static public double[] process(double[] inputRaw, Integer nUpSampleRate) {

4
src/main/java/a8k/app/a8kproj/optalgo/type/A8kOptPeak.java → src/main/java/a8k/app/optalgo/type/A8kOptPeak.java

@ -1,6 +1,4 @@
package a8k.app.a8kproj.optalgo.type;
import a8k.app.a8ktype.opttype.PeakName;
package a8k.app.optalgo.type;
public class A8kOptPeak {
public PeakFindState state = PeakFindState.NOT_FIND_PEAK;

25
src/main/java/a8k/app/optalgo/type/A8kOptPeakInfo.java

@ -0,0 +1,25 @@
package a8k.app.optalgo.type;
public class A8kOptPeakInfo {
public String algoVersion = "";
public double[] resultData; // 250 POINT
public A8kOptPeak T4;
public A8kOptPeak R;
public A8kOptPeak H;
public A8kOptPeak T;
public A8kOptPeak C;
public Double pdR; //1
public Double pdAR; //2
public Double pdATR; //3
public Double pdRFR; //5
public Double pdT4R; //6
public Double pdT4T3R; //7
}

3
src/main/java/a8k/app/a8kproj/optalgo/type/A8kOptPeaks.java → src/main/java/a8k/app/optalgo/type/A8kOptPeaks.java

@ -1,6 +1,5 @@
package a8k.app.a8kproj.optalgo.type;
package a8k.app.optalgo.type;
import a8k.app.a8ktype.opttype.PeakName;
import org.springframework.util.Assert;
public class A8kOptPeaks {

4
src/main/java/a8k/app/a8kproj/optanalyzer/exception/A8kOptProcessException.java → src/main/java/a8k/app/optalgo/type/A8kOptProcessException.java

@ -1,6 +1,4 @@
package a8k.app.a8kproj.optanalyzer.exception;
import a8k.app.a8ktype.opttype.ReactionResultStatus;
package a8k.app.optalgo.type;
public class A8kOptProcessException extends Exception {
public ReactionResultStatus status = ReactionResultStatus.SUCCESS;

2
src/main/java/a8k/app/a8ktype/opttype/A8kOptX.java → src/main/java/a8k/app/optalgo/type/A8kOptX.java

@ -1,4 +1,4 @@
package a8k.app.a8ktype.opttype;
package a8k.app.optalgo.type;
public enum A8kOptX {
USUPPORT,

2
src/main/java/a8k/app/a8kproj/optalgo/type/LinearResult.java → src/main/java/a8k/app/optalgo/type/LinearResult.java

@ -1,4 +1,4 @@
package a8k.app.a8kproj.optalgo.type;
package a8k.app.optalgo.type;
public class LinearResult {
public double slope;

2
src/main/java/a8k/app/a8ktype/opttype/OptScanDirection.java → src/main/java/a8k/app/optalgo/type/OptScanDirection.java

@ -1,4 +1,4 @@
package a8k.app.a8ktype.opttype;
package a8k.app.optalgo.type;
public enum OptScanDirection {
FORWARD, //从左向右扫描

6
src/main/java/a8k/app/a8kproj/optalgo/type/OptScanResult.java → src/main/java/a8k/app/optalgo/type/OptScanResult.java

@ -1,4 +1,4 @@
package a8k.app.a8kproj.optalgo.type;
package a8k.app.optalgo.type;
import a8k.app.dao.type.OptRawScanData;
import a8k.app.utils.ZJsonHelper;
@ -7,8 +7,8 @@ import java.util.Date;
public class OptScanResult {
public Date scanDate;
public OptRawScanData rawData;
public OptAlgoAnalysResult analysResult;
public OptRawScanData rawData;
public A8kOptPeakInfo analysResult;
public String toString() {
return ZJsonHelper.objectToJson(this);
}

2
src/main/java/a8k/app/a8ktype/opttype/PeakDivision.java → src/main/java/a8k/app/optalgo/type/PeakDivision.java

@ -1,4 +1,4 @@
package a8k.app.a8ktype.opttype;
package a8k.app.optalgo.type;
public enum PeakDivision {
R(PeakName.T, PeakName.C), //T/C

2
src/main/java/a8k/app/a8kproj/optalgo/type/PeakFindState.java → src/main/java/a8k/app/optalgo/type/PeakFindState.java

@ -1,4 +1,4 @@
package a8k.app.a8kproj.optalgo.type;
package a8k.app.optalgo.type;
public enum PeakFindState {
FIND_PEAK,

2
src/main/java/a8k/app/a8ktype/opttype/PeakName.java → src/main/java/a8k/app/optalgo/type/PeakName.java

@ -1,4 +1,4 @@
package a8k.app.a8ktype.opttype;
package a8k.app.optalgo.type;
public enum PeakName {
T4,

2
src/main/java/a8k/app/a8ktype/opttype/ReactionResultStatus.java → src/main/java/a8k/app/optalgo/type/ReactionResultStatus.java

@ -1,4 +1,4 @@
package a8k.app.a8ktype.opttype;
package a8k.app.optalgo.type;
import io.swagger.v3.oas.annotations.media.Schema;

4
src/main/java/a8k/app/dao/type/a8kidcard/A8kNormalFn.java → src/main/java/a8k/app/optalgo/type/a8kidcard/A8kNormalFn.java

@ -1,6 +1,6 @@
package a8k.app.dao.type.a8kidcard;
package a8k.app.optalgo.type.a8kidcard;
import a8k.app.a8ktype.opttype.A8kOptX;
import a8k.app.optalgo.type.A8kOptX;
import java.io.Serializable;

4
src/main/java/a8k/app/dao/type/a8kidcard/A8kOptFnFormula.java → src/main/java/a8k/app/optalgo/type/a8kidcard/A8kOptFnFormula.java

@ -1,6 +1,6 @@
package a8k.app.dao.type.a8kidcard;
package a8k.app.optalgo.type.a8kidcard;
import a8k.app.dao.type.a8kidcard.zenum.A8kFnType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kFnType;
import java.io.Serializable;

4
src/main/java/a8k/app/dao/type/a8kidcard/A8kPiecewiseFn.java → src/main/java/a8k/app/optalgo/type/a8kidcard/A8kPiecewiseFn.java

@ -1,6 +1,6 @@
package a8k.app.dao.type.a8kidcard;
package a8k.app.optalgo.type.a8kidcard;
import a8k.app.a8ktype.opttype.A8kOptX;
import a8k.app.optalgo.type.A8kOptX;
import java.io.Serializable;

4
src/main/java/a8k/app/dao/type/a8kidcard/A8kResultBuilderFn.java → src/main/java/a8k/app/optalgo/type/a8kidcard/A8kResultBuilderFn.java

@ -1,6 +1,6 @@
package a8k.app.dao.type.a8kidcard;
package a8k.app.optalgo.type.a8kidcard;
import a8k.app.dao.type.a8kidcard.zenum.A8kResultUnit;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kResultUnit;
import java.io.Serializable;
import java.util.ArrayList;

4
src/main/java/a8k/app/dao/type/a8kidcard/A8kResultUnitConverter.java → src/main/java/a8k/app/optalgo/type/a8kidcard/A8kResultUnitConverter.java

@ -1,6 +1,6 @@
package a8k.app.dao.type.a8kidcard;
package a8k.app.optalgo.type.a8kidcard;
import a8k.app.dao.type.a8kidcard.zenum.A8kResultUnit;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kResultUnit;
import java.io.Serializable;

2
src/main/java/a8k/app/dao/type/a8kidcard/zenum/A8kFnType.java → src/main/java/a8k/app/optalgo/type/a8kidcard/zenum/A8kFnType.java

@ -1,4 +1,4 @@
package a8k.app.dao.type.a8kidcard.zenum;
package a8k.app.optalgo.type.a8kidcard.zenum;
public enum A8kFnType {
NormalFn(1),//正常函数

6
src/main/java/a8k/app/optalgo/type/a8kidcard/zenum/A8kOptType.java

@ -0,0 +1,6 @@
package a8k.app.optalgo.type.a8kidcard.zenum;
public enum A8kOptType {
FOPT,
TOPT,
}

2
src/main/java/a8k/app/dao/type/a8kidcard/zenum/A8kReactionFlowType.java → src/main/java/a8k/app/optalgo/type/a8kidcard/zenum/A8kReactionFlowType.java

@ -1,4 +1,4 @@
package a8k.app.dao.type.a8kidcard.zenum;
package a8k.app.optalgo.type.a8kidcard.zenum;
public enum A8kReactionFlowType {
/**

2
src/main/java/a8k/app/dao/type/a8kidcard/zenum/A8kResultUnit.java → src/main/java/a8k/app/optalgo/type/a8kidcard/zenum/A8kResultUnit.java

@ -1,4 +1,4 @@
package a8k.app.dao.type.a8kidcard.zenum;
package a8k.app.optalgo.type.a8kidcard.zenum;
public enum A8kResultUnit {
Original(0, ""),

2
src/main/java/a8k/app/a8kproj/optalgo/utils/A8kOptGainAdjuster.java → src/main/java/a8k/app/optalgo/utils/A8kOptGainAdjuster.java

@ -1,4 +1,4 @@
package a8k.app.a8kproj.optalgo.utils;
package a8k.app.optalgo.utils;
import org.springframework.util.Assert;

37
src/main/java/a8k/app/a8kproj/optalgo/type/OptAlgoAnalysResult.java → src/main/java/a8k/app/optalgo/utils/A8kOptPeakInfoBuilder.java

@ -1,32 +1,14 @@
package a8k.app.a8kproj.optalgo.type;
package a8k.app.optalgo.utils;
import a8k.app.a8kproj.optalgo.version.OptAlogVersion;
import a8k.app.a8kproj.optanalyzer.PeakDivisionComputer;
import a8k.app.a8ktype.opttype.PeakDivision;
import a8k.app.a8ktype.opttype.PeakName;
import a8k.app.optalgo.type.A8kOptPeaks;
import a8k.app.optalgo.type.A8kOptPeakInfo;
import a8k.app.optalgo.type.PeakDivision;
import a8k.app.optalgo.type.PeakName;
import a8k.app.optalgo.version.OptAlogVersion;
public class OptAlgoAnalysResult {
public String algoVersion = "";
public double[] resultData; // 250 POINT
public A8kOptPeak T4;
public A8kOptPeak R;
public A8kOptPeak H;
public A8kOptPeak T;
public A8kOptPeak C;
public Double pdR; //1
public Double pdAR; //2
public Double pdATR; //3
public Double pdRFR; //5
public Double pdT4R; //6
public Double pdT4T3R; //7
static public OptAlgoAnalysResult build(double[] resultData, A8kOptPeaks peaks) {
OptAlgoAnalysResult result = new OptAlgoAnalysResult();
public class A8kOptPeakInfoBuilder {
static public A8kOptPeakInfo build(double[] resultData, A8kOptPeaks peaks) {
A8kOptPeakInfo result = new A8kOptPeakInfo();
result.resultData = resultData;
result.T4 = peaks.findPeak(PeakName.T4);
result.R = peaks.findPeak(PeakName.R);
@ -42,5 +24,4 @@ public class OptAlgoAnalysResult {
result.algoVersion = OptAlogVersion.version;
return result;
}
}

34
src/main/java/a8k/app/a8kproj/optanalyzer/A8kOptXGetter.java → src/main/java/a8k/app/optalgo/utils/A8kOptXGetter.java

@ -1,28 +1,28 @@
package a8k.app.a8kproj.optanalyzer;
package a8k.app.optalgo.utils;
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.optalgo.type.A8kOptPeakInfo;
import a8k.app.optalgo.type.A8kOptProcessException;
import a8k.app.optalgo.type.A8kOptX;
import a8k.app.optalgo.type.PeakDivision;
import a8k.app.dao.type.OptCfg;
import a8k.app.a8ktype.opttype.ReactionResultStatus;
import a8k.app.optalgo.type.ReactionResultStatus;
public class A8kOptXGetter {
static class Context {
OptCfg optcfg;
OptAlgoAnalysResult optAlgoAnalysResult;
OptCfg optcfg;
A8kOptPeakInfo optAlgoAnalysResult;
}
static private Double getPeakDivision(Context cxt, PeakDivision pdtype) throws A8kOptProcessException {
OptAlgoAnalysResult optAlgoAnalysResult = cxt.optAlgoAnalysResult;
A8kOptPeakInfo a8kOptPeakInfo = cxt.optAlgoAnalysResult;
Double val = switch (pdtype) {
case R -> optAlgoAnalysResult.pdR;
case AR -> optAlgoAnalysResult.pdAR;
case ATR -> optAlgoAnalysResult.pdATR;
case RFR -> optAlgoAnalysResult.pdRFR;
case T4R -> optAlgoAnalysResult.pdT4R;
case T4T3R -> optAlgoAnalysResult.pdT4T3R;
case R -> a8kOptPeakInfo.pdR;
case AR -> a8kOptPeakInfo.pdAR;
case ATR -> a8kOptPeakInfo.pdATR;
case RFR -> a8kOptPeakInfo.pdRFR;
case T4R -> a8kOptPeakInfo.pdT4R;
case T4T3R -> a8kOptPeakInfo.pdT4T3R;
};
OptChecker.checkPeakDevision(pdtype, val);
@ -38,11 +38,11 @@ public class A8kOptXGetter {
return result;
}
static public Double getX(A8kOptX xType, OptCfg optcfg, OptAlgoAnalysResult optAlgoAnalysResult) throws A8kOptProcessException {
static public Double getX(A8kOptX xType, OptCfg optcfg, A8kOptPeakInfo a8kOptPeakInfo) throws A8kOptProcessException {
Context cxt = new Context();
cxt.optcfg = optcfg;
cxt.optAlgoAnalysResult = optAlgoAnalysResult;
cxt.optAlgoAnalysResult = a8kOptPeakInfo;
/*
* 根据项目获取未知数X

16
src/main/java/a8k/app/a8kproj/optanalyzer/OptChecker.java → src/main/java/a8k/app/optalgo/utils/OptChecker.java

@ -1,11 +1,11 @@
package a8k.app.a8kproj.optanalyzer;
import a8k.app.a8kproj.optalgo.type.A8kOptPeak;
import a8k.app.a8kproj.optalgo.type.PeakFindState;
import a8k.app.a8kproj.optanalyzer.exception.A8kOptProcessException;
import a8k.app.a8ktype.opttype.PeakDivision;
import a8k.app.a8ktype.opttype.PeakName;
import a8k.app.a8ktype.opttype.ReactionResultStatus;
package a8k.app.optalgo.utils;
import a8k.app.optalgo.type.A8kOptPeak;
import a8k.app.optalgo.type.PeakFindState;
import a8k.app.optalgo.type.A8kOptProcessException;
import a8k.app.optalgo.type.PeakDivision;
import a8k.app.optalgo.type.PeakName;
import a8k.app.optalgo.type.ReactionResultStatus;
public class OptChecker {

11
src/main/java/a8k/app/a8kproj/optanalyzer/PeakDivisionComputer.java → src/main/java/a8k/app/optalgo/utils/PeakDivisionComputer.java

@ -1,13 +1,10 @@
package a8k.app.a8kproj.optanalyzer;
package a8k.app.optalgo.utils;
import a8k.app.a8kproj.optalgo.type.A8kOptPeak;
import a8k.app.a8kproj.optalgo.type.A8kOptPeaks;
import a8k.app.a8ktype.opttype.PeakDivision;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import a8k.app.optalgo.type.A8kOptPeak;
import a8k.app.optalgo.type.A8kOptPeaks;
import a8k.app.optalgo.type.PeakDivision;
public class PeakDivisionComputer {
private static final Logger log = LoggerFactory.getLogger(PeakDivisionComputer.class);
public static Double computePeakDivision(PeakDivision pdtype, A8kOptPeaks peaks) {
A8kOptPeak numerator = peaks.findPeak(pdtype.numerator);

6
src/main/java/a8k/app/a8kproj/optanalyzer/PeakNameAssigner.java → src/main/java/a8k/app/optalgo/utils/PeakNameAssigner.java

@ -1,7 +1,7 @@
package a8k.app.a8kproj.optanalyzer;
package a8k.app.optalgo.utils;
import a8k.app.a8kproj.optalgo.type.A8kOptPeaks;
import a8k.app.a8ktype.opttype.PeakName;
import a8k.app.optalgo.type.A8kOptPeaks;
import a8k.app.optalgo.type.PeakName;
import lombok.extern.slf4j.Slf4j;
@Slf4j

2
src/main/java/a8k/app/a8kproj/optalgo/version/OptAlogVersion.java → src/main/java/a8k/app/optalgo/version/OptAlogVersion.java

@ -1,4 +1,4 @@
package a8k.app.a8kproj.optalgo.version;
package a8k.app.optalgo.version;
public class OptAlogVersion {
static public final String version = "1.0.0";

44
src/main/java/a8k/app/service/data/FileMgrService.java

@ -1,15 +1,15 @@
package a8k.app.service.data;
import a8k.app.a8kproj.optalgo.type.A8kOptPeak;
import a8k.app.a8kproj.optalgo.type.OptAlgoAnalysResult;
import a8k.app.a8kproj.optalgo.type.OptScanResult;
import a8k.app.a8kproj.optalgo.type.PeakFindState;
import a8k.app.a8ktype.opttype.PeakDivision;
import a8k.app.a8ktype.opttype.PeakName;
import a8k.app.optalgo.type.A8kOptPeak;
import a8k.app.optalgo.type.A8kOptPeakInfo;
import a8k.app.optalgo.type.OptScanResult;
import a8k.app.optalgo.type.PeakFindState;
import a8k.app.optalgo.type.PeakDivision;
import a8k.app.optalgo.type.PeakName;
import a8k.app.constant.FilePathConstant;
import a8k.app.controler.filemgr.StorageControler;
import a8k.app.dao.type.OptRawScanData;
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kOptType;
import a8k.app.utils.ZDateUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@ -200,30 +200,30 @@ public class FileMgrService {
data.rawData[i] = i;
}
OptAlgoAnalysResult optAlgoAnalysResult = new OptAlgoAnalysResult();
optAlgoAnalysResult.T4 = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.T4, 0, 1.1, 40, 0, 80);
optAlgoAnalysResult.R = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.R, 0, 1.1, 80, 40, 120);
optAlgoAnalysResult.H = null;
optAlgoAnalysResult.T = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.T, 0, 1.1, 160, 120, 200);
optAlgoAnalysResult.C = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.C, 0, 1.1, 200, 160, 240);
optAlgoAnalysResult.pdR = 1.1;
optAlgoAnalysResult.pdAR = 1.2;
optAlgoAnalysResult.pdATR = 1.3;
optAlgoAnalysResult.pdRFR = 1.4;
optAlgoAnalysResult.pdT4R = 1.5;
optAlgoAnalysResult.pdT4T3R = 1.6;
A8kOptPeakInfo a8kOptPeakInfo = new A8kOptPeakInfo();
a8kOptPeakInfo.T4 = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.T4, 0, 1.1, 40, 0, 80);
a8kOptPeakInfo.R = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.R, 0, 1.1, 80, 40, 120);
a8kOptPeakInfo.H = null;
a8kOptPeakInfo.T = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.T, 0, 1.1, 160, 120, 200);
a8kOptPeakInfo.C = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.C, 0, 1.1, 200, 160, 240);
a8kOptPeakInfo.pdR = 1.1;
a8kOptPeakInfo.pdAR = 1.2;
a8kOptPeakInfo.pdATR = 1.3;
a8kOptPeakInfo.pdRFR = 1.4;
a8kOptPeakInfo.pdT4R = 1.5;
a8kOptPeakInfo.pdT4T3R = 1.6;
// optAlgoAnalysResult.rawData = new Integer[1200];
// for (int i = 0; i < 1200; i++) {
// optAlgoAnalysResult.rawData[i] = i;
// }
optAlgoAnalysResult.resultData = new double[250];
a8kOptPeakInfo.resultData = new double[250];
for (int i = 0; i < 250; i++) {
optAlgoAnalysResult.resultData[i] = i;
a8kOptPeakInfo.resultData[i] = i;
}
OptScanResult optScanResult = new OptScanResult();
optScanResult.rawData = data;
optScanResult.analysResult = optAlgoAnalysResult;
optScanResult.analysResult = a8kOptPeakInfo;
String path = storageOptReport("Fake( xxxx)", 1, optScanResult);
log.info("createFakeOptReport success {}", path);

14
src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java

@ -2,14 +2,14 @@ package a8k.app.service.data;
import a8k.app.a8ktype.exception.AppException;
import a8k.app.a8ktype.opttype.A8kOptX;
import a8k.app.optalgo.type.A8kOptX;
import a8k.app.dao.A8kProjExtInfoCardDao;
import a8k.app.dao.type.a8kidcard.A8kNormalFn;
import a8k.app.dao.type.a8kidcard.A8kOptFnFormula;
import a8k.app.dao.type.a8kidcard.A8kPiecewiseFn;
import a8k.app.dao.type.a8kidcard.A8kResultBuilderFn;
import a8k.app.dao.type.a8kidcard.zenum.A8kFnType;
import a8k.app.dao.type.a8kidcard.zenum.A8kResultUnit;
import a8k.app.optalgo.type.a8kidcard.A8kNormalFn;
import a8k.app.optalgo.type.a8kidcard.A8kOptFnFormula;
import a8k.app.optalgo.type.a8kidcard.A8kPiecewiseFn;
import a8k.app.optalgo.type.a8kidcard.A8kResultBuilderFn;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kFnType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kResultUnit;
import a8k.app.hardware.type.a8kcanprotocol.A8kEcode;
import a8k.app.service.lowerctrl.ProjIDCardCtrlAndMonitorService;
import a8k.app.service.statemgr.GStateMgrService;

2
src/main/java/a8k/app/service/data/ReactionRecordMgrService.java

@ -1,6 +1,6 @@
package a8k.app.service.data;
import a8k.app.a8kproj.optalgo.type.OptScanResult;
import a8k.app.optalgo.type.OptScanResult;
import a8k.app.a8ktype.state.SampleInfo;
import a8k.app.dao.ReactionReportDao;
import a8k.app.dao.type.ReactionReport;

18
src/main/java/a8k/app/service/lowerctrl/OptScanModuleCtrlService.java

@ -1,10 +1,10 @@
package a8k.app.service.lowerctrl;
import a8k.app.a8kproj.optalgo.type.OptAlgoAnalysResult;
import a8k.app.optalgo.type.A8kOptPeakInfo;
import a8k.app.constant.OptConstant;
import a8k.app.a8kproj.optalgo.A8kOptAlgoV2;
import a8k.app.a8kproj.optalgo.type.OptScanResult;
import a8k.app.a8kproj.optalgo.utils.A8kOptGainAdjuster;
import a8k.app.optalgo.A8kOptCurveAnalyzer;
import a8k.app.optalgo.type.OptScanResult;
import a8k.app.optalgo.utils.A8kOptGainAdjuster;
import a8k.app.hardware.driver.OptModuleDriver;
import a8k.app.hardware.driver.StepMotorCtrlDriver;
import a8k.app.hardware.driver.type.OptModuleRegIndex;
@ -13,9 +13,9 @@ import a8k.app.service.bases.UIMessage;
import a8k.app.service.param.optparam.OptModuleExtParamsMgr;
import a8k.app.service.param.optparam.OptModuleParamsMgr;
import a8k.app.dao.type.OptRawScanData;
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kOptType;
import a8k.app.a8ktype.device.IncubatorPos;
import a8k.app.a8ktype.opttype.OptScanDirection;
import a8k.app.optalgo.type.OptScanDirection;
import a8k.app.a8ktype.exception.AppException;
import a8k.app.utils.ProjBuildinInfo;
import a8k.app.hardware.utils.OptGainConvert;
@ -150,13 +150,13 @@ public class OptScanModuleCtrlService {
public OptScanResult optScan(ProjBuildinInfo projBuildinInfo, Integer subProjIndex) throws AppException {
UIMessage.info(log, "光学扫描");
A8kOptAlgoV2 a8kOptAlgoV2 = new A8kOptAlgoV2();
A8kOptCurveAnalyzer a8KOptCurveAnalyzer = new A8kOptCurveAnalyzer();
OptScanResult result = new OptScanResult();
result.scanDate = new Date();
OptRawScanData rawData = doOptScan(projBuildinInfo.optcfg.get(subProjIndex).optType);
OptAlgoAnalysResult analysResult = a8kOptAlgoV2.processOptData(projBuildinInfo, projBuildinInfo.optcfg.get(subProjIndex), rawData.rawData);
OptRawScanData rawData = doOptScan(projBuildinInfo.optcfg.get(subProjIndex).optType);
A8kOptPeakInfo analysResult = a8KOptCurveAnalyzer.analysCurve(projBuildinInfo.projId, projBuildinInfo.optcfg.get(subProjIndex), rawData.rawData);
result.rawData = rawData;
result.analysResult = analysResult;

2
src/main/java/a8k/app/service/mainctrl/AppConsumablesScanService.java

@ -16,7 +16,7 @@ import a8k.app.a8ktype.device.consumables.LittBottleGroup;
import a8k.app.a8ktype.device.consumables.ReactionPlateGroup;
import a8k.app.a8ktype.error.ConsumablesScanReportErrorType;
import a8k.app.a8ktype.exception.AppException;
import a8k.app.dao.type.a8kidcard.zenum.A8kReactionFlowType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kReactionFlowType;
import a8k.app.utils.*;
import jakarta.annotation.Resource;
import org.slf4j.Logger;

8
src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/AC20ScanReactionPlate.java

@ -1,7 +1,7 @@
package a8k.app.service.mainctrl.mainflowctrl.action;
import a8k.app.a8kproj.A8kReactionResultComputer;
import a8k.app.a8kproj.optalgo.type.OptScanResult;
import a8k.app.optalgo.A8kPeakAnalyzer;
import a8k.app.optalgo.type.OptScanResult;
import a8k.app.a8ktype.DeviceRunMode;
import a8k.app.service.mainctrl.mainflowctrl.base.A8kActionTask;
@ -12,7 +12,7 @@ import a8k.app.service.statemgr.OptScanModuleStateMgrService;
import a8k.app.service.statemgr.ProjectContextMgrService;
import a8k.app.a8ktype.state.ProjectTaskContext;
import a8k.app.service.lowerctrl.OptScanModuleCtrlService;
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kOptType;
import a8k.app.teststate.VirtualDevice;
import a8k.app.factory.FakeReactionResultFactory;
import a8k.app.a8ktype.type.ReactionResult;
@ -89,7 +89,7 @@ public class AC20ScanReactionPlate extends A8kActionTask {
cxt.setOptScanResult(optType, optScanResult);
}
ReactionResult result = A8kReactionResultComputer.optComputeResult(cxt.getSampleInfo(), ProjInfoUtils.buildProjInfo(cxt), i, optScanResult.analysResult);
ReactionResult result = A8kPeakAnalyzer.analysisPeakInfo(cxt.getSampleInfo(), ProjInfoUtils.buildProjInfo(cxt), i, optScanResult.analysResult);
reactionResults.add(result);
}

2
src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/AC41ProcessSample.java

@ -13,7 +13,7 @@ import a8k.app.a8ktype.state.Tube;
import a8k.app.a8ktype.state.TubeHolder;
import a8k.app.a8ktype.state.enumtype.TubeState;
import a8k.app.service.mainctrl.erroranalyzer.ErrorProcessor;
import a8k.app.dao.type.a8kidcard.zenum.A8kReactionFlowType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kReactionFlowType;
import a8k.app.utils.ActionTaskPool;
import a8k.app.utils.ZList;
import a8k.app.teststate.VirtualDevice;

2
src/main/java/a8k/app/service/param/optparam/OptModuleExtParamsMgr.java

@ -3,7 +3,7 @@ package a8k.app.service.param.optparam;
import a8k.app.service.param.base.ParamMgr;
import a8k.app.a8ktype.param.optpos.OptModuleExtParam;
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kOptType;
import jakarta.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

4
src/main/java/a8k/app/utils/ProjBuildinInfo.java

@ -2,8 +2,8 @@ package a8k.app.utils;
import a8k.app.dao.type.OptCfg;
import a8k.app.dao.type.ProjectBaseInfo;
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType;
import a8k.app.dao.type.a8kidcard.zenum.A8kReactionFlowType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kOptType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kReactionFlowType;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import org.slf4j.Logger;

2
src/main/java/a8k/app/utils/ProjInfoUtils.java

@ -2,7 +2,7 @@ package a8k.app.utils;
import a8k.app.a8ktype.state.ProjectTaskContext;
import a8k.app.dao.type.ProjExtInfoCard;
import a8k.app.dao.type.a8kidcard.A8kOptFnFormula;
import a8k.app.optalgo.type.a8kidcard.A8kOptFnFormula;
import a8k.app.a8ktype.type.ProjBriefInfo;
import java.util.ArrayList;

42
src/main/java/a8k/extui/factory/FakeOptScanResultFactory.java

@ -1,12 +1,12 @@
package a8k.extui.factory;
import a8k.app.a8kproj.optalgo.type.A8kOptPeak;
import a8k.app.a8kproj.optalgo.type.OptAlgoAnalysResult;
import a8k.app.a8kproj.optalgo.type.OptScanResult;
import a8k.app.a8kproj.optalgo.type.PeakFindState;
import a8k.app.a8ktype.opttype.PeakName;
import a8k.app.optalgo.type.A8kOptPeak;
import a8k.app.optalgo.type.A8kOptPeakInfo;
import a8k.app.optalgo.type.OptScanResult;
import a8k.app.optalgo.type.PeakFindState;
import a8k.app.optalgo.type.PeakName;
import a8k.app.dao.type.OptRawScanData;
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kOptType;
import java.util.Date;
@ -34,25 +34,25 @@ public class FakeOptScanResultFactory {
optScanResult.rawData = rawData;
//OptAlgoAnalysResult
OptAlgoAnalysResult optAlgoAnalysResult = new OptAlgoAnalysResult();
optAlgoAnalysResult.T4 = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.T4, 0, 1.1, 40, 0, 80);
optAlgoAnalysResult.R = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.R, 0, 1.1, 80, 40, 120);
optAlgoAnalysResult.H = null;
optAlgoAnalysResult.T = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.T, 0, 1.1, 160, 120, 200);
optAlgoAnalysResult.C = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.C, 0, 1.1, 200, 160, 240);
optAlgoAnalysResult.pdR = 1.1;
optAlgoAnalysResult.pdAR = 1.2;
optAlgoAnalysResult.pdATR = 1.3;
optAlgoAnalysResult.pdRFR = 1.4;
optAlgoAnalysResult.pdT4R = 1.5;
optAlgoAnalysResult.pdT4T3R = 1.6;
optAlgoAnalysResult.resultData = new double[250];
A8kOptPeakInfo a8kOptPeakInfo = new A8kOptPeakInfo();
a8kOptPeakInfo.T4 = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.T4, 0, 1.1, 40, 0, 80);
a8kOptPeakInfo.R = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.R, 0, 1.1, 80, 40, 120);
a8kOptPeakInfo.H = null;
a8kOptPeakInfo.T = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.T, 0, 1.1, 160, 120, 200);
a8kOptPeakInfo.C = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.C, 0, 1.1, 200, 160, 240);
a8kOptPeakInfo.pdR = 1.1;
a8kOptPeakInfo.pdAR = 1.2;
a8kOptPeakInfo.pdATR = 1.3;
a8kOptPeakInfo.pdRFR = 1.4;
a8kOptPeakInfo.pdT4R = 1.5;
a8kOptPeakInfo.pdT4T3R = 1.6;
a8kOptPeakInfo.resultData = new double[250];
for (int i = 0; i < 250; i++) {
optAlgoAnalysResult.resultData[i] = optType.equals(A8kOptType.FOPT) ? i : 250 - i;
a8kOptPeakInfo.resultData[i] = optType.equals(A8kOptType.FOPT) ? i : 250 - i;
}
optScanResult.analysResult = optAlgoAnalysResult;
optScanResult.analysResult = a8kOptPeakInfo;
//return
return optScanResult;

10
src/main/java/a8k/extui/factory/ProjExtInfoCardFactory.java

@ -3,11 +3,11 @@ package a8k.extui.factory;
import a8k.SpringBootBeanUtil;
import a8k.app.a8ktype.exception.AppException;
import a8k.app.dao.type.ProjExtInfoCard;
import a8k.app.dao.type.a8kidcard.A8kNormalFn;
import a8k.app.dao.type.a8kidcard.A8kOptFnFormula;
import a8k.app.dao.type.a8kidcard.A8kPiecewiseFn;
import a8k.app.dao.type.a8kidcard.A8kResultBuilderFn;
import a8k.app.dao.type.a8kidcard.zenum.A8kFnType;
import a8k.app.optalgo.type.a8kidcard.A8kNormalFn;
import a8k.app.optalgo.type.a8kidcard.A8kOptFnFormula;
import a8k.app.optalgo.type.a8kidcard.A8kPiecewiseFn;
import a8k.app.optalgo.type.a8kidcard.A8kResultBuilderFn;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kFnType;
import a8k.app.service.data.ProjInfoMgrService;
import a8k.app.utils.ProjBuildinInfo;

8
src/main/java/a8k/extui/page/extapp/A8kOptVerification.java

@ -1,7 +1,7 @@
package a8k.extui.page.extapp;
import a8k.app.a8kproj.A8kReactionResultComputer;
import a8k.app.a8kproj.optalgo.type.OptScanResult;
import a8k.app.optalgo.A8kPeakAnalyzer;
import a8k.app.optalgo.type.OptScanResult;
import a8k.app.a8ktype.device.BloodType;
import a8k.app.a8ktype.state.SampleInfo;
import a8k.app.a8ktype.type.ReactionResult;
@ -19,7 +19,7 @@ import a8k.app.service.data.ProjInfoMgrService;
import a8k.app.service.lowerctrl.OptScanModuleCtrlService;
import a8k.app.service.lowerctrl.PlateBoxCtrlService;
import a8k.extui.type.ret.A8kScanCurve;
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kOptType;
import a8k.app.a8ktype.device.ConsumableGroup;
import a8k.app.a8ktype.device.IncubatorPos;
import a8k.app.a8ktype.exception.AppException;
@ -214,7 +214,7 @@ public class A8kOptVerification {
for (int i = 0; i < projBuildinInfo.optcfg.size(); i++) {
OptScanResult optScanResult = getOptScanResult(projBuildinInfo.optcfg.get(i).optType);
Assert.notNull(optScanResult, "光学扫描结果为空");
results.add(A8kReactionResultComputer.optComputeResult(sampleInfo, projInfo, i, optScanResult.analysResult));
results.add(A8kPeakAnalyzer.analysisPeakInfo(sampleInfo, projInfo, i, optScanResult.analysResult));
}
return results;

8
src/main/java/a8k/extui/page/extapp/OptFullFlowVerificationPage.java

@ -1,8 +1,8 @@
package a8k.extui.page.extapp;
import a8k.OS;
import a8k.app.a8kproj.A8kReactionResultComputer;
import a8k.app.a8kproj.optalgo.type.OptScanResult;
import a8k.app.optalgo.A8kPeakAnalyzer;
import a8k.app.optalgo.type.OptScanResult;
import a8k.app.a8ktype.device.*;
import a8k.app.a8ktype.exception.AppException;
import a8k.app.a8ktype.param.type.A8kSamplePos;
@ -10,7 +10,7 @@ import a8k.app.a8ktype.state.SampleInfo;
import a8k.app.a8ktype.type.ReactionResult;
import a8k.app.a8ktype.type.TubeHolderScanResult;
import a8k.app.dao.type.ProjExtInfoCard;
import a8k.app.dao.type.a8kidcard.zenum.A8kReactionFlowType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kReactionFlowType;
import a8k.app.hardware.driver.PipetteCtrlDriver;
import a8k.app.service.bases.AppEventBusService;
import a8k.app.service.bases.FrontEndMessageBoxAndEventMgr;
@ -219,7 +219,7 @@ public class OptFullFlowVerificationPage {
for (int i = 0; i < cxt.projBuildinInfo.subProjNum; i++) {
var optScanResult = optScanModuleCtrlService.optScan(cxt.projBuildinInfo, i);
ReactionResult result = A8kReactionResultComputer.optComputeResult(cxt.sampleInfo, projInfo, i, optScanResult.analysResult);
ReactionResult result = A8kPeakAnalyzer.analysisPeakInfo(cxt.sampleInfo, projInfo, i, optScanResult.analysResult);
cxt.results.add(result);
optScanResults.add(optScanResult);
}

2
src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java

@ -11,7 +11,7 @@ import a8k.app.service.lowerctrl.OptScanModuleCtrlService;
import a8k.app.service.lowerctrl.PlateBoxCtrlService;
import a8k.app.service.param.optparam.OptModuleExtParamsMgr;
import a8k.app.a8ktype.param.optpos.OptModuleExtParam;
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kOptType;
import a8k.app.a8ktype.exception.AppException;
import a8k.app.hardware.utils.OptGainConvert;
import jakarta.annotation.PostConstruct;

10
src/main/java/a8k/extui/page/extapp/debug_assistant/FakeReactionRecordGeneratorPage.java

@ -1,14 +1,14 @@
package a8k.extui.page.extapp.debug_assistant;
import a8k.app.a8kproj.optalgo.type.OptScanResult;
import a8k.app.optalgo.type.OptScanResult;
import a8k.app.a8ktype.device.BloodType;
import a8k.app.a8ktype.exception.AppException;
import a8k.app.a8ktype.opttype.ReactionResultStatus;
import a8k.app.optalgo.type.ReactionResultStatus;
import a8k.app.a8ktype.state.SampleInfo;
import a8k.app.a8ktype.type.ReactionResult;
import a8k.app.dao.type.a8kidcard.A8kResultBuilderFn;
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType;
import a8k.app.dao.type.a8kidcard.zenum.A8kResultUnit;
import a8k.app.optalgo.type.a8kidcard.A8kResultBuilderFn;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kOptType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kResultUnit;
import a8k.extui.factory.FakeOptScanResultFactory;
import a8k.extui.factory.ProjExtInfoCardFactory;
import a8k.app.service.data.ProjInfoMgrService;

4
src/main/java/a8k/extui/page/extapp/debug_assistant/FakeStateGeneratorPage.java

@ -5,8 +5,8 @@ import a8k.app.a8ktype.device.BloodType;
import a8k.app.a8ktype.type.ReactionResult;
import a8k.app.dao.ReactionReportDao;
import a8k.app.dao.type.ReactionReport;
import a8k.app.dao.type.a8kidcard.A8kResultBuilderFn;
import a8k.app.dao.type.a8kidcard.zenum.A8kResultUnit;
import a8k.app.optalgo.type.a8kidcard.A8kResultBuilderFn;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kResultUnit;
import a8k.app.service.statemgr.GStateMgrService;
import a8k.app.utils.ZDateUtils;
import a8k.extui.mgr.ExtApiPageMgr;

4
src/main/java/a8k/extui/page/extsetting/db/ReactionRecordMgrDebugPage.java

@ -1,10 +1,10 @@
package a8k.extui.page.extsetting.db;
import a8k.app.a8ktype.exception.AppException;
import a8k.app.a8ktype.opttype.ReactionResultStatus;
import a8k.app.optalgo.type.ReactionResultStatus;
import a8k.app.controler.filemgr.StorageControler;
import a8k.app.dao.type.ReactionReport;
import a8k.app.dao.type.a8kidcard.zenum.A8kOptType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kOptType;
import a8k.extui.factory.A8kScanCurveFactory;
import a8k.app.service.data.FileMgrService;
import a8k.app.service.data.ProjIdCardInfoMgrService;

8
src/main/java/a8k/extui/page/test/codetest/OptFormulaTestPage.java

@ -1,8 +1,8 @@
package a8k.extui.page.test.codetest;
import a8k.app.a8kproj.A8kReactionResultComputer;
import a8k.app.a8kproj.optalgo.type.OptAlgoAnalysResult;
import a8k.app.optalgo.A8kPeakAnalyzer;
import a8k.app.optalgo.type.A8kOptPeakInfo;
import a8k.app.a8ktype.device.BloodType;
import a8k.app.a8ktype.exception.AppException;
import a8k.app.a8ktype.state.SampleInfo;
@ -32,7 +32,7 @@ public class OptFormulaTestPage {
Boolean test();
}
OptAlgoAnalysResult optAlgoAnalysResult = new OptAlgoAnalysResult();
A8kOptPeakInfo optAlgoAnalysResult = new A8kOptPeakInfo();
public void setR(Double val) {
@ -83,7 +83,7 @@ public class OptFormulaTestPage {
if (projInfoContext.buildIn.optcfg.size() <= optIndex) {
throw AppException.of(A8kEcode.CODEERROR, "当前项目没有第%s个子项目", optIndex);
}
return A8kReactionResultComputer.optComputeResult(sampleInfo, projInfoContext, optIndex, optAlgoAnalysResult);
return A8kPeakAnalyzer.analysisPeakInfo(sampleInfo, projInfoContext, optIndex, optAlgoAnalysResult);
}
@Resource

19
src/main/java/a8k/extui/page/test/codetest/OptFormulaTestPageV2.java

@ -1,13 +1,14 @@
package a8k.extui.page.test.codetest;
import a8k.app.a8kproj.A8kReactionResultComputer;
import a8k.app.a8kproj.optalgo.type.A8kOptPeaks;
import a8k.app.a8kproj.optalgo.type.OptAlgoAnalysResult;
import a8k.app.a8kproj.optanalyzer.PeakNameAssigner;
import a8k.app.optalgo.A8kPeakAnalyzer;
import a8k.app.optalgo.type.A8kOptPeaks;
import a8k.app.optalgo.type.A8kOptPeakInfo;
import a8k.app.optalgo.utils.A8kOptPeakInfoBuilder;
import a8k.app.optalgo.utils.PeakNameAssigner;
import a8k.app.a8ktype.device.BloodType;
import a8k.app.a8ktype.exception.AppException;
import a8k.app.a8ktype.opttype.PeakName;
import a8k.app.optalgo.type.PeakName;
import a8k.app.a8ktype.state.SampleInfo;
import a8k.app.a8ktype.type.ReactionResult;
import a8k.app.hardware.type.a8kcanprotocol.A8kEcode;
@ -78,12 +79,12 @@ public class OptFormulaTestPageV2 {
@ExtApiStatu(name = "", group = "光学中间结果2", order = 3, minWidth = "100%")
synchronized public String getComputedMidResult() {
return A8kReactionResultComputer.getComputeContext();
return A8kPeakAnalyzer.getComputeContext();
}
OptAlgoAnalysResult optAlgoAnalysResult;
A8kOptPeakInfo optAlgoAnalysResult;
synchronized public void setT4Area(Double val) {
@ -137,11 +138,11 @@ public class OptFormulaTestPageV2 {
peaks.trySetPeakArea(PeakName.C, CArea);
optAlgoAnalysResult = OptAlgoAnalysResult.build(new double[0], peaks);
optAlgoAnalysResult = A8kOptPeakInfoBuilder.build(new double[0], peaks);
if (projInfoContext.buildIn.optcfg.size() <= optIndex) {
throw AppException.of(A8kEcode.CODEERROR, "当前项目没有第%s个子项目", optIndex);
}
return A8kReactionResultComputer.optComputeResult(sampleInfo, projInfoContext, optIndex, optAlgoAnalysResult);
return A8kPeakAnalyzer.analysisPeakInfo(sampleInfo, projInfoContext, optIndex, optAlgoAnalysResult);
}
@Resource

8
src/main/java/a8k/extui/page/test/verification/P51FullFlowVerificationPage.java

@ -1,8 +1,8 @@
package a8k.extui.page.test.verification;
import a8k.OS;
import a8k.app.a8kproj.A8kReactionResultComputer;
import a8k.app.a8kproj.optalgo.type.OptScanResult;
import a8k.app.optalgo.A8kPeakAnalyzer;
import a8k.app.optalgo.type.OptScanResult;
import a8k.app.a8ktype.device.*;
import a8k.app.a8ktype.exception.AppException;
import a8k.app.a8ktype.param.type.A8kSamplePos;
@ -10,7 +10,7 @@ import a8k.app.a8ktype.state.SampleInfo;
import a8k.app.a8ktype.type.ReactionResult;
import a8k.app.a8ktype.type.TubeHolderScanResult;
import a8k.app.dao.type.ProjExtInfoCard;
import a8k.app.dao.type.a8kidcard.zenum.A8kReactionFlowType;
import a8k.app.optalgo.type.a8kidcard.zenum.A8kReactionFlowType;
import a8k.app.hardware.driver.PipetteCtrlDriver;
import a8k.app.service.bases.AppEventBusService;
import a8k.app.service.bases.FrontEndMessageBoxAndEventMgr;
@ -222,7 +222,7 @@ public class P51FullFlowVerificationPage {
for (int i = 0; i < cxt.projBuildinInfo.subProjNum; i++) {
var optScanResult = optScanModuleCtrlService.optScan(cxt.projBuildinInfo, i);
ReactionResult result = A8kReactionResultComputer.optComputeResult(cxt.sampleInfo, projInfo, i, optScanResult.analysResult);
ReactionResult result = A8kPeakAnalyzer.analysisPeakInfo(cxt.sampleInfo, projInfo, i, optScanResult.analysResult);
cxt.results.add(result);
optScanResults.add(optScanResult);
}

Loading…
Cancel
Save