Beispiel #1
0
        public async Task SaveIdentData(FloutecIdentData data, Action <bool> onSuccess, Action <Exception> onException)
        {
            await Task.Factory.StartNew(() =>
            {
                using (var repo = new DataRecordRepository <FloutecIdentData>(_connection))
                {
                    var lastData = repo.GetAll()
                                   .Where(d => d.FloutecMeasureLineId == data.FloutecMeasureLineId)
                                   .OrderByDescending(o => o.DateAdded)
                                   .FirstOrDefault();

                    if (lastData != null && lastData.IsEqual(data))
                    {
                        return(false);
                    }

                    repo.Insert(data);

                    return(true);
                }
            }, TaskCreationOptions.LongRunning)
            .ContinueWith(result =>
            {
                if (result.Exception != null)
                {
                    onException?.Invoke(result.Exception.InnerException);
                }
                else
                {
                    onSuccess?.Invoke(result.Result);
                }
            }, TaskScheduler.FromCurrentSynchronizationContext());
        }
 /// <summary>
 /// Метод определения равенства объектов данных идентификации
 /// </summary>
 /// <param name="newData">Новые данные</param>
 /// <param name="exData">Существующие данные</param>
 /// <returns></returns>
 public static bool IsEqual(this FloutecIdentData newData, FloutecIdentData exData)
 {
     return(newData != null && exData != null && newData.ACP.Equals(exData.ACP) && newData.ACS.Equals(exData.ACS) && newData.BCP.Equals(exData.BCP) && newData.BCS.Equals(exData.BCS) &&
            newData.CCP.Equals(exData.CCP) && newData.CCS.Equals(exData.CCS) && newData.CO2.Equals(exData.CO2) && newData.DSU.Equals(exData.DSU) && newData.SCHET.Equals(exData.SCHET) &&
            newData.DTRUB.Equals(exData.DTRUB) && newData.KALIBSCH.Equals(exData.KALIBSCH) && newData.KONDENS.Equals(exData.KONDENS) && newData.KONTRH.Equals(exData.KONTRH) &&
            newData.MAXRSCH.Equals(exData.MAXRSCH) && newData.MINRSCH.Equals(exData.MINRSCH) && newData.NIZP.Equals(exData.NIZP) && newData.NIZT.Equals(exData.NIZT) &&
            newData.NO2.Equals(exData.NO2) && newData.OTBOR.Equals(exData.OTBOR) && newData.OTSECH.Equals(exData.OTSECH) && newData.PLOTN.Equals(exData.PLOTN) &&
            newData.SHER.Equals(exData.SHER) && newData.VERXDP.Equals(exData.VERXDP) && newData.VERXP.Equals(exData.VERXP) && newData.VERXT.Equals(exData.VERXT));
 }
 /// <summary>
 /// Метод расширения объекта данных идентификации для получения данных из таблицы данных идентификации
 /// </summary>
 /// <param name="identData">Объект данных идентификации</param>
 /// <param name="reader"><see cref="OleDbDataReader"/></param>
 public static void FromIdentTable(this FloutecIdentData identData, OleDbDataReader reader)
 {
     identData.KONTRH   = DateTime.ParseExact(GetReaderValue(reader, "KONTRH", "").Trim(), timeFormats, CultureInfo.InvariantCulture, DateTimeStyles.None).TimeOfDay;
     identData.SCHET    = GetReaderValue(reader, "SCHET", 0);
     identData.KALIBSCH = GetReaderValue(reader, "KALIBSCH", 0.0);
     identData.MAXRSCH  = GetReaderValue(reader, "MAXRSCH", 0.0);
     identData.MINRSCH  = GetReaderValue(reader, "MINRSCH", 0.0);
     identData.VERXP    = GetReaderValue(reader, "VERXP", 0.0);
     identData.VERXDP   = GetReaderValue(reader, "VERXDP", 0.0);
     identData.KONDENS  = GetReaderValue(reader, "KONDENS", 0);
     identData.NIZP     = GetReaderValue(reader, "NIZP", 0.0);
     identData.VERXT    = GetReaderValue(reader, "VERXT", 0.0);
     identData.NIZT     = GetReaderValue(reader, "NIZT", 0.0);
     identData.TYPDAN   = GetReaderValue(reader, "TYPDAN", 0.0);
 }
 /// <summary>
 /// Метод расширения объекта данных идентификации для получения данных из таблицы статических данных
 /// </summary>
 /// <param name="identData">Объект данных идентификации</param>
 /// <param name="reader"><see cref="OleDbDataReader"/></param>
 public static void FromStatTable(this FloutecIdentData identData, OleDbDataReader reader)
 {
     identData.PLOTN  = GetReaderValue(reader, "PLOTN", 0.0);
     identData.CO2    = GetReaderValue(reader, "CO2", 0.0);
     identData.NO2    = GetReaderValue(reader, "NO2", 0.0);
     identData.DTRUB  = GetReaderValue(reader, "DTRUB", 0.0);
     identData.DSU    = GetReaderValue(reader, "DSU", 0.0);
     identData.OTSECH = GetReaderValue(reader, "OTSECH", 0.0);
     identData.OTBOR  = GetReaderValue(reader, "OTBOR", 0);
     identData.ACP    = GetReaderValue(reader, "ACP", 0.0);
     identData.BCP    = GetReaderValue(reader, "BCP", 0.0);
     identData.CCP    = GetReaderValue(reader, "CCP", 0.0);
     identData.ACS    = GetReaderValue(reader, "ACS", 0.0);
     identData.BCS    = GetReaderValue(reader, "BCS", 0.0);
     identData.CCS    = GetReaderValue(reader, "CCS", 0.0);
 }
Beispiel #5
0
        /// <summary>
        /// Получение данных идентификации
        /// </summary>
        /// <param name="address">Адрес вычислителя</param>
        /// <param name="line">Номер нитки</param>
        /// <returns>Данные идентификации</returns>
        public FloutecIdentData GetIdentData(int address, int line)
        {
            // Создание объекта данных идентификации
            var identData = new FloutecIdentData();
            var n_flonit  = address * 10 + line;

            identData.N_FLONIT = n_flonit;

            var hasData = false;

            // Формирование строки соединения с таблицей данных идентификации
            _command.CommandText = "SELECT DISTINCT * FROM ident.DBF WHERE N_FLONIT=" + n_flonit;

            // Чтение данных идентификации
            using (var reader = _command.ExecuteReader())
            {
                if (reader != null)
                {
                    while (reader.Read())
                    {
                        identData.FromIdentTable(reader);
                    }

                    hasData = reader.HasRows;
                }
            }

            // Формирование строки соединения с таблицей статических данных
            _command.CommandText = "SELECT DISTINCT * FROM stat.DBF WHERE N_FLONIT=" + n_flonit;

            // Чтение статических данных
            using (var reader = _command.ExecuteReader())
            {
                if (reader != null)
                {
                    while (reader.Read())
                    {
                        identData.FromStatTable(reader);
                    }

                    hasData = hasData || reader.HasRows;
                }
            }

            return(hasData ? identData : null);
        }