林豪 左 2 年之前
父節點
當前提交
6108330d3c

二進制
DLL.zip


+ 22 - 1
ServiceCenter/Redis/RedisHub.cs

@@ -17,7 +17,7 @@ namespace ServiceCenter.Redis
         /// </summary>
         public static string DefaultContextType { get; private set; } = null!;
 
-        /// <summary>
+        /// <summary> 
         /// 默认监控上下文类类型
         /// </summary>
         public static string MonitorContextType { get; private set; } = null!;
@@ -147,7 +147,28 @@ namespace ServiceCenter.Redis
             var result = redisClient.Get(key);
             if (!string.IsNullOrEmpty(result)) return result;
             redisClient.Set(key, "   ");
+            Console.WriteLine($"无{key},创建并写入默认值:   ");
             return null;
         }
+
+        /// <summary>
+        /// 检查Redis中是否有对应key且value不为空
+        /// </summary>
+        /// <param name="redisClient">redis连接</param>
+        /// <param name="key">要检查的Key</param>
+        /// <param name="defaults">创建key是写入的默认值</param>
+        /// <returns>
+        /// 1.key不存在,创建这个key 并写入传入的默认值。返回默认值
+        /// 2.key存在单value为空 返回null
+        /// 3.key存在value不为空 返回获取到的值
+        /// </returns>
+        public static string? Check(this RedisClient redisClient, string key, string defaults)
+        {
+            var result = redisClient.Get(key);
+            if (!string.IsNullOrEmpty(result)) return result;
+            redisClient.Set(key, defaults);
+            Console.WriteLine($"无{key},创建并写入默认值:{defaults}");
+            return defaults;
+        }
     }
 }

+ 30 - 0
WCS.Entity.Protocol/DataStructure/DeviceData.cs

@@ -0,0 +1,30 @@
+using System;
+using System.Runtime.Serialization;
+
+namespace WCS.Entity.Protocol.DataStructure
+{
+    /// <summary>
+    /// 设备数据基类
+    /// </summary>
+    [DataContract]
+    public class DeviceData
+    {
+        /// <summary>
+        /// 设备号
+        /// </summary>
+        [DataMember(Order = 0)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 时间
+        /// </summary>
+        [DataMember(Order = 1)]
+        public DateTime Frame { get; set; }
+
+        /// <summary>
+        /// 信息
+        /// </summary>
+        [DataMember(Order = 2)]
+        public string Info { get; set; } = "";
+    }
+}

+ 44 - 0
WCS.Entity.Protocol/DataStructure/DeviceDataCollection.cs

@@ -0,0 +1,44 @@
+using System;
+using System.Linq;
+using System.Runtime.Serialization;
+
+namespace WCS.Entity.Protocol.DataStructure
+{
+    /// <summary>
+    /// 设备数据
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    [DataContract]
+    public class DeviceDataCollection<T> where T : DeviceData
+    {
+        /// <summary>
+        /// 确认时间
+        /// </summary>
+        [DataMember(Order = 0)]
+        public DateTime Frame { get; set; }
+
+        /// <summary>
+        /// 数据集
+        /// </summary>
+        [DataMember(Order = 1)]
+        public T[] Datas { get; set; }
+
+        /// <summary>
+        ///  默认构造函数
+        /// </summary>
+        public DeviceDataCollection()
+        {
+        }
+
+        /// <summary>
+        ///  构造函数
+        /// </summary>
+        /// <param name="frame"></param>
+        /// <param name="datas"></param>
+        public DeviceDataCollection(DateTime frame, object[] datas)
+        {
+            this.Frame = frame;
+            this.Datas = datas.OfType<T>().ToArray();
+        }
+    }
+}

+ 54 - 0
WCS.Entity.Protocol/DataStructure/DeviceDataPack.cs

@@ -0,0 +1,54 @@
+using System;
+using System.Runtime.Serialization;
+
+namespace WCS.Entity.Protocol.DataStructure
+{
+    /// <summary>
+    ///  设备数据包
+    /// </summary>
+    [DataContract]
+    public class DeviceDataPack
+    {
+        /// <summary>
+        ///  堆垛机数据集
+        /// </summary>
+        [DataMember(Order = 0)]
+        public DeviceDataCollection<SRMData> SRMDatas { get; set; }
+
+        /// <summary>
+        ///  穿梭车数据集
+        /// </summary>
+        [DataMember(Order = 1)]
+        public DeviceDataCollection<RGVData> RGVDatas { get; set; }
+
+        /// <summary>
+        ///  站台数据集
+        /// </summary>
+        [DataMember(Order = 2)]
+        public DeviceDataCollection<StationData> StationDatas { get; set; }
+
+        /// <summary>
+        ///  机器人数据集
+        /// </summary>
+        [DataMember(Order = 3)]
+        public DeviceDataCollection<RobotData> RobotData { get; set; }
+
+        /// <summary>
+        ///  产线数据集
+        /// </summary>
+        [DataMember(Order = 4)]
+        public DeviceDataCollection<ProdLineData> ProdLineData { get; set; }
+
+        /// <summary>
+        ///  时间
+        /// </summary>
+        [DataMember(Order = 5)]
+        public DateTime Frame { get; set; }
+
+        /// <summary>
+        /// 回放最早时间
+        /// </summary>
+        [DataMember(Order = 6)]
+        public int PlaybackSeconds { get; set; }
+    }
+}

+ 18 - 0
WCS.Entity.Protocol/DataStructure/ProdLineData.cs

@@ -0,0 +1,18 @@
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+
+namespace WCS.Entity.Protocol.DataStructure
+{
+    /// <summary>
+    /// 产线信息
+    /// </summary>
+    [DataContract]
+    public class ProdLineData : DeviceData
+    {
+        /// <summary>
+        ///  产线任务信息
+        /// </summary>
+        [DataMember(Order = 3)]
+        public List<WCS_AgvTaskInfo> TaskList { get; set; } = new List<WCS_AgvTaskInfo>();
+    }
+}

+ 17 - 0
WCS.Entity.Protocol/DataStructure/RGVData.cs

@@ -0,0 +1,17 @@
+using System.Runtime.Serialization;
+
+namespace WCS.Entity.Protocol.DataStructure
+{
+    [DataContract]
+    public class RGVData : DeviceData
+    {
+        //[DataMember(Order = 5)]
+        //public WCS_RGV520 D520 { get; set; }
+
+        //[DataMember(Order = 3)]
+        //public WCS_RGV521 D521 { get; set; }
+
+        //[DataMember(Order = 4)]
+        //public WCS_RGV523 D523 { get; set; }
+    }
+}

+ 14 - 0
WCS.Entity.Protocol/DataStructure/RobotData.cs

@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace WCS.Entity.Protocol.DataStructure
+{
+    [DataContract]
+    public class RobotData : DeviceData
+    {
+        //[DataMember(Order = 3)]
+        //public WCS_Robot Data { get; set; }
+    }
+}

+ 30 - 0
WCS.Entity.Protocol/DataStructure/SRMData.cs

@@ -0,0 +1,30 @@
+using System.Runtime.Serialization;
+using WCS.Entity.Protocol.SRM;
+
+namespace WCS.Entity.Protocol.DataStructure
+{
+    /// <summary>
+    ///  堆垛机数据
+    /// </summary>
+    [DataContract]
+    public class SRMData : DeviceData
+    {
+        /// <summary>
+        ///  DB520
+        /// </summary>
+        [DataMember(Order = 5)]
+        public ISRM520 D520 { get; set; } = null!;
+
+        /// <summary>
+        ///  DB521
+        /// </summary>
+        [DataMember(Order = 3)]
+        public ISRM521 D521 { get; set; } = null!;
+
+        /// <summary>
+        ///  DB523
+        /// </summary>
+        [DataMember(Order = 4)]
+        public ISRM523 D523 { get; set; } = null!;
+    }
+}

+ 24 - 0
WCS.Entity.Protocol/DataStructure/StationData.cs

@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+using System.Text;
+using WCS.Entity.Protocol.Station;
+
+namespace WCS.Entity.Protocol.DataStructure
+{
+    [DataContract]
+    public class StationData : DeviceData
+    {
+        [DataMember(Order = 3)]
+        public WCS_Station520 D520 { get; set; }
+
+        [DataMember(Order = 4)]
+        public WCS_Station521 D521 { get; set; }
+
+        [DataMember(Order = 5)]
+        public WCS_Station523 D523 { get; set; }
+
+        //[DataMember(Order = 4)]
+        //public WCS_RobotStation RobotStation { get; set; }
+    }
+}

+ 0 - 0
WCS.Service/Systems/DataCollectionSysyem.cs → WCS.WorkEngineering/Systems/DataCollectionSysyem.cs


+ 1 - 1
WCS.WorkEngineering/WCS.WorkEngineering.csproj

@@ -8,7 +8,7 @@
 
   <ItemGroup>
     <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.5" />
-    <PackageReference Include="ServiceCenter" Version="1.0.1.8" />
+    <PackageReference Include="ServiceCenter" Version="1.0.1.9" />
   </ItemGroup>
 
   <ItemGroup>

+ 0 - 0
WCS.Service/Worlds/DataCollectionWorld.cs → WCS.WorkEngineering/Worlds/DataCollectionWorld.cs


+ 10 - 10
WCS.WorkEngineering/worlds/MainWorld.cs

@@ -54,17 +54,17 @@ namespace WCS.WorkEngineering.Worlds
             //TODO:暂时仅将日志记录至文本文件
             if (Logs.Count() > 0)
             {
-                var time = $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:FF")}";
-                var fst = Logs.First();
-                var dir = $"Logs\\{DateTime.Now.ToString("yyyy-MM-dd")}\\{fst.Channel.World}\\{fst.Channel.System}\\";
-                if (!Directory.Exists(dir))
-                    Directory.CreateDirectory(dir);
+                //var time = $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:FF")}";
+                //var fst = Logs.First();
+                //var dir = $"Logs\\{DateTime.Now.ToString("yyyy-MM-dd")}\\{fst.Channel.World}\\{fst.Channel.System}\\";
+                //if (!Directory.Exists(dir))
+                //    Directory.CreateDirectory(dir);
 
-                foreach (var log in Logs)
-                {
-                    var msg = $"--------------------{log.Time}[{Thread.CurrentThread.ManagedThreadId}]--------------------\n{log}\n";
-                    File.AppendAllText(Path.Combine(dir, $"{log.Log.Message.Split(":")[0]}.txt"), msg);
-                }
+                //foreach (var log in Logs)
+                //{
+                //    var msg = $"--------------------{log.Time}[{Thread.CurrentThread.ManagedThreadId}]--------------------\n{log}\n";
+                //    File.AppendAllText(Path.Combine(dir, $"{log.Log.Message.Split(":")[0]}.txt"), msg);
+                //}
             }
 
             #endregion 日志处理