package com.panzhihua.common.utlis; import cn.hutool.core.date.DateUtil; import com.panzhihua.common.model.vos.community.ComActQuestnaireAnswerContentVO; import lombok.extern.slf4j.Slf4j; import javax.xml.bind.DatatypeConverter; import java.net.URL; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; /** * @author zzj */ @Slf4j public class HomeQuarantineUtil { /** * 数据转换--登记明细用户填写答案导出数据格式转换 * * @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; Integer count=0; StringBuffer conditions=new StringBuffer(); Boolean isOldDuo = false; StringBuffer sb = new StringBuffer(); if (answerContentVOList != null && answerContentVOList.size() > 0) { for (ComActQuestnaireAnswerContentVO userAnswers : answerContentVOList) { if(count%16==0){ conditions.append(DateUtils.format(userAnswers.getTime(),new SimpleDateFormat("yyyy-MM-dd")) +" "+"上午体温"+userAnswers.getAnswerContent()+"℃"+"\n"); count++; continue; } if(count%16==1){ conditions.append(DateUtils.format(userAnswers.getTime(),new SimpleDateFormat("yyyy-MM-dd"))+" "+"下午体温"+userAnswers.getAnswerContent()+"℃"+"\n"); count++; continue; } if(count%16==2){ conditions.append(DateUtils.format(userAnswers.getTime(),new SimpleDateFormat("yyyy-MM-dd"))+" "+"当日隔离情况:"+userAnswers.getAnswerContent()+"\n"); conditions.append("————————"+"\n"); count++; continue; } count++; //判断是文字描述直接跳过 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; } for(List result:resultList){ if(result.get(4).equals(userData.get(4))){ String condition=result.get(result.size()-1)+userData.get(userData.size()-1).toString(); result.set(result.size()-1,condition); userData.set(userData.size()-1,null); break; } } if(userData.get(userData.size()-1)!=null){ 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 { userData.add(new URL(userAnswers.getAnswerContent())); }catch (Exception e){ userData.add(" "); 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 { userData.add(new URL(userAnswers.getAnswerContent())); }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(count%16==0){ userData.add(conditions.toString()); conditions=new StringBuffer(); } } if(isOldDuo){ String answer = sb.toString(); userData.add(answer.substring(0, answer.length() - 1)); } for(List result:resultList){ if(result.get(4).equals(userData.get(4))){ String condition=result.get(result.size()-1)+userData.get(userData.size()-1).toString(); result.set(result.size()-1,condition); userData.set(userData.size()-1,null); break; } } if(userData.get(userData.size()-1)!=null){ resultList.add(userData); } } return resultList; } }