package com.ots.project.exam.controller; import com.ots.common.enums.UserTypeEnum; import com.ots.common.utils.security.ShiroUtils; import com.ots.framework.web.controller.BaseController; import com.ots.framework.web.page.TableDataInfo; import com.ots.project.exam.domain.EntTestDetail; import com.ots.project.exam.domain.TExamReport; import com.ots.project.exam.domain.comparator.IdComparator; import com.ots.project.exam.domain.comparator.TimeSpentComparator; import com.ots.project.exam.dto.QuestionReport; import com.ots.project.exam.service.ITExamReportService; import com.ots.project.system.user.domain.User; import com.ots.project.tool.exam.DateTimeUtil; import com.ots.project.tool.exam.ExamUtil; import com.ots.project.tool.exam.JsonUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; /** * entTestDetailController * * @author ots * @date 2020-03-01 */ @Controller @RequestMapping("/exam/entTestDetail") public class EntTestDetailController extends BaseController { private String prefix = "exam/entTestDetail"; @Autowired private ITExamReportService examReportService; @GetMapping("/testDetail/{tokens}") // @RequiresPermissions("exam:entTestDetail:list") public String entTestDetail(@PathVariable List tokens, ModelMap mmap) { EntTestDetail entTestDetail = new EntTestDetail(); entTestDetail.setToken(JsonUtil.toJsonStr(tokens)); User sysUser = ShiroUtils.getSysUser(); entTestDetail.setUserType(UserTypeEnum.SYS_USER.getUserType()); mmap.put("entTestDetail", entTestDetail); return prefix + "/entTestDetail"; } /** * 查询entTestDetail列表 */ // @RequiresPermissions("exam:entTestDetail:list") @PostMapping("/list") @ResponseBody public TableDataInfo list(EntTestDetail entTestDetail) { startPage(); String[] tokenIds = JsonUtil.toJsonObject(entTestDetail.getToken(), String[].class); List tExamReportList = examReportService.selectTExamReportByTokenList(tokenIds); List entTestDetailList = new ArrayList<>(); for (TExamReport tExamReport : tExamReportList) { if (Objects.isNull(tExamReport.getQuestionReport())) { continue; } List questionReportList = JsonUtil.toJsonListObject(tExamReport.getQuestionReport(), QuestionReport.class); if (ExamUtil.isListEmpty(questionReportList)) { continue; } // 遍历出每一个report for (QuestionReport questionReport : questionReportList) { EntTestDetail entTestDetailTemp = new EntTestDetail(); entTestDetailTemp.setPermanentId(questionReport.getPermanentId()); entTestDetailTemp.setId(questionReport.getId()); entTestDetailTemp.setQuestionTitle(questionReport.getQuestionTitle()); entTestDetailTemp.setMemberId(tExamReport.getMemberId()); entTestDetailTemp.setMemberName(tExamReport.getMemberName()); entTestDetailTemp.setStartTime(DateTimeUtil.parseToOften(questionReport.getStartTime())); entTestDetailTemp.setEndTime(DateTimeUtil.parseToOften(questionReport.getEndTime())); entTestDetailTemp.setTimeSpent(questionReport.getTimeSpent()); entTestDetailList.add(entTestDetailTemp); } } //按照耗时降序排列 timeSpent if (Objects.equals("TimeSpent",entTestDetail.getSortType())) { Collections.sort(entTestDetailList, new TimeSpentComparator()); }else { Collections.sort(entTestDetailList, new IdComparator()); } return getDataTable(entTestDetailList); } /** * 新增entTestDetail */ @GetMapping("/add") public String add() { return prefix + "/add"; } }