using Microsoft.AspNetCore.Mvc;
|
using System.Net;
|
using System.Net.Http.Headers;
|
using Microsoft.Extensions.Hosting.Internal;
|
using Microsoft.AspNetCore.Http.Extensions;
|
using IStation.Untity;
|
using Furion.DynamicApiController;
|
using System.ComponentModel.DataAnnotations;
|
using Mapster;
|
using Microsoft.AspNetCore.Http;
|
using Furion.DependencyInjection;
|
using Microsoft.AspNetCore.Authorization;
|
using Furion.DataEncryption;
|
using AutoMapper;
|
using System.Text;
|
|
namespace IStation.Application
|
{
|
/// <summary>
|
/// 标准数据对接
|
/// </summary>
|
[AllowAnonymous]
|
[Route("Run/DataDocking/Standard")]
|
[ApiDescriptionSettings("Run", Name = "标准数据对接", Order = 1100)]
|
public class DataDocking_StandardController : IDynamicApiController
|
{
|
/// <summary>
|
/// 插入
|
/// </summary>
|
[Route("Insert@V1.0")]
|
[HttpPost]
|
public bool Insert([Required] DataDockingStandardCorpRecordInput input)
|
{
|
LogHelper.Info($"客户:{input.CorpId},注册码:{input.RegisterCode},插入数据记录:{input.Records.Count}.");
|
var corpration = new Service.Corpration().GetByTerminalId(input.CorpId);
|
if (corpration == null)
|
{
|
throw new Exception("未检索到客户信息!");
|
}
|
var standardConfigureList = DataDockingStandardCacheHelper.GetCache(corpration.ID);
|
if (standardConfigureList == null||standardConfigureList.Count<1)
|
{
|
var configureList = new Service.DataDockingConfigure().GetByCorpID(corpration.ID);
|
if (configureList == null || configureList.Count < 1)
|
{
|
throw new Exception("未检索到数据对接配置信息!");
|
}
|
configureList = configureList.Where(x => x.DockingMode == Model.DataDockingConfigure.eDockingMode.Standard).ToList();
|
if (configureList == null || configureList.Count < 1)
|
{
|
throw new Exception("未检索到数据对接标准配置信息!");
|
}
|
standardConfigureList = configureList.Select(x => new Model.DataDockingConfigureExStandard(x)).ToList();
|
DataDockingStandardCacheHelper.SetCache(corpration.ID, standardConfigureList);
|
}
|
|
var standardConfigure = standardConfigureList.Find(x => x.ConfigureParas != null && x.ConfigureParas.RegisterCode == input.RegisterCode);
|
if (standardConfigure == null)
|
{
|
throw new Exception("未检索到数据对接标准配置信息!");
|
}
|
if (standardConfigure.Mappers == null || standardConfigure.Mappers.Count < 1)
|
{
|
throw new Exception("数据对接标准配置信息中,未配置有效映射关系!");
|
}
|
|
var records = new List<Model.MonitorDataDockingReceiveRecord>();
|
foreach (var mapper in standardConfigure.Mappers)
|
{
|
var inputRecord = input.Records.Find(x=>x.RecordId==mapper.SignId);
|
if (inputRecord != null)
|
{
|
var record = new Model.MonitorDataDockingReceiveRecord();
|
record.SysId = mapper.SysId;
|
record.RecordType = inputRecord.RecordType;
|
record.SrcTime = inputRecord.RecordTime;
|
record.SrcValue = inputRecord.RecordValue;
|
record.DataStatus = new List<string>();
|
records.Add(record);
|
}
|
}
|
|
if (records.Count < 1)
|
{
|
throw new Exception("未接收到有效数据记录!");
|
}
|
|
var queueHelper = new RabbitMqQueueHelper();
|
var bol = queueHelper.Push(ConfigHelper.DataDockingQueueName, new Model.MonitorDataDockingCorpRecord()
|
{
|
CorpID = corpration.ID,
|
ConfigureID = standardConfigure.ID,
|
Records = records
|
});
|
if (bol)
|
{
|
LogHelper.Info($"客户:{corpration.ID},标准数据对接配置:{standardConfigure.ID},推入通道记录数量:{records.Count}.");
|
return true;
|
}
|
return false;
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
}
|