diff --git a/pom.xml b/pom.xml
index 79679fe..b12d384 100644
--- a/pom.xml
+++ b/pom.xml
@@ -93,6 +93,12 @@
hutool-all
5.8.16
+
+ org.apache.poi
+ poi-ooxml
+ 3.17
+
+
org.springframework.boot
spring-boot-starter-actuator
diff --git a/src/main/java/a8k/service/dao/ProjectBaseInfoDao.java b/src/main/java/a8k/service/dao/ProjectBaseInfoDao.java
index 25d1735..cf7a869 100644
--- a/src/main/java/a8k/service/dao/ProjectBaseInfoDao.java
+++ b/src/main/java/a8k/service/dao/ProjectBaseInfoDao.java
@@ -33,6 +33,8 @@ public class ProjectBaseInfoDao extends ZSqlite {
log.info("{}", ZJsonHelper.objectToJson(val));
val.id = val.projId;
add(val);
+ val = findByProjId(val.projId);
+ checkVal(val);
}
}
@@ -52,4 +54,19 @@ public class ProjectBaseInfoDao extends ZSqlite {
}
+ private void checkVal(ProjectBaseInfo val) {
+ for (var field : val.getClass().getDeclaredFields()) {
+ try {
+ field.setAccessible(true);
+ if (field.get(val) == null) {
+ log.error("field {} is null,{}", field.getName(), val);
+ System.exit(1);
+ }
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
}
diff --git a/src/main/java/a8k/service/dao/type/ProjectBaseInfo.java b/src/main/java/a8k/service/dao/type/ProjectBaseInfo.java
index 235dee2..60646c4 100644
--- a/src/main/java/a8k/service/dao/type/ProjectBaseInfo.java
+++ b/src/main/java/a8k/service/dao/type/ProjectBaseInfo.java
@@ -38,4 +38,23 @@ public class ProjectBaseInfo implements Serializable {
public Integer reactionPlateIncubationTimeMin; //反应板孵育时间Min
@JsonIgnore
public Integer reactionPlateDropletVolUl; //反应板滴样量ul
+
+ public String toString() {
+ return "ProjectBaseInfo{" +
+ "id=" + id +
+ ", projId=" + projId +
+ ", projName='" + projName + '\'' +
+ ", projShortName='" + projShortName + '\'' +
+ ", subProjNum=" + subProjNum +
+ ", reactionTemperature=" + reactionTemperature +
+ ", color='" + color + '\'' +
+ ", reactionFlowType=" + reactionFlowType +
+ ", wBloodSampleVolUl=" + wBloodSampleVolUl +
+ ", serumSampleVolUl=" + serumSampleVolUl +
+ ", shakeTimes=" + shakeTimes +
+ ", bigBufferSampleUl=" + bigBufferSampleUl +
+ ", reactionPlateIncubationTimeMin=" + reactionPlateIncubationTimeMin +
+ ", reactionPlateDropletVolUl=" + reactionPlateDropletVolUl +
+ '}';
+ }
}
diff --git a/src/main/java/a8k/utils/ZSqliteJdbcHelper.java b/src/main/java/a8k/utils/ZSqliteJdbcHelper.java
index 9715a95..9297c8e 100644
--- a/src/main/java/a8k/utils/ZSqliteJdbcHelper.java
+++ b/src/main/java/a8k/utils/ZSqliteJdbcHelper.java
@@ -83,7 +83,13 @@ public class ZSqliteJdbcHelper {
Object obj = tClass.newInstance();
for (java.lang.reflect.Field field : tClass.getDeclaredFields()) {
+ if (!field.getName().equals("id") &&rs.getObject(field.getName()) == null) {
+ field.set(obj, null);
+ continue;
+ }
+
if (field.getType().equals(Integer.class)) {
+
field.set(obj, rs.getInt(field.getName()));
} else if (field.getType().equals(int.class)) {
field.set(obj, rs.getInt(field.getName()));
diff --git a/src/main/resources/a8k/db/zapp_a8k_project_info.csv b/src/main/resources/a8k/db/zapp_a8k_project_info.csv
index 07e791e..29f0c73 100644
--- a/src/main/resources/a8k/db/zapp_a8k_project_info.csv
+++ b/src/main/resources/a8k/db/zapp_a8k_project_info.csv
@@ -1,5 +1,5 @@
projId,projName,projShortName,subProjNum,reactionTemperature,color,reactionFlowType,wBloodSampleVolUl,serumSampleVolUl,shakeTimes,bigBufferSampleUl,reactionPlateIncubationTimeMin,reactionPlateDropletVolUl,
-1,hsCRP,CA,1,25,#FFC0CB,SampleAndBS,10,10,3,0,3,75,
+1,hsCRP,CA,1,25,#FFC0CB,SampleAndBS,10,10,3,0,3,75
2,PCT,PC,1,25,#DC143C,SampleAndBS,150,150,3,0,12,75,
3,TSH,TS,1,25,#DB7093,SampleAndBSAndProbeSubstance,150,150,3,75,12,75,
4,PRL,PL,1,25,#FF69B4,SampleAndBS,75,75,3,0,10,75,
diff --git a/src/main/resources/zapp_a8k_proj_info.csv b/src/main/resources/zapp_a8k_proj_info.csv
deleted file mode 100644
index 719595c..0000000
--- a/src/main/resources/zapp_a8k_proj_info.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-projIndex,projName,projShortName,projNum,reactionTemperature,color,reactionFlowType,wBloodSampleVolUl,serumSampleVolUl,shakeTimes,bigBufferSampleUl,mixLiquidAspirMixingCnt,reactionPlateIncubationTime,reactionPlateDropletVolUl,subProj1_name,subProj1_shortName,subProj1_optType,subProj1_scanRange,subProj1_scanDirection,subProj1_peakNum,subProj1_peakNames,subProj1_peakPos,subProj1_optLaserAmplFactor,subProj1_optScanFactor,subProj2_name,subProj2_shortName,subProj2_optType,subProj2_scanRange,subProj2_scanDirection,subProj2_peakNum,subProj2_peakNames,subProj2_peakPos,subProj2_optLaserAmplFactor,subProj2_optScanFactor,subProj3_name,subProj3_shortName,subProj3_optType,subProj3_scanRange,subProj3_scanDirection,subProj3_peakNum,subProj3_peakNames,subProj3_peakPos,subProj3_optLaserAmplFactor,subProj3_optScanFactor
-Ŀindex,Ŀ,Ŀд,ǷǶ,Ӧ¶,Ŀɫ,Ӧ,ȫѪul,Ѫ/Ѫul,ҡȴ,ƿҺȡul,ϻȴ,ӦʱMin,Ӧul,Ŀ1_,Ŀ1_д,Ŀ1_ѧ,Ŀ1_ɨ跶Χ,Ŀ1_ɨ跽,Ŀ1_,Ŀ1_,Ŀ1_λ,Ŀ1_Ŵϵ,Ŀ1_ɨŴϵ,Ŀ2_,Ŀ1_д,Ŀ2_ѧ,Ŀ2_ɨ跶Χ,Ŀ2_ɨ跽,Ŀ2_,Ŀ2_,Ŀ2_λ,Ŀ2_Ŵϵ,Ŀ2_ɨŴϵ,Ŀ3_,Ŀ1_д,Ŀ3_ѧ,Ŀ3_ɨ跶Χ,Ŀ3_ɨ跽,Ŀ3_,Ŀ3_,Ŀ3_λ,Ŀ3_Ŵϵ,Ŀ3_ɨŴϵ
\ No newline at end of file