林豪 左 vor 1 Jahr
Ursprung
Commit
4b5c64560b

+ 79 - 130
业务工程/分拣库/WCS.WorkEngineering/Systems/AgvSystems.cs

@@ -151,79 +151,31 @@ namespace WCS.WorkEngineering.Systems
                                             if (task == null) throw new Exception($"未找到对应的WCS任务{agv.TaskId}");
 
                                             //获取当前任务可以去的目标地址
-                                            var positionList = new List<string>();
-                                            var allPositionList = new List<string>();
-                                            var nearPositionList = new List<string>();
-                                            switch (task.WarehouseCode)
-                                            {
-                                                case "1N":
-                                                    positionList.AddRange(new List<string>() { "2501", "2505", "2509", "2513" });
-                                                    nearPositionList.AddRange(new List<string>() {
-                                                        "2701", "2705", "2709", "2713" });
-                                                    allPositionList.AddRange(new List<string>() {
-                                                        "2901", "2905", "2909", "2913","3101", "3105", "3109", "3113", "3301", "3305", "3309", "3313","3501", "3505", "3509", "3513"});
-                                                    break;
-
-                                                case "1S":
-                                                    positionList.AddRange(new List<string>() { "2701", "2705", "2709", "2713" });
-                                                    nearPositionList.AddRange(new List<string>() {
-                                                        "2501", "2505", "2509", "2513" });
-                                                    allPositionList.AddRange(new List<string>() {
-                                                        "3101", "3105", "3109", "3113", "2901", "2905", "2909", "2913", "3501", "3505", "3509", "3513", "3301", "3305", "3309", "3313"});
-                                                    break;
-
-                                                case "2N":
-                                                    positionList.AddRange(new List<string>() { "2901", "2905", "2909", "2913" });
-                                                    nearPositionList.AddRange(new List<string>() {
-                                                        "3101", "3105", "3109", "3113" });
-                                                    allPositionList.AddRange(new List<string>() {
-                                                        "2501" , "2505" , "2509" , "2513" , "2701", "2705", "2709", "2713","3301", "3305", "3309", "3313", "3501", "3505", "3509", "3513"});
-                                                    break;
+                                            var positionList = new List<string>(); //当前分配点对应的放货点
+                                            var allPositionList = new List<string>(); //同库区另一侧的放货点
+                                            var nearPositionList = new List<string>(); //所有的放货点
 
-                                                case "2S":
-                                                    positionList.AddRange(new List<string>() { "3101", "3105", "3109", "3113" });
-                                                    nearPositionList.AddRange(new List<string>() {
-                                                        "2901", "2905", "2909", "2913" });
-                                                    allPositionList.AddRange(new List<string>() {
-                                                        "2701" , "2705" , "2709" , "2713" ,"2501" , "2505" , "2509" , "2513" ,  "3501" , "3505" , "3509" , "3513","3301", "3305", "3309", "3313"});
-                                                    break;
-
-                                                case "3N":
-                                                    positionList.AddRange(new List<string>() { "3301", "3305", "3309", "3313" });
-                                                    nearPositionList.AddRange(new List<string>() {
-                                                        "3501", "3505", "3509", "3513" });
-                                                    allPositionList.AddRange(new List<string>() {
-                                                        "2901", "2905", "2909", "2913", "3101", "3105", "3109", "3113","2501" , "2505" , "2509" , "2513" , "2701", "2705", "2709", "2713" });
-                                                    break;
+                                            GetPositionList(positionList, nearPositionList, allPositionList, task.WarehouseCode);
 
-                                                case "3S":
-                                                    positionList.AddRange(new List<string>() { "3501", "3505", "3509", "3513" });
-                                                    nearPositionList.AddRange(new List<string>() {
-                                                        "3301", "3305", "3309", "3313" });
-                                                    allPositionList.AddRange(new List<string>() {
-                                                        "3101", "3105", "3109", "3113", "2901", "2905", "2909", "2913", "2701" , "2705" , "2709" , "2713" ,"2501" , "2505" , "2509" , "2513" });
-                                                    break;
-                                            }
+                                            List<WCS_AgvTaskInfo> agvs = new List<WCS_AgvTaskInfo>(); //当前分配点对应的放货点已用点
+                                            List<WCS_AgvTaskInfo> agvsNear = new List<WCS_AgvTaskInfo>(); //同库区另一侧的放货点已用点
+                                            List<WCS_AgvTaskInfo> agvsAll = new List<WCS_AgvTaskInfo>(); //所有的放货点已用点
 
-                                            List<WCS_AgvTaskInfo> agvs = new List<WCS_AgvTaskInfo>();
-                                            List<WCS_AgvTaskInfo> agvsAll = new List<WCS_AgvTaskInfo>();
-                                            List<WCS_AgvTaskInfo> agvsNear = new List<WCS_AgvTaskInfo>();
-                                            //if (task.LastInteractionPoint == "2")
-                                            //{
-                                            //当前可用地址正在执行的任务
                                             agvs = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.Status > AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.MissionCompleted && v.TaskType == AGVTaskType.EnterDepot && positionList.Contains(v.Station))
                                                 .SplitTable(v => v.Take(2)).ToList();
                                             agvsAll = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.Status > AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.MissionCompleted && v.TaskType == AGVTaskType.EnterDepot && allPositionList.Contains(v.Station))
                                                 .SplitTable(v => v.Take(2)).ToList();
                                             agvsNear = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.Status > AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.MissionCompleted && v.TaskType == AGVTaskType.EnterDepot && nearPositionList.Contains(v.Station))
                                                 .SplitTable(v => v.Take(2)).ToList();
+                                            //获取放货点
                                             var agvPositionLists = agvs.Select(x => x.Station).Distinct();
-                                            var agvPositionListsAll = agvsAll.Select(x => x.Station).Distinct();
                                             var agvPositionListsNear = agvsNear.Select(x => x.Station).Distinct();
-                                            //World.Log($"执行中的AGV任务目标地址:{JsonConvert.SerializeObject(agvPositionList)}");
+                                            var agvPositionListsAll = agvsAll.Select(x => x.Station).Distinct();
+                                            //获取各区域可用点
                                             var endDev = positionList.Where(x => !agvPositionLists.Contains(x)).ToList();
-                                            var endAllDev = allPositionList.Where(x => !agvPositionListsAll.Contains(x)).ToList();
                                             var endNearDev = nearPositionList.Where(x => !agvPositionListsNear.Contains(x)).ToList();
+                                            var endAllDev = allPositionList.Where(x => !agvPositionListsAll.Contains(x)).ToList();
+
                                             World.Log($"agv可用巷道信息:{JsonConvert.SerializeObject(endDev)}");
                                             World.Log($"agv可用巷道信息(所有):{JsonConvert.SerializeObject(endAllDev)}");
 
@@ -240,6 +192,7 @@ namespace WCS.WorkEngineering.Systems
                                             //获取没有光电信息的设备集合
                                             try
                                             {
+                                                // 获取可用站台
                                                 var devs = Device.All.Where(x => endDev.Contains(x.Code)).Select(x =>
                                                     new Device<IStation520, IStation521, IStation523>(x, World));
                                                 devs = devs.Where(x =>
@@ -260,16 +213,15 @@ namespace WCS.WorkEngineering.Systems
                                                     !x.Data3.Status.HasFlag(StationStatus.Run) &&
                                                     !x.Data3.Status.HasFlag(StationStatus.PH_Status) &&
                                                     x.Data3.Status.HasFlag(StationStatus.Auto)).OrderBy(v => allPositionList.Contains(v.Entity.Code)).ToList();
-                                                if (!devs.Any())
+                                                if (!devs.Any()) //自身所属位置无可用放货点
                                                 {
                                                     if (devsNear.Any())//先判断同库一侧
                                                     {
                                                         foreach (var dev in devsNear)
                                                         {
-                                                            if (!dev.Data3.Status.HasFlag(StationStatus.Run) && !dev.Data3.Status.HasFlag(StationStatus.PH_Status) &&
-                                                                                                              dev.Data3.Status.HasFlag(StationStatus.Auto))
+                                                            if (!dev.Data3.Status.HasFlag(StationStatus.Run) && !dev.Data3.Status.HasFlag(StationStatus.PH_Status) && dev.Data3.Status.HasFlag(StationStatus.Auto))
                                                             {
-                                                                //World.Log($"任务执行过程:开始{agv.ID}-{JsonConvert.SerializeObject(devsAll.Select(x => x.Entity.Code).ToList())}");
+                                                                World.Log($"任务执行过程:开始{agv.ID}-{JsonConvert.SerializeObject(devsAll.Select(x => x.Entity.Code).ToList())}");
                                                                 agv.Status = AGVTaskStatus.Complete1;
                                                                 agv.Station = dev.Entity.Code;
                                                                 db.Default.UpdateableRowLock(agv).SplitTable(x => x.Take(2)).ExecuteCommand();
@@ -280,18 +232,14 @@ namespace WCS.WorkEngineering.Systems
                                                                 World.Log($"任务执行过程:任务成功下发AGV{agv.AgvID}--{agv.Station}");
                                                                 return;
                                                             }
-                                                            else
-                                                            {
-                                                                continue;
-                                                            }
+                                                            
                                                         }
                                                     }
                                                     else if (devsAll.Any())
                                                     {
                                                         foreach (var dev in devsAll)
                                                         {
-                                                            if (!dev.Data3.Status.HasFlag(StationStatus.Run) && !dev.Data3.Status.HasFlag(StationStatus.PH_Status) &&
-                                                                                                              dev.Data3.Status.HasFlag(StationStatus.Auto))
+                                                            if (!dev.Data3.Status.HasFlag(StationStatus.Run) && !dev.Data3.Status.HasFlag(StationStatus.PH_Status) && dev.Data3.Status.HasFlag(StationStatus.Auto))
                                                             {
                                                                 World.Log($"任务执行过程:开始{agv.ID}-{JsonConvert.SerializeObject(devsAll.Select(x => x.Entity.Code).ToList())}");
                                                                 agv.Status = AGVTaskStatus.Complete1;
@@ -304,10 +252,6 @@ namespace WCS.WorkEngineering.Systems
                                                                 World.Log($"任务执行过程:任务成功下发AGV{agv.AgvID}--{agv.Station}");
                                                                 return;
                                                             }
-                                                            else
-                                                            {
-                                                                continue;
-                                                            }
                                                         }
                                                     }
                                                     World.Log("可用站台均有货或有执行中任务");
@@ -328,62 +272,6 @@ namespace WCS.WorkEngineering.Systems
                                             {
                                                 throw new Exception($"执行错误:{e.Message + e.StackTrace}");
                                             }
-                                            //}
-
-                                            #region ELSE
-
-                                            //else
-                                            //{
-                                            //    //当前可用地址正在执行的任务
-                                            //    agvs = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.Status > AGVTaskStatus.Confirm && v.Status < AGVTaskStatus.MissionCompleted && v.TaskType == AGVTaskType.EnterDepot && positionList.Contains(v.Station))
-                                            //        .SplitTable(v => v.Take(2)).ToList();
-                                            //    var agvPositionList = agvs.Select(x => x.Station).Distinct();
-                                            //    //World.Log($"执行中的AGV任务目标地址:{JsonConvert.SerializeObject(agvPositionList)}");
-                                            //    var endDevs = positionList.Where(x => !agvPositionList.Contains(x)).ToList();
-                                            //    World.Log($"agv可用巷道信息:{JsonConvert.SerializeObject(endDevs)}");
-
-                                            //    if (!endDevs.Any())//没有可用放货站台
-                                            //    {
-                                            //        var msg = "已无可用放货站台,任务正在执行中:";
-                                            //        foreach (var ag in agvs)
-                                            //        {
-                                            //            msg += $"[任务号:{ag.ID},目标地址:{ag.Station}]";
-                                            //        }
-                                            //        throw new Exception(msg);
-                                            //    }
-
-                                            //    //获取没有光电信息的设备集合
-                                            //    try
-                                            //    {
-                                            //        var devs = Device.All.Where(x => endDevs.Contains(x.Code)).Select(x =>
-                                            //            new Device<IStation520, IStation521, IStation523>(x, World));
-                                            //        devs = devs.Where(x =>
-                                            //            !x.Data3.Status.HasFlag(StationStatus.Run) &&
-                                            //            !x.Data3.Status.HasFlag(StationStatus.PH_Status) &&
-                                            //            x.Data3.Status.HasFlag(StationStatus.Auto)).ToList();
-                                            //        if (!devs.Any())
-                                            //        {
-                                            //            World.Log("可用站台均有货或有执行中任务");
-                                            //            return;
-                                            //        }
-
-                                            //        World.Log($"任务执行过程:开始{agv.ID}-{JsonConvert.SerializeObject(devs.Select(x => x.Entity.Code).ToList())}");
-                                            //        agv.Status = AGVTaskStatus.Complete1;
-                                            //        agv.Station = devs.MinBy(x => x.Entity.Code).Entity.Code;
-                                            //        db.Default.UpdateableRowLock(agv).SplitTable(x => x.Take(2)).ExecuteCommand();
-                                            //        World.Log($"任务执行过程:完成agv任务更新{agv.ID}--{agv.Station}");
-                                            //        task.AddWCS_TASK_DTL(db.Default, "皮盘返库任务分配巷道", agv.Station, $"任务分配至:{agv.Station}");
-                                            //        World.Log($"任务执行过程:完成任务明细添加{agv.Station}");
-                                            //        AgvApi.ContinueTask(agv.AgvID, agv.Station);
-                                            //        World.Log($"任务执行过程:任务成功下发AGV{agv.AgvID}--{agv.Station}");
-                                            //    }
-                                            //    catch (Exception e)
-                                            //    {
-                                            //        throw new Exception($"执行错误:{e.Message + e.StackTrace}");
-                                            //    }
-                                            //}
-
-                                            #endregion ELSE
 
                                             break;
                                         }
@@ -456,5 +344,66 @@ namespace WCS.WorkEngineering.Systems
         {
             return dev.Code is "AGVIn" or "AGVOut";
         }
+
+        /// <summary>
+        ///  获取可用放货点
+        /// </summary>
+        /// <param name="positionList"></param>
+        /// <param name="nearPositionList"></param>
+        /// <param name="allPositionList"></param>
+        /// <param name="warehouseCode"></param>
+        private void GetPositionList(List<string> positionList, List<string> nearPositionList, List<string> allPositionList, string warehouseCode)
+        {
+            switch (warehouseCode)
+            {
+                case "1N":
+                    positionList.AddRange(new List<string>() { "2501", "2505", "2509", "2513" });
+                    nearPositionList.AddRange(new List<string>() {
+                                                        "2701", "2705", "2709", "2713" });
+                    allPositionList.AddRange(new List<string>() {
+                                                        "2901", "2905", "2909", "2913","3101", "3105", "3109", "3113", "3301", "3305", "3309", "3313","3501", "3505", "3509", "3513"});
+                    break;
+
+                case "1S":
+                    positionList.AddRange(new List<string>() { "2701", "2705", "2709", "2713" });
+                    nearPositionList.AddRange(new List<string>() {
+                                                        "2501", "2505", "2509", "2513" });
+                    allPositionList.AddRange(new List<string>() {
+                                                        "3101", "3105", "3109", "3113", "2901", "2905", "2909", "2913", "3501", "3505", "3509", "3513", "3301", "3305", "3309", "3313"});
+                    break;
+
+                case "2N":
+                    positionList.AddRange(new List<string>() { "2901", "2905", "2909", "2913" });
+                    nearPositionList.AddRange(new List<string>() {
+                                                        "3101", "3105", "3109", "3113" });
+                    allPositionList.AddRange(new List<string>() {
+                                                        "2501" , "2505" , "2509" , "2513" , "2701", "2705", "2709", "2713","3301", "3305", "3309", "3313", "3501", "3505", "3509", "3513"});
+                    break;
+
+                case "2S":
+                    positionList.AddRange(new List<string>() { "3101", "3105", "3109", "3113" });
+                    nearPositionList.AddRange(new List<string>() {
+                                                        "2901", "2905", "2909", "2913" });
+                    allPositionList.AddRange(new List<string>() {
+                                                        "2701" , "2705" , "2709" , "2713" ,"2501" , "2505" , "2509" , "2513" ,  "3501" , "3505" , "3509" , "3513","3301", "3305", "3309", "3313"});
+                    break;
+
+                case "3N":
+                    positionList.AddRange(new List<string>() { "3301", "3305", "3309", "3313" });
+                    nearPositionList.AddRange(new List<string>() {
+                                                        "3501", "3505", "3509", "3513" });
+                    allPositionList.AddRange(new List<string>() {
+                                                        "2901", "2905", "2909", "2913", "3101", "3105", "3109", "3113","2501" , "2505" , "2509" , "2513" , "2701", "2705", "2709", "2713" });
+                    break;
+
+                case "3S":
+                    positionList.AddRange(new List<string>() { "3501", "3505", "3509", "3513" });
+                    nearPositionList.AddRange(new List<string>() {
+                                                        "3301", "3305", "3309", "3313" });
+                    allPositionList.AddRange(new List<string>() {
+                                                        "3101", "3105", "3109", "3113", "2901", "2905", "2909", "2913", "2701" , "2705" , "2709" , "2713" ,"2501" , "2505" , "2509" , "2513" });
+                    break;
+            }
+        }
     }
 }

+ 2 - 1
业务工程/分拣库/WCS.WorkEngineering/Systems/NoInteractionSystems.cs

@@ -31,7 +31,8 @@ namespace WCS.WorkEngineering.Systems
             SqlSugarHelper.Do(db =>
             {
                 //获取所有的新建任务,组盘任务不需要
-                taskInfos = db.Default.Queryable<WCS_TaskInfo>().ReadPastUpdLock().Where(x => x.Status == 0).ToList().Where(x => x.Type != TaskType.SetPlate || (x.Type == TaskType.SetPlate && x.AddrFrom != "Robot")).Select(x => x.ID).ToList();
+                taskInfos = db.Default.Queryable<WCS_TaskInfo>().ReadPastUpdLock().Where(x => x.Status == 0).ToList()
+                    .Where(x => x.Type != TaskType.SetPlate || (x.Type == TaskType.SetPlate && x.AddrFrom != "Robot") && x.BusType != "人工满托入库").Select(x => x.ID).ToList();
                 var time = DateTime.Now.AddMinutes(-20);
                 var time1 = DateTime.Now.AddMinutes(-40);
                 var timeOut = db.Default.Queryable<WCS_TaskInfo>().NoLock().Count(x => x.BusType == "车间叫料" && x.Status < TaskStatus.StackerExecution && x.AddTime < time);

+ 25 - 2
业务工程/分拣库/WCS.WorkEngineering/Systems/一楼扫码入库.cs

@@ -131,7 +131,30 @@ namespace WCS.WorkEngineering.Systems
                         taskInfo.AddWCS_TASK_DTL(db, obj.Entity.Code, "开始执行入库任务");
                         task = taskInfo;
                     }
-                    else return;
+                    else if (taskInfo is { Status: Entity.TaskStatus.NewBuild, BusType: "人工满托入库" })
+                    {
+                        var tunnel = obj.Entity.Targets.FirstOrDefault(v => v.HasFlag(DeviceFlags.巷道));
+                        //开始对任务进行处理
+                        taskInfo.Status = Entity.TaskStatus.ConveyorExecution;
+                        taskInfo.StartTime = DateTime.Now;
+                        taskInfo.SrmStation = taskInfo.AddrFrom;
+                        taskInfo.LastInteractionPoint = obj.Entity.Code;
+                        taskInfo.Tunnel = tunnel.Code;
+                        taskInfo.Height = 2;
+                        taskInfo.Device = obj.Entity.Code switch
+                        {
+                            "2532" => "SRM1",
+                            "2732" => "SRM2",
+                            "2932" => "SRM3",
+                            "3132" => "SRM4",
+                            "3332" => "SRM5",
+                            "3532" => "SRM6",
+                            _ => taskInfo.Device
+                        };
+                        db.UpdateableRowLock(taskInfo).UpdateColumns(x => new { x.Status, x.StartTime, x.SrmStation, x.LastInteractionPoint, x.Tunnel, x.Height, x.Device }).ExecuteCommand();
+                        taskInfo.AddWCS_TASK_DTL(db, obj.Entity.Code, "开始执行入库任务");
+                        task = taskInfo;
+                    }
                 });
             }
             catch (Exception ex)
@@ -152,4 +175,4 @@ namespace WCS.WorkEngineering.Systems
             //return dev.HasFlag(Extensions.DeviceFlags.一楼扫码);
         }
     }
-}
+}

+ 25 - 22
业务工程/分拣库/WCS.WorkEngineering/Systems/桁架码垛/桁架.cs

@@ -183,21 +183,21 @@ namespace WCS.WorkEngineering.Systems
                 return;
             }
 
-            ////判断本次周期应该优先取哪一侧的任务
-            //var warehouseCode = obj.Entity.GetFlag<string>("warehouseCode"); //获取对应的Key
-            //if (warehouseCode == default(string)) //如果获取结果为默认值表示系统初始化,系统初始化时默认优先北侧
-            //{
-            //    warehouseCode = "N";
-            //    obj.Entity.SetFlag<string>("warehouseCode", "N");
-            //}
-            //var quantity = obj.Entity.GetFlag<int>(warehouseCode); //获取当前侧执行的次数
-            //var maxQuantity = 3; //南北库的周期检查比为3:3
-            //if (quantity >= quantity) //如果当前侧检查周期大于等于最大检查周期,切换到另一侧
-            //{
-            //    obj.Entity.SetFlag(warehouseCode, 0);
-            //    warehouseCode = warehouseCode == "N" ? "S" : "N"; //如果是北侧切换到南侧  如果是南侧切换到北侧
-            //    quantity = obj.Entity.GetFlag<int>(warehouseCode); //获取南库的侧执行的次数
-            //}
+            //判断本次周期应该优先取哪一侧的任务
+            var warehouseCode = obj.Entity.GetFlag<string>("warehouseCode"); //获取对应的Key
+            if (warehouseCode == default(string)) //如果获取结果为默认值表示系统初始化,系统初始化时默认优先北侧
+            {
+                warehouseCode = "N";
+                obj.Entity.SetFlag<string>("warehouseCode", "N");
+            }
+            var quantity = obj.Entity.GetFlag<int>(warehouseCode); //获取当前侧执行的次数
+            var maxQuantity = 3; //南北库的周期检查比为3:3
+            if (quantity >= quantity) //如果当前侧检查周期大于等于最大检查周期,切换到另一侧
+            {
+                obj.Entity.SetFlag(warehouseCode, 0);
+                warehouseCode = warehouseCode == "N" ? "S" : "N"; //如果是北侧切换到南侧  如果是南侧切换到北侧
+                quantity = obj.Entity.GetFlag<int>(warehouseCode); //获取南库的侧执行的次数
+            }
 
             List<WCS_PalletizingRow> palletizingRowList = null;
             WCS_Palletizing palletizing = null;
@@ -206,7 +206,7 @@ namespace WCS.WorkEngineering.Systems
                 var db = _db.Default;
                 //找到当前桁架所属所有还有层没结束的码垛记录信息,有对应托盘
                 var palletizingLsit = db.Queryable<WCS_Palletizing>().Includes(x => x.Layers, r => r.Rows, l => l.Locs)
-                    .Where(x => !x.Finish && x.DeviceCode == obj.Entity.Code /*&& x.WarehouseCode.Contains(warehouseCode)*/)
+                    .Where(x => !x.Finish && x.DeviceCode == obj.Entity.Code && x.WarehouseCode.Contains(warehouseCode))
                     .Where(x => x.Layers.Any(l => !l.Finish) && x.PalletizingStation != null && x.PalleCode != null).ToList();
                 //筛选出目标位置有光电的码垛记录信息
                 var devCode = palletizingLsit.Select(x => x.PalletizingStation);
@@ -218,7 +218,7 @@ namespace WCS.WorkEngineering.Systems
                 if (!devCode.Any())
                 {
                     World.Log($"无可用放货码垛位,请检查实际有货位置的光电是否正常");
-                    //obj.Entity.SetFlag(warehouseCode, maxQuantity + 1); //当前侧无满足抓取条件的码垛信息直接进行切侧
+                    obj.Entity.SetFlag(warehouseCode, maxQuantity + 1); //当前侧无满足抓取条件的码垛信息直接进行切侧
                     return;
                 }
 
@@ -240,7 +240,7 @@ namespace WCS.WorkEngineering.Systems
                 if (!cacheLines.Any())
                 {
                     World.Log($"无可用取货线体");
-                    //obj.Entity.SetFlag(warehouseCode, maxQuantity + 1); //当前侧无满足抓取条件的码垛信息直接进行切侧
+                    obj.Entity.SetFlag(warehouseCode, maxQuantity + 1); //当前侧无满足抓取条件的码垛信息直接进行切侧
                     return;
                 }
                 World.Log($"物理可用取货线体:{JsonConvert.SerializeObject(pickUpDevices.Select(x => x.key).ToList())}");
@@ -256,7 +256,7 @@ namespace WCS.WorkEngineering.Systems
                 if (!palletizingLsit.Any())
                 {
                     World.Log($"没有可用取货点,码垛信息是否正常");
-                    //obj.Entity.SetFlag(warehouseCode, maxQuantity + 1); //当前侧无满足抓取条件的码垛信息直接进行切侧
+                    obj.Entity.SetFlag(warehouseCode, maxQuantity + 1); //当前侧无满足抓取条件的码垛信息直接进行切侧
                     return;
                 }
 
@@ -343,7 +343,10 @@ namespace WCS.WorkEngineering.Systems
                             rowList = rowList!.Take(1).ToList();
                         }
                     }
-                    rowList = rowList!.Take(1).ToList();
+
+                    // 分拣一强制全部单抓,线体存在干涉
+                    if (obj.Entity.Code == "Truss1") rowList = rowList!.Take(1).ToList();
+
                     var palletizingRows = new List<WCS_PalletizingRow>();
 
                     foreach (var row in rowList)
@@ -378,10 +381,10 @@ namespace WCS.WorkEngineering.Systems
             if (palletizingRowList == null || !palletizingRowList.Any())
             {
                 World.Log($"没有可用任务");
-                //obj.Entity.SetFlag(warehouseCode, maxQuantity + 1); //当前侧无满足抓取条件的码垛信息直接进行切侧
+                obj.Entity.SetFlag(warehouseCode, maxQuantity + 1); //当前侧无满足抓取条件的码垛信息直接进行切侧
                 return;
             }
-            //obj.Entity.SetFlag(warehouseCode, quantity + 1); //满足抓取条件,当前侧的执行周期加一
+            obj.Entity.SetFlag(warehouseCode, quantity + 1); //满足抓取条件,当前侧的执行周期加一
             for (var i = 0; i < palletizingRowList.Count; i++)
             {
                 var palletizingRow = palletizingRowList[i];