MarkStudentService.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. package com.qmth.teachcloud.mark.service;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.baomidou.mybatisplus.extension.service.IService;
  5. import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
  6. import com.qmth.teachcloud.common.entity.BasicExam;
  7. import com.qmth.teachcloud.common.entity.BasicExamStudent;
  8. import com.qmth.teachcloud.common.entity.SysUser;
  9. import com.qmth.teachcloud.common.enums.ScanStatus;
  10. import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
  11. import com.qmth.teachcloud.common.enums.mark.SubjectiveStatus;
  12. import com.qmth.teachcloud.mark.bean.UpdateTimeVo;
  13. import com.qmth.teachcloud.mark.bean.archivescore.ArchiveStudentQuery;
  14. import com.qmth.teachcloud.mark.bean.archivescore.ArchiveStudentVo;
  15. import com.qmth.teachcloud.mark.bean.archivescore.MarkStudentScoreVo;
  16. import com.qmth.teachcloud.mark.bean.archivescore.ScoreReportVo;
  17. import com.qmth.teachcloud.mark.bean.omredit.OmrEditDomain;
  18. import com.qmth.teachcloud.mark.bean.scananswer.AnswerQueryDomain;
  19. import com.qmth.teachcloud.mark.bean.scananswer.AnswerQueryVo;
  20. import com.qmth.teachcloud.mark.bean.scanexaminfo.ScanExamCheckInfoVo;
  21. import com.qmth.teachcloud.mark.bean.scanexaminfo.ScanExamInfoVo;
  22. import com.qmth.teachcloud.mark.bean.student.AbsentManualUpdateVo;
  23. import com.qmth.teachcloud.mark.bean.student.MarkStudentQuery;
  24. import com.qmth.teachcloud.mark.bean.student.StudentQuery;
  25. import com.qmth.teachcloud.mark.bean.student.StudentVo;
  26. import com.qmth.teachcloud.mark.dto.ScanOmrTaskStatusDto;
  27. import com.qmth.teachcloud.mark.dto.mark.AbInfoVo;
  28. import com.qmth.teachcloud.mark.dto.mark.MarkStudentVo;
  29. import com.qmth.teachcloud.mark.dto.mark.manage.Task;
  30. import com.qmth.teachcloud.mark.dto.mark.score.SheetUrlDto;
  31. import com.qmth.teachcloud.mark.dto.mark.score.StudentObjectiveDetailDto;
  32. import com.qmth.teachcloud.mark.dto.mark.score.StudentScoreDetailDto;
  33. import com.qmth.teachcloud.mark.entity.MarkPaper;
  34. import com.qmth.teachcloud.mark.entity.MarkStudent;
  35. import com.qmth.teachcloud.mark.entity.ScanStudentPaper;
  36. import com.qmth.teachcloud.mark.enums.PaperTypeCheckStatus;
  37. import com.qmth.teachcloud.mark.params.MarkHeaderResult;
  38. import org.springframework.web.multipart.MultipartFile;
  39. import javax.servlet.http.HttpServletResponse;
  40. import javax.validation.constraints.NotNull;
  41. import java.util.List;
  42. import java.util.Set;
  43. /**
  44. * <p>
  45. * 考试考生库 服务类
  46. * </p>
  47. *
  48. * @author xf
  49. * @since 2023-09-22
  50. */
  51. public interface MarkStudentService extends IService<MarkStudent> {
  52. List<String> listClassByExamIdAndCourseCode(Long examId, String paperNumber);
  53. void updateSubjectiveStatusAndScore(Long studentId, SubjectiveStatus status, Double score, String scoreList);
  54. void updateSubjectiveStatusAndScore(Long examId, String paperNumber, SubjectiveStatus status, Double score, String scoreList);
  55. ScanExamInfoVo getScanExamInfo(BasicExam exam, Long courseId, String coursePaperId);
  56. IPage<StudentScoreDetailDto> pageStudentScore(Long examId, String paperNumber, String college, String majorName,
  57. String teachClassName, String className, String teacher, Integer filter, String status, Boolean breach,
  58. Double startScore, Double endScore, Double subjectiveStartScore, Double subjectiveEndScore, Double objectiveStartScore, Double objectiveEndScore,
  59. Double subScore, Integer objectiveScoreRateLt, String studentName, String studentCode, String secretNumber, String orderType,
  60. String orderField, Integer pageNumber, Integer pageSize);
  61. /**
  62. * 评卷管理/成绩检查/成绩详情导出
  63. *
  64. * @param examId
  65. * @param paperNumber
  66. * @param college
  67. * @param majorName
  68. * @param teachClassName
  69. * @param className
  70. * @param teacher
  71. * @param filter
  72. * @param status
  73. * @param breach
  74. * @param startScore
  75. * @param endScore
  76. * @param subjectiveStartScore
  77. * @param subjectiveEndScore
  78. * @param objectiveStartScore
  79. * @param objectiveEndScore
  80. * @param subScore
  81. * @param objectiveScoreRateLt
  82. * @param studentName
  83. * @param studentCode
  84. * @param orderType
  85. * @param orderField
  86. * @return
  87. */
  88. List<StudentScoreDetailDto> pageStudentScoreExport(Long examId, String paperNumber, String college, String majorName, String teachClassName,
  89. String className, String teacher, Integer filter, String status, Boolean breach, Double startScore, Double endScore,
  90. Double subjectiveStartScore, Double subjectiveEndScore, Double objectiveStartScore, Double objectiveEndScore,
  91. Double subScore, Integer objectiveScoreRateLt, String studentName, String studentCode, String secretNumber, String orderType,
  92. String orderField);
  93. List<SheetUrlDto> buildSheetUrls(Long studentId);
  94. int getPaperTypeCheckCount(Long examId, Long courseId, String coursePaperId, PaperTypeCheckStatus status, DataPermissionRule dpr);
  95. ScanExamCheckInfoVo checkInfo(BasicExam exam, Long courseId, String coursePaperId);
  96. /**
  97. * 根据考生当前绑定的paper刷新考生状态,需要在外部调用处对考生上锁
  98. *
  99. * @param userId userId
  100. * @param studentId studentId
  101. * @param updateOmrTask updateOmrTask
  102. * @param omrEdit 是否是'修改答题卡识别结果'调用
  103. */
  104. void updateStudentByPaper(@NotNull Long userId, @NotNull Long studentId, @NotNull boolean updateOmrTask, @NotNull boolean omrEdit, @NotNull boolean omrAssigned);
  105. MarkStudent findByExamIdAndCoursePaperIdAndStudentCode(Long examId, String coursePaperId, String studentCode);
  106. MarkStudent findByExamIdAndPaperNumberAndStudentCode(Long examId, String paperNumber, String studentCode);
  107. List<MarkStudent> listByStudentId(Long studentId);
  108. StudentObjectiveDetailDto getObjectiveInspectedTask(Long studentId);
  109. Boolean saveObjectiveInspectedTask(Long studentId, String answers);
  110. int countUploadedByExamIdAndPaperNumber(Long examId, String paperNumber);
  111. boolean updateScanInfo(MarkStudent student);
  112. List<MarkStudent> listAbsentOrBreachMarkTaskStudent(Long examId, String paperNumber);
  113. List<MarkStudent> listUnMarkTaskStudent(Long examId, String paperNumber, Integer groupNumber, int pageSize);
  114. void calculateObjectiveScore(MarkStudent student);
  115. void updateStudentAndPaper(SysUser user, Long studentId, List<ScanStudentPaper> studentPaperList, boolean clearMarkTask);
  116. StudentVo findOne(StudentQuery query);
  117. int countByExamIdAndSecretNumber(Long examId, String secretNumber);
  118. List<MarkStudent> listByExamIdAndCoursePaperId(Long examId, String coursePaperId);
  119. IPage<AnswerQueryVo> query(AnswerQueryDomain query);
  120. List<String> summary(AnswerQueryDomain query);
  121. UpdateTimeVo omrEdit(Long userId, OmrEditDomain domain);
  122. long countByExamIdAndPaperNumber(Long examId, String paperNumber);
  123. long countByExamIdAndPaperNumberAndSerialNumber(Long examId, String paperNumber, Integer serialNumber);
  124. AbsentManualUpdateVo absentManualUpdate(Long examId, String coursePaperId, String studentCode, Boolean manualAbsent);
  125. UpdateTimeVo confirm(Long examId, String coursePaperId, String studentCode, Boolean omrAbsent);
  126. List<Long> findIdByExamIdAndPaperNumber(Long examId, String paperNumber);
  127. Task getSubjectiveInspectedTask(Long studentId);
  128. void saveSubjectiveInspectedTask(MarkHeaderResult markResult);
  129. IPage<ArchiveStudentVo> studentList(ArchiveStudentQuery query);
  130. void scoreExport(ArchiveStudentQuery query, HttpServletResponse response);
  131. ScoreReportVo scoreReport(ArchiveStudentQuery query);
  132. void exportUnexist(Long examId, Long courseId, String coursePaperId, HttpServletResponse response);
  133. int countByExamIdAndPaperNumberAndMarkStatus(Long examId, String paperNumber, SubjectiveStatus status);
  134. void updateCheckInfo(Long studentId, Long userId);
  135. int countOmrAbsentStudent(Long examId, String paperNumber, boolean isOmrAbsentConfirm);
  136. int countOmrAbsentStudent(Long examId, String paperNumber, boolean isOmrAbsentConfirm, String teachClassName);
  137. void scoreReportDownload(MultipartFile file, HttpServletResponse response);
  138. void deleteByExamIdAndPaperNumber(Long examId, String paperNumber);
  139. boolean calcObjectiveScore(Long examId, String paperNumber);
  140. IPage<MarkStudent> pageByExamAndPaperNumber(Long examId, String paperNumber, int pageNumber, int pageSize);
  141. void updateObjectiveScoreAndScoreList(MarkStudent markStudent);
  142. boolean updateAssignConfirm(Long studentId, boolean assignConfirm);
  143. int getAssignedCount(Long examId, Boolean checked, Long courseId, String coursePaperId, MarkPaperStatus status,
  144. DataPermissionRule dpr);
  145. int getAssignedCount(Long examId, Boolean checked, Long courseId, String coursePaperId, MarkPaperStatus status,
  146. DataPermissionRule dpr, String teachClassName);
  147. int countAbsentByExamIdAndPaperNumber(Long examId, String paperNumber);
  148. List<MarkStudent> listScanCollegeByExamIdAndCourseCodeAndCoursePaperId(Long examId, Long courseId, String coursePaperId, String status, DataPermissionRule dpr);
  149. int countUnexistByExamIdAndPaperNumber(Long examId, String paperNumber);
  150. void updateStudentAnswer(@NotNull Long studentId);
  151. List<MarkStudentScoreVo> listMarkStudentScoreList(Long examId, String paperNumber);
  152. void trackExport(Long examId, String paperNumber, HttpServletResponse response);
  153. void sheetExport(Long examId, String paperNumber, HttpServletResponse response);
  154. MarkStudent assembleByBasicExamStudent(BasicExamStudent basicExamStudent, MarkPaper markPaper, Set<String> secretNumberSet, boolean containPaperType);
  155. void deleteByBasicStudentId(List<Long> basicExamStudentIds);
  156. Integer maxCardNumber(Long examId, String paperNumber);
  157. void scoreDownload(ArchiveStudentQuery query, HttpServletResponse response);
  158. Boolean missScanUpdate(Long examId, String coursePaperId, String studentCode, Boolean missScan);
  159. MarkStudentVo getMarkStudentVoByStudentId(Long studentId);
  160. List<MarkStudentVo> listMarkStudentVo(MarkStudentQuery markStudentQuery);
  161. IPage<MarkStudentVo> pageMarkStudentVo(Page<MarkStudentVo> page, MarkStudentQuery markStudentQuery);
  162. MarkStudent findByBasicStudentId(Long basicStudentId);
  163. void updateBasicExamStudentPaperType(Long markStudentId);
  164. boolean calcBatchObjectiveScore(List<Long> ids);
  165. List<MarkStudent> listByBasicStudentIds(List<Long> basicExamStudentIds);
  166. void confirmSubjectiveInspectedTask(Long studentId);
  167. MarkStudentVo getDetailById(Long studentId);
  168. /**
  169. * 获取卷型检查状态数量
  170. *
  171. * @param examId 考试id
  172. * @param courseId 课程id
  173. * @param coursePaperId 特殊试卷编号
  174. * @return 已办和待办数量
  175. */
  176. ScanOmrTaskStatusDto getStatus(Long examId, Long courseId, String coursePaperId);
  177. /**
  178. * 处理卷型检查
  179. *
  180. * @param studentId 考生id
  181. * @param paperType 试卷类型
  182. * @return 更新时间
  183. */
  184. UpdateTimeVo disposePaperTypeCheck(Long studentId, String paperType);
  185. AbInfoVo findExamTaskPaperTypeOpenStatus(Long examId, String paperNumber);
  186. UpdateTimeVo breachUpdate(Long studentId, Boolean breach);
  187. }