diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dao/EpidemicUserInfoDao.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dao/EpidemicUserInfoDao.java index 2cb09a2..74ab571 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/dao/EpidemicUserInfoDao.java +++ b/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 selectInfoByIdCard(@Param("idCard") String idCard); + /** + * 根据身份证号查询信息 + * + * @param idCards + * @return java.util.List + * @author zhy + * @date 2022/6/7 10:19 + */ + List listByIdCards(@Param("idCards") List idCards); + /** * 根据身份证号查询基础信息表信息 * @@ -198,41 +208,41 @@ public interface EpidemicUserInfoDao extends BaseDao { void setJionTimeToNull(@Param("id") String id); /** - * @describe: 通过身份证号码查询手机号 + * @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 selectAll(); /** - * @describe: 更新县平台传送过来的时间和删除标识字段 - * @author wangtong - * @date 2022/1/13 15:52 - * @params [eu] - * @return void - */ + * @return void + * @describe: 更新县平台传送过来的时间和删除标识字段 + * @author wangtong + * @date 2022/1/13 15:52 + * @params [eu] + */ void updateSysInfo(EpidemicUserInfoEntity eu); /** - * @describe: 根据身份证号查询未删除的最新的一条数据 - * @author wangtong - * @date 2022/1/20 9:30 - * @params [idcard] - * @return com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInfoEntity - */ + * @return com.elink.esua.epdc.vaccine.epidemic.entity.EpidemicUserInfoEntity + * @describe: 根据身份证号查询未删除的最新的一条数据 + * @author wangtong + * @date 2022/1/20 9:30 + * @params [idcard] + */ EpidemicUserInfoEntity selectUserByIdCard(@Param("idcard") String idcard); /** - * @describe: resetUserCheckState - * @author wangtong - * @date 2022/4/1 10:40 - * @params [] - * @return void - */ + * @return void + * @describe: resetUserCheckState + * @author wangtong + * @date 2022/4/1 10:40 + * @params [] + */ void resetUserCheckState(); /*** @@ -242,7 +252,7 @@ public interface EpidemicUserInfoDao extends BaseDao { * @author qushutong * @date 2022/4/25 15:59 */ - void deleteByIds(Long[] ids); + void deleteByIds(Long[] ids); /** * 查询房主 diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/EpidemicUserInfoService.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/EpidemicUserInfoService.java index a2bd406..dbea258 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/EpidemicUserInfoService.java +++ b/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 listByIdCards(List idCards); /** * @return com.elink.esua.epdc.commons.tools.utils.Result diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/impl/EpidemicUserInfoServiceImpl.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/impl/EpidemicUserInfoServiceImpl.java index 2e14a54..4f2b9b9 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/epidemic/service/impl/EpidemicUserInfoServiceImpl.java +++ b/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 listByIdCards(List 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 addList = new ArrayList<>(); List updateList = new ArrayList<>(); + List checkList = epidemicUserInfoService.listByIdCards(baseResidentInformationExcels.stream().map(BaseResidentInformationUpdateExcel::getSelfIdentityNo).collect(Collectors.toList())); for (BaseResidentInformationUpdateExcel baseResidentInformationExcel : baseResidentInformationExcels) { //插入居民信息 @@ -1396,12 +1402,11 @@ public class EpidemicUserInfoServiceImpl extends CrudServiceImpl 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 buildingList = epidemicPlotBuildingService.listAllBuildingInfo(); - List unitList = epidemicBuildingUnitService.listAllUnitInfo(); - List addOwner = new ArrayList<>(); - List addUnit = new ArrayList<>(); - addList.forEach(item -> { - // 只有信息完整的才进行匹配 - if (StringUtils.isNotBlank(item.getPlot()) && StringUtils.isNotBlank(item.getBuildingNo()) && StringUtils.isNotBlank(item.getUnit())) { - Optional 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 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 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 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 buildingList = epidemicPlotBuildingService.listAllBuildingInfo(); +// List unitList = epidemicBuildingUnitService.listAllUnitInfo(); +// List addOwner = new ArrayList<>(); +// List addUnit = new ArrayList<>(); +// addList.forEach(item -> { +// // 只有信息完整的才进行匹配 +// if (StringUtils.isNotBlank(item.getPlot()) && StringUtils.isNotBlank(item.getBuildingNo()) && StringUtils.isNotBlank(item.getUnit())) { +// Optional 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 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 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 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); } diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/house/service/impl/HouseResidentServiceImpl.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/house/service/impl/HouseResidentServiceImpl.java index f76b92a..44e627b 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/house/service/impl/HouseResidentServiceImpl.java +++ b/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 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); } diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicBuildingUnitServiceImpl.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicBuildingUnitServiceImpl.java index 0b71ced..d8acb4b 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicBuildingUnitServiceImpl.java +++ b/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 page(Map params) { IPage page = getPage(params); @@ -161,7 +190,7 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl listAllUnitInfo(){ + public List listAllUnitInfo() { return baseDao.listAllUnitInfo(); } @@ -198,6 +227,65 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl 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 populationIdNoAndIdMap = new HashMap<>(); + //居民导入数据 + List baseResidentInformationUpdateExcels; + // 处理错误数据使用 + List baseResidentInformationUpdateExcelsNew; + //居民导入数据异常提示 + List epdcPopulationErrorResultDTOS; + + // 存储批量插入实体 + List addList = new ArrayList<>(); + // 存储错误数据批量插入实体 + List 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 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 owners, Long unitId) { List dtoList = owners.stream().filter(item -> StringUtils.isNotBlank(item.getIdCard())).collect(Collectors.toList()); List list = ConvertUtils.sourceToTarget(dtoList, EpidemicUnitOwnerEntity.class); @@ -208,4 +296,185 @@ public class EpidemicBuildingUnitServiceImpl extends CrudServiceImpl + * @Description 校验居住人数据 + * @Author songyunpeng + * @Date 2020/8/31 + * @Param [basePopulationInformationExcels, basePopulationInformationExcels1] + **/ + private List checkResidentsExcel(List basePopulationInformationExcels, + List basePopulationInformationExcelsNew, + List sysPopulationSimpleDictDTOS, + List addList, + List addErrorList) { + // 不匹配信息 + List 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 baseResidentInformationExcels, ParentAndAllDeptDTO parentAndAllDeptDTO, Map populationIdNoAndIdMap) { + + List addList = new ArrayList<>(); + List updateList = new ArrayList<>(); + List 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 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 buildingList = epidemicPlotBuildingService.listAllBuildingInfo(); + List unitList = listAllUnitInfo(); + List addOwner = new ArrayList<>(); + List addUnit = new ArrayList<>(); + addList.forEach(item -> { + // 只有信息完整的才进行匹配 + if (StringUtils.isNotBlank(item.getPlot()) && StringUtils.isNotBlank(item.getBuildingNo()) && StringUtils.isNotBlank(item.getUnit())) { + Optional 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 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 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 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); + + } } diff --git a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicPlotCoordinateServiceImpl.java b/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicPlotCoordinateServiceImpl.java index a4f3c08..d2be91e 100644 --- a/epdc-cloud-vim-yushan/src/main/java/com/elink/esua/epdc/vaccine/personroom/service/impl/EpidemicPlotCoordinateServiceImpl.java +++ b/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 recordList = ExcelImportUtil.importExcel(f, EpidemicPlotCoordinateImportExcel.class, importParams); if (CollUtil.isEmpty(recordList)) { return new Result().error("导入内容不能为空"); diff --git a/epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInfoDao.xml b/epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInfoDao.xml index 89a6b01..fb58f0a 100644 --- a/epdc-cloud-vim-yushan/src/main/resources/mapper/epidemic/EpidemicUserInfoDao.xml +++ b/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 - +