张天森
2022-10-12 3c884ccd7b51edf3b36840bf99de5edaa41a38a7
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java
@@ -1,51 +1,50 @@
package com.panzhihua.service_community.service.impl;
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.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.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.ComActReserveMapper;
import com.panzhihua.service_community.dao.ComActReserveSubMapper;
import com.panzhihua.service_community.model.dos.*;
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.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;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * @auther lyq
@@ -71,12 +70,23 @@
    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();
            //查询预约登记记录
@@ -84,13 +94,17 @@
            if(comActReserveDO!=null){
                //查询当前用户是否已预约并判断是否能继续预约
                if(comActReserveDO.getJoinAllCount()!=0){
                    Integer count=comActReserveRecordMapper.selectCount(new QueryWrapper<ComActReserveRecordDO>().eq("reserve_id",comActReserveCommitVO.getId()));
                    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()&&list.size()>1&&comActReserveDO.getIsRepeat()==ComActReserveDO.isRepeat.no){
                    return R.fail("提交失败,不可重复预约");
@@ -98,6 +112,9 @@
                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){
@@ -111,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>()
@@ -155,26 +172,93 @@
                                    answerContentDO.setAnswerContent(subSelectionDO.getContent());
                                    answerContentList.add(answerContentDO);
                                }
                            }else{
                                //问答题处理
                                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);
                            }
                            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());
@@ -208,11 +292,269 @@
                            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.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("提交成功");
                    }
                }
            }
        }
@@ -305,6 +647,7 @@
                    subSelectionDO.setCreateAt(nowDate);
                    subSelectionDO.setType(subSelect.getType());
                    subSelectionDO.setKey(subSelect.getKey());
                    subSelectionDO.setUrl(subSelect.getUrl());
                    subSelectionList.add(subSelectionDO);
                }
            }
@@ -458,7 +801,7 @@
     * @return  预约登记详情
     */
    @Override
    public R detailReserveAdmin(Long reserveId){
    public R<ComActReserveDetailAdminVO> detailReserveAdmin(Long reserveId) {
        ComActReserveDetailAdminVO reserveDetailAdminVO = new ComActReserveDetailAdminVO();
        //查询预约登记信息
        ComActReserveDO reserveDO = this.baseMapper.selectById(reserveId);
@@ -561,12 +904,13 @@
    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("reserve_time"));
                List<ComActReserveRecordDO> secondlist=comActReserveRecordMapper.selectList(new QueryWrapper<ComActReserveRecordDO>().eq("user_id",userId).eq("reserve_id",id).orderByDesc("reserve_time"));
                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);
@@ -593,6 +937,8 @@
            if(comActReserveRecordDO!=null){
                BeanUtils.copyProperties(comActReserveRecordDO,comActReserveDetailVO);
            }
            //更新浏览量
            comActReserveMapper.updateById(comActReserveDO);
            return R.ok(comActReserveDetailVO);
        }
        return R.fail("未查询到数据");
@@ -601,6 +947,91 @@
    @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();
                }
            }
        }
    }
}