PaperVO.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package com.ruoyi.learn.domain;
  2. import com.ruoyi.enums.QuestionType;
  3. import io.swagger.annotations.ApiModel;
  4. import io.swagger.annotations.ApiModelProperty;
  5. import lombok.Data;
  6. import org.apache.commons.collections4.CollectionUtils;
  7. import java.util.Arrays;
  8. import java.util.List;
  9. @Data
  10. @ApiModel("试卷")
  11. public class PaperVO {
  12. private Long id;
  13. private Long subjectId;
  14. private String paperName;
  15. private Long year;
  16. private String paperType;
  17. private String number;
  18. private Long score;
  19. private String directKey;
  20. @ApiModelProperty("试题")
  21. List<QuestionSeq> questions;
  22. @Data
  23. @ApiModel("试题")
  24. public static class QuestionSeq {
  25. private Long id;
  26. private Long knowledgeId;
  27. private String title;
  28. private String answer1;
  29. @ApiModelProperty("非标准格式答案或含部分过程说明的答案")
  30. private String answer2;
  31. private String parse;
  32. @ApiModelProperty("序号")
  33. Integer seq;
  34. @ApiModelProperty("考题类型 question_type")
  35. Integer typeId;
  36. @ApiModelProperty("考题类型名称")
  37. String type;
  38. @ApiModelProperty("选项数组")
  39. List<String> options;
  40. List<QuestionSeq> subQuestions;
  41. }
  42. @Data
  43. @ApiModel("试题")
  44. public static class QuestionAnswer {
  45. private Long answerId;
  46. @ApiModelProperty("题ID")
  47. private Long id;
  48. private Long knowledgeId;
  49. private String title;
  50. private String answer1;
  51. @ApiModelProperty("非标准格式答案或含部分过程说明的答案")
  52. private String answer2;
  53. private String parse;
  54. @ApiModelProperty("序号")
  55. Integer seq;
  56. @ApiModelProperty("考题类型 question_type")
  57. Integer typeId;
  58. @ApiModelProperty("本卷中标记")
  59. Boolean isMark;
  60. @ApiModelProperty("是否收藏")
  61. Boolean isFavorite;
  62. @ApiModelProperty("不会做,转State")
  63. Boolean isNotKnow;
  64. @ApiModelProperty("学生回答")
  65. List<String> answers;
  66. @ApiModelProperty("答题正确状态 0 默认 1正确 2错误 3不会 4 未答")
  67. Integer state;
  68. @ApiModelProperty("试题标准分")
  69. Integer totalScore;
  70. @ApiModelProperty("学生得分")
  71. Integer score;
  72. List<QuestionAnswer> subQuestions;
  73. public Integer calcState(QuestionAnswer std, boolean isDone) {
  74. if(!isDone) {
  75. return 0;
  76. }
  77. if(null != isNotKnow && isNotKnow) {
  78. return 3;
  79. } else {
  80. QuestionType qt = QuestionType.of(this.typeId);
  81. if(QuestionType.Single.equals(qt) || QuestionType.Judgment.equals(qt)) {
  82. if(CollectionUtils.isEmpty(answers)) {
  83. return 4;
  84. }
  85. return answers.get(0).equals(std.getAnswer1()) ? 1 : 2;
  86. } else if(QuestionType.Multiple.equals(qt)) {
  87. if(CollectionUtils.isEmpty(answers)) {
  88. return 4;
  89. }
  90. List<String> stdAnswers = Arrays.asList(std.getAnswer1().split(","));
  91. return stdAnswers.size() == answers.size() && CollectionUtils.intersection(stdAnswers, answers).size() == answers.size() ? 1 : 2;
  92. }
  93. }
  94. return 0;
  95. }
  96. }
  97. }