ExamTestController.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package com.ghsc.partybuild.controller.exammanage;
  2. import com.ghsc.partybuild.controller.jsonmodel.RequsetData;
  3. import com.ghsc.partybuild.service.UserService;
  4. import com.ghsc.partybuild.service.exammanage.ExamTestService;
  5. import com.ghsc.partybuild.util.DateUtils;
  6. import com.ghsc.partybuild.util.MapUtils;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.web.bind.annotation.*;
  9. import java.time.LocalDate;
  10. import java.time.format.DateTimeFormatter;
  11. import java.util.ArrayList;
  12. import java.util.Arrays;
  13. import java.util.List;
  14. import java.util.Map;
  15. import java.util.stream.Collectors;
  16. @RestController
  17. @RequestMapping(value = "/api/examtest")
  18. public class ExamTestController {
  19. @Autowired
  20. private ExamTestService examTestService;
  21. @Autowired
  22. private UserService userService;
  23. @Autowired
  24. private MapUtils mapUtils;
  25. @Autowired
  26. private DateUtils dateUtils;
  27. @ResponseBody
  28. @PostMapping("/getPracticeQuestions")
  29. public RequsetData<List<Map<String, Object>>> getPracticeQuestions(@RequestBody Map<String, Object> JsonObject) throws Exception {
  30. RequsetData<List<Map<String, Object>>> result = new RequsetData<>();
  31. List<Integer> typeList = (List<Integer>) JsonObject.get("typeList");
  32. List<String> labaryidList = (List<String>) JsonObject.get("labaryidList");
  33. Integer questionnumber = (Integer) JsonObject.get("questionnumber");
  34. List<Map<String, Object>> list = examTestService.selectePracticeQuestions(labaryidList, typeList, questionnumber);
  35. result.setItem(list);
  36. return result;
  37. }
  38. @ResponseBody
  39. @PostMapping("/autoReaderPaper")
  40. public RequsetData<List<Map<String, Object>>> autoReaderPaper(@RequestBody Map<String, Object> reqMap) {
  41. RequsetData<List<Map<String, Object>>> result = new RequsetData<>();
  42. List<Map<String, Object>> userQuestionList = (List<Map<String, Object>>) reqMap.get("userQuestionList");
  43. this.readPaper(userQuestionList);
  44. result.setItem(userQuestionList);
  45. return result;
  46. }
  47. private void readPaper(List<Map<String, Object>> userQuestionList) {
  48. for (Map<String, Object> ques : userQuestionList) {
  49. List<Map<String, Object>> answers = (List<Map<String, Object>>) ques.get("ANSWERS");
  50. boolean isRight = false;
  51. switch (Integer.parseInt(ques.get("BASE_QUESTION_TYPE_ID").toString())) {
  52. case 1://单选题
  53. case 4://判断题
  54. String useranswer = (String) ques.get("useranswer");
  55. if (useranswer == null) {
  56. break;
  57. }
  58. isRight = answers.stream().filter(ans -> {
  59. return ans.get("ISRIGHT").equals(1) && ans.get("PROVID_ANSWER_ID").equals(useranswer);
  60. }).count() > 0;
  61. ques.put("isRight", isRight);
  62. break;
  63. case 3://多选题
  64. long useranswerNum = answers.stream().filter(ans -> ans.get("useranswer") != null).count();
  65. if (useranswerNum == 0) {
  66. break;
  67. }
  68. String rightNum = answers.stream().filter(ans ->
  69. ans.get("ISRIGHT").equals(1)
  70. ).map(x -> x.get("ORDER").toString()).collect(Collectors.joining(","));
  71. String userRightNum = answers.stream().filter(ans ->
  72. ans.get("useranswer") != null && (boolean) ans.get("useranswer")
  73. ).map(x -> x.get("ORDER").toString()).collect(Collectors.joining(","));
  74. isRight = rightNum.equals(userRightNum);
  75. ques.put("isRight", isRight);
  76. break;
  77. case 2://填空题
  78. case 5://简答题
  79. break;
  80. }
  81. }
  82. }
  83. @ResponseBody
  84. @GetMapping("/updateTestManStatu")
  85. public RequsetData<Integer> updateTestManStatu(@RequestParam(required = false) String testmanId,
  86. @RequestParam(required = false) Short manStatu) {
  87. RequsetData<Integer> result = new RequsetData<>();
  88. int count = 0;
  89. String message = "";
  90. try {
  91. count = examTestService.updateTestManStatu(testmanId, manStatu);
  92. result.setItem(count);
  93. } catch (Exception ex) {
  94. message = ex.getMessage();
  95. }
  96. result.setSuccess(count > 0);
  97. result.setMsg(message);
  98. return result;
  99. }
  100. @ResponseBody
  101. @GetMapping("/getUserTestPaperQuestions")
  102. public RequsetData<List<Map<String, Object>>> getUserTestPaperQuestions(@RequestParam(required = false) String paperid,
  103. @RequestParam(required = false) String testid) {
  104. RequsetData<List<Map<String, Object>>> result = new RequsetData<>();
  105. List<Map<String, Object>> list = examTestService.selecteUserTestPaperQuestions(paperid, testid, userService.getLoginUser().getUserid());
  106. result.setItem(list);
  107. return result;
  108. }
  109. @ResponseBody
  110. @PostMapping("/submitExamTest")
  111. public RequsetData<String> submitExamTest(@RequestBody Map<String, Object> reqMap) {
  112. List<Map<String, Object>> userQuestionList = (List<Map<String, Object>>) reqMap.get("userQuestionList");
  113. String onlinetestId = (String) reqMap.get("onlinetestId");
  114. String testmanId = (String) reqMap.get("testmanId");
  115. return examTestService.submitExamTest(onlinetestId, testmanId, userQuestionList);
  116. }
  117. }