林豪 左 hace 1 año
padre
commit
1fe8e46876

+ 1 - 1
业务工程/分拣库/WCS.WorkEngineering/Systems/二楼拆盘机自动补空托盘组.cs

@@ -41,7 +41,7 @@ namespace WCS.WorkEngineering.Systems
                 var db = _db.Default;
 
                 //验证是否有对应的任务
-                if (db.Queryable<WCS_TaskInfo>().Any(v => v.AddrTo == obj.Entity.Code)) return;
+                if (db.Queryable<WCS_TaskInfo>().NoLock().Any(v => v.AddrTo == obj.Entity.Code)) return;
                 var res = WmsApi.ApplyEmptyPalletGroupOutStorage(obj.Entity.Code, tunnel.Code.GetLastDigit(), obj.Entity.HasFlag(DeviceFlags.拆盘机) ? PalletType.Pallet09 : PalletType.PalletNo09);
                 if (res.ResCode == ResponseStatusCodeEnum.Sucess) return;
                 World.Log(res.ResMsg);

+ 14 - 14
业务工程/分拣库/WCS.WorkEngineering/Systems/分拣主线/满轮主线预写入目标地址.cs

@@ -69,20 +69,20 @@ namespace WCS.WorkEngineering.Systems
                             return;
                         }
 
-                        if ((obj.Entity.Code == "18" && task.WarehouseCode == "1N") ||
-                            (obj.Entity.Code == "118" && task.WarehouseCode == "1S") ||
-                            (obj.Entity.Code == "38" && task.WarehouseCode == "2N") ||
-                            (obj.Entity.Code == "138" && task.WarehouseCode == "2S") ||
-                            (obj.Entity.Code == "58" && task.WarehouseCode == "3N") ||
-                            (obj.Entity.Code == "158" && task.WarehouseCode == "3S"))
-                        {
-                            task.Status = TaskStatus.WaitingToExecute;
-                            task.EditWho = "WCS";
-                            task.StartTime = DateTime.Now;
-                        }
-                        task.EditTime = DateTime.Now;
-                        db.UpdateableRowLock(task).ExecuteCommand();
-                        task.AddWCS_TASK_DTL(db, obj.Entity.Code, next, "任务完成预分流");
+                        //if ((obj.Entity.Code == "18" && task.WarehouseCode == "1N") ||
+                        //    (obj.Entity.Code == "118" && task.WarehouseCode == "1S") ||
+                        //    (obj.Entity.Code == "38" && task.WarehouseCode == "2N") ||
+                        //    (obj.Entity.Code == "138" && task.WarehouseCode == "2S") ||
+                        //    (obj.Entity.Code == "58" && task.WarehouseCode == "3N") ||
+                        //    (obj.Entity.Code == "158" && task.WarehouseCode == "3S"))
+                        //{
+                        //    task.Status = TaskStatus.WaitingToExecute;
+                        //    task.EditWho = "WCS";
+                        //    task.StartTime = DateTime.Now;
+                        //}
+                        //task.EditTime = DateTime.Now;
+                        //db.UpdateableRowLock(task).ExecuteCommand();
+                        //task.AddWCS_TASK_DTL(db, obj.Entity.Code, next, "任务完成预分流");
                         taskInfo = task;
                     });
                 }

+ 1 - 1
业务工程/分拣库/WCS.WorkEngineering/Systems/分拣支线/桁架分流点.cs

@@ -59,7 +59,7 @@ namespace WCS.WorkEngineering.Systems
             SqlSugarHelper.Do(_db =>
             {
                 var db = _db.Default;
-                var task = db.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data2.TaskNumber && v.Status == TaskStatus.WaitingToExecute) ?? throw new KnownException($"未找到对应的WCS任务{obj.Data2.TaskNumber}", LogLevelEnum.Mid);
+                var task = db.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data2.TaskNumber && v.Status < TaskStatus.FinishOfShunt) ?? throw new KnownException($"未找到对应的WCS任务{obj.Data2.TaskNumber}", LogLevelEnum.Mid);
                 if (Allot(db, task, obj)) taskInfo = task;
             });
 

+ 2 - 4
业务工程/分拣库/WCS.WorkEngineering/Systems/分拣支线/环形库分流点.cs

@@ -63,15 +63,13 @@ namespace WCS.WorkEngineering.Systems
             SqlSugarHelper.Do(_db =>
             {
                 var db = _db.Default;
-                var taskInfo = db.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data2.TaskNumber && v.Status == TaskStatus.WaitingToExecute && !v.BarCode.Contains("Error"));
+                var taskInfo = db.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data2.TaskNumber && v.Status < TaskStatus.FinishOfShunt && !v.BarCode.Contains("Error"));
                 if (obj.Data2.TaskNumber == 2)
                 {
                     var goodsType = obj.Data4.Length.ToInt();
                     var type = goodsType.ToString();
                     //找到一条起点是当前位置且状态小于2的任务
-                    taskInfo = db.Queryable<WCS_TaskInfo>().OrderBy(x => x.AddTime).First(x => x.AddrFrom == obj.Entity.Code
-                        && x.BarCode.Contains("Error")
-                        && x.AddrNext == null && x.GoodsType == goodsType);
+                    taskInfo = db.Queryable<WCS_TaskInfo>().OrderBy(x => x.AddTime).First(x => x.AddrFrom == obj.Entity.Code && x.BarCode.Contains("Error") && x.AddrNext == null && x.GoodsType == goodsType);
                     if (taskInfo == null)
                     {
                         WmsApi.PalletizingCreateseErrorTasks(obj.Entity.Code, type);

+ 20 - 1
业务工程/分拣库/WCS.WorkEngineering/Systems/环形库/机械臂cs.cs

@@ -362,13 +362,14 @@ namespace WCS.WorkEngineering.Systems
                                 if (task.FullQty != taskInfos.Count) throw new KnownException($"等待站台{srmStation}所有码垛出库任务完成初始化", LogLevelEnum.Mid);
                             }
                             taskInfos = taskInfos.Where(x => x.Status == TaskStatus.WaitingToExecute).OrderBy(x => x.ProdLine).ToList();
+
                             if (taskInfos.FirstOrDefault().WarehouseCode.Contains("S")) //如果是南侧,翻转排序
                             {
                                 taskInfos = taskInfos.OrderByDescending(x => x.ProdLine).ToList();
                             }
 
                             taskInfos = taskInfos.Take(2).ToList();
-
+                            var warehouseCode = taskInfos.FirstOrDefault().WarehouseCode;
                             if (taskInfos.Count == 2) //有两个任务
                             {
                                 var minDepth = taskInfos!.MinBy(x => x.Depth);
@@ -378,6 +379,24 @@ namespace WCS.WorkEngineering.Systems
                                 //深度之和等于6(机械臂当前无法同时执行两个三深度的取货任务)
                                 else if (taskInfos.Sum(x => x.Depth) == 6) taskInfos = taskInfos.OrderBy(x => x.ProdLine).Take(1).ToList();
                                 else if (taskInfos[0].SrmStation != taskInfos[1].SrmStation) taskInfos = taskInfos.OrderBy(x => x.SrmStation).Take(1).ToList();
+                                else if (warehouseCode.Contains("S"))
+                                {
+                                    //从大到小 一抓偶数
+                                    var max = taskInfos.MaxBy(x => x.ProdLine).ProdLine;
+                                    if ((max & 1) == 1) //抓一不是偶数
+                                    {
+                                        taskInfos = taskInfos.OrderByDescending(x => x.ProdLine).Take(1).ToList();
+                                    }
+                                }
+                                else if (warehouseCode.Contains("N"))
+                                {
+                                    //从小到达 一抓奇数
+                                    var mix = taskInfos.MinBy(x => x.ProdLine).ProdLine;
+                                    if ((mix & 1) == 0) //抓一不是奇数
+                                    {
+                                        taskInfos = taskInfos.OrderBy(x => x.ProdLine).Take(1).ToList();
+                                    }
+                                }
                             }
 
                             foreach (var task in taskInfos)

+ 4 - 2
业务工程/分拣库/WCS.WorkEngineering/WebApi/Controllers/AgvController.cs

@@ -1,4 +1,5 @@
 using Microsoft.AspNetCore.Mvc;
+using ServiceCenter.Logs;
 using ServiceCenter.Redis;
 using ServiceCenter.SqlSugars;
 using WCS.Entity;
@@ -61,7 +62,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
         {
             var key = $"WCS:Lock:AGV:{nameof(AgvCallback)}";
             var res = new AgvCallbackResponse() { code = AgvResponseCode.Success, message = "失败" };
-
+            LogHub.InterfacePublish(nameof(AgvCallback), $"传入参数--reqCode:{reqDto.reqCode}--taskCode:{reqDto.taskCode}--method:{reqDto.method}");
             try
             {
                 RedisHub.Do(key, redis =>
@@ -75,6 +76,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                         {
                             res.code = AgvResponseCode.Fail;
                             res.message = "未找到对应的AGV任务";
+
                             return;
                         }
                         switch (reqDto.method)
@@ -119,7 +121,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                 res.code = AgvResponseCode.Error;
                 res.message = ex.Message;
             }
-
+            LogHub.InterfacePublish(nameof(AgvCallback), $"返回结果--reqCode:{reqDto.reqCode}--code:{res.code}--message:{res.message}--taskCode:{reqDto.taskCode}");
             return res;
         }
     }