From b2fce0dc7dc4ea5dec9792a2bc3ceb9d33d6e07b Mon Sep 17 00:00:00 2001
From: lidongdong <1459917685@qq.com>
Date: 星期一, 04 九月 2023 13:59:52 +0800
Subject: [PATCH] 修改后台社区动态加载不出来

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java |  971 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 916 insertions(+), 55 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java
index acded43..812e50f 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java
@@ -1,27 +1,50 @@
 package com.panzhihua.service_community.service.impl;
 
-import cn.hutool.core.date.DateUtil;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.panzhihua.common.model.dtos.community.PageUserReserveDTO;
-import com.panzhihua.common.model.vos.R;
-import com.panzhihua.common.model.vos.community.ComActReserveCommitVO;
-import com.panzhihua.common.model.vos.community.questnaire.QuestnaiteSubVO;
-import com.panzhihua.service_community.dao.*;
-import com.panzhihua.service_community.model.dos.*;
-import com.panzhihua.service_community.service.ComActReserveAnswerContentService;
-import com.panzhihua.service_community.service.ComActReserveService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.Resource;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+
+import javax.annotation.Resource;
+
+import com.panzhihua.service_community.util.RSAUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.alibaba.fastjson.JSON;
+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.google.common.collect.Lists;
+import com.panzhihua.common.model.dtos.community.OperationDetailDTO;
+import com.panzhihua.common.model.dtos.community.PageUserReserveDTO;
+import com.panzhihua.common.model.dtos.community.reserve.*;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComActReserveCommitVO;
+import com.panzhihua.common.model.vos.community.bigscreen.IndexBackReserve;
+import com.panzhihua.common.model.vos.community.bigscreen.IndexReserve;
+import com.panzhihua.common.model.vos.community.questnaire.QuestnaiteSubSelectionVO;
+import com.panzhihua.common.model.vos.community.questnaire.QuestnaiteSubVO;
+import com.panzhihua.common.model.vos.community.reserve.*;
+import com.panzhihua.common.utlis.Snowflake;
+import com.panzhihua.common.utlis.StringUtils;
+import com.panzhihua.service_community.dao.*;
+import com.panzhihua.service_community.model.dos.*;
+import com.panzhihua.service_community.service.ComActReserveAnswerContentService;
+import com.panzhihua.service_community.service.ComActReserveRecordService;
+import com.panzhihua.service_community.service.ComActReserveService;
+import com.panzhihua.service_community.service.ComActReserveSubSelectionService;
+
+import cn.hutool.core.date.DateUtil;
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * @auther lyq
@@ -43,23 +66,55 @@
     private ComActReserveRecordMapper comActReserveRecordMapper;
     @Resource
     private ComActReserveOperationRecordMapper comActReserveOperationRecordMapper;
+    @Resource
+    private ComActReserveSubSelectionService comActReserveSubSelectionService;
+    @Resource
+    private ComActReserveRecordService comActReserveRecordService;
+    @Resource
+    private ComMngPopulationDAO comMngPopulationDAO;
+    @Resource
+    private ComMngPopulationHouseDAO comMngPopulationHouseDAO;
+    @Resource
+    private ComMngPopulationCommunityTagsDAO comMngPopulationCommunityTagsDAO;
+    @Resource
+    private ComMngPopulationHouseUserDAO comMngPopulationHouseUserDAO;
+    @Value("${domain.aesKey:}")
+    private String aesKey;
 
     private final static String COMMIT="用户已提交";
     @Override
     @Transactional
     public R commit(ComActReserveCommitVO comActReserveCommitVO) {
         if(comActReserveCommitVO!=null){
+            ComMngPopulationHouseDO comMngPopulationHouseDO=new ComMngPopulationHouseDO();
             Long userId=comActReserveCommitVO.getUserId();
             Date nowDate=DateUtil.date();
+            //查询预约登记记录
             ComActReserveDO comActReserveDO=comActReserveMapper.selectById(comActReserveCommitVO.getId());
             if(comActReserveDO!=null){
+                //查询当前用户是否已预约并判断是否能继续预约
+                if(comActReserveDO.getJoinAllCount()!=0){
+                    Integer count=comActReserveRecordMapper.selectCount(new QueryWrapper<ComActReserveRecordDO>()
+                            .eq("reserve_id",comActReserveCommitVO.getId())
+                            .eq("status",ComActReserveRecordDO.status.cg));
+                    if(count>=comActReserveDO.getJoinAllCount()){
+                        return R.fail("预约已上限");
+                    }
+                }
+                if(comActReserveCommitVO.getRecordId()!=null){
+                    comActReserveRecordMapper.deleteById(comActReserveCommitVO.getRecordId());
+                    comActReserveDO.setJoinCount(comActReserveDO.getJoinCount()-1);
+                }
                 List<ComActReserveRecordDO> list=comActReserveRecordMapper.selectList(new QueryWrapper<ComActReserveRecordDO>().eq("reserve_id",comActReserveCommitVO.getId()).eq("user_id",comActReserveCommitVO.getUserId()).in("status",1,2,3));
-                if(!list.isEmpty()&&comActReserveDO.getIsRepeat()==ComActReserveDO.isRepeat.no){
+                if(!list.isEmpty()&&list.size()>1&&comActReserveDO.getIsRepeat()==ComActReserveDO.isRepeat.no){
                     return R.fail("提交失败,不可重复预约");
                 }
                 else {
                     List<QuestnaiteSubVO> questnaiteSubVOS = JSON.parseArray(comActReserveCommitVO.getJsonObject(),QuestnaiteSubVO.class);
                     if(!questnaiteSubVOS.isEmpty()){
+                        String idCard="";
+                        String houseId="";
+                        String phone="";
                         Long questId=comActReserveCommitVO.getId();
                         List<ComActReserveAnswerContentDO> answerContentList=new ArrayList<>();
                         for(QuestnaiteSubVO questnaiteSub:questnaiteSubVOS){
@@ -73,7 +128,7 @@
 
                             Long queSubId = questnaireSubDO.getId();
                             //根据上传的类型查询不同的题目选项
-                            if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.danxuan)){
+                            if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.danxuan) || questnaiteSub.getType().equals(QuestnaiteSubVO.type.imgselect)){
 
                                 //单选题处理
                                 ComActReserveSubSelectionDO subSelectionDO = comActReserveSubSelectionMapper.selectOne(new QueryWrapper<ComActReserveSubSelectionDO>()
@@ -117,60 +172,866 @@
                                     answerContentDO.setAnswerContent(subSelectionDO.getContent());
                                     answerContentList.add(answerContentDO);
                                 }
-                            }else if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.wenda)){
+                            }
+                            else{
+                                //文字描述不做处理
+                                if(!questnaiteSub.getType().equals(QuestnaiteSubVO.type.describe)&&!questnaiteSub.getType().equals(QuestnaiteSubVO.type.address)){
+                                    //问答题处理
+                                    String values = questnaiteSub.getValues();
+                                    ComActReserveAnswerContentDO answerContentDO = new ComActReserveAnswerContentDO();
+                                    answerContentDO.setUserId(userId);
+                                    answerContentDO.setCreateAt(nowDate);
+                                    answerContentDO.setCreateBy(userId);
+                                    answerContentDO.setReserveSubId(queSubId);
+                                    answerContentDO.setType(2);
+                                    answerContentDO.setAnswerContent(values);
+                                    answerContentList.add(answerContentDO);
+                                }
+                                if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.card)){
+                                    idCard=questnaiteSub.getValues();
+                                }
+                                if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.phone)){
+                                    phone=questnaiteSub.getValues();
+                                }
+                                if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.address)){
+                                    houseId=questnaiteSub.getValues();
+                                    comMngPopulationHouseDO=comMngPopulationHouseDAO.selectById(houseId);
+                                    ComActReserveAnswerContentDO answerContentDO = new ComActReserveAnswerContentDO();
+                                    answerContentDO.setUserId(userId);
+                                    answerContentDO.setCreateAt(nowDate);
+                                    answerContentDO.setCreateBy(userId);
+                                    answerContentDO.setReserveSubId(queSubId);
+                                    answerContentDO.setType(2);
+                                    if(comMngPopulationHouseDO!=null){
+                                        answerContentDO.setAnswerContent(comMngPopulationHouseDO.getAddress());
+                                    }
+                                    else {
+                                        answerContentDO.setAnswerContent("");
+                                    }
+                                    answerContentList.add(answerContentDO);
+                                }
+                            }
+                        }
+                        if(!answerContentList.isEmpty()){
+                            //判断实有人口情况
+                            if(StringUtils.isNotEmpty(idCard)&&StringUtils.isNotEmpty(houseId)){
+                                Integer count=comMngPopulationDAO.selectCount(new QueryWrapper<ComMngPopulationDO>().lambda().eq(ComMngPopulationDO::getCardNoStr,idCard));
+                                if(count==0){
+                                    ComMngPopulationDO comMngPopulationDO=savePopulation(idCard);
+                                    if(comMngPopulationHouseDO!=null){
+                                        comMngPopulationDO.setId(Snowflake.getId());
+                                        comMngPopulationDO.setAddress(comMngPopulationHouseDO.getAddress());
+                                        comMngPopulationDO.setActId(comMngPopulationHouseDO.getCommunityId());
+                                        comMngPopulationDO.setStreetId(comMngPopulationHouseDO.getStreetId());
+                                        comMngPopulationDO.setVillageId(comMngPopulationHouseDO.getVillageId());
+                                        comMngPopulationDO.setHouseId(comMngPopulationHouseDO.getId());
+                                        comMngPopulationDO.setOutOrLocal(1);
+                                        comMngPopulationDO.setPhone(phone);
+                                        comMngPopulationDO.setName(comActReserveCommitVO.getName());
+                                        comMngPopulationDO.setRoad(comMngPopulationHouseDO.getAlley());
+                                        comMngPopulationDO.setDoorNo(comMngPopulationHouseDO.getHouseNum());
+                                        comMngPopulationDO.setFloor(comMngPopulationHouseDO.getFloor());
+                                        comMngPopulationDO.setUnitNo(comMngPopulationHouseDO.getUnitNo());
+                                        comMngPopulationDO.setHouseNo(comMngPopulationHouseDO.getHouseNo());
+                                        comMngPopulationDAO.insert(comMngPopulationDO);
+                                        ComMngPopulationCommunityTagsDO comMngPopulationCommunityTagsDO=new ComMngPopulationCommunityTagsDO();
+                                        comMngPopulationCommunityTagsDO.setCommunityId(comMngPopulationDO.getActId());
+                                        comMngPopulationCommunityTagsDO.setPopulationId(comMngPopulationDO.getId());
+                                        comMngPopulationCommunityTagsDO.setId(Snowflake.getId());
+                                        comMngPopulationCommunityTagsDO.setCreateAt(new Date());
+                                        comMngPopulationCommunityTagsDAO.insert(comMngPopulationCommunityTagsDO);
+                                        ComMngPopulationHouseUserDO comMngPopulationHouseUserDO=new ComMngPopulationHouseUserDO();
+                                        comMngPopulationHouseUserDO.setId(Snowflake.getId());
+                                        comMngPopulationHouseUserDO.setPopulId(comMngPopulationDO.getId());
+                                        comMngPopulationHouseUserDO.setHouseId(Long.parseLong(houseId));
+                                        comMngPopulationHouseUserDO.setRelation(1);
+                                        comMngPopulationHouseUserDO.setRelationId(1);
+                                        comMngPopulationHouseUserDO.setResidence(1);
+                                        comMngPopulationHouseUserDO.setCreateAt(new Date());
+                                        comMngPopulationHouseUserDAO.insert(comMngPopulationHouseUserDO);
+                                    }
+                                }
+                            }
+                            //更新回答用户数量
+                            Integer joinCount = comActReserveDO.getJoinCount();
+                            comActReserveDO.setJoinCount(joinCount != null ? joinCount + 1 : 1);
+                            comActReserveMapper.updateById(comActReserveDO);
+                            //新增用户答题记录
+                            ComActReserveRecordDO userAnswerDO = new ComActReserveRecordDO();
+                            userAnswerDO.setContent(comActReserveCommitVO.getContent());
+                            userAnswerDO.setName(comActReserveCommitVO.getName());
+                            userAnswerDO.setCommunityId(comActReserveCommitVO.getCommunityId());
+                            userAnswerDO.setPhone(comActReserveCommitVO.getPhone());
+                            userAnswerDO.setReserveId(questId);
+                            userAnswerDO.setReserveTime(comActReserveCommitVO.getReserveTime());
+                            userAnswerDO.setUserId(userId);
+                            userAnswerDO.setType(comActReserveCommitVO.getType());
+                            userAnswerDO.setCreateAt(nowDate);
+                            userAnswerDO.setJsonObject(comActReserveCommitVO.getJsonObject());
+                            if(comActReserveCommitVO.getType()==ComActReserveRecordDO.type.yy){
+                                userAnswerDO.setStatus(ComActReserveRecordDO.status.dcl);
+                            }
+                            else {
+                                userAnswerDO.setStatus(ComActReserveRecordDO.status.cg);
+                            }
+                            comActReserveRecordService.saveOrUpdate(userAnswerDO);
+
+                            //给答题记录赋值预约登记记录id
+                            answerContentList.forEach(answerContent -> {
+                                answerContent.setReserveRecordId(userAnswerDO.getId());
+                            });
+                            comActReserveAnswerContentService.saveBatch(answerContentList);
+                            //新增用户操作记录
+                            ComActReserveOperationRecordDO comActReserveOperationRecordDO=new ComActReserveOperationRecordDO();
+                            comActReserveOperationRecordDO.setReserveId(comActReserveCommitVO.getId());
+                            comActReserveOperationRecordDO.setReserveRecordId(userAnswerDO.getId());
+                            comActReserveOperationRecordDO.setType(ComActReserveOperationRecordDO.type.br);
+                            comActReserveOperationRecordDO.setCreateAt(DateUtil.date());
+                            comActReserveOperationRecordDO.setReserveTime(comActReserveCommitVO.getReserveTime());
+                            comActReserveOperationRecordDO.setReserveContent(COMMIT);
+                            comActReserveOperationRecordDO.setPhone(comActReserveCommitVO.getPhone());
+                            comActReserveOperationRecordDO.setStatus(ComActReserveOperationRecordDO.status.ytj);
+                            comActReserveOperationRecordDO.setUserId(comActReserveCommitVO.getUserId());
+                            comActReserveOperationRecordDO.setRemark(comActReserveCommitVO.getContent());
+                            comActReserveOperationRecordMapper.insert(comActReserveOperationRecordDO);
+                        return R.ok("提交成功");
+                        }
+                    }
+                }
+
+            }
+        }
+        return R.fail("参数错误");
+    }
+
+    @Override
+    public R commitNoToken(ComActReserveCommitVO comActReserveCommitVO) {
+        if(comActReserveCommitVO!=null){
+            ComActReserveDO comActReserveDO=new ComActReserveDO();
+            Date nowDate=DateUtil.date();
+            //查询预约登记记录
+            List<ComActReserveDO> list=comActReserveMapper.selectList(new QueryWrapper<ComActReserveDO>().lambda().eq(ComActReserveDO::getCommunityId,comActReserveCommitVO.getCommunityId()).eq(ComActReserveDO::getTitle,"返攀登记"));
+            if(!list.isEmpty()){
+                comActReserveDO=list.get(0);
+            }
+            comActReserveCommitVO.setId(comActReserveDO.getId());
+            if(comActReserveDO!=null){
+                    List<QuestnaiteSubVO> questnaiteSubVOS = JSON.parseArray(comActReserveCommitVO.getJsonObject(),QuestnaiteSubVO.class);
+                    if(!questnaiteSubVOS.isEmpty()){
+                        Long questId=comActReserveCommitVO.getId();
+                        List<ComActReserveAnswerContentDO> answerContentList=new ArrayList<>();
+                        for(QuestnaiteSubVO questnaiteSub:questnaiteSubVOS){
+                            //查询用户填写题目
+                            ComActReserveSubDO questnaireSubDO = comActReserveSubMapper.selectOne(new QueryWrapper<ComActReserveSubDO>().lambda()
+                                    .eq(ComActReserveSubDO::getReserveId,questId).eq(ComActReserveSubDO::getKey,questnaiteSub.getKey()));
+                            if(questnaireSubDO == null){
+                                log.error("未查询到调查问卷题目,题目名称:" + questnaiteSub.getLabel() + "题目key:" + questnaiteSub.getKey());
+                                continue;
+                            }
+                            Long queSubId = questnaireSubDO.getId();
+                            if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.phone)||questnaiteSub.getType().equals(QuestnaiteSubVO.type.name)||questnaiteSub.getType().equals(QuestnaiteSubVO.type.card)){
+                                try {
+                                    questnaiteSub.setValues(RSAUtils.decrypt(questnaiteSub.getValues(),"MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAJJuFUH/4m9H5hCCzxtd9BxpjWlG9gbejqiJpV0XJKaU1V7xDBJasswxPY7Zc15RoxWClPoKPwKrbWKm49dgBJebJq5xd4sLCSbboxRkKxpRiJHMZ4LJjYa5h9Ei9RyfoUzqGHqH4UrDy3m3IwPiP19cIBqoU50shyQf92ZpcGZhAgMBAAECgYEAiadU8pODoUs82x6tZbPALQmJN4PO+wwznfqv6sA74yGdKECAMazz0oMjtGt1SiCCqFD2jcweCftvvELZg3mvNg1V0vRQRD1ZCA8HDp8DXm20d11K3+RX39tR4KgyyM3HsSEhkUDujMxKIpYjyiB5iEtV7Ja9bZ2fROszq+mUIqUCQQDQQf6vWRMLBqfnDcU77vuDGOhXbjkF2ytLxLW3fbKaW3GWvC3n93zPM+mcvWSXgkl448+jFjpMktm1Vn+w+YX3AkEAs/+bbRbod6AcVbLu8C5E44qDRoRpu+LF7Cphp8tlSAIRjm2yGP5acMWGRUtH9MF2QJYPF0PgDzdmUSVqWnCAZwJBALnSuRri4wAKn1SmT+ALfLZcSiyBODZGeppv2ijw6qWahH8YR+ncRaxoyMFHqPMbmM1akJIXqktbGREaLnPOIb8CQQCdJycJaL3Qa98xR4dr9cm5rF6PO96g5w6M8jfO6ztjUkMHymh7f99wpFRlvaN2Y06edyV315ARWPohEPy5N44zAkBlLuDHLm1TkTTAfdlL5r2OcdjpaJYloTdn05Mp3+J+w1zTX8k6Mz8lFZtLUcoMeTfQ9rm/+u2KwxS8NljtSZWH"));
+                                } catch (Exception e) {
+                                    e.printStackTrace();
+                                }
+                            }
+                            //根据上传的类型查询不同的题目选项
+                            if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.danxuan) || questnaiteSub.getType().equals(QuestnaiteSubVO.type.imgselect)){
+                                //单选题处理
+                                ComActReserveSubSelectionDO subSelectionDO = comActReserveSubSelectionMapper.selectOne(new QueryWrapper<ComActReserveSubSelectionDO>()
+                                        .lambda().eq(ComActReserveSubSelectionDO::getReserveSubId,queSubId).eq(ComActReserveSubSelectionDO::getReserveId,questId)
+                                        .eq(ComActReserveSubSelectionDO::getKey,questnaiteSub.getValues()));
+                                if(subSelectionDO == null){
+                                    log.error("未查询到调查问卷选项,题目名称:" + questnaiteSub.getLabel() + "选项key:" + questnaiteSub.getValues());
+                                    continue;
+                                }
+
+                                ComActReserveAnswerContentDO answerContentDO = new ComActReserveAnswerContentDO();
+                                answerContentDO.setCreateAt(nowDate);
+                                answerContentDO.setReserveSelectionId(subSelectionDO.getId());
+                                answerContentDO.setReserveSubId(queSubId);
+                                answerContentDO.setType(1);
+                                answerContentDO.setChoice(subSelectionDO.getOptionName());
+                                answerContentDO.setAnswerContent(subSelectionDO.getContent());
+                                answerContentList.add(answerContentDO);
+                            }else if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.duoxuan)){
+                                //多选题处理
+                                String values = questnaiteSub.getValues();
+                                String []value = values.split(",");
+                                for (int i = 0; i < value.length; i++) {
+                                    ComActReserveSubSelectionDO subSelectionDO = comActReserveSubSelectionMapper.selectOne(new QueryWrapper<ComActReserveSubSelectionDO>()
+                                            .lambda().eq(ComActReserveSubSelectionDO::getReserveSubId,queSubId).eq(ComActReserveSubSelectionDO::getReserveId,questId)
+                                            .eq(ComActReserveSubSelectionDO::getKey,value[i]));
+                                    if(subSelectionDO == null){
+                                        log.error("未查询到调查问卷选项,题目名称:" + questnaiteSub.getLabel() + "选项key:" + questnaiteSub.getValues());
+                                        continue;
+                                    }
+                                    ComActReserveAnswerContentDO answerContentDO = new ComActReserveAnswerContentDO();
+                                    answerContentDO.setCreateAt(nowDate);
+                                    answerContentDO.setReserveSelectionId(subSelectionDO.getId());
+                                    answerContentDO.setReserveSubId(queSubId);
+                                    answerContentDO.setType(1);
+                                    answerContentDO.setChoice(subSelectionDO.getOptionName());
+                                    answerContentDO.setAnswerContent(subSelectionDO.getContent());
+                                    answerContentList.add(answerContentDO);
+                                }
+                            }else{
+                                //文字描述不做处理
+                                if(!questnaiteSub.getType().equals(QuestnaiteSubVO.type.describe)){
+                                    //问答题处理
+                                    String values = questnaiteSub.getValues();
+                                    ComActReserveAnswerContentDO answerContentDO = new ComActReserveAnswerContentDO();
+                                    answerContentDO.setCreateAt(nowDate);
+                                    answerContentDO.setReserveSubId(queSubId);
+                                    answerContentDO.setType(2);
+                                    answerContentDO.setAnswerContent(values);
+                                    answerContentList.add(answerContentDO);
+                                }
+                            }
+                        }
+                        if(!answerContentList.isEmpty()){
+                            //更新回答用户数量
+                            Integer joinCount = comActReserveDO.getJoinCount();
+                            comActReserveDO.setJoinCount(joinCount != null ? joinCount + 1 : 1);
+                            comActReserveMapper.updateById(comActReserveDO);
+                            //新增用户答题记录
+                            ComActReserveRecordDO userAnswerDO = new ComActReserveRecordDO();
+                            userAnswerDO.setContent(comActReserveCommitVO.getContent()!=null?comActReserveCommitVO.getContent():"");
+                            userAnswerDO.setName(comActReserveCommitVO.getName()!=null?comActReserveCommitVO.getName():"");
+                            userAnswerDO.setCommunityId(comActReserveCommitVO.getCommunityId());
+                            userAnswerDO.setPhone(comActReserveCommitVO.getPhone()!=null?comActReserveCommitVO.getPhone():"");
+                            userAnswerDO.setReserveId(questId);
+                            userAnswerDO.setReserveTime(comActReserveCommitVO.getReserveTime()!=null?comActReserveCommitVO.getReserveTime():new Date());
+                            userAnswerDO.setType(comActReserveCommitVO.getType()!=null? comActReserveCommitVO.getType() : 2);
+                            userAnswerDO.setCreateAt(nowDate);
+                            userAnswerDO.setJsonObject(comActReserveCommitVO.getJsonObject());
+                            userAnswerDO.setStatus(ComActReserveRecordDO.status.cg);
+                            comActReserveRecordService.saveOrUpdate(userAnswerDO);
+
+                            //给答题记录赋值预约登记记录id
+                            answerContentList.forEach(answerContent -> {
+                                answerContent.setReserveRecordId(userAnswerDO.getId());
+                            });
+                            comActReserveAnswerContentService.saveBatch(answerContentList);
+                            //新增用户操作记录
+                            ComActReserveOperationRecordDO comActReserveOperationRecordDO=new ComActReserveOperationRecordDO();
+                            comActReserveOperationRecordDO.setReserveId(comActReserveCommitVO.getId());
+                            comActReserveOperationRecordDO.setReserveRecordId(userAnswerDO.getId());
+                            comActReserveOperationRecordDO.setType(ComActReserveOperationRecordDO.type.br);
+                            comActReserveOperationRecordDO.setCreateAt(DateUtil.date());
+                            comActReserveOperationRecordDO.setReserveTime(comActReserveCommitVO.getReserveTime());
+                            comActReserveOperationRecordDO.setReserveContent(COMMIT);
+                            //comActReserveOperationRecordDO.setPhone(comActReserveCommitVO.getPhone());
+                            comActReserveOperationRecordDO.setStatus(ComActReserveOperationRecordDO.status.ytj);
+                            //comActReserveOperationRecordDO.setRemark(comActReserveCommitVO.getContent());
+                            comActReserveOperationRecordMapper.insert(comActReserveOperationRecordDO);
+                            return R.ok("提交成功");
+                        }
+                    }
+
+
+            }
+        }
+        return R.fail("参数错误");
+    }
+
+    @Override
+    public R homeQuarantineCommitNoToken(ComActReserveCommitVO comActReserveCommitVO) {
+        if(comActReserveCommitVO!=null){
+            ComActReserveDO comActReserveDO=new ComActReserveDO();
+            Date nowDate=DateUtil.date();
+            //查询预约登记记录
+            List<ComActReserveDO> list=comActReserveMapper.selectList(new QueryWrapper<ComActReserveDO>().lambda().eq(ComActReserveDO::getCommunityId,comActReserveCommitVO.getCommunityId()).eq(ComActReserveDO::getTitle,"居家隔离"));
+            if(!list.isEmpty()){
+                comActReserveDO=list.get(0);
+            }
+            comActReserveCommitVO.setId(comActReserveDO.getId());
+            if(comActReserveDO!=null){
+                List<QuestnaiteSubVO> questnaiteSubVOS = JSON.parseArray(comActReserveCommitVO.getJsonObject(),QuestnaiteSubVO.class);
+                if(!questnaiteSubVOS.isEmpty()){
+                    Long questId=comActReserveCommitVO.getId();
+                    List<ComActReserveAnswerContentDO> answerContentList=new ArrayList<>();
+                    for(QuestnaiteSubVO questnaiteSub:questnaiteSubVOS){
+                        //查询用户填写题目
+                        ComActReserveSubDO questnaireSubDO = comActReserveSubMapper.selectOne(new QueryWrapper<ComActReserveSubDO>().lambda()
+                                .eq(ComActReserveSubDO::getReserveId,questId).eq(ComActReserveSubDO::getKey,questnaiteSub.getKey()));
+                        if(questnaireSubDO == null){
+                            log.error("未查询到调查问卷题目,题目名称:" + questnaiteSub.getLabel() + "题目key:" + questnaiteSub.getKey());
+                            continue;
+                        }
+                        Long queSubId = questnaireSubDO.getId();
+                        //根据上传的类型查询不同的题目选项
+                        if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.danxuan) || questnaiteSub.getType().equals(QuestnaiteSubVO.type.imgselect)){
+                            //单选题处理
+                            ComActReserveSubSelectionDO subSelectionDO = comActReserveSubSelectionMapper.selectOne(new QueryWrapper<ComActReserveSubSelectionDO>()
+                                    .lambda().eq(ComActReserveSubSelectionDO::getReserveSubId,queSubId).eq(ComActReserveSubSelectionDO::getReserveId,questId)
+                                    .eq(ComActReserveSubSelectionDO::getKey,questnaiteSub.getValues()));
+                            if(subSelectionDO == null){
+                                log.error("未查询到调查问卷选项,题目名称:" + questnaiteSub.getLabel() + "选项key:" + questnaiteSub.getValues());
+                                continue;
+                            }
+
+                            ComActReserveAnswerContentDO answerContentDO = new ComActReserveAnswerContentDO();
+                            answerContentDO.setCreateAt(nowDate);
+                            answerContentDO.setReserveSelectionId(subSelectionDO.getId());
+                            answerContentDO.setReserveSubId(queSubId);
+                            answerContentDO.setType(1);
+                            answerContentDO.setChoice(subSelectionDO.getOptionName());
+                            answerContentDO.setAnswerContent(subSelectionDO.getContent());
+                            answerContentList.add(answerContentDO);
+                        }else if(questnaiteSub.getType().equals(QuestnaiteSubVO.type.duoxuan)){
+                            //多选题处理
+                            String values = questnaiteSub.getValues();
+                            String []value = values.split(",");
+                            for (int i = 0; i < value.length; i++) {
+                                ComActReserveSubSelectionDO subSelectionDO = comActReserveSubSelectionMapper.selectOne(new QueryWrapper<ComActReserveSubSelectionDO>()
+                                        .lambda().eq(ComActReserveSubSelectionDO::getReserveSubId,queSubId).eq(ComActReserveSubSelectionDO::getReserveId,questId)
+                                        .eq(ComActReserveSubSelectionDO::getKey,value[i]));
+                                if(subSelectionDO == null){
+                                    log.error("未查询到调查问卷选项,题目名称:" + questnaiteSub.getLabel() + "选项key:" + questnaiteSub.getValues());
+                                    continue;
+                                }
+                                ComActReserveAnswerContentDO answerContentDO = new ComActReserveAnswerContentDO();
+                                answerContentDO.setCreateAt(nowDate);
+                                answerContentDO.setReserveSelectionId(subSelectionDO.getId());
+                                answerContentDO.setReserveSubId(queSubId);
+                                answerContentDO.setType(1);
+                                answerContentDO.setChoice(subSelectionDO.getOptionName());
+                                answerContentDO.setAnswerContent(subSelectionDO.getContent());
+                                answerContentList.add(answerContentDO);
+                            }
+                        }else{
+                            //文字描述不做处理
+                            if(!questnaiteSub.getType().equals(QuestnaiteSubVO.type.describe)){
                                 //问答题处理
                                 String values = questnaiteSub.getValues();
                                 ComActReserveAnswerContentDO answerContentDO = new ComActReserveAnswerContentDO();
-                                answerContentDO.setUserId(userId);
                                 answerContentDO.setCreateAt(nowDate);
-                                answerContentDO.setCreateBy(userId);
                                 answerContentDO.setReserveSubId(queSubId);
                                 answerContentDO.setType(2);
                                 answerContentDO.setAnswerContent(values);
                                 answerContentList.add(answerContentDO);
                             }
                         }
-                        if(!answerContentList.isEmpty()){
-                            comActReserveAnswerContentService.saveBatch(answerContentList);
+                    }
+                    if(!answerContentList.isEmpty()){
+                        //更新回答用户数量
+                        Integer joinCount = comActReserveDO.getJoinCount();
+                        comActReserveDO.setJoinCount(joinCount != null ? joinCount + 1 : 1);
+                        comActReserveMapper.updateById(comActReserveDO);
+                        //新增用户答题记录
+                        ComActReserveRecordDO userAnswerDO = new ComActReserveRecordDO();
+                        userAnswerDO.setContent(comActReserveCommitVO.getContent()!=null?comActReserveCommitVO.getContent():"");
+                        userAnswerDO.setName(comActReserveCommitVO.getName()!=null?comActReserveCommitVO.getName():"");
+                        userAnswerDO.setCommunityId(comActReserveCommitVO.getCommunityId());
+                        userAnswerDO.setPhone(comActReserveCommitVO.getPhone()!=null?comActReserveCommitVO.getPhone():"");
+                        userAnswerDO.setReserveId(questId);
+                        userAnswerDO.setReserveTime(comActReserveCommitVO.getReserveTime()!=null?comActReserveCommitVO.getReserveTime():new Date());
+                        userAnswerDO.setType(comActReserveCommitVO.getType()!=null? comActReserveCommitVO.getType() : 2);
+                        userAnswerDO.setCreateAt(nowDate);
+                        userAnswerDO.setJsonObject(comActReserveCommitVO.getJsonObject());
+                        userAnswerDO.setStatus(ComActReserveRecordDO.status.cg);
+                        comActReserveRecordService.saveOrUpdate(userAnswerDO);
 
-                            //更新回答用户数量
-                            Integer joinCount = comActReserveDO.getJoinCount();
-                            comActReserveDO.setJoinCount(joinCount != null ? joinCount + 1 : 1);
-                            comActReserveMapper.updateById(comActReserveDO);
-
-                            //新增用户答题记录
-                            ComActReserveRecordDO userAnswerDO = new ComActReserveRecordDO();
-                            userAnswerDO.setPhone(comActReserveCommitVO.getPhone());
-                            userAnswerDO.setReserveId(questId);
-                            userAnswerDO.setUserId(userId);
-                            userAnswerDO.setType(comActReserveCommitVO.getType());
-                            userAnswerDO.setCreateAt(nowDate);
-                            userAnswerDO.setJsonObject(comActReserveCommitVO.getJsonObject());
-                            userAnswerDO.setStatus(ComActReserveRecordDO.status.dcl);
-                            comActReserveRecordMapper.insert(userAnswerDO);
-                            //新增用户操作记录
-                            ComActReserveOperationRecordDO comActReserveOperationRecordDO=new ComActReserveOperationRecordDO();
-                            comActReserveOperationRecordDO.setReserveId(comActReserveCommitVO.getId());
-                            comActReserveOperationRecordDO.setReserveRecordId(userAnswerDO.getId());
-                            comActReserveOperationRecordDO.setType(ComActReserveOperationRecordDO.type.br);
-                            comActReserveOperationRecordDO.setReserveTime(DateUtil.date());
-                            comActReserveOperationRecordDO.setReserveContent(COMMIT);
-                            comActReserveOperationRecordDO.setPhone(comActReserveCommitVO.getPhone());
-                            comActReserveOperationRecordDO.setStatus(ComActReserveOperationRecordDO.status.ytj);
-                            comActReserveOperationRecordDO.setUserId(comActReserveCommitVO.getUserId());
-                            comActReserveOperationRecordMapper.insert(comActReserveOperationRecordDO);
-                        }
+                        //给答题记录赋值预约登记记录id
+                        answerContentList.forEach(answerContent -> {
+                            answerContent.setReserveRecordId(userAnswerDO.getId());
+                        });
+                        comActReserveAnswerContentService.saveBatch(answerContentList);
+                        //新增用户操作记录
+                        ComActReserveOperationRecordDO comActReserveOperationRecordDO=new ComActReserveOperationRecordDO();
+                        comActReserveOperationRecordDO.setReserveId(comActReserveCommitVO.getId());
+                        comActReserveOperationRecordDO.setReserveRecordId(userAnswerDO.getId());
+                        comActReserveOperationRecordDO.setType(ComActReserveOperationRecordDO.type.br);
+                        comActReserveOperationRecordDO.setCreateAt(DateUtil.date());
+                        comActReserveOperationRecordDO.setReserveTime(comActReserveCommitVO.getReserveTime());
+                        comActReserveOperationRecordDO.setReserveContent(COMMIT);
+                        //comActReserveOperationRecordDO.setPhone(comActReserveCommitVO.getPhone());
+                        comActReserveOperationRecordDO.setStatus(ComActReserveOperationRecordDO.status.ytj);
+                        //comActReserveOperationRecordDO.setRemark(comActReserveCommitVO.getContent());
+                        comActReserveOperationRecordMapper.insert(comActReserveOperationRecordDO);
+                        return R.ok("提交成功");
                     }
                 }
 
-            }
 
+            }
         }
         return R.fail("参数错误");
     }
 
+
+    /**
+     * 社区后台-分页查询预约登记列表
+     * @param pageReserveDTO    请求参数
+     * @return  预约登记列表
+     */
+    @Override
+    public R pageReserveAdmin(PageReserveAdminDTO pageReserveDTO){
+        IPage<ComActReserveListAdminVO> reservePage = this.baseMapper.pageReserveAdmin(new Page(pageReserveDTO.getPageNum(),pageReserveDTO.getPageSize()),pageReserveDTO);
+        reservePage.getRecords().forEach(reserve -> {
+            //判断广告位置
+            StringBuilder sb = new StringBuilder();
+            if(reserve.getAdverPositionTop().equals(ComActQuestnaireDO.isOk.yes)){
+                sb.append("首页顶部,");
+            }
+            if(reserve.getAdverPositionApplication().equals(ComActQuestnaireDO.isOk.yes)){
+                sb.append("首页应用,");
+            }
+            String advertPosition = sb.toString();
+            if(advertPosition.length() > 0){
+                reserve.setAdvertPosition(advertPosition.substring(0,advertPosition.length()-1));
+            }else{
+                reserve.setAdvertPosition("无");
+            }
+        });
+        return R.ok(reservePage);
+    }
+
+    /**
+     * 社区后台-新增预约登记信息
+     * @param addReserveDTO 请求参数
+     * @return  新增结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R addReserveAdmin(AddReserveAdminDTO addReserveDTO){
+        Date nowDate = new Date();
+        Long userId = addReserveDTO.getUserId();
+        //新增预约登记信息
+        ComActReserveDO reserveDO = new ComActReserveDO();
+        BeanUtils.copyProperties(addReserveDTO,reserveDO);
+        reserveDO.setStatus(ComActReserveDO.status.dfb);
+        reserveDO.setCreateAt(nowDate);
+        reserveDO.setCreateBy(userId);
+
+        if(addReserveDTO.getIsPublish().equals(ComActReserveDO.isOk.yes)){
+            reserveDO.setStatus(ComActReserveDO.status.jxz);
+            reserveDO.setPublishTime(nowDate);
+        }
+        this.baseMapper.insert(reserveDO);
+
+        //根据上传的json数据录入选项以及题目到数据库
+        if(StringUtils.isEmpty(addReserveDTO.getJsonObject())){
+            return R.fail("组件json数据为空,录入失败");
+        }
+        List<QuestnaiteSubVO> reserveSubVOS = JSON.parseArray(addReserveDTO.getJsonObject(),QuestnaiteSubVO.class);
+        reserveSubVOS.forEach(reserveSub -> {
+            ComActReserveSubDO comActReserveSubDO = new ComActReserveSubDO();
+            comActReserveSubDO.setType(reserveSub.getType());
+            comActReserveSubDO.setContent(reserveSub.getLabel());
+            comActReserveSubDO.setSort(reserveSub.getSort());
+            comActReserveSubDO.setReserveId(reserveDO.getId());
+            comActReserveSubDO.setCreateBy(userId);
+            comActReserveSubDO.setCreateAt(nowDate);
+            comActReserveSubDO.setKey(reserveSub.getKey());
+            comActReserveSubMapper.insert(comActReserveSubDO);
+
+            ArrayList<ComActReserveSubSelectionDO> subSelectionList = Lists.newArrayList();
+            if(reserveSub.getOptions() != null && !reserveSub.getOptions().isEmpty()) {
+                List<QuestnaiteSubSelectionVO> subOptions = reserveSub.getOptions();
+                for(int i=0; i<subOptions.size(); i++){
+                    QuestnaiteSubSelectionVO subSelect = subOptions.get(i);
+                    ComActReserveSubSelectionDO subSelectionDO = new ComActReserveSubSelectionDO();
+                    subSelectionDO.setReserveSubId(comActReserveSubDO.getId());
+                    if(subSelect.getType().equals(1)){
+                        //添加选项名称
+                        subSelectionDO.setOptionName(subSelect.getOptionName());
+                    }else {
+                        subSelectionDO.setOptionName(String.valueOf(Character.toChars('A' + i)));
+                    }
+                    subSelectionDO.setContent(subSelect.getLabel());
+                    subSelectionDO.setReserveId(reserveDO.getId());
+                    subSelectionDO.setCreateBy(userId);
+                    subSelectionDO.setCreateAt(nowDate);
+                    subSelectionDO.setType(subSelect.getType());
+                    subSelectionDO.setKey(subSelect.getKey());
+                    subSelectionDO.setUrl(subSelect.getUrl());
+                    subSelectionList.add(subSelectionDO);
+                }
+            }
+            comActReserveSubSelectionService.saveBatch(subSelectionList);
+        });
+
+        return R.ok();
+    }
+
+    /**
+     * 社区后台-编辑预约登记信息
+     * @param editReserveDTO 请求参数
+     * @return  新增结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R editReserveAdmin(EditReserveAdminDTO editReserveDTO){
+        Date nowDate = new Date();
+        Long userId = editReserveDTO.getUserId();
+        Long reserveId = editReserveDTO.getId();
+        //查询预约登记信息
+        ComActReserveDO reserveDO = this.baseMapper.selectById(reserveId);
+        if(reserveDO == null){
+            return R.fail("未查询到预约登记记录");
+        }
+        if(!reserveDO.getStatus().equals(ComActReserveDO.status.dfb)){
+            return R.fail("不可修改不是待发布状态的预约登记记录");
+        }
+        BeanUtils.copyProperties(editReserveDTO,reserveDO);
+        reserveDO.setStatus(ComActReserveDO.status.dfb);
+        reserveDO.setUpdateAt(nowDate);
+        reserveDO.setUpdateBy(userId);
+        if(editReserveDTO.getIsPublish().equals(ComActReserveDO.isOk.yes)){
+            reserveDO.setStatus(ComActReserveDO.status.jxz);
+            reserveDO.setPublishTime(nowDate);
+        }
+        this.baseMapper.updateById(reserveDO);
+
+        //根据上传的json数据录入选项以及题目到数据库
+        if(StringUtils.isEmpty(editReserveDTO.getJsonObject())){
+            return R.fail("组件json数据为空,录入失败");
+        }
+
+        //清除原来预约登记题目以及题目选项
+        this.baseMapper.deleteReserveSubAll(reserveId);
+        //清除原有的,添加更新的
+        List<QuestnaiteSubVO> reserveSubVOS = JSON.parseArray(editReserveDTO.getJsonObject(),QuestnaiteSubVO.class);
+        if(reserveSubVOS.isEmpty()){
+            return R.fail("组件json数据为空,录入失败");
+        }
+        reserveSubVOS.forEach(reserveSub -> {
+            ComActReserveSubDO comActReserveSubDO = new ComActReserveSubDO();
+            comActReserveSubDO.setType(reserveSub.getType());
+            comActReserveSubDO.setContent(reserveSub.getLabel());
+            comActReserveSubDO.setSort(reserveSub.getSort());
+            comActReserveSubDO.setReserveId(reserveDO.getId());
+            comActReserveSubDO.setCreateBy(userId);
+            comActReserveSubDO.setCreateAt(nowDate);
+            comActReserveSubDO.setKey(reserveSub.getKey());
+            comActReserveSubMapper.insert(comActReserveSubDO);
+
+            ArrayList<ComActReserveSubSelectionDO> subSelectionList = Lists.newArrayList();
+            if(reserveSub.getOptions() != null && !reserveSub.getOptions().isEmpty()) {
+                List<QuestnaiteSubSelectionVO> subOptions = reserveSub.getOptions();
+                for(int i=0; i<subOptions.size(); i++){
+                    QuestnaiteSubSelectionVO subSelect = subOptions.get(i);
+                    ComActReserveSubSelectionDO subSelectionDO = new ComActReserveSubSelectionDO();
+                    subSelectionDO.setReserveSubId(comActReserveSubDO.getId());
+                    if(subSelect.getType().equals(1)){
+                        //添加选项名称
+                        subSelectionDO.setOptionName(subSelect.getOptionName());
+                    }else {
+                        subSelectionDO.setOptionName(String.valueOf(Character.toChars('A' + i)));
+                    }
+                    subSelectionDO.setContent(subSelect.getLabel());
+                    subSelectionDO.setReserveId(reserveDO.getId());
+                    subSelectionDO.setCreateBy(userId);
+                    subSelectionDO.setCreateAt(nowDate);
+                    subSelectionDO.setType(subSelect.getType());
+                    subSelectionDO.setKey(subSelect.getKey());
+                    subSelectionList.add(subSelectionDO);
+                }
+            }
+            comActReserveSubSelectionService.saveBatch(subSelectionList);
+        });
+        return R.ok();
+    }
+
+    /**
+     * 社区后台-修改预约登记状态
+     * @param editReserveDTO    请求参数
+     * @return  修改结果
+     */
+    @Override
+    public R editReserveStatusAdmin(EditComActReserveStatusDTO editReserveDTO){
+        Date nowDate = new Date();
+        Long userId = editReserveDTO.getUserId();
+        Long reserveId = editReserveDTO.getId();
+        //查询预约登记信息
+        ComActReserveDO reserveDO = this.baseMapper.selectById(reserveId);
+        if(reserveDO == null){
+            return R.fail("未查询到预约登记记录");
+        }
+
+        if(editReserveDTO.getType().equals(EditComActReserveStatusDTO.type.tz)){
+            reserveDO.setStatus(ComActReserveDO.status.ytz);
+            reserveDO.setEndTime(nowDate);
+        }else if(editReserveDTO.getType().equals(EditComActReserveStatusDTO.type.fb)){
+            reserveDO.setStatus(ComActReserveDO.status.jxz);
+            reserveDO.setPublishTime(nowDate);
+        }
+        reserveDO.setUpdateBy(userId);
+        reserveDO.setUpdateAt(nowDate);
+        if(this.baseMapper.updateById(reserveDO) > 0){
+            return R.ok();
+        }else{
+            return R.fail();
+        }
+    }
+
+    /**
+     * 社区后台-继续预约登记
+     * @param editReserveDTO    请求参数
+     * @return  修改结果
+     */
+    @Override
+    public R editReserveInfoAdmin(EditComActReserveInfoDTO editReserveDTO){
+        Date nowDate = new Date();
+        Long userId = editReserveDTO.getUserId();
+        Long reserveId = editReserveDTO.getId();
+        //查询预约登记信息
+        ComActReserveDO reserveDO = this.baseMapper.selectById(reserveId);
+        if(reserveDO == null){
+            return R.fail("未查询到预约登记记录");
+        }
+        BeanUtils.copyProperties(editReserveDTO,reserveDO);
+        reserveDO.setStatus(ComActReserveDO.status.jxz);
+        reserveDO.setUpdateAt(nowDate);
+        reserveDO.setUpdateBy(userId);
+        reserveDO.setEndTime(null);
+        if(this.baseMapper.updateById(reserveDO) > 0){
+            return R.ok();
+        }else{
+            return R.fail();
+        }
+    }
+
+    /**
+     * 社区后台-根据预约登记id查询详情
+     * @param reserveId 预约登记id
+     * @return  预约登记详情
+     */
+    @Override
+    public R<ComActReserveDetailAdminVO> detailReserveAdmin(Long reserveId) {
+        ComActReserveDetailAdminVO reserveDetailAdminVO = new ComActReserveDetailAdminVO();
+        //查询预约登记信息
+        ComActReserveDO reserveDO = this.baseMapper.selectById(reserveId);
+        BeanUtils.copyProperties(reserveDO,reserveDetailAdminVO);
+        return R.ok(reserveDetailAdminVO);
+    }
+
+    /**
+     * 社区后台-根据社区id统计预约类数据
+     * @param makeStatisticsDTO   请求参数
+     * @return  统计预约类数据
+     */
+    @Override
+    public R makeStatisticsAdmin(ComActReserveMakeStatisticsDTO makeStatisticsDTO){
+        Long communityId = makeStatisticsDTO.getCommunityId();
+        ComActReserveMakeStatisticsAdminVO makeStatisticsAdminVO = new ComActReserveMakeStatisticsAdminVO();
+        //查询预约登记统计汇总左边数据
+        List<ComActReserveMakeLeftStatisticsAdminVO> leftStatisticsList = this.baseMapper.getReserveMakeLeftStatistics(communityId);
+        if(!leftStatisticsList.isEmpty()){
+            makeStatisticsAdminVO.setLeftStatisticsList(leftStatisticsList);
+        }
+
+        //查询预约登记统计汇总右边数据
+        List<ComActReserveMakeRightStatisticsAdminVO> rightStatisticsList = getRightStatisticsList(makeStatisticsDTO);
+        if(!rightStatisticsList.isEmpty()){
+            makeStatisticsAdminVO.setRightStatisticsList(rightStatisticsList);
+        }
+        return R.ok(makeStatisticsAdminVO);
+    }
+
+    /**
+     * 社区后台-查询预约统计汇总右边数据
+     * @param makeStatisticsDTO 请求参数
+     * @return  预约统计汇总右边数据
+     */
+    private List<ComActReserveMakeRightStatisticsAdminVO> getRightStatisticsList(ComActReserveMakeStatisticsDTO makeStatisticsDTO){
+        Long communityId = makeStatisticsDTO.getCommunityId();
+        //查询预约登记统计汇总右边数据
+        List<ComActReserveMakeRightStatisticsAdminVO> rightStatisticsList = this.baseMapper.getReserveMakeRightStatistics(makeStatisticsDTO);
+        if(!rightStatisticsList.isEmpty()){
+            rightStatisticsList.forEach(rightStatistics -> {
+                String date = rightStatistics.getReserveTime();
+                Integer count = this.baseMapper.getReserveRecordCount(communityId,date + " 00:00:00",date + " 23:59:59");
+                rightStatistics.setAllCount(count);
+
+                //计算百分比
+                BigDecimal tag = BigDecimal.ZERO;
+                if(count >= 0){
+                    tag = BigDecimal.valueOf(rightStatistics.getCount()).divide(BigDecimal.valueOf(count),2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+                }
+                rightStatistics.setTag(tag);
+            });
+        }
+        return rightStatisticsList;
+    }
+
+    /**
+     * 社区后台-查询导出预约统计汇总数据
+     * @param makeStatisticsDTO   请求参数
+     * @return  统计预约类数据
+     */
+    @Override
+    public R makeStatisticsExportAdmin(ComActReserveMakeStatisticsDTO makeStatisticsDTO){
+        return R.ok(getRightStatisticsList(makeStatisticsDTO));
+    }
+
+    /**
+     * 删除预约登记信息
+     * @param reserveId 预约登记id
+     * @return  删除结果
+     */
+    @Override
+    public R deleteReserveAdmin(Long reserveId){
+        //查询预约登记信息
+        ComActReserveDO reserveDO = this.baseMapper.selectById(reserveId);
+        if(reserveDO == null){
+            return R.fail("未查询到预约登记信息");
+        }
+        reserveDO.setIsDel(ComActReserveDO.isOk.yes);
+        reserveDO.setUpdateAt(new Date());
+
+        if(this.baseMapper.updateById(reserveDO) > 0){
+            return R.ok();
+        }else{
+            return R.fail();
+        }
+    }
+
+    /**
+     * 查询社区所有预约信息列表
+     * @param communityId   社区id
+     * @return  预约信息列表
+     */
+    @Override
+    public R listReserveAdmin(Long communityId){
+        return R.ok(this.baseMapper.listReserveAdmin(communityId));
+    }
+
+    @Override
+    public R getById(Long id,Long userId,Long recordId,Integer isBack) {
+        ComActReserveDO comActReserveDO=comActReserveMapper.selectById(id);
+        if(comActReserveDO!=null){
+            comActReserveDO.setViewNum(comActReserveDO.getViewNum()+1);
+            ComActReserveDetailVO comActReserveDetailVO=new ComActReserveDetailVO();
+            if(isBack!=1){
+                comActReserveDO.setViewNum(comActReserveDO.getViewNum()+1);
+                BeanUtils.copyProperties(comActReserveDO,comActReserveDetailVO);
+                List<ComActReserveRecordDO> list=comActReserveRecordMapper.selectList(new QueryWrapper<ComActReserveRecordDO>().eq("user_id",userId).eq("reserve_id",id).in("status",1,2).orderByDesc("create_at"));
+                List<ComActReserveRecordDO> secondlist=comActReserveRecordMapper.selectList(new QueryWrapper<ComActReserveRecordDO>().eq("user_id",userId).eq("reserve_id",id).orderByDesc("create_at"));
+                //判断当前数据是否可重复提交
+                if(comActReserveDO.getIsRepeat()==ComActReserveDetailVO.isOk.y||list.isEmpty()){
+                    comActReserveDetailVO.setIsOk(ComActReserveDetailVO.isOk.n);
+                }else {
+                    comActReserveDetailVO.setIsOk(ComActReserveDetailVO.isOk.y);
+                }
+                //如果用户已提交返回最新一条记录 列表时间倒序排列
+                if(!list.isEmpty()){
+                    comActReserveDetailVO.setJsonObject(list.get(0).getJsonObject());
+                    comActReserveDetailVO.setReserveTime(list.get(0).getReserveTime());
+                }
+                if(!secondlist.isEmpty()&&recordId!=null){
+                    secondlist.forEach(comActReserveRecordDO -> {
+                        if(comActReserveRecordDO.getId().equals(recordId)){
+                            comActReserveDetailVO.setRecordStatus(comActReserveRecordDO.getStatus());
+                        }
+                    });
+                }
+                //更新浏览量
+                comActReserveMapper.updateById(comActReserveDO);
+                return R.ok(comActReserveDetailVO);
+            }
+            ComActReserveRecordDO comActReserveRecordDO =comActReserveRecordMapper.selectById(recordId);
+            if(comActReserveRecordDO!=null){
+                BeanUtils.copyProperties(comActReserveRecordDO,comActReserveDetailVO);
+            }
+            //更新浏览量
+            comActReserveMapper.updateById(comActReserveDO);
+            return R.ok(comActReserveDetailVO);
+        }
+        return R.fail("未查询到数据");
+
+    }
+
     @Override
     public R pageReserveList(PageUserReserveDTO pageUserReserveDTO) {
-        return R.ok(comActReserveRecordMapper.pageReserveList(new Page<ComActReserveDO>(pageUserReserveDTO.getPageNum(), pageUserReserveDTO.getPageSize()),pageUserReserveDTO));
+        IPage<ComActReserveAppletsVO> ipage = comActReserveRecordMapper.pageReserveList(new Page<>(pageUserReserveDTO.getPageNum(), pageUserReserveDTO.getPageSize()),pageUserReserveDTO);
+        OperationDetailDTO operationDetailDTO = new OperationDetailDTO();
+        ipage.getRecords().forEach(page -> {
+            operationDetailDTO.setReserveRecordId(page.getId());
+            List<ComOperationListVO> operationList = comActReserveRecordMapper.queryAll(operationDetailDTO);
+            page.setOperationList(operationList);
+        });
+        return R.ok(ipage);
+    }
+
+    /**
+     * 小程序查询所有进行中的预约登记
+     * @param communityId   社区id
+     * @return  社区所有进行中的预约登记列表
+     */
+    @Override
+    public R reserveListApplets(Long communityId){
+        return R.ok(this.baseMapper.getReserveIndexList(communityId));
+    }
+
+    @Override
+    public IndexReserve indexReserve(Long communityId) {
+        List<ComActReserveDO> comActReserveDOS=this.comActReserveMapper.selectList(new QueryWrapper<ComActReserveDO>().lambda().eq(ComActReserveDO::getCommunityId,communityId).orderByDesc(ComActReserveDO::getCreateAt).like(ComActReserveDO::getTitle,"返攀登记").eq(ComActReserveDO::getStatus,ComActReserveDO.status.jxz));
+        if(!comActReserveDOS.isEmpty()){
+            IndexBackReserve indexBackReserve=new IndexBackReserve();
+            indexBackReserve.setCount(this.comActReserveRecordMapper.selectCount(new QueryWrapper<ComActReserveRecordDO>().lambda().eq(ComActReserveRecordDO::getReserveId,comActReserveDOS.get(0).getId())));
+
+        }
+
+        return null;
+    }
+
+    public ComMngPopulationDO savePopulation(String idCard){
+        ComMngPopulationDO comMngPopulationDO=new ComMngPopulationDO();
+        comMngPopulationDO.setDeath("1");
+        comMngPopulationDO.setCardNoStr(idCard);
+        comMngPopulationDO.setCardNo(idCard);
+        comMngPopulationDO.setSex(getSex(idCard));
+        comMngPopulationDO.setBirthday(getBirthday(idCard));
+        return comMngPopulationDO;
+    }
+    public Integer getSex(String idCard){
+        char c = idCard.charAt(idCard.length() - 2);
+        Integer gender = Integer.parseInt(String.valueOf(c));
+        if(gender % 2 == 1){
+            return 1;
+        }else{
+            return 2;
+        }
+    }
+    public String getBirthday(String idCard){
+        return idCard.substring(6).substring(0, 4)+"-"+idCard.substring(10).substring(0, 2)+"-"+idCard.substring(12).substring(0,2);
+    }
+
+
+    public static void getFileByBytes(byte[] bytes, String filePath, String fileName) {
+        BufferedOutputStream bos = null;
+        FileOutputStream fos = null;
+        File file = null;
+        try {
+            File dir = new File(filePath);
+            if (!dir.exists()) {// 判断文件目录是否存在
+                dir.mkdirs();
+            }
+            file = new File(filePath + fileName);
+            fos = new FileOutputStream(file);
+            bos = new BufferedOutputStream(fos);
+            bos.write(bytes);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (bos != null) {
+                try {
+                    bos.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (fos != null) {
+                try {
+                    fos.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
     }
 }

--
Gitblit v1.7.1