ExamSummaryServiceImpl.java 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package cn.com.qmth.scancentral.service.impl;
  2. import cn.com.qmth.scancentral.dao.ExamSummaryDao;
  3. import cn.com.qmth.scancentral.entity.ExamEntity;
  4. import cn.com.qmth.scancentral.entity.ExamSummaryEntity;
  5. import cn.com.qmth.scancentral.enums.ExamStatus;
  6. import cn.com.qmth.scancentral.service.*;
  7. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.scheduling.annotation.Scheduled;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import java.util.List;
  15. @Service
  16. public class ExamSummaryServiceImpl extends ServiceImpl<ExamSummaryDao, ExamSummaryEntity>
  17. implements ExamSummaryService {
  18. private static final Logger log = LoggerFactory.getLogger(ExamSummaryServiceImpl.class);
  19. @Autowired
  20. private ExamService examService;
  21. @Autowired
  22. private StudentService studentService;
  23. @Autowired
  24. private SubjectService subjectService;
  25. @Autowired
  26. private PaperService paperService;
  27. @Autowired
  28. private BatchService batchService;
  29. @Autowired
  30. private PackageResultService packageResultService;
  31. @Override
  32. @Transactional
  33. public ExamSummaryEntity find(Long examId) {
  34. return getById(examId);
  35. }
  36. private ExamSummaryEntity build(Long examId) {
  37. ExamSummaryEntity es = new ExamSummaryEntity();
  38. es.setId(examId);
  39. es.updateScanAnswer(studentService.scanAnswerInfo(examId));
  40. es.setAnswerBatchCount(batchService.getValidCountByExam(examId));
  41. es.setAnswerMismatchCount(paperService.getMismatchCountByExam(examId));
  42. es.setSubjectCount(subjectService.countByExamId(examId));
  43. es.setPackageTotalCount(studentService.getPackageCountByExam(examId));
  44. es.setPackageScannedCount(packageResultService.getCountByExam(examId));
  45. es.setUploadProgress(studentService.getUploadProgress(examId));
  46. es.setStudentAnswerCount(studentService.getStudentAnswerCount(examId));
  47. int absentCount = studentService.countByExamIdAndExamStatus(examId, ExamStatus.ABSENT);
  48. int okCount = studentService.countByExamIdAndExamStatus(examId, ExamStatus.OK);
  49. int todoCount = studentService.countByExamIdAndExamStatus(examId, ExamStatus.UNCHECK1, ExamStatus.UNCHECK2,
  50. ExamStatus.UNCHECK3);
  51. es.setAbsentCount(absentCount);
  52. es.setOkCount(okCount);
  53. es.setTodoCount(todoCount);
  54. return es;
  55. }
  56. @Scheduled(fixedDelay = 10 * 1000, initialDelay = 5 * 1000)
  57. public void cronRefresh() {
  58. List<ExamEntity> list = examService.listEnable();
  59. for (ExamEntity exam : list) {
  60. log.info("ExamSummaryJob running for examId={}", exam.getId());
  61. saveOrUpdate(build(exam.getId()));
  62. }
  63. }
  64. }