Ejemplo n.º 1
0
        /// <summary>
        ///  Получение архивных данных энергии, заданной параметром
        /// </summary>
        /// <param name="pointId">ИД точки</param>
        /// <param name="pointName">Название точки</param>
        /// <param name="startDate">Начальная дата</param>
        /// <param name="endDate">Конечная дата</param>
        /// <param name="ml">Параметр, описывающий энергию - тип, направление, а также вид временного интервала</param>
        /// <returns>Список <see cref="Model.ArchData"/> для каждого интервала времени</returns>
        public static IEnumerable <Model.ArchData> GetPointArchive(int pointId, string pointName, DateTime startDate, DateTime endDate, Model.ML_Param ml)
        {
            var point = new Model.ArchAP {
                Id = pointId, Type = "POINT", Name = pointName
            };
            IEnumerable <Model.ArchData> list;

            try
            {
                list = EmcosSiteWrapper.Instance.GetArchiveData(ml, point, startDate, endDate).Result;
            }
            catch (Exception e)
            {
                TMPApplication.TMPApp.LogInfo(String.Format("GetPointArchive. Ошибка получения данных по точке: ИД-[{0}], название-[{1}]. Сообщение: {2}",
                                                            pointId, pointName, e.Message));
                return(null);
            }
            return(list);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Возвращает архивные значения указанной точке по указанному измерению и периоду
        /// </summary>
        /// <param name="param">измерение</param>
        /// <param name="point">точка</param>
        /// <param name="startDate">начало периода</param>
        /// <param name="endDate">конец периода</param>
        /// <param name="ct">токен отмены</param>
        /// <returns></returns>
        public Task <IEnumerable <Model.ArchData> > GetArchiveData(Model.ML_Param param, Model.ArchAP point,
                                                                   DateTime startDate, DateTime endDate)
        {
            var md       = param.MD.Id;
            var aggs     = param.AGGS.Id;
            var datacode = param.Id;
            var type     = point.Type;
            var id       = point.Id;

            var sendData = String.Format(
                "action=GET&dataBlock=DW&BILLING_HOUR=0&FREEZED=0&SHOW_MAP_DATA=0&GR_VALUE={0}&" +
                "EC_ID=&MD_ID={1}&WO_ACTS=0&WO_BYP=0&GMOD_ID=&TimeEnd={3}&TimeBegin={2}&AGGS_ID={4}&DATA_CODE={5}&TYPE={6}&ID={7}",
                "VAL",
                md,
                startDate.ToString("yyyy.MM.dd"),
                endDate.ToString("yyyy.MM.dd"),
                aggs,
                datacode,
                type,
                id);

            sendData = System.Web.HttpUtility.UrlPathEncode(sendData).Replace("_", "%5F").Replace("+", "%2B").ToUpper();


            var url = @"{0}scripts/arch.asp";

            url = string.Format(url, this.SiteAddress);

            var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

            ConfigureRequest(ref httpWebRequest);
            httpWebRequest.Method = WebRequestMethods.Http.Post;
            httpWebRequest.Accept = "*/*";
            httpWebRequest.Headers.Add("Accept-Encoding: gzip, deflate");

            IEnumerable <Model.ArchData> empty = new List <Model.ArchData>();

            // передаём куки
            if (TryAddCookie(ref httpWebRequest) == false)
            {
                SetFailResult(null, "[EmcosSiteWrapper] Функция GetArchiveData - ошибка: не удалось добавить куки");
                return(Task.FromResult(empty));
            }
            var buffer = Encoding.UTF8.GetBytes(sendData);

            httpWebRequest.ContentType = "application/x-www-form-urlencoded";
            try
            {
                using (var postStream = httpWebRequest.GetRequestStream())
                {
                    postStream.Write(buffer, 0, buffer.Length);
                }

                var task = Task.Factory.FromAsync(
                    httpWebRequest.BeginGetResponse,
                    asyncResult => httpWebRequest.EndGetResponse(asyncResult),
                    (object)null);

                return(task.ContinueWith(t =>
                {
                    var data = ReadStreamFromResponse(t.Result);
                    if (String.IsNullOrWhiteSpace(data))
                    {
                        SetFailResult(null, "[EmcosSiteWrapper] Архивные данные отсутствуют. Точка: " + point.Name);
                        return null;
                    }
                    var list = Utils.ArchiveData(data);
                    SetOKResult();
                    return list;
                }));
            }
            catch (Exception ex)
            {
                SetFailResult(ex, "[EmcosSiteWrapper] Функция GetArchiveData - ошибка: " + ex.Message);
                return(Task.FromResult(empty));
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Разбор измерений
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static ICollection <Model.IParam> Params(string data)
        {
            var list = Utils.ParseRecords(data);

            if (list == null)
            {
                return(null);
            }

            ICollection <Model.IParam> result = new List <Model.IParam>();

            foreach (var nvc in list)
            {
                var nodetype = nvc.Get("TYPE");
                if (String.IsNullOrWhiteSpace(nodetype))
                {
                    return(null);
                }
                // &MS_TYPE_ID_0=1&MS_TYPE_NAME_0=Электричество&TYPE_0=MS_TYPE&result=0&recordCount=1
                switch (nodetype)
                {
                case "MS_TYPE":
                    var ms_param = new Model.MS_Param();
                    result.Add(ms_param);
                    break;

                case "AGGS_TYPE":
                    var aggs_param = new Model.AGGS_Param();

                    aggs_param.Id   = nvc.Get("AGGS_TYPE_ID");
                    aggs_param.Name = nvc.Get("AGGS_TYPE_NAME");

                    result.Add(aggs_param);
                    break;

                case "MSF":
                    var msf_param = new Model.MSF_Param();

                    msf_param.Id      = nvc.Get("MSF_ID");
                    msf_param.Name    = nvc.Get("MSF_NAME");
                    msf_param.AGGS.Id = nvc.Get("AGGS_TYPE_ID");

                    result.Add(msf_param);
                    break;

                case "ML":
                    var ml_param = new Model.ML_Param();
                    if (nvc.Get("ML_ID") != null)
                    {
                        ml_param.Id = nvc.Get("ML_ID");
                    }
                    if (nvc.Get("ID") != null)
                    {
                        ml_param.Id = nvc.Get("ID");
                    }
                    if (nvc.Get("ML_NAME") != null)
                    {
                        ml_param.Name = nvc.Get("ML_NAME");
                    }
                    if (nvc.Get("NAME") != null)
                    {
                        ml_param.Name = nvc.Get("NAME");
                    }

                    ml_param.AGGF.Id   = nvc.Get("AGGF_ID");
                    ml_param.AGGF.Name = nvc.Get("AGGF_NAME");

                    ml_param.DIR.Id   = nvc.Get("DIR_ID");
                    ml_param.DIR.Name = nvc.Get("DIR_NAME");
                    ml_param.DIR.Code = nvc.Get("DIR_CODE");

                    ml_param.EU.Id   = nvc.Get("EU_ID");
                    ml_param.EU.Name = nvc.Get("EU_NAME");
                    ml_param.EU.Code = nvc.Get("EU_CODE");

                    ml_param.TFF.Id   = nvc.Get("TFF_ID");
                    ml_param.TFF.Name = nvc.Get("TFF_NAME");

                    ml_param.AGGS.Id       = nvc.Get("AGGS_ID");
                    ml_param.AGGS.Name     = nvc.Get("AGGS_NAME");
                    ml_param.AGGS.Value    = nvc.Get("AGGS_VALUE");
                    ml_param.AGGS.Per_Id   = nvc.Get("AGGS_PER_ID");
                    ml_param.AGGS.Per_Code = nvc.Get("AGGS_PER_CODE");
                    ml_param.AGGS.Per_Name = nvc.Get("AGGS_PER_NAME");

                    ml_param.MS.Id   = nvc.Get("MS_ID");
                    ml_param.MS.Name = nvc.Get("MS_NAME");
                    ml_param.MS.Code = nvc.Get("MS_CODE");

                    ml_param.MD.Id        = nvc.Get("MD_ID");
                    ml_param.MD.Name      = nvc.Get("MD_NAME");
                    ml_param.MD.Code      = nvc.Get("MD_CODE");
                    ml_param.MD.Per_Id    = nvc.Get("MD_PER_ID");
                    ml_param.MD.Per_Code  = nvc.Get("MD_PER_CODE");
                    ml_param.MD.Per_Name  = nvc.Get("MD_PER_NAME");
                    ml_param.MD.Int_Value = nvc.Get("MD_INT_VALUE");

                    ml_param.MSF.Id   = nvc.Get("MSF_ID");
                    ml_param.MSF.Name = nvc.Get("MSF_NAME");
                    ml_param.MSF.Code = nvc.Get("MSF_CODE");

                    ml_param.OBIS = nvc.Get("OBIS");

                    result.Add(ml_param);
                    break;
                }
            }
            return(result);
        }