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