林豪 左 2 жил өмнө
parent
commit
56c08d47f0

+ 1 - 1
Projects/永冠OPP/WCS.Entity.Protocol/SRM/ISRM521.cs

@@ -317,7 +317,7 @@ namespace WCS.Entity.Protocol
         SCMode SRMMode { get; set; }
 
         /// <summary>
-        /// 堆垛机模式
+        /// 堆垛机状态
         /// </summary>
         SCRunStatus SRMStatus { get; set; }
 

+ 15 - 0
Projects/永冠OPP/WCS.Entity.Protocol/WCS_DEVICESTATELOG.cs

@@ -0,0 +1,15 @@
+namespace WCS.Entity.Protocol
+{
+    /// <summary>
+    ///
+    /// </summary>
+    public class WCS_DEVICESTATELOG : OBJ
+    {
+        /// <summary>
+        /// 设备号
+        /// </summary>
+        public string DEVICECODE { get; set; }
+
+        public string STATE { get; set; }
+    }
+}

+ 57 - 0
Projects/永冠OPP/WCS.Service/Helpers/DeciceStateHelper.cs

@@ -0,0 +1,57 @@
+using DBHelper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using WCS.Entity.Protocol;
+
+namespace WCS.Service.Helpers
+{
+    /// <summary>
+    /// 状态管理中心
+    /// </summary>
+    public class DeciceStateHelper
+    {
+        /// <summary>
+        /// 状态记录
+        /// </summary>
+        public static Dictionary<string, string> StateLog = new Dictionary<string, string>();
+
+        /// <summary>
+        /// 状态检查
+        /// </summary>
+        public static void StatusCheck(string devCode, string state)
+        {
+            if (StateLog.Any(v => v.Key == devCode))
+            {
+                if (StateLog.Any(v => v.Key == devCode && v.Value != state))
+                {
+                    DB.Do(db =>
+                    {
+                        db.Default.Add(new WCS_DEVICESTATELOG()
+                        {
+                            DEVICECODE = devCode,
+                            STATE = state,
+                            UPDATETIME = DateTime.Now
+                        });
+                        db.Default.SaveChanges();
+                    });
+                    StateLog[devCode] = state;
+                }
+            }
+            else //初始化
+            {
+                StateLog.Add(devCode, state);
+                DB.Do(db =>
+                {
+                    db.Default.Add(new WCS_DEVICESTATELOG()
+                    {
+                        DEVICECODE = devCode,
+                        STATE = state,
+                        UPDATETIME = DateTime.Now
+                    });
+                    db.Default.SaveChanges();
+                });
+            }
+        }
+    }
+}

+ 3 - 1
Projects/永冠OPP/WCS.Service/WCSDB.cs

@@ -105,5 +105,7 @@ namespace WCS.Service
         public DbSet<WCS_MAPPINGENTRY> WCS_MAPPINGENTRY { get; set; }
 
         public DbSet<WCS_TASK_OLD> WCS_TASK_OLD { get; set; }
+
+        public DbSet<WCS_DEVICESTATELOG> WCS_DEVICESTATELOG { get; set; }
     }
-}
+}

+ 3 - 0
Projects/永冠OPP/WCS.Service/Works/SRM/SRMWork.cs

@@ -22,6 +22,9 @@ namespace WCS.Service.Works.SRM
         {
             obj.EX(srmDevice =>
             {
+                //状态上抛
+                DeciceStateHelper.StatusCheck(obj.Entity.CODE, obj.Data2.SRMMode.ToString());
+
                 var deviceCode = obj.Entity.CODE;
                 //先检查堆垛机是否报警
                 if (srmDevice.Data3.SCAlarm != 0)