林豪 左 1 年之前
父节点
当前提交
25970080bf

+ 88 - 127
ServiceCenter/Logs/LogHub.cs

@@ -17,75 +17,68 @@ namespace ServiceCenter.Logs
         /// <param name="World">当前世界</param>
         public static void WorldPublish(ConcurrentQueue<KeyLog> logs, string World)
         {
-            if (logs.Count > 0)
+            if (logs.Count <= 0) return;
+            //var sql = new StringBuilder();
+            //sql.Append("INSERT INTO ");
+            //var db = new SqlSugarHelper().PLC;
+            try
             {
-                //var sql = new StringBuilder();
-                //sql.Append("INSERT INTO ");
-                //var db = new SqlSugarHelper().PLC;
-                try
+                Parallel.ForEach(logs.GroupBy(x => x.Channel.System), item1 =>
                 {
-                    Parallel.ForEach(logs.GroupBy(x => x.Channel.System), item1 =>
+                    Parallel.ForEach(item1.GroupBy(x => x.Channel.Item), item2 =>
                     {
-                        Parallel.ForEach(item1.GroupBy(x => x.Channel.Item), item2 =>
+                        var msgList = item2.Select(x => new
                         {
-                            var msgList = item2.Select(x => new
-                            {
-                                x.Time,
-                                x.Log.Message
-                            }).ToList();
-                            RedisHub.Default.Set($"WCSLog:{item1.Key}:{item2.Key}", JsonConvert.SerializeObject(msgList));
-                        });
+                            x.Time,
+                            x.Log.Message
+                        }).ToList();
+                        RedisHub.Default.Set($"WCSLog:{item1.Key}:{item2.Key}", JsonConvert.SerializeObject(msgList));
                     });
+                });
+            }
+            catch
+            {
+                // ignored
+            }
 
-                    //每一条数据存入redis
-                    foreach (var log in logs)
+            try
+            {
+                //每一条数据存入redis
+                foreach (var log in logs.OrderBy(x => x.Time))
+                {
+                    try
                     {
-                        try
+                        var dir = $"D:\\WCSLogs\\{DateTime.Now.yyyyMMdd()}\\{log.Channel.World}\\{log.Channel.System}\\{log.Channel.Item}\\";
+                        var msg = $"{log.Time.yyyyMMddhhmmssf()}--[{Thread.CurrentThread.ManagedThreadId}]--{log}";
+                        if (log.Log.Message.IsNullOrEmpty()) continue;
+                        var title = $"{log.Log.Message.Split(":")[0]}.txt";
+                        RedisHub.Default.RPush("LogHub", JsonConvert.SerializeObject(new LogModel
                         {
-                            var dir = $"D:\\WCSLogs\\{DateTime.Now.yyyyMMdd()}\\{log.Channel.World}\\{log.Channel.System}\\{log.Channel.Item}\\";
-                            var msg = $"{log.Time.yyyyMMddhhmmssf()}--[{Thread.CurrentThread.ManagedThreadId}]--{log}\n";
-                            if (log.Log.Message.IsNullOrEmpty()) continue;
-                            var title = $"{log.Log.Message.Split(":")[0]}.txt";
-                            RedisHub.Default.RPush("LogHub", JsonConvert.SerializeObject(new LogModel
-                            {
-                                path = dir,
-                                Title = title,
-                                Con = msg
-                            }));
-                            //sql.Append(GetString(db.Insertable(new WCS_Log()
-                            //{
-                            //    World = log.Channel.World,
-                            //    System = log.Channel.System,
-                            //    Code = log.Channel.Item.ToLower().Replace(".", ""),
-                            //    Title = log.Log.Message.Split(":")[0],
-                            //    ExTime = log.Time,
-                            //    ManagedThreadId = Thread.CurrentThread.ManagedThreadId,
-                            //    Content = log.Log.Message.RemoveEscapeCharacters().Substring(0, 254)
-                            //}).ToSqlString()));
-                        }
-                        catch (Exception e)
-                        {
-                        }
+                            Time = log.Time,
+                            path = dir,
+                            Title = title,
+                            Con = msg
+                        }));
                     }
-                    //var sqlText = sql.ToString();
-                    //if (sqlText.Contains("russ1"))
-                    //{
-                    //    var a = 1;
-                    //}
-                    //db.Ado.ExecuteCommand(sql.ToString());
-                    //存入业务报警内容
-                    List<BusinessAlarm> businesses = logs.Where(v => v.Log.Level > LogLevelEnum.Low && v.Log.LogUpLoad == LogUpLoadEnum.UpLoadWMS).Select(v => new BusinessAlarm()
+                    catch
                     {
-                        BusinessName = v.Channel.System,
-                        DevNo = v.Channel.Item,
-                        Con = v.ToString(),
-                        Time = DateTime.Now
-                    }).ToList();
-                    RedisHub.WMS.Set($"{nameof(BusinessAlarm)}:{World}", JsonConvert.SerializeObject(businesses));
+                        // ignored
+                    }
                 }
-                catch
+
+                //存入业务报警内容
+                List<BusinessAlarm> businesses = logs.Where(v => v.Log.Level > LogLevelEnum.Low && v.Log.LogUpLoad == LogUpLoadEnum.UpLoadWMS).Select(v => new BusinessAlarm()
                 {
-                }
+                    BusinessName = v.Channel.System,
+                    DevNo = v.Channel.Item,
+                    Con = v.ToString(),
+                    Time = DateTime.Now
+                }).ToList();
+                RedisHub.WMS.Set($"{nameof(BusinessAlarm)}:{World}", JsonConvert.SerializeObject(businesses));
+            }
+            catch
+            {
+                // ignored
             }
         }
 
@@ -116,12 +109,6 @@ namespace ServiceCenter.Logs
         /// <param name="msg">内容</param>
         public static void ExRecord(this SystemBase system, string devCode, string msg)
         {
-            //var key = $"{system.World.Description}:{devCode}";
-            //RedisHub.Default.RPush($"{system.World.Description}:{devCode}", msg);
-            //if (RedisHub.Monitor.LLen(key) > 5000)
-            //{
-            //    RedisHub.Monitor.LTrim(key, 4000, -1);
-            //}
         }
 
         /// <summary>
@@ -134,16 +121,10 @@ namespace ServiceCenter.Logs
         {
             try
             {
-                //var key = $"{system.World.Description}:{devCode}";
-                //RedisHub.Default.RPush(key, msg + ints.JsonToString());
-                //if (RedisHub.Monitor.LLen(key) > 5000)
-                //{
-                //    RedisHub.Monitor.LTrim(key, 4000, -1);
-                //}
             }
-            catch (Exception e)
+            catch
             {
-                //Console.WriteLine(e);
+                // ignored
             }
         }
 
@@ -158,7 +139,7 @@ namespace ServiceCenter.Logs
             {
                 path = $"D:\\WCSLogs\\{DateTime.Now.yyyyMMdd()}\\接口日志\\",
                 Title = $"{title}.txt",
-                Con = $"{DateTime.Now.yyyyMMddhhmmssf()}--{con}\n"
+                Con = $"{DateTime.Now.yyyyMMddhhmmssf()}--{con}"
             }));
         }
 
@@ -167,81 +148,58 @@ namespace ServiceCenter.Logs
         /// </summary>
         public static void init()
         {
+            var toao = 1000;
             while (true)
             {
                 var sw = new Stopwatch();
                 sw.Start();
-                LogModel log = new LogModel();
+                var index = 0;
+                List<LogModel> logs = new List<LogModel>();
                 try
                 {
-                    //var res = RedisHub.Default.LRange("LogHub", 0, 5000).ToList();
-                    //var logHubList = new List<LogModel>();
-                    //Parallel.ForEach(res, x =>
+                    using (var tran = RedisHub.Default.Multi())
+                    {
+                        var a = tran.LRange("LogHub", 0, 19999);
+                        tran.LTrim("LogHub", 20000, -1);
+                        var value = tran.Exec()[0];
+                        var ret = value as string[];
+                        logs = ret.Select(JsonConvert.DeserializeObject<LogModel>).ToList();
+                    }
+
+                    //Parallel.ForEach(logs.Where(log => log != null).GroupBy(x => x.path), psth =>
                     //{
-                    //    var log = JsonConvert.DeserializeObject<LogModel>(x);
-                    //    if (log != null)
-                    //    {
-                    //        logHubList.Add(log);
-                    //    }
                     //});
-                    //Parallel.ForEach(logHubList.GroupBy(x => x.path).ToList(), logHub =>
+                    foreach (var path in logs.Where(log => log != null).GroupBy(x => x.path))
+                    {
+                        foreach (var title in path.GroupBy(x => x.Title))
+                        {
+                            var log = title.First();
+                            var cons = title.OrderBy(x => x.Time).Select(x => x.Con);
+                            if (!Directory.Exists(log.path)) Directory.CreateDirectory(log.path);
+                            File.AppendAllLines(Path.Combine(log.path, log.Title), cons);
+                            index++;
+                        }
+                    }
+                    ////log = ret as LogModel;
+                    //if (log != null)
                     //{
-                    //    Parallel.ForEach(logHub.GroupBy(x => x.Title).ToList(), log =>
-                    //    {
-                    //        foreach (var item in log)
-                    //        {
-                    //            if (item.Con.IsNullOrEmpty())
-                    //            {
-                    //                if (!Directory.Exists(item.path)) Directory.CreateDirectory(item.path);
-                    //                File.AppendAllText(Path.Combine(item.path, item.Title), item.Con);
-                    //            }
-                    //        }
-                    //    });
-                    //});
+                    //    if (!Directory.Exists(log.path)) Directory.CreateDirectory(log.path);
 
-                    //RedisHub.Default.LRem("LogHub", 0, 5000);
-                    //foreach (var logHub in logHubList)
-                    //{
-                    //    try
-                    //    {
-                    //        log = ;
-                    //        if (log != null)
-                    //        {
-                    //            if (!Directory.Exists(log.path)) Directory.CreateDirectory(log.path);
-                    //            File.AppendAllText(Path.Combine(log.path, log.Title), log.Con);
-                    //            count++;
-                    //        }
-                    //    }
-                    //    catch (Exception e)
-                    //    {
-                    //        // ignored
-                    //    }
+                    //    File.AppendAllText(Path.Combine(log.path, log.Title), log.Con);
                     //}
-
-                    var logHub = RedisHub.Default.BLPop("LogHub", 0);
-                    log = JsonConvert.DeserializeObject<LogModel>(logHub);
-                    if (log != null)
-                    {
-                        if (!Directory.Exists(log.path)) Directory.CreateDirectory(log.path);
-                        //FileInfo fileInfo = new FileInfo(Path.Combine(log.path, log.Title));
-                        //if (fileInfo.Length > 5000)
-                        //{
-                        //    var title = log.Title.Split(".");
-                        //    File.Move(log.Title, title[0] + "" + title[1]);
-                        //}
-                        File.AppendAllText(Path.Combine(log.path, log.Title), log.Con);
-                    }
                 }
                 catch (Exception ex)
                 {
                     var path = $"D:\\WCSLogs\\{DateTime.Now.yyyyMMdd()}\\日志处理进程";
                     if (!Directory.Exists(path)) Directory.CreateDirectory(path);
-                    //File.AppendAllText(Path.Combine($"D:\\WCSLogs\\{DateTime.Now.yyyyMMdd()}\\日志处理进程", "Error.txt"), $"{JsonConvert.SerializeObject(log)}--{ex.Message}--{ex.StackTrace}\n");
                 }
                 sw.Stop();
                 var path1 = $"D:\\WCSLogs\\{DateTime.Now.yyyyMMdd()}\\日志处理进程";
                 if (!Directory.Exists(path1)) Directory.CreateDirectory(path1);
-                File.AppendAllText(Path.Combine(path1, "耗时.txt"), $"耗时:{sw.ElapsedMilliseconds}\n");
+                File.AppendAllText(Path.Combine(path1, "耗时.txt"), $"{DateTime.Now.yyyyMMddhhmmssf()}耗时:{sw.ElapsedMilliseconds}--{logs.Count}--{index}\n");
+                if (sw.ElapsedMilliseconds >= toao) continue;
+                var time = toao - sw.ElapsedMilliseconds.ToInt();
+                Thread.Sleep(time);
             }
         }
     }
@@ -249,6 +207,9 @@ namespace ServiceCenter.Logs
     public class LogModel
     {
         public string path { get; set; }
+
+        public DateTime Time { get; set; }
+
         public string Title { get; set; }
 
         public string Con { get; set; }

+ 1 - 1
WCS.Core/ProtocolProxyBase.cs

@@ -129,7 +129,7 @@ namespace WCS.Core
             var item = Items[propertyName] as PlcItem<T>;
             var res = item.Value;
             var channel = Ltc.GetChannel();
-            //if (channel != null && !ProtocolType.Name.Contains("525") && !ProtocolType.Name.Contains("83") && !ProtocolType.Name.Contains("524")) this.World.OnInternalLog(channel, $"获取值:{Device.Code}.{ProtocolType.Name}.{propertyName}:{res}");
+            if (channel != null && channel.System != "数据采集系统") this.World.OnInternalLog(channel, $"获取值:{Device.Code}.{ProtocolType.Name}.{propertyName}:{res}");
             return res;
         }
 

+ 1 - 2
业务工程/分拣库/WCS.WorkEngineering/Extensions/DeviceExtension.cs

@@ -56,7 +56,7 @@ namespace WCS.WorkEngineering.Extensions
                         Port = 102,
                         Rack = 0,
                         Slot = 1,
-                        //Type = PLCType.Siemens
+                        Type = PLCType.Siemens
                     }
                 }
             };
@@ -118,7 +118,6 @@ namespace WCS.WorkEngineering.Extensions
         /// <returns></returns>
         public static void 入库站点是否满足执行条件(this Device<IStation520, IStation521, IStation523> device)
         {
-           
         }
 
         /// <summary>

+ 3 - 4
业务工程/分拣库/WCS.WorkEngineering/Systems/DataCollectionSysyem.cs

@@ -21,7 +21,7 @@ namespace WCS.WorkEngineering.Systems
     /// <summary>
     ///  数据采集系统
     /// </summary>
-    [BelongTo(typeof(DataCollectionWorld))]
+    //[BelongTo(typeof(DataCollectionWorld))]
     [Description("数据采集系统")]
     public class DataCollectionSysyem : DeviceSystem<Device<IStation520>>
     {
@@ -74,7 +74,7 @@ namespace WCS.WorkEngineering.Systems
                 pack.Frame = World.Frame;
                 sql.Append("INSERT INTO ");
                 var ps = pack.GetType().GetProperties().OrderBy(x => x.Name);
-                var db = new SqlSugarHelper().PLC;
+                //var db = new SqlSugarHelper().PLC;
 
                 Parallel.ForEach(ps, p =>
                 {
@@ -149,8 +149,7 @@ namespace WCS.WorkEngineering.Systems
             }
             catch (Exception e)
             {
-                var sqlText = sql.ToString();
-                World.Log($"异常SQL:{sql.ToString()}");
+                World.Log($"错误内容:{e.Message}");
             }
         }