package com.zhgd.xmgl.task; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zhgd.xmgl.modules.basicdata.service.INoticeService; import com.zhgd.xmgl.modules.basicdata.service.impl.SystemUserServiceImpl; import com.zhgd.xmgl.modules.dangerous.service.impl.DangerousEngineeringRecordServiceImpl; import com.zhgd.xmgl.modules.xz.special.entity.*; import com.zhgd.xmgl.modules.xz.special.service.*; import lombok.extern.slf4j.Slf4j; import net.javacrumbs.shedlock.core.SchedulerLock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.Date; import java.util.List; @Slf4j @RestController @RequestMapping("/xmgl/task") public class SpecialTask { @Lazy @Autowired DangerousEngineeringRecordServiceImpl dangerousEngineeringRecordService; @Lazy @Autowired SystemUserServiceImpl systemUserService; @Lazy @Resource IXzBlindPlatePlugSafeService xzBlindPlatePlugSafeService; @Lazy @Resource IXzGroundSafetService iXzGroundSafetService; @Lazy @Resource IXzHighJobSafeService iXzHighJobSafeService; @Lazy @Resource IXzHoistSafetyWorkService iXzHoistSafetyWorkService; @Lazy @Resource IXzLimitSpaceSafeService iXzLimitSpaceSafeService; @Lazy @Resource IXzOpenCircuitSafeService iXzOpenCircuitSafeService; @Lazy @Resource IXzSpecialOperationFireSafetyService iXzSpecialOperationFireSafetyService; @Lazy @Resource IXzTemporaryElectricitySafeService xzTemporaryElectricitySafeService; @Lazy @Autowired private INoticeService noticeService; /** * "++"、特殊作业的实施计划时间内发送消息去提醒责任人每日上传旁站记录。 消息模版【在施危大工程上传旁站记录提醒】 内容:您所负责的焙烧基坑工程【危大工程名称】,计划实施时间为2024年7月12日至2024年7月15日【计划实施时间】已开工,在施危大工程需每日上传旁站记录,请注意及时上传! * 危大工程、特殊作业的实施计划时间内发送消息去提醒责任人每日上传排查记录。 消息模版【在施危大工程上传排查记录提醒】 内容:您所负责的焙烧基坑工程【危大工程名称】,计划实施时间为2024年7月12日至2024年7月15日【计划实施时间】已开工,在施危大工程需每日上传排查记录,请注意及时上传! */ @Scheduled(cron = "0 1 0 * * ?") @SchedulerLock(name = "remindPersonUploadRecordsDailyForSpecial", lockAtMostFor = 1000 * 60 * 2, lockAtLeastFor = 1000 * 60 * 1) @RequestMapping("remindPersonUploadRecordsDailyForSpecial") public void remindPersonUploadRecordsDailyForSpecial() { List list1 = xzBlindPlatePlugSafeService.list(new LambdaQueryWrapper() .ge(XzBlindPlatePlugSafe::getWorkExecutionEndTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .le(XzBlindPlatePlugSafe::getWorkExecutionBeginTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .eq(XzBlindPlatePlugSafe::getFinalAcceptanceStatus, 1) ); for (XzBlindPlatePlugSafe record : list1) { sendNotice(record.getAssignmentPersonInCharge(), "盲板抽堵作业", record.getWorkTicketCode(), record.getWorkExecutionBeginTime(), record.getWorkExecutionEndTime(), record.getProjectSn()); } List list2 = iXzGroundSafetService.list(new LambdaQueryWrapper() .ge(XzGroundSafet::getWorkExecutionEndTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .le(XzGroundSafet::getWorkExecutionBeginTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .eq(XzGroundSafet::getFinalAcceptanceStatus, 1) ); for (XzGroundSafet record : list2) { sendNotice(record.getAssignmentPersonInCharge(), "动土作业", record.getWorkTicketCode(), record.getWorkExecutionBeginTime(), record.getWorkExecutionEndTime(), record.getProjectSn()); } List list3 = iXzHighJobSafeService.list(new LambdaQueryWrapper() .ge(XzHighJobSafe::getWorkExecutionEndTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .le(XzHighJobSafe::getWorkExecutionBeginTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .eq(XzHighJobSafe::getFinalAcceptanceStatus, 1) ); for (XzHighJobSafe record : list3) { sendNotice(record.getAssignmentPersonInCharge(), "高处作业", record.getWorkTicketCode(), record.getWorkExecutionBeginTime(), record.getWorkExecutionEndTime(), record.getProjectSn()); } List list4 = iXzHoistSafetyWorkService.list(new LambdaQueryWrapper() .ge(XzHoistSafetyWork::getWorkExecutionEndTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .le(XzHoistSafetyWork::getWorkExecutionBeginTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .eq(XzHoistSafetyWork::getFinalAcceptanceStatus, 1) ); for (XzHoistSafetyWork record : list4) { sendNotice(record.getAssignmentPersonInCharge(), "吊装安全作业", record.getWorkTicketCode(), record.getWorkExecutionBeginTime(), record.getWorkExecutionEndTime(), record.getProjectSn()); } List list5 = iXzLimitSpaceSafeService.list(new LambdaQueryWrapper() .ge(XzLimitSpaceSafe::getWorkExecutionEndTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .le(XzLimitSpaceSafe::getWorkExecutionBeginTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .eq(XzLimitSpaceSafe::getFinalAcceptanceStatus, 1) ); for (XzLimitSpaceSafe record : list5) { sendNotice(record.getAssignmentPersonInCharge(), "受限空间作业", record.getWorkTicketCode(), record.getWorkExecutionBeginTime(), record.getWorkExecutionEndTime(), record.getProjectSn()); } List list6 = iXzOpenCircuitSafeService.list(new LambdaQueryWrapper() .ge(XzOpenCircuitSafe::getWorkExecutionEndTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .le(XzOpenCircuitSafe::getWorkExecutionBeginTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .eq(XzOpenCircuitSafe::getFinalAcceptanceStatus, 1) ); for (XzOpenCircuitSafe record : list6) { sendNotice(record.getAssignmentPersonInCharge(), "断路作业", record.getWorkTicketCode(), record.getWorkExecutionBeginTime(), record.getWorkExecutionEndTime(), record.getProjectSn()); } List list7 = iXzSpecialOperationFireSafetyService.list(new LambdaQueryWrapper() .ge(XzSpecialOperationFireSafety::getHotWorkExecutionEndTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .le(XzSpecialOperationFireSafety::getHotWorkExecutionBeginTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .eq(XzSpecialOperationFireSafety::getFinalAcceptanceStatus, 1) ); for (XzSpecialOperationFireSafety record : list7) { sendNotice(record.getAssignmentPersonInCharge(), "动火作业", record.getWorkTicketCode(), record.getHotWorkExecutionBeginTime(), record.getHotWorkExecutionEndTime(), record.getProjectSn()); } List list8 = xzTemporaryElectricitySafeService.list(new LambdaQueryWrapper() .ge(XzTemporaryElectricitySafe::getWorkExecutionEndTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .le(XzTemporaryElectricitySafe::getWorkExecutionBeginTime, DateUtil.format(new Date(), "yyyy-MM-dd")) .eq(XzTemporaryElectricitySafe::getFinalAcceptanceStatus, 1) ); for (XzTemporaryElectricitySafe record : list8) { sendNotice(record.getAssignmentPersonInCharge(), "临时用电作业", record.getWorkTicketCode(), record.getWorkExecutionBeginTime(), record.getWorkExecutionEndTime(), record.getProjectSn()); } } /** * 发送通知 * * @param personId * @param specialName * @param workTicketCode * @param startTime * @param endTime * @param projectSn */ private void sendNotice(Long personId, String specialName, String workTicketCode, Date startTime, Date endTime, String projectSn) { if (personId == null) { return; } String title1 = "在施" + specialName + "上传旁站记录提醒"; String title2 = "在施" + specialName + "上传排查记录提醒"; String msg1 = StrUtil.format("您所负责的{}{},计划实施时间为{}至{}已开工,在施" + specialName + "需每日上传旁站记录,请注意及时上传!", specialName, workTicketCode, DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(endTime)); String msg2 = StrUtil.format("您所负责的{}{},计划实施时间为{}至{}已开工,在施" + specialName + "需每日上传排查记录,请注意及时上传!", specialName, workTicketCode, DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(endTime)); noticeService.addUserNotice(personId, title1, msg1, "2"); noticeService.addUserNotice(personId, title2, msg2, "2"); noticeService.addProjectLevelNotice(projectSn, title1, systemUserService.getFrameUserNames(String.valueOf(personId)) + msg1, "2", null); noticeService.addProjectLevelNotice(projectSn, title2, systemUserService.getFrameUserNames(String.valueOf(personId)) + msg2, "2", null); } }