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);
|
}
|
}
|
}
|