package com.zhgd.xmgl.task; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.zhgd.xmgl.modules.exam.entity.*; import com.zhgd.xmgl.modules.exam.service.*; import com.zhgd.xmgl.modules.project.entity.Project; import com.zhgd.xmgl.modules.project.service.IProjectService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @Slf4j @Component public class ExamTask { @Autowired private IProjectService projectService; @Autowired private IExamPaperService examPaperService; @Autowired private IExamRecordService examRecordService; @Autowired private IExamCourseTaskService examCourseTaskService; @Autowired private IExamCourseService examCourseService; @Autowired private IExamCourseRecordService examCourseRecordService; @Autowired private IExamNoticeConfigService examConfigService; @Autowired private IExamTrainService examTrainService; @Autowired private IExamTrainRecordService examTrainRecordService; @Autowired private IExamNoticeService examNoticeService; @Scheduled(cron = "0 0/1 * * * ?") public void examNotice() { List list = projectService.list(); List noticeList = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { ExamNoticeConfig examNoticeConfig = examConfigService.getOne(Wrappers.lambdaQuery() .eq(ExamNoticeConfig::getProjectSn, list.get(i).getProjectSn()) .eq(ExamNoticeConfig::getEnable, 1)); if (examNoticeConfig != null) { if (examNoticeConfig.getExamNum() != null && examNoticeConfig.getExamType() != null) { List examTrainList = examTrainService.list(Wrappers.lambdaQuery().eq(ExamTrain::getProjectSn, list.get(i).getProjectSn())); for (int j = 0; j < examTrainList.size(); j++) { if (DateUtil.compare(examTrainList.get(j).getTrainBeginTime(), getTime(examNoticeConfig.getExamType(), examNoticeConfig.getExamNum())) < 0) { List examTrainRecordList = examTrainRecordService.list(Wrappers.lambdaQuery().eq(ExamTrainRecord::getTrainId, examTrainList.get(j).getId())); for (int i1 = 0; i1 < examTrainRecordList.size(); i1++) { if (examTrainRecordList.get(i1).getScore() == null) { ExamNotice examNotice = new ExamNotice(); examNotice.setWorkerId(examTrainRecordList.get(i1).getWorkerId().toString()); examNotice.setWorkerName(examTrainRecordList.get(i1).getWorkerName()); examNotice.setType(1); examNotice.setContent("参加安全教育培训"); examNotice.setProjectSn(list.get(i).getProjectSn()); noticeList.add(examNotice); } } List examCourseRecords = examCourseRecordService.list(Wrappers.lambdaQuery() .eq(ExamCourseRecord::getTrainId, examTrainList.get(j).getId())); for (int i2 = 0; i2 < examCourseRecords.size(); i2++) { if (examCourseRecords.get(i2).getNumber() == null || examCourseRecords.get(i2).getNumber() == 0) { ExamNotice examNotice = new ExamNotice(); examNotice.setWorkerId(examCourseRecords.get(i2).getWorkerId().toString()); examNotice.setWorkerName(examCourseRecords.get(i2).getWorkerName()); examNotice.setType(1); examNotice.setContent("参加安全教育课程学习"); examNotice.setProjectSn(list.get(i).getProjectSn()); noticeList.add(examNotice); } } } } } // if (examNoticeConfig.getExamNum() != null && examNoticeConfig.getExamType() != null) { // List examPapers = examPaperService.list(Wrappers.lambdaQuery().eq(ExamPaper::getProjectSn, list.get(i))); // for (int j = 0; j < examPapers.size(); j++) { // if (DateUtil.compare(new Date(), getTime(examNoticeConfig.getExamType(), examNoticeConfig.getExamNum())) < 0) { // List examRecords = examRecordService.list(Wrappers.lambdaQuery().eq(ExamRecord::getExamId, examPapers.get(j))); // for (int i1 = 0; i1 < examRecords.size(); i1++) { // if (examRecords.get(i1).getScore() == null) { // ExamNotice examNotice = new ExamNotice(); // examNotice.setWorkerId(examRecords.get(i1).getUserId()); // examNotice.setWorkerName(examRecords.get(i1).getUserName()); // examNotice.setType(1); // examNotice.setContent("参加安全教育课程考试"); // examNotice.setProjectSn(list.get(i).getProjectSn()); // noticeList.add(examNotice); // } // } // } // } // } // if (examNoticeConfig.getCourseNum() != null && examNoticeConfig.getCourseType() != null) { // List examCourseList = examCourseService.list(Wrappers.lambdaQuery().eq(ExamCourse::getProjectSn, list.get(i))); // for (int j = 0; j < examCourseList.size(); j++) { // if (DateUtil.compare(new Date(), getTime(examNoticeConfig.getCourseType(), examNoticeConfig.getCourseNum())) < 0) { // List examCourseRecords = examCourseRecordService.list(Wrappers.lambdaQuery().eq(ExamCourseRecord::getCourseId, examCourseList.get(j))); //// List examCourseTasks = examCourseTaskService.list(Wrappers.lambdaQuery() //// .in(ExamCourseTask::getRecordId, examCourseRecords.stream().map(r -> r.getId()).collect(Collectors.toList()))); // for (int i1 = 0; i1 < examCourseRecords.size(); i1++) { // if (examCourseRecords.get(i).getNumber() == null || examCourseRecords.get(i).getNumber() == 0) { // ExamNotice examNotice = new ExamNotice(); // examNotice.setWorkerId(examCourseRecords.get(i1).getWorkerId().toString()); // examNotice.setWorkerName(examCourseRecords.get(i1).getWorkerName()); // examNotice.setType(1); // examNotice.setContent("参加安全教育课程学习"); // examNotice.setProjectSn(list.get(i).getProjectSn()); // noticeList.add(examNotice); // } // } // } // } // } } } examNoticeService.saveBatch(noticeList); } private DateTime getTime(int type, int num){ DateTime dateTime = null; if (type == 1) { dateTime = DateUtil.offsetHour(new Date(), num); } else if (type == 2) { dateTime = DateUtil.offsetDay(new Date(), num); } return dateTime; } }