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);
}
}
}
}