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 { /// /// 标准数据对接 /// [AllowAnonymous] [Route("Run/DataDocking/Standard")] [ApiDescriptionSettings("Run", Name = "标准数据对接", Order = 1100)] public class DataDocking_StandardController : IDynamicApiController { /// /// 插入 /// [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(); 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(); 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; } } }