Example #1
0
        /// <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);
            }
        }
Example #2
0
        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
                });
            }
        }