using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IStation.DataDockingApi { /// /// /// public class HandleHelper : IDataDockingApi.IHandleHelper { /// /// /// public void HandleData(List mappers, Action> receive) { if (mappers == null || mappers.Count < 1) return; var appParas = AppParasHelper.Get(); if (appParas == null) { LogHelper.Error("上海城投制水 Api 数据对接中,缺少对接配置文件"); } string token = null; if (appParas.istoken) { token = TokenHelper.Get(); if (string.IsNullOrEmpty(token)) { LogHelper.Error("上海城投制水 Api 数据对接中,获取Token失败"); return; } } var list_external = mappers.Where(x => !string.IsNullOrEmpty(x.SignId)).Select(x => x.SignId).Distinct().ToList(); var data = JsonHelper.Object2Json(list_external); var responseText = HttpRequestHelper.Post(appParas.url.last, token, data); var result = JsonHelper.Json2Object>>(responseText); if (!result.success) { LogHelper.Info("上海城投制水 Api 数据对接中,获取实时数据失败(返回false)"); return; } var apiModel = result.data; if (apiModel == null || apiModel.Count < 1) { LogHelper.Info("上海城投制水 Api 数据对接中,获取实时数据失败(返回结构为空)"); return; } var record_receive_list = new List(); foreach (var mapper in mappers) { var src = apiModel.Find(x => x.mpId == mapper.SignId); if (src != null && src.data != null && src.data.Count > 0) { var timeZone = TimeHelper.Convert(long.Parse(src.data[0][0].ToString())); var time = DateTime.SpecifyKind(timeZone, DateTimeKind.Unspecified); var record = new Model.MonitorDataDockingReceiveRecord { SysId = mapper.SysId, RecordType = Model.eMonitorType.General, SrcTime = time, SrcValue = src.data[0][1].ToString() }; record_receive_list.Add(record); } } receive(record_receive_list); if (appParas.debug) { DebugHelper.Debug(apiModel); } } } }