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<List<Object>> ReserveData(List<ComActQuestnaireAnswerContentVO> answerContentVOList) {
|
//结果数据集合
|
List<List<Object>> resultList = new ArrayList<>();
|
//构建单个用户数据
|
List<Object> 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<Object> 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<Object> 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;
|
}
|
}
|