//是否达到提醒条件 private bool IsReachCondition(EFatigueDrivingAlertSetting setting) { DateTime startTime = DateTime.Now.AddHours(-setting.DrivingDuration); DateTime endTime = DateTime.Now; IGPSHistoryInfoManager manager = new GPSHistoryInfoManager(); int rowCountAllState = 0; int rowCount = 0; if (_MOVOVehicleDict.ContainsKey(setting.VehicleCode)) { rowCount = manager.CountMovoAccOff(setting.VehicleCode, startTime, endTime, out rowCountAllState); } if (rowCountAllState < 100) //总记录太少,不报警 { Logger.Info(string.Format("车辆code:{0}--总记录太少(少于100),不报警", setting.VehicleCode)); return false; } return rowCount == 0; }
private void Alert(EnumAlertState state, EFatigueDrivingAlertSetting setting) { if (state == EnumAlertState.Alerting) { if (setting.EnableSMS || setting.Enable) { _alertReport = (EFatigueDrivingReport)CreateAlertReport(state, setting); SaveAlertReport(); if (setting.EnableSMS && this.IsInReceiveTime(_alertReport.MobileReceiveBeginTime, _alertReport.MobileReceiveEndTime)) { SendSMS(_alertReport); } if (setting.Enable && this.IsInReceiveTime(_alertReport.UserReceiveBeginTime, _alertReport.UserReceiveEndTime)) { AlarmHandleContext context = new AlarmHandleContext(); this.SendWebSiteSMS(context, _alertReport); } } } else { UpdateAlertReport(); } }
private EBaseAlertReport CreateAlertReport(EnumAlertState state, EFatigueDrivingAlertSetting alertSetting) { EGPSCurrentInfo _gpsCurrentInfo = new GPSTrackManager().GetCurrentInfo(alertSetting.VehicleCode); EFatigueDrivingReport newReport = new EFatigueDrivingReport(); newReport.EnumAlarmGrade = EnumAlarmGrade.Prompt; newReport.ACCState = _gpsCurrentInfo.ACCState; newReport.Speed = _gpsCurrentInfo.Speed; newReport.VStarkMileage = _gpsCurrentInfo.StarkMileage; newReport.EnumSMSInfoType = EnumSMSInfoType.FatigueDriving; newReport.GPSCode = _gpsCurrentInfo.GPSCode; newReport.GPSReportTime = _gpsCurrentInfo.ReportTime; newReport.Latitude = _gpsCurrentInfo.Latitude; newReport.Longitude = _gpsCurrentInfo.Longitude; newReport.MobileReceiveBeginTime = alertSetting.MobileReceiveBeginTime; newReport.MobileReceiveEndTime = alertSetting.MobileReceiveEndTime; newReport.ReceiveMobileList = alertSetting.ReceiveMobileList; newReport.ReceiveUserList = alertSetting.ReceiveUserList; newReport.TenantCode = alertSetting.TenantCode; newReport.UserReceiveBeginTime = alertSetting.UserReceiveBeginTime; newReport.UserReceiveEndTime = alertSetting.UserReceiveEndTime; newReport.VehicleCode = alertSetting.VehicleCode; newReport.VehiclePosition = this.GetPlaceName(_gpsCurrentInfo.Latitude, _gpsCurrentInfo.Longitude); if (_MOVOVehicleDict.ContainsKey(alertSetting.VehicleCode)) { newReport.LicensePlate = _MOVOVehicleDict[alertSetting.VehicleCode]; } newReport.EnumAlertState = state; newReport.DownSendOrderCode = DownSendCodeHelper.GPS.LogisticVehicle.FatigueDrive; newReport.DurationDrivingTime = alertSetting.DrivingDuration; newReport.RestTime = alertSetting.RestTime; newReport.AlertState = (int)state; return newReport; }
/// <summary> /// 疲劳驾驶提醒设置 /// </summary> /// <param name="vehicleCodes"></param> /// <param name="entity"></param> /// <returns></returns> public bool AddFatigueDrivingAlertSetting(List<Guid> vehicleCodes, EFatigueDrivingAlertSetting entity) { using (var trans = DACFacade.Gps.FatigueDrivingAlertSettingDAC.BeginTransaction()) { try { int deleteCount = DACFacade.Gps.FatigueDrivingAlertSettingDAC.Delete(trans, vehicleCodes); int addCount = 0; foreach (var item in vehicleCodes) { entity.RecordID = Guid.NewGuid(); entity.VehicleCode = item.ToString(); entity.CreateTime = DateTime.Now; addCount += DACFacade.Gps.FatigueDrivingAlertSettingDAC.Insert(trans, entity); } if (addCount > 0) { trans.Commit(); return true; } else { trans.Rollback(); return false; } } catch { trans.Rollback(); return false; } } }