package com.artfess.examine.controller; import com.artfess.base.annotation.ApiGroup; import com.artfess.base.constants.ApiGroupConsts; import com.artfess.base.enums.PaperStatusEnum; import com.artfess.base.query.FieldRelation; import com.artfess.base.query.PageList; import com.artfess.base.query.QueryFilter; import com.artfess.base.query.QueryOP; import com.artfess.examine.manager.ExamQuestionsInfoManager; import com.artfess.examine.manager.ExamUserRecordManager; import com.artfess.examine.model.ExamPaperBase; import com.artfess.examine.vo.JobStatisticalVo; import com.artfess.examine.vo.PaperAnalysisVo; import com.artfess.examine.vo.PaperStatisticalVo; import com.artfess.examine.vo.QuestionAnalysisVo; import com.artfess.examine.vo.StatisticalReqVo; import com.google.api.client.util.Lists; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; 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 java.time.LocalDateTime; import java.util.List; import java.util.concurrent.atomic.AtomicReference; /** * 考生线上考试详情 前端控制器 * * @author min.wu * @company 阿特菲斯信息技术有限公司 * @since 2022-10-19 */ @Slf4j @RestController @Api(tags = "统计分析") @RequestMapping("/exam/statistical") @ApiGroup(group = {ApiGroupConsts.GROUP_BIZ}) public class StatisticalController { @Autowired private ExamUserRecordManager userRecordManager; @Autowired private ExamQuestionsInfoManager questionsInfoManager; @PostMapping(value = "/paper", produces = {"application/json; charset=utf-8"}) @ApiOperation("考试统计") public PageList trainingPaperQuery(@ApiParam(name = "queryFilter", value = "分页查询信息") @RequestBody QueryFilter queryFilter) { AtomicReference paperStatus = new AtomicReference<>(); queryFilter.getQuerys().forEach(queryField -> { //如果是模拟训练则只能查看自己创建的试卷 if ("paperStatus".equals(queryField.getProperty())) { paperStatus.set(queryField.getValue() + ""); } }); if (PaperStatusEnum.notRelease.getType().equals(paperStatus.get())) { queryFilter.addFilter("s.plan_start_time_", LocalDateTime.now(), QueryOP.GREAT, FieldRelation.AND); } else if (PaperStatusEnum.inTets.getType().equals(paperStatus.get())) { queryFilter.addFilter("s.plan_start_time_", LocalDateTime.now(), QueryOP.LESS, FieldRelation.AND); queryFilter.addFilter("s.plan_end_time_", LocalDateTime.now(), QueryOP.GREAT_EQUAL, FieldRelation.AND); } else if (PaperStatusEnum.finish.getType().equals(paperStatus.get())) { queryFilter.addFilter("s.plan_end_time_", LocalDateTime.now(), QueryOP.LESS, FieldRelation.AND); } if (!StringUtils.isEmpty(paperStatus.get())) { queryFilter.getQuerys().removeIf(s -> "paperStatus".equals(s.getProperty())); } queryFilter.addFilter("b.type_", "1", QueryOP.EQUAL); List statusList = Lists.newArrayList(); statusList.add("1"); statusList.add("2"); queryFilter.addFilter("s.status_", statusList, QueryOP.IN); queryFilter.addFilter("b.is_dele_", "0", QueryOP.EQUAL); return userRecordManager.paperStatistical(queryFilter); } @PostMapping(value = "/paperAnalysis", produces = {"application/json; charset=utf-8"}) @ApiOperation("试卷分析") public PaperAnalysisVo paperAnalysis() { return userRecordManager.paperAnalysis(); } @PostMapping(value = "/questionAnalysis", produces = {"application/json; charset=utf-8"}) @ApiOperation("题库分析") public QuestionAnalysisVo questionAnalysis(@ApiParam(name = "reqVo", value = "入参") @RequestBody StatisticalReqVo reqVo) { return questionsInfoManager.questionAnalysis(reqVo); } @PostMapping(value = "/jobStatistical", produces = {"application/json; charset=utf-8"}) @ApiOperation("工作台统计") public JobStatisticalVo jobStatistical() { return userRecordManager.jobStatistical(); } }