springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/FtpConfig.java
New file @@ -0,0 +1,20 @@ package com.panzhihua.common.model.dtos; import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; /** * @author lyq * ftp配置信息传递类 */ @Data public class FtpConfig { private String userName; private String password; private String host; private int port; private String url; private String excelUrl; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -3154,7 +3154,7 @@ * @return 删除结果 */ @PostMapping("common/data/special/delete") R deleteSpecialInputUser(@RequestParam(value = "id") Long id); R deleteSpecialInputUser(@RequestParam(value = "id") Long id,@RequestParam("communityId") Long communityId); /** * 办事指南_新增 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/AssemblyUtils.java
New file @@ -0,0 +1,130 @@ package com.panzhihua.common.utlis; import com.panzhihua.common.model.vos.community.ComActQuestnaireAnswerContentVO; import lombok.extern.slf4j.Slf4j; import java.net.URL; import java.util.ArrayList; import java.util.List; /** * @author lyq * 前端H5组件库工具类 */ @Slf4j public class AssemblyUtils { /** * 数据转换--登记明细用户填写答案导出数据格式转换 * * @param answerContentVOList 用户答题记录 * @return 用户填写答案数据 */ public static List<List<Object>> ReserveData(List<ComActQuestnaireAnswerContentVO> answerContentVOList) { //结果数据集合 List<List<Object>> resultList = new ArrayList<>(); //构建单个用户数据 List<Object> userData = new ArrayList<>(); //遍历答案列表 Long reserveRecordId = 0L; Long reserveSubId = 0L; Boolean isOldDuo = false; StringBuffer sb = new StringBuffer(); if (answerContentVOList != null && answerContentVOList.size() > 0) { for (ComActQuestnaireAnswerContentVO userAnswers : answerContentVOList) { //判断是文字描述直接跳过 if (userAnswers.getOptionType().equals(5) || userAnswers.getOptionType().equals(11)) { continue; } //判断reserveRecordId为空则为第一条记录,默认加上昵称和灯谜是 if (reserveRecordId.equals(0L)) { reserveRecordId = userAnswers.getReserveRecordId(); userData.add(userAnswers.getNickName()); userData.add(DateUtils.format(userAnswers.getTime(), DateUtils.ymdhms_format)); } //根据reserveRecordId判断是否是第二条填报记录 if (!reserveRecordId.equals(userAnswers.getReserveRecordId())) { reserveSubId = 0L; if(isOldDuo){ String answer = sb.toString(); userData.add(answer.substring(0, answer.length() - 1)); sb = new StringBuffer(); isOldDuo = false; } resultList.add(userData); userData = new ArrayList<>(); reserveRecordId = userAnswers.getReserveRecordId(); userData.add(userAnswers.getNickName()); userData.add(DateUtils.format(userAnswers.getTime(), DateUtils.ymdhms_format)); if(StringUtils.isNotEmpty(userAnswers.getAnswerContent())){ userData.add(userAnswers.getAnswerContent()); }else{ userData.add(" "); } }else{ if(reserveSubId.equals(0L)){ reserveSubId = userAnswers.getReserveSubId(); } if(!reserveSubId.equals(userAnswers.getReserveSubId())){ reserveSubId = userAnswers.getReserveSubId(); //判断当前的组件类型是否是图片上传,导出时需要导出图片 if(userAnswers.getOptionType().equals(11)){ reserveSubId = userAnswers.getReserveSubId(); try { userData.add(new URL(userAnswers.getAnswerContent())); }catch (Exception e){ userData.add(" "); log.error("导出转换图片失败!"); } continue; } if(userAnswers.getOptionType().equals(1)){ isOldDuo = true; sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ","); continue; }else{ isOldDuo = false; } sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ","); String answer = sb.toString(); userData.add(answer.substring(0, answer.length() - 1)); sb = new StringBuffer(); }else{ //判断当前的组件类型是否是图片上传,导出时需要导出图片 if(userAnswers.getOptionType().equals(11)){ reserveSubId = userAnswers.getReserveSubId(); try { userData.add(new URL(userAnswers.getAnswerContent())); }catch (Exception e){ userData.add(" "); log.error("导出转换图片失败!"); } continue; } if(userAnswers.getOptionType().equals(1)){ isOldDuo = true; sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ","); continue; }else{ isOldDuo = false; } sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ","); String answer = sb.toString(); userData.add(answer.substring(0, answer.length() - 1)); sb = new StringBuffer(); } } } if(isOldDuo){ String answer = sb.toString(); userData.add(answer.substring(0, answer.length() - 1)); } resultList.add(userData); } return resultList; } } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/ExcelUtils.java
New file @@ -0,0 +1,79 @@ package com.panzhihua.common.utlis; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.style.WriteCellStyle; import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.panzhihua.common.excel.CustomSheetWriteHandler; import com.panzhihua.common.model.dtos.FtpConfig; import lombok.extern.slf4j.Slf4j; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.List; /** * @author lyq * excel工具类 */ @Slf4j public class ExcelUtils { public static String adminExport(FtpConfig config, String name, List<List<String>> headList , List<List<Object>> datalist, String sheetName, Object obj) { String ftpUrl = "/mnt/data/web/excel/"; try { SFTPUtil sftp = new SFTPUtil(config.getUserName(), config.getPassword(), config.getHost(), config.getPort()); sftp.login(); boolean existDir = sftp.isExistDir(ftpUrl + name); if (!existDir) { String property = System.getProperty("user.dir"); String fileName = property + File.separator + name; ExcelWriter excelWriter = null; InputStream inputStream = null; try { WriteCellStyle headWriteCellStyle = new WriteCellStyle(); WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); contentWriteCellStyle.setWrapped(true); HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle); LongestMatchColumnWidthStyleStrategy longestMatchColumnWidthStyleStrategy = new LongestMatchColumnWidthStyleStrategy(); excelWriter = EasyExcel.write(fileName, Object.class) .registerWriteHandler(horizontalCellStyleStrategy) .registerWriteHandler(longestMatchColumnWidthStyleStrategy) .registerWriteHandler(new CustomSheetWriteHandler()).build(); WriteSheet writeSheet = EasyExcel.writerSheet(sheetName).head(headList).build(); excelWriter.write(datalist, 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 config.getExcelUrl() + name; } } catch (Exception e) { e.printStackTrace(); log.error("文件传输失败【{}】", e.getMessage()); return null; } return null; } } springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ComActReserveApi.java
@@ -22,6 +22,7 @@ import com.panzhihua.common.model.vos.community.reserve.*; import com.panzhihua.common.service.community.CommunityService; import com.panzhihua.common.service.user.UserService; import com.panzhihua.common.utlis.AssemblyUtils; import com.panzhihua.common.utlis.DateUtils; import com.panzhihua.common.utlis.SFTPUtil; import com.panzhihua.common.utlis.StringUtils; @@ -505,7 +506,8 @@ headList.add(headn); } }); List<List<Object>> datalist = dataList(questnaireAnswersDTOS.getAnswers()); //数据转换 List<List<Object>> datalist = AssemblyUtils.ReserveData(questnaireAnswersDTOS.getAnswers()); WriteCellStyle headWriteCellStyle = new WriteCellStyle(); WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); @@ -564,124 +566,6 @@ @PostMapping("/register/detailed/detail") public R registerDetailedDetail(@RequestParam("reserveRecordId") Long reserveRecordId) { return communityService.registerDetailedDetailAdmin(reserveRecordId); } /** * 数据转换--登记明细用户填写答案导出数据格式转换 * * @param answerContentVOList 用户答题记录 * @return 用户填写答案数据 */ private List<List<Object>> dataList(List<ComActQuestnaireAnswerContentVO> answerContentVOList) { //结果数据集合 List<List<Object>> resultList = new ArrayList<>(); //构建单个用户数据 List<Object> userData = new ArrayList<>(); //遍历答案列表 Long reserveRecordId = 0L; Long reserveSubId = 0L; Boolean isOldDuo = false; StringBuffer sb = new StringBuffer(); if (answerContentVOList != null && answerContentVOList.size() > 0) { for (ComActQuestnaireAnswerContentVO userAnswers : answerContentVOList) { //判断是文字描述直接跳过 if (userAnswers.getOptionType().equals(5) || userAnswers.getOptionType().equals(11)) { continue; } //判断reserveRecordId为空则为第一条记录,默认加上昵称和灯谜是 if (reserveRecordId.equals(0L)) { reserveRecordId = userAnswers.getReserveRecordId(); userData.add(userAnswers.getNickName()); userData.add(DateUtils.format(userAnswers.getTime(), DateUtils.ymdhms_format)); } //根据reserveRecordId判断是否是第二条填报记录 if (!reserveRecordId.equals(userAnswers.getReserveRecordId())) { reserveSubId = 0L; if(isOldDuo){ String answer = sb.toString(); userData.add(answer.substring(0, answer.length() - 1)); sb = new StringBuffer(); isOldDuo = false; } resultList.add(userData); userData = new ArrayList<>(); reserveRecordId = userAnswers.getReserveRecordId(); userData.add(userAnswers.getNickName()); userData.add(DateUtils.format(userAnswers.getTime(), DateUtils.ymdhms_format)); if(StringUtils.isNotEmpty(userAnswers.getAnswerContent())){ userData.add(userAnswers.getAnswerContent()); }else{ userData.add(" "); } }else{ if(reserveSubId.equals(0L)){ reserveSubId = userAnswers.getReserveSubId(); } if(!reserveSubId.equals(userAnswers.getReserveSubId())){ reserveSubId = userAnswers.getReserveSubId(); //判断当前的组件类型是否是图片上传,导出时需要导出图片 if(userAnswers.getOptionType().equals(11)){ reserveSubId = userAnswers.getReserveSubId(); try { userData.add(new URL(userAnswers.getAnswerContent())); }catch (Exception e){ userData.add(" "); log.error("导出转换图片失败!"); } continue; } if(userAnswers.getOptionType().equals(1)){ isOldDuo = true; sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ","); continue; }else{ isOldDuo = false; } sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ","); String answer = sb.toString(); userData.add(answer.substring(0, answer.length() - 1)); sb = new StringBuffer(); }else{ //判断当前的组件类型是否是图片上传,导出时需要导出图片 if(userAnswers.getOptionType().equals(11)){ reserveSubId = userAnswers.getReserveSubId(); try { userData.add(new URL(userAnswers.getAnswerContent())); }catch (Exception e){ userData.add(" "); log.error("导出转换图片失败!"); } continue; } if(userAnswers.getOptionType().equals(1)){ isOldDuo = true; sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ","); continue; }else{ isOldDuo = false; } sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ","); String answer = sb.toString(); userData.add(answer.substring(0, answer.length() - 1)); sb = new StringBuffer(); } } } // String answer = sb.toString(); // if(StringUtils.isNotEmpty(answer)){ // userData.add(answer.substring(0, answer.length() - 1)); // } if(isOldDuo){ String answer = sb.toString(); userData.add(answer.substring(0, answer.length() - 1)); } resultList.add(userData); } return resultList; } } springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommonDataApi.java
@@ -491,65 +491,10 @@ @ApiOperation(value = "特殊群体/删除", response = InputUserInfoVO.class) @DeleteMapping("/special/delete") public R deleteSpecialInputUser(@RequestParam(value = "id") Long id) { return communityService.deleteSpecialInputUser(id); // 获取登陆用户绑定社区id Long communityId = this.getLoginUserInfo().getCommunityId(); return communityService.deleteSpecialInputUser(id,communityId); } // @ApiOperation(value = "特殊群体 导出特殊群体Excel") // @PostMapping("/special/export") // public R exportSpecial(@RequestBody ExportSpecialUserDTO exportSpecialUserDTO) { // exportSpecialUserDTO.setCommunityId(this.getCommunityId()); // String url = excelUrl; // String uuid = UUID.randomUUID().toString().replace("-", ""); // String name = uuid + ".xlsx"; // String ftpUrl = "/mnt/data/web/excel/"; //// 用户搜索了就下载搜索的用户否则下载所有用户 // R r = userService.specialUserExport(exportSpecialUserDTO); // if (R.isOk(r)) { // List<EexcelUserDTO> eexcelUserDTOS = JSONArray.parseArray(JSONArray.toJSONString(r.getData()), // EexcelUserDTO.class); // 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, EexcelUserDTO.class).registerWriteHandler(new // LongestMatchColumnWidthStyleStrategy()).registerWriteHandler(new CustomSheetWriteHandler()).build(); // WriteSheet writeSheet = EasyExcel.writerSheet("模板").build(); // excelWriter.write(eexcelUserDTOS, 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(url + name); // } catch (Exception e) { // e.printStackTrace(); // log.error("文件传输失败【{}】", e.getMessage()); // return R.fail(); // } // } // return R.fail("未查询到用户"); // } @ApiOperation(value = "特殊群体-数据导出") @PostMapping("/special/export") springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityQuestnaireApi.java
@@ -9,6 +9,7 @@ import javax.annotation.Resource; import com.panzhihua.common.utlis.AssemblyUtils; import com.panzhihua.common.utlis.DateUtils; import com.panzhihua.common.utlis.StringUtils; import org.springframework.web.bind.annotation.*; @@ -191,7 +192,7 @@ } headList.add(headn); }); List<List<Object>> datalist = dataList(questnaireAnswersDTOS.getAnswers()); List<List<Object>> datalist = AssemblyUtils.ReserveData(questnaireAnswersDTOS.getAnswers()); WriteCellStyle headWriteCellStyle = new WriteCellStyle(); WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); @@ -308,91 +309,4 @@ } return communityService.statisticsSummaryHeader(questId, loginUserInfo.getCommunityId()); } /** * 数据转换 * @param answerContentVOList 用户问答列表数据 * @return 调查问卷需要导出数据 */ private List<List<Object>> dataList(List<ComActQuestnaireAnswerContentVO> answerContentVOList) { //结果数据集合 List<List<Object>> resultList = new ArrayList<>(); //构建单个用户数据 List<Object> userData = new ArrayList<>(); //遍历答案列表 Long reserveRecordId = 0L; Long reserveSubId = 0L; StringBuffer sb = new StringBuffer(); if (answerContentVOList != null && answerContentVOList.size() > 0) { for (ComActQuestnaireAnswerContentVO userAnswers : answerContentVOList) { //判断是文字描述直接跳过 if (userAnswers.getOptionType().equals(5)) { continue; } //判断reserveRecordId为空则为第一条记录,默认加上昵称和灯谜是 if (reserveRecordId.equals(0L)) { reserveRecordId = userAnswers.getReserveRecordId(); userData.add(userAnswers.getNickName()); userData.add(DateUtils.format(userAnswers.getTime(), DateUtils.ymdhms_format)); } //根据reserveRecordId判断是否是第二条填报记录 if (!reserveRecordId.equals(userAnswers.getReserveRecordId())) { reserveSubId = 0L; userData = new ArrayList<>(); reserveRecordId = userAnswers.getReserveRecordId(); userData.add(userAnswers.getNickName()); userData.add(DateUtils.format(userAnswers.getTime(), DateUtils.ymdhms_format)); if(StringUtils.isNotEmpty(userAnswers.getAnswerContent())){ userData.add(userAnswers.getAnswerContent()); }else{ userData.add(" "); } }else{ if(reserveSubId.equals(0L)){ reserveSubId = userAnswers.getReserveSubId(); } if(!reserveSubId.equals(userAnswers.getReserveSubId())){ reserveSubId = userAnswers.getReserveSubId(); //判断当前的组件类型是否是图片上传,导出时需要导出图片 if(userAnswers.getOptionType().equals(11)){ reserveSubId = userAnswers.getReserveSubId(); try { userData.add(new URL(userAnswers.getAnswerContent())); }catch (Exception e){ userData.add(" "); log.error("导出转换图片失败!"); } continue; } sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ","); String answer = sb.toString(); userData.add(answer.substring(0, answer.length() - 1)); sb = new StringBuffer(); }else{ //判断当前的组件类型是否是图片上传,导出时需要导出图片 if(userAnswers.getOptionType().equals(11)){ reserveSubId = userAnswers.getReserveSubId(); try { userData.add(new URL(userAnswers.getAnswerContent())); }catch (Exception e){ userData.add(" "); log.error("导出转换图片失败!"); } continue; } sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ","); String answer = sb.toString(); userData.add(answer.substring(0, answer.length() - 1)); sb = new StringBuffer(); } } } resultList.add(userData); } return resultList; } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommonDataApi.java
@@ -680,8 +680,8 @@ * @return 删除结果 */ @PostMapping("/special/delete") public R deleteSpecialInputUser(@RequestParam(value = "id") Long id) { return comMngPopulationService.deleteSpecialInputUser(id); public R deleteSpecialInputUser(@RequestParam(value = "id") Long id,@RequestParam(value = "communityId") Long communityId) { return comMngPopulationService.deleteSpecialInputUser(id,communityId); } /** springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComMngPopulationCommunityTagsDO.java
@@ -38,6 +38,7 @@ /** * 标签集合(多个标签以,隔开) */ @TableField(updateStrategy = FieldStrategy.IGNORED) private String label; /** springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComMngPopulationDO.java
@@ -219,7 +219,7 @@ /** * 标签集合(多个标签以,隔开) */ @TableField(fill = FieldFill.UPDATE) @TableField(fill = FieldFill.UPDATE,updateStrategy = FieldStrategy.IGNORED) private String label; /** springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComMngPopulationService.java
@@ -307,7 +307,7 @@ * 特殊群体id * @return 删除结果 */ R deleteSpecialInputUser(Long id); R deleteSpecialInputUser(Long id,Long communityId); /** * 基础数据》特殊群体》分页查询标签列表 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java
@@ -6668,13 +6668,24 @@ * @return 删除结果 */ @Override public R deleteSpecialInputUser(Long id) { public R deleteSpecialInputUser(Long id,Long communityId) { // 查询特殊群体人员 ComMngPopulationDO populationDO = this.baseMapper.selectById(id); if (populationDO == null) { return R.fail("未查询到该记录"); } populationDO.setLabel(null); // 清理社区与人口关联信息的label信息 List<ComMngPopulationCommunityTagsDO> communityTagsDOList = comMngPopulationCommunityTagsDAO.selectList(new QueryWrapper<ComMngPopulationCommunityTagsDO>() .lambda().eq(ComMngPopulationCommunityTagsDO::getPopulationId,id).eq(ComMngPopulationCommunityTagsDO::getCommunityId,communityId)); if(communityTagsDOList != null && communityTagsDOList.size() > 0){ communityTagsDOList.forEach(communityTags -> { communityTags.setLabel(null); comMngPopulationCommunityTagsDAO.updateById(communityTags); }); } if (this.baseMapper.updateById(populationDO) > 0) { return R.ok(); } else {