From bb1a5d4d6988ef5df8029ed6b79546e234e412d5 Mon Sep 17 00:00:00 2001
From: 101captain <237651143@qq.com>
Date: 星期四, 18 十一月 2021 17:50:10 +0800
Subject: [PATCH] 1118修改提交

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveAnswerContentServiceImpl.java |  140 ++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 122 insertions(+), 18 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveAnswerContentServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveAnswerContentServiceImpl.java
index 4bd1922..feeea55 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveAnswerContentServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveAnswerContentServiceImpl.java
@@ -1,12 +1,15 @@
 package com.panzhihua.service_community.service.impl;
 
+import java.net.URL;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
 import javax.annotation.Resource;
+import javax.xml.bind.DatatypeConverter;
 
+import com.panzhihua.common.model.vos.community.reserve.HomeQuarantineRegisterExportVO;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
@@ -52,19 +55,7 @@
     @Override
     public R exportRegisterAdmin(PageReserveRegisterDetailedAdminDTO pageReserveRegisterDetailedAdminDTO){
         QuestnaireAnswersDTO result = new QuestnaireAnswersDTO();
-
-        //查询题目
-        List<ComActReserveSubDO> list = comActReserveSubMapper.selectList(new QueryWrapper<ComActReserveSubDO>().lambda()
-                .eq(ComActReserveSubDO::getReserveId, pageReserveRegisterDetailedAdminDTO.getReserveId()).orderByAsc(ComActReserveSubDO::getCreateAt).orderByAsc(ComActReserveSubDO::getId));
-        List<ComActQuestnaireSubVO> listSubVo = new ArrayList<>();
-        list.forEach(subDo -> {
-            if(!subDo.getType().equals(5)){
-                ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO();
-                BeanUtils.copyProperties(subDo, comActQuestnaireSubVO);
-                listSubVo.add(comActQuestnaireSubVO);
-            }
-        });
-        result.setSubs(listSubVo);
+        result.setSubs(retrieveQuestnaireSub(pageReserveRegisterDetailedAdminDTO));
 
         //查询用户回答
         List<ComActQuestnaireAnswerContentVO> vos = this.baseMapper.export(pageReserveRegisterDetailedAdminDTO);
@@ -157,23 +148,35 @@
                 map.put("nub", nub + "");
                 List<HomeQuarantineRegisterStatisticsVO> statisticsList = this.baseMapper.selectStatistics(detailedAdminDTO.getReserveId(), record);
                 StringBuffer conditions = new StringBuffer();
+                //渲染首次登记时间
+                map.put("time", DateUtils.format(statisticsList.get(0).getCreateAt(), DateUtils.ymdhms_format));
                 statisticsList.forEach(e -> {
-                    //渲染登记时间
-                    map.put("time", DateUtils.format(e.getCreateAt(), DateUtils.ymdhms_format));
                     String reserveSubContent = e.getReserveSubContent();
                     String dateString = dateFormat.format(e.getCreateAt());
                     if (reserveSubContent.contains("上午体温")) {
-                        if (conditions.indexOf(dateString + " " + "上午体温") == -1) {
+                        int index = conditions.indexOf(dateString + " " + "上午体温");
+                        if (index == -1) {
                             conditions.append(dateString + " " + "上午体温:" + e.getAnswerContent() + "℃" + "\n");
+                        } else {
+                            conditions.replace(index, conditions.indexOf("℃", index),
+                                    dateString + " " + "上午体温:" + e.getAnswerContent());
                         }
                     } else if (reserveSubContent.contains("下午体温")) {
-                        if (conditions.indexOf(dateString + " " + "下午体温") == -1) {
+                        int index = conditions.indexOf(dateString + " " + "下午体温");
+                        if (index == -1) {
                             conditions.append(dateString + " " + "下午体温:" + e.getAnswerContent() + "℃" + "\n");
+                        } else {
+                            conditions.replace(index, conditions.indexOf("℃", index),
+                                    dateString + " " + "下午体温:" + e.getAnswerContent());
                         }
                     } else if (reserveSubContent.contains("隔离情况")) {
-                        if (conditions.indexOf(dateString + " " + "当日隔离情况") == -1) {
+                        int index = conditions.indexOf(dateString + " " + "当日隔离情况");
+                        if (index == -1) {
                             conditions.append(dateString + " " + "当日隔离情况:" + e.getAnswerContent() + "\n");
                             conditions.append("————————" + "\n");
+                        } else {
+                            conditions.replace(index, conditions.indexOf("\n", index),
+                                    dateString + " " + "当日隔离情况:" + e.getAnswerContent());
                         }
                     } else {
                         map.put(e.getReserveSubId() + "", e.getAnswerContent());
@@ -187,4 +190,105 @@
         resultPage.setRecords(resultMapList);
         return R.ok(resultPage);
     }
+
+    /**
+     * 居家隔离导出
+     * @param detailedAdminDTO
+     * @return
+     */
+    @Override
+    public R exportHomeQuarantine(PageReserveRegisterDetailedAdminDTO detailedAdminDTO) {
+        HomeQuarantineRegisterExportVO exportVO = new HomeQuarantineRegisterExportVO();
+        //题目
+        exportVO.setSubs(retrieveQuestnaireSub(detailedAdminDTO));
+        //结果数据集合
+        List<List<Object>> resultList = new ArrayList<>();
+        List<String> idCards = this.baseMapper.exportHomeQuarantine(detailedAdminDTO);
+        if (!idCards.isEmpty()) {
+            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+            for (String idCard : idCards) {
+                //构建单个用户数据
+                List<Object> userData = new ArrayList<>();
+                List<HomeQuarantineRegisterStatisticsVO> statisticsList = this.baseMapper.selectStatistics(detailedAdminDTO.getReserveId(), idCard);
+                HomeQuarantineRegisterStatisticsVO firstStatisticsVO = statisticsList.get(0);
+                userData.add(firstStatisticsVO.getNickName());
+                userData.add(DateUtils.format(firstStatisticsVO.getCreateAt(), DateUtils.ymdhms_format));
+                int size = statisticsList.size();
+                List<HomeQuarantineRegisterStatisticsVO> lastStatisticsVOList = statisticsList.subList(size - 13, size);
+                for (HomeQuarantineRegisterStatisticsVO statisticsVO : lastStatisticsVOList) {
+                    //判断当前的组件类型是否是图片上传,导出时需要导出图片
+                    if (statisticsVO.getOptionType().equals(11)) {
+                        try {
+                            userData.add(new URL(statisticsVO.getAnswerContent()));
+                        } catch (Exception e) {
+                            userData.add(" ");
+                            log.error("导出转换图片失败!");
+                        }
+                        continue;
+                    }
+                    //判断当前组件类型是否签名
+                    if (statisticsVO.getOptionType().equals(12)) {
+                        try {
+                            userData.add(DatatypeConverter.parseBase64Binary(statisticsVO.getAnswerContent().substring(statisticsVO.getAnswerContent().indexOf(",") + 1)));
+                        } catch (Exception e) {
+                            userData.add(" ");
+                            log.error("导出转换图片失败!");
+                        }
+                        continue;
+                    }
+                    userData.add(statisticsVO.getAnswerContent());
+                }
+                StringBuffer conditions = new StringBuffer();
+                statisticsList.forEach(e -> {
+                    String reserveSubContent = e.getReserveSubContent();
+                    String dateString = dateFormat.format(e.getCreateAt());
+                    if (reserveSubContent.contains("上午体温")) {
+                        int index = conditions.indexOf(dateString + " " + "上午体温");
+                        if (index == -1) {
+                            conditions.append(dateString + " " + "上午体温:" + e.getAnswerContent() + "℃" + "\n");
+                        } else {
+                            conditions.replace(index, conditions.indexOf("℃", index),
+                                    dateString + " " + "上午体温:" + e.getAnswerContent());
+                        }
+                    } else if (reserveSubContent.contains("下午体温")) {
+                        int index = conditions.indexOf(dateString + " " + "下午体温");
+                        if (index == -1) {
+                            conditions.append(dateString + " " + "下午体温:" + e.getAnswerContent() + "℃" + "\n");
+                        } else {
+                            conditions.replace(index, conditions.indexOf("℃", index),
+                                    dateString + " " + "下午体温:" + e.getAnswerContent());
+                        }
+                    } else if (reserveSubContent.contains("隔离情况")) {
+                        int index = conditions.indexOf(dateString + " " + "当日隔离情况");
+                        if (index == -1) {
+                            conditions.append(dateString + " " + "当日隔离情况:" + e.getAnswerContent() + "\n");
+                            conditions.append("————————" + "\n");
+                        } else {
+                            conditions.replace(index, conditions.indexOf("\n", index),
+                                    dateString + " " + "当日隔离情况:" + e.getAnswerContent());
+                        }
+                    }
+                });
+                userData.add(conditions.toString());
+                resultList.add(userData);
+            }
+        }
+        exportVO.setDataList(resultList);
+        return R.ok(exportVO);
+    }
+
+    private List<ComActQuestnaireSubVO> retrieveQuestnaireSub(PageReserveRegisterDetailedAdminDTO detailedAdminDTO) {
+        //查询题目
+        List<ComActReserveSubDO> list = comActReserveSubMapper.selectList(new QueryWrapper<ComActReserveSubDO>().lambda()
+                .eq(ComActReserveSubDO::getReserveId, detailedAdminDTO.getReserveId()).orderByAsc(ComActReserveSubDO::getCreateAt).orderByAsc(ComActReserveSubDO::getId));
+        List<ComActQuestnaireSubVO> listSubVo = new ArrayList<>();
+        list.forEach(subDo -> {
+            if(!subDo.getType().equals(5)){
+                ComActQuestnaireSubVO comActQuestnaireSubVO = new ComActQuestnaireSubVO();
+                BeanUtils.copyProperties(subDo, comActQuestnaireSubVO);
+                listSubVo.add(comActQuestnaireSubVO);
+            }
+        });
+        return listSubVo;
+    }
 }

--
Gitblit v1.7.1