|
@@ -1,6 +1,9 @@
|
|
|
using ServiceCenter.SqlSugars;
|
|
|
using WCS.Entity;
|
|
|
+using WCS.WorkEngineering.WebApi.Controllers;
|
|
|
+using WCS.WorkEngineering.WebApi.Models.AGV.Response;
|
|
|
using WCS.WorkEngineering.Worlds.Logs;
|
|
|
+using TaskStatus = WCS.Entity.TaskStatus;
|
|
|
|
|
|
namespace WCS.WorkEngineering.Extensions
|
|
|
{
|
|
@@ -98,5 +101,42 @@ namespace WCS.WorkEngineering.Extensions
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public static WCS_TaskInfo GetOutTask(this WCS_TaskInfo taskInfo, SqlSugarHelper db, List<string> allOutCode, int floor, SRM obj, int index = 1)
|
|
|
+ {
|
|
|
+ //按条件先后排序获取一条排序后第一条结果1.优先级2.所在楼层与本次优先执行楼层
|
|
|
+ var tasks = db.Default.Queryable<WCS_TaskInfo>().Where(v => v.Type == TaskType.OutDepot && v.Status == TaskStatus.WaitingToExecute)
|
|
|
+ .Where(v => allOutCode.Contains(v.SrmStation))
|
|
|
+ .OrderByDescending(v => v.Priority)
|
|
|
+ .OrderByDescending(v => v.Floor == floor ? 1 : 0)
|
|
|
+ .Take(index).ToList();
|
|
|
+ if (!tasks.Any()) throw new KnownException($"{obj.Entity.Code}未找到出库任务", LogLevelEnum.High);
|
|
|
+ var task = tasks.ToArray()[tasks.Count - 1];
|
|
|
+
|
|
|
+ //判断是否是二深位任务
|
|
|
+ var addrFrom = task.AddrFrom.Split("-");
|
|
|
+ if (addrFrom[4] == "02")
|
|
|
+ {
|
|
|
+ var res = WmsApi.AddWcsMoveTask(task.ID);
|
|
|
+ switch (res.ResData.ResType)
|
|
|
+ {
|
|
|
+ case WmsApiMoveTask.允许2升位执行:
|
|
|
+ break;
|
|
|
+
|
|
|
+ case WmsApiMoveTask.执行移库任务:
|
|
|
+ throw new KnownException($"堆垛机{obj.Entity.Code}需要先执行移库任务", LogLevelEnum.Mid);
|
|
|
+
|
|
|
+ case WmsApiMoveTask.一深位有出库任务:
|
|
|
+ task = db.Default.Queryable<WCS_TaskInfo>()
|
|
|
+ .Where(v => v.Type == TaskType.OutDepot && v.Status == TaskStatus.WaitingToExecute)
|
|
|
+ .Where(v => allOutCode.Contains(v.SrmStation) && v.AddrFrom == res.ResData.CellNo)
|
|
|
+ .First();
|
|
|
+ if (task == null) task.GetOutTask(db, allOutCode, floor, obj, index + 1);
|
|
|
+ break;
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ return task;
|
|
|
+ }
|
|
|
}
|
|
|
}
|