package com.ycl.jxkg.controller.student;
|
|
import com.ycl.jxkg.base.BaseApiController;
|
import com.ycl.jxkg.base.Result;
|
import com.ycl.jxkg.domain.TaskExam;
|
import com.ycl.jxkg.domain.TaskExamCustomerAnswer;
|
import com.ycl.jxkg.domain.TextContent;
|
import com.ycl.jxkg.domain.User;
|
import com.ycl.jxkg.domain.enums.ExamPaperTypeEnum;
|
import com.ycl.jxkg.domain.task.TaskItemAnswerObject;
|
import com.ycl.jxkg.domain.task.TaskItemObject;
|
import com.ycl.jxkg.service.*;
|
import com.ycl.jxkg.utils.DateTimeUtil;
|
import com.ycl.jxkg.utils.JsonUtil;
|
import com.ycl.jxkg.vo.student.dashboard.*;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@RequiredArgsConstructor
|
@RestController("StudentDashboardController")
|
@RequestMapping(value = "/api/student/dashboard")
|
public class DashboardController extends BaseApiController {
|
|
private final UserService userService;
|
private final ExamPaperService examPaperService;
|
private final QuestionService questionService;
|
private final TaskExamService taskExamService;
|
private final TaskExamCustomerAnswerService taskExamCustomerAnswerService;
|
private final TextContentService textContentService;
|
|
@RequestMapping(value = "/index", method = RequestMethod.POST)
|
public Result<IndexVO> index() {
|
IndexVO indexVO = new IndexVO();
|
User user = getCurrentUser();
|
|
PaperFilter fixedPaperFilter = new PaperFilter();
|
fixedPaperFilter.setGradeLevel(user.getUserLevel());
|
fixedPaperFilter.setExamPaperType(ExamPaperTypeEnum.Fixed.getCode());
|
indexVO.setFixedPaper(examPaperService.indexPaper(fixedPaperFilter));
|
|
PaperFilter timeLimitPaperFilter = new PaperFilter();
|
timeLimitPaperFilter.setDateTime(new Date());
|
timeLimitPaperFilter.setGradeLevel(user.getUserLevel());
|
timeLimitPaperFilter.setExamPaperType(ExamPaperTypeEnum.TimeLimit.getCode());
|
|
List<PaperInfo> limitPaper = examPaperService.indexPaper(timeLimitPaperFilter);
|
List<PaperInfoVO> paperInfoVOS = limitPaper.stream().map(d -> {
|
PaperInfoVO vo = new PaperInfoVO();
|
BeanUtils.copyProperties(d, vo);
|
vo.setStartTime(DateTimeUtil.dateFormat(d.getLimitStartTime()));
|
vo.setEndTime(DateTimeUtil.dateFormat(d.getLimitEndTime()));
|
return vo;
|
}).collect(Collectors.toList());
|
indexVO.setTimeLimitPaper(paperInfoVOS);
|
return Result.ok(indexVO);
|
}
|
|
|
@RequestMapping(value = "/task", method = RequestMethod.POST)
|
public Result<List<TaskItemVO>> task() {
|
User user = getCurrentUser();
|
List<TaskExam> taskExams = taskExamService.getByGradeLevel(user.getUserLevel());
|
if (taskExams.size() == 0) {
|
return Result.ok(new ArrayList<>());
|
}
|
List<Integer> tIds = taskExams.stream().map(taskExam -> taskExam.getId()).collect(Collectors.toList());
|
List<TaskExamCustomerAnswer> taskExamCustomerAnswers = taskExamCustomerAnswerService.selectByTUid(tIds, user.getId());
|
List<TaskItemVO> vm = taskExams.stream().map(t -> {
|
TaskItemVO itemVm = new TaskItemVO();
|
itemVm.setId(t.getId());
|
itemVm.setTitle(t.getTitle());
|
TaskExamCustomerAnswer taskExamCustomerAnswer = taskExamCustomerAnswers.stream()
|
.filter(tc -> tc.getTaskExamId().equals(t.getId())).findFirst().orElse(null);
|
List<TaskItemPaperVO> paperItemVMS = getTaskItemPaperVm(t.getFrameTextContentId(), taskExamCustomerAnswer);
|
itemVm.setPaperItems(paperItemVMS);
|
return itemVm;
|
}).collect(Collectors.toList());
|
return Result.ok(vm);
|
}
|
|
|
private List<TaskItemPaperVO> getTaskItemPaperVm(Integer tFrameId, TaskExamCustomerAnswer taskExamCustomerAnswers) {
|
TextContent textContent = textContentService.getById(tFrameId);
|
List<TaskItemObject> paperItems = JsonUtil.toJsonListObject(textContent.getContent(), TaskItemObject.class);
|
|
List<TaskItemAnswerObject> answerPaperItems = null;
|
if (null != taskExamCustomerAnswers) {
|
TextContent answerTextContent = textContentService.getById(taskExamCustomerAnswers.getTextContentId());
|
answerPaperItems = JsonUtil.toJsonListObject(answerTextContent.getContent(), TaskItemAnswerObject.class);
|
}
|
|
|
List<TaskItemAnswerObject> finalAnswerPaperItems = answerPaperItems;
|
return paperItems.stream().map(p -> {
|
TaskItemPaperVO ivm = new TaskItemPaperVO();
|
ivm.setExamPaperId(p.getExamPaperId());
|
ivm.setExamPaperName(p.getExamPaperName());
|
if (null != finalAnswerPaperItems) {
|
finalAnswerPaperItems.stream()
|
.filter(a -> a.getExamPaperId().equals(p.getExamPaperId()))
|
.findFirst()
|
.ifPresent(a -> {
|
ivm.setExamPaperAnswerId(a.getExamPaperAnswerId());
|
ivm.setStatus(a.getStatus());
|
});
|
}
|
return ivm;
|
}
|
).collect(Collectors.toList());
|
}
|
}
|