From 3c884ccd7b51edf3b36840bf99de5edaa41a38a7 Mon Sep 17 00:00:00 2001 From: 张天森 <1292933220@qq.com> Date: 星期三, 12 十月 2022 19:05:28 +0800 Subject: [PATCH] 三说会堂事件流程处理 --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java | 575 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 509 insertions(+), 66 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 85ed47f..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,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())); - if(count>=comActReserveDO.getJoinCount()){ + 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,95 @@ 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()); userAnswerDO.setReserveId(questId); userAnswerDO.setReserveTime(comActReserveCommitVO.getReserveTime()); @@ -206,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("提交成功"); + } + } + } } @@ -303,6 +647,7 @@ subSelectionDO.setCreateAt(nowDate); subSelectionDO.setType(subSelect.getType()); subSelectionDO.setKey(subSelect.getKey()); + subSelectionDO.setUrl(subSelect.getUrl()); subSelectionList.add(subSelectionDO); } } @@ -456,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); @@ -556,31 +901,44 @@ } @Override - public R getById(Long id,Long userId,Long recordId) { + 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(); - 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")); - //判断当前数据是否可重复提交 - if(comActReserveDO.getIsRepeat()==ComActReserveDetailVO.isOk.y||list.isEmpty()){ - comActReserveDetailVO.setIsOk(ComActReserveDetailVO.isOk.n); - }else { - comActReserveDetailVO.setIsOk(ComActReserveDetailVO.isOk.y); + 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); } - //如果用户已提交返回最新一条记录 列表时间倒序排列 - if(!list.isEmpty()){ - comActReserveDetailVO.setJsonObject(list.get(0).getJsonObject()); - comActReserveDetailVO.setReserveTime(list.get(0).getReserveTime()); + ComActReserveRecordDO comActReserveRecordDO =comActReserveRecordMapper.selectById(recordId); + if(comActReserveRecordDO!=null){ + BeanUtils.copyProperties(comActReserveRecordDO,comActReserveDetailVO); } - if(!secondlist.isEmpty()&&recordId!=null){ - secondlist.forEach(comActReserveRecordDO -> { - if(comActReserveRecordDO.getId().equals(recordId)){ - comActReserveDetailVO.setRecordStatus(comActReserveRecordDO.getStatus()); - } - }); - } + //更新浏览量 + comActReserveMapper.updateById(comActReserveDO); return R.ok(comActReserveDetailVO); } return R.fail("未查询到数据"); @@ -589,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(); + } + } + } } } -- Gitblit v1.7.1