From e96bd1e12541afbd47555efea1d72aa2f9bc4f46 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Mon, 23 Sep 2024 11:33:52 +0800 Subject: [PATCH] update --- app.db | Bin 212992 -> 217088 bytes .../extapi/pagecontrol/ExtApiTabConfig.java | 4 +- .../java/a8k/dbservice/A8kProjIdCardDBService.java | 84 +++++++++++++++++++++ .../a8k/dbservice/type/A8kProjIdCardDBIterm.java | 9 +++ .../java/a8k/olddbservice/LanguageDictIterm.java | 18 ----- src/main/java/a8k/service/LanguageDictService.java | 30 -------- src/main/java/a8k/type/projecttype/A8kFnType.java | 13 ++++ src/main/java/a8k/type/projecttype/A8kOptType.java | 16 ++++ .../type/projecttype/A8kPiecewiseFnFormula.java | 10 +++ .../java/a8k/type/projecttype/A8kResultUnit.java | 57 ++++++++++++++ .../type/projecttype/IndependentVariableType.java | 16 ++++ src/main/java/a8k/type/projecttype/SampleType.java | 7 ++ .../type/projecttype/a8kidcard/A8kFnFormula.java | 10 +++ .../type/projecttype/a8kidcard/A8kIdCardFn.java | 45 +++++++++++ .../type/projecttype/a8kidcard/A8kIdCardInfo.java | 42 +++++++++++ .../a8kidcard/A8kIdCardProjectFormula.java | 14 ++++ 16 files changed, 325 insertions(+), 50 deletions(-) create mode 100644 src/main/java/a8k/dbservice/A8kProjIdCardDBService.java create mode 100644 src/main/java/a8k/dbservice/type/A8kProjIdCardDBIterm.java delete mode 100644 src/main/java/a8k/olddbservice/LanguageDictIterm.java delete mode 100644 src/main/java/a8k/service/LanguageDictService.java create mode 100644 src/main/java/a8k/type/projecttype/A8kFnType.java create mode 100644 src/main/java/a8k/type/projecttype/A8kOptType.java create mode 100644 src/main/java/a8k/type/projecttype/A8kPiecewiseFnFormula.java create mode 100644 src/main/java/a8k/type/projecttype/A8kResultUnit.java create mode 100644 src/main/java/a8k/type/projecttype/IndependentVariableType.java create mode 100644 src/main/java/a8k/type/projecttype/SampleType.java create mode 100644 src/main/java/a8k/type/projecttype/a8kidcard/A8kFnFormula.java create mode 100644 src/main/java/a8k/type/projecttype/a8kidcard/A8kIdCardFn.java create mode 100644 src/main/java/a8k/type/projecttype/a8kidcard/A8kIdCardInfo.java create mode 100644 src/main/java/a8k/type/projecttype/a8kidcard/A8kIdCardProjectFormula.java diff --git a/app.db b/app.db index e238d820d3d8ccd8b5f9f9f40179f02556f4ff6d..0f101ceb2d4c1dbf9b7e9427e2a8a0dd9da848b1 100644 GIT binary patch delta 793 zcma))y>1gh5XXH!J0UpE87M$XBrbB{6dAF5ySFz>m4Mt)AQTrADBjx-WI0Nr-~u6p z?E-43Xb}ws1xOa6IBFH?`z|#Z)rSv_~kxZcGmhmKrp>OQu&d6qE1f_ z6%G#vMyoUP=)9lazSrG9=*9>8x9)V~^RMwvXJ9(<;CN&o+Oyrbb96E)0weo)O+g5n(b9F2H)qcCz`U6Y*&*}gG delta 655 zcma))zityj5XSF(wnebd7wSaf&lONG((M0Ts=S0tB=61cJO#q0fEwO_j)DRt3sL4Z z@&IY+B2iF;Jx6K5D~)!F@0)M*)9gOCyIuS7?9sleDqZUSJ^S=h)%$mw_nZ31X7c9k zHj?q#2|&vZv`iL;IArk7Msl78X<{El5X?B6t7dOahHLK|n4Y zWyQA4cBFf6nZ3oy-CB~ouqpwGRCK{Ph=~V4&uEMySH6-_90KdR3{)9kc@Y4WLeOf6 z5ONe?g7ex~rm|nLcel331=gn>Z7mYWfX#fBK diff --git a/src/main/java/a8k/controler/extapi/pagecontrol/ExtApiTabConfig.java b/src/main/java/a8k/controler/extapi/pagecontrol/ExtApiTabConfig.java index 5132aba..911bbed 100644 --- a/src/main/java/a8k/controler/extapi/pagecontrol/ExtApiTabConfig.java +++ b/src/main/java/a8k/controler/extapi/pagecontrol/ExtApiTabConfig.java @@ -5,8 +5,8 @@ public enum ExtApiTabConfig { AppUserMgrService("应用.用户管理", true), //Ok AppSettingsMgr("应用.设备配置管理", true), //OK - AppConsumablesMgrService("应用.耗材", true), - AppProjectItemMgrService("应用.ID卡管理", true), + AppProjectItemMgrService("应用.项目信息管理", true), + AppConsumablesMgrService("应用.耗材扫描", true), AppStateMgrService("应用.设备状态管理", true), SampleFormulaMgrService("应用.配方管理", true), AppCtrlService("应用.设备控制", true), diff --git a/src/main/java/a8k/dbservice/A8kProjIdCardDBService.java b/src/main/java/a8k/dbservice/A8kProjIdCardDBService.java new file mode 100644 index 0000000..45331b0 --- /dev/null +++ b/src/main/java/a8k/dbservice/A8kProjIdCardDBService.java @@ -0,0 +1,84 @@ +package a8k.dbservice; + +import a8k.dbservice.type.A8kProjIdCardDBIterm; +import a8k.dbservice.type.AppSetting; +import a8k.dbservice.type.appsetting.AppSettingName; +import a8k.dbservice.type.appsetting.AppSettingTab; +import a8k.dbservice.type.appsetting.AppSettingType; +import a8k.type.projecttype.a8kidcard.A8kIdCardInfo; +import a8k.utils.ZEnumHelper; +import a8k.utils.ZSqliteJdbcHelper; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import lombok.SneakyThrows; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +@Component +public class A8kProjIdCardDBService { + private static final Logger logger = LoggerFactory.getLogger(A8kProjIdCardDBService.class); + private static final String tableName = "zapp_a8k_idcards"; + + + @Resource + JdbcTemplate jdbcTemplate; + + @PostConstruct + void init() { + if (!ZSqliteJdbcHelper.isTableExist(jdbcTemplate, tableName)) { + createTable(); + } + } + + // private AppSetting rowMapper(ResultSet rs, int rowNum) throws SQLException + + private A8kProjIdCardDBIterm rowMapper(ResultSet rs, int rowNum) throws SQLException { + A8kProjIdCardDBIterm obj = new A8kProjIdCardDBIterm(); + obj.id = rs.getInt("id"); + obj.lotid = rs.getString("lotid"); + try { + ObjectMapper objectMapper = new ObjectMapper(); + obj.idcardinfo = objectMapper.readValue(rs.getString("idcardinfo"), A8kIdCardInfo.class); + } catch (JsonProcessingException e) { + logger.error(e.toString()); + } + + + return obj; + } + + private void createTable() { + jdbcTemplate.execute("create table " + tableName + " ('id' integer," + + " 'lotid' text," + + " 'idcardinfo' text," + + " PRIMARY KEY ('id' DESC));"); + } + + public void addIdCard(A8kProjIdCardDBIterm idcard) { + ObjectMapper objectMapper = new ObjectMapper(); + + try { + jdbcTemplate.update("insert into " + tableName + "(lotid, idcardinfo) values(?, ?);",// + idcard.lotid, objectMapper.writeValueAsString(idcard.idcardinfo)); + } catch (JsonProcessingException e) { + logger.error(e.toString()); + } + } + + public List getAllIdCards() { + return jdbcTemplate.query("select * from " + tableName + ";", this::rowMapper); + } + + public A8kProjIdCardDBIterm getIdCardByLotId(String lotid) { + return jdbcTemplate.queryForObject("select * from " + tableName + " where lotid = ?;", this::rowMapper, lotid); + } + +} diff --git a/src/main/java/a8k/dbservice/type/A8kProjIdCardDBIterm.java b/src/main/java/a8k/dbservice/type/A8kProjIdCardDBIterm.java new file mode 100644 index 0000000..13b301c --- /dev/null +++ b/src/main/java/a8k/dbservice/type/A8kProjIdCardDBIterm.java @@ -0,0 +1,9 @@ +package a8k.dbservice.type; + +import a8k.type.projecttype.a8kidcard.A8kIdCardInfo; + +public class A8kProjIdCardDBIterm { + public int id; + public String lotid; + public A8kIdCardInfo idcardinfo; +} diff --git a/src/main/java/a8k/olddbservice/LanguageDictIterm.java b/src/main/java/a8k/olddbservice/LanguageDictIterm.java deleted file mode 100644 index b56d7cd..0000000 --- a/src/main/java/a8k/olddbservice/LanguageDictIterm.java +++ /dev/null @@ -1,18 +0,0 @@ -package a8k.olddbservice; - -import com.iflytop.uf.UfActiveRecord; -import com.iflytop.uf.UfActiveRecordField; - -public class LanguageDictIterm extends UfActiveRecord { - - @UfActiveRecordField - public String key; - @UfActiveRecordField - public String country; - @UfActiveRecordField - public String value; - // get table name - public static String getTableName() { - return String.format("%sTable", LanguageDictIterm.class.getSimpleName()); - } -} diff --git a/src/main/java/a8k/service/LanguageDictService.java b/src/main/java/a8k/service/LanguageDictService.java deleted file mode 100644 index bfd3209..0000000 --- a/src/main/java/a8k/service/LanguageDictService.java +++ /dev/null @@ -1,30 +0,0 @@ -package a8k.service; - -import a8k.type.appret.AppRet; -import a8k.olddbservice.LanguageDictIterm; -import com.iflytop.uf.UfActiveRecord; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.Map; - -@Component -public class LanguageDictService { - - List dbGetLanguageDict() { - return UfActiveRecord.find(LanguageDictIterm.class); - } - - List dbGetLanguageDict(String country) { - return UfActiveRecord.find(LanguageDictIterm.class, Map.of("country", country)); - } - - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - // PUBLIC - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - public AppRet> getLanguageDict(String country) { - return AppRet.success(dbGetLanguageDict(country)); - } - -} diff --git a/src/main/java/a8k/type/projecttype/A8kFnType.java b/src/main/java/a8k/type/projecttype/A8kFnType.java new file mode 100644 index 0000000..e84aded --- /dev/null +++ b/src/main/java/a8k/type/projecttype/A8kFnType.java @@ -0,0 +1,13 @@ +package a8k.type.projecttype; + +public enum A8kFnType { + NotSet(0), //未设置 + NormalFn(1),//正常函数 + PiecewiseFn(2),//分段函数 + ; + final int val; + + A8kFnType(int val) { + this.val = val; + } +} diff --git a/src/main/java/a8k/type/projecttype/A8kOptType.java b/src/main/java/a8k/type/projecttype/A8kOptType.java new file mode 100644 index 0000000..b45348e --- /dev/null +++ b/src/main/java/a8k/type/projecttype/A8kOptType.java @@ -0,0 +1,16 @@ +package a8k.type.projecttype; + +public enum A8kOptType { + Auto(0), + FOpt(1), + TOpt(2), + FAndTOpt(3), + ; + + public final int code; + static final int max = 4; + + A8kOptType(int code) { + this.code = code; + } +} diff --git a/src/main/java/a8k/type/projecttype/A8kPiecewiseFnFormula.java b/src/main/java/a8k/type/projecttype/A8kPiecewiseFnFormula.java new file mode 100644 index 0000000..1078ac8 --- /dev/null +++ b/src/main/java/a8k/type/projecttype/A8kPiecewiseFnFormula.java @@ -0,0 +1,10 @@ +package a8k.type.projecttype; + +public class A8kPiecewiseFnFormula { + Double A; + Double B; + Double C; + Double D; + Double lowLimit; + Double upLimit; +} diff --git a/src/main/java/a8k/type/projecttype/A8kResultUnit.java b/src/main/java/a8k/type/projecttype/A8kResultUnit.java new file mode 100644 index 0000000..8a3d336 --- /dev/null +++ b/src/main/java/a8k/type/projecttype/A8kResultUnit.java @@ -0,0 +1,57 @@ +package a8k.type.projecttype; + +public enum A8kResultUnit { + Original(0, "original"), + illegalUint(1, "illegalityUint"), + pgPml(2, "pg/mL"), + ngPml(3, "ng/mL"), + ugPml(4, "ug/mL"), + mgPml(5, "mg/mL"), + pgPl(6, "pg/L"), + ngPl(7, "ng/L"), + ugPl(8, "ug/L"), + mgPl(9, "mg/L"), + gPl(10, "g/L"), + ngPdl(11, "ng/dL"), + ugPdl(12, "ug/dL"), + mgPdl(13, "mg/dL"), + gPdl(14, "g/dL"), + pmolPl(15, "pmol/L"), + nmolPl(16, "nmol/L"), + umolPl(17, "umol/L"), + mmolPl(18, "mmol/L"), + uiuPml(19, "uIU/mL"), + miuPml(20, "mIU/mL"), + iuPml(21, "IU/mL"), + uuPml(22, "uU/mL"), + muPml(23, "mU/mL"), + uPml(24, "U/mL"), + muPl(25, "mU/L"), + uPl(26, "U/L"), + kiuPl(27, "kIU/L"), + kuPl(28, "kU/L"), + percent(29, "%"), + mmolPmol(30, "mmol/mol"), + milPul(31, "mil/uL"), + mmP1h(32, "mm/1h"), + ul(33, "/uL"), + ukatPl(34, "ukat/L"), + nkatPl(35, "nkat/L"), + mptPl(36, "mpt/L"), + tptPl(37, "tpt/L"), + gptPl(38, "gpt/L"), + pfuPml(39, "PFU/mL"), + cfuPml(40, "CFU/mL"), + sPco(41, "S/CO"), + coi(42, "COI"), + index(43, "Index"); + + + public final int val; + public final String unitstr; + + A8kResultUnit(int val, String unitstr) { + this.val = val; + this.unitstr = unitstr; + } +} diff --git a/src/main/java/a8k/type/projecttype/IndependentVariableType.java b/src/main/java/a8k/type/projecttype/IndependentVariableType.java new file mode 100644 index 0000000..1427ce4 --- /dev/null +++ b/src/main/java/a8k/type/projecttype/IndependentVariableType.java @@ -0,0 +1,16 @@ +package a8k.type.projecttype; + +public enum IndependentVariableType { + Ratio(1),// T/C + ATR(2), // H/C + AntiRatio(3), // T/H + RFRatio(4),// R/C + RTRatio(4),// T/R + ; + + int val = 0; + IndependentVariableType(int val) { + this.val = val; + } + +} diff --git a/src/main/java/a8k/type/projecttype/SampleType.java b/src/main/java/a8k/type/projecttype/SampleType.java new file mode 100644 index 0000000..424febf --- /dev/null +++ b/src/main/java/a8k/type/projecttype/SampleType.java @@ -0,0 +1,7 @@ +package a8k.type.projecttype; + +public enum SampleType { + WholeBlood, //全血 + Serum, //血清 + ; +} diff --git a/src/main/java/a8k/type/projecttype/a8kidcard/A8kFnFormula.java b/src/main/java/a8k/type/projecttype/a8kidcard/A8kFnFormula.java new file mode 100644 index 0000000..a47763c --- /dev/null +++ b/src/main/java/a8k/type/projecttype/a8kidcard/A8kFnFormula.java @@ -0,0 +1,10 @@ +package a8k.type.projecttype.a8kidcard; + +public class A8kFnFormula { + public Double A; + public Double B; + public Double C; + public Double D; + public Double lowLimit; + public Double upLimit; +} diff --git a/src/main/java/a8k/type/projecttype/a8kidcard/A8kIdCardFn.java b/src/main/java/a8k/type/projecttype/a8kidcard/A8kIdCardFn.java new file mode 100644 index 0000000..99a124e --- /dev/null +++ b/src/main/java/a8k/type/projecttype/a8kidcard/A8kIdCardFn.java @@ -0,0 +1,45 @@ +package a8k.type.projecttype.a8kidcard; + +import a8k.type.projecttype.A8kResultUnit; +import a8k.type.projecttype.IndependentVariableType; + +public class A8kIdCardFn { + + // 非分段函数 + public IndependentVariableType fnX; // 函数未知数是 + public Double fnXMin; // 函数未知数下限闻值 + public Double fnXMax; // 函数未知数上限闻值 + + //血清函数系数 + public A8kFnFormula serumFn; + //全血函数系数 + public A8kFnFormula bloodFn; + + // 分段函数 + public Integer pwFnJudeX; // 分界判断数据来源 + public Double pwFnJudeThres; // 分界判断数据值 + public Double pwFnLCX; // 低浓度未知数 + public Double pwFnHCX; // 高浓度未知数 + public Double pwFnXMin; // 函数未知数下限闻值 + public Double pwFnXMax; // 函数未知数上限闻值 + + public A8kFnFormula serumLCFn; + public A8kFnFormula serumHCFn; + + public A8kFnFormula bloodLCFn; + public A8kFnFormula bloodHCFn; + + // 结果 + public A8kResultUnit ret1Unit; // 单位 + public A8kResultUnit ret2Unit; // 单位 + public A8kResultUnit ret3Unit; // 单位 + + // + public Double resultToUint2FnA; // 结果转换为单位2的函数A result2 = A * result1 + B + public Double resultToUint2FnB; // 结果转换为单位2的函数B + + // + public Double resultToUint3FnA; // 结果转换为单位3的函数A result3 = A * result1 + B + public Double resultToUint3FnB; // 结果转换为单位3的函数B + +} diff --git a/src/main/java/a8k/type/projecttype/a8kidcard/A8kIdCardInfo.java b/src/main/java/a8k/type/projecttype/a8kidcard/A8kIdCardInfo.java new file mode 100644 index 0000000..8352cc8 --- /dev/null +++ b/src/main/java/a8k/type/projecttype/a8kidcard/A8kIdCardInfo.java @@ -0,0 +1,42 @@ +package a8k.type.projecttype.a8kidcard; + +import a8k.type.projecttype.A8kOptType; +import a8k.type.projecttype.SampleType; + +public class A8kIdCardInfo { + public String projectName; // 项目名称 + public String lotName; // 批次名称 + public String expiryDate; // 有效日期 + public Integer projectCode; // 项目名称代码 + public Integer palteCode; // 板条条码代码 + + public Integer updateChipVersion; // 更新芯片版本号 + public Double QCPeakMinVal; // 质控峰最小值 + public Double QCPeakMaxVal; // 质控峰最大值 设置值x10最大不超过250000 + public A8kOptType optType; // 光学类型 光学类型(0=自动;1=F光学;2=T光学;3=F/T光学;其他=无效;) + public Integer optFixedGainSetting; // 光学固定增益设置 + public Integer optAreaPeakCount; // 光学面积峰个数 + public Integer calculationDirection; // 计算方向 + public SampleType sampleType; // 样本类型 + public Integer equipmentManufacturer; // 设备厂商 + public Integer tOptIlluminationTime; // T光学持续光照时间 + public Integer incMultiInstruDataMerge; // 是否包含多款仪器数据合并 + public Integer multiInstruDataMerge; // 多款仪器数据合并 + public Integer wBloodSampleVol; // 全血样本量 + public Integer serumSampleVol; // 血清/血浆样本量 + public Integer tubeMixingCount; // 试管混匀次数 + public Integer bufferBottleSize; // 缓冲液瓶大小 + public Integer bufferBottleCapacity; // 缓冲液瓶容量 + public Integer buffLiquidAspirMixingCnt; // 缓冲液吸吐混匀次数 + public Integer buffLiquidAspirMixingVol; // 缓冲液吐混混匀量 + public Integer buffLiquidReactionTime; // 缓冲液反应时间 + public Integer reactionPlateReactionTime; // 反应板反应时间 + public Integer reactionPlateDropletVol; // 反应板滴样量 + public Integer resultDecimalPlaces; // 结果小数点位数 + public Integer scanningRange; // 扫描范围 + + + public A8kIdCardProjectFormula projFormula; + + +} diff --git a/src/main/java/a8k/type/projecttype/a8kidcard/A8kIdCardProjectFormula.java b/src/main/java/a8k/type/projecttype/a8kidcard/A8kIdCardProjectFormula.java new file mode 100644 index 0000000..e13e142 --- /dev/null +++ b/src/main/java/a8k/type/projecttype/a8kidcard/A8kIdCardProjectFormula.java @@ -0,0 +1,14 @@ +package a8k.type.projecttype.a8kidcard; + +public class A8kIdCardProjectFormula { + // 项目头部信息 + public Integer pjNum; // 当前项目是几联卡项目,val = 1,2,3 + public Integer pj1CurveType; // 项目1 结果曲线是否为分段函数, 1=非分段函数,2=分段函数 + public Integer pj2CurveType; // 项目2 结果曲线是否为分段函数 + public Integer pj3CurveType; // 项目3 结果曲线是否为分段函数 + + public A8kIdCardFn pj1FnInfo; + public A8kIdCardFn pj2FnInfo; + public A8kIdCardFn pj3FnInfo; + +}