From 86c38d586645e8ed14c32e1a69faf5540a27ff61 Mon Sep 17 00:00:00 2001
From: 张天森 <1292933220@qq.com>
Date: 星期六, 08 十月 2022 15:01:28 +0800
Subject: [PATCH] update
---
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveAnswerContentServiceImpl.java | 394 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 389 insertions(+), 5 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 dc38ae9..1ba4fac 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,11 +1,45 @@
package com.panzhihua.service_community.service.impl;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.panzhihua.service_community.dao.ComActReserveAnswerContentMapper;
-import com.panzhihua.service_community.model.dos.ComActReserveAnswerContentDO;
-import com.panzhihua.service_community.service.ComActReserveAnswerContentService;
-import lombok.extern.slf4j.Slf4j;
+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.*;
+import com.panzhihua.service_community.dao.ComActReserveMapper;
+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;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.common.model.dtos.community.QuestnaireAnswersDTO;
+import com.panzhihua.common.model.dtos.community.reserve.PageReserveRegisterDetailedAdminDTO;
+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.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.ComActReserveAnswerContentDO;
+import com.panzhihua.service_community.model.dos.ComActReserveSubDO;
+import com.panzhihua.service_community.service.ComActReserveAnswerContentService;
+
+import lombok.extern.slf4j.Slf4j;
/**
* @auther lyq
@@ -16,4 +50,354 @@
@Service
public class ComActReserveAnswerContentServiceImpl extends ServiceImpl<ComActReserveAnswerContentMapper, ComActReserveAnswerContentDO> implements ComActReserveAnswerContentService {
+ @Resource
+ private ComActReserveSubMapper comActReserveSubMapper;
+ @Resource
+ private ComActReserveRecordMapper comActReserveRecordMapper;
+ @Resource
+ private ComActReserveMapper comActReserveMapper;
+
+ /**
+ * 导出登记明细数据
+ * @param pageReserveRegisterDetailedAdminDTO 登记id
+ * @return 登记明细数据
+ */
+ @Override
+ public R exportRegisterAdmin(PageReserveRegisterDetailedAdminDTO pageReserveRegisterDetailedAdminDTO){
+ QuestnaireAnswersDTO result = new QuestnaireAnswersDTO();
+ result.setSubs(retrieveQuestnaireSub(pageReserveRegisterDetailedAdminDTO));
+
+ //查询用户回答
+ List<ComActQuestnaireAnswerContentVO> vos = this.baseMapper.export(pageReserveRegisterDetailedAdminDTO);
+ vos.forEach(vo->{
+ if(vo.getType()==4){
+ vo.setAnswerContent(vo.getAnswerContent().replaceAll("(?<=\\w{3})\\w(?=\\w{4})", "*"));
+ }
+ });
+ result.setAnswers(vos);
+
+ return R.ok(result);
+ }
+
+ /**
+ * 分页查询登记明细列表
+ * @param detailedAdminDTO 请求参数
+ * @return 登记明细列表
+ */
+ @Override
+ public R registerDetailedListAdmin(PageReserveRegisterDetailedAdminDTO detailedAdminDTO){
+ IPage<HashMap<String,String>> resultPage = new Page<>();
+
+ IPage<ComActReserveRegisterDetailedVO> registerDetailedPage = this.baseMapper.pageRegisterDetailedListAdmin(new Page(detailedAdminDTO.getPageNum(),detailedAdminDTO.getPageSize()),detailedAdminDTO);
+ resultPage.setCurrent(registerDetailedPage.getCurrent());
+ resultPage.setTotal(registerDetailedPage.getTotal());
+ resultPage.setSize(registerDetailedPage.getSize());
+ resultPage.setPages(registerDetailedPage.getPages());
+
+ List<HashMap<String,String>> resultMapList = new ArrayList<>();
+ int nub = 1;
+ if(!registerDetailedPage.getRecords().isEmpty()){
+ for (ComActReserveRegisterDetailedVO registerDetailed:registerDetailedPage.getRecords()) {
+ //渲染序号
+ 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());
+ //查询记录填写答案并装载到数据集中
+ List<ComActReserveRegisterDetailedAnswerVO> registerDetailedAnswerList = this.baseMapper.getRegisterDetailedAnswerList(registerDetailed.getId());
+ if(!registerDetailedAnswerList.isEmpty()){
+ for (ComActReserveRegisterDetailedAnswerVO detailed:registerDetailedAnswerList) {
+ if(detailed.getType()==4){
+ detailed.setAnswerContent(detailed.getAnswerContent().replaceAll("(?<=\\w{3})\\w(?=\\w{4})", "*"));
+ }
+ if(!detailed.getType().equals(5)){
+ if(detailed.getType().equals(1)){
+ String key = detailed.getReserveSubId() + "";
+ String value = map.get(key);
+ if(StringUtils.isNotEmpty(value)){
+ value = value + "," + detailed.getAnswerContent();
+ }else{
+ value = detailed.getAnswerContent();
+ }
+ map.put(key,value);
+ }else{
+ map.put(detailed.getReserveSubId() + "",detailed.getAnswerContent());
+ }
+ }
+
+ }
+ }
+ //渲染登记流水号
+ map.put("id",registerDetailed.getId() + "");
+ resultMapList.add(map);
+ nub++;
+ }
+ }
+ resultPage.setRecords(resultMapList);
+ return R.ok(resultPage);
+ }
+
+ @Override
+ public R registerDetailedListAdminExport(PageReserveRegisterDetailedAdminDTO detailedAdminDTO) {
+ String communityPhone=comActReserveMapper.selectCommunityPhoneByReserveId(detailedAdminDTO.getReserveId());
+ List<ComActReserveRegisterDetailedVO> comActReserveRegisterDetailedVOS = this.baseMapper.pageRegisterDetailedListAdminExport(detailedAdminDTO);
+ if(!comActReserveRegisterDetailedVOS.isEmpty()){
+ List<ReservePdfExportVO> reservePdfExportVOS=new ArrayList<>();
+ comActReserveRegisterDetailedVOS.forEach(comActReserveRegisterDetailedVO -> {
+ List<ComActReserveRegisterDetailedAnswerVO> registerDetailedAnswerList = this.baseMapper.getRegisterDetailedAnswerList(comActReserveRegisterDetailedVO.getId());
+ if(!registerDetailedAnswerList.isEmpty()){
+ ReservePdfExportVO reservePdfExportVO=new ReservePdfExportVO();
+ reservePdfExportVO.setAddress(registerDetailedAnswerList.get(0).getAnswerContent());
+ reservePdfExportVO.setSign(registerDetailedAnswerList.get(1).getAnswerContent());
+ if(detailedAdminDTO.getPdfType()==1){
+ reservePdfExportVO.setTime(registerDetailedAnswerList.get(2).getAnswerContent());
+ }
+ if(detailedAdminDTO.getPdfType()==2){
+ reservePdfExportVO.setPhone(registerDetailedAnswerList.get(2).getAnswerContent());
+ reservePdfExportVO.setTime(registerDetailedAnswerList.get(3).getAnswerContent());
+ reservePdfExportVO.setCommunityPhone(communityPhone);
+ }
+ reservePdfExportVOS.add(reservePdfExportVO);
+ }
+ });
+ return R.ok(reservePdfExportVOS);
+ }
+ return R.ok();
+ }
+
+ /**
+ * 分页查询居家隔离统计
+ * @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.getYear());
+ 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.setYear("2021");
+ 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);
+ bigScreenStaticsReserveMonth.setYear(nowYear);
+ bigScreenStaticsReserveMonths.add(bigScreenStaticsReserveMonth);
+ }
+ }
+ return bigScreenStaticsReserveMonths;
+ }
+
}
--
Gitblit v1.7.1