luodangjia
2025-01-01 2dc478231fd09a88a4d86d44388ae807aca08bc5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
package com.sinata.task;
 
import com.sinata.system.domain.MwWarningRecord;
import com.sinata.system.enums.WarningStatusEnum;
import com.sinata.system.service.MwCollectRecordService;
import com.sinata.system.service.MwContractService;
import com.sinata.system.service.MwProtectionEquipmentRecordService;
import com.sinata.system.service.MwProtectionEquipmentService;
import com.sinata.system.service.MwStaffService;
import com.sinata.system.service.MwStagingRoomService;
import com.sinata.system.service.MwWarningConfigItemService;
import com.sinata.system.service.MwWarningConfigService;
import com.sinata.system.service.MwWarningRecordService;
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 MwWarningConfigService mwWarningConfigService;
    private final MwWarningConfigItemService mwWarningConfigItemService;
    private final MwCollectRecordService mwCollectRecordService;
    private final MwWarningRecordService mwWarningRecordService;
    private final MwStagingRoomService mwStagingRoomService;
    private final MwContractService mwContractService;
    private final MwStaffService mwStaffService;
    private final MwProtectionEquipmentService mwProtectionEquipmentService;
    private final MwProtectionEquipmentRecordService mwProtectionEquipmentRecordService;
    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("定时任务【处置单位存储量预警】执行完毕");
    }
}