From b24f9c75c79e4de248505295bfea7055e4975ff4 Mon Sep 17 00:00:00 2001
From: 罗元桥 <2376770955@qq.com>
Date: 星期二, 25 五月 2021 14:23:04 +0800
Subject: [PATCH] Merge branch 'lyq' into 'test'

---
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java |  258 ++++++++++++++++++++++++++++++--------------------
 1 files changed, 154 insertions(+), 104 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java
index d5ac3ed..d70c094 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java
@@ -12,10 +12,7 @@
 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.ListUtils;
-import com.panzhihua.common.utlis.StringUtils;
+import com.panzhihua.common.utlis.*;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -88,114 +85,168 @@
             List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>();
             for (Map<Integer, String> oneData : list) {
                 ComMngPopulationServeExcelVO vo = new ComMngPopulationServeExcelVO();
-                if(oneData.get(0) == null){
-                    ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                    importErrorVO.setErrorPosition("第" + index + "行,第1列");
-                    importErrorVO.setErrorMsg("名字不可为空,请填写姓名");
-                    populationImportErrorVOList.add(importErrorVO);
-                    index++;
-                    continue;
-                }
-                vo.setName(oneData.get(0));
-                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){
-                    ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                    importErrorVO.setErrorPosition("第" + index + "行,第2列");
-                    importErrorVO.setErrorMsg("身份证号位数有误,请检查身份证号码是否正确");
-                    populationImportErrorVOList.add(importErrorVO);
-                    index++;
-                    continue;
-                }
-                vo.setCardNo(oneData.get(1));
-                //根据身份证号码解析年龄以及性别
-                //获取用户生日
-                String birthday = vo.getCardNo().substring(6, 14);
-                //设置用户年龄
-                vo.setAge(AgeUtils.getAgeFromBirthTime(birthday));
-                //获取用户性别
-                int sex = Integer.parseInt(vo.getCardNo().substring(16, 17));
-                if(sex%2 == 1){
-                    vo.setSex(PopulSexEnum.nan.getCode());
-                }else{
-                    vo.setSex(PopulSexEnum.nv.getCode());
-                }
-                if(oneData.get(2) != null){
-                    vo.setNation(oneData.get(2));
-                }
-                if(oneData.get(3) != null){
-                    vo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCodeByName(oneData.get(3)));
-                }
-                if(oneData.get(4) != null){
-                    vo.setIsRent(PopulIsOkEnum.getCodeByName(oneData.get(4)));
-                }
-                if(oneData.get(5) != null){
-                    vo.setRelation(PopulRelationEnum.getCodeByName(oneData.get(5)));
-                }
-                if(oneData.get(6) != null){
-                    vo.setRoad(oneData.get(6));
-                }
-                if(oneData.get(7) != null){
-                    vo.setDoorNo(Integer.valueOf(oneData.get(7)));
-                }
-                if(oneData.get(8) != null){
-                    vo.setFloor(oneData.get(8));
-                }
-                if(oneData.get(9) != null){
-                    vo.setUnitNo(Integer.valueOf(oneData.get(9)));
-                }
-                if(oneData.get(10) != null){
-                    vo.setHouseNo(Integer.valueOf(oneData.get(10).trim()));
-                }
-                if(oneData.get(11) != null){
-                    vo.setPhone(oneData.get(11));
-                }
-                if(oneData.get(12) != null){
-                    vo.setNativePlace(oneData.get(12));
-                }
-                if(oneData.get(13) != null){
-                    vo.setCultureLevel(PopulCultureLevelEnum.getCodeByName(oneData.get(13)));
-                }
-                if(oneData.get(14) != null){
-                    vo.setMarriage(PopulMarriageEnum.getCodeByName(oneData.get(14)));
-                }
-                if(oneData.get(15) != null){
-                    vo.setHealthy(oneData.get(15));
-                }
-                if(oneData.get(16) != null){
-                    vo.setWorkCompany(oneData.get(16));
-                }
+                //姓名和身份证都为空,为空户,无需操作,否则就解析年龄,性别,出生年月日
+                if(StringUtils.isNotEmpty(oneData.get(0)) || StringUtils.isNotEmpty(oneData.get(1))){
+                    if(StringUtils.isEmpty(oneData.get(0))){
+                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                        importErrorVO.setErrorPosition("第" + index + "行,第1列");
+                        importErrorVO.setErrorMsg("名字不可为空,请填写姓名");
+                        populationImportErrorVOList.add(importErrorVO);
+                        index++;
+                        continue;
+                    }
+                    vo.setName(oneData.get(0));
+                    if(StringUtils.isEmpty(oneData.get(1))){
+                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                        importErrorVO.setErrorPosition("第" + index + "行,第2列");
+                        importErrorVO.setErrorMsg("身份证号不可为空,请填写身份证号");
+                        populationImportErrorVOList.add(importErrorVO);
+                        index++;
+                        continue;
+                    }
 
-                if(oneData.get(17) != null && StringUtils.isNotEmpty(oneData.get(17))){
-                    String outOrLocal = oneData.get(17);
-                    if(outOrLocal.equals(ComMngPopulationServeExcelVO.outOrLocal.bd)){
-                        vo.setOutOrLocal(1);
-                    }else if(outOrLocal.equals(ComMngPopulationServeExcelVO.outOrLocal.wd)){
-                        vo.setOutOrLocal(2);
+                    //判断身份证号码位数
+                    if(oneData.get(1).length() != 18){
+                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                        importErrorVO.setErrorPosition("第" + index + "行,第2列");
+                        importErrorVO.setErrorMsg("身份证号位数有误,请检查身份证号码是否正确");
+                        populationImportErrorVOList.add(importErrorVO);
+                        index++;
+                        continue;
+                    }
+                    vo.setCardNo(oneData.get(1));
+                    //根据身份证号码解析年龄以及性别
+                    //获取用户生日
+                    String birthday = vo.getCardNo().substring(6, 14);
+                    if(StringUtils.isNotEmpty(birthday)){
+                        String year = birthday.substring(0,4);
+                        String month = birthday.substring(4,6);
+                        String day = birthday.substring(6,8);
+                        vo.setBirthday(year + "-" + month + "-" + day);
+                    }
+                    //设置用户年龄
+//                    vo.setAge(AgeUtils.getAgeFromBirthTime(birthday));
+                    //获取用户性别
+                    int sex = Integer.parseInt(vo.getCardNo().substring(16, 17));
+                    if(sex%2 == 1){
+                        vo.setSex(PopulSexEnum.nan.getCode());
+                    }else{
+                        vo.setSex(PopulSexEnum.nv.getCode());
                     }
                 }
-                if(oneData.get(18) != null){
-                    vo.setCensusRegister(oneData.get(18));
+                if(StringUtils.isNotEmpty(oneData.get(2))){
+                    vo.setNation(oneData.get(2));
                 }
-                if(oneData.get(19) != null){
-                    vo.setRemark(oneData.get(19));
+                if(StringUtils.isNotEmpty(oneData.get(3))){
+                    vo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCodeByName(oneData.get(3)));
                 }
-                for (int i = 20; i < headSize; i++) {
+                if(StringUtils.isNotEmpty(oneData.get(4))){
+                    vo.setIsRent(PopulIsOkEnum.getCodeByName(oneData.get(4)));
+                }
+                if(StringUtils.isNotEmpty(oneData.get(5))){
+                    vo.setRelation(PopulRelationEnum.getCodeByName(oneData.get(5)));
+                }
+                if(StringUtils.isEmpty(oneData.get(6))){
+                    ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                    importErrorVO.setErrorPosition("第" + index + "行,第7列");
+                    importErrorVO.setErrorMsg("街路巷不可为空");
+                    populationImportErrorVOList.add(importErrorVO);
+                    index++;
+                    continue;
+                }
+                vo.setRoad(oneData.get(6));
+                if(StringUtils.isEmpty(oneData.get(7))){
+                    ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                    importErrorVO.setErrorPosition("第" + index + "行,第8列");
+                    importErrorVO.setErrorMsg("小区号不可为空");
+                    populationImportErrorVOList.add(importErrorVO);
+                    index++;
+                    continue;
+                }
+                vo.setDoorNo(oneData.get(7).trim());
+                if(StringUtils.isEmpty(oneData.get(8))){
+                    ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                    importErrorVO.setErrorPosition("第" + index + "行,第9列");
+                    importErrorVO.setErrorMsg("楼排号不可为空");
+                    populationImportErrorVOList.add(importErrorVO);
+                    index++;
+                    continue;
+                }
+                vo.setFloor(oneData.get(8).trim());
+                if(StringUtils.isEmpty(oneData.get(9))){
+                    ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                    importErrorVO.setErrorPosition("第" + index + "行,第10列");
+                    importErrorVO.setErrorMsg("单元号不可为空");
+                    populationImportErrorVOList.add(importErrorVO);
+                    index++;
+                    continue;
+                }
+                vo.setUnitNo(oneData.get(9).trim());
+                if(StringUtils.isEmpty(oneData.get(10))){
+                    ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+                    importErrorVO.setErrorPosition("第" + index + "行,第11列");
+                    importErrorVO.setErrorMsg("户室不可为空");
+                    populationImportErrorVOList.add(importErrorVO);
+                    index++;
+                    continue;
+                }
+                vo.setHouseNo(oneData.get(10).trim());
+                if(StringUtils.isNotEmpty(oneData.get(11))){
+                    vo.setPhone(oneData.get(11).trim());
+                }
+                if(StringUtils.isNotEmpty(oneData.get(12))){
+                    vo.setNativePlace(oneData.get(12).trim());
+                }
+                if(StringUtils.isNotEmpty(oneData.get(13))){
+                    vo.setCultureLevel(PopulCultureLevelEnum.getCodeByName(oneData.get(13).trim()));
+                }
+                if(StringUtils.isNotEmpty(oneData.get(14))){
+                    vo.setMarriage(PopulMarriageEnum.getCodeByName(oneData.get(14).trim()));
+                }
+                if(StringUtils.isNotEmpty(oneData.get(15))){
+                    vo.setHealthy(oneData.get(15).trim());
+                }
+                if(StringUtils.isNotEmpty(oneData.get(16))){
+                    vo.setWorkCompany(oneData.get(16).trim());
+                }
+                if(StringUtils.isNotEmpty(oneData.get(17))){
+                    vo.setRemark(oneData.get(17).trim());
+                }
+                if(StringUtils.isNotEmpty(oneData.get(18))){
+                    vo.setCensusRegister(oneData.get(18).trim());
+                }
+                if(StringUtils.isNotEmpty(oneData.get(19))){
+                    vo.setOutOrLocal(PopulOutOrLocalEnum.getCodeByName(oneData.get(19).trim()));
+                }
+                if(StringUtils.isNotEmpty(oneData.get(20))){
+                    vo.setHouseStatus(PopulHouseStatusEnum.getCodeByName(oneData.get(20).trim()));
+                }
+                if(StringUtils.isNotEmpty(oneData.get(21))){
+                    vo.setHousePurpose(PopulHousePurposeEnum.getCodeByName(oneData.get(21).trim()));
+                }
+                if(StringUtils.isNotEmpty(oneData.get(22))){
+                    vo.setControlStatus(PopulHouseControlStatusEnum.getCodeByName(oneData.get(22).trim()));
+                }
+                if(StringUtils.isNotEmpty(oneData.get(23))){
+                    vo.setIsResidence(PopulIsOksEnum.getCodeByName(oneData.get(23).trim()));
+                }
+                for (int i = 24; i < headSize; i++) {
                     if (oneData.get(i) != null && oneData.get(i).equals("是")) {
                         vo.getUserTagStr().add(headData.get(i).substring(0,headData.get(i).indexOf("(")));
                     }
                 }
 
+                //将重复的数据进行MD5加密实现去重
+                String distinct = vo.getName() + vo.getCardNo() + vo.getRoad() + vo.getDoorNo() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
+                try {
+                    String distinctPass = PayUtil.MD5(distinct);
+                    if(StringUtils.isNotEmpty(distinctPass)){
+                        vo.setDistinctPass(distinctPass);
+                    }
+                }catch (Exception e){
+                    log.error("组装MD5加密字段失败,数据表格行数:" + index);
+                    continue;
+                }
                 voList.add(vo);
                 index++;
             }
@@ -209,7 +260,7 @@
 //                throw new ServiceException("500", JSON.toJSONString(populationImportErrorVOList));
 //            }
             //根据list中的IdCard城市来去重
-            List<ComMngPopulationServeExcelVO> newVoList = voList.stream().filter(ListUtils.distinctByKey(ComMngPopulationServeExcelVO::getCardNo)).collect(Collectors.toList());
+            List<ComMngPopulationServeExcelVO> newVoList = voList.stream().filter(ListUtils.distinctByKey(ComMngPopulationServeExcelVO::getDistinctPass)).collect(Collectors.toList());
             R r = communityService.listSavePopulationServeExcelVO(newVoList, communityId);
             if (!R.isOk(r)) {
                 String errMsg = r.getMsg();
@@ -229,7 +280,6 @@
             importErrorVO.setErrorPosition("第" + index + "行");
             importErrorVO.setErrorMsg("数据格式有误,请检查文档内数据");
             populationImportErrorVOList.add(importErrorVO);
-            index++;
             throw new ServiceException("500", JSON.toJSONString(populationImportErrorVOList));
         }
     }

--
Gitblit v1.7.1