Browse Source

单独拆分房屋导入功能

feature/user_house_import
zhangyuan 3 years ago
parent
commit
4d2a77ee63
  1. 18
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dao/EpidemicUserInfoDao.java
  2. 12
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/EpidemicUserInfoService.java
  3. 170
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/impl/EpidemicUserInfoServiceImpl.java
  4. 2
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/house/service/impl/HouseResidentServiceImpl.java
  5. 2
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/house/service/impl/HousingInformationServiceImpl.java
  6. 6
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/BuildingUnitController.java
  7. 12
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/EpidemicBuildingUnitService.java
  8. 269
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicBuildingUnitServiceImpl.java
  9. 1
      epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicPlotCoordinateServiceImpl.java
  10. 10
      epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInfoDao.xml

18
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dao/EpidemicUserInfoDao.java

@ -83,6 +83,16 @@ public interface EpidemicUserInfoDao extends BaseDao<EpidemicUserInfoEntity> {
*/
EpidemicUserInfoEntity selectInfoByIdCard(@Param("idCard") String idCard);
/**
* 根据身份证号查询信息
*
* @param idCards
* @return java.util.List<com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInfoEntity>
* @author zhy
* @date 2022/6/7 10:19
*/
List<EpidemicUserInfoEntity> listByIdCards(@Param("idCards") List<String> idCards);
/**
* 根据身份证号查询基础信息表信息
*
@ -198,40 +208,40 @@ public interface EpidemicUserInfoDao extends BaseDao<EpidemicUserInfoEntity> {
void setJionTimeToNull(@Param("id") String id);
/**
* @return java.lang.String
* @describe: 通过身份证号码查询手机号
* @author zhy
* @date 2021/8/23 17:56
* @params [idcard]
* @return java.lang.String
*/
String getMobileByIdCard(@Param("idcard") String idcard);
List<EpidemicUserInfoEntity> selectAll();
/**
* @return void
* @describe: 更新县平台传送过来的时间和删除标识字段
* @author wangtong
* @date 2022/1/13 15:52
* @params [eu]
* @return void
*/
void updateSysInfo(EpidemicUserInfoEntity eu);
/**
* @return com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInfoEntity
* @describe: 根据身份证号查询未删除的最新的一条数据
* @author wangtong
* @date 2022/1/20 9:30
* @params [idcard]
* @return com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInfoEntity
*/
EpidemicUserInfoEntity selectUserByIdCard(@Param("idcard") String idcard);
/**
* @return void
* @describe: resetUserCheckState
* @author wangtong
* @date 2022/4/1 10:40
* @params []
* @return void
*/
void resetUserCheckState();

12
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/EpidemicUserInfoService.java

@ -157,7 +157,17 @@ public interface EpidemicUserInfoService extends CrudService<EpidemicUserInfoEnt
* @author zhy
* @date 2021/9/9 13:34
*/
EpidemicUserInfoEntity selectInfoByIdCard(String idCard);
EpidemicUserInfoEntity getByIdCard(String idCard);
/**
* 根据身份证查找用户
*
* @param idCards
* @return com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInfoEntity
* @author zhy
* @date 2021/9/9 13:34
*/
List<EpidemicUserInfoEntity> listByIdCards(List<String> idCards);
/**
* @return com.elink.esua.epdc.commons.tools.utils.Result

170
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/impl/EpidemicUserInfoServiceImpl.java

@ -332,7 +332,7 @@ public class EpidemicUserInfoServiceImpl extends CrudServiceImpl<EpidemicUserInf
return new Result().error("请输入手机号");
}
// 已存在的居民信息进行更新,否则进行插入操作
EpidemicUserInfoEntity check = epidemicUserInfoService.selectInfoByIdCard(idCard);
EpidemicUserInfoEntity check = epidemicUserInfoService.getByIdCard(idCard);
if (null != check) {
return new Result().error("该身份证号已存在。");
}
@ -645,10 +645,15 @@ public class EpidemicUserInfoServiceImpl extends CrudServiceImpl<EpidemicUserInf
}
@Override
public EpidemicUserInfoEntity selectInfoByIdCard(String idCard) {
public EpidemicUserInfoEntity getByIdCard(String idCard) {
return baseDao.selectInfoByIdCard(idCard);
}
@Override
public List<EpidemicUserInfoEntity> listByIdCards(List<String> idCards) {
return baseDao.listByIdCards(idCards);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Result importEpidemicUser(MultipartFile file, String gridId) {
@ -1362,6 +1367,7 @@ public class EpidemicUserInfoServiceImpl extends CrudServiceImpl<EpidemicUserInf
List<EpidemicUserInfoEntity> addList = new ArrayList<>();
List<EpidemicUserInfoEntity> updateList = new ArrayList<>();
List<EpidemicUserInfoEntity> checkList = epidemicUserInfoService.listByIdCards(baseResidentInformationExcels.stream().map(BaseResidentInformationUpdateExcel::getSelfIdentityNo).collect(Collectors.toList()));
for (BaseResidentInformationUpdateExcel baseResidentInformationExcel : baseResidentInformationExcels) {
//插入居民信息
@ -1396,12 +1402,11 @@ public class EpidemicUserInfoServiceImpl extends CrudServiceImpl<EpidemicUserInf
epidemicUserInfoEntity.setUnemploymentRegister("");
}
// 已存在的居民信息进行更新,否则进行插入操作
EpidemicUserInfoEntity check = epidemicUserInfoService.selectInfoByIdCard(baseResidentInformationExcel.getSelfIdentityNo());
if (null == check) {
Optional<EpidemicUserInfoEntity> optional = checkList.stream().filter(item -> item.getIdCard().equals(baseResidentInformationExcel.getSelfIdentityNo())).findFirst();
if (!optional.isPresent()) {
addList.add(epidemicUserInfoEntity);
// epidemicUserInfoService.insert(epidemicUserInfoEntity);
} else {
EpidemicUserInfoEntity check = optional.get();
check.setUserName(epidemicUserInfoEntity.getUserName());
check.setGender(epidemicUserInfoEntity.getGender());
check.setNation(epidemicUserInfoEntity.getNation());
@ -1461,7 +1466,6 @@ public class EpidemicUserInfoServiceImpl extends CrudServiceImpl<EpidemicUserInf
check.setParentDeptNames(epidemicUserInfoEntity.getParentDeptNames());
check.setAllDeptIds(epidemicUserInfoEntity.getAllDeptIds());
check.setAllDeptNames(epidemicUserInfoEntity.getAllDeptNames());
// epidemicUserInfoService.updateById(check);
updateList.add(check);
}
@ -1506,82 +1510,82 @@ public class EpidemicUserInfoServiceImpl extends CrudServiceImpl<EpidemicUserInf
epidemicUserInfoService.updateBatchById(updateList);
}
// 补充人房关系
List<EpidemicPlotBuildingResultDTO> buildingList = epidemicPlotBuildingService.listAllBuildingInfo();
List<EpidemicUnitInfoResultDTO> unitList = epidemicBuildingUnitService.listAllUnitInfo();
List<EpidemicUnitOwnerEntity> addOwner = new ArrayList<>();
List<EpidemicBuildingUnitEntity> addUnit = new ArrayList<>();
addList.forEach(item -> {
// 只有信息完整的才进行匹配
if (StringUtils.isNotBlank(item.getPlot()) && StringUtils.isNotBlank(item.getBuildingNo()) && StringUtils.isNotBlank(item.getUnit())) {
Optional<EpidemicUnitInfoResultDTO> unitOptional = unitList.stream().filter(unit -> unit.getPlotName().equals(item.getPlot()) && unit.getBuildingName().equals(item.getBuildingNo()) && unit.getUnit().equals(item.getUnit())).findFirst();
if (unitOptional.isPresent()) {
EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
entity.setIdCard(item.getIdCard());
entity.setUnitId(unitOptional.get().getUnitId());
entity.setOwnerName(item.getUserName());
entity.setMobile(item.getMobile());
addOwner.add(entity);
} else {
Optional<EpidemicPlotBuildingResultDTO> buildingOptional = buildingList.stream().filter(build -> build.getPlotName().equals(item.getPlot()) && build.getBuildingName().equals(item.getBuildingNo())).findFirst();
if (buildingOptional.isPresent()) {
EpidemicBuildingUnitEntity unitEntity = new EpidemicBuildingUnitEntity();
unitEntity.setBuildingId(buildingOptional.get().getId());
unitEntity.setUnit(item.getUnit());
unitEntity.setRoomNo(item.getRoomNo());
unitEntity.setIdCard(item.getIdCard());
unitEntity.setOwnerName(item.getUserName());
unitEntity.setMobile(item.getMobile());
unitEntity.setRoomType(NumConstant.ONE_STR);
addUnit.add(unitEntity);
EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
entity.setIdCard(item.getIdCard());
entity.setUnitId(unitEntity.getId());
entity.setOwnerName(item.getUserName());
entity.setMobile(item.getMobile());
addOwner.add(entity);
}
}
}
});
updateList.forEach(item -> {
// 只有信息完整的才进行匹配
if (StringUtils.isNotBlank(item.getPlot()) && StringUtils.isNotBlank(item.getBuildingNo()) && StringUtils.isNotBlank(item.getUnit())) {
Optional<EpidemicUnitInfoResultDTO> unitOptional = unitList.stream().filter(unit -> unit.getPlotName().equals(item.getPlot()) && unit.getBuildingName().equals(item.getBuildingNo()) && unit.getUnit().equals(item.getUnit())).findFirst();
if (unitOptional.isPresent()) {
EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
entity.setIdCard(item.getIdCard());
entity.setUnitId(unitOptional.get().getUnitId());
entity.setOwnerName(item.getUserName());
entity.setMobile(item.getMobile());
// todo del?
addOwner.add(entity);
} else {
Optional<EpidemicPlotBuildingResultDTO> buildingOptional = buildingList.stream().filter(build -> build.getPlotName().equals(item.getPlot()) && build.getBuildingName().equals(item.getBuildingNo())).findFirst();
if (buildingOptional.isPresent()) {
EpidemicBuildingUnitEntity unitEntity = new EpidemicBuildingUnitEntity();
unitEntity.setBuildingId(buildingOptional.get().getId());
unitEntity.setUnit(item.getUnit());
unitEntity.setRoomNo(item.getRoomNo());
unitEntity.setIdCard(item.getIdCard());
unitEntity.setOwnerName(item.getUserName());
unitEntity.setMobile(item.getMobile());
unitEntity.setRoomType(NumConstant.ONE_STR);
addUnit.add(unitEntity);
EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
entity.setIdCard(item.getIdCard());
entity.setUnitId(unitEntity.getId());
entity.setOwnerName(item.getUserName());
entity.setMobile(item.getMobile());
// todo del?
addOwner.add(entity);
}
}
}
});
epidemicBuildingUnitService.insertBatch(addUnit);
epidemicUnitOwnerService.insertBatch(addOwner);
// // 补充人房关系
// List<EpidemicPlotBuildingResultDTO> buildingList = epidemicPlotBuildingService.listAllBuildingInfo();
// List<EpidemicUnitInfoResultDTO> unitList = epidemicBuildingUnitService.listAllUnitInfo();
// List<EpidemicUnitOwnerEntity> addOwner = new ArrayList<>();
// List<EpidemicBuildingUnitEntity> addUnit = new ArrayList<>();
// addList.forEach(item -> {
// // 只有信息完整的才进行匹配
// if (StringUtils.isNotBlank(item.getPlot()) && StringUtils.isNotBlank(item.getBuildingNo()) && StringUtils.isNotBlank(item.getUnit())) {
// Optional<EpidemicUnitInfoResultDTO> unitOptional = unitList.stream().filter(unit -> unit.getPlotName().equals(item.getPlot()) && unit.getBuildingName().equals(item.getBuildingNo()) && unit.getUnit().equals(item.getUnit())).findFirst();
// if (unitOptional.isPresent()) {
// EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
// entity.setIdCard(item.getIdCard());
// entity.setUnitId(unitOptional.get().getUnitId());
// entity.setOwnerName(item.getUserName());
// entity.setMobile(item.getMobile());
// addOwner.add(entity);
// } else {
// Optional<EpidemicPlotBuildingResultDTO> buildingOptional = buildingList.stream().filter(build -> build.getPlotName().equals(item.getPlot()) && build.getBuildingName().equals(item.getBuildingNo())).findFirst();
// if (buildingOptional.isPresent()) {
// EpidemicBuildingUnitEntity unitEntity = new EpidemicBuildingUnitEntity();
// unitEntity.setBuildingId(buildingOptional.get().getId());
// unitEntity.setUnit(item.getUnit());
// unitEntity.setRoomNo(item.getRoomNo());
// unitEntity.setIdCard(item.getIdCard());
// unitEntity.setOwnerName(item.getUserName());
// unitEntity.setMobile(item.getMobile());
// unitEntity.setRoomType(NumConstant.ONE_STR);
// addUnit.add(unitEntity);
// EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
// entity.setIdCard(item.getIdCard());
// entity.setUnitId(unitEntity.getId());
// entity.setOwnerName(item.getUserName());
// entity.setMobile(item.getMobile());
// addOwner.add(entity);
// }
// }
// }
// });
//
// updateList.forEach(item -> {
// // 只有信息完整的才进行匹配
// if (StringUtils.isNotBlank(item.getPlot()) && StringUtils.isNotBlank(item.getBuildingNo()) && StringUtils.isNotBlank(item.getUnit())) {
// Optional<EpidemicUnitInfoResultDTO> unitOptional = unitList.stream().filter(unit -> unit.getPlotName().equals(item.getPlot()) && unit.getBuildingName().equals(item.getBuildingNo()) && unit.getUnit().equals(item.getUnit())).findFirst();
// if (unitOptional.isPresent()) {
// EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
// entity.setIdCard(item.getIdCard());
// entity.setUnitId(unitOptional.get().getUnitId());
// entity.setOwnerName(item.getUserName());
// entity.setMobile(item.getMobile());
// // todo del?
// addOwner.add(entity);
// } else {
// Optional<EpidemicPlotBuildingResultDTO> buildingOptional = buildingList.stream().filter(build -> build.getPlotName().equals(item.getPlot()) && build.getBuildingName().equals(item.getBuildingNo())).findFirst();
// if (buildingOptional.isPresent()) {
// EpidemicBuildingUnitEntity unitEntity = new EpidemicBuildingUnitEntity();
// unitEntity.setBuildingId(buildingOptional.get().getId());
// unitEntity.setUnit(item.getUnit());
// unitEntity.setRoomNo(item.getRoomNo());
// unitEntity.setIdCard(item.getIdCard());
// unitEntity.setOwnerName(item.getUserName());
// unitEntity.setMobile(item.getMobile());
// unitEntity.setRoomType(NumConstant.ONE_STR);
// addUnit.add(unitEntity);
// EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
// entity.setIdCard(item.getIdCard());
// entity.setUnitId(unitEntity.getId());
// entity.setOwnerName(item.getUserName());
// entity.setMobile(item.getMobile());
// // todo del?
// addOwner.add(entity);
// }
// }
// }
// });
// epidemicBuildingUnitService.insertBatch(addUnit);
// epidemicUnitOwnerService.insertBatch(addOwner);
}

2
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/house/service/impl/HouseResidentServiceImpl.java

@ -359,7 +359,7 @@ public class HouseResidentServiceImpl extends BaseServiceImpl<HouseResidentDao,
if (houseHeadInfo == null) {
return new Result().error("请先填写户主信息!");
}
EpidemicUserInfoEntity check = epidemicUserInfoService.selectInfoByIdCard(dto.getResidentsIdentityNo());
EpidemicUserInfoEntity check = epidemicUserInfoService.getByIdCard(dto.getResidentsIdentityNo());
if (null != check && null != houseHeadInfo) {
throw new RenException("身份证号已存在");
}

2
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/house/service/impl/HousingInformationServiceImpl.java

@ -484,7 +484,7 @@ public class HousingInformationServiceImpl extends BaseServiceImpl<HousingInform
EpidemicUserInfoEntity epidemicUserInfoEntity = convertInformationToUserInfo(populationInformationEntity);
epidemicUserInfoEntity.setIdCard(baseResidentInformationExcel.getSelfIdentityNo());
// 已存在的居民信息进行更新,否则进行插入操作
EpidemicUserInfoEntity check = epidemicUserInfoService.selectInfoByIdCard(baseResidentInformationExcel.getSelfIdentityNo());
EpidemicUserInfoEntity check = epidemicUserInfoService.getByIdCard(baseResidentInformationExcel.getSelfIdentityNo());
if (null == check) {
epidemicUserInfoEntity.setRelation(baseResidentInformationExcel.getHouseHeadRelation());
epidemicUserInfoService.insert(epidemicUserInfoEntity);

6
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/controller/BuildingUnitController.java

@ -32,6 +32,7 @@ import com.elink.esua.epdc.vaccine.personroom.excel.EpidemicBuildingUnitExcel;
import com.elink.esua.epdc.vaccine.personroom.service.EpidemicBuildingUnitService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@ -97,4 +98,9 @@ public class BuildingUnitController {
return new Result();
}
@PostMapping("importHouse")
public Result importHouse(@RequestParam("file") MultipartFile file, String gridId) {
return epidemicBuildingUnitService.importEpidemicHouse(file, gridId);
}
}

12
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/EpidemicBuildingUnitService.java

@ -24,6 +24,7 @@ import com.elink.esua.epdc.dto.personroom.EpidemicBuildingUnitDTO;
import com.elink.esua.epdc.dto.personroom.result.EpidemicBuildingUnitDetailResultDTO;
import com.elink.esua.epdc.dto.personroom.result.EpidemicUnitInfoResultDTO;
import com.elink.esua.epdc.vaccine.personroom.entity.EpidemicBuildingUnitEntity;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@ -94,4 +95,15 @@ public interface EpidemicBuildingUnitService extends CrudService<EpidemicBuildin
* @date 2022/6/2 15:38
*/
List<EpidemicUnitInfoResultDTO> listAllUnitInfo();
/**
* 导入房屋
*
* @param file
* @param gridId
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zhy
* @date 2022/6/7 9:30
*/
Result importEpidemicHouse(MultipartFile file, String gridId);
}

269
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicBuildingUnitServiceImpl.java

@ -17,30 +17,47 @@
package com.elink.esua.epdc.vaccine.personroom.service.impl;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.CrudServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.utils.IdentityNoUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.utils.StreamUtils;
import com.elink.esua.epdc.dto.ParentAndAllDeptDTO;
import com.elink.esua.epdc.dto.house.SysPopulationSimpleDictDTO;
import com.elink.esua.epdc.dto.house.result.EpdcPopulationErrorResultDTO;
import com.elink.esua.epdc.dto.personroom.EpidemicBuildingUnitDTO;
import com.elink.esua.epdc.dto.personroom.EpidemicUnitOwnerDTO;
import com.elink.esua.epdc.dto.personroom.result.EpidemicBuildingUnitDetailResultDTO;
import com.elink.esua.epdc.dto.personroom.result.EpidemicPlotBuildingResultDTO;
import com.elink.esua.epdc.dto.personroom.result.EpidemicUnitInfoResultDTO;
import com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserErrorEntity;
import com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInfoEntity;
import com.elink.esua.epdc.vaccine.epidemic.service.EpidemicUserErrorService;
import com.elink.esua.epdc.vaccine.epidemic.service.EpidemicUserInfoService;
import com.elink.esua.epdc.vaccine.feign.VimAdminFeignClient;
import com.elink.esua.epdc.vaccine.house.excel.BaseResidentInformationUpdateExcel;
import com.elink.esua.epdc.vaccine.personroom.dao.EpidemicBuildingUnitDao;
import com.elink.esua.epdc.vaccine.personroom.entity.EpidemicBuildingUnitEntity;
import com.elink.esua.epdc.vaccine.personroom.entity.EpidemicUnitOwnerEntity;
import com.elink.esua.epdc.vaccine.personroom.redis.EpidemicBuildingUnitRedis;
import com.elink.esua.epdc.vaccine.personroom.service.EpidemicBuildingUnitService;
import com.elink.esua.epdc.vaccine.personroom.service.EpidemicPlotBuildingService;
import com.elink.esua.epdc.vaccine.personroom.service.EpidemicUnitOwnerService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.*;
import java.util.stream.Collectors;
@ -59,6 +76,18 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
@Autowired
private EpidemicUnitOwnerService epidemicUnitOwnerService;
@Autowired
private EpidemicUserErrorService epidemicUserErrorService;
@Autowired
private EpidemicUserInfoService epidemicUserInfoService;
@Autowired
private EpidemicPlotBuildingService epidemicPlotBuildingService;
@Autowired
private VimAdminFeignClient adminVimFeignClient;
@Override
public PageData<EpidemicBuildingUnitDTO> page(Map<String, Object> params) {
IPage<EpidemicBuildingUnitDTO> page = getPage(params);
@ -198,6 +227,65 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public Result importEpidemicHouse(MultipartFile file, String gridId) {
ParentAndAllDeptDTO parentAndAllDeptDTO = null;
if (StringUtils.isNotBlank(gridId)) {
Result<ParentAndAllDeptDTO> parentAndAllDept = adminVimFeignClient.getParentAndAllDept(gridId);
if (!parentAndAllDept.success() || parentAndAllDept.getData() == null) {
return new Result().error("获取归属部门信息失败");
}
parentAndAllDeptDTO = parentAndAllDept.getData();
}
File f = StreamUtils.conversionFile(file);
ImportParams importParams = new ImportParams();
try {
//户主身份证和插入的ID,便于保存居住人信息时匹配户主信息
Map<String, String> populationIdNoAndIdMap = new HashMap<>();
//居民导入数据
List<BaseResidentInformationUpdateExcel> baseResidentInformationUpdateExcels;
// 处理错误数据使用
List<BaseResidentInformationUpdateExcel> baseResidentInformationUpdateExcelsNew;
//居民导入数据异常提示
List<EpdcPopulationErrorResultDTO> epdcPopulationErrorResultDTOS;
// 存储批量插入实体
List<BaseResidentInformationUpdateExcel> addList = new ArrayList<>();
// 存储错误数据批量插入实体
List<BaseResidentInformationUpdateExcel> addErrorList = new ArrayList<>();
// 检验和新增居住人信息
baseResidentInformationUpdateExcels = ExcelImportUtil.importExcel(f, BaseResidentInformationUpdateExcel.class, importParams);
baseResidentInformationUpdateExcelsNew = ExcelImportUtil.importExcel(f, BaseResidentInformationUpdateExcel.class, importParams);
// 校验数据
epdcPopulationErrorResultDTOS = this.checkResidentsExcel(baseResidentInformationUpdateExcels, baseResidentInformationUpdateExcelsNew, null, addList, addErrorList);
// 保存居住人信息
if (addList.size() > 0) {
saveResidentList(addList, parentAndAllDeptDTO, populationIdNoAndIdMap);
}
// 批量插入错误数据
List<EpidemicUserErrorEntity> insertErrorList = ConvertUtils.sourceToTarget(addErrorList, EpidemicUserErrorEntity.class);
Integer insertNo = epidemicUserErrorService.getMaxInsertNo();
for (EpidemicUserErrorEntity entity : insertErrorList) {
entity.setInsertNo(insertNo);
}
epidemicUserErrorService.insertBatch(insertErrorList);
// 校验居住人信息
if (epdcPopulationErrorResultDTOS.size() > 0) {
return new Result().ok(epdcPopulationErrorResultDTOS);
}
} catch (Exception e1) {
e1.printStackTrace();
throw new RenException("导入失败:请检查导入模板或导入数据!");
}
return new Result();
}
private void saveOrUpdateOwners(List<EpidemicUnitOwnerDTO> owners, Long unitId) {
List<EpidemicUnitOwnerDTO> dtoList = owners.stream().filter(item -> StringUtils.isNotBlank(item.getIdCard())).collect(Collectors.toList());
List<EpidemicUnitOwnerEntity> list = ConvertUtils.sourceToTarget(dtoList, EpidemicUnitOwnerEntity.class);
@ -208,4 +296,185 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl<EpidemicBui
epidemicUnitOwnerService.insertBatch(list);
}
/**
* @return java.util.List<com.elink.esua.epdc.dto.epdc.result.EpdcPopulationErrorResultDTO>
* @Description 校验居住人数据
* @Author songyunpeng
* @Date 2020/8/31
* @Param [basePopulationInformationExcels, basePopulationInformationExcels1]
**/
private List<EpdcPopulationErrorResultDTO> checkResidentsExcel(List<BaseResidentInformationUpdateExcel> basePopulationInformationExcels,
List<BaseResidentInformationUpdateExcel> basePopulationInformationExcelsNew,
List<SysPopulationSimpleDictDTO> sysPopulationSimpleDictDTOS,
List<BaseResidentInformationUpdateExcel> addList,
List<BaseResidentInformationUpdateExcel> addErrorList) {
// 不匹配信息
List<EpdcPopulationErrorResultDTO> errorLineInfoList = new ArrayList<>();
EpdcPopulationErrorResultDTO errorLineInfoDto;
BaseResidentInformationUpdateExcel errorBaseUserInfo;
for (int i = 0; i < basePopulationInformationExcels.size(); i++) {
String errorInfo = "";
BaseResidentInformationUpdateExcel baseResidentInformationUpdateExcel = basePopulationInformationExcels.get(i);
errorBaseUserInfo = basePopulationInformationExcelsNew.get(i);
String selfIdentityNo = baseResidentInformationUpdateExcel.getSelfIdentityNo() == null ? null : baseResidentInformationUpdateExcel.getSelfIdentityNo().trim();
String plot = baseResidentInformationUpdateExcel.getPlot() == null ? null : baseResidentInformationUpdateExcel.getPlot().trim();
String buildingNo = baseResidentInformationUpdateExcel.getBuildingNo() == null ? null : baseResidentInformationUpdateExcel.getBuildingNo().trim();
String unit = baseResidentInformationUpdateExcel.getUnit() == null ? null : baseResidentInformationUpdateExcel.getUnit().trim();
String roomNo = baseResidentInformationUpdateExcel.getRoomNo() == null ? null : baseResidentInformationUpdateExcel.getRoomNo().trim();
if (StringUtils.isBlank(selfIdentityNo)) {
errorInfo += "本人身份证号为空;";
} else if (StringUtils.isNotBlank(selfIdentityNo)) {
String result = IdentityNoUtils.IdentityNoVerification(selfIdentityNo);
if (result != null) {
errorInfo += "本人身份证号码有误;";
} else {
baseResidentInformationUpdateExcel.setGender(IdentityNoUtils.getSex(selfIdentityNo));
baseResidentInformationUpdateExcel.setAge(IdentityNoUtils.getAge(selfIdentityNo));
baseResidentInformationUpdateExcel.setBirthday(IdentityNoUtils.getBirthday(selfIdentityNo));
baseResidentInformationUpdateExcel.setSelfIdentityNo(selfIdentityNo);
}
}
if (StringUtils.isBlank(plot)||StringUtils.isBlank(buildingNo)||StringUtils.isBlank(unit)||StringUtils.isBlank(roomNo)) {
errorInfo += "房屋信息不完整";
}
//如果有错误信息
if (StringUtils.isNotBlank(errorInfo)) {
errorLineInfoDto = new EpdcPopulationErrorResultDTO();
errorLineInfoDto.setErrorInfo(errorInfo);
errorLineInfoDto.setErrorLine((i + 2) + "");
errorLineInfoList.add(errorLineInfoDto);
// 设置错误信息
errorBaseUserInfo.setErrorInfo(errorInfo);
// 加入错误列表
addErrorList.add(errorBaseUserInfo);
} else {
addList.add(baseResidentInformationUpdateExcel);
}
}
return errorLineInfoList;
}
/**
* @return void
* @Description 校验完成后插入居民信息
* @Author songyunpeng
* @Date 2020/8/31
* @Param [baseResidentInformationExcels]
**/
private void saveResidentList(List<BaseResidentInformationUpdateExcel> baseResidentInformationExcels, ParentAndAllDeptDTO parentAndAllDeptDTO, Map<String, String> populationIdNoAndIdMap) {
List<EpidemicUserInfoEntity> addList = new ArrayList<>();
List<EpidemicUserInfoEntity> updateList = new ArrayList<>();
List<EpidemicUserInfoEntity> checkList = epidemicUserInfoService.listByIdCards(baseResidentInformationExcels.stream().map(BaseResidentInformationUpdateExcel::getSelfIdentityNo).collect(Collectors.toList()));
for (BaseResidentInformationUpdateExcel baseResidentInformationExcel : baseResidentInformationExcels) {
//插入居民信息
EpidemicUserInfoEntity epidemicUserInfoEntity = ConvertUtils.sourceToTarget(baseResidentInformationExcel, EpidemicUserInfoEntity.class);
epidemicUserInfoEntity.setIdCard(baseResidentInformationExcel.getSelfIdentityNo());
// 已存在的居民信息进行更新,否则进行插入操作
Optional<EpidemicUserInfoEntity> optional = checkList.stream().filter(item -> item.getIdCard().equals(baseResidentInformationExcel.getSelfIdentityNo())).findFirst();
if (!optional.isPresent()) {
addList.add(epidemicUserInfoEntity);
} else {
EpidemicUserInfoEntity check = optional.get();
check.setPlot(epidemicUserInfoEntity.getPlot());
check.setBuildingNo(epidemicUserInfoEntity.getBuildingNo());
check.setUnit(epidemicUserInfoEntity.getUnit());
check.setRoomNo(epidemicUserInfoEntity.getRoomNo());
check.setRelation(epidemicUserInfoEntity.getRelation());
updateList.add(check);
}
}
// 改为批量插入和批量按ID更新
if (!addList.isEmpty()) {
epidemicUserInfoService.insertBatch(addList);
}
if (!updateList.isEmpty()) {
epidemicUserInfoService.updateBatchById(updateList);
}
// 补充人房关系
List<EpidemicPlotBuildingResultDTO> buildingList = epidemicPlotBuildingService.listAllBuildingInfo();
List<EpidemicUnitInfoResultDTO> unitList = listAllUnitInfo();
List<EpidemicUnitOwnerEntity> addOwner = new ArrayList<>();
List<EpidemicBuildingUnitEntity> addUnit = new ArrayList<>();
addList.forEach(item -> {
// 只有信息完整的才进行匹配
if (StringUtils.isNotBlank(item.getPlot()) && StringUtils.isNotBlank(item.getBuildingNo()) && StringUtils.isNotBlank(item.getUnit())) {
Optional<EpidemicUnitInfoResultDTO> unitOptional = unitList.stream().filter(unit -> unit.getPlotName().equals(item.getPlot()) && unit.getBuildingName().equals(item.getBuildingNo()) && unit.getUnit().equals(item.getUnit())).findFirst();
if (unitOptional.isPresent()) {
EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
entity.setIdCard(item.getIdCard());
entity.setUnitId(unitOptional.get().getUnitId());
entity.setOwnerName(item.getUserName());
entity.setMobile(item.getMobile());
addOwner.add(entity);
} else {
Optional<EpidemicPlotBuildingResultDTO> buildingOptional = buildingList.stream().filter(build -> build.getPlotName().equals(item.getPlot()) && build.getBuildingName().equals(item.getBuildingNo())).findFirst();
if (buildingOptional.isPresent()) {
EpidemicBuildingUnitEntity unitEntity = new EpidemicBuildingUnitEntity();
unitEntity.setBuildingId(buildingOptional.get().getId());
unitEntity.setUnit(item.getUnit());
unitEntity.setRoomNo(item.getRoomNo());
unitEntity.setIdCard(item.getIdCard());
unitEntity.setOwnerName(item.getUserName());
unitEntity.setMobile(item.getMobile());
unitEntity.setRoomType(NumConstant.ONE_STR);
addUnit.add(unitEntity);
EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
entity.setIdCard(item.getIdCard());
entity.setUnitId(unitEntity.getId());
entity.setOwnerName(item.getUserName());
entity.setMobile(item.getMobile());
addOwner.add(entity);
}
}
}
});
updateList.forEach(item -> {
// 只有信息完整的才进行匹配
if (StringUtils.isNotBlank(item.getPlot()) && StringUtils.isNotBlank(item.getBuildingNo()) && StringUtils.isNotBlank(item.getUnit())) {
Optional<EpidemicUnitInfoResultDTO> unitOptional = unitList.stream().filter(unit -> unit.getPlotName().equals(item.getPlot()) && unit.getBuildingName().equals(item.getBuildingNo()) && unit.getUnit().equals(item.getUnit())).findFirst();
if (unitOptional.isPresent()) {
EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
entity.setIdCard(item.getIdCard());
entity.setUnitId(unitOptional.get().getUnitId());
entity.setOwnerName(item.getUserName());
entity.setMobile(item.getMobile());
// todo del?
addOwner.add(entity);
} else {
Optional<EpidemicPlotBuildingResultDTO> buildingOptional = buildingList.stream().filter(build -> build.getPlotName().equals(item.getPlot()) && build.getBuildingName().equals(item.getBuildingNo())).findFirst();
if (buildingOptional.isPresent()) {
EpidemicBuildingUnitEntity unitEntity = new EpidemicBuildingUnitEntity();
unitEntity.setBuildingId(buildingOptional.get().getId());
unitEntity.setUnit(item.getUnit());
unitEntity.setRoomNo(item.getRoomNo());
unitEntity.setIdCard(item.getIdCard());
unitEntity.setOwnerName(item.getUserName());
unitEntity.setMobile(item.getMobile());
unitEntity.setRoomType(NumConstant.ONE_STR);
addUnit.add(unitEntity);
EpidemicUnitOwnerEntity entity = new EpidemicUnitOwnerEntity();
entity.setIdCard(item.getIdCard());
entity.setUnitId(unitEntity.getId());
entity.setOwnerName(item.getUserName());
entity.setMobile(item.getMobile());
// todo del?
addOwner.add(entity);
}
}
}
});
insertBatch(addUnit);
epidemicUnitOwnerService.insertBatch(addOwner);
}
}

1
epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicPlotCoordinateServiceImpl.java

@ -250,7 +250,6 @@ public class EpidemicPlotCoordinateServiceImpl extends CrudServiceImpl<EpidemicP
try {
// 判断导入文件是否为空
ImportParams importParams = new ImportParams();
// importParams.setTitleRows(3);
List<EpidemicPlotCoordinateImportExcel> recordList = ExcelImportUtil.importExcel(f, EpidemicPlotCoordinateImportExcel.class, importParams);
if (CollUtil.isEmpty(recordList)) {
return new Result().error("导入内容不能为空");

10
epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInfoDao.xml

@ -462,7 +462,15 @@
where ID_CARD = #{idCard}
and del_flag = '0' limit 1
</select>
<select id="listByIdCards" resultMap="epidemicUserInfoMap">
select *
from epidemic_user_info
where del_flag = '0'
and ID_CARD in
<foreach item="idCard" collection="idCards" open="(" separator="," close=")">
#{idCard}
</foreach>
</select>
<select id="getEpidemicPageV2"
resultType="com.elink.esua.epdc.vaccine.epidemic.dto.result.EpidemicPageResultV2DTO">
select

Loading…
Cancel
Save