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.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
|
* @create 2021-08-23 10:33:11
|
* @describe 预约登记表服务实现类
|
*/
|
@Slf4j
|
@Service
|
public class ComActReserveServiceImpl extends ServiceImpl<ComActReserveMapper, ComActReserveDO> implements ComActReserveService {
|
@Resource
|
private ComActReserveMapper comActReserveMapper;
|
@Resource
|
private ComActReserveSubMapper comActReserveSubMapper;
|
@Resource
|
private ComActReserveSubSelectionMapper comActReserveSubSelectionMapper;
|
@Resource
|
private ComActReserveAnswerContentService comActReserveAnswerContentService;
|
@Resource
|
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()&&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){
|
//查询用户填写题目
|
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.setUserId(userId);
|
answerContentDO.setCreateAt(nowDate);
|
answerContentDO.setCreateBy(userId);
|
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.setUserId(userId);
|
answerContentDO.setCreateAt(nowDate);
|
answerContentDO.setCreateBy(userId);
|
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)&&!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.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("参数错误");
|
}
|
|
|
/**
|
* 社区后台-分页查询预约登记列表
|
* @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) {
|
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();
|
}
|
}
|
}
|
}
|
}
|