From 5a8a90c095280fbd2106869ecd2bad10e01a57a6 Mon Sep 17 00:00:00 2001
From: 101captain <237651143@qq.com>
Date: 星期四, 23 十二月 2021 18:10:22 +0800
Subject: [PATCH] 12/23  大屏修改

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveAnswerContentServiceImpl.java |  300 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 267 insertions(+), 33 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 d8c7e9d..6c37a89 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,5 +1,23 @@
 package com.panzhihua.service_community.service.impl;
 
+import java.math.BigDecimal;
+import java.net.URL;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+import javax.annotation.Resource;
+import javax.xml.bind.DatatypeConverter;
+
+import com.panzhihua.common.model.vos.community.bigscreen.BigScreenStaticsReserve;
+import com.panzhihua.common.model.vos.community.bigscreen.BigScreenStaticsReserveMonth;
+import com.panzhihua.common.model.vos.community.reserve.HomeQuarantineRegisterExportVO;
+import com.panzhihua.service_community.dao.ComActReserveRecordMapper;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -9,25 +27,18 @@
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.community.ComActQuestnaireAnswerContentVO;
 import com.panzhihua.common.model.vos.community.ComActQuestnaireSubVO;
-import com.panzhihua.common.model.vos.community.reserve.ComActReserveRecordListVO;
 import com.panzhihua.common.model.vos.community.reserve.ComActReserveRegisterDetailedAnswerVO;
 import com.panzhihua.common.model.vos.community.reserve.ComActReserveRegisterDetailedVO;
+import com.panzhihua.common.model.vos.community.reserve.HomeQuarantineRegisterStatisticsVO;
 import com.panzhihua.common.utlis.DateUtils;
 import com.panzhihua.common.utlis.StringUtils;
 import com.panzhihua.service_community.dao.ComActReserveAnswerContentMapper;
 import com.panzhihua.service_community.dao.ComActReserveSubMapper;
-import com.panzhihua.service_community.model.dos.ComActQuestnaireAnswerContentDO;
-import com.panzhihua.service_community.model.dos.ComActQuestnaireSubDO;
 import com.panzhihua.service_community.model.dos.ComActReserveAnswerContentDO;
 import com.panzhihua.service_community.model.dos.ComActReserveSubDO;
 import com.panzhihua.service_community.service.ComActReserveAnswerContentService;
-import com.panzhihua.service_community.service.ComActReserveSubService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
 
-import javax.annotation.Resource;
-import java.util.*;
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * @auther lyq
@@ -40,30 +51,21 @@
 
     @Resource
     private ComActReserveSubMapper comActReserveSubMapper;
+    @Resource
+    private ComActReserveRecordMapper comActReserveRecordMapper;
 
     /**
      * 导出登记明细数据
-     * @param reserveId 登记id
+     * @param pageReserveRegisterDetailedAdminDTO 登记id
      * @return  登记明细数据
      */
     @Override
-    public R exportRegisterAdmin(Long reserveId){
+    public R exportRegisterAdmin(PageReserveRegisterDetailedAdminDTO pageReserveRegisterDetailedAdminDTO){
         QuestnaireAnswersDTO result = new QuestnaireAnswersDTO();
-
-        //查询题目
-        List<ComActReserveSubDO> list = comActReserveSubMapper.selectList(new QueryWrapper<ComActReserveSubDO>().lambda().eq(ComActReserveSubDO::getReserveId, reserveId));
-        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.selectListByReserve(reserveId);
+        List<ComActQuestnaireAnswerContentVO> vos = this.baseMapper.export(pageReserveRegisterDetailedAdminDTO);
         result.setAnswers(vos);
 
         return R.ok(result);
@@ -76,7 +78,7 @@
      */
     @Override
     public R registerDetailedListAdmin(PageReserveRegisterDetailedAdminDTO detailedAdminDTO){
-        IPage<HashMap<String,Object>> resultPage = new Page<>();
+        IPage<HashMap<String,String>> resultPage = new Page<>();
 
         IPage<ComActReserveRegisterDetailedVO> registerDetailedPage = this.baseMapper.pageRegisterDetailedListAdmin(new Page(detailedAdminDTO.getPageNum(),detailedAdminDTO.getPageSize()),detailedAdminDTO);
         resultPage.setCurrent(registerDetailedPage.getCurrent());
@@ -84,13 +86,15 @@
         resultPage.setSize(registerDetailedPage.getSize());
         resultPage.setPages(registerDetailedPage.getPages());
 
-        List<HashMap<String,Object>> resultMapList = new ArrayList<>();
-        Integer nub = 1;
+        List<HashMap<String,String>> resultMapList = new ArrayList<>();
+        int nub = 1;
         if(!registerDetailedPage.getRecords().isEmpty()){
             for (ComActReserveRegisterDetailedVO registerDetailed:registerDetailedPage.getRecords()) {
                 //渲染序号
-                HashMap<String,Object> map = new HashMap<>();
-                map.put("nub",nub);
+                HashMap<String,String> map = new HashMap<>();
+                map.put("nub",nub + "");
+                //渲染登记时间
+                map.put("time", DateUtils.format(registerDetailed.getCreateAt(),DateUtils.ymdhms_format));
                 //渲染用户昵称
                 map.put("nickName",registerDetailed.getNickName());
                 //查询记录填写答案并装载到数据集中
@@ -100,7 +104,7 @@
                         if(!detailed.getType().equals(5)){
                             if(detailed.getType().equals(1)){
                                 String key = detailed.getReserveSubId() + "";
-                                String value = map.get(key).toString();
+                                String value = map.get(key);
                                 if(StringUtils.isNotEmpty(value)){
                                     value = value + "," + detailed.getAnswerContent();
                                 }else{
@@ -114,9 +118,7 @@
                     }
                 }
                 //渲染登记流水号
-                map.put("id",registerDetailed.getId());
-                //渲染登记时间
-                map.put("time", DateUtils.format(registerDetailed.getCreateAt(),DateUtils.ymdhms_format));
+                map.put("id",registerDetailed.getId() + "");
                 resultMapList.add(map);
                 nub++;
             }
@@ -124,4 +126,236 @@
         resultPage.setRecords(resultMapList);
         return R.ok(resultPage);
     }
+
+    /**
+     * 分页查询居家隔离统计
+     * @param detailedAdminDTO
+     * @return
+     */
+    @Override
+    public R pageRegisterHomeQuarantine(PageReserveRegisterDetailedAdminDTO detailedAdminDTO) {
+        IPage<HashMap<String,String>> resultPage = new Page<>();
+
+        Page page = new Page(detailedAdminDTO.getPageNum(), detailedAdminDTO.getPageSize());
+        IPage<String> statisticsVOIPage = this.baseMapper.pageRegisterHomeQuarantine(page, detailedAdminDTO);
+
+        resultPage.setCurrent(statisticsVOIPage.getCurrent());
+        resultPage.setTotal(statisticsVOIPage.getTotal());
+        resultPage.setSize(statisticsVOIPage.getSize());
+        resultPage.setPages(statisticsVOIPage.getPages());
+
+        List<String> records = statisticsVOIPage.getRecords();
+        List<HashMap<String,String>> resultMapList = new ArrayList<>();
+        if (!records.isEmpty()) {
+            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+            int nub = 1;
+            for (String record : records) {
+                //渲染序号
+                HashMap<String,String> map = new HashMap<>();
+                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 -> {
+                    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());
+                        }
+                    } else {
+                        map.put(e.getReserveSubId() + "", e.getAnswerContent());
+                    }
+                });
+                map.put("isolation", conditions.toString());
+                resultMapList.add(map);
+                nub++;
+            }
+        }
+        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);
+    }
+
+    @Override
+    public R bigScreenStaticsReserve(Long communityId) {
+        BigScreenStaticsReserve bigScreenStaticsReserve=comActReserveRecordMapper.biggestScreen(communityId);
+        bigScreenStaticsReserve.setReservePercent(BigDecimal.valueOf(bigScreenStaticsReserve.getReserveCount()*100d/ bigScreenStaticsReserve.getCount()).setScale(2,BigDecimal.ROUND_HALF_UP));
+        bigScreenStaticsReserve.setFirePercent(BigDecimal.valueOf(bigScreenStaticsReserve.getFireCount()*100d/ bigScreenStaticsReserve.getCount()).setScale(2,BigDecimal.ROUND_HALF_UP));
+        bigScreenStaticsReserve.setHomePercent(BigDecimal.valueOf(bigScreenStaticsReserve.getHomeCount()*100d/ bigScreenStaticsReserve.getCount()).setScale(2,BigDecimal.ROUND_HALF_UP));
+        bigScreenStaticsReserve.setGasPercent(BigDecimal.valueOf(bigScreenStaticsReserve.getGasCount()*100d/ bigScreenStaticsReserve.getCount()).setScale(2,BigDecimal.ROUND_HALF_UP));
+        List<BigScreenStaticsReserveMonth> bigScreenStaticsReserveMonthList=this.getPoints();
+        bigScreenStaticsReserveMonthList.forEach(bigScreenStaticsReserveMonth -> {
+            BigScreenStaticsReserveMonth bigScreenStaticsReserveMonth1=comActReserveRecordMapper.biggestScreenMonth(communityId,bigScreenStaticsReserveMonth.getX());
+            bigScreenStaticsReserveMonth.setCount(bigScreenStaticsReserveMonth1.getCount());
+            bigScreenStaticsReserveMonth.setReserveCount(bigScreenStaticsReserveMonth1.getReserveCount());
+            bigScreenStaticsReserveMonth.setFireCount(bigScreenStaticsReserveMonth1.getFireCount());
+            bigScreenStaticsReserveMonth.setGasCount(bigScreenStaticsReserveMonth1.getGasCount());
+            bigScreenStaticsReserveMonth.setHomeCount(bigScreenStaticsReserveMonth1.getHomeCount());
+        });
+        bigScreenStaticsReserve.setBigScreenStaticsReserveMonthList(bigScreenStaticsReserveMonthList);
+        return R.ok(bigScreenStaticsReserve);
+    }
+
+    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;
+    }
+
+    public List<BigScreenStaticsReserveMonth> getPoints(){
+        List<BigScreenStaticsReserveMonth> bigScreenStaticsReserveMonths=new ArrayList<>();
+        String nowMonth=DateUtils.getDateFormatString(new Date(),"MM");
+        String nowYear=DateUtils.getDateFormatString(new Date(),"yyyy");
+        String nowYearMonth=DateUtils.getDateFormatString(new Date(),"yyyyMM");
+        if(Integer.parseInt(nowYearMonth)<202212){
+            for(int i=9;i<=12;i++){
+                String aDate="";
+                if(i<10){
+                    aDate = "0"+i;
+                }
+                else {
+                    aDate=i+"";
+                }
+                BigScreenStaticsReserveMonth bigScreenStaticsReserveMonth=new BigScreenStaticsReserveMonth();
+                bigScreenStaticsReserveMonth.setX(aDate);
+                bigScreenStaticsReserveMonths.add(bigScreenStaticsReserveMonth);
+            }
+        }
+        if(Integer.parseInt(nowYear)>2021){
+            for(int i=1;i<=Integer.parseInt(nowMonth);i++){
+                if(bigScreenStaticsReserveMonths.size()>=12){
+                    bigScreenStaticsReserveMonths.remove(0);
+                }
+                String aDate="";
+                if(i<10){
+                    aDate = "0"+i;
+                }
+                else {
+                    aDate=i+"";
+                }
+                BigScreenStaticsReserveMonth bigScreenStaticsReserveMonth=new BigScreenStaticsReserveMonth();
+                bigScreenStaticsReserveMonth.setX(aDate);
+                bigScreenStaticsReserveMonths.add(bigScreenStaticsReserveMonth);
+            }
+        }
+        return bigScreenStaticsReserveMonths;
+    }
+
 }

--
Gitblit v1.7.1