package com.ghsc.partybuild.controller.exammanage; import com.ghsc.partybuild.controller.jsonmodel.RequsetData; import com.ghsc.partybuild.service.UserService; import com.ghsc.partybuild.service.exammanage.ExamTestService; import com.ghsc.partybuild.util.DateUtils; import com.ghsc.partybuild.util.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @RestController @RequestMapping(value = "/api/examtest") public class ExamTestController { @Autowired private ExamTestService examTestService; @Autowired private UserService userService; @Autowired private MapUtils mapUtils; @Autowired private DateUtils dateUtils; @ResponseBody @PostMapping("/getPracticeQuestions") public RequsetData>> getPracticeQuestions(@RequestBody Map JsonObject) throws Exception { RequsetData>> result = new RequsetData<>(); List typeList = (List) JsonObject.get("typeList"); List labaryidList = (List) JsonObject.get("labaryidList"); Integer questionnumber = (Integer) JsonObject.get("questionnumber"); List> list = examTestService.selectePracticeQuestions(labaryidList, typeList, questionnumber); result.setItem(list); return result; } @ResponseBody @PostMapping("/autoReaderPaper") public RequsetData>> autoReaderPaper(@RequestBody Map reqMap) { RequsetData>> result = new RequsetData<>(); List> userQuestionList = (List>) reqMap.get("userQuestionList"); this.readPaper(userQuestionList); result.setItem(userQuestionList); return result; } private void readPaper(List> userQuestionList) { for (Map ques : userQuestionList) { List> answers = (List>) ques.get("ANSWERS"); boolean isRight = false; switch (Integer.parseInt(ques.get("BASE_QUESTION_TYPE_ID").toString())) { case 1://单选题 case 4://判断题 String useranswer = (String) ques.get("useranswer"); if (useranswer == null) { break; } isRight = answers.stream().filter(ans -> { return ans.get("ISRIGHT").equals(1) && ans.get("PROVID_ANSWER_ID").equals(useranswer); }).count() > 0; ques.put("isRight", isRight); break; case 3://多选题 long useranswerNum = answers.stream().filter(ans -> ans.get("useranswer") != null).count(); if (useranswerNum == 0) { break; } String rightNum = answers.stream().filter(ans -> ans.get("ISRIGHT").equals(1) ).map(x -> x.get("ORDER").toString()).collect(Collectors.joining(",")); String userRightNum = answers.stream().filter(ans -> ans.get("useranswer") != null && (boolean) ans.get("useranswer") ).map(x -> x.get("ORDER").toString()).collect(Collectors.joining(",")); isRight = rightNum.equals(userRightNum); ques.put("isRight", isRight); break; case 2://填空题 case 5://简答题 break; } } } @ResponseBody @GetMapping("/updateTestManStatu") public RequsetData updateTestManStatu(@RequestParam(required = false) String testmanId, @RequestParam(required = false) Short manStatu) { RequsetData result = new RequsetData<>(); int count = 0; String message = ""; try { count = examTestService.updateTestManStatu(testmanId, manStatu); result.setItem(count); } catch (Exception ex) { message = ex.getMessage(); } result.setSuccess(count > 0); result.setMsg(message); return result; } @ResponseBody @GetMapping("/getUserTestPaperQuestions") public RequsetData>> getUserTestPaperQuestions(@RequestParam(required = false) String paperid, @RequestParam(required = false) String testid) { RequsetData>> result = new RequsetData<>(); List> list = examTestService.selecteUserTestPaperQuestions(paperid, testid, userService.getLoginUser().getUserid()); result.setItem(list); return result; } @ResponseBody @PostMapping("/submitExamTest") public RequsetData submitExamTest(@RequestBody Map reqMap) { List> userQuestionList = (List>) reqMap.get("userQuestionList"); String onlinetestId = (String) reqMap.get("onlinetestId"); String testmanId = (String) reqMap.get("testmanId"); return examTestService.submitExamTest(onlinetestId, testmanId, userQuestionList); } }