Browse Source

Merge branch 'dev_compare_data' of http://git.elinkit.com.cn:7070/r/epmet-cloud into dev_compare_data

master
wangxianzhang 3 years ago
parent
commit
8248f0ffb3
  1. 125
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java
  2. 13
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatCompareRecordServiceImpl.java

125
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java

@ -5,9 +5,6 @@ import com.alibaba.excel.read.listener.ReadListener;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
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.exception.EpmetException;
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.DateUtils;
import com.epmet.commons.tools.utils.ObjectUtil;
import com.epmet.commons.tools.utils.YtHsResUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.entity.IcNatCompareRecordEntity;
import com.epmet.excel.data.IcNatCompareRecordExcelData;
import com.epmet.service.impl.IcNatCompareRecordServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
/**
* @Description
@ -60,16 +56,22 @@ public class IcNatCompareRecordExcelImportListener implements ReadListener<IcNat
* 导入日期yyyyMMdd
*/
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.staffInfo = staffInfo;
this.icNatCompareRecordService = icNatCompareRecordService;
this.importDate=importDate;
this.importTime=importTime;
this.yantaiNamedParamLantuJdbcTemplate=yantaiNamedParamLantuJdbcTemplate;
}
@Override
/*@Override
public void invoke(IcNatCompareRecordExcelData data, AnalysisContext analysisContext) {
try {
// log.warn("有数据吗?"+JSON.toJSONString(data));
@ -137,6 +139,110 @@ public class IcNatCompareRecordExcelImportListener implements ReadListener<IcNat
}
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) {
execPersist();
}
@ -159,6 +265,7 @@ public class IcNatCompareRecordExcelImportListener implements ReadListener<IcNat
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
// 最后几条达不到阈值,这里必须再调用一次

13
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatCompareRecordServiceImpl.java

@ -38,10 +38,12 @@ import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
@ -66,6 +68,10 @@ public class IcNatCompareRecordServiceImpl extends BaseServiceImpl<IcNatCompareR
@Autowired
private IcNatCompareRecRelationDao icNatCompareRecRelationDao;
@Resource(name = "yantaiNamedParamLantuJdbcTemplate")
private NamedParameterJdbcTemplate yantaiNamedParamLantuJdbcTemplate;
private CustomerStaffInfoCacheResult queryCurrentStaff(String customerId, String userId) {
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, userId);
if (null == staffInfo) {
@ -106,7 +112,12 @@ public class IcNatCompareRecordServiceImpl extends BaseServiceImpl<IcNatCompareR
CustomerStaffInfoCacheResult staffInfo= queryCurrentStaff(customerId,userId);
Date importTime=new Date();
String importDate= DateUtils.format(importTime,DateUtils.DATE_PATTERN_YYYYMMDD);
IcNatCompareRecordExcelImportListener listener = new IcNatCompareRecordExcelImportListener(customerId, staffInfo, importDate, importTime, this);
IcNatCompareRecordExcelImportListener listener = new IcNatCompareRecordExcelImportListener(customerId,
staffInfo,
importDate,
importTime,
this,
yantaiNamedParamLantuJdbcTemplate);
EasyExcel.read(filePath.toFile(), IcNatCompareRecordExcelData.class, listener).headRowNumber(1).sheet(0).doRead();

Loading…
Cancel
Save