瀏覽代碼

Revert "PLC数据PLC自身变更记录不在存入数据库"

This reverts commit ec1b589dd3dedc71144892a3edd069ecb0331ffd.
Administrator 2 年之前
父節點
當前提交
c75702a04d
共有 2 個文件被更改,包括 65 次插入65 次删除
  1. 56 56
      Projects/永冠/WCS.Service/ProtocolProxy.cs
  2. 9 9
      WCS.Core/DataTrans/ProtocolProxyBase.cs

+ 56 - 56
Projects/永冠/WCS.Service/ProtocolProxy.cs

@@ -27,69 +27,69 @@ namespace WCS.Service
 
         private static ConcurrentDictionary<Type, object[]> LastDatas = new ConcurrentDictionary<Type, object[]>();
 
-        //protected override WCS_PROTOCOLDATA GetLastData(DB db)
-        //{
-        //    if (!LastDatas.ContainsKey(this.ProtocolDataType))
-        //    {
-        //        dynamic q = SetMethod.Invoke(db.Default, null);
-        //        try
-        //        {
-        //            q = DynamicQueryableExtensions.Where(q, "ISLAST==@0", true);
-        //            q = DynamicQueryableExtensions.OrderBy(q, "ID");
-        //            q = DynamicQueryableExtensions.Select(q, "new(it.DEVICE.CODE as Code,it as Data)");
-        //            var arr = Enumerable.ToArray(q);
-        //            LastDatas[this.ProtocolDataType] = arr;
-        //        }
-        //        catch (Exception ex)
-        //        {
-        //            throw;
-        //        }
-        //    }
-        //    dynamic datas = LastDatas[this.ProtocolDataType];
-        //    var list = new List<WCS_PROTOCOLDATA>();
-        //    foreach (var data in datas)
-        //    {
-        //        if (data.Code == PROTOCOL.DEVICE.CODE)
-        //            list.Add(data.Data);
-        //    }
+        protected override WCS_PROTOCOLDATA GetLastData(DB db)
+        {
+            if (!LastDatas.ContainsKey(this.ProtocolDataType))
+            {
+                dynamic q = SetMethod.Invoke(db.Default, null);
+                try
+                {
+                    q = DynamicQueryableExtensions.Where(q, "ISLAST==@0", true);
+                    q = DynamicQueryableExtensions.OrderBy(q, "ID");
+                    q = DynamicQueryableExtensions.Select(q, "new(it.DEVICE.CODE as Code,it as Data)");
+                    var arr = Enumerable.ToArray(q);
+                    LastDatas[this.ProtocolDataType] = arr;
+                }
+                catch (Exception ex)
+                {
+                    throw;
+                }
+            }
+            dynamic datas = LastDatas[this.ProtocolDataType];
+            var list = new List<WCS_PROTOCOLDATA>();
+            foreach (var data in datas)
+            {
+                if (data.Code == PROTOCOL.DEVICE.CODE)
+                    list.Add(data.Data);
+            }
 
-        //    if (list.Count > 1)
-        //    {
-        //        for (int i = 0; i < list.Count - 1; i++)
-        //        {
-        //            var obj = list[i];
-        //            db.Default.Attach(obj);
-        //            obj.ISLAST = false;
-        //        }
-        //        db.Default.SaveChanges();
-        //    }
-        //    var res = Enumerable.LastOrDefault(list);
-        //    return res;
-        //}
+            if (list.Count > 1)
+            {
+                for (int i = 0; i < list.Count - 1; i++)
+                {
+                    var obj = list[i];
+                    db.Default.Attach(obj);
+                    obj.ISLAST = false;
+                }
+                db.Default.SaveChanges();
+            }
+            var res = Enumerable.LastOrDefault(list);
+            return res;
+        }
 
         private static int total;
 
-        //protected override WCS_PROTOCOLDATA SaveNewData(DB db, WCS_PROTOCOLDATA last, WCS_PROTOCOLDATA newobj, string user)
-        //{
-        //    total++;
+        protected override WCS_PROTOCOLDATA SaveNewData(DB db, WCS_PROTOCOLDATA last, WCS_PROTOCOLDATA newobj, string user)
+        {
+            total++;
 
-        //    if (last != null)
-        //    {
-        //        db.Default.Attach(last);
-        //        last.ISLAST = false;
-        //    }
+            if (last != null)
+            {
+                db.Default.Attach(last);
+                last.ISLAST = false;
+            }
 
-        //    db.Default.Attach(PROTOCOL.DEVICE);
+            db.Default.Attach(PROTOCOL.DEVICE);
 
-        //    newobj.DEVICE = PROTOCOL.DEVICE;
-        //    newobj.ISLAST = true;
-        //    newobj.UPDATETIME = DateTime.Now;
-        //    newobj.UPDATEUSER = user;
-        //    newobj.FRAME = LogicHandler.Frame;
-        //    db.Default.Add(newobj);
-        //    db.Default.SaveChanges();
-        //    return newobj;
-        //}
+            newobj.DEVICE = PROTOCOL.DEVICE;
+            newobj.ISLAST = true;
+            newobj.UPDATETIME = DateTime.Now;
+            newobj.UPDATEUSER = user;
+            newobj.FRAME = LogicHandler.Frame;
+            db.Default.Add(newobj);
+            db.Default.SaveChanges();
+            return newobj;
+        }
 
         //static ConcurrentQueue<PackInfo> Packs = new ConcurrentQueue<PackInfo>();
         private static Dictionary<string, Playerback> Clients = new Dictionary<string, Playerback>();

+ 9 - 9
WCS.Core/DataTrans/ProtocolProxyBase.cs

@@ -138,20 +138,20 @@ namespace WCS.Core
         { 
             var obj = Copy(this,ProtocolDataType) as WCS_PROTOCOLDATA; 
             obj.WCSVERSION = this.WCSVersion;
-            //if (last == null)
-            //{
-            //    Publish(this.PROTOCOL.DEVICE.CODE, obj);
-            //    last = GetLastData(db);
-            //}
-            //if (last != null)
-            //{
+            if (last == null)
+            {
+                Publish(this.PROTOCOL.DEVICE.CODE, obj);
+                last = GetLastData(db);
+            }
+            if (last != null)
+            {
                 if (Equals(obj, last, ProtocolType))
                     return; 
-            //}
+            }
             this.UpdateTime = DateTime.Now;
 
             Publish(this.PROTOCOL.DEVICE.CODE,obj);
-            //last = SaveNewData(db,last,obj,user);
+            last = SaveNewData(db,last,obj,user);
         }
 
         public virtual void Publish(string code,WCS_PROTOCOLDATA obj)