From 707ffe5012e7704c0ba6e60b30673f6029aff918 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 26 Sep 2024 09:13:37 +0800 Subject: [PATCH] update --- .../controler/extapi/EngineerPageControler.java | 2 +- .../extapi/utils/EnginnerParamReader.java | 2 +- .../java/a8k/hardware/HardwareServiceSetting.java | 104 ++++++++++ src/main/java/a8k/olddbservice/DBTableVersion.java | 38 ---- .../a8k/olddbservice/HardwareServiceSetting.java | 104 ---------- src/main/java/a8k/olddbservice/MdbOption.java | 84 -------- src/main/java/a8k/olddbservice/ProjectInfo.java | 211 --------------------- .../a8k/service/app/AppConsumablesMgrService.java | 1 - .../service/app/appstate/AppStateMgrService.java | 5 - .../a8k/service/bak_appbase/A8kDeviceState.java | 4 +- src/main/java/a8k/type/ProjectInfoSimple.java | 21 -- 11 files changed, 107 insertions(+), 469 deletions(-) create mode 100644 src/main/java/a8k/hardware/HardwareServiceSetting.java delete mode 100644 src/main/java/a8k/olddbservice/DBTableVersion.java delete mode 100644 src/main/java/a8k/olddbservice/HardwareServiceSetting.java delete mode 100644 src/main/java/a8k/olddbservice/MdbOption.java delete mode 100644 src/main/java/a8k/olddbservice/ProjectInfo.java delete mode 100644 src/main/java/a8k/type/ProjectInfoSimple.java diff --git a/src/main/java/a8k/controler/extapi/EngineerPageControler.java b/src/main/java/a8k/controler/extapi/EngineerPageControler.java index 77bb7f3..cd75366 100644 --- a/src/main/java/a8k/controler/extapi/EngineerPageControler.java +++ b/src/main/java/a8k/controler/extapi/EngineerPageControler.java @@ -2,7 +2,7 @@ package a8k.controler.extapi; import a8k.type.appret.AppRet; import a8k.controler.extapi.utils.*; -import a8k.olddbservice.HardwareServiceSetting; +import a8k.hardware.HardwareServiceSetting; import a8k.utils.*; import com.iflytop.uf.UfApplication; import com.iflytop.uf.util.UfClassHelper; diff --git a/src/main/java/a8k/controler/extapi/utils/EnginnerParamReader.java b/src/main/java/a8k/controler/extapi/utils/EnginnerParamReader.java index 89c651c..aefd7d1 100644 --- a/src/main/java/a8k/controler/extapi/utils/EnginnerParamReader.java +++ b/src/main/java/a8k/controler/extapi/utils/EnginnerParamReader.java @@ -1,6 +1,6 @@ package a8k.controler.extapi.utils; -import a8k.olddbservice.HardwareServiceSetting; +import a8k.hardware.HardwareServiceSetting; import a8k.type.exception.AppException; diff --git a/src/main/java/a8k/hardware/HardwareServiceSetting.java b/src/main/java/a8k/hardware/HardwareServiceSetting.java new file mode 100644 index 0000000..da6b542 --- /dev/null +++ b/src/main/java/a8k/hardware/HardwareServiceSetting.java @@ -0,0 +1,104 @@ +package a8k.hardware; + +import a8k.hardware.type.a8kcanprotocol.A8kEcode; +import a8k.type.exception.AppException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.iflytop.uf.UfActiveRecord; +import com.iflytop.uf.UfActiveRecordField; +import com.iflytop.uf.util.UfJsonHelper; + +import java.util.Map; + +public class HardwareServiceSetting extends UfActiveRecord { + @UfActiveRecordField + public String key; + @UfActiveRecordField + public String serviceName; //属于哪个服务的, hardware目录下的类名 + @UfActiveRecordField + public String valType; + @UfActiveRecordField + public String val; + + public static String getTableName() { + return "HardwareServiceSetting" + "Table"; + } + + public static void deleteAllByServiceName(String serviceName) { + var items = UfActiveRecord.find(HardwareServiceSetting.class, Map.of("ServiceName", serviceName)); + for (var item : items) { + item.delete(); + } + } + + public void setValue(Object value) throws Exception { + if (value instanceof String) { + this.val = (String) value; + } else if (value instanceof Integer) { + this.val = String.valueOf((Integer) value); + } else if (value instanceof Map) { + this.val = UfJsonHelper.objectToJson(value); + } else { + this.val = UfJsonHelper.objectToJson(value); + } + } + + public static HardwareServiceSetting getOption(String service, String key) { + var option = UfActiveRecord.findOne(HardwareServiceSetting.class, Map.of("serviceName", service, "key", key)); + if (null == option) { + option = new HardwareServiceSetting(); + option.serviceName = service; + option.key = key; + option.val = null; + } + return option; + } + + + public static void setOption(String service, String key, Object value) throws Exception { + var options = getOption(service, key); + options.setValue(value); + options.save(); + } + + public static T getObject(String service, String key, Class clazs) throws AppException { + var option = UfActiveRecord.findOne(HardwareServiceSetting.class, Map.of("serviceName", service, "key", key)); + if (option == null) { + throw new AppException(A8kEcode.GetParamFail.index); + } + ObjectMapper mapper = new ObjectMapper(); + try { + return mapper.readValue(option.val, clazs); + } catch (JsonProcessingException e) { + throw new AppException(A8kEcode.ParseParamFail.index); + } + } + + + public static T getObject(String service, String key, Class clazs, T defaultVal) { + var option = UfActiveRecord.findOne(HardwareServiceSetting.class, Map.of("serviceName", service, "key", key)); + if (option == null) { + return defaultVal; + } + ObjectMapper mapper = new ObjectMapper(); + try { + return mapper.readValue(option.val, clazs); + } catch (JsonProcessingException e) { + return defaultVal; + } + } + + public static Integer getInteger(String service, String key, Integer defaultValue) { + var option = HardwareServiceSetting.getOption(service, key); + if (null == option.val) { + return defaultValue; + } + return Integer.parseInt(option.val); + } + + public static void setInteger(String service, String key, Integer value) { + var option = HardwareServiceSetting.getOption(service, key); + option.val = String.valueOf(value); + option.save(); + } +} diff --git a/src/main/java/a8k/olddbservice/DBTableVersion.java b/src/main/java/a8k/olddbservice/DBTableVersion.java deleted file mode 100644 index c96e642..0000000 --- a/src/main/java/a8k/olddbservice/DBTableVersion.java +++ /dev/null @@ -1,38 +0,0 @@ -package a8k.olddbservice; - -import com.iflytop.uf.UfActiveRecord; -import com.iflytop.uf.UfActiveRecordField; - -import java.util.Map; - -public class DBTableVersion extends UfActiveRecord { - @UfActiveRecordField - public String tableName; - @UfActiveRecordField - public Integer version; - - public static String getTableName() { - return DBTableVersion.class.getSimpleName() + "Table"; - } - - public static void setTableVersion(String tableName, Integer version) { - var dbDataVersion = UfActiveRecord.findOne(DBTableVersion.class, Map.of("tableName", tableName)); - if (null == dbDataVersion) { - dbDataVersion = new DBTableVersion(); - dbDataVersion.tableName = tableName; - dbDataVersion.version = version; - dbDataVersion.save(); - } else { - dbDataVersion.version = version; - dbDataVersion.save(); - } - } - - public static Integer getTableVersion(String tableName) { - var dbDataVersion = UfActiveRecord.findOne(DBTableVersion.class, Map.of("tableName", tableName)); - if (null == dbDataVersion) { - return 0; - } - return dbDataVersion.version; - } -} diff --git a/src/main/java/a8k/olddbservice/HardwareServiceSetting.java b/src/main/java/a8k/olddbservice/HardwareServiceSetting.java deleted file mode 100644 index 154ed86..0000000 --- a/src/main/java/a8k/olddbservice/HardwareServiceSetting.java +++ /dev/null @@ -1,104 +0,0 @@ -package a8k.olddbservice; - -import a8k.hardware.type.a8kcanprotocol.A8kEcode; -import a8k.type.exception.AppException; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.iflytop.uf.UfActiveRecord; -import com.iflytop.uf.UfActiveRecordField; -import com.iflytop.uf.util.UfJsonHelper; - -import java.util.Map; - -public class HardwareServiceSetting extends UfActiveRecord { - @UfActiveRecordField - public String key; - @UfActiveRecordField - public String serviceName; //属于哪个服务的, hardware目录下的类名 - @UfActiveRecordField - public String valType; - @UfActiveRecordField - public String val; - - public static String getTableName() { - return "HardwareServiceSetting" + "Table"; - } - - public static void deleteAllByServiceName(String serviceName) { - var items = UfActiveRecord.find(HardwareServiceSetting.class, Map.of("ServiceName", serviceName)); - for (var item : items) { - item.delete(); - } - } - - public void setValue(Object value) throws Exception { - if (value instanceof String) { - this.val = (String) value; - } else if (value instanceof Integer) { - this.val = String.valueOf((Integer) value); - } else if (value instanceof Map) { - this.val = UfJsonHelper.objectToJson(value); - } else { - this.val = UfJsonHelper.objectToJson(value); - } - } - - public static HardwareServiceSetting getOption(String service, String key) { - var option = UfActiveRecord.findOne(HardwareServiceSetting.class, Map.of("serviceName", service, "key", key)); - if (null == option) { - option = new HardwareServiceSetting(); - option.serviceName = service; - option.key = key; - option.val = null; - } - return option; - } - - - public static void setOption(String service, String key, Object value) throws Exception { - var options = getOption(service, key); - options.setValue(value); - options.save(); - } - - public static T getObject(String service, String key, Class clazs) throws AppException { - var option = UfActiveRecord.findOne(HardwareServiceSetting.class, Map.of("serviceName", service, "key", key)); - if (option == null) { - throw new AppException(A8kEcode.GetParamFail.index); - } - ObjectMapper mapper = new ObjectMapper(); - try { - return mapper.readValue(option.val, clazs); - } catch (JsonProcessingException e) { - throw new AppException(A8kEcode.ParseParamFail.index); - } - } - - - public static T getObject(String service, String key, Class clazs, T defaultVal) { - var option = UfActiveRecord.findOne(HardwareServiceSetting.class, Map.of("serviceName", service, "key", key)); - if (option == null) { - return defaultVal; - } - ObjectMapper mapper = new ObjectMapper(); - try { - return mapper.readValue(option.val, clazs); - } catch (JsonProcessingException e) { - return defaultVal; - } - } - - public static Integer getInteger(String service, String key, Integer defaultValue) { - var option = HardwareServiceSetting.getOption(service, key); - if (null == option.val) { - return defaultValue; - } - return Integer.parseInt(option.val); - } - - public static void setInteger(String service, String key, Integer value) { - var option = HardwareServiceSetting.getOption(service, key); - option.val = String.valueOf(value); - option.save(); - } -} diff --git a/src/main/java/a8k/olddbservice/MdbOption.java b/src/main/java/a8k/olddbservice/MdbOption.java deleted file mode 100644 index 0e66a9d..0000000 --- a/src/main/java/a8k/olddbservice/MdbOption.java +++ /dev/null @@ -1,84 +0,0 @@ -package a8k.olddbservice; -import com.iflytop.uf.UfActiveRecord; -import com.iflytop.uf.UfActiveRecordField; -import java.util.Map; -public class MdbOption extends UfActiveRecord { - @UfActiveRecordField - public String key; - - @UfActiveRecordField - public String value; - - @UfActiveRecordField - public String comment; - - @UfActiveRecordField - public String editable; - - @UfActiveRecordField - public String dataType; - - @UfActiveRecordField - public String unit; - - // get table name - public static String getTableName() { - return "app_options"; - } - - // get option - public static String getString(String key, String defaultValue ) { - var option = UfActiveRecord.findOne(MdbOption.class, Map.of("key", key)); - if ( null == option ) { - return defaultValue; - } - return option.value; - } - - // get option string - public static String getString( String key ) { - var option = UfActiveRecord.findOne(MdbOption.class, Map.of("key", key)); - if ( null == option ) { - throw new RuntimeException("Option not found : " + key); - } - return option.value; - } - - // get option - public static Integer getInteger(String key, Integer defaultValue ) { - var option = MdbOption.getString(key, defaultValue.toString()); - return Integer.parseInt(option); - } - - // get option - public static Integer getInteger( String key ) { - var option = MdbOption.getString(key); - return Integer.parseInt(option); - } - - // get option - public static Double getDouble(String key, Double defaultValue ) { - var option = MdbOption.getString(key, defaultValue.toString()); - return Double.parseDouble(option); - } - - // get option value as double - public static Double getDouble( String key ) { - var option = MdbOption.getString(key); - return Double.parseDouble(option); - } - - // get as boolean - public static Boolean getBoolean( String key, Boolean defaultValue ) { - var option = MdbOption.getString(key, defaultValue ? "1" : "0"); - option = option.toLowerCase(); - return "1".equals(option) || "true".equals(option) || "yes".equals(option) || "on".equals(option); - } - - // get option value as boolean - public static Boolean getBoolean( String key ) { - var option = MdbOption.getString(key); - option = option.toLowerCase(); - return "1".equals(option) || "true".equals(option) || "yes".equals(option) || "on".equals(option); - } -} diff --git a/src/main/java/a8k/olddbservice/ProjectInfo.java b/src/main/java/a8k/olddbservice/ProjectInfo.java deleted file mode 100644 index 3215518..0000000 --- a/src/main/java/a8k/olddbservice/ProjectInfo.java +++ /dev/null @@ -1,211 +0,0 @@ -package a8k.olddbservice; - -import com.iflytop.uf.UfActiveRecord; -import com.iflytop.uf.UfActiveRecordField; - -import java.util.Date; - -//ref:https://iflytop1.feishu.cn/wiki/HvDlwbEWDi4fgkkL6qSc2iLGnte -public class ProjectInfo extends UfActiveRecord { - - public static String getTableName() { - return "ProjectInfoTable"; - } - - @UfActiveRecordField - public Integer buildIn;//是否是内置,如果是内置则不显示,作为项目的默认值使用 - - @UfActiveRecordField - public String insertTime = new Date().toString(); //插入时间 - - @UfActiveRecordField - public String projectName; //项目名称 - @UfActiveRecordField - public String lotName; //批次名称 - @UfActiveRecordField - public String expiryDate; //有效日期 - @UfActiveRecordField - public String projectCode; //项目名称代码 - @UfActiveRecordField - public Integer palteCode; // 板条条码代码 - @UfActiveRecordField - public Integer updateChipVersion; // 更新芯片版本号 - @UfActiveRecordField - public Double QCPeakMinVal; // 质控峰最小值 - @UfActiveRecordField - public Double QCPeakMaxVal; // 质控峰最大值 设置值x10最大不超过250000 - @UfActiveRecordField - public Integer optType; //光学类型 光学类型(0=自动;1=F光学;2=T光学;3=F/T光学;其他=无效;) - @UfActiveRecordField - public Integer optFixedGainSetting; //光学固定增益设置 - @UfActiveRecordField - public Integer optAreaPeakCount; //光学面积峰个数 - @UfActiveRecordField - public Integer calculationDirection; //计算方向 - @UfActiveRecordField - public Integer sampleType; //样本类型 - @UfActiveRecordField - public Integer equipmentManufacturer; //设备厂商 - @UfActiveRecordField - public Integer tOptIlluminationTime; //T光学持续光照时间 - @UfActiveRecordField - public Integer incMultiInstruDataMerge; //是否包含多款仪器数据合并 - @UfActiveRecordField - public Integer multiInstruDataMerge; //多款仪器数据合并 - @UfActiveRecordField - public Integer wBloodSampleVol; //全血样本量 - @UfActiveRecordField - public Integer serumSampleVol; //血清/血浆样本量 - @UfActiveRecordField - public Integer tubeMixingCount; //试管混匀次数 - @UfActiveRecordField - public Integer bufferBottleSize; //缓冲液瓶大小 - @UfActiveRecordField - public Integer bufferBottleCapacity; //缓冲液瓶容量 - @UfActiveRecordField - public Integer buffLiquidAspirMixingCnt; //缓冲液吸吐混匀次数 - @UfActiveRecordField - public Integer buffLiquidAspirMixingVol; //缓冲液吐混混匀量 - @UfActiveRecordField - public Integer buffLiquidReactionTime; //缓冲液反应时间 - @UfActiveRecordField - public Integer reactionPlateReactionTime; //反应板反应时间 - @UfActiveRecordField - public Integer reactionPlateDropletVol; //反应板滴样量 - @UfActiveRecordField - public Integer resultDecimalPlaces; //结果小数点位数 - @UfActiveRecordField - public Integer scanningRange; //扫描范围 - - //当前项目是几联卡项目 - //项目1 结果曲线是否为分段函数 - //项目2 结果曲线是否为分段函数 - //项目3 结果曲线是否为分段函数 - - @UfActiveRecordField - public Integer projectNum; //当前项目是几联卡项目 - @UfActiveRecordField - public Integer project1CurveType; //项目1 结果曲线是否为分段函数 - @UfActiveRecordField - public Integer project2CurveType; //项目2 结果曲线是否为分段函数 - @UfActiveRecordField - public Integer project3CurveType; //项目3 结果曲线是否为分段函数 - - //非分段函数 - @UfActiveRecordField - public Integer p0FnX; //函数未知数是 - @UfActiveRecordField - public Double p0FnXMin; //函数未知数下限闻值 - @UfActiveRecordField - public Double p0FnXMax; //函数未知数上限闻值 - @UfActiveRecordField - public Double p0FnSerumA; //A - @UfActiveRecordField - public Double p0FnSerumB; //B - @UfActiveRecordField - public Double p0FnSerumC; //C - @UfActiveRecordField - public Double p0FnSerumD; //D - @UfActiveRecordField - public Double p0FnRtSerumUpLimit; //结果上限 - @UfActiveRecordField - public Double p0FnRtSerumLowLimit; //结果下限 - - @UfActiveRecordField - public Double p0FnBloodA; //A - @UfActiveRecordField - public Double p0FnBloodB; //B - @UfActiveRecordField - public Double p0FnBloodC; //C - @UfActiveRecordField - public Double p0FnBloodD; //D - @UfActiveRecordField - public Double p0FnRtBloodUpLimit; //结果上限 - @UfActiveRecordField - public Double p0FnRtBloodLowLimit; //结果下限 - - //分段函数 - @UfActiveRecordField - public Integer p0PwFnJudeX; //分界判断数据来源 - @UfActiveRecordField - public Double p0PwFnJudeThres; //分界判断数据值 - @UfActiveRecordField - public Double p0PwFnLCX; //低浓度未知数 - @UfActiveRecordField - public Double p0PwFnHCX; //高浓度未知数 - @UfActiveRecordField - public Double p0PwFnXMin; //函数未知数下限闻值 - @UfActiveRecordField - public Double p0PwFnXMax; //函数未知数上限闻值 - - @UfActiveRecordField - public Double p0PwFnLCSerumA; //A - @UfActiveRecordField - public Double p0PwFnLCSerumB; //B - @UfActiveRecordField - public Double p0PwFnLCSerumC; //C - @UfActiveRecordField - public Double p0PwFnLCSerumD; //D - @UfActiveRecordField - public Double p0PwFnLCRtSerumUpLimit; //结果上限 - @UfActiveRecordField - public Double p0PwFnLCRtSerumLowLimit; //结果下限 - - @UfActiveRecordField - public Double p0PwFnHCSerumA; //A - @UfActiveRecordField - public Double p0PwFnHCSerumB; //B - @UfActiveRecordField - public Double p0PwFnHCSerumC; //C - @UfActiveRecordField - public Double p0PwFnHCSerumD; //D - @UfActiveRecordField - public Double p0PwFnHCRtSerumUpLimit; //结果上限 - @UfActiveRecordField - public Double p0PwFnHCRtSerumLowLimit; //结果下限 - - @UfActiveRecordField - public Double p0PwFnLCBloodA; //A - @UfActiveRecordField - public Double p0PwFnLCBloodB; //B - @UfActiveRecordField - public Double p0PwFnLCBloodC; //C - @UfActiveRecordField - public Double p0PwFnLCBloodD; //D - @UfActiveRecordField - public Double p0PwFnLCRtBloodUpLimit; //结果上限 - @UfActiveRecordField - public Double p0PwFnLCRtBloodLowLimit; //结果下限 - - @UfActiveRecordField - public Double p0PwFnHCBloodA; //A - @UfActiveRecordField - public Double p0PwFnHCBloodB; //B - @UfActiveRecordField - public Double p0PwFnHCBloodC; //C - @UfActiveRecordField - public Double p0PwFnHCBloodD; //D - @UfActiveRecordField - public Double p0PwFnHCRtBloodUpLimit; //结果上限 - @UfActiveRecordField - public Double p0PwFnHCRtBloodLowLimit; //结果下限 - - //结果 - @UfActiveRecordField - public Integer ret1Unit; //单位 - @UfActiveRecordField - public Integer ret2Unit; //单位 - @UfActiveRecordField - public Integer ret3Unit; //单位 - - @UfActiveRecordField - public Double ret2UnitFnA; // - @UfActiveRecordField - public Double ret2UnitFnB; // - - @UfActiveRecordField - public Double ret3UnitFnA; // - @UfActiveRecordField - public Double ret3UnitFnB; // - -} diff --git a/src/main/java/a8k/service/app/AppConsumablesMgrService.java b/src/main/java/a8k/service/app/AppConsumablesMgrService.java index 39a36d9..4295770 100644 --- a/src/main/java/a8k/service/app/AppConsumablesMgrService.java +++ b/src/main/java/a8k/service/app/AppConsumablesMgrService.java @@ -122,7 +122,6 @@ public class AppConsumablesMgrService { //解析lotVal - for (int i = 0; i < 6; i++) { // var.reactantItems[i] = new ReactantItem(); // var.reactantItems[i].projId = "PROJECT_" + i; diff --git a/src/main/java/a8k/service/app/appstate/AppStateMgrService.java b/src/main/java/a8k/service/app/appstate/AppStateMgrService.java index 4a9a4f1..fb29ff9 100644 --- a/src/main/java/a8k/service/app/appstate/AppStateMgrService.java +++ b/src/main/java/a8k/service/app/appstate/AppStateMgrService.java @@ -3,8 +3,6 @@ package a8k.service.app.appstate; import a8k.controler.extapi.utils.ExtApiTab; import a8k.controler.extapi.utils.ExtApiFn; import a8k.controler.extapi.pagecontrol.ExtApiTabConfig; -import a8k.olddbservice.ProjectInfo; -import a8k.service.app.app_consumables_mgr_service.ConsumableState; import a8k.service.bak_appbase.A8kDeviceState; import jakarta.annotation.PostConstruct; import org.slf4j.Logger; @@ -26,9 +24,6 @@ public class AppStateMgrService { public void init() { } - public void setCurrentIdCardInfo(ProjectInfo projectInfo) { - deviceState.curIdCardInfo = projectInfo; - } // public void setConsumable(ConsumableState cig) { // deviceState.consumable = cig; diff --git a/src/main/java/a8k/service/bak_appbase/A8kDeviceState.java b/src/main/java/a8k/service/bak_appbase/A8kDeviceState.java index d994c61..54c77a0 100644 --- a/src/main/java/a8k/service/bak_appbase/A8kDeviceState.java +++ b/src/main/java/a8k/service/bak_appbase/A8kDeviceState.java @@ -1,6 +1,5 @@ package a8k.service.bak_appbase; -import a8k.olddbservice.ProjectInfo; import a8k.service.app.app_consumables_mgr_service.ConsumableState; import a8k.service.bak_appbase.runstate.ReactingPlateRunState; import a8k.service.bak_appbase.runstate.EmergencyPosRunState; @@ -19,8 +18,7 @@ public class A8kDeviceState { public TubeHolderRunState tubeHolderRunState = new TubeHolderRunState(); //温度 public Integer temperature = 25; - //当前ID卡信息 - public ProjectInfo curIdCardInfo = null; + public Boolean deviceInited = false; //设备是否初始化过 public Boolean devicePoweredOffNormally = false; //设备是否正常关机 diff --git a/src/main/java/a8k/type/ProjectInfoSimple.java b/src/main/java/a8k/type/ProjectInfoSimple.java deleted file mode 100644 index cec4290..0000000 --- a/src/main/java/a8k/type/ProjectInfoSimple.java +++ /dev/null @@ -1,21 +0,0 @@ -package a8k.type; - -import a8k.olddbservice.ProjectInfo; - -public class ProjectInfoSimple { - String projectName; //项目名称 - String lotName; //批次名称 - String expiryDate; //有效日期 - - public ProjectInfoSimple(String projectName, String lotName, String expiryDate) { - this.projectName = projectName; - this.lotName = lotName; - this.expiryDate = expiryDate; - } - - public ProjectInfoSimple(ProjectInfo pinfo) { - this.projectName = pinfo.projectName; - this.lotName = pinfo.lotName; - this.expiryDate = pinfo.expiryDate; - } -}