| | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.framework.web.service.TokenService; |
| | | import com.ruoyi.system.model.TPartyBuilding; |
| | | import com.ruoyi.system.model.TQuestionnaire; |
| | | import com.ruoyi.system.model.TQuestionnaireStem; |
| | | import com.ruoyi.system.model.TQuestionnaireStemOption; |
| | | import com.ruoyi.system.dto.SaveTQuestionnaireDto; |
| | | import com.ruoyi.system.model.*; |
| | | import com.ruoyi.system.query.PartyBuildingListQuery; |
| | | import com.ruoyi.system.service.TQuestionnaireService; |
| | | import com.ruoyi.system.service.TQuestionnaireStemBriefAnswerService; |
| | | import com.ruoyi.system.service.TQuestionnaireStemOptionService; |
| | | import com.ruoyi.system.service.TQuestionnaireStemService; |
| | | import com.ruoyi.system.service.*; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.util.StringUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Slf4j |
| | | @RestController |
| | |
| | | public class QuestionnaireController { |
| | | |
| | | private final TQuestionnaireService questionnaireService; |
| | | private final TQuestionnaireStemService questionnaireStemService; |
| | | private final TQuestionnaireRecordService questionnaireRecordService; |
| | | private final TokenService tokenService; |
| | | private final TQuestionnaireStemService questionnaireStemService; |
| | | private final TQuestionnaireStemOptionService questionnaireStemOptionService; |
| | | private final TQuestionnaireStemBriefAnswerService questionnaireStemBriefAnswerService; |
| | | |
| | | public QuestionnaireController(TQuestionnaireService questionnaireService, TQuestionnaireStemService questionnaireStemService, TokenService tokenService, TQuestionnaireStemOptionService questionnaireStemOptionService, TQuestionnaireStemBriefAnswerService questionnaireStemBriefAnswerService) { |
| | | public QuestionnaireController(TQuestionnaireService questionnaireService, TQuestionnaireRecordService questionnaireRecordService, TokenService tokenService, TQuestionnaireStemService questionnaireStemService, TQuestionnaireStemOptionService questionnaireStemOptionService, TQuestionnaireStemBriefAnswerService questionnaireStemBriefAnswerService) { |
| | | this.questionnaireService = questionnaireService; |
| | | this.questionnaireStemService = questionnaireStemService; |
| | | this.questionnaireRecordService = questionnaireRecordService; |
| | | this.tokenService = tokenService; |
| | | this.questionnaireStemService = questionnaireStemService; |
| | | this.questionnaireStemOptionService = questionnaireStemOptionService; |
| | | this.questionnaireStemBriefAnswerService = questionnaireStemBriefAnswerService; |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "问卷调查--列表", response = TQuestionnaire.class) |
| | | @PostMapping(value = "/getTQuestionnaireList") |
| | | @GetMapping(value = "/getTQuestionnaireList") |
| | | public R<List<TQuestionnaire>> getTQuestionnaireList() { |
| | | |
| | | String userId = null; |
| | | try { |
| | | userId = tokenService.getLoginUserApplet().getUserId(); |
| | | } catch (Exception e) { |
| | | } |
| | | List<TQuestionnaire> list = questionnaireService.list(new LambdaQueryWrapper<TQuestionnaire>().eq(TQuestionnaire::getStatus, 2)); |
| | | |
| | | List<TQuestionnaireRecord> questionnaireRecordList = questionnaireRecordService.list(); |
| | | for (TQuestionnaire tQuestionnaire : list) { |
| | | List<String> userIds = questionnaireRecordList.stream().filter(questionnaireRecord -> questionnaireRecord.getQuestionnaireId().equals(tQuestionnaire.getId())).map(TQuestionnaireRecord::getAppUserId).collect(Collectors.toList()); |
| | | tQuestionnaire.setTotalNum(userIds.size()); |
| | | if(userId!=null && userIds.contains(userId)){ |
| | | tQuestionnaire.setState(2); |
| | | } |
| | | } |
| | | return R.ok(list); |
| | | } |
| | | |
| | | @ApiOperation(value = "问卷调查--获取题干和选项", response = TQuestionnaireStem.class) |
| | | @GetMapping(value = "/getTQuestionnaireStemList/{id}") |
| | | public R<List<TQuestionnaireStem>> getTQuestionnaireStemList(@PathVariable String id) { |
| | | List<TQuestionnaireStem> list = questionnaireStemService.list(new LambdaQueryWrapper<TQuestionnaireStem>().eq(TQuestionnaireStem::getQuestionnaireId, id)); |
| | | List<TQuestionnaireStemOption> questionnaireStemOptions = questionnaireStemOptionService.list(new LambdaQueryWrapper<TQuestionnaireStemOption>().in(TQuestionnaireStemOption::getStemId, list.stream().map(TQuestionnaireStem::getId).collect(Collectors.toList()))); |
| | | for (TQuestionnaireStem tQuestionnaireStem : list) { |
| | | tQuestionnaireStem.setOptions(questionnaireStemOptions.stream().filter(questionnaireStemOption -> questionnaireStemOption.getStemId().equals(tQuestionnaireStem.getId())).collect(Collectors.toList())); |
| | | } |
| | | return R.ok(list); |
| | | } |
| | | |
| | | @ApiOperation(value = "问卷调查--保存") |
| | | @PostMapping(value = "/saveTQuestionnaire") |
| | | public R<TQuestionnaire> saveTQuestionnaire(@RequestBody SaveTQuestionnaireDto dto) { |
| | | String userId = tokenService.getLoginUserApplet().getUserId(); |
| | | |
| | | TQuestionnaire questionnaire = questionnaireService.getById(dto.getQuestionnaireId()); |
| | | if(questionnaire.getStatus()==3){ |
| | | return R.fail("问卷已结束"); |
| | | } |
| | | if(questionnaire.getStatus()==1){ |
| | | return R.fail("问卷未开始"); |
| | | } |
| | | |
| | | long count = questionnaireRecordService.count(new LambdaQueryWrapper<TQuestionnaireRecord>().eq(TQuestionnaireRecord::getQuestionnaireId, dto.getQuestionnaireId()).eq(TQuestionnaireRecord::getAppUserId, userId)); |
| | | if (count > 0) { |
| | | return R.fail("您已作答过此问卷"); |
| | | } |
| | | List<String> tQuestionnaireStemOptionIds = dto.getTQuestionnaireStemOptionIds(); |
| | | if(!tQuestionnaireStemOptionIds.isEmpty()){ |
| | | List<TQuestionnaireStemOption> questionnaireStemOptions = questionnaireStemOptionService.listByIds(tQuestionnaireStemOptionIds); |
| | | for (TQuestionnaireStemOption questionnaireStemOption : questionnaireStemOptions) { |
| | | String answerValue = questionnaireStemOption.getAnswerValue(); |
| | | if(StringUtils.hasLength(answerValue)){ |
| | | answerValue = answerValue+","+userId; |
| | | }else{ |
| | | answerValue = userId; |
| | | } |
| | | questionnaireStemOption.setAnswerValue(answerValue); |
| | | } |
| | | questionnaireStemOptionService.updateBatchById(questionnaireStemOptions); |
| | | } |
| | | |
| | | List<TQuestionnaireStemBriefAnswer> tQuestionnaireStemBriefAnswers = dto.getTQuestionnaireStemBriefAnswers(); |
| | | if(!tQuestionnaireStemBriefAnswers.isEmpty()){ |
| | | tQuestionnaireStemBriefAnswers.forEach(e->e.setAppUserId(userId)); |
| | | questionnaireStemBriefAnswerService.saveBatch(tQuestionnaireStemBriefAnswers); |
| | | } |
| | | |
| | | TQuestionnaireRecord tQuestionnaireRecord = new TQuestionnaireRecord(); |
| | | tQuestionnaireRecord.setAppUserId(userId); |
| | | tQuestionnaireRecord.setQuestionnaireId(dto.getQuestionnaireId()); |
| | | questionnaireRecordService.save(tQuestionnaireRecord); |
| | | return R.ok(); |
| | | } |
| | | |
| | | } |