| | |
| | | using Furion.DataEncryption; |
| | | using AutoMapper; |
| | | using System.Text; |
| | | using IStation.Calculation; |
| | | |
| | | namespace IStation.Application |
| | | { |
| | |
| | | [ApiDescriptionSettings("Run", Name = "标准数据对接", Order = 1100)] |
| | | public class DataDocking_StandardController : IDynamicApiController |
| | | { |
| | | //配置列表 |
| | | private static List<Model.DataDockingConfigureExStandard> _standardConfigureList = null; |
| | | |
| | | /// <summary> |
| | | /// 插入 |
| | | /// </summary> |
| | | [Route("Insert@V1.0")] |
| | | [HttpPost] |
| | | public bool Insert([Required] DataDockingStandardCorpRecordInput input) |
| | | public bool Insert([Required] DataDockingStandardInput input) |
| | | { |
| | | LogHelper.Info($"客户:{input.CorpId},注册码:{input.RegisterCode},插入数据记录:{input.Records.Count}."); |
| | | var corpration = new Service.Corpration().GetByTerminalId(input.CorpId); |
| | | if (corpration == null) |
| | | LogHelper.Info($"数据标准对接接口中,注册码:{input.RegisterCode},插入数据记录数量:{input.Records.Count}."); |
| | | |
| | | var corpIds = DataDockingCorpHelper.GetCorpIds(); |
| | | if (corpIds == null || corpIds.Count < 1) |
| | | { |
| | | throw new Exception("未检索到客户信息!"); |
| | | throw new Exception("未检索到客户标识配置信息!"); |
| | | } |
| | | var standardConfigureList = DataDockingStandardCacheHelper.GetCache(corpration.ID); |
| | | if (standardConfigureList == null||standardConfigureList.Count<1) |
| | | if (_standardConfigureList == null) |
| | | { |
| | | var configureList = new Service.DataDockingConfigure().GetByCorpID(corpration.ID); |
| | | var configureList = new Service.DataDockingConfigure().GetByCorpIds(corpIds); |
| | | if (configureList == null || configureList.Count < 1) |
| | | { |
| | | throw new Exception("未检索到数据对接配置信息!"); |
| | |
| | | { |
| | | throw new Exception("未检索到数据对接标准配置信息!"); |
| | | } |
| | | standardConfigureList = configureList.Select(x => new Model.DataDockingConfigureExStandard(x)).ToList(); |
| | | DataDockingStandardCacheHelper.SetCache(corpration.ID, standardConfigureList); |
| | | _standardConfigureList = configureList.Select(x => new Model.DataDockingConfigureExStandard(x)).ToList(); |
| | | } |
| | | |
| | | var standardConfigure = standardConfigureList.Find(x => x.ConfigureParas != null && x.ConfigureParas.RegisterCode == input.RegisterCode); |
| | | 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>(); |
| | | var inputRecords = input.Records.OrderByDescending(x=>x.RecordTime).ToList(); |
| | | foreach (var mapper in standardConfigure.Mappers) |
| | | { |
| | | var inputRecord = input.Records.Find(x=>x.RecordId==mapper.SignId); |
| | | var inputRecord = inputRecords.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>(); |
| | | var record = new Model.MonitorDataDockingReceiveRecord |
| | | { |
| | | SysId = mapper.SysId, |
| | | RecordType = inputRecord.RecordType, |
| | | SrcTime = inputRecord.RecordTime, |
| | | SrcValue = inputRecord.RecordValue, |
| | | DataStatus = new List<string>() |
| | | }; |
| | | records.Add(record); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | var queueHelper = new RabbitMqQueueHelper(); |
| | | var bol = queueHelper.Push(ConfigHelper.DataDockingQueueName, new Model.MonitorDataDockingCorpRecord() |
| | | var bol = queueHelper.Push(Settings.Queue.DataDockingQueueName, new Model.MonitorDataDockingCorpRecord() |
| | | { |
| | | CorpID = corpration.ID, |
| | | CorpID = standardConfigure.CorpID, |
| | | ConfigureID = standardConfigure.ID, |
| | | Records = records |
| | | }); |
| | | if (bol) |
| | | { |
| | | LogHelper.Info($"客户:{corpration.ID},标准数据对接配置:{standardConfigure.ID},推入通道记录数量:{records.Count}."); |
| | | LogHelper.Info($"数据标准对接接口中,客户:{standardConfigure.CorpID},标准数据对接配置:{standardConfigure.ID},推入通道记录数量:{records.Count}."); |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 补录 |
| | | /// </summary> |
| | | [Route("Supplement@V1.0")] |
| | | [HttpPost] |
| | | public bool Supplement([Required] DataDockingStandardInput input) |
| | | { |
| | | LogHelper.Info($"数据标准对接接口中,注册码:{input.RegisterCode},补录数据记录数量:{input.Records.Count}."); |
| | | |
| | | var corpIds = DataDockingCorpHelper.GetCorpIds(); |
| | | if (corpIds == null || corpIds.Count < 1) |
| | | { |
| | | throw new Exception("未检索到客户标识配置信息!"); |
| | | } |
| | | if (_standardConfigureList == null) |
| | | { |
| | | var configureList = new Service.DataDockingConfigure().GetByCorpIds(corpIds); |
| | | 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(); |
| | | } |
| | | 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 recordList = new List<Model.MonitorBasicRecord>(); |
| | | foreach (var mapper in standardConfigure.Mappers) |
| | | { |
| | | var inputRecordList = input.Records.Where(t => t.RecordId == mapper.SignId).ToList(); |
| | | if (inputRecordList != null && inputRecordList.Count > 0) |
| | | { |
| | | var inputGroupList = inputRecordList.GroupBy(x => new { x.RecordId, x.RecordTime }).ToList(); |
| | | foreach (var inputGroup in inputGroupList) |
| | | { |
| | | var inputFirstRecord = inputGroup.First(); |
| | | var monitor = new Service.MonitorPoint().GetExSignalWithSignalTypeByID(standardConfigure.CorpID, mapper.SysId); |
| | | if (monitor == null) |
| | | { |
| | | continue; |
| | | } |
| | | switch (inputFirstRecord.RecordType) |
| | | { |
| | | case Model.eMonitorType.General: |
| | | { |
| | | var receiveRecord = new Model.MonitorDataDockingReceiveRecord(); |
| | | receiveRecord.SysId = mapper.SysId; |
| | | receiveRecord.RecordType = inputFirstRecord.RecordType; |
| | | receiveRecord.SrcTime = inputFirstRecord.RecordTime; |
| | | receiveRecord.SrcValue = inputFirstRecord.RecordValue; |
| | | var record = MonitorHandleHelper.HandleHistory(monitor, monitor.SignalList.First(),receiveRecord,inputFirstRecord.RecordTime); |
| | | if (record != null) |
| | | { |
| | | recordList.Add(record); |
| | | } |
| | | } |
| | | break; |
| | | case Model.eMonitorType.Vibration: |
| | | { |
| | | |
| | | } |
| | | break; |
| | | default: break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (recordList.Count < 1) |
| | | { |
| | | return false; |
| | | } |
| | | |
| | | //临时 |
| | | var bol = new Service.MonitorRealRecord().InsertsSupplement(recordList.Select(x=>x as Model.MonitorRealRecordPure).ToList()); |
| | | return bol; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |