using Newtonsoft.Json; using PlcSiemens.Core.Extension; using ServiceCenter.Extensions; using ServiceCenter.Logs; using ServiceCenter.Redis; using ServiceCenter.SqlSugars; using SqlSugar; using System.Collections.Concurrent; using System.ComponentModel; using System.Diagnostics; using System.Text; using WCS.Core; using WCS.Entity.Protocol.BCR; using WCS.Entity.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.Extensions; using WCS.WorkEngineering.Worlds; namespace WCS.WorkEngineering.Systems { /// /// 数据处理 /// [BelongTo(typeof(MainWorld))] [Description("数据处理")] public class MainSysyem : SystemBase { public override void Update(List list) { var sql = new StringBuilder(); try { var sw = new Stopwatch(); sw.Start(); var number = new List(); number.AddRange(new[] { 1, 2, 3, 4, 5 }); Parallel.ForEach(number, n => { var db = new SqlSugarHelper().PLC; var pack = RedisHub.Monitor.LPop("DataCollectionpacks"); ; if (pack == null) return; Parallel.ForEach(pack.GetType().GetProperties().OrderBy(x => x.Name), ps => { var sw10 = new Stopwatch(); sw10.Start(); var typeName = ""; try { //if (ps.PropertyType == typeof(ProtocolData[])) //{ // if (pack.BCR80.Any()) // { // var value = pack.BCR80.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_BCR80).Name; // } //} //else if (ps.PropertyType == typeof(ProtocolData[])) //{ // if (pack.BCR81.Any()) // { // var value = pack.BCR81.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_BCR81).Name; // } //} //else if (ps.PropertyType == typeof(ProtocolData[])) //{ // if (pack.BCR83.Any()) // { // var value = pack.BCR83.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_BCR83).Name; // } //} if (ps.PropertyType == typeof(ProtocolData[])) { if (pack.RGV520.Any()) { var value = pack.RGV520.Select(x => x.Data).ToList(); var sql = db.Insertable(value).ToSqlString(); db.Ado.ExecuteCommand(sql); typeName = typeof(WCS_RGV520).Name; } } else if (ps.PropertyType == typeof(ProtocolData[])) { if (pack.RGV521.Any()) { var value = pack.RGV521.Select(x => x.Data).ToList(); var sql = db.Insertable(value).ToSqlString(); db.Ado.ExecuteCommand(sql); typeName = typeof(WCS_RGV521).Name; } } else if (ps.PropertyType == typeof(ProtocolData[])) { if (pack.RGV523.Any()) { var value = pack.RGV523.Select(x => new QuestDb_RGV523() { Alarm = Convert.ToString(x.Data.Alarm), Code = x.Data.Code, Frame = x.Data.Frame.ToLocalTime() }).ToList(); var sql = db.Insertable(value).ToSqlString(); db.Ado.ExecuteCommand(GetString(sql)); typeName = typeof(WCS_RGV523).Name; } } else if (ps.PropertyType == typeof(ProtocolData[])) { if (pack.Robot520.Any()) { var value = pack.Robot520.Select(x => x.Data).ToList(); var sql = db.Insertable(value).ToSqlString(); db.Ado.ExecuteCommand(sql); typeName = typeof(WCS_Robot520).Name; } } else if (ps.PropertyType == typeof(ProtocolData[])) { if (pack.Robot521.Any()) { var value = pack.Robot521.Select(x => x.Data).ToList(); var sql = db.Insertable(value).ToSqlString(); db.Ado.ExecuteCommand(sql); typeName = typeof(WCS_Robot521).Name; } } else if (ps.PropertyType == typeof(ProtocolData[])) { if (pack.Robot522.Any()) { var value = pack.Robot522.Select(x => new QuestDb_Robot522() { Alarm = Convert.ToString(x.Data.Alarm), Code = x.Data.Code, Frame = x.Data.Frame.ToLocalTime() }).ToList(); var sql = db.Insertable(value).ToSqlString(); db.Ado.ExecuteCommand(sql); typeName = typeof(WCS_Robot522).Name; } } //else if (ps.PropertyType == typeof(ProtocolData[])) //{ // if (pack.Robot530.Any()) // { // var value = pack.Robot530.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Robot530).Name; // } //} //else if (ps.PropertyType == typeof(ProtocolData[])) //{ // if (pack.Robot531.Any()) // { // var value = pack.Robot531.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Robot531).Name; // } //} else if (ps.PropertyType == typeof(ProtocolData[])) { if (pack.SRM520.Any()) { var value = pack.SRM520.Select(x => x.Data).ToList(); var sql = db.Insertable(value).ToSqlString(); db.Ado.ExecuteCommand(sql); typeName = typeof(WCS_SRM520).Name; } } else if (ps.PropertyType == typeof(ProtocolData[])) { if (pack.SRM521.Any()) { var value = pack.SRM521.Select(x => x.Data).ToList(); var sql = db.Insertable(value).ToSqlString(); db.Ado.ExecuteCommand(sql); typeName = typeof(WCS_SRM521).Name; } } else if (ps.PropertyType == typeof(ProtocolData[])) { if (pack.SRM523.Any()) { var value = pack.SRM523.Select(x => new QuestDb_SRM523() { Alarm = $"{Convert.ToString(x.Data.Alarm1)},{Convert.ToString(x.Data.Alarm1)}", Code = x.Data.Code, Frame = x.Data.Frame.ToLocalTime() }).ToList(); var sql = db.Insertable(value).ToSqlString(); db.Ado.ExecuteCommand(GetString(sql)); typeName = typeof(WCS_SRM523).Name; } } //else if (ps.PropertyType == typeof(ProtocolData[])) //{ // if (pack.Station520.Any()) // { // var value = pack.Station520.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Station520).Name; // } //} //else if (ps.PropertyType == typeof(ProtocolData[])) //{ // if (pack.Station521.Any()) // { // var value = pack.Station521.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Station521).Name; // } //} //else if (ps.PropertyType == typeof(ProtocolData[])) //{ // if (pack.Station523.Any()) // { // var value = pack.Station523.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Station523).Name; // } //} //else if (ps.PropertyType == typeof(ProtocolData[])) //{ // if (pack.Station524.Any()) // { // var value = pack.Station524.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Station524).Name; // } //} //else if (ps.PropertyType == typeof(ProtocolData[])) //{ // if (pack.Station525.Any()) // { // var value = pack.Station525.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Station525).Name; // } //} //else if (ps.PropertyType == typeof(ProtocolData[])) //{ // if (pack.Station90.Any()) // { // var value = pack.Station90.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Station90).Name; // } //} else if (ps.PropertyType == typeof(ProtocolData[])) { if (pack.Station91.Any()) { var value = pack.Station91.Select(x => x.Data).ToList(); var sql = db.Insertable(value).ToSqlString(); db.Ado.ExecuteCommand(sql); typeName = typeof(WCS_Station91).Name; } } else if (ps.PropertyType == typeof(ProtocolData[])) { if (pack.Truss520.Any()) { var value = pack.Truss520.Select(x => x.Data).ToList(); var sql = db.Insertable(value).ToSqlString(); db.Ado.ExecuteCommand(sql); typeName = typeof(WCS_Truss520).Name; } } else if (ps.PropertyType == typeof(ProtocolData[])) { if (pack.Truss521.Any()) { var value = pack.Truss521.Select(x => x.Data).ToList(); var sql = db.Insertable(value).ToSqlString(); db.Ado.ExecuteCommand(sql); typeName = typeof(WCS_Truss521).Name; } } else if (ps.PropertyType == typeof(ProtocolData[])) { if (pack.Truss523.Any()) { var value = pack.Truss523.Select(x => new QuestDb_Truss523() { Alarm = Convert.ToString(x.Data.Alarm), Code = x.Data.Code, Frame = x.Data.Frame.ToLocalTime() }).ToList(); var sql = db.Insertable(value).ToSqlString(); db.Ado.ExecuteCommand(sql); typeName = typeof(WCS_Truss523).Name; } } //else if (ps.PropertyType == typeof(ProtocolData[])) //{ // if (pack.Truss530.Any()) // { // var value = pack.Truss530.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Truss530).Name; // } //} //else if (ps.PropertyType == typeof(ProtocolData[])) //{ // if (pack.Truss531.Any()) // { // var value = pack.Truss531.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Truss531).Name; // } //} } catch (Exception e) { World.Log($"错误内容:{e.Message}"); } finally { sw10.Stop(); World.Log($"执行耗时:{typeName}:{sw10.ElapsedMilliseconds}"); } }); }); //var db = new SqlSugarHelper().PLC; //var pack = RedisHub.Monitor.LPop("DataCollectionpacks"); ; //if (pack == null) return; //Parallel.ForEach(pack.GetType().GetProperties().OrderBy(x => x.Name), ps => //{ // var sw10 = new Stopwatch(); // sw10.Start(); // var typeName = ""; // try // { // //if (ps.PropertyType == typeof(ProtocolData[])) // //{ // // if (pack.BCR80.Any()) // // { // // var value = pack.BCR80.Select(x => x.Data).ToList(); // // var sql = db.Insertable(value).ToSqlString(); // // db.Ado.ExecuteCommand(sql); // // typeName = typeof(WCS_BCR80).Name; // // } // //} // //else if (ps.PropertyType == typeof(ProtocolData[])) // //{ // // if (pack.BCR81.Any()) // // { // // var value = pack.BCR81.Select(x => x.Data).ToList(); // // var sql = db.Insertable(value).ToSqlString(); // // db.Ado.ExecuteCommand(sql); // // typeName = typeof(WCS_BCR81).Name; // // } // //} // //else if (ps.PropertyType == typeof(ProtocolData[])) // //{ // // if (pack.BCR83.Any()) // // { // // var value = pack.BCR83.Select(x => x.Data).ToList(); // // var sql = db.Insertable(value).ToSqlString(); // // db.Ado.ExecuteCommand(sql); // // typeName = typeof(WCS_BCR83).Name; // // } // //} // if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.RGV520.Any()) // { // var value = pack.RGV520.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_RGV520).Name; // } // } // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.RGV521.Any()) // { // var value = pack.RGV521.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_RGV521).Name; // } // } // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.RGV523.Any()) // { // var value = pack.RGV523.Select(x => new QuestDb_RGV523() // { // Alarm = Convert.ToString(x.Data.Alarm), // Code = x.Data.Code, // Frame = x.Data.Frame.ToLocalTime() // }).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(GetString(sql)); // typeName = typeof(WCS_RGV523).Name; // } // } // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.Robot520.Any()) // { // var value = pack.Robot520.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Robot520).Name; // } // } // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.Robot521.Any()) // { // var value = pack.Robot521.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Robot521).Name; // } // } // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.Robot522.Any()) // { // var value = pack.Robot522.Select(x => new QuestDb_Robot522() // { // Alarm = Convert.ToString(x.Data.Alarm), // Code = x.Data.Code, // Frame = x.Data.Frame.ToLocalTime() // }).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Robot522).Name; // } // } // //else if (ps.PropertyType == typeof(ProtocolData[])) // //{ // // if (pack.Robot530.Any()) // // { // // var value = pack.Robot530.Select(x => x.Data).ToList(); // // var sql = db.Insertable(value).ToSqlString(); // // db.Ado.ExecuteCommand(sql); // // typeName = typeof(WCS_Robot530).Name; // // } // //} // //else if (ps.PropertyType == typeof(ProtocolData[])) // //{ // // if (pack.Robot531.Any()) // // { // // var value = pack.Robot531.Select(x => x.Data).ToList(); // // var sql = db.Insertable(value).ToSqlString(); // // db.Ado.ExecuteCommand(sql); // // typeName = typeof(WCS_Robot531).Name; // // } // //} // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.SRM520.Any()) // { // var value = pack.SRM520.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_SRM520).Name; // } // } // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.SRM521.Any()) // { // var value = pack.SRM521.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_SRM521).Name; // } // } // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.SRM523.Any()) // { // var value = pack.SRM523.Select(x => new QuestDb_SRM523() // { // Alarm = $"{Convert.ToString(x.Data.Alarm1)},{Convert.ToString(x.Data.Alarm1)}", // Code = x.Data.Code, // Frame = x.Data.Frame.ToLocalTime() // }).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(GetString(sql)); // typeName = typeof(WCS_SRM523).Name; // } // } // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.Station520.Any()) // { // var value = pack.Station520.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Station520).Name; // } // } // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.Station521.Any()) // { // var value = pack.Station521.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Station521).Name; // } // } // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.Station523.Any()) // { // var value = pack.Station523.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Station523).Name; // } // } // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.Station524.Any()) // { // var value = pack.Station524.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Station524).Name; // } // } // //else if (ps.PropertyType == typeof(ProtocolData[])) // //{ // // if (pack.Station525.Any()) // // { // // var value = pack.Station525.Select(x => x.Data).ToList(); // // var sql = db.Insertable(value).ToSqlString(); // // db.Ado.ExecuteCommand(sql); // // typeName = typeof(WCS_Station525).Name; // // } // //} // //else if (ps.PropertyType == typeof(ProtocolData[])) // //{ // // if (pack.Station90.Any()) // // { // // var value = pack.Station90.Select(x => x.Data).ToList(); // // var sql = db.Insertable(value).ToSqlString(); // // db.Ado.ExecuteCommand(sql); // // typeName = typeof(WCS_Station90).Name; // // } // //} // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.Station91.Any()) // { // var value = pack.Station91.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Station91).Name; // } // } // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.Truss520.Any()) // { // var value = pack.Truss520.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Truss520).Name; // } // } // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.Truss521.Any()) // { // var value = pack.Truss521.Select(x => x.Data).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Truss521).Name; // } // } // else if (ps.PropertyType == typeof(ProtocolData[])) // { // if (pack.Truss523.Any()) // { // var value = pack.Truss523.Select(x => new QuestDb_Truss523() // { // Alarm = Convert.ToString(x.Data.Alarm), // Code = x.Data.Code, // Frame = x.Data.Frame.ToLocalTime() // }).ToList(); // var sql = db.Insertable(value).ToSqlString(); // db.Ado.ExecuteCommand(sql); // typeName = typeof(WCS_Truss523).Name; // } // } // //else if (ps.PropertyType == typeof(ProtocolData[])) // //{ // // if (pack.Truss530.Any()) // // { // // var value = pack.Truss530.Select(x => x.Data).ToList(); // // var sql = db.Insertable(value).ToSqlString(); // // db.Ado.ExecuteCommand(sql); // // typeName = typeof(WCS_Truss530).Name; // // } // //} // //else if (ps.PropertyType == typeof(ProtocolData[])) // //{ // // if (pack.Truss531.Any()) // // { // // var value = pack.Truss531.Select(x => x.Data).ToList(); // // var sql = db.Insertable(value).ToSqlString(); // // db.Ado.ExecuteCommand(sql); // // typeName = typeof(WCS_Truss531).Name; // // } // //} // } // catch (Exception e) // { // World.Log($"错误内容:{e.Message}"); // } // finally // { // sw10.Stop(); // World.Log($"执行耗时:{typeName}:{sw10.ElapsedMilliseconds}"); // } //}); sw.Stop(); World.Log($"数据处理耗时:{sw.ElapsedMilliseconds}"); } catch (Exception e) { World.Log($"错误内容:{e.Message}"); } } private Type GetProtocolType(Type source) { var t = source.GetInterfaces().FirstOrDefault(v => v.GetInterfaces().Any(d => d.Name == "IProtocol")); var t1 = source.GetInterfaces().FirstOrDefault(v => v.GetInterfaces().Any(d => d.Name == "IProtocol")); return t; } private object AppendLock = new object(); public StringBuilder Append(StringBuilder sql, string value) { lock (AppendLock) { return sql.Append(value); } } public string GetString(string value) { return value.Replace(",N'", ",'") .Replace("\0", "") .Replace("(N'", "('") + "\r"; } public override List GetObjects() { return new List(); } } }