From eda58e0e6d4abdd2b060e28867d103045845aa69 Mon Sep 17 00:00:00 2001 From: 罗元桥 <2376770955@qq.com> Date: 星期一, 30 八月 2021 13:13:18 +0800 Subject: [PATCH] Merge branch 'test' into 'yuyue_dev' --- springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationDisabilityExcelListen.java | 887 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 440 insertions(+), 447 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationDisabilityExcelListen.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationDisabilityExcelListen.java index a3dde48..8ffa419 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationDisabilityExcelListen.java +++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationDisabilityExcelListen.java @@ -1,5 +1,15 @@ package com.panzhihua.common.listen; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.data.redis.core.ValueOperations; + import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.fastjson.JSONArray; @@ -16,18 +26,8 @@ import com.panzhihua.common.utlis.ListUtils; import com.panzhihua.common.utlis.PayUtil; import com.panzhihua.common.utlis.StringUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.data.redis.core.ValueOperations; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; +import lombok.extern.slf4j.Slf4j; /** * @description: 残疾人导入监听 @@ -35,367 +35,360 @@ */ @Slf4j public class ComMngPopulationDisabilityExcelListen extends AnalysisEventListener<Map<Integer, String>> { - private CommunityService communityService; - - private Long communityId; - + /** + * 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收 + */ + private static final int BATCH_COUNT = 5000; private static int headSize = 0; - + List<Map<Integer, String>> list = new ArrayList<Map<Integer, String>>(); + private CommunityService communityService; + private Long communityId; + private Long userId; private Map<Integer, String> headData; - - private String userName; - // FTP 登录密码 - private String password; - // FTP 服务器地址IP地址 - private String host; - // FTP 端口 - private int port; - private String excelUrl; - private StringRedisTemplate stringRedisTemplate; - public static String loadUrl; + public ComMngPopulationDisabilityExcelListen(CommunityService communityService, Long communityId, Long userId, + StringRedisTemplate stringRedisTemplate) { + this.communityService = communityService; + this.communityId = communityId; + this.userId = userId; + this.stringRedisTemplate = stringRedisTemplate; + } - public ComMngPopulationDisabilityExcelListen(CommunityService communityService, Long communityId, String userName, String password, String host, int port, String excelUrl, StringRedisTemplate stringRedisTemplate) { - this.communityService = communityService; - this.communityId = communityId; - this.userName = userName; - this.password = password; - this.host = host; - this.port = port; - this.excelUrl = excelUrl; - this.stringRedisTemplate = stringRedisTemplate; - } - - /** - * 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收 - */ - private static final int BATCH_COUNT = 5000; - List<Map<Integer, String>> list = new ArrayList<Map<Integer, String>>(); - - @Override - public void invoke(Map<Integer, String> data, AnalysisContext context) { - list.add(data); - if (list.size() >= BATCH_COUNT) { - saveData(); - list.clear(); - } - } - - /** - * 这里会一行行的返回头 - * - * @param headMap - * @param context - */ - @Override - public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) { - headSize = headMap.size(); - headData = headMap; - } - - @Override - public void doAfterAllAnalysed(AnalysisContext context) { + @Override + public void invoke(Map<Integer, String> data, AnalysisContext context) { + list.add(data); + if (list.size() >= BATCH_COUNT) { saveData(); - log.info("所有数据解析完成!"); + list.clear(); } + } - /** - * 不是固定的列只能手动处理 - */ - private void saveData() { - R<List<BcDictionaryVO>> dictionaryR = communityService.listDictionaryByKey(BcDictionaryConstants.FAMILY); - log.info("开始导入残疾人数据"); - log.info("表格总数据:" + list.size()); - if (list.size() == 0) { - throw new ServiceException("000", "导入数据为空!"); - } - ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue(); - String Disability = Constants.DISABILITY_POPULATION_ERROR_LIST; + /** + * 这里会一行行的返回头 + * + * @param headMap + * @param context + */ + @Override + public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) { + headSize = headMap.size(); + headData = headMap; + } - Map<String,String> dictMap = dictionaryR.getData().stream().collect(Collectors.toMap(BcDictionaryVO::getDictName,BcDictionaryVO::getDictValue)); -// Map<String,Integer> dictMap = new HashMap<>(); -// for(BcDictionaryVO vo : dictionaryR.getData()){ -// dictMap.put(vo.getDictName(),Integer.valueOf(vo.getDictValue())); -// } + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + saveData(); + log.info("所有数据解析完成!"); + } + /** + * 不是固定的列只能手动处理 + */ + private void saveData() { + R<List<BcDictionaryVO>> dictionaryR = communityService.listDictionaryByKey(BcDictionaryConstants.FAMILY); + log.info("开始导入残疾人数据"); + log.info("表格总数据:" + list.size()); + if (list.size() == 0) { + throw new ServiceException("000", "导入数据为空!"); + } + ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue(); + String Disability = Constants.DISABILITY_POPULATION_ERROR_LIST; - int index = 2; - try { - ArrayList<ComMngPopulationDisabilityExcelVO> voList = Lists.newArrayList(); -// List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>(); - ArrayList<ComMngPopulationDisabilityMistakeExcelVO> mistakes = Lists.newArrayList(); - for (Map<Integer, String> oneData : list) { - ComMngPopulationDisabilityExcelVO vo = new ComMngPopulationDisabilityExcelVO(); - if (StringUtils.isNotEmpty(oneData.get(0))){ - vo.setSerialNumber(oneData.get(0)); - } - //姓名和身份证都为空,为空户,无需操作,否则就解析年龄,性别,出生年月日 - if(StringUtils.isEmpty(oneData.get(1))){ - ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); - index++; - setDisabilityMistake(oneData, mistake); - mistake.setMistake("名字不可为空,请填写姓名"); - mistakes.add(mistake); - continue; - } - vo.setName(oneData.get(1)); - if(StringUtils.isEmpty(oneData.get(2))){ - ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); - index++; - setDisabilityMistake(oneData, mistake); - mistake.setMistake("身份证号不可为空,请填写身份证"); - mistakes.add(mistake); - continue; - } + Map<String, String> dictMap = dictionaryR.getData().stream() + .collect(Collectors.toMap(BcDictionaryVO::getDictName, BcDictionaryVO::getDictValue)); + // Map<String,Integer> dictMap = new HashMap<>(); + // for(BcDictionaryVO vo : dictionaryR.getData()){ + // dictMap.put(vo.getDictName(),Integer.valueOf(vo.getDictValue())); + // } - //判断身份证号码位数 - if(oneData.get(2).length() != 18){ - ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); - index++; - setDisabilityMistake(oneData, mistake); - mistake.setMistake("身份证号位数有误,请检查身份证号码是否正确"); - mistakes.add(mistake); - continue; - } - vo.setCardNo(oneData.get(2).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()); - } - - if(StringUtils.isNotEmpty(oneData.get(3))){ - vo.setCertificateSituation(oneData.get(3)); - } - if(StringUtils.isNotEmpty(oneData.get(4))){ - Integer isOk = PopulCultureLevelEnum.getCodeByName(oneData.get(4)); - if(isOk.equals(-1)){ - ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); - index++; - setDisabilityMistake(oneData, mistake); - mistake.setMistake("您填写的文化程度有误"); - mistakes.add(mistake); - continue; - } - vo.setCultureLevel(isOk); - } - if(StringUtils.isNotEmpty(oneData.get(5))){ - vo.setNation(oneData.get(5)); - } - if(StringUtils.isNotEmpty(oneData.get(6))){ - vo.setDisType(oneData.get(6)); - } - if(StringUtils.isNotEmpty(oneData.get(7))){ - vo.setDisLevel(oneData.get(7)); - } - if(StringUtils.isNotEmpty(oneData.get(8))){ - vo.setPhone(oneData.get(8)); - } - if(StringUtils.isEmpty(oneData.get(9))){ - index++; - ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); - setDisabilityMistake(oneData, mistake); - mistake.setMistake("街路巷不可为空"); - mistakes.add(mistake); - continue; - } - vo.setRoad(oneData.get(9)); - if(StringUtils.isEmpty(oneData.get(10))){ - index++; - ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); - setDisabilityMistake(oneData, mistake); - mistake.setMistake("小区号不可为空"); - mistakes.add(mistake); - continue; - } - vo.setDoorNo(oneData.get(10).trim()); -// if(StringUtils.isEmpty(oneData.get(11))){ -// index++; -// ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); -// setDisabilityMistake(oneData, mistake); -// mistake.setMistake("楼排号不可为空"); -// mistakes.add(mistake); -// continue; -// } - if(StringUtils.isNotEmpty(oneData.get(11))) { - vo.setFloor(oneData.get(11).trim()); - } -// if(StringUtils.isEmpty(oneData.get(12))){ -// index++; -// ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); -// setDisabilityMistake(oneData, mistake); -// mistake.setMistake("单元号不可为空"); -// mistakes.add(mistake); -// continue; -// } - if(StringUtils.isNotEmpty(oneData.get(12))) { - vo.setUnitNo(oneData.get(12).trim()); - } -// if(StringUtils.isEmpty(oneData.get(13))){ -// index++; -// ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); -// setDisabilityMistake(oneData, mistake); -// mistake.setMistake("户室不可为空"); -// mistakes.add(mistake); -// continue; -// } - if(StringUtils.isNotEmpty(oneData.get(13))) { - vo.setHouseNo(oneData.get(13).trim()); - } - if(StringUtils.isNotEmpty(oneData.get(14))){ - Integer isOk = PopulHouseUseEnum.getCodeByName(oneData.get(14)); - if(isOk.equals(-1)){ - ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); - index++; - setDisabilityMistake(oneData, mistake); - mistake.setMistake("您填写的是否租住有误"); - mistakes.add(mistake); - continue; - } - vo.setIsRent(isOk); - }else { - vo.setIsRent(PopulHouseUseEnum.getCodeByName("否")); - } - if(StringUtils.isNotEmpty(oneData.get(15))){ - Integer isOk = PopulHouseStatusEnum.getCodeByName(oneData.get(15).trim()); - if(isOk.equals(-1)){ - index++; - ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); - setDisabilityMistake(oneData, mistake); - mistake.setMistake("您填写的房屋状态有误"); - mistakes.add(mistake); - continue; - } - vo.setHouseStatus(isOk); - } - if(StringUtils.isNotEmpty(oneData.get(16))){ - Integer isOk = PopulHousePurposeEnum.getCodeByName(oneData.get(16).trim()); - if(isOk.equals(-1)){ - index++; - ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); - setDisabilityMistake(oneData, mistake); - mistake.setMistake("您填写的房屋用途有误"); - mistakes.add(mistake); - continue; - } - vo.setHousePurpose(PopulHousePurposeEnum.getCodeByName(oneData.get(16).trim())); - } - if(StringUtils.isNotEmpty(oneData.get(17))){ - Integer isOk = PopulHouseControlStatusEnum.getCodeByName(oneData.get(17)); - if(isOk.equals(-1)){ - index++; - ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); - setDisabilityMistake(oneData, mistake); - mistake.setMistake("您填写的管控状态有误"); - mistakes.add(mistake); - continue; - } - vo.setControlStatus(isOk); - } - if(StringUtils.isNotEmpty(oneData.get(18))){ - Integer isOk = PopulOutOrLocalEnum.getCodeByName(oneData.get(18)); - if(isOk.equals(-1)){ - index++; - ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); - setDisabilityMistake(oneData, mistake); - mistake.setMistake("您填写的本地/外地有误"); - mistakes.add(mistake); - continue; - } - vo.setOutOrLocal(isOk); - }else { - vo.setOutOrLocal(PopulOutOrLocalEnum.getCodeByName("本地")); - } - if(StringUtils.isNotEmpty(oneData.get(19))){ - vo.setCensusRegister(oneData.get(19).trim()); - } - if(StringUtils.isNotEmpty(oneData.get(20))){ - vo.setRemark(oneData.get(20).trim()); - } - vo.getUserTagStr().add("残疾人"); - for (int i = 21; 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); + int index = 2; + try { + ArrayList<ComMngPopulationDisabilityExcelVO> voList = Lists.newArrayList(); + // List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>(); + ArrayList<ComMngPopulationDisabilityMistakeExcelVO> mistakes = Lists.newArrayList(); + for (Map<Integer, String> oneData : list) { + ComMngPopulationDisabilityExcelVO vo = new ComMngPopulationDisabilityExcelVO(); + if (StringUtils.isNotEmpty(oneData.get(0))) { + vo.setSerialNumber(oneData.get(0)); + } + // 姓名和身份证都为空,为空户,无需操作,否则就解析年龄,性别,出生年月日 + if (StringUtils.isEmpty(oneData.get(1))) { + ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); index++; + setDisabilityMistake(oneData, mistake); + mistake.setMistake("名字不可为空,请填写姓名"); + mistakes.add(mistake); + continue; } - //客户需要暂时注释,等客户处理完成需要恢复 -// 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)); -// } - //根据list中的IdCard城市来去重 - List<ComMngPopulationDisabilityExcelVO> newVoList = voList.stream().filter(ListUtils.distinctByKey(ComMngPopulationDisabilityExcelVO::getDistinctPass)).collect(Collectors.toList()); - log.info("开始进入业务层处理逻辑"); - R r = communityService.listSavePopulationDisabilityExcelVO(newVoList, communityId); - log.info("业务层处理逻辑完成"); - if (!R.isOk(r)) { - log.info("业务层处理成功"); - List<ComMngPopulationDisabilityMistakeExcelVO> list = JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ComMngPopulationDisabilityMistakeExcelVO.class); -// String errMsg = r.getMsg(); -// List<ComMngPopulationImportErrorVO> errorList = JSON.parseArray(errMsg,ComMngPopulationImportErrorVO.class); -// if(!errorList.isEmpty()){ -// populationImportErrorVOList.addAll(errorList); -// } - mistakes.addAll(list); - log.info("将错误数据存入redis中"); - valueOperations.set(Disability,JSONArray.toJSONString(mistakes),1, TimeUnit.HOURS); - log.info("将错误数据存入redis中成功"); - throw new ServiceException("500", Disability); - }else{ - log.info("业务层处理逻辑失败"); - if(!mistakes.isEmpty()){ - log.info("业务层处理逻辑失败,将错误数据缓存到redis中"); - valueOperations.set(Disability,JSONArray.toJSONString(mistakes),1, TimeUnit.HOURS); - log.info("业务层处理逻辑失败,将错误数据缓存到redis中成功"); - throw new ServiceException("500", Disability); + vo.setName(oneData.get(1)); + if (StringUtils.isEmpty(oneData.get(2))) { + ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); + index++; + setDisabilityMistake(oneData, mistake); + mistake.setMistake("身份证号不可为空,请填写身份证"); + mistakes.add(mistake); + continue; + } + + // 判断身份证号码位数 + if (oneData.get(2).length() != 18) { + ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); + index++; + setDisabilityMistake(oneData, mistake); + mistake.setMistake("身份证号位数有误,请检查身份证号码是否正确"); + mistakes.add(mistake); + continue; + } + vo.setCardNo(oneData.get(2).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()); + } + + if (StringUtils.isNotEmpty(oneData.get(3))) { + vo.setCertificateSituation(oneData.get(3)); + } + if (StringUtils.isNotEmpty(oneData.get(4))) { + Integer isOk = PopulCultureLevelEnum.getCodeByName(oneData.get(4)); + if (isOk.equals(-1)) { + ComMngPopulationDisabilityMistakeExcelVO mistake = + new ComMngPopulationDisabilityMistakeExcelVO(); + index++; + setDisabilityMistake(oneData, mistake); + mistake.setMistake("您填写的文化程度有误"); + mistakes.add(mistake); + continue; + } + vo.setCultureLevel(isOk); + } + if (StringUtils.isNotEmpty(oneData.get(5))) { + vo.setNation(oneData.get(5)); + } + if (StringUtils.isNotEmpty(oneData.get(6))) { + vo.setDisType(oneData.get(6)); + } + if (StringUtils.isNotEmpty(oneData.get(7))) { + vo.setDisLevel(oneData.get(7)); + } + if (StringUtils.isNotEmpty(oneData.get(8))) { + vo.setPhone(oneData.get(8)); + } + if (StringUtils.isEmpty(oneData.get(9))) { + index++; + ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); + setDisabilityMistake(oneData, mistake); + mistake.setMistake("街路巷不可为空"); + mistakes.add(mistake); + continue; + } + vo.setRoad(oneData.get(9)); + if (StringUtils.isEmpty(oneData.get(10))) { + index++; + ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); + setDisabilityMistake(oneData, mistake); + mistake.setMistake("小区号不可为空"); + mistakes.add(mistake); + continue; + } + vo.setDoorNo(oneData.get(10).trim()); + // if(StringUtils.isEmpty(oneData.get(11))){ + // index++; + // ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); + // setDisabilityMistake(oneData, mistake); + // mistake.setMistake("楼排号不可为空"); + // mistakes.add(mistake); + // continue; + // } + if (StringUtils.isNotEmpty(oneData.get(11))) { + vo.setFloor(oneData.get(11).trim()); + } + // if(StringUtils.isEmpty(oneData.get(12))){ + // index++; + // ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); + // setDisabilityMistake(oneData, mistake); + // mistake.setMistake("单元号不可为空"); + // mistakes.add(mistake); + // continue; + // } + if (StringUtils.isNotEmpty(oneData.get(12))) { + vo.setUnitNo(oneData.get(12).trim()); + } + // if(StringUtils.isEmpty(oneData.get(13))){ + // index++; + // ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO(); + // setDisabilityMistake(oneData, mistake); + // mistake.setMistake("户室不可为空"); + // mistakes.add(mistake); + // continue; + // } + if (StringUtils.isNotEmpty(oneData.get(13))) { + vo.setHouseNo(oneData.get(13).trim()); + } + if (StringUtils.isNotEmpty(oneData.get(14))) { + Integer isOk = PopulHouseUseEnum.getCodeByName(oneData.get(14)); + if (isOk.equals(-1)) { + ComMngPopulationDisabilityMistakeExcelVO mistake = + new ComMngPopulationDisabilityMistakeExcelVO(); + index++; + setDisabilityMistake(oneData, mistake); + mistake.setMistake("您填写的是否租住有误"); + mistakes.add(mistake); + continue; + } + vo.setIsRent(isOk); + } else { + vo.setIsRent(PopulHouseUseEnum.getCodeByName("否")); + } + if (StringUtils.isNotEmpty(oneData.get(15))) { + Integer isOk = PopulHouseStatusEnum.getCodeByName(oneData.get(15).trim()); + if (isOk.equals(-1)) { + index++; + ComMngPopulationDisabilityMistakeExcelVO mistake = + new ComMngPopulationDisabilityMistakeExcelVO(); + setDisabilityMistake(oneData, mistake); + mistake.setMistake("您填写的房屋状态有误"); + mistakes.add(mistake); + continue; + } + vo.setHouseStatus(isOk); + } + if (StringUtils.isNotEmpty(oneData.get(16))) { + Integer isOk = PopulHousePurposeEnum.getCodeByName(oneData.get(16).trim()); + if (isOk.equals(-1)) { + index++; + ComMngPopulationDisabilityMistakeExcelVO mistake = + new ComMngPopulationDisabilityMistakeExcelVO(); + setDisabilityMistake(oneData, mistake); + mistake.setMistake("您填写的房屋用途有误"); + mistakes.add(mistake); + continue; + } + vo.setHousePurpose(PopulHousePurposeEnum.getCodeByName(oneData.get(16).trim())); + } + if (StringUtils.isNotEmpty(oneData.get(17))) { + Integer isOk = PopulHouseControlStatusEnum.getCodeByName(oneData.get(17)); + if (isOk.equals(-1)) { + index++; + ComMngPopulationDisabilityMistakeExcelVO mistake = + new ComMngPopulationDisabilityMistakeExcelVO(); + setDisabilityMistake(oneData, mistake); + mistake.setMistake("您填写的管控状态有误"); + mistakes.add(mistake); + continue; + } + vo.setControlStatus(isOk); + } + if (StringUtils.isNotEmpty(oneData.get(18))) { + Integer isOk = PopulOutOrLocalEnum.getCodeByName(oneData.get(18)); + if (isOk.equals(-1)) { + index++; + ComMngPopulationDisabilityMistakeExcelVO mistake = + new ComMngPopulationDisabilityMistakeExcelVO(); + setDisabilityMistake(oneData, mistake); + mistake.setMistake("您填写的本地/外地有误"); + mistakes.add(mistake); + continue; + } + vo.setOutOrLocal(isOk); + } else { + vo.setOutOrLocal(PopulOutOrLocalEnum.getCodeByName("本地")); + } + if (StringUtils.isNotEmpty(oneData.get(19))) { + vo.setCensusRegister(oneData.get(19).trim()); + } + if (StringUtils.isNotEmpty(oneData.get(20))) { + vo.setRemark(oneData.get(20).trim()); + } + vo.getUserTagStr().add("残疾人"); + for (int i = 21; i < headSize; i++) { + if (oneData.get(i) != null && oneData.get(i).equals("是")) { + vo.getUserTagStr().add(headData.get(i).substring(0, headData.get(i).indexOf("("))); } } - } catch (NumberFormatException e) { - log.info("处理数据时失败"); - e.printStackTrace(); -// List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>(); -// ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO(); -// importErrorVO.setErrorPosition("第" + index + "行"); -// importErrorVO.setErrorMsg("数据格式有误,请检查文档内数据"); -// populationImportErrorVOList.add(importErrorVO); - log.error("数据格式有误,第" + index + "行"); - throw new ServiceException("500", "导入失败111"); + // 将重复的数据进行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++; } + // 客户需要暂时注释,等客户处理完成需要恢复 + // 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)); + // } + // 根据list中的IdCard城市来去重 + List<ComMngPopulationDisabilityExcelVO> newVoList = + voList.stream().filter(ListUtils.distinctByKey(ComMngPopulationDisabilityExcelVO::getDistinctPass)) + .collect(Collectors.toList()); + log.info("开始进入业务层处理逻辑"); + R r = communityService.listSavePopulationDisabilityExcelVO(newVoList, communityId, userId); + log.info("业务层处理逻辑完成"); + if (!R.isOk(r)) { + log.info("业务层处理成功"); + List<ComMngPopulationDisabilityMistakeExcelVO> list = JSONArray + .parseArray(JSONArray.toJSONString(r.getData()), ComMngPopulationDisabilityMistakeExcelVO.class); + // String errMsg = r.getMsg(); + // List<ComMngPopulationImportErrorVO> errorList = + // JSON.parseArray(errMsg,ComMngPopulationImportErrorVO.class); + // if(!errorList.isEmpty()){ + // populationImportErrorVOList.addAll(errorList); + // } + mistakes.addAll(list); + log.info("将错误数据存入redis中"); + valueOperations.set(Disability, JSONArray.toJSONString(mistakes), 1, TimeUnit.HOURS); + log.info("将错误数据存入redis中成功"); + throw new ServiceException("500", Disability); + } else { + log.info("业务层处理逻辑失败"); + if (!mistakes.isEmpty()) { + log.info("业务层处理逻辑失败,将错误数据缓存到redis中"); + valueOperations.set(Disability, JSONArray.toJSONString(mistakes), 1, TimeUnit.HOURS); + log.info("业务层处理逻辑失败,将错误数据缓存到redis中成功"); + throw new ServiceException("500", Disability); + } + } + } catch (NumberFormatException e) { + log.info("处理数据时失败"); + e.printStackTrace(); + // List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>(); + // ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO(); + // importErrorVO.setErrorPosition("第" + index + "行"); + // importErrorVO.setErrorMsg("数据格式有误,请检查文档内数据"); + // populationImportErrorVOList.add(importErrorVO); + log.error("数据格式有误,第" + index + "行"); + throw new ServiceException("500", "导入失败111"); } + } - private void setDisabilityMistake(Map<Integer, String> map, ComMngPopulationDisabilityMistakeExcelVO vo){ + private void setDisabilityMistake(Map<Integer, String> map, ComMngPopulationDisabilityMistakeExcelVO vo) { vo.setSerialNumber(map.get(0)); vo.setName(map.get(1)); vo.setCardNo(map.get(2)); @@ -419,103 +412,103 @@ vo.setRemark(map.get(20)); } - private String convertMarriage(String ma) { + private String convertMarriage(String ma) { - if(Objects.equals("已",ma) || Objects.equals("一",ma)){ - ma = "已婚"; - }else if(Objects.equals("未",ma) || Objects.equals("未婚婚",ma)){ - ma = "未婚"; - }else if(Objects.equals("初",ma)){ - ma = "初婚"; - }else if(Objects.equals("再",ma)){ - ma = "再婚"; - }else if(Objects.equals("复",ma)){ - ma = "复婚"; - }else if(Objects.equals("丧",ma) || Objects.equals("丧偶偶",ma)){ - ma = "丧偶"; - }else if(Objects.equals("离",ma) || Objects.equals("离异",ma) || Objects.equals("离异婚",ma)){ - ma = "离婚"; - }else if(Objects.equals("分",ma)){ - ma = "分居"; - } - - return ma; + if (Objects.equals("已", ma) || Objects.equals("一", ma)) { + ma = "已婚"; + } else if (Objects.equals("未", ma) || Objects.equals("未婚婚", ma)) { + ma = "未婚"; + } else if (Objects.equals("初", ma)) { + ma = "初婚"; + } else if (Objects.equals("再", ma)) { + ma = "再婚"; + } else if (Objects.equals("复", ma)) { + ma = "复婚"; + } else if (Objects.equals("丧", ma) || Objects.equals("丧偶偶", ma)) { + ma = "丧偶"; + } else if (Objects.equals("离", ma) || Objects.equals("离异", ma) || Objects.equals("离异婚", ma)) { + ma = "离婚"; + } else if (Objects.equals("分", ma)) { + ma = "分居"; } - private String convertRelation(String ra) { - if(ra.contains("户主")){ - ra = "户主"; - }else if(Objects.equals(ra,"女儿")){ - ra = "女"; - }else if(Objects.equals(ra,"儿子") || Objects.equals(ra,"儿")){ - ra = "子"; - }else if(Objects.equals(ra,"大女")){ - ra = "长女"; - }else if(Objects.equals(ra,"二女") || Objects.equals(ra,"此女")){ - ra = "次女"; - }else if(Objects.equals(ra,"二子")){ - ra = "次子"; - }else if(Objects.equals(ra,"长男") || ra.contains("长子")){ - ra = "长子"; - }else if(Objects.equals(ra,"非亲属") || ra.contains("女友") || ra.contains("女朋友") - || ra.contains("男友") || ra.contains("男朋友")){ - ra = "其他"; - }else if(Objects.equals(ra,"姐")){ - ra = "姐姐"; - }else if(Objects.equals(ra,"户主")){ - ra = "本人"; - }else if(Objects.equals(ra,"妻子") || Objects.equals(ra,"媳妇")){ - ra = "妻"; - }else if(Objects.equals(ra,"哥") || Objects.equals(ra,"哥哥")){ - ra = "兄"; - }else if(Objects.equals(ra,"丈夫")){ - ra = "夫"; - }else if(Objects.equals(ra,"丈母娘")){ - ra = "岳母"; - }else if(Objects.equals(ra,"继子") || Objects.equals(ra,"养子")){ - ra = "养子或继子"; - }else if(Objects.equals(ra,"继女") || Objects.equals(ra,"养女")){ - ra = "养女或继女"; - }else if(ra.contains("儿媳")||ra.contains("长媳")){ - ra = "儿媳"; - }else if(Objects.equals(ra,"三姨") || Objects.equals(ra,"姨姨")){ - ra = "姨母"; - }else if(Objects.equals(ra,"二外孙女")){ - ra = "外孙女"; - }else if(Objects.equals(ra,"外孙")){ - ra = "外孙子"; - }else if(Objects.equals(ra,"侄儿")){ - ra = "侄子"; - }else if(ra.contains("表")){ - ra = "表兄弟、表姐妹"; - }else if(Objects.equals(ra,"继父") || Objects.equals(ra,"养父")){ - ra = "继父或养父"; - }else if(Objects.equals(ra,"父")){ - ra = "父亲"; - }else if(Objects.equals(ra,"弟弟")){ - ra = "弟"; - }else if(Objects.equals(ra,"孙")){ - ra = "孙子"; - }else if(Objects.equals(ra,"孙媳妇") || Objects.equals(ra,"外孙媳妇")){ - ra = "孙媳妇或外孙媳妇"; - }else if(Objects.equals(ra,"妹")){ - ra = "妹妹"; - }else if(Objects.equals(ra,"祖父母")){ - ra = "祖父母或外祖父母"; - }else if(Objects.equals(ra,"姐妹") || Objects.equals(ra,"兄弟")){ - ra = "兄弟姐妹"; - }else if(Objects.equals(ra,"其他姐妹") || Objects.equals(ra,"其他兄弟")){ - ra = "其他兄弟姐妹"; - }else if(Objects.equals(ra,"奶奶")){ - ra = "祖母"; - }else if(Objects.equals(ra,"爷爷")){ - ra = "祖父"; - }else if(Objects.equals(ra,"爷爷")){ - ra = "祖父"; - }else if(ra.contains("堂")){ - ra = "堂兄弟、堂姐妹"; - } + return ma; + } - return ra; + private String convertRelation(String ra) { + if (ra.contains("户主")) { + ra = "户主"; + } else if (Objects.equals(ra, "女儿")) { + ra = "女"; + } else if (Objects.equals(ra, "儿子") || Objects.equals(ra, "儿")) { + ra = "子"; + } else if (Objects.equals(ra, "大女")) { + ra = "长女"; + } else if (Objects.equals(ra, "二女") || Objects.equals(ra, "此女")) { + ra = "次女"; + } else if (Objects.equals(ra, "二子")) { + ra = "次子"; + } else if (Objects.equals(ra, "长男") || ra.contains("长子")) { + ra = "长子"; + } else if (Objects.equals(ra, "非亲属") || ra.contains("女友") || ra.contains("女朋友") || ra.contains("男友") + || ra.contains("男朋友")) { + ra = "其他"; + } else if (Objects.equals(ra, "姐")) { + ra = "姐姐"; + } else if (Objects.equals(ra, "户主")) { + ra = "本人"; + } else if (Objects.equals(ra, "妻子") || Objects.equals(ra, "媳妇")) { + ra = "妻"; + } else if (Objects.equals(ra, "哥") || Objects.equals(ra, "哥哥")) { + ra = "兄"; + } else if (Objects.equals(ra, "丈夫")) { + ra = "夫"; + } else if (Objects.equals(ra, "丈母娘")) { + ra = "岳母"; + } else if (Objects.equals(ra, "继子") || Objects.equals(ra, "养子")) { + ra = "养子或继子"; + } else if (Objects.equals(ra, "继女") || Objects.equals(ra, "养女")) { + ra = "养女或继女"; + } else if (ra.contains("儿媳") || ra.contains("长媳")) { + ra = "儿媳"; + } else if (Objects.equals(ra, "三姨") || Objects.equals(ra, "姨姨")) { + ra = "姨母"; + } else if (Objects.equals(ra, "二外孙女")) { + ra = "外孙女"; + } else if (Objects.equals(ra, "外孙")) { + ra = "外孙子"; + } else if (Objects.equals(ra, "侄儿")) { + ra = "侄子"; + } else if (ra.contains("表")) { + ra = "表兄弟、表姐妹"; + } else if (Objects.equals(ra, "继父") || Objects.equals(ra, "养父")) { + ra = "继父或养父"; + } else if (Objects.equals(ra, "父")) { + ra = "父亲"; + } else if (Objects.equals(ra, "弟弟")) { + ra = "弟"; + } else if (Objects.equals(ra, "孙")) { + ra = "孙子"; + } else if (Objects.equals(ra, "孙媳妇") || Objects.equals(ra, "外孙媳妇")) { + ra = "孙媳妇或外孙媳妇"; + } else if (Objects.equals(ra, "妹")) { + ra = "妹妹"; + } else if (Objects.equals(ra, "祖父母")) { + ra = "祖父母或外祖父母"; + } else if (Objects.equals(ra, "姐妹") || Objects.equals(ra, "兄弟")) { + ra = "兄弟姐妹"; + } else if (Objects.equals(ra, "其他姐妹") || Objects.equals(ra, "其他兄弟")) { + ra = "其他兄弟姐妹"; + } else if (Objects.equals(ra, "奶奶")) { + ra = "祖母"; + } else if (Objects.equals(ra, "爷爷")) { + ra = "祖父"; + } else if (Objects.equals(ra, "爷爷")) { + ra = "祖父"; + } else if (ra.contains("堂")) { + ra = "堂兄弟、堂姐妹"; } + + return ra; + } } -- Gitblit v1.7.1