wlzboy
昨天 6b29bd596f8b48485d3506bfba4a1e0ea6c7df99
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
167
168
169
170
171
172
173
package com.ruoyi.system.service.impl;
 
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.VehicleAbnormalAlertMapper;
import com.ruoyi.system.domain.VehicleAbnormalAlert;
import com.ruoyi.system.service.IVehicleAbnormalAlertService;
 
/**
 * 车辆异常告警Service业务层处理
 * 
 * @author ruoyi
 */
@Service
public class VehicleAbnormalAlertServiceImpl implements IVehicleAbnormalAlertService {
    
    @Autowired
    private VehicleAbnormalAlertMapper vehicleAbnormalAlertMapper;
 
    /**
     * 查询车辆异常告警
     * 
     * @param alertId 车辆异常告警主键
     * @return 车辆异常告警
     */
    @Override
    public VehicleAbnormalAlert selectVehicleAbnormalAlertByAlertId(Long alertId) {
        return vehicleAbnormalAlertMapper.selectVehicleAbnormalAlertByAlertId(alertId);
    }
 
    /**
     * 查询车辆异常告警列表
     * 
     * @param vehicleAbnormalAlert 车辆异常告警
     * @return 车辆异常告警
     */
    @Override
    public List<VehicleAbnormalAlert> selectVehicleAbnormalAlertList(VehicleAbnormalAlert vehicleAbnormalAlert) {
        return vehicleAbnormalAlertMapper.selectVehicleAbnormalAlertList(vehicleAbnormalAlert);
    }
 
    /**
     * 新增车辆异常告警
     * 
     * @param vehicleAbnormalAlert 车辆异常告警
     * @return 结果
     */
    @Override
    public int insertVehicleAbnormalAlert(VehicleAbnormalAlert vehicleAbnormalAlert) {
        vehicleAbnormalAlert.setCreateTime(DateUtils.getNowDate());
        return vehicleAbnormalAlertMapper.insertVehicleAbnormalAlert(vehicleAbnormalAlert);
    }
 
    /**
     * 修改车辆异常告警
     * 
     * @param vehicleAbnormalAlert 车辆异常告警
     * @return 结果
     */
    @Override
    public int updateVehicleAbnormalAlert(VehicleAbnormalAlert vehicleAbnormalAlert) {
        vehicleAbnormalAlert.setUpdateTime(DateUtils.getNowDate());
        return vehicleAbnormalAlertMapper.updateVehicleAbnormalAlert(vehicleAbnormalAlert);
    }
 
    /**
     * 批量删除车辆异常告警
     * 
     * @param alertIds 需要删除的车辆异常告警主键
     * @return 结果
     */
    @Override
    public int deleteVehicleAbnormalAlertByAlertIds(Long[] alertIds) {
        return vehicleAbnormalAlertMapper.deleteVehicleAbnormalAlertByAlertIds(alertIds);
    }
 
    /**
     * 删除车辆异常告警信息
     * 
     * @param alertId 车辆异常告警主键
     * @return 结果
     */
    @Override
    public int deleteVehicleAbnormalAlertByAlertId(Long alertId) {
        return vehicleAbnormalAlertMapper.deleteVehicleAbnormalAlertByAlertId(alertId);
    }
 
    /**
     * 处理告警
     * 
     * @param alertId 告警ID
     * @param handlerId 处理人ID
     * @param handlerName 处理人姓名
     * @param handleRemark 处理备注
     * @return 结果
     */
    @Override
    public int handleAlert(Long alertId, Long handlerId, String handlerName, String handleRemark) {
        VehicleAbnormalAlert alert = new VehicleAbnormalAlert();
        alert.setAlertId(alertId);
        alert.setStatus("1"); // 已处理
        alert.setHandlerId(handlerId);
        alert.setHandlerName(handlerName);
        alert.setHandleTime(new Date());
        alert.setHandleRemark(handleRemark);
        
        return updateVehicleAbnormalAlert(alert);
    }
 
    /**
     * 批量处理告警
     * 
     * @param alertIds 告警ID列表
     * @param handlerId 处理人ID
     * @param handlerName 处理人姓名
     * @param handleRemark 处理备注
     * @return 结果
     */
    @Override
    public int batchHandleAlert(Long[] alertIds, Long handlerId, String handlerName, String handleRemark) {
        return vehicleAbnormalAlertMapper.batchHandleAlert(alertIds, handlerId, handlerName, handleRemark);
    }
 
    /**
     * 检查并创建车辆异常告警
     * 
     * @param vehicleId 车辆ID
     * @param vehicleNo 车牌号
     * @param mileage 运行公里数
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param deptId 部门ID
     * @param deptName 部门名称
     * @return 是否创建成功
     */
    @Override
    public boolean checkAndCreateAlert(Long vehicleId, String vehicleNo, BigDecimal mileage, 
                                       Date startTime, Date endTime, Long deptId, String deptName) {
        try {
            // 获取当日告警次数
            Date today = DateUtils.parseDate(DateUtils.getDate());
            int todayCount = vehicleAbnormalAlertMapper.selectDailyAlertCount(vehicleId, today);
            
            // 创建告警记录
            VehicleAbnormalAlert alert = new VehicleAbnormalAlert();
            alert.setVehicleId(vehicleId);
            alert.setVehicleNo(vehicleNo);
            alert.setAlertDate(today);
            alert.setAlertTime(new Date());
            alert.setMileage(mileage);
            alert.setAlertType("NO_TASK_MILEAGE");
            alert.setAlertReason(String.format("车辆在无任务状态下运行了 %.2f 公里", mileage));
            alert.setStartTime(startTime);
            alert.setEndTime(endTime);
            alert.setAlertCount(todayCount + 1);
            alert.setStatus("0"); // 未处理
            alert.setNotifyStatus("0"); // 未发送
            alert.setDeptId(deptId);
            alert.setDeptName(deptName);
            
            int result = insertVehicleAbnormalAlert(alert);
            return result > 0;
            
        } catch (Exception e) {
            throw new RuntimeException("创建告警记录失败: " + e.getMessage(), e);
        }
    }
}