package com.panzhihua.common.utlis; import com.panzhihua.common.model.vos.community.ComActQuestnaireAnswerContentVO; import lombok.extern.slf4j.Slf4j; import javax.imageio.ImageIO; import javax.xml.bind.DatatypeConverter; import java.awt.image.BufferedImage; import java.io.*; import java.net.URL; import java.nio.file.Files; import java.util.ArrayList; import java.util.Base64; import java.util.List; import java.util.UUID; /** * @author lyq * 前端H5组件库工具类 */ @Slf4j public class AssemblyUtils { /** * 数据转换--登记明细用户填写答案导出数据格式转换 * * @param answerContentVOList 用户答题记录 * @return 用户填写答案数据 */ public static List> ReserveData(List answerContentVOList) { //结果数据集合 List> resultList = new ArrayList<>(); //构建单个用户数据 List userData = new ArrayList<>(); String noExport = "本人对信息内容"; //遍历答案列表 Long reserveRecordId = 0L; Long reserveSubId = 0L; Boolean isOldDuo = false; StringBuffer sb = new StringBuffer(); if (answerContentVOList != null && answerContentVOList.size() > 0) { int a=0; for (ComActQuestnaireAnswerContentVO userAnswers : answerContentVOList) { a++; if(answerContentVOList.size()==26&&a==9){ userData.add(" "); } //判断是文字描述直接跳过 if (userAnswers.getOptionType().equals(5) || (StringUtils.isNotEmpty(userAnswers.getAnswerContent()) && userAnswers.getAnswerContent().contains(noExport))) { 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(StringUtils.isNotEmpty(userAnswers.getAnswerContent()) && userAnswers.getAnswerContent().contains(noExport)){ continue; } //判断当前的组件类型是否是图片上传,导出时需要导出图片 if(userAnswers.getOptionType().equals(11)){ reserveSubId = userAnswers.getReserveSubId(); try { if(StringUtils.isNotEmpty(userAnswers.getAnswerContent())){ if(userAnswers.getAnswerContent().contains("_compress")){ userData.add(new URL(userAnswers.getAnswerContent())); } else { URL url=new URL(userAnswers.getAnswerContent().substring(0,userAnswers.getAnswerContent().lastIndexOf("."))+"_compress.jpg"); if(url.getContent()!=null){ userData.add(url); } else { userData.add(userAnswers.getAnswerContent()); } } //userData.add(new File("/workspace/minio/data/files/"+userAnswers.getAnswerContent().substring(userAnswers.getAnswerContent().indexOf("files/")+6))); } else { userData.add(" "); } }catch (Exception e){ userData.add(" "); e.printStackTrace(); log.error("导出转换图片失败!"); } continue; } //判断当前组件类型是否签名 if(userAnswers.getOptionType().equals(12)){ reserveSubId = userAnswers.getReserveSubId(); try { userData.add(DatatypeConverter.parseBase64Binary(userAnswers.getAnswerContent().substring(userAnswers.getAnswerContent().indexOf(",") + 1))); }catch (Exception e){ userData.add(" "); log.error("导出转换图片失败!"); } continue; } if(userAnswers.getOptionType().equals(1)){ isOldDuo = true; sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ","); continue; }else{ if(isOldDuo){ String answer = sb.toString(); userData.add(answer.substring(0, answer.length() - 1)); sb = new StringBuffer(); } 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(StringUtils.isNotEmpty(userAnswers.getAnswerContent()) && userAnswers.getAnswerContent().contains(noExport)){ continue; } //判断当前的组件类型是否是图片上传,导出时需要导出图片 if(userAnswers.getOptionType().equals(11)){ reserveSubId = userAnswers.getReserveSubId(); try { if(StringUtils.isNotEmpty(userAnswers.getAnswerContent())){ if(userAnswers.getAnswerContent().contains("_compress")){ userData.add(new URL(userAnswers.getAnswerContent())); } else { URL url=new URL(userAnswers.getAnswerContent().substring(0,userAnswers.getAnswerContent().lastIndexOf("."))+"_compress.jpg"); if(url.getContent()!=null){ userData.add(url); } else { userData.add(userAnswers.getAnswerContent()); } } //userData.add(new File("/workspace/minio/data/files/"+userAnswers.getAnswerContent().substring(userAnswers.getAnswerContent().indexOf("files/")+6))); } else { userData.add(" "); } }catch (Exception e){ userData.add(" "); log.error("导出转换图片失败!"); } continue; } //判断当前组件类型是否签名 if(userAnswers.getOptionType().equals(12)){ reserveSubId = userAnswers.getReserveSubId(); try { //userData.add(new URL("http://image.panzhihua.nhys.cdnhxx.com//idcard/967dbdef3ef3465a9169fbea204f9aa7.jpg")); userData.add(DatatypeConverter.parseBase64Binary(userAnswers.getAnswerContent().substring(userAnswers.getAnswerContent().indexOf(",") + 1))); }catch (Exception e){ userData.add(" "); log.error("导出转换图片失败!"); } continue; } if(userAnswers.getOptionType().equals(1)){ isOldDuo = true; sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ","); continue; }else{ if(isOldDuo){ String answer = sb.toString(); userData.add(answer.substring(0, answer.length() - 1)); sb = new StringBuffer(); } 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; } public static List> ReserveDataNoImage(List answerContentVOList) { //结果数据集合 List> resultList = new ArrayList<>(); //构建单个用户数据 List userData = new ArrayList<>(); String noExport = "以上信息仅用于"; //遍历答案列表 Long reserveRecordId = 0L; Long reserveSubId = 0L; Boolean isOldDuo = false; StringBuffer sb = new StringBuffer(); if (answerContentVOList != null && answerContentVOList.size() > 0) { int a=0; for (ComActQuestnaireAnswerContentVO userAnswers : answerContentVOList) { a++; if(answerContentVOList.size()==26&&a==9){ userData.add(" "); } //判断是文字描述直接跳过 if (userAnswers.getOptionType().equals(5) ||userAnswers.getOptionType().equals(11) || (StringUtils.isNotEmpty(userAnswers.getAnswerContent()) && userAnswers.getAnswerContent().contains(noExport))) { 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(StringUtils.isNotEmpty(userAnswers.getAnswerContent()) && userAnswers.getAnswerContent().contains(noExport)){ continue; } //判断当前的组件类型是否是图片上传,导出时需要导出图片 if(userAnswers.getOptionType().equals(11)){ reserveSubId = userAnswers.getReserveSubId(); try { if(StringUtils.isNotEmpty(userAnswers.getAnswerContent())){ if(userAnswers.getAnswerContent().contains("_compress")){ userData.add(new URL(userAnswers.getAnswerContent())); } else { URL url=new URL(userAnswers.getAnswerContent().substring(0,userAnswers.getAnswerContent().lastIndexOf("."))+"_compress.jpg"); if(url.getContent()!=null){ userData.add(url); } else { userData.add(userAnswers.getAnswerContent()); } } //userData.add(new File("/workspace/minio/data/files/"+userAnswers.getAnswerContent().substring(userAnswers.getAnswerContent().indexOf("files/")+6))); } else { userData.add(" "); } }catch (Exception e){ userData.add(" "); e.printStackTrace(); log.error("导出转换图片失败!"); } continue; } //判断当前组件类型是否签名 if(userAnswers.getOptionType().equals(12)){ reserveSubId = userAnswers.getReserveSubId(); try { userData.add(DatatypeConverter.parseBase64Binary(userAnswers.getAnswerContent().substring(userAnswers.getAnswerContent().indexOf(",") + 1))); }catch (Exception e){ userData.add(" "); log.error("导出转换图片失败!"); } continue; } if(userAnswers.getOptionType().equals(1)){ isOldDuo = true; sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ","); continue; }else{ if(isOldDuo){ String answer = sb.toString(); userData.add(answer.substring(0, answer.length() - 1)); sb = new StringBuffer(); } 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(StringUtils.isNotEmpty(userAnswers.getAnswerContent()) && userAnswers.getAnswerContent().contains(noExport)){ continue; } //判断当前的组件类型是否是图片上传,导出时需要导出图片 if(userAnswers.getOptionType().equals(11)){ reserveSubId = userAnswers.getReserveSubId(); try { if(StringUtils.isNotEmpty(userAnswers.getAnswerContent())){ if(userAnswers.getAnswerContent().contains("_compress")){ userData.add(new URL(userAnswers.getAnswerContent())); } else { URL url=new URL(userAnswers.getAnswerContent().substring(0,userAnswers.getAnswerContent().lastIndexOf("."))+"_compress.jpg"); if(url.getContent()!=null){ userData.add(url); } else { userData.add(userAnswers.getAnswerContent()); } } //userData.add(new File("/workspace/minio/data/files/"+userAnswers.getAnswerContent().substring(userAnswers.getAnswerContent().indexOf("files/")+6))); } else { userData.add(" "); } }catch (Exception e){ userData.add(" "); log.error("导出转换图片失败!"); } continue; } //判断当前组件类型是否签名 if(userAnswers.getOptionType().equals(12)){ reserveSubId = userAnswers.getReserveSubId(); try { //userData.add(new URL("http://image.panzhihua.nhys.cdnhxx.com//idcard/967dbdef3ef3465a9169fbea204f9aa7.jpg")); userData.add(DatatypeConverter.parseBase64Binary(userAnswers.getAnswerContent().substring(userAnswers.getAnswerContent().indexOf(",") + 1))); }catch (Exception e){ userData.add(" "); log.error("导出转换图片失败!"); } continue; } if(userAnswers.getOptionType().equals(1)){ isOldDuo = true; sb.append(userAnswers.getAnswerContent()==null?"无":userAnswers.getAnswerContent() + ","); continue; }else{ if(isOldDuo){ String answer = sb.toString(); userData.add(answer.substring(0, answer.length() - 1)); sb = new StringBuffer(); } 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; } }