| | |
| | |  |
| | | using IStation.Model; |
| | | using IStation.ZyDto; |
| | | using Microsoft.Ajax.Utilities; |
| | | using System; |
| | |
| | | using System.Text; |
| | | using System.Threading; |
| | | using System.Threading.Tasks; |
| | | using IsOpen = IStation.ZyDto.IsOpen; |
| | | using PumpIsopen = IStation.ZyDto.PumpIsopen; |
| | | using PumpTotalelectricity = IStation.ZyDto.PumpTotalelectricity; |
| | | |
| | | namespace IStation |
| | | { |
| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// è·åæ³µç弿ºæ
åµ |
| | | /// </summary> |
| | | /// <param name="startTime">å¼å§æ¶é´</param> |
| | | /// <param name="endTime">ç»ææ¶é´</param> |
| | | /// <param name="resolution">æ¶é´æ¥é¿,é»è®¤300ç§</param> |
| | | /// <returns></returns> |
| | | public static async Task<List<ZyDto.PumpIsopen>> GetPumpIsopen(DateTime StartTime, DateTime EndTime, string resolution = "300") |
| | | { |
| | | List<IsOpen> listopen = new List<IsOpen> { |
| | | new IsOpen |
| | | { |
| | | DateTime = DateTime.Now.AddDays(1), |
| | | Isopen = "0" |
| | | } |
| | | }; |
| | | List<PumpIsopen> pumpIsopens = new List<PumpIsopen> { |
| | | new PumpIsopen |
| | | { |
| | | Tag = "_0402010204012101001", |
| | | Values = listopen |
| | | } |
| | | }; |
| | | |
| | | |
| | | if (isDebug) |
| | | { |
| | | return pumpIsopens; |
| | | } |
| | | var tagDict = new Dictionary<string, string> |
| | | { |
| | | { "_0402010204012101001", "äºåæ°´1å·æ³µå¼å
³ç¶æ" }, |
| | | { "_0402010204012201001", "äºåæ°´2å·æ³µå¼å
³ç¶æ" }, |
| | | { "_0402010204012301001","äºåæ°´3å·æ³µå¼å
³ç¶æ" }, |
| | | { "_0402010204012401001", "äºåæ°´4å·æ³µå¼å
³ç¶æ" }, |
| | | {" _0402010204012501001", "äºåæ°´5å·æ³µå¼å
³ç¶æ" }, |
| | | }; |
| | | var input = new ScadaDispatchInput |
| | | { |
| | | search = "history", |
| | | starttime = new DateTime(StartTime.Year, StartTime.Month, StartTime.Day, 0, 0, 0).ToString("G"), |
| | | endtime = new DateTime(EndTime.Year, EndTime.Month, EndTime.Day, 23, 59, 59).ToString("G"), |
| | | Resolution = resolution, |
| | | taglist = tagDict.Select(x => x.Key).ToArray() |
| | | }; |
| | | var realScadaDataList = await GetRealScadaResultSate(input); |
| | | return realScadaDataList; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// è·å宿¶æ°æ®åå
¸ |
| | | /// è·å弿ºç¶æ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static async Task<List<ZyDto.PumpIsopen>> GetRealScadaResultSate(ScadaDispatchInput input) |
| | | { |
| | | if (input == null) |
| | | return default; |
| | | var ws = new ClientWebSocket(); |
| | | await ws.ConnectAsync(new Uri(_url_root), CancellationToken.None); |
| | | if (ws.State != WebSocketState.Open) |
| | | { |
| | | return default; |
| | | } |
| | | var realScadaDataList = new List<PumpIsopen>(); |
| | | var inputJson = JsonHelper.Object2Json(input); |
| | | var inputBytes = Encoding.UTF8.GetBytes(inputJson); |
| | | await ws.SendAsync(new ArraySegment<byte>(inputBytes), WebSocketMessageType.Text, true, CancellationToken.None); |
| | | try |
| | | { |
| | | List<byte> outputBytes = new List<byte>();//å
¨é¨æ¶æ¯å®¹å¨ |
| | | var buffer = new byte[1024 * 4];//ç¼å²åº |
| | | var result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None); //çå¬Socketä¿¡æ¯ |
| | | while (!result.CloseStatus.HasValue) //æ¯å¦å
³é |
| | | { |
| | | if (result.MessageType == WebSocketMessageType.Text)//ææ¬æ¶æ¯ |
| | | { |
| | | outputBytes.AddRange(buffer.Take(result.Count)); |
| | | if (result.EndOfMessage)//æ¶æ¯æ¯å¦å·²æ¥æ¶å®å
¨ |
| | | { |
| | | //åéè¿æ¥çæ¶æ¯ |
| | | string outputJson = Encoding.UTF8.GetString(outputBytes.ToArray(), 0, outputBytes.Count); |
| | | var scadaDict = JsonHelper.Json2Object<Dictionary<string, Dictionary<DateTime, string>>>(outputJson); |
| | | if (scadaDict != null && scadaDict.Any()) |
| | | { |
| | | foreach (var dict in scadaDict) |
| | | { |
| | | var data = new PumpIsopen(); |
| | | data.Tag = dict.Key; |
| | | foreach (var item in dict.Value) |
| | | { |
| | | var State = new IsOpen(); |
| | | State.DateTime = item.Key; |
| | | State.Isopen = item.Value; |
| | | data.Values.Add(State); |
| | | } |
| | | realScadaDataList.Add(data); |
| | | } |
| | | |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);//ç»§ç»çå¬Socketä¿¡æ¯ |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw ex; |
| | | } |
| | | finally |
| | | { |
| | | try |
| | | { |
| | | //å
³éWebSocket |
| | | await ws.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "AcknowledgeCloseframe", CancellationToken.None); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw ex; |
| | | } |
| | | ws.Abort(); |
| | | ws.Dispose(); |
| | | } |
| | | |
| | | return realScadaDataList; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// è·åææ®µæ¶é´çç¨çµé |
| | | /// </summary> |
| | | /// <param name="StartTime"></param> |
| | | /// <param name="EndTime"></param> |
| | | /// <param name="resolution"></param> |
| | | /// <returns></returns> |
| | | public static async Task<List<ZyDto.PumpTotalelectricity>> GetPumpTotalElectricity(DateTime StartTime, DateTime EndTime, string resolution = "300") |
| | | { |
| | | var tagDict = new Dictionary<string, string> |
| | | { |
| | | { "_0402010204040193046", "äºåæ°´1å·æ³µæåçµè½" }, |
| | | { "_0402010204040193047", "äºåæ°´2å·æ³µæåçµè½" }, |
| | | { "_0402010204012308007", "äºåæ°´3å·æ³µæåçµè½" }, |
| | | { "_0402010204012408007", "äºåæ°´4å·æ³µæåçµè½" }, |
| | | {" _0402010204012508007", "äºåæ°´5å·æ³µæåçµè½" }, |
| | | }; |
| | | var input = new ScadaDispatchInput |
| | | { |
| | | search = "history", |
| | | starttime = new DateTime(StartTime.Year, StartTime.Month, StartTime.Day, 0, 0, 0).ToString("G"), |
| | | endtime = new DateTime(EndTime.Year, EndTime.Month, EndTime.Day, 23, 59, 59).ToString("G"), |
| | | Resolution = resolution, |
| | | taglist = tagDict.Select(x => x.Key).ToArray() |
| | | }; |
| | | var realScadaDataList = await GetRealScadaResultElectricity(input); |
| | | return realScadaDataList; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// è·å宿¶æ°æ®åå
¸ |
| | | /// ç¨çµé |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static async Task<List<ZyDto.PumpTotalelectricity>> GetRealScadaResultElectricity(ScadaDispatchInput input) |
| | | { |
| | | if (input == null) |
| | | return default; |
| | | var ws = new ClientWebSocket(); |
| | | await ws.ConnectAsync(new Uri(_url_root), CancellationToken.None); |
| | | if (ws.State != WebSocketState.Open) |
| | | { |
| | | return default; |
| | | } |
| | | var realScadaDataList = new List<PumpTotalelectricity>(); |
| | | var inputJson = JsonHelper.Object2Json(input); |
| | | var inputBytes = Encoding.UTF8.GetBytes(inputJson); |
| | | await ws.SendAsync(new ArraySegment<byte>(inputBytes), WebSocketMessageType.Text, true, CancellationToken.None); |
| | | try |
| | | { |
| | | List<byte> outputBytes = new List<byte>();//å
¨é¨æ¶æ¯å®¹å¨ |
| | | var buffer = new byte[1024 * 4];//ç¼å²åº |
| | | var result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None); //çå¬Socketä¿¡æ¯ |
| | | while (!result.CloseStatus.HasValue) //æ¯å¦å
³é |
| | | { |
| | | if (result.MessageType == WebSocketMessageType.Text)//ææ¬æ¶æ¯ |
| | | { |
| | | outputBytes.AddRange(buffer.Take(result.Count)); |
| | | if (result.EndOfMessage)//æ¶æ¯æ¯å¦å·²æ¥æ¶å®å
¨ |
| | | { |
| | | //åéè¿æ¥çæ¶æ¯ |
| | | string outputJson = Encoding.UTF8.GetString(outputBytes.ToArray(), 0, outputBytes.Count); |
| | | var scadaDict = JsonHelper.Json2Object<Dictionary<DateTime, double>>(outputJson); |
| | | if (scadaDict != null && scadaDict.Any()) |
| | | { |
| | | foreach (var dict in scadaDict) |
| | | { |
| | | var data = new PumpTotalelectricity(); |
| | | data.DateTime = dict.Key; |
| | | data.value = dict.Value; |
| | | realScadaDataList.Add(data); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);//ç»§ç»çå¬Socketä¿¡æ¯ |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw ex; |
| | | } |
| | | finally |
| | | { |
| | | try |
| | | { |
| | | //å
³éWebSocket |
| | | await ws.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "AcknowledgeCloseframe", CancellationToken.None); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw ex; |
| | | } |
| | | ws.Abort(); |
| | | ws.Dispose(); |
| | | } |
| | | |
| | | return realScadaDataList; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// è·å宿¶æ°æ®åå
¸ |
| | | /// </summary> |