package com.sinata.task; import com.sinata.system.domain.MwWarningRecord; import com.sinata.system.enums.WarningStatusEnum; import com.sinata.system.service.biz.TaskService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; /** * @author mitao * @date 2024/12/30 */ @Component @Slf4j @RequiredArgsConstructor public class WarningTask { private final TaskService taskService; /** * 出库超时预警 */ @Scheduled(cron = "${medical.crons.checkout-over-time}") public void checkoutOverTime() { log.info("开始执行【出库超时预警】定时任务"); taskService.checkoutOverTime(); log.info("定时任务【出库超时预警】执行完毕"); } /** * 封装预警记录 * * @param id * @param warningTargetName * @param departmentName * @param message * @param departmentId * @param currentValue * @param normalRange * @return */ @NotNull private static MwWarningRecord getMwWarningRecord(Integer type, Long id, String warningTargetName, String departmentName, String message, Long departmentId, String currentValue, String normalRange) { MwWarningRecord warningRecord = new MwWarningRecord(); warningRecord.setType(type); warningRecord.setWarningTargetId(id); warningRecord.setWarningTargetName(warningTargetName); warningRecord.setDepartmentName(departmentName); warningRecord.setMessage(message); warningRecord.setDepartmentId(departmentId); warningRecord.setCurrentValue(currentValue); warningRecord.setNormalRange(normalRange); warningRecord.setStatus(WarningStatusEnum.UNRESOLVED.getCode()); warningRecord.setWarnTime(new Date()); return warningRecord; } /** * 暂存间使用率预警 */ @Scheduled(cron = "${medical.crons.staging-room-capacity}") public void stagingRoomStorage() { log.info("开始执行【暂存间使用率预警】定时任务"); taskService.stagingRoomStorage(); log.info("定时任务【暂存间使用率预警】执行完毕"); } /** * 合同到期预警 */ @Scheduled(cron = "${medical.crons.contract-expire}") public void contractExpire() { log.info("开始执行【合同到期预警】定时任务"); taskService.contractExpire(); log.info("定时任务【合同到期预警】执行完毕"); } /** * 健康记录预警、人员记录预警 */ @Scheduled(cron = "${medical.crons.health-vaccine-record}") public void healthRecord() { log.info("开始执行【健康记录预警】【人员记录预警】定时任务"); taskService.healthRecord(); log.info("定时任务【健康记录预警】【人员记录预警】执行完毕"); } /** * 防护用品使用预警 防护用品库存预警 */ @Scheduled(cron = "${medical.crons.protection-equipment-use-stock}") public void protectionEquipmentUse() { log.info("开始执行【防护用品使用预警】【防护用品库存预警】定时任务"); taskService.protectionEquipmentUse(); log.info("定时任务【防护用品使用预警】【防护用品库存预警】执行完毕"); } /** * 医疗机构产废日预警 */ @Scheduled(cron = "${medical.crons.medical-institution-waste-day}") public void medicalInstitutionWasteDay() { log.info("开始执行【医疗机构产废日预警】定时任务"); taskService.medicalInstitutionWasteDay(); log.info("定时任务【医疗机构产废日预警】执行完毕"); } /** * 医疗机构产废月预警 */ @Scheduled(cron = "${medical.crons.medical-institution-waste-month}") public void medicalInstitutionWasteMonth() { log.info("开始执行【医疗机构产废月预警】定时任务"); taskService.medicalInstitutionWasteMonth(); log.info("定时任务【医疗机构产废月预警】执行完毕"); } /** * 医疗机构存储量 */ @Scheduled(cron = "${medical.crons.medical-institution-waste-storage}") public void medicalInstitutionStorage() { log.info("开始执行【医疗机构存储量】定时任务"); taskService.medicalInstitutionStorage(); log.info("定时任务【医疗机构存储量】执行完毕"); } /** * 车辆转运异常预警 */ @Scheduled(cron = "${medical.crons.transit-car}") public void transitCar() { log.info("开始执行【车辆转运异常预警】定时任务"); taskService.transitCar(); log.info("定时任务【车辆转运异常预警】执行完毕"); } @Scheduled(cron = "${medical.crons.disposal-unit-storage}") public void disposalUnitStorage() { log.info("开始执行【处置单位存储量预警】定时任务"); taskService.disposalUnitStorage(); log.info("定时任务【处置单位存储量预警】执行完毕"); } }