using NEIntelligentControl2.Models.Messages; using NEIntelligentControl2.Models.Station; using SVGViewer.Models.Info; using SVGViewer.Models.Svg; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Threading; namespace NEIntelligentControl2.Service.Station { /// <summary> /// 场站信息维护 /// </summary> public class StationManager { private List<StationInfo> _StationInfos; // 场站信息 private WEBHelper _WEBHelper; private string _Url; private Dictionary<string, StationInfo> _Stations; private List<StationInfo> _BoostStationInfos; private List<ShapeInfo> _BoostStationShapes; private Dictionary<string, ShapeInfo> _CustomizeShapesDic; public StationManager(WEBHelper web) { _WEBHelper = web; try { #if (DEBUG) _Url = ConfigurationManager.AppSettings["ServicePathDebug"]; #else _Url = ConfigurationManager.AppSettings["ServicePath"]; #endif } catch (Exception ex) { Console.WriteLine("读取配置文件[ServicePath]出错!", ex); } } /// <summary> /// 获取场站信息 /// </summary> /// <returns>场站信息</returns> public List<StationInfo> GetStationInfos() { try { if (_StationInfos == null || _StationInfos.Count <= 0) { _StationInfos = _WEBHelper.HttpGetJSON<List<StationInfo>>($"{_Url}/api/station/info"); } } catch (Exception ex) { Console.WriteLine("读取场站信息出错!", ex); } return _StationInfos; } /// <summary> /// 获取单场站信息 /// </summary> /// <param name="stationId">场站ID</param> /// <returns></returns> internal StationInfo GetStatonInfo(string stationId) { try { if (_Stations == null) { _Stations = _StationInfos?.ToDictionary(s => s.Id, s => s); } } catch { } if (_Stations == null || !_Stations.ContainsKey(stationId)) return null; return _Stations[stationId]; } /// <summary> /// 获取升压站图形信息 /// </summary> internal List<ShapeInfo> GetBoostStationShapes() { if (_BoostStationShapes == null) { InitBoostStationInfos(); } return _BoostStationShapes; } /// <summary> /// 获取升压站场站信息 /// </summary> /// <returns></returns> internal List<StationInfo> GetBoostStationInfos() { if (_BoostStationInfos == null) { InitBoostStationInfos(); } return _BoostStationInfos; } /// <summary> /// 移除升压站 /// </summary> /// <exception cref="NotImplementedException"></exception> internal string RemoveBoostStation(ShapeInfo shape) { try { var v = _WEBHelper.HttpGetString($"{_Url}/api/boost_station/remove?id={shape.Id}"); return v; } catch(Exception e) { return e.Message; } } /// <summary> /// 移除二次图 /// </summary> /// <param name="arg1">二次图信息</param> internal string RemoveSubStation(ShapeInfo arg1) { try { var v = _WEBHelper.HttpGetString($"{_Url}/api/boost_station/substation/remove?id={arg1.Id}"); return v; } catch (Exception e) { return e.Message; } } private void InitBoostStationInfos() { try { var ls = _WEBHelper.HttpGetJSON<List<ShapeInfo>>($"{_Url}/api/boost_station/"); _BoostStationShapes = ls; var sis = from shape in ls select new StationInfo() { Name = shape.Name, Id = shape.Id }; _BoostStationInfos = sis.ToList(); _BoostStationInfos.Insert(0, new StationInfo() { Name = "全部", Id = "ALL" }); } catch { _BoostStationInfos = new List<StationInfo>(); _BoostStationShapes = new List<ShapeInfo>(); } } /// <summary> /// 根据ID获取升压站信息 /// </summary> /// <exception cref="NotImplementedException"></exception> internal async Task<ShapeInfo> GetNewStationInfo(string id) { return await Task.Run(getShapeInfo); ShapeInfo getShapeInfo() { try { var si = _WEBHelper.HttpGetJSON<ShapeInfo>($"{_Url}/api/boost_station/booststation?id={id}"); return si; } catch { } return null; } } /// <summary> /// 获取二次图信息 /// </summary> /// <param name="subId">二次图ID</param> /// <returns></returns> internal async Task<ShapeInfo> GetSubBoostStation(string subId) { return await Task.Run(getShapeInfo); ShapeInfo getShapeInfo() { try { var si = _WEBHelper.HttpGetJSON<ShapeInfo>($"{_Url}/api/boost_station/substation?id={subId}"); return si; } catch { } return null; } } /// <summary> /// 获取所有二次图 /// </summary> /// <returns></returns> internal async Task<List<ShapeInfo>> GetSubStations() { return await Task.Run(getShapeInfo); List<ShapeInfo> getShapeInfo() { try { var si = _WEBHelper.HttpGetJSON<List<ShapeInfo>>($"{_Url}/api/boost_station/substation/all"); return si; } catch { } return null; } } /// <summary> /// 获取自定义控件 /// </summary> internal List<ShapeInfo> GetCustomizeShapes() { try { var ls = _WEBHelper.HttpGetJSON<List<ShapeInfo>>($"{_Url}/api/boost_station/customize"); _CustomizeShapesDic = ls?.ToDictionary(c => c.Id, c => c); return ls; } catch { } return new List<ShapeInfo>(); } internal Dictionary<string,ShapeInfo> GetCustomizeShapesDic() { if (_CustomizeShapesDic == null) { _CustomizeShapesDic = GetCustomizeShapes()?.ToDictionary(c => c.Id, c => c); } return _CustomizeShapesDic; } /// <summary> /// 添加升压站 /// </summary> /// <param name="info">图形信息</param> internal string AddOrUpdateStation(ShapeInfo info, Windows.BoostStation.BoostStationEditType editType) { try { switch (editType) { case Windows.BoostStation.BoostStationEditType.BoostStationEdit: // 升压站编辑 return _WEBHelper.HttpPostBodyString($"{_Url}/api/boost_station/update", info); case Windows.BoostStation.BoostStationEditType.BoostStationAdd: // 升压站添加 return _WEBHelper.HttpPostBodyString($"{_Url}/api/boost_station/add", info); case Windows.BoostStation.BoostStationEditType.SubStationAdd: // 二次图添加 return _WEBHelper.HttpPostBodyString($"{_Url}/api/boost_station/substation/add", info); case Windows.BoostStation.BoostStationEditType.SubStationEdit: // 二次图编辑 return _WEBHelper.HttpPostBodyString($"{_Url}/api/boost_station/substation/update", info); default:return "操作类型错误!"; } } catch (Exception e) { return e.Message; } } /// <summary> /// 添加或移除自定义控件 /// </summary> /// <param name="info">图形信息</param> /// <param name="isadd">是否添加</param> internal string AddOrRemoveCustomizeShape(ShapeInfo info, string type) { try { string v = ""; switch (type) { case "add": v = _WEBHelper.HttpPostBodyString($"{_Url}/api/boost_station/customize/add", info); break; case "remove": v = _WEBHelper.HttpGetString($"{_Url}/api/boost_station/customize/remove?id={info.Id}"); break; case "edit": v = _WEBHelper.HttpPostBodyString($"{_Url}/api/boost_station/customize/update", info); break; default:return v; } return v; } catch (Exception e) { return e.Message; } } /// <summary> /// 将导出的svg发送到服务器 /// </summary> /// <param name="svg">svg字符串</param> /// <param name="info">svg信息</param> /// <returns></returns> /// <exception cref="NotImplementedException"></exception> internal string OutputSvgInfo(object svg, SvgInfo info) { try { var s = _WEBHelper.HttpPostBodyString($"{_Url}/api/boost_station/svg", svg); if (s != "success") { return s; } s = _WEBHelper.HttpPostBodyString($"{_Url}/api/boost_station/svginfo", info); return s; } catch (Exception e) { return $"导出svg出现错误:{e.Message}"; } } } }