101captain
2022-08-09 d345374efced70c4ccff1c1bbcb49f7b8c4b9fd4
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveServiceImpl.java
@@ -428,6 +428,131 @@
        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("参数错误");
    }
    /**
     * 社区后台-分页查询预约登记列表