11 changed files with 177 additions and 88 deletions
-
40src/main/java/a8k/checker/ProjInfoChecker.java
-
6src/main/java/a8k/service/app/appdata/ProjInfoMgrService.java
-
64src/main/java/a8k/service/dao/A8kProjOptConfigDao.java
-
4src/main/java/a8k/service/dao/OptRawDataDao.java
-
74src/main/java/a8k/service/dao/ProjOptInfoDao.java
-
1src/main/java/a8k/service/dao/type/ProjOptInfo.java
-
8src/main/java/a8k/service/test/MainflowCtrlTestService.java
-
8src/main/java/a8k/service/test/TestStateMgrService.java
-
14src/main/java/a8k/utils/ZCSVUtils.java
-
2src/main/resources/a8k/db/zapp_a8k_project_info.csv
-
38src/main/resources/a8k/db/zapp_a8k_project_opt_config.csv
@ -0,0 +1,40 @@ |
|||
package a8k.checker; |
|||
|
|||
import a8k.service.dao.ProjOptInfoDao; |
|||
import a8k.service.dao.ProjectBaseInfoDao; |
|||
import jakarta.annotation.PostConstruct; |
|||
import jakarta.annotation.Resource; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
public class ProjInfoChecker { |
|||
|
|||
private static final Logger log = LoggerFactory.getLogger(ProjInfoChecker.class); |
|||
@Resource |
|||
ProjOptInfoDao projOptInfoDao; |
|||
|
|||
@Resource |
|||
ProjectBaseInfoDao projectBaseInfoDao; |
|||
|
|||
@PostConstruct |
|||
void init() { |
|||
|
|||
//遍历ProjBaseInfoDao中的所有项目,获取光学项目数量,然后查找OptRawScanData中的数据,如果OptRawScanData中的数据数量不等于光学项目数量,则输出错误信息 |
|||
|
|||
boolean triggerError = false; |
|||
var projBaseInfoList = projectBaseInfoDao.getAll(); |
|||
for (var projBaseInfo : projBaseInfoList) { |
|||
var projOptInfoList = projOptInfoDao.findByProjIndex(projBaseInfo.projId); |
|||
if (projOptInfoList.size() != projBaseInfo.subProjNum) { |
|||
log.error("项目{}({}) 光学配置和子项目数量不匹配", projBaseInfo.projName, projBaseInfo.projId); |
|||
triggerError = true; |
|||
} |
|||
} |
|||
|
|||
if (triggerError) { |
|||
System.exit(-1); |
|||
} |
|||
} |
|||
} |
@ -1,64 +0,0 @@ |
|||
package a8k.service.dao; |
|||
|
|||
import a8k.service.app.appdata.UtilsProjectColorAllocer; |
|||
import a8k.service.dao.type.ProjOptInfo; |
|||
|
|||
import a8k.utils.ZSqliteJdbcHelper; |
|||
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.util.List; |
|||
|
|||
@Component |
|||
public class A8kProjOptConfigDao { |
|||
private static final Logger logger = LoggerFactory.getLogger(A8kProjOptConfigDao.class); |
|||
private static final String tableName = "zapp_a8k_project_opt_config"; |
|||
private static final Class<?> tClass = ProjOptInfo.class; |
|||
|
|||
|
|||
@Resource |
|||
JdbcTemplate jdbcTemplate; |
|||
|
|||
@Resource |
|||
UtilsProjectColorAllocer colorAllocer; |
|||
|
|||
@PostConstruct |
|||
void init() { |
|||
if (!ZSqliteJdbcHelper.isTableExist(jdbcTemplate, tableName)) { |
|||
ZSqliteJdbcHelper.createTable(jdbcTemplate, tableName, tClass); |
|||
} |
|||
} |
|||
|
|||
@SneakyThrows private ProjOptInfo rowMapper(ResultSet rs, int rowNum) { |
|||
return (ProjOptInfo) ZSqliteJdbcHelper.rowMapper(rs, tClass); |
|||
} |
|||
|
|||
public List<ProjOptInfo> findByProjIndex(Integer projId) { |
|||
List<ProjOptInfo> list = jdbcTemplate.query("select * from " + tableName + " where projId = ?;", this::rowMapper, projId); |
|||
if (list.isEmpty()) { |
|||
return null; |
|||
} |
|||
return list; |
|||
} |
|||
|
|||
public void add(ProjOptInfo val) { |
|||
ZSqliteJdbcHelper.addObj(jdbcTemplate, tableName, tClass, val); |
|||
} |
|||
|
|||
public void add(List<ProjOptInfo> vals) { |
|||
for (ProjOptInfo val : vals) { |
|||
add(val); |
|||
} |
|||
} |
|||
|
|||
public void removeAll() { |
|||
ZSqliteJdbcHelper.deleteTable(jdbcTemplate, tableName); |
|||
ZSqliteJdbcHelper.createTable(jdbcTemplate, tableName, tClass); |
|||
} |
|||
} |
@ -0,0 +1,74 @@ |
|||
package a8k.service.dao; |
|||
|
|||
import a8k.service.app.appdata.UtilsProjectColorAllocer; |
|||
import a8k.service.dao.type.ProjOptInfo; |
|||
|
|||
import a8k.utils.ZCSVUtils; |
|||
import a8k.utils.ZJsonHelper; |
|||
import a8k.utils.ZSqlite; |
|||
import jakarta.annotation.PostConstruct; |
|||
import jakarta.annotation.Resource; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.jdbc.core.JdbcTemplate; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Component |
|||
@Slf4j |
|||
public class ProjOptInfoDao extends ZSqlite<ProjOptInfo> { |
|||
|
|||
@Resource |
|||
JdbcTemplate jdbcTemplate; |
|||
|
|||
@Resource |
|||
UtilsProjectColorAllocer utilsProjectColorAllocer; |
|||
|
|||
@PostConstruct |
|||
void init() { |
|||
init(jdbcTemplate, "zapp_a8k_project_opt_config", ProjOptInfo.class, true); |
|||
var list = ZCSVUtils.readCSVFromResource("a8k/db/zapp_a8k_project_opt_config.csv", ProjOptInfo.class); |
|||
for (var val : list) { |
|||
|
|||
val.id = val.projId * 10 + val.subProjIndex; |
|||
log.info("{}", ZJsonHelper.objectToJson(val)); |
|||
add(val); |
|||
checkVal(val); |
|||
} |
|||
} |
|||
|
|||
|
|||
public List<ProjOptInfo> findByProjIndex(Integer projId) { |
|||
return queryList("select * from " + tableName + " where projId = ?;", projId); |
|||
} |
|||
|
|||
public void add(List<ProjOptInfo> vals) { |
|||
for (ProjOptInfo val : vals) { |
|||
add(val); |
|||
} |
|||
} |
|||
|
|||
public void removeAll() { |
|||
super.deleteAll(); |
|||
} |
|||
|
|||
private void checkVal(ProjOptInfo val) { |
|||
for (var field : val.getClass().getDeclaredFields()) { |
|||
if (field.getName().equals("id")) { |
|||
continue; |
|||
} |
|||
|
|||
try { |
|||
field.setAccessible(true); |
|||
if (field.get(val) == null) { |
|||
log.error("field {} is null,{}", field.getName(), ZJsonHelper.objectToJson(val)); |
|||
System.exit(1); |
|||
} |
|||
} catch (IllegalAccessException e) { |
|||
log.error("", e); |
|||
System.exit(1); |
|||
} |
|||
} |
|||
|
|||
} |
|||
} |
@ -0,0 +1,38 @@ |
|||
id,projId,projName,subProjIndex,subProjName,subProjShortName,optType,optScanRange,optScanPeakNum,peakNameRefNum |
|||
0,1,hsCRP,0,hsCRP,CA,FOPT,150,3,3 |
|||
0,2,PCT,0,PCT,PC,TOPT,150,2,2 |
|||
0,3,TSH,0,TSH,TS,FOPT,150,2,2 |
|||
0,4,PRL,0,PRL,PL,FOPT,150,2,2 |
|||
0,5,T3,0,T3,T3,FOPT,150,2,2 |
|||
0,6,T4,0,T4,T4,FOPT,150,2,2 |
|||
0,7,Total β hCG,0,Total β hCG,HC,FOPT,150,3,3 |
|||
0,8,LH,0,LH,LH,FOPT,150,2,2 |
|||
0,9,FSH,0,FSH,FS,FOPT,150,2,2 |
|||
0,10,Progesterone,0,Progesterone,PG,FOPT,150,2,2 |
|||
0,12,Tn-I plus,0,Tn-I plus,TG,TOPT,150,3,3 |
|||
0,13,NT-proBNP,0,NT-proBNP,NB,TOPT,150,3,3 |
|||
0,14,CK-MB,0,CK-MB ,CK,FOPT,150,2,2 |
|||
0,15,Myoglobin,0,Myoglobin,MY,FOPT,150,2,2 |
|||
0,16,D-Dimer,0,D-Dimer,DD,FOPT,150,2,2 |
|||
0,17,HbAlC,0,HbAlC,HB,FOPT,150,2,2 |
|||
0,18,PCT plus,0,PCT plus,PP,FOPT,150,3,3 |
|||
0,20,Tn-I/CK-MB/Myoglobin,0,CK-MB,CK-MB,FOPT,200,3,4 |
|||
0,20,Tn-I/CK-MB/Myoglobin,1,Myoglobin,Myoglobin,FOPT,200,3,4 |
|||
0,20,Tn-I/CK-MB/Myoglobin,2,Tn-I,Tn-I,TOPT,200,4,4 |
|||
0,22,PCT/hsCRP,0,PCT,PCT,TOPT,200,3,4 |
|||
0,22,PCT/hsCRP,1,hsCRP,hsCRP,FOPT,200,3,4 |
|||
0,24,SAA,0,SAA,SA,FOPT,150,3,3 |
|||
0,25,AMH,0,AMH,AM,TOPT,150,3,3 |
|||
0,26,SAA/CRP,0,SAA,SAA,FOPT,250,5,5 |
|||
0,26,SAA/CRP,1,CRP,CRP,FOPT,250,5,5 |
|||
0,27,Vitamin D,0,Vitamin D,VD,FOPT,150,2,2 |
|||
0,33,ST2,0,ST2,ST,FOPT,150,2,2 |
|||
0,36,MxA,0,MxA,MX,TOPT,150,2,2 |
|||
0,48,IL-6,0,IL-6,IL,TOPT,150,3,3 |
|||
0,49,Gastrin 17,0,Gastrin 17,GA,TOPT,150,2,2 |
|||
0,50,Pepsinogen I/II,0,Pepsinogen I,PG-I,TOPT,150,3,3 |
|||
0,50,Pepsinogen I/II,1,Pepsinogen II,PG-II,TOPT,150,3,3 |
|||
0,52,NT-proBNP/ST2,0,ST2,ST2,FOPT,200,2,4 |
|||
0,52,NT-proBNP/ST2,1,NT-proBNP,NT-proBNP,TOPT,200,3,4 |
|||
0,54,Troponin T,0,Troponin T,TT,TOPT,150,3,3 |
|||
0,55,BNP,0,BNP,BP,TOPT,150,3,3 |
Write
Preview
Loading…
Cancel
Save
Reference in new issue