林豪 左 3 سال پیش
والد
کامیت
98ebf392cd

+ 5 - 15
Projects/永冠OPP/WCS.Service/DeviceExtentions.cs

@@ -14,7 +14,7 @@ namespace WCS.Service
         public static IBCR80 BCR(this WCS_DEVICE source)
         {
             var dev = Device.Find("BCR" + source.CODE);
-            return dev.PROTOCOLS.First().Data<IBCR80>();
+            return dev.DEVICEPROTOCOLS.First().Data<IBCR80>();
         }
 
         public static short PalletType(this WCS_DEVICE source)
@@ -111,12 +111,12 @@ namespace WCS.Service
 
         public static bool IsRGV(this WCS_DEVICE source)
         {
-            return source.PROTOCOLS.Any(v => v.DB.PROTOCOL == typeof(IRGV520).AssemblyQualifiedName);
+            return source.DEVICEPROTOCOLS.Any(v => v.DB.PROTOCOL == typeof(IRGV520).AssemblyQualifiedName);
         }
 
         public static bool IsConv(this WCS_DEVICE source)
         {
-            return source.PROTOCOLS.Any(v => v.DB.PROTOCOL == typeof(IStation521).AssemblyQualifiedName);
+            return source.DEVICEPROTOCOLS.Any(v => v.DB.PROTOCOL == typeof(IStation521).AssemblyQualifiedName);
         }
 
         /// <summary>
@@ -126,22 +126,12 @@ namespace WCS.Service
         /// <returns></returns>
         public static bool IsSC(this WCS_DEVICE source)
         {
-            return source.PROTOCOLS.Any(v => v.DB.PROTOCOL == typeof(ISRM520).AssemblyQualifiedName);
+            return source.DEVICEPROTOCOLS.Any(v => v.DB.PROTOCOL == typeof(ISRM520).AssemblyQualifiedName);
         }
 
-        //public static bool IsRobot(this WCS_DEVICE source)
-        //{
-        //    return source.PROTOCOLS.Any(v => v.DB.PROTOCOL == typeof(IRobot).AssemblyQualifiedName);
-        //}
-
-        //public static bool IsRobotStation(this WCS_DEVICE source)
-        //{
-        //    return source.PROTOCOLS.Any(v => v.DB.PROTOCOL == typeof(IRobotStation).AssemblyQualifiedName);
-        //}
-
         public static bool IsTunnel(this WCS_DEVICE source)
         {
-            return source.PROTOCOLS.Count == 0 && source.CODE.StartsWith("T");
+            return source.DEVICEPROTOCOLS.Count == 0 && source.CODE.StartsWith("T");
         }
     }
 

+ 2 - 2
Projects/永冠OPP/WCS.Service/Extensions/DeviceExtension.cs

@@ -303,7 +303,7 @@ namespace WCS.Service.Extensions
         {
             get
             {
-                return AllRGVList.Where(v => v.Entity.PROTOCOLS.Any(d => Entity.PROTOCOLS.Any(e => e.DB.PLC.IP == d.DB.PLC.IP)))
+                return AllRGVList.Where(v => v.Entity.DEVICEPROTOCOLS.Any(d => Entity.DEVICEPROTOCOLS.Any(e => e.DB.PLC.IP == d.DB.PLC.IP)))
                     .Where(v => v.Entity.CODE != Entity.CODE && v.Data2.WorkMode != 0).ToList();
             }
         }
@@ -326,7 +326,7 @@ namespace WCS.Service.Extensions
         {
             get
             {
-                return StationLocation.ALLlocations.Where(v => Entity.PROTOCOLS.Any(p => p.DB.PLC.CODE == v.PLC))
+                return StationLocation.ALLlocations.Where(v => Entity.DEVICEPROTOCOLS.Any(p => p.DB.PLC.CODE == v.PLC))
                                       .Select(v => Device.Find(v.Station).Create<StationDeviceGroup>()).ToList();
             }
         }

+ 6 - 7
Projects/永冠OPP/WCS.Service/Extensions/TaskExtension.cs

@@ -28,19 +28,18 @@ namespace WCS.Service.Extensions
             var tasklist = tasks.Select(v => v.Create<Task>());
             var task = tasklist.FirstOrDefault() ?? throw new WarnException("无可用出库任务--GetOutTask");
             //AGV任务ID不为零表示为车间叫料任务
-            if (task.AgvTask != 0)
+            if (task.AGVTASKID != 0)
             {
                 //按照AGV任务ID分一次组
                 tasklist = tasklist.OrderByDescending(v => v.Priority)
                                    .ThenBy(v => v.CREATETIME)
-                                   .GroupBy(v => v.AgvTask)
+                                   .GroupBy(v => v.AGVTASKID)
                                    .FirstOrDefault() ?? throw new WarnException("无可用叫料任务--GetOutTask");
                 //无论这个AGV任务绑定的货物相隔多远都必须要一起出出去
                 return tasklist.OrderBy(v => v.Col).ToArray();
             }
             return tasklist.OrderByDescending(v => v.Priority)
-                           .GroupBy(v => v.MaterialCode)
-                           .OrderBy(v => v.Key).FirstOrDefault()
+                .GroupBy(v => v.MaterialCode).MinBy(v => v.Key)!
                            .OrderByDescending(v => v.Priority)
                            .ThenBy(v => v.Line)
                            .ThenBy(v => v.Layer)
@@ -60,8 +59,8 @@ namespace WCS.Service.Extensions
         {
             //取任务巷道到达目标地址的下一个地址,即任务堆垛机的站台对应的设备组
             var stations = Device.Where(v => v.DEVICEGROUP.Any(p => p.MEMBER == Device.Find(task.TUNNEL).GetPath(task.ADDRTO.Replace("G", ""))))
-                                 .Select(v => v.Create<StationDeviceGroup>())
-                                 .FirstOrDefault().Items
+                .Select(v => v.Create<StationDeviceGroup>())
+                .FirstOrDefault()!.Items
                                  .OrderByDescending(v => v.Entity.CODE)
                                  .ToArray();
             //一工位放较大的站台号
@@ -146,7 +145,7 @@ namespace WCS.Service.Extensions
             TUNNEL = task.TUNNEL;
             DEVICE = task.DEVICE;
             Priority = task.Priority;
-            AgvTask = task.AgvTask;
+            AGVTASKID = task.AGVTASKID;
             CREATETIME = task.CREATETIME;
             MaterialCode = task.MaterialCode;
 

+ 1 - 1
Projects/永冠OPP/WCS.Service/Helpers/LogHelper.cs

@@ -24,7 +24,7 @@ namespace WCS.Service.Helpers
                     .First() ?? new WCS_EXCEPTION
                     {
                         MSG = msg,
-                        DEVICE = device,
+                        DEVICECODE = device,
                         EXCEPTIONTYPE = type,
                         STARTTIME = DateTime.Now,
                         TIMES = 0,

+ 18 - 44
Projects/永冠OPP/WCS.Service/Uploader.cs

@@ -7,58 +7,32 @@ namespace WCS.Service
 {
     public class Uploader
     {
-        private static bool Stoped = false;
-        //public static void Start()
-        //{
-        //    Stoped = false;
-        //    Task.Run(() =>
-        //    {
-        //        while (!Stoped)
-        //        {
-        //            DB.Do(db =>
-        //            {
-        //                Upload(db);
-        //            });
-        //            Task.Delay(10000);
-        //        }
-        //    });
-
-        //}
-
-        private static object UpLoadLockObj = new object();
-
         public static void Upload(Db db)
         {
-            //lock (UpLoadLockObj)
+            try
             {
-                try
+                var tasks = db.Default.Queryable<WCS_TASK>().Where(v => v.WMSTASK > 0)
+                    .Where(v => v.STATUS != v.UPLOADED).ToArray();
+                foreach (var task in tasks)
                 {
-                    var tasks = db.Default.Queryable<WCS_TASK>().Where(v => v.WMSTASK > 0).Where(v => v.STATUS != v.UPLOADED).ToArray();
-                    foreach (var task in tasks)
+                    try
                     {
-                        try
-                        {
-                            WMS.UpdateTask(task.ADDRNEXT?.ToString(), task.WMSTASK, (int)task.STATUS, task.HEIGHT);
-                            var st = task.UPLOADED;
-                            task.UPLOADED = task.STATUS;
-                            //task.CreateStatusLog(db);
-                            InfoLog.INFO_SYTASKSTATUS($"[{task.ID}]---old:[{st}]-new:[{task.UPLOADED}]---{task.HEIGHT}");
-                        }
-                        catch (Exception ex)
-                        {
-                            Console.WriteLine($"上传任务状态失败:WCS任务号{task.ID},{ex.Message}");
-                        }
+                        WMS.UpdateTask(task.ADDRNEXT?.ToString(), task.WMSTASK, (int)task.STATUS, task.HEIGHT);
+                        var st = task.UPLOADED;
+                        task.UPLOADED = task.STATUS;
+                        InfoLog.INFO_SYTASKSTATUS($"[{task.ID}]---old:[{st}]-new:[{task.UPLOADED}]---{task.HEIGHT}");
+                    }
+                    catch (Exception ex)
+                    {
+                        Console.WriteLine($"上传任务状态失败:WCS任务号{task.ID},{ex.Message}");
                     }
-
-                    db.Default.Updateable(tasks).ExecuteCommand();
                 }
-                catch { }
+
+                db.Default.Updateable(tasks).ExecuteCommand();
+            }
+            catch
+            {
             }
         }
-
-        //public static void Stop()
-        //{
-        //    Stoped = true;
-        //}
     }
 }

+ 2 - 178
Projects/永冠OPP/WCS.Service/WebApi/WCSApi.cs

@@ -229,8 +229,8 @@ namespace WCS.Service.WebApi
                     task.UPDATETIME = DateTime.Now;
                     task.UPDATEUSER = "WMS";
                     db.Default.Updateable(task).ExecuteCommand();
-                    if (task.TYPE != TaskType.出库 || task.AgvTask <= 0) return;
-                    var agvtask = db.Default.Queryable<WCS_AGVTask>().InSingle(task.AgvTask);
+                    if (task.TYPE != TaskType.出库 || task.AGVTASKID <= 0) return;
+                    var agvtask = db.Default.Queryable<WCS_AGVTask>().InSingle(task.AGVTASKID);
                     agvtask.Status = AGVTaskStatus.取消;
                     agvtask.UpdateTime = DateTime.Now;
                     db.Default.Updateable(agvtask).ExecuteCommand();
@@ -243,181 +243,5 @@ namespace WCS.Service.WebApi
             }
             return res;
         }
-
-        /// <summary>
-        /// 通过该接口获取指定条件设备信息
-        /// </summary>
-        /// <param name="model">筛选条件</param>
-        /// <returns></returns>
-        //[HttpGet]
-        //public List<DeviceStatusViewModel> GetDeviceStatus([FromQuery] DeviceStatusViewModel model)
-        //{
-        //    var result = new List<DeviceStatusViewModel>();
-        //    //找到所有设备的读取协议
-        //    var rgv = Device.Where(v => v.IsRGV()).Select(v => v.Device<IRGV521>());
-        //    var sc = Device.Where(v => v.IsSC()).Select(v => v.Device<ISRM521>());
-        //    var conv = Device.Where(v => v.IsConv()).Select(v => v.Device<IStation521>());
-
-        //    #region 检索分两部分,设备、任务(数据库)
-
-        //    #region 设备信息
-
-        //    if (!string.IsNullOrEmpty(model.CODE))
-        //    {
-        //        result.AddRange(GetDeviceStatusWhere(rgv, v => v.Entity.CODE == model.CODE));
-        //        result.AddRange(GetDeviceStatusWhere(sc, v => v.Entity.CODE == model.CODE));
-        //        result.AddRange(GetDeviceStatusWhere(conv, v => v.Entity.CODE == model.CODE));
-        //    }
-
-        //    if (model.TASKNUM > 10000)
-        //    {
-        //        result.AddRange(GetDeviceStatusWhere(rgv, v => v.Data.TaskID_1 == model.TASKNUM));
-        //        result.AddRange(GetDeviceStatusWhere(sc, v => v.Data.TaskID_1 == model.TASKNUM));
-        //        result.AddRange(GetDeviceStatusWhere(conv, v => v.Data.Tasknum == model.TASKNUM));
-        //    }
-
-        //    if (model.PH_STATUS != null)
-        //    {
-        //        result.AddRange(GetDeviceStatusWhere(rgv, v => v.Data.TaskID_1 == model.TASKNUM));
-        //    }
-
-        //    if (!string.IsNullOrEmpty(model.ADDRFROM))
-        //    {
-        //        result.AddRange(GetDeviceStatusWhere(rgv, v => v.Data.StartPosition_1 == short.Parse(model.ADDRFROM)));
-        //        result.AddRange(GetDeviceStatusWhere(sc, v => model.ADDRFROM.Contains(v.Data.SLine_1.ToString())
-        //                                                   || model.ADDRFROM.Contains(v.Data.SCol_1.ToString())
-        //                                                   || model.ADDRFROM.Contains(v.Data.SLayer_1.ToString())));
-        //        result.AddRange(GetDeviceStatusWhere(conv, v => v.Data.Goodsstart ==short.Parse(model.ADDRFROM)));
-        //    }
-
-        //    if (!string.IsNullOrEmpty(model.ADDRTO))
-        //    {
-        //        result.AddRange(GetDeviceStatusWhere(rgv, v => v.Data.DestPosition_1 == short.Parse(model.ADDRTO)));
-        //        result.AddRange(GetDeviceStatusWhere(sc, v => model.ADDRTO.Contains(v.Data.ELine_1.ToString())
-        //                                                   || model.ADDRTO.Contains(v.Data.ECol_1.ToString())
-        //                                                   || model.ADDRTO.Contains(v.Data.ELayer_1.ToString())));
-        //        result.AddRange(GetDeviceStatusWhere(conv, v => v.Data.Goodsend == short.Parse(model.ADDRTO)));
-        //    }
-
-        //    #endregion 设备信息
-
-        //    #region 任务信息
-
-        //    //获取所有设备上的任务信息
-        //    if (model.TYPE != null || !string.IsNullOrEmpty(model.BARCODE))
-        //    {
-        //        var info = new List<DeviceStatusViewModel>();
-        //        var ids = result.Select(v => v.TASKNUM);
-        //        info.AddRange(GetDeviceStatusWhere(rgv, v => v.Data.TaskID_1 > 10000));
-        //        info.AddRange(GetDeviceStatusWhere(sc, v => v.Data.TaskID_1 > 10000));
-        //        info.AddRange(GetDeviceStatusWhere(conv, v => v.Data.Tasknum > 10000));
-        //        result.AddRange(info.Where(v => !ids.Any(b => b == v.TASKNUM)));
-        //    }
-
-        //    DB.Do(db =>
-        //    {
-        //        var ids = result.Select(v => v.TASKNUM);
-        //        var tasks = db.Default.Set<WCS_TASK>().AsNoTracking().Where(v => ids.Any(b => b == v.ID)).ToList();
-        //        tasks.ForEach(task =>
-        //        {
-        //            var info = result.Find(v => v.TASKNUM == task.ID);
-        //            info.TYPE = task.TYPE;
-        //            info.BARCODE = task.BARCODE;
-        //        });
-        //    });
-
-        //    if (model.TYPE != null)
-        //    {
-        //        result = result.Where(v => v.TYPE == model.TYPE).ToList();
-        //    }
-        //    if (!string.IsNullOrEmpty(model.BARCODE))
-        //    {
-        //        result = result.Where(v => v.BARCODE != null && v.BARCODE.Contains(model.BARCODE)).ToList();
-        //    }
-
-        //    #endregion 任务信息
-
-        //    #endregion 检索分两部分,设备、任务(数据库)
-
-        //    return result;
-        //}
-
-        #region 静态方法
-
-        ///// <summary>
-        ///// 获取RGV设备信息
-        ///// </summary>
-        ///// <param name="soue"></param>
-        ///// <param name="func"></param>
-        ///// <returns></returns>
-        //public static List<DeviceStatusViewModel> GetDeviceStatusWhere(IEnumerable<Device<IRGV521>> soue, Func<Device<IRGV521>, bool> func)
-        //{
-        //    var result = new List<DeviceStatusViewModel>();
-        //    result.AddRange(soue.Where(func).Select(device =>
-        //    {
-        //        return new DeviceStatusViewModel
-        //        {
-        //            CODE = device.Entity.CODE,
-        //            TASKNUM = device.Data.TaskID_1 ,
-        //            PH_STATUS = device.Data.SystemStatus.HasFlag(RGVStatus.光电),
-        //            ADDRFROM = device.Data.StartPosition_1.ToString(),
-        //            ADDRTO = device.Data.DestPosition_1.ToString(),
-        //        };
-        //    }));
-        //    return result;
-        //}
-
-        ///// <summary>
-        ///// 获取堆垛机设备信息
-        ///// </summary>
-        ///// <param name="soue"></param>
-        ///// <param name="func"></param>
-        ///// <returns></returns>
-        //public static List<DeviceStatusViewModel> GetDeviceStatusWhere(IEnumerable<Device<ISRM521>> soue, Func<Device<ISRM521>, bool> func)
-        //{
-        //    var result = new List<DeviceStatusViewModel>();
-
-        //    result.AddRange(soue.Where(func).Select(device =>
-        //    {
-        //        var info = new DeviceStatusViewModel
-        //        {
-        //            CODE = device.Entity.CODE,
-        //            TASKNUM = device.Data.TaskID_1,
-        //            ADDRFROM = $"{device.Data.SLine_1}-{device.Data.SCol_1}-{device.Data.SLayer_1}",
-        //            ADDRTO = device.Data.ELine_1.ToString(),
-        //        };
-        //        if (device.Data.ECol_1 != 0 && device.Data.ELayer_1 != 0)
-        //            info.ADDRTO = $"{device.Data.ELine_1}-{device.Data.ECol_1}-{device.Data.ELayer_1}";
-        //        return info;
-        //    }));
-
-        //    return result;
-        //}
-
-        ///// <summary>
-        ///// 获取输送机设备信息
-        ///// </summary>
-        ///// <param name="soue"></param>
-        ///// <param name="func"></param>
-        ///// <returns></returns>
-        //public static List<DeviceStatusViewModel> GetDeviceStatusWhere(IEnumerable<Device<IStation521>> soue, Func<Device<IStation521>, bool> func)
-        //{
-        //    var result = new List<DeviceStatusViewModel>();
-
-        //    result.AddRange(soue.Where(func).Select(device =>
-        //    {
-        //        return new DeviceStatusViewModel
-        //        {
-        //            CODE = device.Entity.CODE,
-        //            TASKNUM = device.Data.Tasknum,
-        //            ADDRFROM =device.Data.Goodsstart.ToString(),
-        //            ADDRTO = device.Data.Goodsend.ToString(),
-        //        };
-        //    }));
-
-        //    return result;
-        //}
-
-        #endregion 静态方法
     }
 }

+ 5 - 5
Projects/永冠OPP/WCS.Service/WebApi/WMS/Response/I_WCS_GetExcTaskResponse.cs

@@ -12,22 +12,22 @@ namespace WCS.Service.Entity
         /// <summary>
         /// 结果
         /// </summary>
-        public bool ResType { get; set; }
+        public new bool ResType { get; set; }
         /// <summary>
         /// 消息
         /// </summary>
-        public string ResMessage { get; set; }
+        public new string ResMessage { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo1 { get; set; }
+        public new string Memo1 { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo2 { get; set; }
+        public new string Memo2 { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo3 { get; set; }
+        public new string Memo3 { get; set; }
     }
 }

+ 2 - 2
Projects/永冠OPP/WCS.Service/WebApi/WMS/Response/I_WCS_GetInTaskResponse.cs

@@ -7,12 +7,12 @@ namespace WCS.Service.Entity
         /// <summary>
         /// 结果
         /// </summary>
-        public bool ResType { get; set; }
+        public new bool ResType { get; set; }
 
         /// <summary>
         ///
         /// </summary>
-        public string ResMessage { get; set; } = "";
+        public new string ResMessage { get; set; } = "";
 
         public List<I_WCS_GetInTaskResponseItem> TaskList { get; set; }
     }

+ 5 - 5
Projects/永冠OPP/WCS.Service/WebApi/WMS/Response/I_WCS_GetMoveTaskResponse.cs

@@ -9,11 +9,11 @@ namespace WCS.Service.Entity
         /// <summary>
         /// 结果
         /// </summary>
-        public int ResType { get; set; }
+        public new int ResType { get; set; }
         /// <summary>
         /// 消息
         /// </summary>
-        public string ResMessage { get; set; }
+        public new string ResMessage { get; set; }
         /// <summary>
         /// WMS任务号
         /// </summary>
@@ -73,14 +73,14 @@ namespace WCS.Service.Entity
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo1 { get; set; }
+        public new string Memo1 { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo2 { get; set; }
+        public new string Memo2 { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo3 { get; set; }
+        public new string Memo3 { get; set; }
     }
 }

+ 2 - 2
Projects/永冠OPP/WCS.Service/WebApi/WMS/Response/I_WCS_GetOutTaskResponse.cs

@@ -10,12 +10,12 @@ namespace WCS.Service.Entity
         /// <summary>
         /// 结果
         /// </summary>
-        public bool ResType { get; set; }
+        public new bool ResType { get; set; }
 
         /// <summary>
         /// 消息
         /// </summary>
-        public string ResMessage { get; set; }
+        public new string ResMessage { get; set; }
 
         /// <summary>
         /// 返回任务

+ 5 - 5
Projects/永冠OPP/WCS.Service/WebApi/WMS/Response/I_WCS_GetTunnelListResponse.cs

@@ -14,11 +14,11 @@ namespace WCS.Service.Entity
         /// <summary>
         /// 结果
         /// </summary>
-        public bool ResType { get; set; }
+        public new bool ResType { get; set; }
         /// <summary>
         /// 消息
         /// </summary>
-        public string ResMessage { get; set; }
+        public new string ResMessage { get; set; }
         /// <summary>
         /// 巷道号集合
         /// </summary>
@@ -26,14 +26,14 @@ namespace WCS.Service.Entity
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo1 { get; set; }
+        public new string Memo1 { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo2 { get; set; }
+        public new string Memo2 { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo3 { get; set; }
+        public new string Memo3 { get; set; }
     }
 }

+ 5 - 5
Projects/永冠OPP/WCS.Service/WebApi/WMS/Response/I_WCS_GetWareCellResponse.cs

@@ -12,11 +12,11 @@ namespace WCS.Service.Entity
         /// <summary>
         /// 结果
         /// </summary>
-        public bool ResType { get; set; }
+        public new bool ResType { get; set; }
         /// <summary>
         /// 消息
         /// </summary>
-        public string ResMessage { get; set; }
+        public new string ResMessage { get; set; }
         /// <summary>
         /// 货位号
         /// </summary>
@@ -40,14 +40,14 @@ namespace WCS.Service.Entity
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo1 { get; set; }
+        public new string Memo1 { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo2 { get; set; }
+        public new string Memo2 { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo3 { get; set; }
+        public new string Memo3 { get; set; }
     }
 }

+ 5 - 5
Projects/永冠OPP/WCS.Service/WebApi/WMS/Response/I_WCS_GetWeightResponse.cs

@@ -9,22 +9,22 @@ namespace WCS.Service.Entity
         /// <summary>
         /// 结果
         /// </summary>
-        public bool ResType { get; set; }
+        public new bool ResType { get; set; }
         /// <summary>
         /// 消息
         /// </summary>
-        public string ResMessage { get; set; }
+        public new string ResMessage { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo1 { get; set; }
+        public new string Memo1 { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo2 { get; set; }
+        public new string Memo2 { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo3 { get; set; }
+        public new string Memo3 { get; set; }
     }
 }

+ 5 - 5
Projects/永冠OPP/WCS.Service/WebApi/WMS/Response/I_WCS_PutDevInfoResponse.cs

@@ -12,22 +12,22 @@ namespace WCS.Service.Entity
         /// <summary>
         /// 结果
         /// </summary>
-        public bool ResType { get; set; }
+        public new bool ResType { get; set; }
         /// <summary>
         /// 消息
         /// </summary>
-        public string ResMessage { get; set; }
+        public new string ResMessage { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo1 { get; set; }
+        public new string Memo1 { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo2 { get; set; }
+        public new string Memo2 { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo3 { get; set; }
+        public new string Memo3 { get; set; }
     }
 }

+ 5 - 5
Projects/永冠OPP/WCS.Service/WebApi/WMS/Response/I_WCS_PutTaskStepResponse.cs

@@ -12,11 +12,11 @@ namespace WCS.Service.Entity
         /// <summary>
         /// 结果
         /// </summary>
-        public bool ResType { get; set; }
+        public new bool ResType { get; set; }
         /// <summary>
         /// 消息
         /// </summary>
-        public string ResMessage { get; set; }
+        public new string ResMessage { get; set; }
         /// <summary>
         /// WMS任务号
         /// </summary>
@@ -25,14 +25,14 @@ namespace WCS.Service.Entity
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo1 { get; set; }
+        public new string Memo1 { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo2 { get; set; }
+        public new string Memo2 { get; set; }
         /// <summary>
         /// 备用
         /// </summary>
-        public string Memo3 { get; set; }
+        public new string Memo3 { get; set; }
     }
 }

+ 2 - 3
Projects/永冠OPP/WCS.Service/Works/RGV/RGVWorks.cs

@@ -8,8 +8,7 @@ namespace WCS.Service.Works.RGV
     [WorkTitle(typeof(RGVHandler), "直穿RGV")]
     public class 直穿RGV : DeviceWork<RGVDevice>
     {
-        private readonly string ConvGroup_1030 = "G1030";
-        private readonly string RGV8 = "RGV8";
+        private const string Rgv8 = "RGV8";
 
         protected override void Do(RGVDevice rgv)
         {
@@ -17,7 +16,7 @@ namespace WCS.Service.Works.RGV
 
         protected override bool SelectDevice(WCS_DEVICE dev)
         {
-            return dev.CODE == RGV8;
+            return dev.CODE == Rgv8;
         }
     }
 

+ 8 - 13
WCS.Core/DataTrans/DataField.cs

@@ -86,23 +86,18 @@ namespace WCS.Core
 
         protected abstract object getValue();
 
-        private object lastValue;
-
         private bool ValueEquals(object obj1, object obj2)
         {
-            if (obj1.GetType().IsArray)
+            if (!obj1.GetType().IsArray) return obj1.Equals(obj2);
+            var arr1 = obj1 as Array;
+            var arr2 = obj2 as Array;
+            if (arr2 == null)
             {
-                var arr1 = obj1 as Array;
-                var arr2 = obj2 as Array;
-                if (arr2 == null)
-                {
-                    return true;
-                }
-
-                return !arr1!.Cast<object>().Where((t, i) => !arr1.GetValue(i)!.Equals(arr2.GetValue(2))).Any();
+                return true;
             }
 
-            return obj1.Equals(obj2);
+            return !arr1!.Cast<object>().Where((t, i) => !arr1.GetValue(i)!.Equals(arr2.GetValue(2))).Any();
+
         }
     }
 
@@ -152,4 +147,4 @@ namespace WCS.Core
             return Db.Read<T>(Start, StringLength, ArrayLength);
         }
     }
-}
+}

+ 4 - 4
WCS.Core/EntityEx.cs

@@ -33,7 +33,7 @@ namespace WCS.Core
 
         public Device(WCS_DEVICE entity) : base(entity)
         {
-            Data = entity.PROTOCOLS.Single(v => v.DB.PROTOCOL == typeof(T).AssemblyQualifiedName).Data<T>();
+            Data = entity.DEVICEPROTOCOLS.Single(v => v.DB.PROTOCOL == typeof(T).AssemblyQualifiedName).Data<T>();
         }
     }
 
@@ -43,7 +43,7 @@ namespace WCS.Core
 
         public Device(WCS_DEVICE entity) : base(entity)
         {
-            Data2 = entity.PROTOCOLS.Single(v => v.DB.PROTOCOL == typeof(T2).AssemblyQualifiedName).Data<T2>();
+            Data2 = entity.DEVICEPROTOCOLS.Single(v => v.DB.PROTOCOL == typeof(T2).AssemblyQualifiedName).Data<T2>();
         }
     }
 
@@ -53,7 +53,7 @@ namespace WCS.Core
 
         public Device(WCS_DEVICE entity) : base(entity)
         {
-            Data3 = entity.PROTOCOLS.Single(v => v.DB.PROTOCOL == typeof(T3).AssemblyQualifiedName).Data<T3>();
+            Data3 = entity.DEVICEPROTOCOLS.Single(v => v.DB.PROTOCOL == typeof(T3).AssemblyQualifiedName).Data<T3>();
         }
     }
 
@@ -63,7 +63,7 @@ namespace WCS.Core
 
         public Device(WCS_DEVICE entity) : base(entity)
         {
-            Data4 = entity.PROTOCOLS.Single(v => v.DB.PROTOCOL == typeof(T4).AssemblyQualifiedName).Data<T4>();
+            Data4 = entity.DEVICEPROTOCOLS.Single(v => v.DB.PROTOCOL == typeof(T4).AssemblyQualifiedName).Data<T4>();
         }
     }
 

+ 5 - 5
WCS.Core/LogicHandler.cs

@@ -116,7 +116,7 @@ namespace WCS.Core
         /// </summary>
         private static void Loop()
         {
-            var arr = AllObjects.OfType<WCS_DEVICE>().Where(v => v.ENABLED).SelectMany(v => v.PROTOCOLS)
+            var arr = AllObjects.OfType<WCS_DEVICE>().Where(v => v.ENABLED).SelectMany(v => v.DEVICEPROTOCOLS)
                 .Where(v => v.ENABLED && v.DB.ENABLED && v.DB.PLC.ENABLED)
                 .GroupBy(v => v.DB).Select(v => v.Key)
                 .ToArray();
@@ -210,7 +210,7 @@ namespace WCS.Core
             {
                 _objects ??= AllObjects.OfType<WCS_DEVICE>().Where(SelectDevice)
                     .Select(v => Activator.CreateInstance(typeof(T), v)).OfType<T>().ToArray();
-                return _objects.Where(v => v.Entity.ENABLED && v.Entity.PROTOCOLS.All(d => d.ENABLED && d.DB.ENABLED && d.DB.PLC.ENABLED));
+                return _objects.Where(v => v.Entity.ENABLED && v.Entity.DEVICEPROTOCOLS.All(d => d.ENABLED && d.DB.ENABLED && d.DB.PLC.ENABLED));
             }
         }
 
@@ -222,7 +222,7 @@ namespace WCS.Core
         private static bool SelectDevice(WCS_DEVICE dev)
         {
             var typenames = typeof(T).GenericTypeArguments.Select(v => v.AssemblyQualifiedName).ToArray();
-            var res = typenames.All(v => dev.PROTOCOLS.Any(d => d.DB.PROTOCOL == v));
+            var res = typenames.All(v => dev.DEVICEPROTOCOLS.Any(d => d.DB.PROTOCOL == v));
             return res;
         }
 
@@ -403,8 +403,8 @@ namespace WCS.Core
 
         protected override sealed IEnumerable<T> InitObjects()
         {
-            var arr = Device.Where(v => v.ENABLED && v.PROTOCOLS.All(d => d.ENABLED && d.DB.ENABLED && d.DB.PLC.ENABLED))
-                   .Where(v => _typenames.All(d => v.PROTOCOLS.Any(e => e.DB.PROTOCOL == d)))
+            var arr = Device.Where(v => v.ENABLED && v.DEVICEPROTOCOLS.All(d => d.ENABLED && d.DB.ENABLED && d.DB.PLC.ENABLED))
+                   .Where(v => _typenames.All(d => v.DEVICEPROTOCOLS.Any(e => e.DB.PROTOCOL == d)))
                    .Where(SelectDevice).ToArray();
             var res = arr.Select(v => Activator.CreateInstance(typeof(T), v) as T);