123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- using NEIntelligentControl2.Models;
- using NEIntelligentControl2.Models.AGC;
- using NEIntelligentControl2.Models.Datas;
- using NEIntelligentControl2.Models.Messages;
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace NEIntelligentControl2.Service.AGC
- {
- /// <summary>
- /// AGC信息管理
- /// </summary>
- public class AGCManager
- {
- /// <summary>
- /// AGC 信息
- /// </summary>
- public List<AGCInfo> AGCInfos;
- /// <summary>
- /// 标签点
- /// </summary>
- private List<TagInfo> _TagInfos;
- /// <summary>
- /// 需要读取历史的标签点
- /// </summary>
- private List<TagInfo> _HistoryTagInfos;
- /// <summary>
- /// 所有标签点
- /// </summary>
- private string _Tags;
- /// <summary>
- /// 数据路径
- /// </summary>
- private string _Url;
- /// <summary>
- /// 历史数据url
- /// </summary>
- private string _HistoyUrl;
- /// <summary>
- /// 数据路径
- /// </summary>
- private string _DataUrl;
- /// <summary>
- /// 信息路径
- /// </summary>
- private string _UrlInfo;
- private WEBHelper _WEBHelper;
- public AGCManager(WEBHelper web)
- {
- _WEBHelper = web;
- InitUrl();
- Init();
- }
- private void InitUrl()
- {
- try
- {
- #if (DEBUG)
- _UrlInfo = ConfigurationManager.AppSettings["ServicePathDebug"];
- _Url = ConfigurationManager.AppSettings["DataServicePathDebug"];
- #else
- _UrlInfo = ConfigurationManager.AppSettings["ServicePath"];
- _Url = ConfigurationManager.AppSettings["DataServicePath"];
- #endif
- }
- catch (Exception ex)
- {
- Console.WriteLine("读取配置文件[ServicePath]或[DataServicePath]出错!", ex);
- }
- }
- /// <summary>
- /// 初始化
- /// </summary>
- private void Init()
- {
- try
- {
- _HistoryTagInfos = new List<TagInfo>();
- _TagInfos = new List<TagInfo>();
- AGCInfos = _WEBHelper.HttpGetJSON<List<AGCInfo>>($"{_UrlInfo}/api/station/agc_net");
- InitTags();
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- }
- /// <summary>
- /// 初始化标签点
- /// </summary>
- private void InitTags()
- {
- StringBuilder sb = new StringBuilder();
- foreach (var v in AGCInfos)
- {
- FindTags(sb, v.AiPoints);
- FindTags(sb, v.DiPoints);
- FindHistoryTags(v);
- _TagInfos.AddRange(v.AiPoints);
- _TagInfos.AddRange(v.DiPoints);
- _TagInfos.Add(v.Status);
- sb.Append(v.Status.Tag).Append(',');
- }
- _Tags = sb.ToString();
- }
- /// <summary>
- /// 枚举需要读取历史的标签点
- /// </summary>
- private void FindHistoryTags(AGCInfo ai)
- {
- _HistoryTagInfos.Add(ai.Status);
- var vs = ai.AiPoints.Where(p => (p.Type == TagType.PowerSet || p.Type == TagType.ActualPower) && !string.IsNullOrWhiteSpace(p.Tag));
- foreach (var v in vs)
- {
- _HistoryTagInfos.Add(v);
- }
- }
- /// <summary>
- /// 枚举标签
- /// </summary>
- /// <param name="sb"></param>
- /// <param name="points"></param>
- private void FindTags(StringBuilder sb, List<TagInfo> points)
- {
- if (points == null) return;
- foreach (var v in points)
- {
- if (v == null) continue;
- foreach (var vv in v.Tags)
- {
- if (string.IsNullOrWhiteSpace(vv)) continue;
- sb.Append(vv).Append(',');
- }
- }
- }
- /// <summary>
- /// 数据刷新
- /// </summary>
- public void RefreshData(System.Windows.FrameworkElement fe)
- {
- try
- {
- if (_DataUrl == null)
- {
- _DataUrl = $"{_Url}/ts/latest?keys={_Tags}";
- }
- var vs = _WEBHelper.HttpGetJSON<Dictionary<string, TsData>>(_DataUrl);
- fe.Dispatcher.Invoke(() =>
- {
- foreach (var v in _TagInfos)
- {
- v.UpdateData(vs);
- }
- });
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.ToString());
- }
- }
- /// <summary>
- /// 历史数据刷新
- /// </summary>
- public void RefreshLineData(System.Windows.FrameworkElement fe)
- {
- try
- {
- if (_HistoyUrl == null)
- {
- _HistoyUrl = $"{_Url}/ts/history/snap?interval=60";
- }
- var dte = DateTime.Now.GetTimeSpan();
- var dts = DateTime.Now.AddHours(-8).GetTimeSpan();
- foreach (var v in _HistoryTagInfos)
- {
- if (v.Tag == null) continue;
- var vs = _WEBHelper.HttpGetJSON<List<TsData>>($"{_HistoyUrl}&tagName={v.Tag}&startTs={dts}&endTs={dte}");
- fe.Dispatcher.Invoke(() => v.UpdateHistoryData(vs));
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.ToString());
- }
- }
- }
- }
|