From a1d90f6255742925f1f92cea6b66191669f43be9 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Mon, 4 Nov 2024 20:53:22 +0800 Subject: [PATCH] update --- .../a8k/a8kproj/optalgo/type/OptScanResult.java | 4 +++ .../ctrlservice/OptScanModuleCtrlService.java | 34 +++++++++++++++------- .../calibration/OptModuleParamCalibration.java | 15 ++++++---- .../param/param_mgr/OptModuleExtParamsMgr.java | 2 +- src/main/java/a8k/service/dao/OptRawDataDao.java | 27 +++++++++++++++++ .../java/a8k/service/dao/type/OptRawScanData.java | 21 +++++++++++++ src/main/java/a8k/utils/ZDateUtils.java | 5 ++++ src/main/java/a8k/utils/ZSqliteJdbcHelper.java | 8 +++-- 8 files changed, 96 insertions(+), 20 deletions(-) create mode 100644 src/main/java/a8k/service/dao/OptRawDataDao.java create mode 100644 src/main/java/a8k/service/dao/type/OptRawScanData.java diff --git a/src/main/java/a8k/a8kproj/optalgo/type/OptScanResult.java b/src/main/java/a8k/a8kproj/optalgo/type/OptScanResult.java index e7c828c..14cb389 100644 --- a/src/main/java/a8k/a8kproj/optalgo/type/OptScanResult.java +++ b/src/main/java/a8k/a8kproj/optalgo/type/OptScanResult.java @@ -1,7 +1,11 @@ package a8k.a8kproj.optalgo.type; +import a8k.service.dao.type.OptRawScanData; + public class OptScanResult { + public OptRawScanData rawData; + public double[] ogiginData; // 1200 POINT public double[] resultData; // 250 POINT diff --git a/src/main/java/a8k/service/app/devicectrl/ctrlservice/OptScanModuleCtrlService.java b/src/main/java/a8k/service/app/devicectrl/ctrlservice/OptScanModuleCtrlService.java index 2cf99d0..00e1166 100644 --- a/src/main/java/a8k/service/app/devicectrl/ctrlservice/OptScanModuleCtrlService.java +++ b/src/main/java/a8k/service/app/devicectrl/ctrlservice/OptScanModuleCtrlService.java @@ -12,18 +12,22 @@ import a8k.service.app.devicectrl.driver.type.StepMotorMId; import a8k.service.app.devicectrl.param.param_mgr.OptModuleExtParamsMgr; import a8k.service.app.devicectrl.param.param_mgr.OptModuleParamsMgr; import a8k.service.bases.ActionReactorService; +import a8k.service.dao.type.OptRawScanData; import a8k.service.dao.type.ProjOptInfo; import a8k.service.dao.type.a8kidcard.zenum.A8kOptType; import a8k.type.IncubatorPos; import a8k.type.OptScanDirection; import a8k.type.exception.AppException; import a8k.utils.ProjInfoContext; +import a8k.utils.ZDateUtils; import a8k.utils.opt_gain_convert.OptGainConvert; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.Assert; +import java.util.Date; + @Component @Slf4j public class OptScanModuleCtrlService { @@ -59,12 +63,9 @@ public class OptScanModuleCtrlService { } - public Integer[] startOptScan(A8kOptType optType, Integer rawScanGain) throws AppException { + public Integer[] startOptScan(A8kOptType optType, Integer lasterGain, Integer rawScanGain) throws AppException { Integer forwardScanPos = optModuleExtParamsMgr.getOptScanStartPos(optType); Integer backwardScanPos = forwardScanPos - 1200; - // Double scanGain = optModuleExtParamsMgr.getScanGain(optType); - // Integer rawScanGain = OptGainConvert.scanerToRawGain(optType, scanGain); - Integer lasterGain = optModuleExtParamsMgr.getOptEmissionIntensity(optType); switch (optType) { @@ -92,18 +93,19 @@ public class OptScanModuleCtrlService { } - public Integer[] doOptScan(ProjOptInfo optcfg) throws AppException { + public OptRawScanData doOptScan(ProjOptInfo optcfg) throws AppException { log.info("doFOptScan ............"); log.info(" optType : {}", optcfg.optType); + A8kOptGainAdjuster gainAdjuster = new A8kOptGainAdjuster(); A8kOptType optType = optcfg.optType; double scanRealGain = 0; int scanRawGain = 0; - - int adjustCount = 3; + int lasterGain = optModuleExtParamsMgr.getOptLasterRawGain(optType); + int adjustCount = 3; Integer[] result = null; for (int i = 0; i < adjustCount; i++) { @@ -117,7 +119,7 @@ public class OptScanModuleCtrlService { log.info(" scanRawGain : {}", scanRawGain); log.info(" scanRealGain : {}", scanRealGain); - result = startOptScan(optType, scanRawGain); + result = startOptScan(optType, lasterGain, scanRawGain); if (i + 1 >= adjustCount) { @@ -138,7 +140,16 @@ public class OptScanModuleCtrlService { scanRealGain = gainAdjuster.suggestGain; scanRawGain = OptGainConvert.scanerToRawGain(optType, scanRealGain); } - return result; + + OptRawScanData rawData = new OptRawScanData(); + rawData.scanDate = new Date(); + rawData.dataid = ZDateUtils.toID(rawData.scanDate); + rawData.optType = optType; + rawData.scanGain = scanRawGain; + rawData.lasterGain = lasterGain; + rawData.rawData = result; + + return rawData; } @@ -148,8 +159,9 @@ public class OptScanModuleCtrlService { ProjOptInfo projOptInfo = projInfoContext.projOptInfoList.get(subProjIndex); - Integer[] optdata = doOptScan(projOptInfo); - OptScanResult optResult = A8kOptAlgoV2.processOptData(optdata); + OptRawScanData optdata = doOptScan(projOptInfo); + OptScanResult optResult = A8kOptAlgoV2.processOptData(optdata.rawData); + optResult.rawData = optdata; PeakNameAssigner.assignPeakName(projOptInfo.projId, projOptInfo.peakNameRefNum, optResult.peaks); return optResult; diff --git a/src/main/java/a8k/service/app/devicectrl/param/calibration/OptModuleParamCalibration.java b/src/main/java/a8k/service/app/devicectrl/param/calibration/OptModuleParamCalibration.java index dc74c61..aefa4a0 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/calibration/OptModuleParamCalibration.java +++ b/src/main/java/a8k/service/app/devicectrl/param/calibration/OptModuleParamCalibration.java @@ -164,9 +164,10 @@ public class OptModuleParamCalibration { @ExtApiFn(name = "F光学扫描", group = "扫描", order = 303) public A8kScanCurve FOptScan() throws AppException { - Double scanGain = optModuleExtParamsMgr.getScanGain(A8kOptType.FOPT); - Integer rawScanGain = OptGainConvert.scanerToRawGain(A8kOptType.FOPT, scanGain); - var result = optScanModuleCtrlService.startOptScan(A8kOptType.FOPT, rawScanGain); + Double scanGain = optModuleExtParamsMgr.getScanGain(A8kOptType.FOPT); + Integer rawScanGain = OptGainConvert.scanerToRawGain(A8kOptType.FOPT, scanGain); + Integer rawLasterGain = optModuleExtParamsMgr.getOptLasterRawGain(A8kOptType.FOPT); + var result = optScanModuleCtrlService.startOptScan(A8kOptType.FOPT, rawLasterGain, rawScanGain); return createScanCurve1200Point(result); } @@ -194,9 +195,11 @@ public class OptModuleParamCalibration { @ExtApiFn(name = "T光学扫描", group = "扫描", order = 403) public A8kScanCurve TOptScan() throws AppException { - Double scanGain = optModuleExtParamsMgr.getScanGain(A8kOptType.TOPT); - Integer rawScanGain = OptGainConvert.scanerToRawGain(A8kOptType.TOPT, scanGain); - var result = optScanModuleCtrlService.startOptScan(A8kOptType.TOPT, rawScanGain); + Double scanGain = optModuleExtParamsMgr.getScanGain(A8kOptType.TOPT); + Integer rawScanGain = OptGainConvert.scanerToRawGain(A8kOptType.TOPT, scanGain); + Integer rawLasterGain = optModuleExtParamsMgr.getOptLasterRawGain(A8kOptType.TOPT); + + var result = optScanModuleCtrlService.startOptScan(A8kOptType.TOPT, rawLasterGain, rawScanGain); return createScanCurve1200Point(result); } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleExtParamsMgr.java b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleExtParamsMgr.java index 1b21dc1..30025cd 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleExtParamsMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/param_mgr/OptModuleExtParamsMgr.java @@ -51,7 +51,7 @@ public class OptModuleExtParamsMgr extends ParamMgr { }; } - public Integer getOptEmissionIntensity(A8kOptType type) { + public Integer getOptLasterRawGain(A8kOptType type) { return switch (type) { case TOPT -> getParam(OptModuleExtParam.TOptEmissionIntensity, Integer.class); case FOPT -> getParam(OptModuleExtParam.FOptEmissionIntensity, Integer.class); diff --git a/src/main/java/a8k/service/dao/OptRawDataDao.java b/src/main/java/a8k/service/dao/OptRawDataDao.java new file mode 100644 index 0000000..660aa6e --- /dev/null +++ b/src/main/java/a8k/service/dao/OptRawDataDao.java @@ -0,0 +1,27 @@ +package a8k.service.dao; + +import a8k.service.dao.type.OptRawScanData; +import a8k.utils.ZSqlite; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.Date; + +@Component +public class OptRawDataDao extends ZSqlite { + + @Resource + JdbcTemplate jdbcTemplate; + + @PostConstruct + void init() { + init(jdbcTemplate, "zapp_a8k_opt_raw_data_record", OptRawScanData.class); + } + + public OptRawScanData findByProjId(Integer projId) { + return queryOne("select * from " + tableName + " where projId = ?;", projId); + } +} diff --git a/src/main/java/a8k/service/dao/type/OptRawScanData.java b/src/main/java/a8k/service/dao/type/OptRawScanData.java new file mode 100644 index 0000000..88ba51f --- /dev/null +++ b/src/main/java/a8k/service/dao/type/OptRawScanData.java @@ -0,0 +1,21 @@ +package a8k.service.dao.type; + +import a8k.service.dao.type.a8kidcard.zenum.A8kOptType; +import a8k.utils.ZJsonHelper; +import a8k.utils.ZSqliteJdbcHelper; + +import java.util.Date; + +public class OptRawScanData { + public int id; + public String dataid; //年月日时分秒 + public Date scanDate; + public A8kOptType optType; + public Integer lasterGain; + public Integer scanGain; + public Integer[] rawData; + + public String toString() { + return ZJsonHelper.objectToJson(this); + } +} diff --git a/src/main/java/a8k/utils/ZDateUtils.java b/src/main/java/a8k/utils/ZDateUtils.java index 2e7e523..d863080 100644 --- a/src/main/java/a8k/utils/ZDateUtils.java +++ b/src/main/java/a8k/utils/ZDateUtils.java @@ -25,4 +25,9 @@ public class ZDateUtils { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS"); return sdf.format(date); } + + public static String toID(Date date) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + return sdf.format(date); + } } diff --git a/src/main/java/a8k/utils/ZSqliteJdbcHelper.java b/src/main/java/a8k/utils/ZSqliteJdbcHelper.java index 7a22cd4..8459858 100644 --- a/src/main/java/a8k/utils/ZSqliteJdbcHelper.java +++ b/src/main/java/a8k/utils/ZSqliteJdbcHelper.java @@ -77,7 +77,7 @@ public class ZSqliteJdbcHelper { // if (rs == null || rs.wasNull()) { // // } -// logger.info("+++++++++++++++++++++++++++++++++++++++++++++{}", rs.toString()); + // logger.info("+++++++++++++++++++++++++++++++++++++++++++++{}", rs.toString()); Object obj = tClass.newInstance(); @@ -117,7 +117,11 @@ public class ZSqliteJdbcHelper { Method methodValueOf = null; try { methodValueOf = field.getType().getMethod("valueOf", String.class); - field.set(obj, methodValueOf.invoke(null, rs.getString(field.getName()))); + if (rs.getString(field.getName()) == null || rs.getString(field.getName()).isEmpty()) + field.set(obj, null); + else { + field.set(obj, methodValueOf.invoke(null, rs.getString(field.getName()))); + } } catch (NoSuchMethodException | InvocationTargetException e) { throw new RuntimeException(e); }