@ -5,9 +5,6 @@ import com.alibaba.excel.read.listener.ReadListener;
import com.epmet.commons.tools.constant.NumConstant ;
import com.epmet.commons.tools.constant.NumConstant ;
import com.epmet.commons.tools.constant.StrConstant ;
import com.epmet.commons.tools.constant.StrConstant ;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult ;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult ;
import com.epmet.commons.tools.dto.result.YtHscyResDTO ;
import com.epmet.commons.tools.dto.result.YtHsjcResDTO ;
import com.epmet.commons.tools.dto.result.YtHsjcResDetailDTO ;
import com.epmet.commons.tools.enums.EnvEnum ;
import com.epmet.commons.tools.enums.EnvEnum ;
import com.epmet.commons.tools.exception.EpmetException ;
import com.epmet.commons.tools.exception.EpmetException ;
import com.epmet.commons.tools.exception.ExceptionUtils ;
import com.epmet.commons.tools.exception.ExceptionUtils ;
@ -15,18 +12,17 @@ import com.epmet.commons.tools.exception.ValidateException;
import com.epmet.commons.tools.utils.ConvertUtils ;
import com.epmet.commons.tools.utils.ConvertUtils ;
import com.epmet.commons.tools.utils.DateUtils ;
import com.epmet.commons.tools.utils.DateUtils ;
import com.epmet.commons.tools.utils.ObjectUtil ;
import com.epmet.commons.tools.utils.ObjectUtil ;
import com.epmet.commons.tools.utils.YtHsResUtils ;
import com.epmet.commons.tools.validator.ValidatorUtils ;
import com.epmet.commons.tools.validator.ValidatorUtils ;
import com.epmet.entity.IcNatCompareRecordEntity ;
import com.epmet.entity.IcNatCompareRecordEntity ;
import com.epmet.excel.data.IcNatCompareRecordExcelData ;
import com.epmet.excel.data.IcNatCompareRecordExcelData ;
import com.epmet.service.impl.IcNatCompareRecordServiceImpl ;
import com.epmet.service.impl.IcNatCompareRecordServiceImpl ;
import lombok.extern.slf4j.Slf4j ;
import lombok.extern.slf4j.Slf4j ;
import org.apache.commons.collections4.CollectionUtils ;
import org.apache.commons.collections4.CollectionUtils ;
import org.apache.commons.collections4.MapUtils ;
import org.apache.commons.lang3.StringUtils ;
import org.apache.commons.lang3.StringUtils ;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate ;
import java.util.ArrayList ;
import java.util.* ;
import java.util.Date ;
import java.util.List ;
/ * *
/ * *
* @Description
* @Description
@ -60,16 +56,22 @@ public class IcNatCompareRecordExcelImportListener implements ReadListener<IcNat
* 导入日期 : yyyyMMdd
* 导入日期 : yyyyMMdd
* /
* /
private String importDate ;
private String importDate ;
public IcNatCompareRecordExcelImportListener ( String customerId , CustomerStaffInfoCacheResult staffInfo , String importDate , Date importTime , IcNatCompareRecordServiceImpl icNatCompareRecordService ) {
private NamedParameterJdbcTemplate yantaiNamedParamLantuJdbcTemplate ;
public IcNatCompareRecordExcelImportListener ( String customerId , CustomerStaffInfoCacheResult staffInfo , String importDate , Date importTime ,
IcNatCompareRecordServiceImpl icNatCompareRecordService ,
NamedParameterJdbcTemplate yantaiNamedParamLantuJdbcTemplate ) {
this . customerId = customerId ;
this . customerId = customerId ;
this . staffInfo = staffInfo ;
this . staffInfo = staffInfo ;
this . icNatCompareRecordService = icNatCompareRecordService ;
this . icNatCompareRecordService = icNatCompareRecordService ;
this . importDate = importDate ;
this . importDate = importDate ;
this . importTime = importTime ;
this . importTime = importTime ;
this . yantaiNamedParamLantuJdbcTemplate = yantaiNamedParamLantuJdbcTemplate ;
}
}
@Override
/ * @Override
public void invoke ( IcNatCompareRecordExcelData data , AnalysisContext analysisContext ) {
public void invoke ( IcNatCompareRecordExcelData data , AnalysisContext analysisContext ) {
try {
try {
// log.warn("有数据吗?"+JSON.toJSONString(data));
// log.warn("有数据吗?"+JSON.toJSONString(data));
@ -137,6 +139,110 @@ public class IcNatCompareRecordExcelImportListener implements ReadListener<IcNat
}
}
datas . add ( compareRecordEntity ) ;
datas . add ( compareRecordEntity ) ;
if ( datas . size ( ) = = MAX_THRESHOLD ) {
execPersist ( ) ;
}
} catch ( Exception e ) {
String errorMsg = null ;
if ( e instanceof ValidateException ) {
errorMsg = ( ( ValidateException ) e ) . getMsg ( ) ;
} else if ( e instanceof EpmetException ) {
errorMsg = ( ( EpmetException ) e ) . getMsg ( ) ;
} else {
errorMsg = "未知错误" ;
log . error ( "【未做核酸比对导入】出错:{}" , ExceptionUtils . getErrorStackTrace ( e ) ) ;
}
IcNatCompareRecordExcelData . ErrorRow errorRow = new IcNatCompareRecordExcelData . ErrorRow ( ) ;
errorRow . setIdCard ( data . getIdCard ( ) ) ;
errorRow . setName ( data . getName ( ) ) ;
errorRow . setMobile ( data . getMobile ( ) ) ;
errorRow . setErrorInfo ( errorMsg ) ;
errorRows . add ( errorRow ) ;
}
} * /
@Override
public void invoke ( IcNatCompareRecordExcelData data , AnalysisContext analysisContext ) {
try {
// log.warn("有数据吗?"+JSON.toJSONString(data));
// 不能为空先校验数据
ValidatorUtils . validateEntity ( data ) ;
// 去除空格
ObjectUtil . objectToTrim ( data ) ;
IcNatCompareRecordEntity compareRecordEntity = ConvertUtils . sourceToTarget ( data , IcNatCompareRecordEntity . class ) ;
compareRecordEntity . setCustomerId ( customerId ) ;
compareRecordEntity . setLatestNatTime ( null ) ;
compareRecordEntity . setNatAddress ( StrConstant . EPMETY_STR ) ;
compareRecordEntity . setNatResult ( StrConstant . EPMETY_STR ) ;
// 开发和测试没法测试,只能写死只有生产才去调用了 烟台客户id:1535072605621841922
EnvEnum currentEnv = EnvEnum . getCurrentEnv ( ) ;
if ( EnvEnum . PROD . getCode ( ) . equals ( currentEnv . getCode ( ) ) & & "1535072605621841922" . equals ( customerId ) ) {
// 先查询最后一次采样记录
Map < String , Object > args = new HashMap < > ( ) ;
args . put ( "idcard" , data . getIdCard ( ) ) ;
List < Map < String , Object > > hscyList = yantaiNamedParamLantuJdbcTemplate . queryForList (
"select id, name,card_no, create_time, realname from hscyxxb where card_no =:idcard order by create_time desc limit 1" , args ) ;
if ( CollectionUtils . isNotEmpty ( hscyList ) & & MapUtils . isNotEmpty ( hscyList . get ( 0 ) ) ) {
// 存在 最近一条采样记录
Map < String , Object > latestCyMap = hscyList . get ( 0 ) ;
String create_time = ( String ) latestCyMap . get ( "create_time" ) ;
if ( StringUtils . isBlank ( create_time ) ) {
// 最近一次采样时间为空,说明这人好久不做核酸了
compareRecordEntity . setInternalRemark ( "采样时间create_time is null" ) ;
} else {
// 赋值采样时间
compareRecordEntity . setLatestCyTime ( DateUtils . parse ( create_time , DateUtils . DATE_TIME_PATTERN ) ) ;
// 查询最后一次检测结果
List < Map < String , Object > > hsjcResultList = yantaiNamedParamLantuJdbcTemplate . queryForList (
"select name, telephone, card_no, test_time, SAMPLE_TIME, SAMPLE_RESULT_PCR, SAMPLING_ORG_PCR from hsjcxxb where card_no =:idcard order by test_time desc limit 1" , args ) ;
if ( CollectionUtils . isNotEmpty ( hsjcResultList ) & & MapUtils . isNotEmpty ( hsjcResultList . get ( 0 ) ) ) {
Map < String , Object > latestJcMap = hsjcResultList . get ( 0 ) ;
// 采样时间
String sample_time = ( String ) latestJcMap . get ( "SAMPLE_TIME" ) ;
// 检测时间
String test_time = ( String ) latestJcMap . get ( "test_time" ) ;
// 核酸采样机构
String sampling_org_pcr = ( String ) latestJcMap . get ( "SAMPLING_ORG_PCR" ) ;
// 核酸检测结果 1:阳性,2:阴性
String sample_result_pcr = ( String ) latestJcMap . get ( "SAMPLE_RESULT_PCR" ) ;
// 联系地址
String address = ( String ) latestJcMap . get ( "address" ) ;
// 最近一次采样时间,与最近一次检测结果的采样时间相比较
if ( compareRecordEntity . getLatestCyTime ( ) . equals ( sample_time ) ) {
// 一致说明出结果了
if ( StringUtils . isNotBlank ( test_time ) ) {
// 赋值最近一次核酸时间
compareRecordEntity . setLatestNatTime ( DateUtils . parse ( test_time , DateUtils . DATE_TIME_PATTERN ) ) ;
}
// 赋值检测地点
compareRecordEntity . setNatAddress ( StringUtils . isNotBlank ( sampling_org_pcr ) ? sampling_org_pcr : StrConstant . EPMETY_STR ) ;
// 核酸检测结果 1:阳性,2:阴性
if ( NumConstant . ONE_STR . equals ( sample_result_pcr ) ) {
// 检测结果(0:阴性 1:阳性):接口填入
compareRecordEntity . setNatResult ( NumConstant . ONE_STR ) ;
} else if ( NumConstant . TWO_STR . equals ( sample_result_pcr ) ) {
compareRecordEntity . setNatResult ( NumConstant . ZERO_STR ) ;
}
compareRecordEntity . setContactAddress ( StringUtils . isNotBlank ( address ) ? address : StrConstant . EPMETY_STR ) ;
} else {
// 采样时间不一致,说明未出结果
compareRecordEntity . setInternalRemark ( String . format ( "采样时间不一致,采样视图最近一次采样时间:%s,检测结果视图的最近一次采样时间:%s" , compareRecordEntity . getLatestCyTime ( ) , sample_time ) ) ;
}
} else {
compareRecordEntity . setInternalRemark ( "最近一次检测结果为空" ) ;
}
}
} else {
// 没有核酸采样记录
compareRecordEntity . setInternalRemark ( "最近一次采样结果为空" ) ;
}
}
datas . add ( compareRecordEntity ) ;
if ( datas . size ( ) = = MAX_THRESHOLD ) {
if ( datas . size ( ) = = MAX_THRESHOLD ) {
execPersist ( ) ;
execPersist ( ) ;
}
}
@ -159,6 +265,7 @@ public class IcNatCompareRecordExcelImportListener implements ReadListener<IcNat
}
}
}
}
@Override
@Override
public void doAfterAllAnalysed ( AnalysisContext analysisContext ) {
public void doAfterAllAnalysed ( AnalysisContext analysisContext ) {
// 最后几条达不到阈值,这里必须再调用一次
// 最后几条达不到阈值,这里必须再调用一次