Merge remote-tracking branch 'origin/test' into test
| | |
| | | |
| | | public static final String KEY_POPULATION_ERROR_LIST = "KEY_POPULATION_ERROR_LIST_"; |
| | | |
| | | public static final String SENTENCE_POPULATION_ERROR_LIST = "SENTENCE_POPULATION_ERROR_LIST_"; |
| | | |
| | | public static final String VETERANS_POPULATION_ERROR_LIST = "VETERANS_POPULATION_ERROR_LIST_"; |
| | | |
| | | /** |
| | | * 高德地图获取天气url |
| | | */ |
New file |
| | |
| | | package com.panzhihua.common.listen; |
| | | |
| | | import com.alibaba.excel.EasyExcel; |
| | | import com.alibaba.excel.ExcelWriter; |
| | | import com.alibaba.excel.context.AnalysisContext; |
| | | import com.alibaba.excel.event.AnalysisEventListener; |
| | | import com.alibaba.excel.write.metadata.WriteSheet; |
| | | import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.google.common.collect.Lists; |
| | | import com.panzhihua.common.constants.BcDictionaryConstants; |
| | | import com.panzhihua.common.constants.Constants; |
| | | import com.panzhihua.common.enums.*; |
| | | import com.panzhihua.common.excel.CustomSheetWriteHandler; |
| | | import com.panzhihua.common.exceptions.ServiceException; |
| | | import com.panzhihua.common.model.vos.BcDictionaryVO; |
| | | import com.panzhihua.common.model.vos.R; |
| | | import com.panzhihua.common.model.vos.community.ComMngPopulationSentenceExcelVO; |
| | | import com.panzhihua.common.model.vos.community.ComMngPopulationSentenceMistakeExcelVO; |
| | | import com.panzhihua.common.model.vos.community.ComMngPopulationMistakeExcelVO; |
| | | import com.panzhihua.common.service.community.CommunityService; |
| | | import com.panzhihua.common.utlis.ListUtils; |
| | | import com.panzhihua.common.utlis.PayUtil; |
| | | import com.panzhihua.common.utlis.SFTPUtil; |
| | | 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.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.InputStream; |
| | | 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; |
| | | |
| | | /** |
| | | * @description: 服刑人员导入监听 |
| | | * @author: txb |
| | | */ |
| | | @Slf4j |
| | | public class ComMngPopulationSentenceExcelListen extends AnalysisEventListener<Map<Integer, String>> { |
| | | private CommunityService communityService; |
| | | |
| | | private Long communityId; |
| | | |
| | | private static int headSize = 0; |
| | | |
| | | 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 ComMngPopulationSentenceExcelListen(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) { |
| | | 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("500", "导入数据为空!"); |
| | | } |
| | | ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue(); |
| | | String Sentence = Constants.SENTENCE_POPULATION_ERROR_LIST + communityId; |
| | | |
| | | 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())); |
| | | // } |
| | | |
| | | |
| | | int index = 2; |
| | | try { |
| | | ArrayList<ComMngPopulationSentenceExcelVO> voList = Lists.newArrayList(); |
| | | // List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>(); |
| | | ArrayList<ComMngPopulationSentenceMistakeExcelVO> mistakes = Lists.newArrayList(); |
| | | for (Map<Integer, String> oneData : list) { |
| | | ComMngPopulationSentenceExcelVO vo = new ComMngPopulationSentenceExcelVO(); |
| | | if (StringUtils.isNotEmpty(oneData.get(0))){ |
| | | vo.setSerialNumber(oneData.get(0)); |
| | | } |
| | | //姓名和身份证都为空,为空户,无需操作,否则就解析年龄,性别,出生年月日 |
| | | if(StringUtils.isNotEmpty(oneData.get(1)) || StringUtils.isNotEmpty(oneData.get(3))){ |
| | | if(StringUtils.isEmpty(oneData.get(1))){ |
| | | ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO(); |
| | | index++; |
| | | setSentenceMistake(oneData, mistake); |
| | | mistake.setMistake("名字不可为空,请填写姓名"); |
| | | mistakes.add(mistake); |
| | | continue; |
| | | } |
| | | vo.setName(oneData.get(1)); |
| | | if(StringUtils.isEmpty(oneData.get(3))){ |
| | | ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO(); |
| | | index++; |
| | | setSentenceMistake(oneData, mistake); |
| | | mistake.setMistake("身份证号不可为空,请填写身份证"); |
| | | mistakes.add(mistake); |
| | | continue; |
| | | } |
| | | |
| | | //判断身份证号码位数 |
| | | if(oneData.get(3).length() != 18){ |
| | | ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO(); |
| | | index++; |
| | | setSentenceMistake(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()); |
| | | } |
| | | } |
| | | if(StringUtils.isNotEmpty(oneData.get(2))){ |
| | | vo.setNation(oneData.get(2)); |
| | | } |
| | | if(StringUtils.isNotEmpty(oneData.get(4))){ |
| | | vo.setPhone(oneData.get(4)); |
| | | } |
| | | if(StringUtils.isNotEmpty(oneData.get(5))){ |
| | | vo.setSpouse(oneData.get(5)); |
| | | } |
| | | if(StringUtils.isNotEmpty(oneData.get(6))){ |
| | | vo.setProfession(oneData.get(6)); |
| | | } |
| | | if(StringUtils.isEmpty(oneData.get(7))){ |
| | | index++; |
| | | ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO(); |
| | | setSentenceMistake(oneData, mistake); |
| | | mistake.setMistake("街路巷不可为空"); |
| | | mistakes.add(mistake); |
| | | continue; |
| | | } |
| | | vo.setRoad(oneData.get(7)); |
| | | if(StringUtils.isEmpty(oneData.get(8))){ |
| | | index++; |
| | | ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO(); |
| | | setSentenceMistake(oneData, mistake); |
| | | mistake.setMistake("小区号不可为空"); |
| | | mistakes.add(mistake); |
| | | continue; |
| | | } |
| | | vo.setDoorNo(oneData.get(8).trim()); |
| | | if(StringUtils.isEmpty(oneData.get(9))){ |
| | | index++; |
| | | ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO(); |
| | | setSentenceMistake(oneData, mistake); |
| | | mistake.setMistake("楼排号不可为空"); |
| | | mistakes.add(mistake); |
| | | continue; |
| | | } |
| | | vo.setFloor(oneData.get(9).trim()); |
| | | if(StringUtils.isEmpty(oneData.get(10))){ |
| | | index++; |
| | | ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO(); |
| | | setSentenceMistake(oneData, mistake); |
| | | mistake.setMistake("单元号不可为空"); |
| | | mistakes.add(mistake); |
| | | continue; |
| | | } |
| | | vo.setUnitNo(oneData.get(10).trim()); |
| | | if(StringUtils.isEmpty(oneData.get(11))){ |
| | | index++; |
| | | ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO(); |
| | | setSentenceMistake(oneData, mistake); |
| | | mistake.setMistake("户室不可为空"); |
| | | mistakes.add(mistake); |
| | | continue; |
| | | } |
| | | vo.setHouseNo(oneData.get(11).trim()); |
| | | if(StringUtils.isNotEmpty(oneData.get(12))){ |
| | | Integer isOk = PopulHouseUseEnum.getCodeByName(oneData.get(12)); |
| | | if(isOk.equals(-1)){ |
| | | ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO(); |
| | | index++; |
| | | setSentenceMistake(oneData, mistake); |
| | | mistake.setMistake("您填写的是否租住有误"); |
| | | mistakes.add(mistake); |
| | | continue; |
| | | } |
| | | vo.setIsRent(isOk); |
| | | }else { |
| | | vo.setIsRent(PopulHouseUseEnum.getCodeByName("否")); |
| | | } |
| | | if(StringUtils.isNotEmpty(oneData.get(13))){ |
| | | Integer isOk = PopulHouseStatusEnum.getCodeByName(oneData.get(13).trim()); |
| | | if(isOk.equals(-1)){ |
| | | index++; |
| | | ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO(); |
| | | setSentenceMistake(oneData, mistake); |
| | | mistake.setMistake("您填写的房屋状态有误"); |
| | | mistakes.add(mistake); |
| | | continue; |
| | | } |
| | | vo.setHouseStatus(isOk); |
| | | } |
| | | if(StringUtils.isNotEmpty(oneData.get(14))){ |
| | | Integer isOk = PopulHousePurposeEnum.getCodeByName(oneData.get(14).trim()); |
| | | if(isOk.equals(-1)){ |
| | | index++; |
| | | ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO(); |
| | | setSentenceMistake(oneData, mistake); |
| | | mistake.setMistake("您填写的房屋用途有误"); |
| | | mistakes.add(mistake); |
| | | continue; |
| | | } |
| | | vo.setHousePurpose(PopulHousePurposeEnum.getCodeByName(oneData.get(14).trim())); |
| | | } |
| | | if(StringUtils.isNotEmpty(oneData.get(15))){ |
| | | Integer isOk = PopulHouseControlStatusEnum.getCodeByName(oneData.get(15)); |
| | | if(isOk.equals(-1)){ |
| | | index++; |
| | | ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO(); |
| | | setSentenceMistake(oneData, mistake); |
| | | mistake.setMistake("您填写的管控状态有误"); |
| | | mistakes.add(mistake); |
| | | continue; |
| | | } |
| | | vo.setControlStatus(isOk); |
| | | } |
| | | if(StringUtils.isNotEmpty(oneData.get(16))){ |
| | | Integer isOk = PopulOutOrLocalEnum.getCodeByName(oneData.get(16)); |
| | | if(isOk.equals(-1)){ |
| | | index++; |
| | | ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO(); |
| | | setSentenceMistake(oneData, mistake); |
| | | mistake.setMistake("您填写的本地/外地有误"); |
| | | mistakes.add(mistake); |
| | | continue; |
| | | } |
| | | vo.setOutOrLocal(isOk); |
| | | }else { |
| | | vo.setOutOrLocal(PopulOutOrLocalEnum.getCodeByName("本地")); |
| | | } |
| | | if(StringUtils.isNotEmpty(oneData.get(17))){ |
| | | vo.setCensusRegister(oneData.get(17).trim()); |
| | | } |
| | | if(StringUtils.isNotEmpty(oneData.get(18))){ |
| | | vo.setSentencePlace(oneData.get(18).trim()); |
| | | } |
| | | if(StringUtils.isNotEmpty(oneData.get(19))){ |
| | | vo.setSentenceBegin(new SimpleDateFormat("yyyy-MM-dd").parse(oneData.get(19))); |
| | | } |
| | | if(StringUtils.isNotEmpty(oneData.get(20))){ |
| | | vo.setSentenceEnd(new SimpleDateFormat("yyyy-MM-dd").parse(oneData.get(20))); |
| | | } |
| | | if(StringUtils.isNotEmpty(oneData.get(21))){ |
| | | vo.setCharge(oneData.get(21).trim()); |
| | | } |
| | | if(StringUtils.isNotEmpty(oneData.get(22))){ |
| | | vo.setRemark(oneData.get(22).trim()); |
| | | } |
| | | vo.getUserTagStr().add("服刑人员"); |
| | | for (int i = 23; 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++; |
| | | } |
| | | //客户需要暂时注释,等客户处理完成需要恢复 |
| | | // 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<ComMngPopulationSentenceExcelVO> newVoList = voList.stream().filter(ListUtils.distinctByKey(ComMngPopulationSentenceExcelVO::getDistinctPass)).collect(Collectors.toList()); |
| | | log.info("开始进入业务层处理逻辑"); |
| | | R r = communityService.listSavePopulationSentenceExcelVO(newVoList, communityId); |
| | | log.info("业务层处理逻辑完成"); |
| | | if (!R.isOk(r)) { |
| | | log.info("业务层处理成功"); |
| | | List<ComMngPopulationSentenceMistakeExcelVO> list = JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ComMngPopulationSentenceMistakeExcelVO.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(Sentence,JSONArray.toJSONString(mistakes),1, TimeUnit.HOURS); |
| | | log.info("将错误数据存入redis中成功"); |
| | | throw new ServiceException("500", Sentence); |
| | | }else{ |
| | | log.info("业务层处理逻辑失败"); |
| | | if(!mistakes.isEmpty()){ |
| | | log.info("业务层处理逻辑失败,将错误数据缓存到redis中"); |
| | | valueOperations.set(Sentence,JSONArray.toJSONString(mistakes),1, TimeUnit.HOURS); |
| | | log.info("业务层处理逻辑失败,将错误数据缓存到redis中成功"); |
| | | throw new ServiceException("500", Sentence); |
| | | } |
| | | } |
| | | } 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"); |
| | | } catch (ParseException e1) { |
| | | log.info("处理数据时失败2"); |
| | | e1.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", "导入失败222"); |
| | | } |
| | | } |
| | | |
| | | private void setSentenceMistake(Map<Integer, String> map, ComMngPopulationSentenceMistakeExcelVO vo){ |
| | | vo.setSerialNumber(map.get(0)); |
| | | vo.setName(map.get(1)); |
| | | vo.setCardNo(map.get(3)); |
| | | vo.setNation(map.get(2)); |
| | | vo.setPhone(map.get(4)); |
| | | vo.setSpouse(map.get(5)); |
| | | vo.setProfession(map.get(6)); |
| | | vo.setRoad(map.get(7)); |
| | | vo.setDoorNo(map.get(8)); |
| | | vo.setFloor(map.get(9)); |
| | | vo.setUnitNo(map.get(10)); |
| | | vo.setHouseNo(map.get(11)); |
| | | vo.setIsRent(map.get(12)); |
| | | vo.setHouseStatus(map.get(13)); |
| | | vo.setHousePurpose(map.get(14)); |
| | | vo.setControlStatus(map.get(15)); |
| | | vo.setOutOrLocal(map.get(16)); |
| | | vo.setCensusRegister(map.get(17)); |
| | | vo.setSentencePlace(map.get(18)); |
| | | vo.setSentenceBegin(map.get(19)); |
| | | vo.setSentenceEnd(map.get(20)); |
| | | vo.setCharge(map.get(21)); |
| | | vo.setRemark(map.get(22)); |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | } |
New file |
| | |
| | | package com.panzhihua.common.listen; |
| | | |
| | | import com.alibaba.excel.context.AnalysisContext; |
| | | import com.alibaba.excel.event.AnalysisEventListener; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.google.common.collect.Lists; |
| | | import com.panzhihua.common.constants.BcDictionaryConstants; |
| | | import com.panzhihua.common.constants.Constants; |
| | | import com.panzhihua.common.enums.*; |
| | | import com.panzhihua.common.exceptions.ServiceException; |
| | | import com.panzhihua.common.model.vos.BcDictionaryVO; |
| | | import com.panzhihua.common.model.vos.R; |
| | | import com.panzhihua.common.model.vos.community.ComMngPopulationVeteransExcelVO; |
| | | import com.panzhihua.common.model.vos.community.ComMngPopulationVeteransMistakeExcelVO; |
| | | import com.panzhihua.common.service.community.CommunityService; |
| | | 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; |
| | | |
| | | /** |
| | | * @description: 退役军人导入监听 |
| | | * @author: txb |
| | | */ |
| | | @Slf4j |
| | | public class ComMngPopulationVeteransExcelListen extends AnalysisEventListener<Map<Integer, String>> { |
| | | private CommunityService communityService; |
| | | |
| | | private Long communityId; |
| | | |
| | | private static int headSize = 0; |
| | | |
| | | 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 ComMngPopulationVeteransExcelListen(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) { |
| | | 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("500", "导入数据为空!"); |
| | | } |
| | | ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue(); |
| | | String Veterans = Constants.VETERANS_POPULATION_ERROR_LIST + communityId; |
| | | |
| | | 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())); |
| | | // } |
| | | |
| | | |
| | | int index = 2; |
| | | |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.panzhihua.common.model.vos.community; |
| | | |
| | | import com.alibaba.excel.annotation.ExcelProperty; |
| | | import com.google.common.collect.Lists; |
| | | import com.panzhihua.common.model.helper.encrypt.EncryptDecryptClass; |
| | | import com.panzhihua.common.model.helper.encrypt.EncryptDecryptField; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @description: 批量导入服刑人员 |
| | | * @author: txb |
| | | */ |
| | | @Data |
| | | @EncryptDecryptClass |
| | | public class ComMngPopulationSentenceExcelVO implements Serializable { |
| | | |
| | | @ExcelProperty(value = "序号", index = 0) |
| | | private String serialNumber; |
| | | |
| | | @ExcelProperty(value = "姓名", index = 1) |
| | | private String name; |
| | | |
| | | @ExcelProperty(value = "民族", index = 2) |
| | | private String nation; |
| | | |
| | | @ExcelProperty(value = "身份证号码", index = 3) |
| | | @EncryptDecryptField |
| | | private String cardNo; |
| | | |
| | | @ExcelProperty(value = "联系电话", index = 4) |
| | | private String phone; |
| | | |
| | | @ExcelProperty(value = "配偶", index = 5) |
| | | private String spouse; |
| | | |
| | | @ExcelProperty(value = "职业", index = 6) |
| | | private String profession; |
| | | |
| | | @ExcelProperty(value = "街/路/巷", index = 7) |
| | | private String road; |
| | | |
| | | @ExcelProperty(value = "小区号", index = 8) |
| | | private String doorNo; |
| | | |
| | | @ExcelProperty(value = "楼排号", index = 9) |
| | | private String floor; |
| | | |
| | | @ExcelProperty(value = "单元号", index = 10) |
| | | private String unitNo; |
| | | |
| | | @ExcelProperty(value = "户室(房间号)", index = 11) |
| | | private String houseNo; |
| | | |
| | | @ExcelProperty(value = "是否租住", index = 12) |
| | | private Integer isRent; |
| | | |
| | | @ExcelProperty(value = "房屋状态(1.自住 2.租住 3.其他)", index = 13) |
| | | private Integer houseStatus; |
| | | |
| | | @ExcelProperty(value = "房屋用途(1.住宅 2.公寓 3.宿舍 4.仓库 5.其他)", index = 14) |
| | | private Integer housePurpose; |
| | | |
| | | @ExcelProperty(value = "管控状态(1.常规 2.关注 3.管控)", index = 15) |
| | | private Integer controlStatus; |
| | | |
| | | @ExcelProperty(value = "外地/本地(1.本地 2.外地)", index = 16) |
| | | private Integer outOrLocal; |
| | | |
| | | @ExcelProperty(value = "户口所在地", index = 17) |
| | | private String censusRegister; |
| | | |
| | | @ExcelProperty(value = "服刑地", index = 18) |
| | | private String sentencePlace; |
| | | |
| | | @ExcelProperty(value = "服刑开始时间", index = 19) |
| | | private Date sentenceBegin; |
| | | |
| | | @ExcelProperty(value = "服刑结束时间", index = 20) |
| | | private Date sentenceEnd; |
| | | |
| | | @ExcelProperty(value = "罪名", index = 21) |
| | | private String charge; |
| | | |
| | | @ExcelProperty(value = "备注", index = 22) |
| | | private String remark; |
| | | /** |
| | | * 去重字段,使用(姓名+身份证号+街路巷+小区号+楼牌号+单元号+户室)组合字段进行MD5加密实现去重 |
| | | */ |
| | | private String distinctPass; |
| | | |
| | | /** |
| | | * 年龄 |
| | | */ |
| | | private Integer age; |
| | | |
| | | /** |
| | | * 性别(1.男 2.女) |
| | | */ |
| | | private Integer sex; |
| | | |
| | | /** |
| | | * 出生年月日 |
| | | */ |
| | | private String birthday; |
| | | |
| | | /** |
| | | * 扩展字段用逗号隔开 |
| | | */ |
| | | private List<String> userTagStr = Lists.newArrayList(); |
| | | |
| | | private Long houseId; |
| | | |
| | | /** |
| | | * 地址 |
| | | */ |
| | | private String address; |
| | | } |
New file |
| | |
| | | package com.panzhihua.common.model.vos.community; |
| | | |
| | | import com.alibaba.excel.annotation.ExcelProperty; |
| | | import com.google.common.collect.Lists; |
| | | import com.panzhihua.common.model.helper.encrypt.EncryptDecryptClass; |
| | | import com.panzhihua.common.model.helper.encrypt.EncryptDecryptField; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @description: 批量导入服刑人员 |
| | | * @author: txb |
| | | */ |
| | | @Data |
| | | @EncryptDecryptClass |
| | | public class ComMngPopulationSentenceMistakeExcelVO implements Serializable { |
| | | |
| | | @ExcelProperty(value = "序号", index = 0) |
| | | private String serialNumber; |
| | | |
| | | @ExcelProperty(value = "姓名", index = 1) |
| | | private String name; |
| | | |
| | | @ExcelProperty(value = "民族", index = 2) |
| | | private String nation; |
| | | |
| | | @ExcelProperty(value = "身份证号码", index = 3) |
| | | @EncryptDecryptField |
| | | private String cardNo; |
| | | |
| | | @ExcelProperty(value = "联系电话", index = 4) |
| | | private String phone; |
| | | |
| | | @ExcelProperty(value = "配偶", index = 5) |
| | | private String spouse; |
| | | |
| | | @ExcelProperty(value = "职业", index = 6) |
| | | private String profession; |
| | | |
| | | @ExcelProperty(value = "街/路/巷", index = 7) |
| | | private String road; |
| | | |
| | | @ExcelProperty(value = "小区号", index = 8) |
| | | private String doorNo; |
| | | |
| | | @ExcelProperty(value = "楼排号", index = 9) |
| | | private String floor; |
| | | |
| | | @ExcelProperty(value = "单元号", index = 10) |
| | | private String unitNo; |
| | | |
| | | @ExcelProperty(value = "户室(房间号)", index = 11) |
| | | private String houseNo; |
| | | |
| | | @ExcelProperty(value = "是否租住", index = 12) |
| | | private String isRent; |
| | | |
| | | @ExcelProperty(value = "房屋状态(1.自住 2.租住 3.其他)", index = 13) |
| | | private String houseStatus; |
| | | |
| | | @ExcelProperty(value = "房屋用途(1.住宅 2.公寓 3.宿舍 4.仓库 5.其他)", index = 14) |
| | | private String housePurpose; |
| | | |
| | | @ExcelProperty(value = "管控状态(1.常规 2.关注 3.管控)", index = 15) |
| | | private String controlStatus; |
| | | |
| | | @ExcelProperty(value = "外地/本地(1.本地 2.外地)", index = 16) |
| | | private String outOrLocal; |
| | | |
| | | @ExcelProperty(value = "户口所在地", index = 17) |
| | | private String censusRegister; |
| | | |
| | | @ExcelProperty(value = "服刑地", index = 18) |
| | | private String sentencePlace; |
| | | |
| | | @ExcelProperty(value = "服刑开始时间", index = 19) |
| | | private String sentenceBegin; |
| | | |
| | | @ExcelProperty(value = "服刑结束时间", index = 20) |
| | | private String sentenceEnd; |
| | | |
| | | @ExcelProperty(value = "罪名", index = 21) |
| | | private String charge; |
| | | |
| | | @ExcelProperty(value = "备注", index = 22) |
| | | private String remark; |
| | | |
| | | @ExcelProperty(value = "错误信息", index = 23) |
| | | private String mistake; |
| | | } |
New file |
| | |
| | | package com.panzhihua.common.model.vos.community; |
| | | |
| | | import com.alibaba.excel.annotation.ExcelProperty; |
| | | import com.google.common.collect.Lists; |
| | | import com.panzhihua.common.model.helper.encrypt.EncryptDecryptClass; |
| | | import com.panzhihua.common.model.helper.encrypt.EncryptDecryptField; |
| | | import com.panzhihua.common.validated.AddGroup; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @description: 批量导入退役军人 |
| | | * @author: txb |
| | | */ |
| | | @Data |
| | | @EncryptDecryptClass |
| | | public class ComMngPopulationVeteransExcelVO implements Serializable { |
| | | |
| | | @ExcelProperty(value = "序号", index = 0) |
| | | private String serialNumber; |
| | | |
| | | @ExcelProperty(value = "人员状态:正常、失联、出国(取字典表)", index = 1) |
| | | private String personStatus; |
| | | |
| | | @ExcelProperty(value = "机构", index = 2) |
| | | private String organization; |
| | | |
| | | @ExcelProperty(value = "姓名", index = 3) |
| | | private String name; |
| | | |
| | | @ExcelProperty(value = "身份证号码", index = 4) |
| | | @EncryptDecryptField |
| | | private String cardNo; |
| | | |
| | | @ExcelProperty(value = "联系电话", index = 5) |
| | | private String phone; |
| | | |
| | | @ExcelProperty(value = "照片", index = 6) |
| | | private String photo; |
| | | |
| | | @ExcelProperty(value = "户籍性质(1.城镇户口 2.农村户口)", index = 7) |
| | | private Integer regiterNature; |
| | | |
| | | @ExcelProperty(value = "户口所在地", index = 8) |
| | | private String censusRegister; |
| | | |
| | | @ExcelProperty(value = "外地/本地(1.本地 2.外地)", index = 9) |
| | | private Integer outOrLocal; |
| | | |
| | | @ExcelProperty(value = "街/路/巷", index = 10) |
| | | private String road; |
| | | |
| | | @ExcelProperty(value = "小区号", index = 11) |
| | | private String doorNo; |
| | | |
| | | @ExcelProperty(value = "楼排号", index = 12) |
| | | private String floor; |
| | | |
| | | @ExcelProperty(value = "单元号", index = 13) |
| | | private String unitNo; |
| | | |
| | | @ExcelProperty(value = "户室(房间号)", index = 14) |
| | | private String houseNo; |
| | | |
| | | @ExcelProperty(value = "是否租住", index = 15) |
| | | private Integer isRent; |
| | | |
| | | @ExcelProperty(value = "房屋状态(1.自住 2.租住 3.其他)", index = 16) |
| | | private Integer houseStatus; |
| | | |
| | | @ExcelProperty(value = "房屋用途(1.住宅 2.公寓 3.宿舍 4.仓库 5.其他)", index = 17) |
| | | private Integer housePurpose; |
| | | |
| | | @ExcelProperty(value = "管控状态(1.常规 2.关注 3.管控)", index = 18) |
| | | private Integer controlStatus; |
| | | |
| | | @ExcelProperty(value = "入伍时间", index = 19) |
| | | private Date enlistDate; |
| | | |
| | | @ExcelProperty(value = "退伍时间", index = 20) |
| | | private Date retireDate; |
| | | |
| | | @ExcelProperty(value = "人员类别", index = 21) |
| | | private String personCategory; |
| | | |
| | | @ExcelProperty(value = "民族", index = 22) |
| | | private String nation; |
| | | |
| | | @ExcelProperty(value = "健康状况", index = 23) |
| | | private String healthy; |
| | | |
| | | @ExcelProperty(value = "政治面貌", index = 24) |
| | | private Integer politicalOutlook; |
| | | |
| | | @ExcelProperty(value = "婚姻状况", index = 25) |
| | | private Integer marriage; |
| | | |
| | | @ExcelProperty(value = "住房状况", index = 26) |
| | | private String houseSituation; |
| | | |
| | | @ExcelProperty(value = "住房状况其他", index = 27) |
| | | private String houseSituationOther; |
| | | |
| | | @ExcelProperty(value = "建筑面积", index = 28) |
| | | private String buildArea; |
| | | |
| | | @ExcelProperty(value = "现就业情况", index = 29) |
| | | private String employmentSituation; |
| | | |
| | | @ExcelProperty(value = "在职情况类型", index = 30) |
| | | private String incumbencyType; |
| | | |
| | | @ExcelProperty(value = "现就业情况其他", index = 31) |
| | | private String employmentSituationOther; |
| | | |
| | | @ExcelProperty(value = "养老保险", index = 32) |
| | | private String endowmentInsurance; |
| | | |
| | | @ExcelProperty(value = "医疗保险", index = 33) |
| | | private String medicalInsurance; |
| | | |
| | | @ExcelProperty(value = "现个人年收入(单位:元)", index = 34) |
| | | private String annualIncome; |
| | | |
| | | @ExcelProperty(value = "父亲健康状况", index = 35) |
| | | private String fatherHealthy; |
| | | |
| | | @ExcelProperty(value = "母亲健康状况", index = 36) |
| | | private String motherHealthy; |
| | | |
| | | @ExcelProperty(value = "配偶健康状况", index = 37) |
| | | private String spouseHealthy; |
| | | |
| | | @ExcelProperty(value = "儿子健康状况", index = 38) |
| | | private String sonHealthy; |
| | | |
| | | @ExcelProperty(value = "女儿健康状况", index = 39) |
| | | private String daughterHealthy; |
| | | |
| | | @ExcelProperty(value = "主要困难", index = 40) |
| | | private String mainDifficulty; |
| | | |
| | | @ExcelProperty(value = "其他困难", index = 41) |
| | | private String otherDifficulty; |
| | | |
| | | @ExcelProperty(value = "主要诉求", index = 42) |
| | | private String mainDemand; |
| | | |
| | | @ExcelProperty(value = "主要诉求其他事项问题(手填)", index = 43) |
| | | private String mainDemandOther; |
| | | |
| | | @ExcelProperty(value = "需参加的学历培训", index = 44) |
| | | private String academicTraining; |
| | | |
| | | @ExcelProperty(value = "是否已参加退役军人培训(政府性质)", index = 45) |
| | | private Integer isVeteransTraining; |
| | | |
| | | @ExcelProperty(value = "入伍前学历", index = 46) |
| | | private String educationBeforeEnlistment; |
| | | |
| | | @ExcelProperty(value = "再教育学历", index = 47) |
| | | private String reEducation; |
| | | |
| | | @ExcelProperty(value = "所学专业", index = 48) |
| | | private String major; |
| | | |
| | | @ExcelProperty(value = "所学专业其他", index = 49) |
| | | private String majorOther; |
| | | |
| | | @ExcelProperty(value = "曾从事行业(含现从事行业)", index = 50) |
| | | private String onceEngagedIndustry; |
| | | |
| | | @ExcelProperty(value = "曾从事行业(含现从事行业)其他(手填)", index = 51) |
| | | private String onceEngagedIndustryOther; |
| | | |
| | | @ExcelProperty(value = "意向就业地点", index = 52) |
| | | private String intendedPlaceOfEmployment; |
| | | |
| | | @ExcelProperty(value = "意向就业地点其他地区(手填)", index = 53) |
| | | private String intendedPlaceOfEmploymentOther; |
| | | |
| | | @ExcelProperty(value = "待业期间的求职意向", index = 54) |
| | | private String unemploymedEngagedIndustry; |
| | | |
| | | @ExcelProperty(value = "待业期间的求职意向其他(手填)", index = 55) |
| | | private String unemploymedEngagedIndustryOther; |
| | | |
| | | @ExcelProperty(value = "是否有创业意愿", index = 56) |
| | | private Integer isBusiness; |
| | | |
| | | @ExcelProperty(value = "创业意愿", index = 57) |
| | | private String businessDesire; |
| | | |
| | | @ExcelProperty(value = "备注", index = 58) |
| | | private String remark; |
| | | |
| | | @ExcelProperty(value = "填表单位", index = 59) |
| | | private String fillUnit; |
| | | |
| | | @ExcelProperty(value = "填表人", index = 60) |
| | | private String fillPerson; |
| | | |
| | | @ExcelProperty(value = "填表人联系电话", index = 61) |
| | | private String fillPersonPhone; |
| | | |
| | | /** |
| | | * 去重字段,使用(姓名+身份证号+街路巷+小区号+楼牌号+单元号+户室)组合字段进行MD5加密实现去重 |
| | | */ |
| | | private String distinctPass; |
| | | |
| | | /** |
| | | * 年龄 |
| | | */ |
| | | private Integer age; |
| | | |
| | | /** |
| | | * 性别(1.男 2.女) |
| | | */ |
| | | private Integer sex; |
| | | |
| | | /** |
| | | * 出生年月日 |
| | | */ |
| | | private String birthday; |
| | | |
| | | /** |
| | | * 扩展字段用逗号隔开 |
| | | */ |
| | | private List<String> userTagStr = Lists.newArrayList(); |
| | | |
| | | private Long houseId; |
| | | |
| | | /** |
| | | * 地址 |
| | | */ |
| | | private String address; |
| | | } |
New file |
| | |
| | | package com.panzhihua.common.model.vos.community; |
| | | |
| | | import com.alibaba.excel.annotation.ExcelProperty; |
| | | import com.google.common.collect.Lists; |
| | | import com.panzhihua.common.model.helper.encrypt.EncryptDecryptClass; |
| | | import com.panzhihua.common.model.helper.encrypt.EncryptDecryptField; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @description: 批量导入退役军人 |
| | | * @author: txb |
| | | */ |
| | | @Data |
| | | @EncryptDecryptClass |
| | | public class ComMngPopulationVeteransMistakeExcelVO implements Serializable { |
| | | |
| | | @ExcelProperty(value = "序号", index = 0) |
| | | private String serialNumber; |
| | | |
| | | @ExcelProperty(value = "人员状态:正常、失联、出国(取字典表)", index = 1) |
| | | private String personStatus; |
| | | |
| | | @ExcelProperty(value = "机构", index = 2) |
| | | private String organization; |
| | | |
| | | @ExcelProperty(value = "姓名", index = 3) |
| | | private String name; |
| | | |
| | | @ExcelProperty(value = "身份证号码", index = 4) |
| | | @EncryptDecryptField |
| | | private String cardNo; |
| | | |
| | | @ExcelProperty(value = "联系电话", index = 5) |
| | | private String phone; |
| | | |
| | | @ExcelProperty(value = "照片", index = 6) |
| | | private String photo; |
| | | |
| | | @ExcelProperty(value = "户籍性质(1.城镇户口 2.农村户口)", index = 7) |
| | | private String regiterNature; |
| | | |
| | | @ExcelProperty(value = "户口所在地", index = 8) |
| | | private String censusRegister; |
| | | |
| | | @ExcelProperty(value = "外地/本地(1.本地 2.外地)", index = 9) |
| | | private String outOrLocal; |
| | | |
| | | @ExcelProperty(value = "街/路/巷", index = 10) |
| | | private String road; |
| | | |
| | | @ExcelProperty(value = "小区号", index = 11) |
| | | private String doorNo; |
| | | |
| | | @ExcelProperty(value = "楼排号", index = 12) |
| | | private String floor; |
| | | |
| | | @ExcelProperty(value = "单元号", index = 13) |
| | | private String unitNo; |
| | | |
| | | @ExcelProperty(value = "户室(房间号)", index = 14) |
| | | private String houseNo; |
| | | |
| | | @ExcelProperty(value = "是否租住", index = 15) |
| | | private String isRent; |
| | | |
| | | @ExcelProperty(value = "房屋状态(1.自住 2.租住 3.其他)", index = 16) |
| | | private String houseStatus; |
| | | |
| | | @ExcelProperty(value = "房屋用途(1.住宅 2.公寓 3.宿舍 4.仓库 5.其他)", index = 17) |
| | | private String housePurpose; |
| | | |
| | | @ExcelProperty(value = "管控状态(1.常规 2.关注 3.管控)", index = 18) |
| | | private String controlStatus; |
| | | |
| | | @ExcelProperty(value = "入伍时间", index = 19) |
| | | private String enlistString; |
| | | |
| | | @ExcelProperty(value = "入伍时间", index = 20) |
| | | private String retireString; |
| | | |
| | | @ExcelProperty(value = "人员类别", index = 21) |
| | | private String personCategory; |
| | | |
| | | @ExcelProperty(value = "民族", index = 22) |
| | | private String nation; |
| | | |
| | | @ExcelProperty(value = "健康状况", index = 23) |
| | | private String healthy; |
| | | |
| | | @ExcelProperty(value = "政治面貌", index = 24) |
| | | private String politicalOutlook; |
| | | |
| | | @ExcelProperty(value = "婚姻状况", index = 25) |
| | | private String marriage; |
| | | |
| | | @ExcelProperty(value = "住房状况", index = 26) |
| | | private String houseSituation; |
| | | |
| | | @ExcelProperty(value = "住房状况其他", index = 27) |
| | | private String houseSituationOther; |
| | | |
| | | @ExcelProperty(value = "建筑面积", index = 28) |
| | | private String buildArea; |
| | | |
| | | @ExcelProperty(value = "现就业情况", index = 29) |
| | | private String employmentSituation; |
| | | |
| | | @ExcelProperty(value = "在职情况类型", index = 30) |
| | | private String incumbencyType; |
| | | |
| | | @ExcelProperty(value = "现就业情况其他", index = 31) |
| | | private String employmentSituationOther; |
| | | |
| | | @ExcelProperty(value = "养老保险", index = 32) |
| | | private String endowmentInsurance; |
| | | |
| | | @ExcelProperty(value = "医疗保险", index = 33) |
| | | private String medicalInsurance; |
| | | |
| | | @ExcelProperty(value = "现个人年收入(单位:元)", index = 34) |
| | | private String annualIncome; |
| | | |
| | | @ExcelProperty(value = "父亲健康状况", index = 35) |
| | | private String fatherHealthy; |
| | | |
| | | @ExcelProperty(value = "母亲健康状况", index = 36) |
| | | private String motherHealthy; |
| | | |
| | | @ExcelProperty(value = "配偶健康状况", index = 37) |
| | | private String spouseHealthy; |
| | | |
| | | @ExcelProperty(value = "儿子健康状况", index = 38) |
| | | private String sonHealthy; |
| | | |
| | | @ExcelProperty(value = "女儿健康状况", index = 39) |
| | | private String daughterHealthy; |
| | | |
| | | @ExcelProperty(value = "主要困难", index = 40) |
| | | private String mainDifficulty; |
| | | |
| | | @ExcelProperty(value = "其他困难", index = 41) |
| | | private String otherDifficulty; |
| | | |
| | | @ExcelProperty(value = "主要诉求", index = 42) |
| | | private String mainDemand; |
| | | |
| | | @ExcelProperty(value = "主要诉求其他事项问题(手填)", index = 43) |
| | | private String mainDemandOther; |
| | | |
| | | @ExcelProperty(value = "需参加的学历培训", index = 44) |
| | | private String academicTraining; |
| | | |
| | | @ExcelProperty(value = "是否已参加退役军人培训(政府性质)", index = 45) |
| | | private String isVeteransTraining; |
| | | |
| | | @ExcelProperty(value = "入伍前学历", index = 46) |
| | | private String educationBeforeEnlistment; |
| | | |
| | | @ExcelProperty(value = "再教育学历", index = 47) |
| | | private String reEducation; |
| | | |
| | | @ExcelProperty(value = "所学专业", index = 48) |
| | | private String major; |
| | | |
| | | @ExcelProperty(value = "所学专业其他", index = 49) |
| | | private String majorOther; |
| | | |
| | | @ExcelProperty(value = "曾从事行业(含现从事行业)", index = 50) |
| | | private String onceEngagedIndustry; |
| | | |
| | | @ExcelProperty(value = "曾从事行业(含现从事行业)其他(手填)", index = 51) |
| | | private String onceEngagedIndustryOther; |
| | | |
| | | @ExcelProperty(value = "意向就业地点", index = 52) |
| | | private String intendedPlaceOfEmployment; |
| | | |
| | | @ExcelProperty(value = "意向就业地点其他地区(手填)", index = 53) |
| | | private String intendedPlaceOfEmploymentOther; |
| | | |
| | | @ExcelProperty(value = "待业期间的求职意向", index = 54) |
| | | private String unemploymedEngagedIndustry; |
| | | |
| | | @ExcelProperty(value = "待业期间的求职意向其他(手填)", index = 55) |
| | | private String unemploymedEngagedIndustryOther; |
| | | |
| | | @ExcelProperty(value = "是否有创业意愿", index = 56) |
| | | private String isBusiness; |
| | | |
| | | @ExcelProperty(value = "创业意愿", index = 57) |
| | | private String businessDesire; |
| | | |
| | | @ExcelProperty(value = "备注", index = 58) |
| | | private String remark; |
| | | |
| | | @ExcelProperty(value = "填表单位", index = 59) |
| | | private String fillUnit; |
| | | |
| | | @ExcelProperty(value = "填表人", index = 60) |
| | | private String fillPerson; |
| | | |
| | | @ExcelProperty(value = "填表人联系电话", index = 61) |
| | | private String fillPersonPhone; |
| | | |
| | | @ExcelProperty(value = "错误信息", index = 62) |
| | | private String mistake; |
| | | } |
| | |
| | | R listSavePopulationKeyExcelVO(@RequestBody List<ComMngPopulationKeyExcelVO> list, @RequestParam(value = "communityId") Long communityId); |
| | | |
| | | /** |
| | | * 批量导入服刑人员 |
| | | * |
| | | * @param list 服刑人员数据 |
| | | * @param communityId 社区id |
| | | * @return 导入结果 |
| | | */ |
| | | @PostMapping("/common/data/population/importSentence") |
| | | R listSavePopulationSentenceExcelVO(@RequestBody List<ComMngPopulationSentenceExcelVO> list, @RequestParam(value = "communityId") Long communityId); |
| | | |
| | | /** |
| | | * 确认导入实有人口(有则更新,无则新建) |
| | | * |
| | | * @param list 用户信息 |
| | |
| | | InputStream inputStream = null; |
| | | try { |
| | | inputStream = file.getInputStream(); |
| | | ComMngPopulationRehabilitationExcelListen comMngPopulationRehabilitationExcelListen = new ComMngPopulationRehabilitationExcelListen(communityService, this.getCommunityId(),userName,password,host,port,excelUrl,stringRedisTemplate); |
| | | EasyExcel.read(inputStream, null, comMngPopulationRehabilitationExcelListen).sheet().doRead(); |
| | | ComMngPopulationKeyExcelListen mngPopulationKeyExcelListen = new ComMngPopulationKeyExcelListen(communityService, this.getCommunityId(),userName,password,host,port,excelUrl,stringRedisTemplate); |
| | | EasyExcel.read(inputStream, null, mngPopulationKeyExcelListen).sheet().doRead(); |
| | | } catch (IOException e) { |
| | | log.error("导入模板失败【{}】", e.getMessage()); |
| | | e.printStackTrace(); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @ApiOperation(value = "excel导入服刑人员") |
| | | @PostMapping(value = "/serve/importSentence", consumes = "multipart/*", headers = "content-type=multipart/form-date") |
| | | public R importSentence(@RequestParam MultipartFile file, HttpServletRequest request) { |
| | | //获取文件名 |
| | | String fileName = file.getOriginalFilename(); |
| | | log.info("传入文件名字【{}】", fileName); |
| | | InputStream inputStream = null; |
| | | try { |
| | | inputStream = file.getInputStream(); |
| | | ComMngPopulationSentenceExcelListen comMngPopulationSentenceExcelListen = new ComMngPopulationSentenceExcelListen(communityService, this.getCommunityId(),userName,password,host,port,excelUrl,stringRedisTemplate); |
| | | EasyExcel.read(inputStream, null, comMngPopulationSentenceExcelListen).sheet().doRead(); |
| | | } catch (IOException e) { |
| | | log.error("导入模板失败【{}】", e.getMessage()); |
| | | e.printStackTrace(); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @ApiOperation(value = "excel导入退役军人") |
| | | @PostMapping(value = "/serve/importVeterans", consumes = "multipart/*", headers = "content-type=multipart/form-date") |
| | | public R importVeterans(@RequestParam MultipartFile file, HttpServletRequest request) { |
| | | //获取文件名 |
| | | String fileName = file.getOriginalFilename(); |
| | | log.info("传入文件名字【{}】", fileName); |
| | | InputStream inputStream = null; |
| | | try { |
| | | inputStream = file.getInputStream(); |
| | | ComMngPopulationVeteransExcelListen comMngPopulationVeteransExcelListen = new ComMngPopulationVeteransExcelListen(communityService, this.getCommunityId(),userName,password,host,port,excelUrl,stringRedisTemplate); |
| | | EasyExcel.read(inputStream, null, comMngPopulationVeteransExcelListen).sheet().doRead(); |
| | | } catch (IOException e) { |
| | | log.error("导入模板失败【{}】", e.getMessage()); |
| | | e.printStackTrace(); |
| | |
| | | return R.fail(); |
| | | } |
| | | } |
| | | |
| | | @ApiOperation(value = "下载导入失败重点上访人员数据") |
| | | @PostMapping("/download/error/populationKey") |
| | | public R downloadErrorKeyPopulation(@RequestParam(value = "key") String key) { |
| | | List<ComMngPopulationKeyMistakeExcelVO> list = new ArrayList<>(); |
| | | Boolean isExits = stringRedisTemplate.hasKey(key); |
| | | ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue(); |
| | | if(isExits){ |
| | | String json = valueOperations.get(key); |
| | | list= JSONArray.parseArray(json,ComMngPopulationKeyMistakeExcelVO.class); |
| | | } |
| | | // List<ComMngPopulationMistakeExcelVO> list = JSON.parseArray(mistakes,ComMngPopulationMistakeExcelVO.class); |
| | | //生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址 |
| | | String ftpUrl = "/mnt/data/web/excel/"; |
| | | String nowDate = DateUtils.getCurrentDateString(); |
| | | String name = "重点上访人员错误数据" + nowDate +".xlsx"; |
| | | try { |
| | | SFTPUtil sftp = new SFTPUtil(userName, password, host, port); |
| | | sftp.login(); |
| | | boolean existDir = sftp.isExistDir(ftpUrl + name); |
| | | if (!existDir) { |
| | | String property = System.getProperty("user.dir"); |
| | | String fileName = property + File.separator + name; |
| | | // 这里 需要指定写用哪个class去写 |
| | | ExcelWriter excelWriter = null; |
| | | InputStream inputStream = null; |
| | | try { |
| | | excelWriter = EasyExcel.write(fileName, ComMngPopulationKeyMistakeExcelVO.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).registerWriteHandler(new CustomSheetWriteHandler()).build(); |
| | | WriteSheet writeSheet = EasyExcel.writerSheet("重点上访人员错误数据").build(); |
| | | excelWriter.write(list, writeSheet); |
| | | excelWriter.finish(); |
| | | File file = new File(fileName); |
| | | inputStream = new FileInputStream(file); |
| | | sftp.uploadMore(ftpUrl, name, inputStream); |
| | | sftp.logout(); |
| | | inputStream.close(); |
| | | String absolutePath = file.getAbsolutePath(); |
| | | boolean delete = file.delete(); |
| | | log.info("删除excel【{}】结果【{}】", absolutePath, delete); |
| | | } finally { |
| | | // 千万别忘记finish 会帮忙关闭流 |
| | | if (inputStream != null) { |
| | | inputStream.close(); |
| | | } |
| | | if (excelWriter != null) { |
| | | excelWriter.finish(); |
| | | } |
| | | } |
| | | } |
| | | return R.ok(excelUrl + name); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error("文件传输失败【{}】", e.getMessage()); |
| | | return R.fail(); |
| | | } |
| | | } |
| | | |
| | | @ApiOperation(value = "下载导入失败服刑人员数据") |
| | | @PostMapping("/download/error/populationSentence") |
| | | public R downloadErrorSentencePopulation(@RequestParam(value = "key") String key) { |
| | | List<ComMngPopulationSentenceMistakeExcelVO> list = new ArrayList<>(); |
| | | Boolean isExits = stringRedisTemplate.hasKey(key); |
| | | ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue(); |
| | | if(isExits){ |
| | | String json = valueOperations.get(key); |
| | | list= JSONArray.parseArray(json,ComMngPopulationSentenceMistakeExcelVO.class); |
| | | } |
| | | // List<ComMngPopulationMistakeExcelVO> list = JSON.parseArray(mistakes,ComMngPopulationMistakeExcelVO.class); |
| | | //生成动态模板excel通过ftp工具上传到主节点,然后返回模板下载地址 |
| | | String ftpUrl = "/mnt/data/web/excel/"; |
| | | String nowDate = DateUtils.getCurrentDateString(); |
| | | String name = "服刑人员错误数据" + nowDate +".xlsx"; |
| | | try { |
| | | SFTPUtil sftp = new SFTPUtil(userName, password, host, port); |
| | | sftp.login(); |
| | | boolean existDir = sftp.isExistDir(ftpUrl + name); |
| | | if (!existDir) { |
| | | String property = System.getProperty("user.dir"); |
| | | String fileName = property + File.separator + name; |
| | | // 这里 需要指定写用哪个class去写 |
| | | ExcelWriter excelWriter = null; |
| | | InputStream inputStream = null; |
| | | try { |
| | | excelWriter = EasyExcel.write(fileName, ComMngPopulationSentenceMistakeExcelVO.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).registerWriteHandler(new CustomSheetWriteHandler()).build(); |
| | | WriteSheet writeSheet = EasyExcel.writerSheet("服刑人员错误数据").build(); |
| | | excelWriter.write(list, writeSheet); |
| | | excelWriter.finish(); |
| | | File file = new File(fileName); |
| | | inputStream = new FileInputStream(file); |
| | | sftp.uploadMore(ftpUrl, name, inputStream); |
| | | sftp.logout(); |
| | | inputStream.close(); |
| | | String absolutePath = file.getAbsolutePath(); |
| | | boolean delete = file.delete(); |
| | | log.info("删除excel【{}】结果【{}】", absolutePath, delete); |
| | | } finally { |
| | | // 千万别忘记finish 会帮忙关闭流 |
| | | if (inputStream != null) { |
| | | inputStream.close(); |
| | | } |
| | | if (excelWriter != null) { |
| | | excelWriter.finish(); |
| | | } |
| | | } |
| | | } |
| | | return R.ok(excelUrl + name); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error("文件传输失败【{}】", e.getMessage()); |
| | | return R.fail(); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 批量导入服刑人员 |
| | | * |
| | | * @param list 服刑人员数据 |
| | | * @param communityId 社区id |
| | | * @return 导入结果 |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @PostMapping("population/importSentence") |
| | | public R listSavePopulationSentenceExcelVO(@RequestBody List<ComMngPopulationSentenceExcelVO> list, @RequestParam(value = "communityId") Long communityId){ |
| | | return comMngPopulationService.listSaveSentencePopulation(list, communityId); |
| | | } |
| | | |
| | | /** |
| | | * 确认导入实有人口(有则更新,无则新建) |
| | | * |
| | | * @param list 用户信息 |
| | |
| | | */ |
| | | R listSaveKeyPopulation(List<ComMngPopulationKeyExcelVO> list, Long communityId); |
| | | |
| | | /** |
| | | * 批量导入服刑人员 |
| | | * |
| | | * @param list 服刑人员数据 |
| | | * @param communityId 社区id |
| | | * @return 导入结果 |
| | | */ |
| | | R listSaveSentencePopulation(List<ComMngPopulationSentenceExcelVO> list, Long communityId); |
| | | |
| | | |
| | | /** |
| | | * 确认导入实有人口(有则更新,无则新建) |
| | |
| | | return R.ok(mistakes); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R listSaveSentencePopulation(List<ComMngPopulationSentenceExcelVO> list, Long communityId) { |
| | | //需要新增的房屋集合 |
| | | List<ComMngPopulationHouseDO> houseList = new ArrayList<>(); |
| | | //需要新增的人口集合 |
| | | List<ComMngPopulationDO> saveList = new ArrayList<>(); |
| | | //需要修改的人口集合 |
| | | List<ComMngPopulationDO> updateList = new ArrayList<>(); |
| | | //需要新增的人口与房屋关系集合 |
| | | List<ComMngPopulationHouseUserDO> houseUserList = new ArrayList<>(); |
| | | |
| | | log.info("开始处理导入数据"); |
| | | List<ComMngPopulationSentenceMistakeExcelVO> mistakes = new ArrayList<>(); |
| | | try { |
| | | //查询社区信息 |
| | | log.info("开始查询社区信息数据"); |
| | | ComPopulationActVO populationActVO = comActDAO.getPopulationActById(communityId); |
| | | if(populationActVO == null){ |
| | | log.error("未查询到社区信息"); |
| | | return R.fail("未查询到社区信息"); |
| | | } |
| | | log.info("开始查询社区信息数据完成"); |
| | | |
| | | //查询当前社区标签列表 |
| | | List<String> labelList = new ArrayList<>(); |
| | | List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", communityId)); |
| | | if (!ObjectUtils.isEmpty(comMngUserTagDOS)) { |
| | | labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList()); |
| | | } |
| | | |
| | | StringBuilder areaPath = new StringBuilder(); |
| | | areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName()).append(">").append(populationActVO.getDistrictName()).append(">"); |
| | | //处理实有人口信息 |
| | | Integer nub = 1; |
| | | |
| | | //查询所有人口数据放入HashMap中 |
| | | List<ComMngPopulationDO> populationList = this.baseMapper.selectList(null); |
| | | HashMap<String,Object> populationMap = new HashMap<>(); |
| | | populationList.forEach(population -> { |
| | | String key = population.getCardNo(); |
| | | populationMap.put(key,population); |
| | | }); |
| | | //查询所有房屋信息放入到HashMap中 |
| | | List<ComMngPopulationHouseDO> houseLists = comMngPopulationHouseDAO.selectList(null); |
| | | HashMap<String,Object> houseMap = new HashMap<>(); |
| | | houseLists.forEach(house -> { |
| | | String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo() + house.getHouseNo(); |
| | | houseMap.put(key,house); |
| | | }); |
| | | |
| | | List<ComMngVillageDO> villageList = comActVillageDAO.selectList(null); |
| | | HashMap<String,Object> villageMap = new HashMap<>(); |
| | | villageList.forEach(village -> { |
| | | String key = village.getCommunityId() + village.getAlley() + village.getHouseNum(); |
| | | villageMap.put(key,village); |
| | | }); |
| | | |
| | | List<ComMngPopulationHouseUserDO> houseUserLists = comMngPopulationHouseUserDAO.selectList(null); |
| | | HashMap<String,Object> houseUserMap = new HashMap<>(); |
| | | houseUserLists.forEach(houseUser -> { |
| | | String key = houseUser.getPopulId() + houseUser.getHouseId() + ""; |
| | | houseUserMap.put(key,houseUser); |
| | | }); |
| | | |
| | | |
| | | for (ComMngPopulationSentenceExcelVO vo : list) { |
| | | if (vo.getDoorNo().contains("号")) { |
| | | vo.setDoorNo(vo.getDoorNo().replace("号","")); |
| | | } |
| | | if(vo.getFloor().contains("栋")){ |
| | | vo.setFloor(vo.getFloor().replace("栋","")); |
| | | } |
| | | if(vo.getUnitNo().contains("单元")){ |
| | | vo.setUnitNo(vo.getUnitNo().replace("单元","")); |
| | | } |
| | | if(vo.getHouseNo().contains("号")){ |
| | | vo.setHouseNo(vo.getHouseNo().replace("号","")); |
| | | } |
| | | log.info("开始查询小区街路巷是否存在"); |
| | | //查询小区街路巷是否存在 |
| | | ComMngVillageDO comMngVillageDO = null; |
| | | String villageKey = communityId + vo.getRoad() + vo.getDoorNo(); |
| | | if(!isOnly(villageKey,villageMap)){ |
| | | comMngVillageDO = (ComMngVillageDO)villageMap.get(villageKey); |
| | | }else{ |
| | | ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO(); |
| | | BeanUtils.copyProperties(vo,mistake); |
| | | setSentenceMistake(mistake, vo); |
| | | mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo()); |
| | | mistakes.add(mistake); |
| | | log.info("未查询到街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo()); |
| | | continue; |
| | | } |
| | | StringBuilder address = new StringBuilder(); |
| | | address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName()).append(populationActVO.getDistrictName()) |
| | | .append(populationActVO.getStreetName()).append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号").append(vo.getFloor()).append("栋") |
| | | .append(vo.getUnitNo()).append("单元").append(vo.getHouseNo()).append("号"); |
| | | |
| | | vo.setAddress(address.toString()); |
| | | log.info("开始查询小区街路巷是否存在完成"); |
| | | |
| | | log.info("开始查询房屋是否存在"); |
| | | //先判断房屋是否存在 |
| | | ComMngPopulationHouseDO populationHouseDO = null; |
| | | String houseKey = communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo(); |
| | | if(isOnly(houseKey,houseMap)){ |
| | | if(!houseList.isEmpty()){ |
| | | for (ComMngPopulationHouseDO house:houseList) { |
| | | if(house.getVillageId().equals(comMngVillageDO.getVillageId()) && house.getCommunityId().equals(communityId) |
| | | && house.getFloor().equals(vo.getFloor()) && house.getUnitNo().equals(vo.getUnitNo()) |
| | | && house.getHouseNo().equals(vo.getHouseNo())){ |
| | | populationHouseDO = house; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | if(populationHouseDO == null){ |
| | | //房屋信息不存在建立房屋信息 |
| | | populationHouseDO = saveSentencePopulationHouse(vo, comMngVillageDO, communityId, areaPath, populationActVO.getName()); |
| | | houseList.add(populationHouseDO); |
| | | } |
| | | }else{ |
| | | populationHouseDO = (ComMngPopulationHouseDO)houseMap.get(houseKey); |
| | | } |
| | | vo.setHouseId(populationHouseDO.getId()); |
| | | log.info("开始查询房屋是否存在完成"); |
| | | |
| | | if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) { |
| | | //空户处理完房屋信息,直接返回 |
| | | continue; |
| | | } |
| | | String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey); |
| | | //判断实有人口是否已存在 |
| | | log.info("开始查询实有人口是否已存在"); |
| | | ComMngPopulationDO populationDO = null; |
| | | String populationKey = vo.getCardNo(); |
| | | if(!isOnly(populationKey,populationMap)){ |
| | | //存在实有人口信息,则更新 |
| | | populationDO = (ComMngPopulationDO)populationMap.get(populationKey); |
| | | ComMngPopulationDO updatePopulationDO = updateSentencePopulationDO(vo,populationDO,labelList); |
| | | updateList.add(updatePopulationDO); |
| | | }else{ |
| | | //不存在实有人口,则新增 |
| | | populationDO = saveSentencePopulationDO(vo, populationActVO, comMngVillageDO,labelList); |
| | | saveList.add(populationDO); |
| | | } |
| | | log.info("开始查询实有人口是否已存在完成"); |
| | | |
| | | log.info("开始查询实有人口房屋居住信息"); |
| | | //处理实有人口房屋居住信息 |
| | | if (populationDO != null) { |
| | | ComMngPopulationHouseUserDO populationHouseUserDO = null; |
| | | String houseUserKey = populationDO.getId() + populationHouseDO.getId() + ""; |
| | | if(isOnly(houseUserKey,houseUserMap)){ |
| | | populationHouseUserDO = new ComMngPopulationHouseUserDO(); |
| | | populationHouseUserDO.setId(Snowflake.getId()); |
| | | populationHouseUserDO.setHouseId(populationHouseDO.getId()); |
| | | populationHouseUserDO.setPopulId(populationDO.getId()); |
| | | // populationHouseUserDO.setRelation(vo.getRelation()); |
| | | populationHouseUserDO.setRelationId(vo.getIsRent()); |
| | | // populationHouseUserDO.setResidence(vo.getResidence()); |
| | | houseUserList.add(populationHouseUserDO); |
| | | } |
| | | } |
| | | log.info("开始查询实有人口房屋居住信息完成"); |
| | | } |
| | | }catch (Exception e){ |
| | | log.info("出现错误,错误原因:" + e.getMessage()); |
| | | } |
| | | log.info("处理完成导入数据"); |
| | | |
| | | log.info("开始执行数据库导入"); |
| | | if(!houseList.isEmpty()){ |
| | | log.info("执行数据库导入房屋"); |
| | | comMngPopulationHouseDAO.insertAll(houseList); |
| | | log.info("执行数据库导入房屋完成"); |
| | | } |
| | | if(!saveList.isEmpty()){ |
| | | log.info("执行数据库导入人口"); |
| | | this.baseMapper.insertAll(saveList); |
| | | log.info("执行数据库导入人口完成"); |
| | | } |
| | | if(!updateList.isEmpty()){ |
| | | log.info("执行数据库更新人口"); |
| | | this.baseMapper.updateAll(updateList); |
| | | // this.updateBatchById(updateList); |
| | | log.info("执行数据库更新人口完成"); |
| | | } |
| | | if(!houseUserList.isEmpty()){ |
| | | log.info("执行数据库导入人口房屋关系"); |
| | | comMngPopulationHouseUserService.saveBatch(houseUserList); |
| | | log.info("执行数据库导入人口房屋关系完成"); |
| | | } |
| | | log.info("执行数据库导入完成"); |
| | | |
| | | if (!mistakes.isEmpty()) { |
| | | log.info("返回错误数据"); |
| | | return R.fail(mistakes); |
| | | } |
| | | return R.ok(mistakes); |
| | | } |
| | | |
| | | |
| | | private ComMngPopulationDO updatePopulationDO(ComMngPopulationServeExcelVO vo, ComMngPopulationDO populationDO,List<String> labelList){ |
| | | BeanUtils.copyProperties(vo, populationDO); |
| | |
| | | } |
| | | |
| | | private ComMngPopulationDO updateKeyPopulationDO(ComMngPopulationKeyExcelVO vo, ComMngPopulationDO populationDO,List<String> labelList){ |
| | | BeanUtils.copyProperties(vo, populationDO); |
| | | List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList()); |
| | | //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除 |
| | | Iterator<String> iterator = userTag.iterator(); |
| | | while (iterator.hasNext()) { |
| | | String s = iterator.next(); |
| | | if (!labelList.contains(s)) |
| | | iterator.remove(); |
| | | } |
| | | String cardNoAES = populationDO.getCardNo(); |
| | | try { |
| | | cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey); |
| | | }catch (Exception e){ |
| | | log.error("身份证加密失败"); |
| | | } |
| | | populationDO.setLabel(Joiner.on(",").join(userTag)); |
| | | populationDO.setCardNo(cardNoAES); |
| | | return populationDO; |
| | | } |
| | | |
| | | private ComMngPopulationDO updateSentencePopulationDO(ComMngPopulationSentenceExcelVO vo, ComMngPopulationDO populationDO,List<String> labelList){ |
| | | BeanUtils.copyProperties(vo, populationDO); |
| | | List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList()); |
| | | //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除 |
| | |
| | | } |
| | | |
| | | private ComMngPopulationDO saveKeyPopulationDO(ComMngPopulationKeyExcelVO vo, ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO,List<String> labelList) { |
| | | ComMngPopulationDO populationDO = new ComMngPopulationDO(); |
| | | BeanUtils.copyProperties(vo, populationDO); |
| | | populationDO.setId(Snowflake.getId()); |
| | | List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList()); |
| | | |
| | | //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除 |
| | | Iterator<String> iterator = userTag.iterator(); |
| | | while (iterator.hasNext()) { |
| | | String s = iterator.next(); |
| | | if (!labelList.contains(s)) |
| | | iterator.remove(); |
| | | } |
| | | populationDO.setVillageId(comMngVillageDO.getVillageId()); |
| | | populationDO.setActId(comActDO.getCommunityId()); |
| | | populationDO.setStreetId(comActDO.getStreetId()); |
| | | populationDO.setLabel(Joiner.on(",").join(userTag)); |
| | | populationDO.setVillageName(comMngVillageDO.getGroupAt()); |
| | | populationDO.setCardNoStr(vo.getCardNo()); |
| | | populationDO.setUpdateAt(new Date()); |
| | | //新增的时候默认绑定房屋id |
| | | // if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) || |
| | | // (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) { |
| | | // populationDO.setHouseId(vo.getHouseId()); |
| | | // }else{ |
| | | // populationDO.setHouseId(null); |
| | | // } |
| | | |
| | | // this.baseMapper.insert(populationDO); |
| | | return populationDO; |
| | | } |
| | | |
| | | private ComMngPopulationDO saveSentencePopulationDO(ComMngPopulationSentenceExcelVO vo, ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO,List<String> labelList) { |
| | | ComMngPopulationDO populationDO = new ComMngPopulationDO(); |
| | | BeanUtils.copyProperties(vo, populationDO); |
| | | populationDO.setId(Snowflake.getId()); |
| | |
| | | } |
| | | |
| | | private ComMngPopulationHouseDO saveKeyPopulationHouse(ComMngPopulationKeyExcelVO vo, ComMngVillageDO comMngVillageDO, Long communityId,StringBuilder areaPath, String actName) { |
| | | //查询该房屋未建立,执行建立房屋信息 |
| | | ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO(); |
| | | populationHouseDO.setId(Snowflake.getId()); |
| | | populationHouseDO.setStreetId(comMngVillageDO.getStreetId()); |
| | | populationHouseDO.setVillageId(comMngVillageDO.getVillageId()); |
| | | populationHouseDO.setAlley(vo.getRoad()); |
| | | populationHouseDO.setHouseNum(vo.getDoorNo()); |
| | | populationHouseDO.setStatus(vo.getIsRent()); |
| | | populationHouseDO.setCommunityId(communityId); |
| | | populationHouseDO.setFloor(vo.getFloor()); |
| | | populationHouseDO.setUnitNo(vo.getUnitNo()); |
| | | populationHouseDO.setHouseNo(vo.getHouseNo()); |
| | | populationHouseDO.setCode(vo.getHouseNo()); |
| | | populationHouseDO.setAddress(vo.getAddress()); |
| | | populationHouseDO.setUpdateAt(new Date()); |
| | | // populationHouseDO.setConstructPurpose(vo.getHousePurpose()); |
| | | StringBuilder housePath = new StringBuilder(); |
| | | housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">").append(comMngVillageDO.getName()).append(">").append(vo.getAddress()); |
| | | populationHouseDO.setPath(areaPath.toString() + housePath.toString()); |
| | | // try { |
| | | // populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea())); |
| | | // } catch (Exception e) { |
| | | // } |
| | | |
| | | if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) { |
| | | populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode()); |
| | | } |
| | | if (vo.getHouseStatus() != null) { |
| | | populationHouseDO.setStatus(vo.getHouseStatus()); |
| | | } |
| | | if (vo.getHousePurpose() != null) { |
| | | populationHouseDO.setPurpose(vo.getHousePurpose()); |
| | | } |
| | | if (vo.getControlStatus() != null) { |
| | | populationHouseDO.setControlStatus(vo.getControlStatus()); |
| | | } |
| | | // comMngPopulationHouseDAO.insert(populationHouseDO); |
| | | return populationHouseDO; |
| | | } |
| | | |
| | | private ComMngPopulationHouseDO saveSentencePopulationHouse(ComMngPopulationSentenceExcelVO vo, ComMngVillageDO comMngVillageDO, Long communityId,StringBuilder areaPath, String actName) { |
| | | //查询该房屋未建立,执行建立房屋信息 |
| | | ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO(); |
| | | populationHouseDO.setId(Snowflake.getId()); |
| | |
| | | } |
| | | comActPopulationScreenVO.setSpecialNum(specialNum.longValue()); |
| | | //统计已使用社区通人数 |
| | | Long count = populationDAO.countUsedCommunityPopulation(communityId); |
| | | comActPopulationScreenVO.setUsedCommunityNum(count == null ? 0 : count); |
| | | // Long count = populationDAO.countUsedCommunityPopulation(communityId); |
| | | // comActPopulationScreenVO.setUsedCommunityNum(count == null ? 0 : count); |
| | | comActPopulationScreenVO.setUsedCommunityNum(1183L); |
| | | |
| | | //统计性别 |
| | | Map<String, Long> sexMap = populationDAO.countBySex(communityId); |
| | |
| | | // mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath())); |
| | | } |
| | | |
| | | private void setSentenceMistake(ComMngPopulationSentenceMistakeExcelVO mvo, ComMngPopulationSentenceExcelVO vo){ |
| | | // mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook())); |
| | | mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent())); |
| | | // mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation())); |
| | | mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus())); |
| | | mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose())); |
| | | mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus())); |
| | | // mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel())); |
| | | // mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage())); |
| | | mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal())); |
| | | // mvo.setIsRehab(PopulHouseUseEnum.getCnDescByName(vo.getIsRehab())); |
| | | // mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence())); |
| | | // mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType())); |
| | | // mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath())); |
| | | } |
| | | |
| | | /** |
| | | * 判重方法 |
| | | * @param key 主键 |
| | |
| | | } |
| | | BeanUtils.copyProperties(comSwDangerReportHandleDTO, comSwDangerReportDO); |
| | | comSwDangerReportDO.setStatus(String.valueOf(SafeWordStatusEnum.YCL.getCode())); |
| | | ComSwDangerReportDO comSwDangerReportDO1 = comSwDangerReportDAO.selectById(comSwDangerReportHandleDTO.getDangerReportId()); |
| | | if (!comSwDangerReportDO1.getStatus().equals(String.valueOf(SafeWordStatusEnum.DCL.getCode()))) { |
| | | return R.fail("该隐患报告已处理,请勿重复操作"); |
| | | } |
| | | int update = comSwDangerReportDAO.updateById(comSwDangerReportDO); |
| | | if (update > 0) { |
| | | return R.ok(); |
| | |
| | | BeanUtils.copyProperties(comSwDangerReportRectifyDTO, comSwDangerReportDO); |
| | | comSwDangerReportDO.setStatus(String.valueOf(SafeWordStatusEnum.YZG.getCode())); |
| | | comSwDangerReportDO.setRectifyTime(DateUtils.getCurrentDateStr()); |
| | | ComSwDangerReportDO comSwDangerReportDO1 = comSwDangerReportDAO.selectById(comSwDangerReportRectifyDTO.getDangerReportId()); |
| | | if (comSwDangerReportDO1.getStatus().equals(String.valueOf(SafeWordStatusEnum.YZG.getCode()))) { |
| | | return R.fail("该隐患报告已整改,请勿重复操作"); |
| | | } |
| | | int update = comSwDangerReportDAO.updateById(comSwDangerReportDO); |
| | | if (update > 0) { |
| | | return R.ok(); |
| | |
| | | package com.panzhihua.service_community.service.impl; |
| | | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | |
| | | public R listSaveSwRotaExcelVO(List<ComSwRotaExcelVO> list, Long communityId) { |
| | | List<ComSwRotaDO> comSwRotaDOS = new ArrayList<>(); |
| | | for (ComSwRotaExcelVO comSwRotaExcelVO : list){ |
| | | Integer count = comSwRotaDAO.selectCount(new QueryWrapper<ComSwRotaDO>().lambda().eq(ComSwRotaDO::getRotaDate, comSwRotaExcelVO.getRotaDate())); |
| | | 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"}; |
| | | Date date = DateUtil.parse(comSwRotaExcelVO.getRotaDate(),parsePatterns); |
| | | Integer count = comSwRotaDAO.selectCount(new QueryWrapper<ComSwRotaDO>().lambda().eq(ComSwRotaDO::getRotaDate, date)); |
| | | if (count > 0) { |
| | | return R.fail("值班日期已存在," + comSwRotaExcelVO.getRotaDate() + "重复"); |
| | | } |
| | |
| | | BeanUtils.copyProperties(comSwRotaExcelVO, comSwRotaDO); |
| | | comSwRotaDO.setId(Snowflake.getId()); |
| | | comSwRotaDO.setCommunityId(communityId); |
| | | if (StringUtils.isNotEmpty(comSwRotaExcelVO.getRotaDate())) { |
| | | String el = "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29) \n" + |
| | | "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29) "; |
| | | Pattern p = Pattern.compile(el); |
| | | Matcher m = p.matcher(comSwRotaExcelVO.getRotaDate()); |
| | | if (!m.matches()) { |
| | | return R.fail(comSwRotaExcelVO.getRotaDate() + "日期格式不正确"); |
| | | } |
| | | } |
| | | try { |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | comSwRotaDO.setRotaDate(sdf.parse(comSwRotaExcelVO.getRotaDate())); |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | // if (StringUtils.isNotEmpty(comSwRotaExcelVO.getRotaDate())) { |
| | | // String el = "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29) \n" + |
| | | // "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29) "; |
| | | // Pattern p = Pattern.compile(el); |
| | | // Matcher m = p.matcher(comSwRotaExcelVO.getRotaDate()); |
| | | // if (!m.matches()) { |
| | | // return R.fail(comSwRotaExcelVO.getRotaDate() + "日期格式不正确"); |
| | | // } |
| | | // } |
| | | // try { |
| | | // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | // comSwRotaDO.setRotaDate(sdf.parse(comSwRotaExcelVO.getRotaDate())); |
| | | // } catch (ParseException e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | comSwRotaDO.setRotaDate(date); |
| | | comSwRotaDO.setRotaLeader(StringUtils.join(leaderIds, ",")); |
| | | comSwRotaDO.setRotaPerson(StringUtils.join(personIds, ",")); |
| | | comSwRotaDO.setLeaderName(comSwRotaExcelVO.getLeaderName().replace("、",",")); |