| | |
| | | package com.ots.project.exam.restcontroller; |
| | | |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.ots.common.constant.Constants; |
| | |
| | | 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.Arrays; |
| | | import java.util.HashMap; |
| | |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.Set; |
| | | |
| | | @RestController("StudentExamPaperController") |
| | | @RequestMapping(value = "/api/exam/paper") |
| | | @AllArgsConstructor |
| | | @Slf4j |
| | | public class ExamPaperController extends BaseApiController { |
| | | |
| | | @Autowired |
| | | private IExamPaperService examPaperService; |
| | | |
| | | @Autowired |
| | | private TExamPaperServiceImpl itExamPaperService; |
| | | |
| | | @Autowired |
| | | private ITExamReportService examReportService; |
| | | |
| | | @Autowired |
| | | MemberService memberService; |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(Threads.class); |
| | | |
| | | @RequestMapping(value = "/select/{tokenId}/{langType}", method = RequestMethod.POST) |
| | | public RestResponse<ExamPaperEditRequestVM> select(@PathVariable String tokenId, @PathVariable String langType) { |
| | | RelatedParty relatedParty = memberService.queryProdidByToken(tokenId); |
| | | ExamPaperEditRequestVM vm = examPaperService.examPaperToVM(relatedParty, tokenId, langType); |
| | | return RestResponse.ok(vm); |
| | | } |
| | | |
| | | |
| | | @RequestMapping(value = "/selectTokenId/{selectTokenId}", method = RequestMethod.POST) |
| | | public RestResponse<ExamResultRequestVM> selectTokenId(@PathVariable String selectTokenId) { |
| | | try { |
| | |
| | | tExamReport.setTokenId(selectTokenId); |
| | | List<TExamReport> tExamReportList = examReportService.selectTExamReportList(tExamReport); |
| | | ExamResultRequestVM examResultRequestVM = new ExamResultRequestVM(); |
| | | |
| | | TExamPaper tExamPaper = itExamPaperService.selectTExamPaperById(memberService.queryProdidByToken(selectTokenId).getProdId()); |
| | | |
| | | examResultRequestVM.setDoUrl(tExamPaper.getQuestionTemplateId()); |
| | | examResultRequestVM.setReportTemplateId(tExamPaper.getReportTemplateId()); |
| | | |
| | | RelatedParty relatedParty = memberService.queryProdidByToken(selectTokenId); |
| | | examResultRequestVM.setStatus(relatedParty.getStatus()); |
| | | |
| | | TExamReport tExamReportResult = null; |
| | | if (tExamReportList.size() > 0) { |
| | | tExamReportResult = tExamReportList.get(0); |
| | | |
| | | // 目前只查询一个产品包给用户 |
| | | tExamReportTemp = tExamReportResult; |
| | | examResultRequestVM.setDoTime(tExamReportTemp.getDoTime()); |
| | | examResultRequestVM.setFinish(tExamReportTemp.getFinish()); |
| | | |
| | | // 获取最后一个剩余时间。比如现在有2段,获取第2段 |
| | | Integer remainTimeResult = getRemainTimeResult(tExamReportTemp); |
| | | examResultRequestVM.setRemainTime(remainTimeResult); |
| | | } else { |
| | | return RestResponse.ok(examResultRequestVM); |
| | | } |
| | | |
| | | LinkedHashMap<String, String> answerMap = JSON.parseObject(tExamReportTemp.getChoice(), LinkedHashMap.class); |
| | | |
| | | examResultRequestVM.setExamItemOrderAndContentList(new ArrayList<>()); |
| | | |
| | | if (!Objects.isNull(answerMap)) { |
| | | answerMap.forEach((k, v) -> { |
| | | ExamItemOrderAndContent examItemOrderAndContent = new ExamItemOrderAndContent(); |
| | |
| | | }); |
| | | } |
| | | |
| | | // 返回给前台指导语 |
| | | getSignalObject(examResultRequestVM, tExamPaper, tExamReportResult); |
| | | return RestResponse.ok(examResultRequestVM); |
| | | } catch (Exception e) { |
| | |
| | | return RestResponse.fail(new UserException("jsp.exam.product.noProduct", new String[]{})); |
| | | } |
| | | } |
| | | |
| | | private Integer getRemainTimeResult(TExamReport tExamReportTemp) { |
| | | Map<Integer, Integer> remainPartTimeMap = JsonUtil.parseObject(tExamReportTemp.getRemainPartTime(), HashMap.class); |
| | | if (Objects.isNull(remainPartTimeMap)) { |
| | |
| | | Arrays.sort(remainPartTimeKeys); |
| | | return remainPartTimeMap.get(remainPartTimeKeys[remainPartTimeKeys.length - 1]); |
| | | } |
| | | |
| | | private void getSignalObject(ExamResultRequestVM examResultRequestVM, TExamPaper tExamPaper, TExamReport tExamReportResult) { |
| | | List<ExamPaperTitleItem> examPaperTitleItemList = JsonUtil.parseArray(tExamPaper.getContent(), ExamPaperTitleItem.class); |
| | | List<QuestionPart> parts = examPaperTitleItemList.get(0).getParts(); |
| | | if (CollUtil.isEmpty(parts)) { |
| | | return; |
| | | } |
| | | QuestionPart questionPart = parts.get(0); |
| | | QuestionPart questionPart = parts.get(0); // 先写死 |
| | | List<SignalObject> signals = questionPart.getSignals(); |
| | | List<ReportAPIResult> reportAPIResultList = JsonUtil.parseArray(tExamReportResult.getInterfaceContent(), ReportAPIResult.class); |
| | | if (Objects.isNull(reportAPIResultList)) { |
| | | return; |
| | | } |
| | | |
| | | for (SignalObject signalObject : signals) { |
| | | if (Objects.equals(reportAPIResultList.get(0).getSignal(), signalObject.getSignal())) { |
| | | signalObject.setSignalDescription(ExamUtil.getLangString(tExamReportResult.getLangType(), signalObject.getSignalDescription())); |
| | |
| | | } |
| | | } |
| | | |
| | | // 记录登陆日志 |
| | | @RequestMapping(value = "/recordLogininfor/{selectTokenId}", method = RequestMethod.POST) |
| | | public RestResponse<ExamResultRequestVM> recordLogininfor(@PathVariable String selectTokenId) { |
| | | AsyncManager.me().execute(AsyncFactory.recordLogininfor(memberService.queryProdidByToken(selectTokenId).getMemberId().toString(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); |