springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java
@@ -2,6 +2,7 @@ import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Lists; import com.panzhihua.common.enums.PopulIsOkEnum; @@ -9,11 +10,13 @@ import com.panzhihua.common.enums.PopulSexEnum; import com.panzhihua.common.exceptions.ServiceException; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.ComMngPopulationImportErrorVO; import com.panzhihua.common.model.vos.community.ComMngPopulationServeExcelVO; import com.panzhihua.common.model.vos.community.ComMngVillageServeExcelVO; import com.panzhihua.common.service.community.CommunityService; import com.panzhihua.common.utlis.AgeUtils; import com.panzhihua.common.utlis.IdCardUtil; import com.panzhihua.common.utlis.StringUtils; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -82,18 +85,37 @@ int index = 2; try { ArrayList<ComMngPopulationServeExcelVO> voList = Lists.newArrayList(); List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>(); for (Map<Integer, String> oneData : list) { ComMngPopulationServeExcelVO vo = new ComMngPopulationServeExcelVO(); if(oneData.get(0) == null){ throw new ServiceException("500", "名字不可为空:第" + index + "行,第1列"); ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO(); importErrorVO.setErrorPosition("第" + index + "行,第1列"); importErrorVO.setErrorMsg("名字不可为空,请填写姓名"); populationImportErrorVOList.add(importErrorVO); index++; continue; } vo.setName(oneData.get(0)); if(oneData.get(1) == null){ throw new ServiceException("500", "身份证号不可为空:第" + index + "行,第2列"); if(StringUtils.isEmpty(oneData.get(1))){ ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO(); importErrorVO.setErrorPosition("第" + index + "行,第2列"); importErrorVO.setErrorMsg("身份证号不可为空,请填写身份证号"); populationImportErrorVOList.add(importErrorVO); index++; continue; } // if(!IdCardUtil.identityValidator(oneData.get(1))){ // throw new ServiceException("500", "身份证号格式错误:第" + index + "行,第2列"); // } //判断身份证号码位数 if(oneData.get(1).length() != 18){ throw new ServiceException("500", "身份证号位数不正确:第" + index + "行,第2列"); ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO(); importErrorVO.setErrorPosition("第" + index + "行,第2列"); importErrorVO.setErrorMsg("身份证号位数有误,请检查身份证号码是否正确"); populationImportErrorVOList.add(importErrorVO); index++; continue; } vo.setCardNo(oneData.get(1)); //根据身份证号码解析年龄以及性别 @@ -164,12 +186,22 @@ voList.add(vo); index++; } R r = communityService.listSavePopulationServeExcelVO(voList, communityId); if (!R.isOk(r)) { throw new ServiceException(r.getMsg()); if(populationImportErrorVOList.isEmpty()){ R r = communityService.listSavePopulationServeExcelVO(voList, communityId); if (!R.isOk(r)) { throw new ServiceException(r.getMsg()); } }else{ throw new ServiceException("500", JSON.toJSONString(populationImportErrorVOList)); } } catch (NumberFormatException e) { throw new ServiceException("500", "填写数据格式错误:第" + index + "行" + e.getMessage()); List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>(); ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO(); importErrorVO.setErrorPosition("第" + index + "行"); importErrorVO.setErrorMsg("数据格式有误,请检查文档内数据"); populationImportErrorVOList.add(importErrorVO); index++; throw new ServiceException("500", JSON.toJSONString(populationImportErrorVOList)); } } } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationImportErrorVO.java
New file @@ -0,0 +1,17 @@ package com.panzhihua.common.model.vos.community; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; import java.io.Serializable; @Data public class ComMngPopulationImportErrorVO implements Serializable { @ExcelProperty(value = "错误位置", index = 0) private String errorPosition; @ExcelProperty(value = "错误原因", index = 0) private String errorMsg; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/RealNameUtil.java
@@ -28,7 +28,9 @@ boolean result=false; String headerkey="Authorization"; String headervalue="Basic "; String basicStr = CLIENT_ID + ":" + SECRET + ":" + System.currentTimeMillis(); Long time = System.currentTimeMillis(); String basicStr = CLIENT_ID + ":" + SECRET + ":" + time; log.info("请求时间戳:" + time); String encodeToString = Base64.getEncoder().encodeToString(basicStr.getBytes()); JSONObject jsonObject=new JSONObject(); jsonObject.put("idNumber",idcard); @@ -36,6 +38,7 @@ String param=jsonObject.toJSONString(); log.info("请求公安实名认证接口,请求地址:" + URL); log.info("请求公安实名认证接口,请求参数:" + param); log.info("请求公安实名认证接口,请求头参数:" + headervalue + encodeToString); String postByJson = HttpClientUtil.sendPostByJson(URL, param, 0, headerkey, headervalue + encodeToString); log.info("请求公安实名认证接口,返回参数:" + postByJson); int code = JSONObject.parseObject(postByJson).getIntValue("code"); @@ -46,7 +49,7 @@ } public static void main(String[] args) { boolean b = RealNameUtil.authentication("340823199112282557", "黄宏发f"); boolean b = RealNameUtil.authentication("340823199112282557", "黄宏发"); System.out.println(b); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java
@@ -1,5 +1,6 @@ package com.panzhihua.service_community.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -193,31 +194,38 @@ @Override public R listSavePopulation(List<ComMngPopulationServeExcelVO> list, Long communityId) { if (list.size() == 0) { return R.fail("数据为空!"); } List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>(); List<ComMngPopulationDO> comMngPopulationDOS = populationDAO.selectList(new QueryWrapper<ComMngPopulationDO>().lambda().eq(ComMngPopulationDO::getActId, communityId)); //查询该社区所有(实有房屋)小区 // List<ComMngVillageDO> villageDOList = comActVillageDAO.selectList(new QueryWrapper<ComMngVillageDO>().lambda().eq(ComMngVillageDO::getCommunityId, communityId)); ComActDO comActDO = comActDAO.selectById(communityId); ArrayList<ComMngPopulationDO> populationDOList = Lists.newArrayList(); int index = 2; for (ComMngPopulationServeExcelVO vo : list) { //判断DB和exel数据重复判断 boolean result = comMngPopulationDOS.stream().anyMatch(population -> population.getCardNo().equals(vo.getCardNo())); if (result) { return R.fail(501,"导入实有人口已存在(" + vo.getCardNo() + ")"); ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO(); importErrorVO.setErrorMsg("导入实有人口已存在(" + vo.getCardNo() + ")"); importErrorVO.setErrorPosition("第" + index + "行,第2列"); populationImportErrorVOList.add(importErrorVO); index++; continue; // return R.fail(501,"导入实有人口已存在(" + vo.getCardNo() + ")"); } index++; } ComActDO comActDO = comActDAO.selectById(communityId); ArrayList<ComMngPopulationDO> populationDOList = Lists.newArrayList(); list.forEach(vo -> { ComMngPopulationDO comMngPopulationDO = new ComMngPopulationDO(); //查询街路巷是否存在 ComMngVillageDO comMngVillageDO = comActVillageDAO.selectOne(new QueryWrapper<ComMngVillageDO>().eq("alley",vo.getRoad()).eq("house_num",vo.getDoorNo()).eq("community_id",communityId)); // ComMngVillageDO comMngVillageDO = villageDOList.stream().filter(village -> village.getAlley().equals(vo.getRoad()) && village.getHouseNum().equals(Integer.valueOf(vo.getDoorNo()))).findFirst().orElse(null); BeanUtils.copyProperties(vo, comMngPopulationDO); if (comMngVillageDO == null) { throw new ServiceException("查无:" + vo.getRoad() + "小区/房租地址,请先新建地址"); ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO(); importErrorVO.setErrorMsg("查无:" + vo.getRoad() + "小区/房租地址,请先新建地址"); importErrorVO.setErrorPosition("第" + index + "行,第7,8列"); populationImportErrorVOList.add(importErrorVO); index++; continue; } List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList()); comMngPopulationDO.setVillageId(comMngVillageDO.getVillageId()); @@ -226,7 +234,13 @@ comMngPopulationDO.setLabel(Joiner.on(",").join(userTag)); comMngPopulationDO.setVillageName(comMngVillageDO.getGroupAt()); populationDOList.add(comMngPopulationDO); }); index++; } //如果有错误,返回错误 if(!populationImportErrorVOList.isEmpty()){ return R.fail(JSON.toJSONString(populationImportErrorVOList)); } this.saveBatch(populationDOList); return R.ok("共计导入实有人口数量:" + populationDOList.size()); }