|
@@ -28,10 +28,35 @@ namespace WCS.WorkEngineering.Systems
|
|
|
{
|
|
|
SqlSugarHelper.Do(db =>
|
|
|
{
|
|
|
- #region 处理所有新建出库任务
|
|
|
-
|
|
|
List<WCS_TaskInfo> tasks = new List<WCS_TaskInfo>();
|
|
|
|
|
|
+ #region 处理所有的新增入库任务
|
|
|
+
|
|
|
+ tasks = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild && t.Type == TaskType.EnterDepot).ToList();
|
|
|
+
|
|
|
+ if (tasks.Count > 0)
|
|
|
+ {
|
|
|
+ tasks.ForEach(task =>
|
|
|
+ {
|
|
|
+ //开始处理
|
|
|
+ task.Status = Entity.TaskStatus.WaitingToExecute;
|
|
|
+ task.AddWCS_TASK_DTL(db, task.Device, $"初始化入库任务信息,并创建AGV任务中间表");
|
|
|
+ db.Default.Insertable(new WCS_AgvTaskInfo()
|
|
|
+ {
|
|
|
+ ID = task.ID,
|
|
|
+ TaskType = AGVTaskType.EnterDepot,
|
|
|
+ Status = AGVTaskStatus.NewBuild,
|
|
|
+ Station = task.WorkBench,
|
|
|
+ AddWho = "WCS"
|
|
|
+ }).SplitTable().ExecuteCommand();
|
|
|
+ db.Default.Updateable(task).AddQueue();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion 处理所有的新增入库任务
|
|
|
+
|
|
|
+ #region 处理所有新建出库任务
|
|
|
+
|
|
|
//获取所有新建状态的出库任务
|
|
|
tasks = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild && t.Type == TaskType.OutDepot).ToList();
|
|
|
if (tasks.Count > 0)
|
|
@@ -51,9 +76,9 @@ namespace WCS.WorkEngineering.Systems
|
|
|
|
|
|
#endregion 处理所有新建出库任务
|
|
|
|
|
|
- #region 处理所有的新增入库任务
|
|
|
+ #region 处理所有的搬运任务
|
|
|
|
|
|
- tasks = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild).ToList();
|
|
|
+ tasks = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild && t.Type == TaskType.Delivery).ToList();
|
|
|
|
|
|
if (tasks.Count > 0)
|
|
|
{
|
|
@@ -61,11 +86,11 @@ namespace WCS.WorkEngineering.Systems
|
|
|
{
|
|
|
//开始处理
|
|
|
task.Status = Entity.TaskStatus.WaitingToExecute;
|
|
|
- task.AddWCS_TASK_DTL(db, task.Device, $"初始化入库任务信息,并创建AGV任务中间表");
|
|
|
+ task.AddWCS_TASK_DTL(db, task.Device, $"初始化搬运任务信息,并创建AGV任务中间表");
|
|
|
db.Default.Insertable(new WCS_AgvTaskInfo()
|
|
|
{
|
|
|
ID = task.ID,
|
|
|
- TaskType = AGVTaskType.EnterDepot,
|
|
|
+ TaskType = AGVTaskType.ForkliftFilling,
|
|
|
Status = AGVTaskStatus.NewBuild,
|
|
|
Station = task.WorkBench,
|
|
|
AddWho = "WCS"
|
|
@@ -74,7 +99,7 @@ namespace WCS.WorkEngineering.Systems
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- #endregion 处理所有的新增入库任务
|
|
|
+ #endregion 处理所有的搬运任务
|
|
|
|
|
|
db.Default.SaveQueues();
|
|
|
});
|
|
@@ -116,6 +141,44 @@ namespace WCS.WorkEngineering.Systems
|
|
|
});
|
|
|
|
|
|
#endregion 下发入库AGV任务
|
|
|
+
|
|
|
+ #region 移动任务处理
|
|
|
+
|
|
|
+ SqlSugarHelper.Do(db =>
|
|
|
+ {
|
|
|
+ var agvTasks = db.Default.Queryable<WCS_AgvTaskInfo>().Where(t => t.Status == AGVTaskStatus.NewBuild && t.TaskType == AGVTaskType.ForkliftFilling).SplitTable(v => v.Take(1)).ToList();
|
|
|
+
|
|
|
+ if (agvTasks.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var agv in agvTasks)
|
|
|
+ {
|
|
|
+ //开始处理
|
|
|
+ GenAgvSchedulingTaskResponse res = new GenAgvSchedulingTaskResponse();
|
|
|
+ try
|
|
|
+ {
|
|
|
+ //获取对应wcs任务
|
|
|
+ var wcs = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.ID == agv.ID && t.Status == Entity.TaskStatus.WaitingToExecute).First();
|
|
|
+ //下发AGV任务
|
|
|
+ res = AgvApi.机台补空(agv.Station, Guid.NewGuid().ToString().Replace("-", ""), "1");
|
|
|
+ agv.Status = AGVTaskStatus.Confirm;
|
|
|
+ agv.AgvID = res.data;
|
|
|
+ db.Default.Updateable(agv).SplitTable().ExecuteCommand();
|
|
|
+ wcs.Status = Entity.TaskStatus.AGVExecution;
|
|
|
+ wcs.AddWCS_TASK_DTL(db, wcs.Device, $"任务下发至AGV,AGV任务号:{res.data}");
|
|
|
+ db.Default.Updateable(wcs).AddQueue();
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ World.Log(ex.Message, Worlds.Logs.LogLevelEnum.Mid);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ db.Default.SaveQueues();
|
|
|
+ });
|
|
|
+
|
|
|
+ #endregion 移动任务处理
|
|
|
}
|
|
|
|
|
|
public override bool Select(Device dev)
|