huanghongfa
2021-08-19 c40be027ef8068b9a77bb24c94291dee25f563d8
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationDrugExcelListen.java
@@ -1,5 +1,6 @@
package com.panzhihua.common.listen;
import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.context.AnalysisContext;
@@ -119,10 +120,10 @@
            log.info("开始导入吸毒人员数据");
            log.info("表格总数据:" + list.size());
            if (list.size() == 0) {
                throw new ServiceException("500", "导入数据为空!");
                throw new ServiceException("100", "导入数据为空!");
            }
            ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue();
            String key = Constants.DRUG_POPULATION_ERROR_LIST + communityId;
            String key = Constants.DRUG_POPULATION_ERROR_LIST;
            Map<String,String> dictMap = dictionaryR.getData().stream().collect(Collectors.toMap(BcDictionaryVO::getDictName,BcDictionaryVO::getDictValue));
//        Map<String,Integer> dictMap = new HashMap<>();
@@ -133,6 +134,7 @@
            int index = 2;
            try {
                String[] parsePatterns = new String[]{"yyyy-MM-dd", "yyyy-M-dd", "yyyy-MM-d", "yyyy-M-d", "yyyy/MM/dd", "yyyy/M/dd", "yyyy/MM/d", "yyyy/M/d"};
                ArrayList<ComMngPopulationDrugExcelVO> voList = Lists.newArrayList();
//                List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>();
                ArrayList<ComMngPopulationDrugMistakeExcelVO> mistakes = Lists.newArrayList();
@@ -142,54 +144,53 @@
                        vo.setSerialNumber(oneData.get(0));
                    }
                    //姓名和身份证都为空,为空户,无需操作,否则就解析年龄,性别,出生年月日
                    if(StringUtils.isNotEmpty(oneData.get(1)) || StringUtils.isNotEmpty(oneData.get(3))){
                        if(StringUtils.isEmpty(oneData.get(1))){
                            ComMngPopulationDrugMistakeExcelVO mistake = new ComMngPopulationDrugMistakeExcelVO();
                            index++;
                            setDrugMistake(oneData, mistake);
                            mistake.setMistake("名字不可为空,请填写姓名");
                            mistakes.add(mistake);
                            continue;
                        }
                        vo.setName(oneData.get(1));
                        if(StringUtils.isEmpty(oneData.get(3))){
                            ComMngPopulationDrugMistakeExcelVO mistake = new ComMngPopulationDrugMistakeExcelVO();
                            index++;
                            setDrugMistake(oneData, mistake);
                            mistake.setMistake("身份证号不可为空,请填写身份证");
                            mistakes.add(mistake);
                            continue;
                        }
                    if(StringUtils.isEmpty(oneData.get(1))){
                        ComMngPopulationDrugMistakeExcelVO mistake = new ComMngPopulationDrugMistakeExcelVO();
                        index++;
                        setDrugMistake(oneData, mistake);
                        mistake.setMistake("名字不可为空,请填写姓名");
                        mistakes.add(mistake);
                        continue;
                    }
                    vo.setName(oneData.get(1));
                    if(StringUtils.isEmpty(oneData.get(3))){
                        ComMngPopulationDrugMistakeExcelVO mistake = new ComMngPopulationDrugMistakeExcelVO();
                        index++;
                        setDrugMistake(oneData, mistake);
                        mistake.setMistake("身份证号不可为空,请填写身份证");
                        mistakes.add(mistake);
                        continue;
                    }
                        //判断身份证号码位数
                        if(oneData.get(3).length() != 18){
                            ComMngPopulationDrugMistakeExcelVO mistake = new ComMngPopulationDrugMistakeExcelVO();
                            index++;
                            setDrugMistake(oneData, mistake);
                            mistake.setMistake("身份证号位数有误,请检查身份证号码是否正确");
                            mistakes.add(mistake);
                            continue;
                        }
                        vo.setCardNo(oneData.get(3).toUpperCase());
                        //根据身份证号码解析年龄以及性别
                        //获取用户生日
                        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);
                        }
                    //判断身份证号码位数
                    if(oneData.get(3).length() != 18){
                        ComMngPopulationDrugMistakeExcelVO mistake = new ComMngPopulationDrugMistakeExcelVO();
                        index++;
                        setDrugMistake(oneData, mistake);
                        mistake.setMistake("身份证号位数有误,请检查身份证号码是否正确");
                        mistakes.add(mistake);
                        continue;
                    }
                    vo.setCardNo(oneData.get(3).toUpperCase());
                    //根据身份证号码解析年龄以及性别
                    //获取用户生日
                    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());
                        }
                    //获取用户性别
                    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(StringUtils.isNotEmpty(oneData.get(2))){
                        vo.setNation(oneData.get(2));
                    }
@@ -214,33 +215,39 @@
                        continue;
                    }
                    vo.setDoorNo(oneData.get(6).trim());
                    if(StringUtils.isEmpty(oneData.get(7))){
                        index++;
                        ComMngPopulationDrugMistakeExcelVO mistake = new ComMngPopulationDrugMistakeExcelVO();
                        setDrugMistake(oneData, mistake);
                        mistake.setMistake("楼排号不可为空");
                        mistakes.add(mistake);
                        continue;
//                    if(StringUtils.isEmpty(oneData.get(7))){
//                        index++;
//                        ComMngPopulationDrugMistakeExcelVO mistake = new ComMngPopulationDrugMistakeExcelVO();
//                        setDrugMistake(oneData, mistake);
//                        mistake.setMistake("楼排号不可为空");
//                        mistakes.add(mistake);
//                        continue;
//                    }
                    if(StringUtils.isNotEmpty(oneData.get(7))) {
                        vo.setFloor(oneData.get(7).trim());
                    }
                    vo.setFloor(oneData.get(7).trim());
                    if(StringUtils.isEmpty(oneData.get(8))){
                        index++;
                        ComMngPopulationDrugMistakeExcelVO mistake = new ComMngPopulationDrugMistakeExcelVO();
                        setDrugMistake(oneData, mistake);
                        mistake.setMistake("单元号不可为空");
                        mistakes.add(mistake);
                        continue;
//                    if(StringUtils.isEmpty(oneData.get(8))){
//                        index++;
//                        ComMngPopulationDrugMistakeExcelVO mistake = new ComMngPopulationDrugMistakeExcelVO();
//                        setDrugMistake(oneData, mistake);
//                        mistake.setMistake("单元号不可为空");
//                        mistakes.add(mistake);
//                        continue;
//                    }
                    if(StringUtils.isNotEmpty(oneData.get(8))) {
                        vo.setUnitNo(oneData.get(8).trim());
                    }
                    vo.setUnitNo(oneData.get(8).trim());
                    if(StringUtils.isEmpty(oneData.get(9))){
                        index++;
                        ComMngPopulationDrugMistakeExcelVO mistake = new ComMngPopulationDrugMistakeExcelVO();
                        setDrugMistake(oneData, mistake);
                        mistake.setMistake("户室不可为空");
                        mistakes.add(mistake);
                        continue;
//                    if(StringUtils.isEmpty(oneData.get(9))){
//                        index++;
//                        ComMngPopulationDrugMistakeExcelVO mistake = new ComMngPopulationDrugMistakeExcelVO();
//                        setDrugMistake(oneData, mistake);
//                        mistake.setMistake("户室不可为空");
//                        mistakes.add(mistake);
//                        continue;
//                    }
                    if(StringUtils.isNotEmpty(oneData.get(9))) {
                        vo.setHouseNo(oneData.get(9).trim());
                    }
                    vo.setHouseNo(oneData.get(9).trim());
                    if(StringUtils.isNotEmpty(oneData.get(10))){
                        Integer isOk = PopulHouseUseEnum.getCodeByName(oneData.get(10));
                        if(isOk.equals(-1)){
@@ -309,10 +316,43 @@
                        vo.setCensusRegister(oneData.get(15).trim());
                    }
                    if(StringUtils.isNotEmpty(oneData.get(16))){
                        vo.setRemark(oneData.get(16).trim());
                        vo.setFirstDate(DateUtil.parse(oneData.get(16).trim(), parsePatterns));
                    }
                    if(StringUtils.isNotEmpty(oneData.get(17))){
                        vo.setControlSituation(oneData.get(17).trim());
                    }
                    if(StringUtils.isNotEmpty(oneData.get(18))){
                        vo.setControlPerson(oneData.get(18).trim());
                    }
                    if(StringUtils.isNotEmpty(oneData.get(19))){
                        vo.setControlPersonPhone(oneData.get(19).trim());
                    }
                    if(StringUtils.isNotEmpty(oneData.get(20))){
                        vo.setHelpSituation(oneData.get(20).trim());
                    }
                    if(StringUtils.isNotEmpty(oneData.get(21))){
                        vo.setHelpPerson(oneData.get(21).trim());
                    }
                    if(StringUtils.isNotEmpty(oneData.get(22))){
                        vo.setHelpPersonPhone(oneData.get(22).trim());
                    }
                    if(StringUtils.isNotEmpty(oneData.get(23))){
                        vo.setDrugReason(oneData.get(23).trim());
                    }
                    if(StringUtils.isNotEmpty(oneData.get(24))){
                        vo.setDrugResult(oneData.get(24).trim());
                    }
                    if(StringUtils.isNotEmpty(oneData.get(25))){
                        vo.setHaveCrime(oneData.get(25).trim());
                    }
                    if(StringUtils.isNotEmpty(oneData.get(26))){
                        vo.setCrimeSutiation(oneData.get(26).trim());
                    }
                    if(StringUtils.isNotEmpty(oneData.get(27))){
                        vo.setRemark(oneData.get(27).trim());
                    }
                    vo.getUserTagStr().add("吸毒人员");
                    for (int i = 17; i < headSize; i++) {
                    for (int i = 28; i < headSize; i++) {
                        if (oneData.get(i) != null && oneData.get(i).equals("是")) {
                            vo.getUserTagStr().add(headData.get(i).substring(0,headData.get(i).indexOf("(")));
                        }
@@ -380,51 +420,6 @@
            }
        }
        private void setMistake(Map<Integer, String> map, ComMngPopulationMistakeExcelVO vo){
            vo.setName(map.get(0));
            vo.setCardNo(map.get(1));
            vo.setNation(map.get(2));
            vo.setPoliticalOutlook(map.get(3));
            vo.setIsRent(map.get(4));
            vo.setRelation(map.get(5));
            vo.setRoad(map.get(6));
            vo.setDoorNo(map.get(7));
            vo.setFloor(map.get(8));
            vo.setUnitNo(map.get(9));
            vo.setHouseNo(map.get(10));
            vo.setBuildPurpose(map.get(11));
            vo.setBuildArea(map.get(12));
            vo.setHouseStatus(map.get(13));
            vo.setHousePurpose(map.get(14));
            vo.setControlStatus(map.get(15));
            vo.setPhone(map.get(16));
            vo.setNativePlace(map.get(17));
            vo.setCultureLevel(map.get(18));
            vo.setMarriage(map.get(19));
            vo.setHealthy(map.get(20));
            vo.setBloodType(map.get(21));
            vo.setReligion(map.get(22));
            vo.setProfession(map.get(23));
            vo.setWorkCompany(map.get(24));
            vo.setOutOrLocal(map.get(25));
            vo.setCensusRegister(map.get(26));
            vo.setResidence(map.get(27));
//        vo.setAddress(map.get(28));
            vo.setPersonType(map.get(28));
            vo.setCountry(map.get(29));
            vo.setStringOfDeparture(map.get(30));
            vo.setPersonStatus(map.get(31));
            vo.setMonthlyIncome(map.get(32));
            vo.setFamilyStatus(map.get(33));
            vo.setGoalInChina(map.get(34));
            vo.setStringOfArrival(map.get(35));
            vo.setRemark(map.get(36));
            vo.setIdCardPositive(map.get(37));
            vo.setIdCardBack(map.get(38));
            vo.setHouseHold(map.get(39));
            vo.setDeath(map.get(40));
        }
    private void setDrugMistake(Map<Integer, String> map, ComMngPopulationDrugMistakeExcelVO vo){
        vo.setSerialNumber(map.get(0));
        vo.setName(map.get(1));
@@ -442,7 +437,18 @@
        vo.setControlStatus(map.get(13));
        vo.setOutOrLocal(map.get(14));
        vo.setCensusRegister(map.get(15));
        vo.setRemark(map.get(16));
        vo.setFirstDate(map.get(16));
        vo.setControlSituation(map.get(17));
        vo.setControlPerson(map.get(18));
        vo.setControlPersonPhone(map.get(19));
        vo.setHelpSituation(map.get(20));
        vo.setHelpPerson(map.get(21));
        vo.setHelpPersonPhone(map.get(22));
        vo.setDrugReason(map.get(23));
        vo.setDrugResult(map.get(24));
        vo.setHaveCrime(map.get(25));
        vo.setCrimeSutiation(map.get(26));
        vo.setRemark(map.get(27));
    }
        private R mistakeExportPopulation(List<ComMngPopulationMistakeExcelVO> vo) {