Browse Source

南北留错流向配置;二次码垛出库口改入库口

1693994901 2 months ago
parent
commit
8788dc8092

+ 16 - 11
YWGC/FJK/WCS.WorkEngineering/Systems/NoInteractionSystems.cs

@@ -236,23 +236,28 @@ namespace WCS.WorkEngineering.Systems
                                     //计算下一个地址
                                     var path1 = DevicePath.GetPath(task.AddrFrom, task.Device);
                                     task.AddrNext = path1.Points[1].Code;
-                                    //var des1 = task.AddrNext;
-                                    //var des2 = "1";
-                                    ////分拣一
-                                    //if (task.AddrNext == "1604")
-                                    //{
-                                    //    des2 = "1606";
-                                    //}
+                                    var des1 = task.AddrNext;
+                                    var des2 = "1";
+                                    //分拣一
+                                    if (task.AddrNext == "1604")
+                                    {
+                                        des2 = "1606";
+                                    }
+                                   
                                     //else if (task.AddrNext == "1614")
                                     //{
                                     //    des2 = "1616";
                                     //}
-                                    //var num1 = db.Default.Queryable<WCS_TaskInfo>().RowLock().Where(t => t.WorkBench == des1 && t.Status < TaskStatus.Finish).Count();
-                                    //var num2 = db.Default.Queryable<WCS_TaskInfo>().RowLock().Where(t => t.WorkBench == des2 && t.Status < TaskStatus.Finish).Count();
-                                    //task.AddrNext = num1 <= num2 ? des1 : des2;
+                                    var num1 = db.Default.Queryable<WCS_TaskInfo>().RowLock().Where(t => t.WorkBench == des1 && t.Status < TaskStatus.Finish && t.Type == TaskType.EnterDepot).Count();
+                                    var num2 = db.Default.Queryable<WCS_TaskInfo>().RowLock().Where(t => t.WorkBench == des2 && t.Status < TaskStatus.Finish && t.Type == TaskType.EnterDepot).Count();
+                                    if (task.AddrNext == "1604")
+                                    {
+                                        task.AddrNext = num1 <= num2 ? des2 : des1;
+                                    }                                    
+                                    task.WorkBench = task.AddrNext;
                                     task.SrmStation = task.BarCode.Contains("TPA") || task.BarCode.Contains("TPB") ? task.AddrFrom : path1.Points[2].Code;
 
-                                    db.Default.UpdateableRowLock(task).UpdateColumns(x => new { x.Status, x.Device, x.AddrNext, x.SrmStation }).ExecuteCommand();
+                                    db.Default.UpdateableRowLock(task).UpdateColumns(x => new { x.Status, x.Device, x.AddrNext, x.SrmStation, x.WorkBench }).ExecuteCommand();
                                     task.AddWCS_TASK_DTL(db.Default, task.Device, $"初始化入库任务信息");
                                 }
 

+ 56 - 4
YWGC/FJK/WCS.WorkEngineering/Systems/分拣主线/满轮主线预写入目标地址.cs

@@ -54,6 +54,7 @@ namespace WCS.WorkEngineering.Systems
                 {
                     WCS_TaskInfo taskInfo = null;
                     fjSysConfig config = new fjSysConfig();
+                    fjSysConfig configFlowError = new fjSysConfig();
                     SqlSugarHelper.Do(_db =>
                     {
                         var db = _db.Default;
@@ -75,12 +76,22 @@ namespace WCS.WorkEngineering.Systems
                             return;
                         }
                         var config1 = db.Queryable<fjSysConfig>().NoLock().First(x => x.Code == $"{task.WarehouseCode}-Flow");
+                        var config2 = db.Queryable<fjSysConfig>().NoLock().First(x => x.Code == "FlowErrorAllocation");
+                        
                         if (config1 == null)
                         {
                             config.Code = "4";
                         }
-
-                        config = config1;
+                        if (config2 == null)
+                        {
+                            configFlowError.SContent = "3";
+                        }
+                        else
+                        {
+                            configFlowError = config2;
+                        }
+                        config = config1;                        
+                        
                         taskInfo = task;
                     });
                     if (taskInfo == null)
@@ -89,8 +100,25 @@ namespace WCS.WorkEngineering.Systems
                         continue;
                     }
                     var srmCode = taskInfo.WarehouseCode.WarehouseToSrm();
+                    var flowError = false;
+                    //北侧主线
+                    if (obj.Entity.Code == "18" || obj.Entity.Code == "38" || obj.Entity.Code == "58")
+                    {
+                        if (taskInfo.WarehouseCode.Contains("S"))
+                        {
+                            flowError = true;
+                        }
+                    }
+                    //南侧主线
+                    else if (obj.Entity.Code == "118" || obj.Entity.Code == "138" || obj.Entity.Code == "158")
+                    {
+                        if (taskInfo.WarehouseCode.Contains("N"))
+                        { 
+                            flowError = true;
+                        }
+                    }
                     var path = DevicePath.GetPath(obj.Entity.Code, srmCode);
-                    if (path == null || path is { Points.Count: < 2 })
+                    if ((path == null || path is { Points.Count: < 2 }) && !flowError)
                     {
                         var msg = $"{bcrCode}:路径错误,当前位置{obj.Entity.Code},目标位置:{srmCode}";
                         World.Log(msg, LogLevelEnum.High);
@@ -108,7 +136,7 @@ namespace WCS.WorkEngineering.Systems
                         continue;
                     }
 
-                    var next = path.Points[1].Code;
+                    var next = path != null ? path.Points[1].Code : devCode;
 
                     #region 计算应该去哪个分拣库
 
@@ -135,6 +163,30 @@ namespace WCS.WorkEngineering.Systems
                         };
                     }
 
+                    if (flowError)
+                    {
+                        if (taskInfo.WarehouseCode.Contains("N"))
+                        {
+                            next = configFlowError.SContent switch
+                            {
+                                "1" => "618",
+                                "2" => "1018",
+                                "3" => "1418",
+                                _ => next
+                            };
+                        }
+                        else if (taskInfo.WarehouseCode.Contains("S"))
+                        {
+                            next = config.SContent switch
+                            {
+                                "1" => "418",
+                                "2" => "818",
+                                "3" => "1218",
+                                _ => next
+                            };
+                        }
+                    }
+
                     #endregion 计算应该去哪个分拣库
 
                     if (taskInfo == null)

+ 31 - 31
YWGC/FJK/WCS.WorkEngineering/Systems/桁架码垛/二次码垛任务到RGV取货位处理.cs

@@ -14,8 +14,8 @@ namespace WCS.WorkEngineering.Systems.桁架码垛
     /// <summary>
     ///  二次码垛任务到RGV取货位处理
     /// </summary>
-    [BelongTo(typeof(SortingPalletizingWorld))]
-    [Description("二次码垛任务到RGV取货位处理")]
+    //[BelongTo(typeof(SortingPalletizingWorld))]
+    //[Description("二次码垛任务到RGV取货位处理")]
     public class 二次码垛任务到RGV取货位处理 : DeviceSystem<Device<IStation520, IStation521, IStation523, ITruss530>>
     {
         protected override bool ParallelDo => true;
@@ -27,36 +27,36 @@ namespace WCS.WorkEngineering.Systems.桁架码垛
             if (!obj.Data3.Status.HasFlag(StationStatus.OT_Status)) return;
             if (obj.Data2.Request != 1) return;
 
-            var addNext = 1;
-            WCS_Palletizing palletizing = null;
-            WCS_TaskInfo task = null;
+            //var addNext = 1;
+            //WCS_Palletizing palletizing = null;
+            //WCS_TaskInfo task = null;
 
-            SqlSugarHelper.Do(_db =>
-            {
-                var db = _db.Default;
-                var soDev = obj.Entity.Sources.First();
-                var taskInfo = db.Queryable<WCS_TaskInfo>().Where(x => x.SrmStation == soDev.Code && x.Status == TaskStatus.StackerCompleted).OrderBy(x => x.EditTime).First();
-                if (taskInfo == null) return;
-                var pall = db.Queryable<WCS_Palletizing>().RowLock().Includes(x => x.Locs).First(x => x.TaskId == taskInfo.ID && !x.Finish);
-                if (pall == null) return;
-                taskInfo.Status = TaskStatus.Finish;
-                taskInfo.EditTime = DateTime.Now;
-                taskInfo.EndTime = DateTime.Now;
-                db.UpdateableRowLock(taskInfo).UpdateColumns(x => new { x.Status, x.EditTime, x.EndTime }).ExecuteCommand();
-                taskInfo.AddWCS_TASK_DTL(db, obj.Entity.Code, "二次码垛出库任务完成");
-                addNext = pall.PalletizingStation.ToShort();
-                palletizing = pall;
-                task = taskInfo;
-            });
-            if (palletizing == null || task == null) return;
-            obj.Data.TaskNumber = palletizing.Id;
-            obj.Data.GoodsStart = obj.Entity.Code.ToShort();
-            obj.Data.GoodsEnd = 0;
-            obj.Data4.Type = 1;
-            obj.Data4.MaxQuantity = palletizing.CountQty.ToShort();
-            obj.Data4.Quantity = palletizing.Locs.Count(x => x.Finish).ToShort();
-            obj.Data4.VoucherNo++;
-            obj.Data.VoucherNo++;
+            //SqlSugarHelper.Do(_db =>
+            //{
+            //    var db = _db.Default;
+            //    var soDev = obj.Entity.Sources.First();
+            //    var taskInfo = db.Queryable<WCS_TaskInfo>().Where(x => x.SrmStation == soDev.Code && x.Status == TaskStatus.StackerCompleted).OrderBy(x => x.EditTime).First();
+            //    if (taskInfo == null) return;
+            //    var pall = db.Queryable<WCS_Palletizing>().RowLock().Includes(x => x.Locs).First(x => x.TaskId == taskInfo.ID && !x.Finish);
+            //    if (pall == null) return;
+            //    taskInfo.Status = TaskStatus.Finish;
+            //    taskInfo.EditTime = DateTime.Now;
+            //    taskInfo.EndTime = DateTime.Now;
+            //    db.UpdateableRowLock(taskInfo).UpdateColumns(x => new { x.Status, x.EditTime, x.EndTime }).ExecuteCommand();
+            //    taskInfo.AddWCS_TASK_DTL(db, obj.Entity.Code, "二次码垛出库任务完成");
+            //    addNext = pall.PalletizingStation.ToShort();
+            //    palletizing = pall;
+            //    task = taskInfo;
+            //});
+            //if (palletizing == null || task == null) return;
+            //obj.Data.TaskNumber = palletizing.Id;
+            //obj.Data.GoodsStart = obj.Entity.Code.ToShort();
+            //obj.Data.GoodsEnd = 0;
+            //obj.Data4.Type = 1;
+            //obj.Data4.MaxQuantity = palletizing.CountQty.ToShort();
+            //obj.Data4.Quantity = palletizing.Locs.Count(x => x.Finish).ToShort();
+            //obj.Data4.VoucherNo++;
+            //obj.Data.VoucherNo++;
         }
 
         public override bool Select(Device dev)

+ 2 - 0
YWGC/FJK/WCS.WorkEngineering/WorkStart.cs

@@ -698,6 +698,7 @@ namespace WCS.WorkEngineering
                 #region RGV--RGV放货点
 
                 new RouteInfo("RGV1", new string[] { "1604" }),
+                new RouteInfo("RGV1", new string[] { "1606" }),
                 new RouteInfo("RGV2", new string[] { "1614" }),
 
                 #endregion RGV--RGV放货点
@@ -712,6 +713,7 @@ namespace WCS.WorkEngineering
                 #region 二楼堆垛机入库--巷道
 
                 new RouteInfo("1603", new string[] { "TY1" }),//北侧
+                new RouteInfo("1605", new string[] { "TY1" }),
                 new RouteInfo("1613", new string[] { "TY2" }),//南侧
 
                 #endregion 二楼堆垛机入库--巷道