1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package cn.com.qmth.scancentral.service.impl;
- import cn.com.qmth.scancentral.dao.ExamSummaryDao;
- import cn.com.qmth.scancentral.entity.ExamEntity;
- import cn.com.qmth.scancentral.entity.ExamSummaryEntity;
- import cn.com.qmth.scancentral.enums.ExamStatus;
- import cn.com.qmth.scancentral.service.*;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.List;
- @Service
- public class ExamSummaryServiceImpl extends ServiceImpl<ExamSummaryDao, ExamSummaryEntity>
- implements ExamSummaryService {
- private static final Logger log = LoggerFactory.getLogger(ExamSummaryServiceImpl.class);
- @Autowired
- private ExamService examService;
- @Autowired
- private StudentService studentService;
- @Autowired
- private SubjectService subjectService;
- @Autowired
- private PaperService paperService;
- @Autowired
- private BatchService batchService;
- @Autowired
- private PackageResultService packageResultService;
- @Override
- @Transactional
- public ExamSummaryEntity find(Long examId) {
- return getById(examId);
- }
- private ExamSummaryEntity build(Long examId) {
- ExamSummaryEntity es = new ExamSummaryEntity();
- es.setId(examId);
- es.updateScanAnswer(studentService.scanAnswerInfo(examId));
- es.setAnswerBatchCount(batchService.getValidCountByExam(examId));
- es.setAnswerMismatchCount(paperService.getMismatchCountByExam(examId));
- es.setSubjectCount(subjectService.countByExamId(examId));
- es.setPackageTotalCount(studentService.getPackageCountByExam(examId));
- es.setPackageScannedCount(packageResultService.getCountByExam(examId));
- es.setUploadProgress(studentService.getUploadProgress(examId));
- es.setStudentAnswerCount(studentService.getStudentAnswerCount(examId));
- int absentCount = studentService.countByExamIdAndExamStatus(examId, ExamStatus.ABSENT);
- int okCount = studentService.countByExamIdAndExamStatus(examId, ExamStatus.OK);
- int todoCount = studentService.countByExamIdAndExamStatus(examId, ExamStatus.UNCHECK1, ExamStatus.UNCHECK2,
- ExamStatus.UNCHECK3);
- es.setAbsentCount(absentCount);
- es.setOkCount(okCount);
- es.setTodoCount(todoCount);
- return es;
- }
- @Scheduled(fixedDelay = 10 * 1000, initialDelay = 5 * 1000)
- public void cronRefresh() {
- List<ExamEntity> list = examService.listEnable();
- for (ExamEntity exam : list) {
- log.info("ExamSummaryJob running for examId={}", exam.getId());
- saveOrUpdate(build(exam.getId()));
- }
- }
- }
|