using Newtonsoft.Json; using ServiceCenter; using ServiceCenter.Helpers; using ServiceCenter.SqlSugars; using System.ComponentModel; using WCS.Core; using WCS.Entity; using WCS.Entity.Protocol.DataStructure; using WCS.Entity.Protocol.Station; using WCS.Service.Worlds; using WCS.WorkEngineering.Extensions; namespace WCS.Service.Systems { /// /// 数据采集系统 /// [BelongTo(typeof(DataCollectionWorld))] [Description("数据采集系统")] public class DataCollectionSysyem : ServiceSystem { public List ConvList; public DataCollectionSysyem() { ConvList = Device.All.Where(v => v.HasProtocol(typeof(IStation523))).Select(v => new Station(v, this.World)).ToList(); } protected override bool Do(bool obj) { SqlSugarHelper.Do(db => { DeviceDataPack pack = new DeviceDataPack(); pack.StationDatas = new DeviceDataCollection(); pack.StationDatas.Frame = DateTime.Now; foreach (var item in ConvList) { pack.StationDatas.Datas.Append(new StationData() { Code = item.Entity.Code, Frame = DateTime.Now, D520 = item.Data as WCS_Station520, D521 = item.Data as WCS_Station521, D523 = item.Data as WCS_Station523, }); } pack.Frame = DateTime.Now; //pack. //byte[] bytes = System.Text.Encoding.Default.GetBytes(JsonConvert.SerializeObject(ConvList, null, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore })); var plcData = new WCS_PlcData() { AddWho = "WCS", WAREHOUSE = ServiceHub.WarehouseName, CONTENT = JsonConvert.SerializeObject(ConvList, null, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }), }; var a = TypeConversionHelper.SerializeRedisValue(ConvList); //对bytes进行数据压缩 //plcData.CONTENT = bytes.Compress(); db.Default.Insertable(plcData).ExecuteCommand(); }); return true; } } }