| | |
| | | /// <param name="endTime">ç»ææ¶é´</param> |
| | | /// <param name="resolution">æ¶é´æ¥é¿,é»è®¤300ç§</param> |
| | | /// <returns></returns> |
| | | public static async Task<List<ZyDto.PumpIsopen>> GetPumpOpenStatusBySingleDay(DateTime StartTime, string resolution = "300") |
| | | public static async Task<List<ZyModel.RealScadaData>> GetPumpOpenStatusBySingleDay(DateTime StartTime, 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; |
| | | return null; |
| | | } |
| | | var tagDict = new Dictionary<string, string> |
| | | { |
| | |
| | | Resolution = resolution, |
| | | taglist = tagDict.Select(x => x.Key).ToArray() |
| | | }; |
| | | var realScadaDataList = await GetRealScadaResultSate(input); |
| | | var realScadaDataList = await GetRealScadaResult(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> |
| | |
| | | /// <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") |
| | | public static async Task<List<ZyModel.RealScadaData>> GetPumpTotalElectricity(DateTime StartTime, DateTime EndTime, string resolution = "300") |
| | | { |
| | | var tagDict = new Dictionary<string, string> |
| | | { |
| | |
| | | Resolution = resolution, |
| | | taglist = tagDict.Select(x => x.Key).ToArray() |
| | | }; |
| | | var realScadaDataList = await GetRealScadaResultElectricity(input); |
| | | var realScadaDataList = await GetRealScadaResult(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; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |