Browse Source

Merge remote-tracking branch 'origin/dev_epidemic_situation' into dev_epidemic_situation

dev
jianjun 3 years ago
parent
commit
ae121f3812
  1. 3
      epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java
  2. 1
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java
  3. 19
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcVaccineImportExcelData.java
  4. 34
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcVaccineExcelImportListener.java
  5. 107
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccineServiceImpl.java
  6. BIN
      epmet-user/epmet-user-server/src/main/resources/excel/ic_vaccine.xlsx

3
epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java

@ -22,6 +22,9 @@ public interface ImportTaskConstants {
* 核酸检测 * 核酸检测
*/ */
String BIZ_TYPE_IC_NAT = "ic_nat"; String BIZ_TYPE_IC_NAT = "ic_nat";
/**
* 疫苗接种
*/
String BIZ_TYPE_IC_VACCINE = "ic_vaccine"; String BIZ_TYPE_IC_VACCINE = "ic_vaccine";
/** /**
* 行程上报 * 行程上报

1
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java

@ -226,5 +226,4 @@ public class IcVaccineController implements ResultDataResolver {
} }
} }

19
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcVaccineImportExcelData.java

@ -11,7 +11,7 @@ import java.io.Serializable;
import java.util.Date; import java.util.Date;
/** /**
* 核酸检测信息导入excel数据 * 疫苗接种信息导入excel数据
*/ */
@Data @Data
public class IcVaccineImportExcelData implements Serializable { public class IcVaccineImportExcelData implements Serializable {
@ -30,16 +30,17 @@ public class IcVaccineImportExcelData implements Serializable {
@Length(max = 18, message = "身份证号长度不正确,应小于18位") @Length(max = 18, message = "身份证号长度不正确,应小于18位")
private String idCard; private String idCard;
@NotNull(message = "检测时间为必填项") @NotNull(message = "接种时间为必填项")
@ExcelProperty("检测时间") @ExcelProperty("接种时间")
private Date natTime; private Date inoculateTime;
@ExcelProperty("检测地点") @NotBlank(message = "接种地点为必填项")
private String natAddress; @ExcelProperty("接种地点")
private String inoculateAddress;
@NotBlank(message = "检测结果为必填项") @NotBlank(message = "疫苗厂家为必填项")
@ExcelProperty("检测结果") @ExcelProperty("疫苗厂家")
private String natResultZh; private String manufacturer;
@Data @Data
public static class RowRemarkMessage { public static class RowRemarkMessage {

34
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcVaccineExcelImportListener.java

@ -46,11 +46,11 @@ public class IcVaccineExcelImportListener implements ReadListener<IcVaccineImpor
/** /**
* 错误项列表 * 错误项列表
*/ */
private List<IcNatImportExcelData.RowRemarkMessage> errorRows = new ArrayList<>(); private List<IcVaccineImportExcelData.RowRemarkMessage> errorRows = new ArrayList<>();
/** /**
* 其他被标记出来的列表列表 * 其他被标记出来的列表列表
*/ */
private List<IcNatImportExcelData.RowRemarkMessage> otherRows = new ArrayList<>(); private List<IcVaccineImportExcelData.RowRemarkMessage> otherRows = new ArrayList<>();
private IcVaccineServiceImpl icVaccineService; private IcVaccineServiceImpl icVaccineService;
@ -68,35 +68,23 @@ public class IcVaccineExcelImportListener implements ReadListener<IcVaccineImpor
// 先校验数据 // 先校验数据
ValidatorUtils.validateEntity(data); ValidatorUtils.validateEntity(data);
// 取出前后空格
if (StringUtils.isNotBlank(data.getName())) { if (StringUtils.isNotBlank(data.getName())) {
data.setName(data.getName().trim()); data.setName(data.getName().trim());
} }
if (StringUtils.isNotBlank(data.getMobile())) { if (StringUtils.isNotBlank(data.getMobile())) {
data.setMobile(data.getMobile().trim()); data.setMobile(data.getMobile().trim());
} }
if (StringUtils.isNotBlank(data.getNatAddress())) { if (StringUtils.isNotBlank(data.getInoculateAddress())) {
data.setNatAddress(data.getNatAddress().trim()); data.setInoculateAddress(data.getInoculateAddress().trim());
} }
if (StringUtils.isNotBlank(data.getIdCard())) { if (StringUtils.isNotBlank(data.getIdCard())) {
data.setIdCard(data.getIdCard().trim()); data.setIdCard(data.getIdCard().trim());
} }
// 默认空,没有结果 IcVaccineEntity icVaccineEntity = ConvertUtils.sourceToTarget(data, IcVaccineEntity.class);
String natResult = ""; icVaccineEntity.setUserType("import");
String natResultZh = data.getNatResultZh(); datas.add(icVaccineEntity);
if (StringUtils.isNotBlank(natResultZh)) {
natResult = natResultZh.equals("阴性") ? "0" : "1";
}
IcVaccineEntity icNatEntity = ConvertUtils.sourceToTarget(data, IcVaccineEntity.class);
//icNatEntity.setAgencyId(currentAgencyId);
//icNatEntity.setPids(currentAgencyPids);
icNatEntity.setUserId(currentUserId);
icNatEntity.setUserType("import");
icNatEntity.setNatResult(natResult);
icNatEntity.setAttachmentType("");
icNatEntity.setAttachmentUrl("");
datas.add(icNatEntity);
if (datas.size() == MAX_THRESHOLD) { if (datas.size() == MAX_THRESHOLD) {
execPersist(); execPersist();
@ -107,10 +95,10 @@ public class IcVaccineExcelImportListener implements ReadListener<IcVaccineImpor
errorMsg = ((ValidateException) e).getMsg(); errorMsg = ((ValidateException) e).getMsg();
} else { } else {
errorMsg = "未知错误"; errorMsg = "未知错误";
log.error("【核酸检测信息导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); log.error("【疫苗接种信息导入】出错:{}", ExceptionUtils.getErrorStackTrace(e));
} }
IcNatImportExcelData.RowRemarkMessage errorRow = new IcNatImportExcelData.RowRemarkMessage(); IcVaccineImportExcelData.RowRemarkMessage errorRow = new IcVaccineImportExcelData.RowRemarkMessage();
errorRow.setName(data.getName()); errorRow.setName(data.getName());
errorRow.setMobile(data.getMobile()); errorRow.setMobile(data.getMobile());
errorRow.setIdCard(data.getIdCard()); errorRow.setIdCard(data.getIdCard());
@ -142,7 +130,7 @@ public class IcVaccineExcelImportListener implements ReadListener<IcVaccineImpor
* 获取错误行 * 获取错误行
* @return * @return
*/ */
public List<IcNatImportExcelData.RowRemarkMessage> getErrorRows() { public List<IcVaccineImportExcelData.RowRemarkMessage> getErrorRows() {
return errorRows; return errorRows;
} }
} }

107
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcVaccineServiceImpl.java

@ -17,13 +17,20 @@ import com.epmet.commons.tools.utils.*;
import com.epmet.constants.ImportTaskConstants; import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.*; import com.epmet.dao.*;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dao.*;
import com.epmet.dto.IcNatDTO;
import com.epmet.dto.IcNoticeDTO;
import com.epmet.dto.form.AddIcNatFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.form.MyNatListFormDTO;
import com.epmet.dto.form.SendNoticeFormDTO;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
import com.epmet.entity.IcNatRelationEntity; import com.epmet.entity.IcNatRelationEntity;
import com.epmet.entity.IcResiUserEntity; import com.epmet.entity.IcResiUserEntity;
import com.epmet.entity.IcVaccineEntity; import com.epmet.entity.IcVaccineEntity;
import com.epmet.entity.IcVaccineRelationEntity; import com.epmet.entity.IcVaccineRelationEntity;
import com.epmet.excel.data.IcNatImportExcelData; import com.epmet.excel.data.IcNatImportExcelData;
import com.epmet.excel.handler.IcNatExcelImportListener; import com.epmet.excel.data.IcVaccineImportExcelData;
import com.epmet.excel.handler.IcVaccineExcelImportListener; import com.epmet.excel.handler.IcVaccineExcelImportListener;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient;
@ -71,6 +78,8 @@ public class IcVaccineServiceImpl extends BaseServiceImpl<IcVaccineDao, IcVaccin
@Autowired @Autowired
private IcNatRelationDao icNatRelationDao; private IcNatRelationDao icNatRelationDao;
@Autowired @Autowired
private IcVaccineDao icVaccineDao;
@Autowired
private IcVaccineRelationDao icVaccineRelationDao; private IcVaccineRelationDao icVaccineRelationDao;
@Autowired @Autowired
private IcResiUserDao icResiUserDao; private IcResiUserDao icResiUserDao;
@ -187,15 +196,15 @@ public class IcVaccineServiceImpl extends BaseServiceImpl<IcVaccineDao, IcVaccin
String agencyId = loginUserDetails.getAgencyId(); String agencyId = loginUserDetails.getAgencyId();
IcNatExcelImportListener listener = new IcNatExcelImportListener(userId, agencyId, loginUserDetails.getOrgIdPath().replace(":".concat(agencyId), ""), this); IcVaccineExcelImportListener listener = new IcVaccineExcelImportListener(userId, agencyId, loginUserDetails.getOrgIdPath().replace(":".concat(agencyId), ""), this);
EasyExcel.read(filePath.toFile(), IcNatImportExcelData.class, listener).headRowNumber(2).sheet(0).doRead(); EasyExcel.read(filePath.toFile(), IcNatImportExcelData.class, listener).headRowNumber(2).sheet(0).doRead();
Path errorDescFile = null; Path errorDescFile = null;
String errorDesFileUrl = null; String errorDesFileUrl = null;
List<IcNatImportExcelData.RowRemarkMessage> errorRows = listener.getErrorRows(); List<IcVaccineImportExcelData.RowRemarkMessage> errorRows = listener.getErrorRows();
List<IcNatImportExcelData.RowRemarkMessage> otherRows = listener.getOtherRows(); List<IcVaccineImportExcelData.RowRemarkMessage> otherRows = listener.getOtherRows();
boolean failed = errorRows.size() > 0; boolean failed = errorRows.size() > 0;
@ -281,7 +290,7 @@ public class IcVaccineServiceImpl extends BaseServiceImpl<IcVaccineDao, IcVaccin
String errorMsg = ExceptionUtils.getErrorStackTrace(exception); String errorMsg = ExceptionUtils.getErrorStackTrace(exception);
log.error(errorMsg); log.error(errorMsg);
IcNatImportExcelData.RowRemarkMessage errorRow = new IcNatImportExcelData.RowRemarkMessage(); IcVaccineImportExcelData.RowRemarkMessage errorRow = new IcVaccineImportExcelData.RowRemarkMessage();
errorRow.setName(e.getName()); errorRow.setName(e.getName());
errorRow.setMobile(e.getMobile()); errorRow.setMobile(e.getMobile());
errorRow.setIdCard(e.getIdCard()); errorRow.setIdCard(e.getIdCard());
@ -299,25 +308,25 @@ public class IcVaccineServiceImpl extends BaseServiceImpl<IcVaccineDao, IcVaccin
* @param listener * @param listener
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void persisVaccine(IcVaccineEntity e, String customerId, String currentUserId, IcNatExcelImportListener listener) { public void persisVaccine(IcVaccineEntity e, String customerId, String currentUserId, IcVaccineExcelImportListener listener) {
List<IcNatImportExcelData.RowRemarkMessage> otherRows = listener.getOtherRows(); List<IcVaccineImportExcelData.RowRemarkMessage> otherRows = listener.getOtherRows();
String agencyPids = listener.getCurrentAgencyPids(); String agencyPids = listener.getCurrentAgencyPids();
String agencyId = listener.getCurrentAgencyId(); String agencyId = listener.getCurrentAgencyId();
Date natTime = e.getNatTime();
String idCard = e.getIdCard(); String idCard = e.getIdCard();
String name = e.getName(); String name = e.getName();
String mobile = e.getMobile(); String mobile = e.getMobile();
String natResult = e.getNatResult(); String manufacturer = e.getManufacturer();
String natAddress = e.getNatAddress(); Date inoculateTime = e.getInoculateTime();
String inoculateAddress = e.getInoculateAddress();
//1.先看客户下有没有这个人 //1.先看客户下有没有这个人
IcVaccineEntity resiNat = getResiNat(customerId, idCard, natTime); IcVaccineEntity resiVaccine = getResiVaccine(customerId, idCard, inoculateTime);
if (resiNat != null && !"import".equals(resiNat.getUserType())) { if (resiVaccine != null && !"import".equals(resiVaccine.getUserType())) {
// 有这个人,并且不是导入的 // 有这个人,并且不是导入的
String message = "已存在该次疫苗接种录入记录,请到系统中修改"; String message = "已存在该次疫苗接种录入记录,请到系统中修改";
IcNatImportExcelData.RowRemarkMessage errorRow = new IcNatImportExcelData.RowRemarkMessage(); IcVaccineImportExcelData.RowRemarkMessage errorRow = new IcVaccineImportExcelData.RowRemarkMessage();
errorRow.setName(name); errorRow.setName(name);
errorRow.setMobile(mobile); errorRow.setMobile(mobile);
errorRow.setIdCard(idCard); errorRow.setIdCard(idCard);
@ -326,39 +335,35 @@ public class IcVaccineServiceImpl extends BaseServiceImpl<IcVaccineDao, IcVaccin
return; return;
} }
if (resiNat != null) { if (resiVaccine != null) {
boolean needUpdate = false; boolean needUpdate = false;
// 有这个人,也是导入的,那就要更新le // 有这个人,也是导入的,那就要更新le
ArrayList<String> changedFieldNames = new ArrayList<>(); Boolean isNameChanged = false;
if (!name.equals(resiNat.getName())) { if (!name.equals(resiVaccine.getName())) {
changedFieldNames.add("姓名"); isNameChanged = true;
resiNat.setName(name); resiVaccine.setName(name);
needUpdate = true; needUpdate = true;
} }
if (!natResult.equals(resiNat.getNatResult())) { if (!inoculateAddress.equals(resiVaccine.getInoculateAddress())) {
changedFieldNames.add("检测结果"); resiVaccine.setInoculateAddress(inoculateAddress);
resiNat.setNatResult(natResult);
needUpdate = true; needUpdate = true;
} }
// 检测地点和手机号先不提示,说需要提示再提示。需要考虑两个都不为空&&不相等 || 两个中一个为空一个不为空 if (!manufacturer.equals(resiVaccine.getManufacturer())) {
if ((com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(natAddress) && com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(resiNat.getNatAddress())) resiVaccine.setManufacturer(manufacturer);
|| (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(natAddress) && com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(resiNat.getNatAddress()))
|| (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(natAddress) && com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(resiNat.getNatAddress()) && !natAddress.equals(resiNat.getNatAddress()))) {
resiNat.setNatAddress(natAddress);
needUpdate = true; needUpdate = true;
} }
if (!mobile.equals(resiNat.getMobile())) { if (!mobile.equals(resiVaccine.getMobile())) {
resiNat.setMobile(mobile); resiVaccine.setMobile(mobile);
needUpdate = true; needUpdate = true;
} }
if (changedFieldNames.size() > 0) { if (isNameChanged) {
String fieldsStr = String.join(",", changedFieldNames); String message = "平台存在相同记录身份证号与姓名不一致,已更新最新姓名";
String message = "该次疫苗接种记录已存在,执行更新动作," + fieldsStr + "已成功更新"; IcVaccineImportExcelData.RowRemarkMessage errorRow = new IcVaccineImportExcelData.RowRemarkMessage();
IcNatImportExcelData.RowRemarkMessage errorRow = new IcNatImportExcelData.RowRemarkMessage();
errorRow.setName(name); errorRow.setName(name);
errorRow.setMobile(mobile); errorRow.setMobile(mobile);
errorRow.setIdCard(idCard); errorRow.setIdCard(idCard);
@ -367,19 +372,18 @@ public class IcVaccineServiceImpl extends BaseServiceImpl<IcVaccineDao, IcVaccin
} }
if (needUpdate) { if (needUpdate) {
resiNat.setUpdatedBy(currentUserId); resiVaccine.setUpdatedBy(currentUserId);
resiNat.setUpdatedTime(new Date()); resiVaccine.setUpdatedTime(new Date());
IcResiUserEntity resi = getResi(customerId, idCard, null); IcResiUserEntity resi = getResi(customerId, idCard, null);
resiNat.setIsResiUser(resi != null ? "1" : "0"); resiVaccine.setIsResiUser(resi != null ? "1" : "0");
resiNat.setUserId(resi != null ? resi.getId() : "");
baseDao.updateById(resiNat); baseDao.updateById(resiVaccine);
} }
// 还要创建关系。只有本辖区及下级居民,才建立关系 // 还要创建关系。只有本辖区及下级居民,才建立关系
if (getResi(customerId, idCard, String.join(":", Arrays.asList(agencyPids, agencyId))) != null) { if (getResi(customerId, idCard, String.join(":", Arrays.asList(agencyPids, agencyId))) != null) {
createNatRelation(resiNat.getId(), listener.getCurrentAgencyId(), listener.getCurrentAgencyPids()); createVaccineRelation(resiVaccine.getId(), listener.getCurrentAgencyId(), listener.getCurrentAgencyPids());
} }
return; return;
@ -388,14 +392,13 @@ public class IcVaccineServiceImpl extends BaseServiceImpl<IcVaccineDao, IcVaccin
// 执行新增操作 // 执行新增操作
IcResiUserEntity resi = getResi(customerId, idCard, null); IcResiUserEntity resi = getResi(customerId, idCard, null);
e.setIsResiUser(resi != null ? "1" : "0"); e.setIsResiUser(resi != null ? "1" : "0");
e.setUserId(resi != null ? resi.getId() : "");
e.setUserType("import"); e.setUserType("import");
baseDao.insert(e); baseDao.insert(e);
// 还要创建关系。只有本辖区及下级居民,才建立关系 // 还要创建关系。只有本辖区及下级居民,才建立关系
if (getResi(customerId, idCard, String.join(":", Arrays.asList(agencyPids, agencyId))) != null) { if (getResi(customerId, idCard, String.join(":", Arrays.asList(agencyPids, agencyId))) != null) {
createNatRelation(e.getId(), listener.getCurrentAgencyId(), listener.getCurrentAgencyPids()); createVaccineRelation(e.getId(), listener.getCurrentAgencyId(), listener.getCurrentAgencyPids());
} }
} }
@ -423,35 +426,35 @@ public class IcVaccineServiceImpl extends BaseServiceImpl<IcVaccineDao, IcVaccin
* @param idCard * @param idCard
* @return * @return
*/ */
public IcVaccineEntity getResiNat(String customerId, String idCard, Date natTime) { public IcVaccineEntity getResiVaccine(String customerId, String idCard, Date natTime) {
LambdaQueryWrapper<IcVaccineEntity> query = new LambdaQueryWrapper<>(); LambdaQueryWrapper<IcVaccineEntity> query = new LambdaQueryWrapper<>();
query.eq(IcVaccineEntity::getCustomerId, customerId); query.eq(IcVaccineEntity::getCustomerId, customerId);
query.eq(IcVaccineEntity::getIdCard, idCard); query.eq(IcVaccineEntity::getIdCard, idCard);
query.eq(IcVaccineEntity::getNatTime, natTime); query.eq(IcVaccineEntity::getInoculateTime, natTime);
return baseDao.selectOne(query); return baseDao.selectOne(query);
} }
/** /**
* 创建nat关系 * 创建关系
* @param natId * @param vaccineId
* @param currentUserAgencyId * @param currentUserAgencyId
*/ */
private void createNatRelation(String natId, String currentUserAgencyId, String agencyPids) { private void createVaccineRelation(String vaccineId, String currentUserAgencyId, String agencyPids) {
// 没有关系创建关系,有关系就跳过 // 没有关系创建关系,有关系就跳过
LambdaQueryWrapper<IcNatRelationEntity> query = new LambdaQueryWrapper<>(); LambdaQueryWrapper<IcVaccineRelationEntity> query = new LambdaQueryWrapper<>();
query.eq(IcNatRelationEntity::getIcNatId, natId); query.eq(IcVaccineRelationEntity::getIcVaccineId, vaccineId);
query.eq(IcNatRelationEntity::getAgencyId, currentUserAgencyId); query.eq(IcVaccineRelationEntity::getAgencyId, currentUserAgencyId);
if (icNatRelationDao.selectCount(query) > 0) { if (icVaccineRelationDao.selectCount(query) > 0) {
return; return;
} }
IcNatRelationEntity relation = new IcNatRelationEntity(); IcVaccineRelationEntity relation = new IcVaccineRelationEntity();
relation.setAgencyId(currentUserAgencyId); relation.setAgencyId(currentUserAgencyId);
relation.setPids(String.join(":", Arrays.asList(agencyPids, currentUserAgencyId))); relation.setPids(String.join(":", Arrays.asList(agencyPids, currentUserAgencyId)));
relation.setIcNatId(natId); relation.setIcVaccineId(vaccineId);
relation.setUserType("import"); relation.setUserType("import");
icNatRelationDao.insert(relation); icVaccineRelationDao.insert(relation);
} }
} }

BIN
epmet-user/epmet-user-server/src/main/resources/excel/ic_vaccine.xlsx

Binary file not shown.
Loading…
Cancel
Save