浏览代码

debug 涂布环穿出库

Administrator 3 年之前
父节点
当前提交
ac973b5f30

+ 7 - 1
Projects/永冠OPP/WCS.Service/DeviceExtentions.cs

@@ -41,7 +41,7 @@ namespace WCS.Service
         /// <returns></returns>
         public static List<WCS_DEVICE> GetPath(this WCS_DEVICE source, string endAddr, Func<List<WCS_DEVICE>, bool> condition = null)
         {
-            var q = source.PATHS.Where(v => v.START == source  & v.END.CODE.Contains(endAddr.ToUpper()))
+            var q = source.PATHS.Where(v => v.START == source & v.END.CODE.Contains(endAddr.ToUpper()))
                 .Select(v => v.PATH.Split('-').Select(v => Device.Find(v)).ToList());
 
             if (condition != null)
@@ -59,8 +59,14 @@ namespace WCS.Service
         /// <returns></returns>
         public static WCS_DEVICE GetPath(this WCS_DEVICE source, string endAddr)
         {
+            if (source.CODE == "TY7" && endAddr == "1340")
+            {
+                var c = 0;
+            }
             var q = source.PATHS.Where(v => v.START == source && v.END.CODE.Contains(endAddr.ToUpper()))
                 .Select(v => v.PATH.Split('-').Select(v => Device.Find(v)).ToList());
+            var a = source.PATHS.Where(v => v != null && v.START != null && v.END != null && v.START == source && v.END.CODE.Contains(endAddr.ToUpper()));
+            var b = a.Select(v => v.PATH.Split('-').Select(v => Device.Find(v)).ToList());
 
             return q.FirstOrDefault().FirstOrDefault();
         }

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

@@ -501,7 +501,7 @@ namespace WCS.Service.Extensions
         public void Put(StationDeviceGroup addr, int task1 = 0, int task2 = 0)
         {
             Data.TaskType_1 = RGVTaskType.放货;
-            Data.DestPosition_1 = addr.Entity.CODE.ToShort();
+            Data.DestPosition_1 = addr.Entity.CODE.Replace("G","").ToShort();
             if (task1 != 0) Data.TaskID_1 = task1;
             if (task2 != 0) Data.TaskID_2 = task2;
             Data.Trigger_1++;

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

@@ -41,6 +41,8 @@ namespace WCS.Service.Extensions
         /// <param name="srmFork">货叉</param>
         public static void GetSrmStationAndaddNext(this WCS_TASK task, SrmFork srmFork)
         {
+            var a = Device.Where(v => v.DEVICEGROUP.Any(p => p.MEMBER == Device.Find(task.TUNNEL).GetPath(task.ADDRTO.Replace("G", ""))))
+                                 .Select(v => v.Create<StationDeviceGroup>());
             //取任务巷道到达目标地址的下一个地址,即任务堆垛机的站台对应的设备组
             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>())

+ 6 - 10
Projects/永冠OPP/WCS.Service/Works/RGV/RGVWorks.cs

@@ -91,14 +91,14 @@ namespace WCS.Service.Works.RGV
                 {
                     //取小车上的任务
                     DB.Do(db =>
-                    {
+                    { 
                         List<int> taskids = new List<int>() { obj.Data2.TaskID_1, obj.Data2.TaskID_2 };
                         var tasks = db.Default.Set<WCS_TASK>().Where(p => taskids.Contains(p.ID));
                         if (tasks.GroupBy(p => p.TaskGroupKey).Count() > 1)
                             throw new WarnException("任务组ID不一致");
                         if (!tasks.GroupBy(p => p.TaskGroupKey).Any())
                             throw new WarnException("无任务组ID");
-                        var destStation = Device.Find(tasks.FirstOrDefault().ADDRNEXT.Replace("G", "")).Create<StationDeviceGroup>();
+                        var destStation = Device.Find(tasks.FirstOrDefault().ADDRNEXT).Create<StationDeviceGroup>();
                         obj.Put(destStation, obj.Data2.TaskID_1, obj.Data2.TaskID_2);
                     });
 
@@ -134,14 +134,8 @@ namespace WCS.Service.Works.RGV
                             obj.Data.TaskID_1 = gw1.Data2.Tasknum;
                             obj.Data.TaskID_2 = gw2.Data2.Tasknum;
                             obj.Data.TaskType_1 = RGVTaskType.取货;
-                            if (gw1.Data2.Tasknum != 0)
-                            {
-                                obj.Data.DestPosition_1 = gw1.Data2.Goodsend;
-                            }
-                            else
-                            {
-                                obj.Data.DestPosition_1 = gw2.Data2.Goodsend;
-                            }
+                            obj.Data.DestPosition_1 = pickStation.Entity.CODE.Replace("G", "").ToShort();
+
                             obj.Data.Trigger_1++;
 
                             foreach (var task in tasks)
@@ -178,6 +172,8 @@ namespace WCS.Service.Works.RGV
 
                 //此时RGV即没有等待执行的放货任务,也不在任何一个取货点,因此需要调往最近的一个取货点
                 //找到距离这个RGV最近的一个取货点
+                //必须所有RGV都是空闲状态时才可以进行初始化
+                if (obj.RGVList.Any(v => v.Data2.SystemStatus != RGVRunStatus.空闲 || v.Data2.WorkMode != RGVMode.自动)) return;
                 pickStation = obj.BeforeStation();
                 obj.Move(pickStation);
             });

+ 3 - 2
Projects/永冠OPP/WCS.Service/Works/Station/涂布出库.cs

@@ -37,6 +37,7 @@ namespace WCS.Service.Works.Station
                     //开始写入目标地址
                     obj.Data.Tasknum = task.ID;
                     obj.Data.Goodsstart = obj.Entity.CODE.ToShort();
+                    obj.Data.Goodsnum = (short)tasks.Count();
                     obj.Data.Goodsend = task.ADDRNEXT.ToShort();
                     obj.Data.CmdType = IstationCmdType.堆垛机放货完成请求目标地址;
                     obj.Data.VoucherNo++;
@@ -69,7 +70,7 @@ namespace WCS.Service.Works.Station
 
                 DB.Do(db =>
                 {
-                    var task = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.TYPE == TaskType.出库 && v.SRMSTATION == obj.Entity.CODE && v.STATUS == WCS.Entity.TaskStatus.堆垛机完成);
+                    var task = db.Default.Set<WCS_TASK>().Find(obj.Data2.Tasknum);
                     if (task == null) throw new WarnException("WCS无该任务信息");
                     task.ADDRNEXT = "G1";
                     db.Default.SaveChanges();
@@ -77,7 +78,7 @@ namespace WCS.Service.Works.Station
                     //开始写入目标地址
                     obj.Data.Tasknum = task.ID;
                     obj.Data.Goodsstart = obj.Entity.CODE.ToShort();
-                    obj.Data.Goodsend = task.ADDRNEXT.ToShort();
+                    obj.Data.Goodsend = task.ADDRNEXT.Replace("G","").ToShort();
                     obj.Data.CmdType = IstationCmdType.堆垛机放货完成请求目标地址;
                     obj.Data.VoucherNo++;
                 });