2024-06-25 14:04:36 +08:00

200 lines
11 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.zhgd.xmgl.task;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zhgd.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService;
import com.zhgd.xmgl.modules.car.entity.CarInfo;
import com.zhgd.xmgl.modules.car.service.ICarInfoService;
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 com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService;
import com.zhgd.xmgl.modules.xz.entity.XzMaterial;
import com.zhgd.xmgl.modules.xz.service.IXzMaterialService;
import com.zhgd.xmgl.util.EmailUtils;
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;
@Autowired
private IWorkerInfoService workerInfoService;
@Autowired
private IXzMaterialService xzMaterialService;
@Autowired
private ICarInfoService carInfoService;
@Autowired
private EmailUtils emailUtils;
@Autowired
private IExamSubjectService examSubjectService;
@Autowired
private ISystemUserService systemUserService;
@Scheduled(cron = "0 0/1 * * * ?")
public void xzMaterial() {
List<XzMaterial> list = xzMaterialService.list(Wrappers.<XzMaterial>lambdaQuery().ne(XzMaterial::getIsDelete, 1));
List<String> carNumber = new ArrayList<>();
List<XzMaterial> update = new ArrayList<>();
for (XzMaterial xzMaterial : list) {
if (xzMaterial.getEntryEndTime() != null && xzMaterial.getEntryEndTime().compareTo(new Date()) < 0) {
if (StringUtils.isNotBlank(xzMaterial.getCarNumber())) {
carNumber.add(xzMaterial.getCarNumber());
xzMaterial.setIsDelete(1);
update.add(xzMaterial);
}
}
}
xzMaterialService.updateBatchById(update);
List<CarInfo> carInfos = carInfoService.list(Wrappers.<CarInfo>lambdaQuery().eq(CarInfo::getCarModuleType, 3));
if (carInfos.size() > 0) {
carInfos = carInfos.stream().filter(c -> carNumber.contains(c.getCarNumber())).collect(Collectors.toList());
if (carInfos.size() > 0) {
carInfoService.removeByIds(carInfos.stream().map(c -> c.getId()).collect(Collectors.toSet()));
for (CarInfo carInfo : carInfos) {
//同步海康
carInfoService.deleteCarInfoForHikvision(carInfo, false);
}
}
}
}
@Scheduled(cron = "0 0 8 * * ?")
public void examNotice() {
List<Project> list = projectService.list();
List<ExamNotice> noticeList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
ExamNoticeConfig examNoticeConfig = examConfigService.getOne(Wrappers.<ExamNoticeConfig>lambdaQuery()
.eq(ExamNoticeConfig::getProjectSn, list.get(i).getProjectSn())
.eq(ExamNoticeConfig::getEnable, 1));
if (examNoticeConfig != null) {
if (examNoticeConfig.getExamNum() != null && examNoticeConfig.getExamType() != null) {
List<ExamTrain> examTrainList = examTrainService.list(Wrappers.<ExamTrain>lambdaQuery().eq(ExamTrain::getProjectSn, list.get(i).getProjectSn()));
for (int j = 0; j < examTrainList.size(); j++) {
SystemUser systemUser = systemUserService.getById(examTrainList.get(j).getCreateBy());
ExamSubject examSubject = examSubjectService.getById(examTrainList.get(j).getSubjectId());
StringBuilder examTrain = new StringBuilder();
if (DateUtil.compare(examTrainList.get(j).getTrainBeginTime(), getTime(examNoticeConfig.getExamType(), examNoticeConfig.getExamNum())) <= 0) {
List<ExamTrainRecord> examTrainRecordList = examTrainRecordService.list(Wrappers.<ExamTrainRecord>lambdaQuery().eq(ExamTrainRecord::getTrainId, examTrainList.get(j).getId()));
for (int i1 = 0; i1 < examTrainRecordList.size(); i1++) {
if (examTrainRecordList.get(i1).getScore() == null) {
ExamNotice exist = examNoticeService.getOne(Wrappers.<ExamNotice>lambdaQuery().eq(ExamNotice::getWorkerId, examTrainRecordList.get(i1).getWorkerId())
.eq(ExamNotice::getRecordId, examTrainRecordList.get(i1).getId())
.eq(ExamNotice::getType, 1));
if (exist == null) {
WorkerInfo workerInfo = workerInfoService.getById(examTrainRecordList.get(i1).getWorkerId());
ExamNotice examNotice = new ExamNotice();
examNotice.setWorkerId(examTrainRecordList.get(i1).getWorkerId().toString());
examNotice.setWorkerName(examTrainRecordList.get(i1).getWorkerName());
examNotice.setType(1);
examNotice.setContent(StrUtil.format("参加《{}》安全教育培训", examTrainList.get(j).getName()));
examNotice.setProjectSn(list.get(i).getProjectSn());
examNotice.setEnterpriseId(workerInfo.getEnterpriseId());
examNotice.setRecordId(examTrainRecordList.get(i1).getId());
noticeList.add(examNotice);
if (StringUtils.isNotBlank(workerInfo.getPersonMail()) && DateUtil.formatDate(examTrainList.get(j).getTrainBeginTime()).equals(DateUtil.formatDate(getTime(examNoticeConfig.getExamType(), examNoticeConfig.getExamNum())))) {
examTrain.append(workerInfo.getPersonMail() + ",");
}
}
}
}
List<ExamCourseRecord> examCourseRecords = examCourseRecordService.list(Wrappers.<ExamCourseRecord>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 exist = examNoticeService.getOne(Wrappers.<ExamNotice>lambdaQuery().eq(ExamNotice::getWorkerId, examCourseRecords.get(i2).getWorkerId())
.eq(ExamNotice::getRecordId, examCourseRecords.get(i2).getId())
.eq(ExamNotice::getType, 2));
if (exist == null) {
WorkerInfo workerInfo = workerInfoService.getById(examCourseRecords.get(i2).getWorkerId());
ExamNotice examNotice = new ExamNotice();
examNotice.setWorkerId(examCourseRecords.get(i2).getWorkerId().toString());
examNotice.setWorkerName(examCourseRecords.get(i2).getWorkerName());
examNotice.setType(2);
examNotice.setContent(StrUtil.format("参加《{}》安全教育课程学习", examTrainList.get(j).getName()));
examNotice.setProjectSn(list.get(i).getProjectSn());
examNotice.setEnterpriseId(workerInfo.getEnterpriseId());
examNotice.setRecordId(examCourseRecords.get(i2).getId());
noticeList.add(examNotice);
// if (StringUtils.isNotBlank(workerInfo.getPersonMail()) && DateUtil.formatDate(examTrainList.get(j).getTrainBeginTime()).equals(DateUtil.formatDate(getTime(examNoticeConfig.getExamType(), examNoticeConfig.getExamNum())))) {
// examTrain.append(workerInfo.getPersonMail() + ",");
// }
}
}
}
}
if (StringUtils.isNotBlank(examTrain) || examTrain.length() == 0) {
emailUtils.sendHtmlMail(examTrain.toString(), "安全教育培训提醒", StrUtil.format("【尾矿固废资源综合利用项目】智慧工地管理系统提醒:您有一条培训通知请查收!\n" +
"【{}】在【{}】下发了一个培训计划名称为【{}】、科目名称为【{}】、教育主题为【{}】的培训计划," +
"需要您使用姓名、身份证号登录手机APP端进行课程学习及考试测评培训有效期限为【{}】,未避免超期未参与培训导致您的安全积分被扣除," +
"请在规定有效期限内参加培训!", systemUser.getRealName(), DateUtil.formatDateTime(new Date()), examTrainList.get(j).getName(), examSubject.getName(),
examTrainList.get(j).getTitle(), DateUtil.formatDateTime(examTrainList.get(j).getTrainBeginTime()) + " - " + DateUtil.formatDateTime(examTrainList.get(j).getTrainEndTime())));
}
}
}
}
}
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;
}
}