using ServiceCenter.SqlSugars; using WCS.Core; using WCS.Entity.Protocol; using WCS.Entity.Protocol.BCR; using WCS.Entity.Protocol.DataStructure; using WCS.Entity.Protocol.Protocol.DataStructure; using WCS.Entity.Protocol.RGV; using WCS.Entity.Protocol.Robot; using WCS.Entity.Protocol.SRM; using WCS.Entity.Protocol.Station; using WCS.Entity.Protocol.Truss; using WCS.WorkEngineering.Systems; namespace WCS.WorkEngineering { public class ProtocolProxy : ProtocolProxyBase { public static DeviceDataPack DataPack { get; set; } = new DeviceDataPack(); public ProtocolProxy(Device dev, ProtocolInfo info, Type protocolType, World world) : base(dev, info, protocolType, world) { } protected override void DataChanged() { if (Device.Code == "RGV1" && Info.DBInfo.No == 520) { var a = Items; //var dev=Device.Protocol(ProtocolType) var b = a; } try { var datas = DataCollectionSysyem.AllDatas; if (Device.Code.All(char.IsNumber)) { if (!datas.ContainsKey(Device.Code)) datas[Device.Code] = new StationData { Code = Device.Code }; } else if (Device.Code.Contains("SRM")) { if (!datas.ContainsKey(Device.Code)) datas[Device.Code] = new SRMData { Code = Device.Code }; } else if (Device.Code.Contains("Truss")) { if (!datas.ContainsKey(Device.Code)) datas[Device.Code] = new TrussData() { Code = Device.Code }; } else if (Device.Code.Contains("Robot")) { if (!datas.ContainsKey(Device.Code)) datas[Device.Code] = new RobotData() { Code = Device.Code }; } else if (Device.Code.Contains("RGV")) { if (!datas.ContainsKey(Device.Code)) datas[Device.Code] = new RGVData { Code = Device.Code }; } if (!datas.TryGetValue(Device.Code, out var data)) return; data.Frame = DateTime.Now; var p = data.GetType().GetProperties().FirstOrDefault(v => v.PropertyType == ProtocolDataType); //var ty90 = WCS_Station90; //if (p.getty is ty90 or) //{ //} if (p == null) return; p.SetValue(data, DictionaryToEntity(ProtocolDataType, Items, data)); } catch (Exception ex) { Console.WriteLine(ex.Message); } } public object DictionaryToEntity(Type type, Dictionary plcItems, DeviceData data) { var entity = Activator.CreateInstance(type); //采集量 Parallel.ForEach(type.GetProperties(), ty => { if (plcItems.Any(x => x.Key == ty.Name)) { var item = plcItems.First(x => ty.Name == x.Key); ty.SetValue(entity, item.Value.Value); } }); Parallel.ForEach(type.GetProperties(), ty => { var items = data.GetType().GetProperties(); if (items.Any(x => x.Name == ty.Name)) { var item = items.First(x => ty.Name == x.Name); ty.SetValue(entity, item.GetValue(data)); } }); foreach (var ty in type.GetProperties().Where(x => x.Name == nameof(TDengineBaseEntity.CreateSql))) { var db = new SqlSugarHelper().PLC; switch (type.Name) { case nameof(WCS_SRM520): var item = entity as WCS_SRM520; ty.SetValue(entity, GetString(db.Insertable(item).ToSqlString())); break; case nameof(WCS_SRM521): var item1 = entity as WCS_SRM521; ty.SetValue(entity, GetString(db.Insertable(item1).ToSqlString())); break; case nameof(WCS_SRM537): var item2 = entity as WCS_SRM537; ty.SetValue(entity, GetString(db.Insertable(item2).ToSqlString())); break; case nameof(WCS_RGV520): var item3 = entity as WCS_RGV520; ty.SetValue(entity, GetString(db.Insertable(item3).ToSqlString())); break; case nameof(WCS_RGV521): var item4 = entity as WCS_RGV521; ty.SetValue(entity, GetString(db.Insertable(item4).ToSqlString())); break; case nameof(WCS_BCR80): var item5 = entity as WCS_BCR80; ty.SetValue(entity, GetString(db.Insertable(item5).ToSqlString())); break; case nameof(WCS_BCR81): var item6 = entity as WCS_BCR81; ty.SetValue(entity, GetString(db.Insertable(item6).ToSqlString())); break; case nameof(WCS_BCR83): var item7 = entity as WCS_BCR83; ty.SetValue(entity, GetString(db.Insertable(item7).ToSqlString())); break; case nameof(WCS_Station520): var item8 = entity as WCS_Station520; ty.SetValue(entity, GetString(db.Insertable(item8).ToSqlString())); break; case nameof(WCS_Station521): var item9 = entity as WCS_Station521; ty.SetValue(entity, GetString(db.Insertable(item9).ToSqlString())); break; case nameof(WCS_Station523): var item10 = entity as WCS_Station523; ty.SetValue(entity, GetString(db.Insertable(item10).ToSqlString())); break; case nameof(WCS_Station524): var item11 = entity as WCS_Station524; ty.SetValue(entity, GetString(db.Insertable(item11).ToSqlString())); break; case nameof(WCS_Station525): var item12 = entity as WCS_Station525; ty.SetValue(entity, GetString(db.Insertable(item12).ToSqlString())); break; case nameof(WCS_Station90): var item13 = entity as WCS_Station90; ty.SetValue(entity, GetString(db.Insertable(item13).ToSqlString())); break; case nameof(WCS_Station91): var item14 = entity as WCS_Station91; ty.SetValue(entity, GetString(db.Insertable(item14).ToSqlString())); break; case nameof(WCS_Truss520): var item15 = entity as WCS_Truss520; ty.SetValue(entity, GetString(db.Insertable(item15).ToSqlString())); break; case nameof(WCS_Truss521): var item16 = entity as WCS_Truss521; ty.SetValue(entity, GetString(db.Insertable(item16).ToSqlString())); break; case nameof(WCS_Truss523): var item17 = entity as WCS_Truss523; ty.SetValue(entity, GetString(db.Insertable(item17).ToSqlString())); break; case nameof(WCS_Truss530): var item18 = entity as WCS_Truss530; ty.SetValue(entity, GetString(db.Insertable(item18).ToSqlString())); break; case nameof(WCS_Truss531): var item19 = entity as WCS_Truss531; ty.SetValue(entity, GetString(db.Insertable(item19).ToSqlString())); break; case nameof(WCS_Robot520): var item20 = entity as WCS_Robot520; ty.SetValue(entity, GetString(db.Insertable(item20).ToSqlString())); break; case nameof(WCS_Robot521): var item21 = entity as WCS_Robot521; ty.SetValue(entity, GetString(db.Insertable(item21).ToSqlString())); break; case nameof(WCS_Robot522): var item22 = entity as WCS_Robot522; ty.SetValue(entity, GetString(db.Insertable(item22).ToSqlString())); break; case nameof(WCS_Robot530): var item23 = entity as WCS_Robot530; ty.SetValue(entity, GetString(db.Insertable(item23).ToSqlString())); break; case nameof(WCS_Robot531): var item24 = entity as WCS_Robot531; ty.SetValue(entity, GetString(db.Insertable(item24).ToSqlString())); break; } } return entity; } public string GetString(string value) { return value.Replace("INSERT INTO ", "") .Replace(",N'", ",'") .Replace("\0", "") .Replace("wcs_", "") .Replace("(N'", "('") + "\r"; } } }