ExercisePaperService.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package com.qxgmat.service;
  2. import com.github.pagehelper.Page;
  3. import com.nuliji.tools.AbstractService;
  4. import com.nuliji.tools.PageResult;
  5. import com.nuliji.tools.Transform;
  6. import com.nuliji.tools.exception.ParameterException;
  7. import com.nuliji.tools.exception.SystemException;
  8. import com.nuliji.tools.mybatis.Example;
  9. import com.qxgmat.data.constants.enums.SettingKey;
  10. import com.qxgmat.data.constants.enums.logic.ExerciseLogic;
  11. import com.qxgmat.data.dao.ExercisePaperMapper;
  12. import com.qxgmat.data.dao.entity.ExercisePaper;
  13. import com.qxgmat.data.dao.entity.Question;
  14. import com.qxgmat.data.dao.entity.UserPaper;
  15. import com.qxgmat.data.dao.entity.UserReport;
  16. import com.qxgmat.data.relation.ExercisePaperRelationMapper;
  17. import com.qxgmat.data.relation.UserPaperRelationMapper;
  18. import com.qxgmat.data.relation.UserReportRelationMapper;
  19. import com.qxgmat.data.relation.entity.QuestionNoRelation;
  20. import com.qxgmat.data.relation.entity.UserExercisePaperRelation;
  21. import com.qxgmat.service.inline.QuestionService;
  22. import com.qxgmat.service.inline.UserReportService;
  23. import org.slf4j.Logger;
  24. import org.slf4j.LoggerFactory;
  25. import org.springframework.stereotype.Service;
  26. import org.springframework.transaction.annotation.Transactional;
  27. import javax.annotation.Resource;
  28. import java.util.ArrayList;
  29. import java.util.Collection;
  30. import java.util.List;
  31. @Service
  32. public class ExercisePaperService extends AbstractService {
  33. private static final Logger logger = LoggerFactory.getLogger(ExercisePaperService.class);
  34. @Resource
  35. private ExercisePaperMapper exercisePaperMapper;
  36. @Resource
  37. private ExercisePaperRelationMapper exercisePaperRelationMapper;
  38. @Resource
  39. private QuestionService questionService;
  40. @Resource
  41. private UserPaperRelationMapper userPaperRelationMapper;
  42. @Resource
  43. private UserPaperService userPaperService;
  44. @Resource
  45. private UserReportRelationMapper userReportRelationMapper;
  46. @Resource
  47. private UserReportService userReportService;
  48. /**
  49. * 获取考点分组所有可用考点信息
  50. * @return
  51. */
  52. public List<String> groupPlace(){
  53. List<ExercisePaper> p = exercisePaperRelationMapper.groupPlace();
  54. Collection ids = Transform.getIds(p, ExercisePaper.class, "id");
  55. // 获取详细数据
  56. List<ExercisePaper> list = select(ids);
  57. List<String> places = new ArrayList<>();
  58. for(ExercisePaper paper : list){
  59. places.add(paper.getLogicExtend());
  60. }
  61. return places;
  62. }
  63. /**
  64. * 查找用户作业, 并关联用户最后一次作业
  65. * @param page
  66. * @param size
  67. * @param structId
  68. * @param userId
  69. * @param logic
  70. * @param logicExtend
  71. * @param times
  72. * @return
  73. */
  74. public PageResult<UserExercisePaperRelation> list(int page, int size, Number structId, Number userId, ExerciseLogic logic, String logicExtend, Integer times){
  75. String logicKey = logic != null ? logic.key : "";
  76. Page<UserPaper> p = page(()->{
  77. userPaperRelationMapper.listExercisePaper(structId, userId, logicKey, logicExtend, times);
  78. },page, size);
  79. Collection ids = Transform.getIds(p, UserPaper.class, "id");
  80. // 获取详细数据
  81. List<UserPaper> list = userPaperService.select(ids);
  82. List<UserExercisePaperRelation> pr = Transform.convert(list, UserExercisePaperRelation.class);
  83. // 获取最后一次作业结果
  84. List<UserReport> reportList = userReportRelationMapper.listLast(ids);
  85. Collection reportIds = Transform.getIds(reportList, UserReport.class, "id");
  86. Transform.replace(reportList, userReportService.select(reportIds), UserReport.class, "id");
  87. Transform.combine(p, reportList, UserExercisePaperRelation.class, "id", "report", UserReport.class, "paperId");
  88. return new PageResult<>(pr, p.getTotal());
  89. }
  90. public ExercisePaper add(ExercisePaper paper){
  91. int result = insert(exercisePaperMapper, paper);
  92. paper = one(exercisePaperMapper, paper.getId());
  93. if(paper == null){
  94. throw new SystemException("组卷添加失败");
  95. }
  96. return paper;
  97. }
  98. public ExercisePaper edit(ExercisePaper paper){
  99. ExercisePaper in = one(exercisePaperMapper, paper.getId());
  100. if(in == null){
  101. throw new ParameterException("组卷不存在");
  102. }
  103. int result = update(exercisePaperMapper, paper);
  104. return paper;
  105. }
  106. public boolean delete(Number id){
  107. ExercisePaper in = one(exercisePaperMapper, id);
  108. if(in == null){
  109. throw new ParameterException("组卷不存在");
  110. }
  111. int result = delete(exercisePaperMapper, id);
  112. return result > 0;
  113. }
  114. public ExercisePaper get(Number id){
  115. ExercisePaper in = one(exercisePaperMapper, id);
  116. if(in == null){
  117. throw new ParameterException("组卷不存在");
  118. }
  119. return in;
  120. }
  121. public Page<ExercisePaper> select(int page, int pageSize, String keyword){
  122. Example example = new Example(ExercisePaper.class);
  123. example.and(
  124. example.createCriteria()
  125. .andEqualTo("status", 1)
  126. );
  127. if (keyword != null)
  128. example.and(
  129. example.createCriteria()
  130. .andLike("title", keyword)
  131. );
  132. return select(exercisePaperMapper, example, page, pageSize);
  133. }
  134. public List<ExercisePaper> select(Collection ids){
  135. return select(exercisePaperMapper, ids);
  136. }
  137. }