/// <summary> /// Метод переносит детальный суточный отчет из локальной базы АЗС в ЦОД /// </summary> /// <returns></returns> public int Daily_Accounting_Detali_ReportToDC() { try { EFDaily_Accounting_Detali_Report ef_rt_azs = new EFDaily_Accounting_Detali_Report(); EFDaily_Accounting_Detali_Report_AZS ef_rt_dc = new EFDaily_Accounting_Detali_Report_AZS(); Daily_Accounting_Detali_Report_AZS dt_dc_end = ef_rt_dc.Get().OrderByDescending(d => d.dt_start).FirstOrDefault(); Daily_Accounting_Detali_Report dt_start_azs = ef_rt_azs.Get().OrderBy(d => d.dt_start).FirstOrDefault(); // Получим последнюю запись в ЦОД DateTime?dt_end_dc = dt_dc_end != null ? (DateTime?)dt_dc_end.dt_start : null; // Проверим если данных нет определим первую запись на азс иначе возьмем вроемя на 1 минуту больше if (dt_end_dc == null) { dt_end_dc = dt_start_azs != null ? (DateTime?)dt_start_azs.dt_start : null; } else { // следующая минута dt_end_dc = ((DateTime)dt_end_dc).AddMinutes(1); } // Начало переноса не установленно, Ошибка if (dt_end_dc == null) { return(-2); // Ошибка дата начала переноса не установленна } // Определим список для переноса List <Daily_Accounting_Detali_Report> list_azs = ef_rt_azs.Get().Where(d => d.dt_start >= dt_end_dc).OrderBy(c => c.id).ToList(); // Список пуст? if (list_azs == null) { return(0); // Данных для переноса нет } // Определим новый список List <Daily_Accounting_Detali_Report_AZS> list_dc = new List <Daily_Accounting_Detali_Report_AZS>(); foreach (Daily_Accounting_Detali_Report dt in list_azs) { Daily_Accounting_Detali_Report_AZS rt_dc = new Daily_Accounting_Detali_Report_AZS() { id = 0, dt_start = dt.dt_start, dt_stop = dt.dt_stop, fuel_type = dt.fuel_type, ukt_zed = dt.ukt_zed, tank = dt.tank, serial_number = dt.serial_number, unified_tank_number = dt.unified_tank_number, type_name = dt.type_name, level_meters_model = dt.level_meters_model, level_meters_serial_number = dt.level_meters_serial_number, dt_actual_remains_start = dt.dt_actual_remains_start, level_remains_start = dt.level_remains_start, volume_remains_start = dt.volume_remains_start, dens_remains_start = dt.dens_remains_start, dens_avg_remains_start = dt.dens_avg_remains_start, mass_remains_start = dt.mass_remains_start, temp_remains_start = dt.temp_remains_start, relation_remains_start = dt.relation_remains_start, ratio_vd_remains_start = dt.ratio_vd_remains_start, ratio_tv_remains_start = dt.ratio_tv_remains_start, dens15_remains_start = dt.dens15_remains_start, volume15_remains_start = dt.volume15_remains_start, mass15_remains_start = dt.mass15_remains_start, volume_received = dt.volume_received, mass_received = dt.mass_received, dens_received = dt.dens_received, temp_received = dt.temp_received, volume15_received = dt.volume15_received, mass15_received = dt.mass15_received, dens15_received = dt.dens15_received, count_tanks_delivery = dt.count_tanks_delivery, volume_delivery = dt.volume_delivery, mass_delivery = dt.mass_delivery, dens_delivery = dt.dens_delivery, temp_delivery = dt.temp_delivery, volume15_delivery = dt.volume15_delivery, mass15_delivery = dt.mass15_delivery, dens15_delivery = dt.dens15_delivery, dt_actual_remains_stop = dt.dt_actual_remains_stop, level_remains_stop = dt.level_remains_stop, volume_remains_stop = dt.volume_remains_stop, dens_remains_stop = dt.dens_remains_stop, dens_avg_remains_stop = dt.dens_avg_remains_stop, mass_remains_stop = dt.mass_remains_stop, temp_remains_stop = dt.temp_remains_stop, relation_remains_stop = dt.relation_remains_stop, ratio_vd_remains_stop = dt.ratio_vd_remains_stop, ratio_tv_remains_stop = dt.ratio_tv_remains_stop, dens15_remains_stop = dt.dens15_remains_stop, volume15_remains_stop = dt.volume15_remains_stop, mass15_remains_stop = dt.mass15_remains_stop, permissible_volume15_error = dt.permissible_volume15_error, permissible_mass15_error = dt.permissible_mass15_error }; list_dc.Add(rt_dc); } // Перенесем и сохраним ef_rt_dc.Add(list_dc); return(ef_rt_dc.Save()); } catch (Exception e) { return(-1); } }
public void OnTimerServices(object sender, System.Timers.ElapsedEventArgs args) { try { EFDaily_Report efdl = new EFDaily_Report(); EFDaily_Accounting_Report ef_dar = new EFDaily_Accounting_Report(); EFDaily_Accounting_Detali_Report ef_adr = new EFDaily_Accounting_Detali_Report(); Transfer tr = new Transfer(); EFTanksLog ef_tl = new EFTanksLog(); string log_mes; DateTime dt = DateTime.Now; int h = dt.Hour; int m = dt.Minute; // В 0:5 сбосить тригеры отработки заданий if (h == 0 && (m >= 5 && m <= 6)) { // обнулим события for (int i = 0; i < 24; i++) { jobs[i] = false; } time_daily = false; } // Сработка события каждый час if (!jobs[h] && (m >= 58 && m <= 59)) { jobs[h] = true; log_mes = String.Format("Сервис ReportTRKServices - сработал таймер на {0} часов", h); log_mes.SaveInformation(); trk_log.AddTRKLogs(new TRKLogs() { ID = 0, DateTime = DateTime.Now, Level = 4, UserName = "******", Log = log_mes }); addCounters(); } if (h == 1 && (m >= 5 && m <= 6) && !time_daily) { String.Format("Сервис ReportTRKServices - сработал таймер на 0 часов").SaveInformation(); int res = 0; // Суточный с пересчетом к 15 градусам res = ef_dar.AddDailyAccountingReport(); log_mes = String.Format("Сервис ReportTRKServices - Отработал метод AddDaily_Accounting_Report - Код выполнения:{0}", res); log_mes.SaveInformation(); trk_log.AddTRKLogs(new TRKLogs() { ID = 0, DateTime = DateTime.Now, Level = 4, UserName = "******", Log = log_mes }); // Суточный детально по емкостям res = ef_adr.AddDailyAccountingDetaliReport(); log_mes = String.Format("Сервис ReportTRKServices - Отработал метод AddDaily_Accounting_Detali_Report - Код выполнения:{0}", res); log_mes.SaveInformation(); trk_log.AddTRKLogs(new TRKLogs() { ID = 0, DateTime = DateTime.Now, Level = 4, UserName = "******", Log = log_mes }); // Суточный с переносом в ЦОД int res_rt = tr.RemainsTanksToDC(); int res_rect = tr.ReceivingTanksToDC(); int res_dt = tr.DeliveryTanksToDC(); int res_radr = tr.Daily_Accounting_Detali_ReportToDC(); int res_dar = tr.Daily_Accounting_ReportToDC(); log_mes = String.Format("Сервис ReportTRKServices - Отработали методы переноса в ЦОД - Коды выполнения RemainsTanksToDC:{0}, ReceivingTanksToDC:{1}, DeliveryTanksToDC:{2}, Daily_Accounting_Detali_ReportToDC:{3}, Daily_Accounting_ReportToDC:{4}", res_rt, res_rect, res_dt, res_radr, res_dar); log_mes.SaveInformation(); trk_log.AddTRKLogs(new TRKLogs() { ID = 0, DateTime = DateTime.Now, Level = 4, UserName = "******", Log = log_mes }); // Чистка базы res = ef_tl.Delete_Tanks(); log_mes = String.Format("Сервис ReportTRKServices - Отработал метод Delete_Tanks - Код выполнения:{0}", res); log_mes.SaveInformation(); trk_log.AddTRKLogs(new TRKLogs() { ID = 0, DateTime = DateTime.Now, Level = 4, UserName = "******", Log = log_mes }); time_daily = true; } //if (h == 6 && (m >= 58 && m <= 59) && !time_sm_day) //{ // log_mes = String.Format("Сервис ReportTRKServices - сработал таймер на 7 часов"); // log_mes.SaveInformation(); // trk_log.AddTRKLogs(new TRKLogs() // { // ID = 0, // DateTime = DateTime.Now, // Level = 4, // UserName = "******", // Log = log_mes // }); // addCounters(); // time_sm_day = true; //} //if (h == 18 && (m >= 58 && m <= 59) && !time_sm_night) //{ // log_mes = String.Format("Сервис ReportTRKServices - сработал таймер на 19 часов"); // log_mes.SaveInformation(); // trk_log.AddTRKLogs(new TRKLogs() // { // ID = 0, // DateTime = DateTime.Now, // Level = 4, // UserName = "******", // Log = log_mes // }); // addCounters(); // time_sm_night = true; //} //if (h == 23 && (time_daily || time_sm_day || time_sm_night)) //{ // time_daily = false; // //time_sm_day = false; // //time_sm_night = false; //} } catch (Exception e) { string log_mes = String.Format("OnTimerServices(sender={0}, args={1})", sender, args.ToString()); log_mes.SaveError(e); trk_log.AddTRKLogs(new TRKLogs() { ID = 0, DateTime = DateTime.Now, Level = 2, UserName = "******", Log = log_mes }); } }