|
@@ -1,13 +1,11 @@
|
|
|
-using System;
|
|
|
-using System.Collections.Generic;
|
|
|
+using ServiceCenter.SqlSugars;
|
|
|
using System.ComponentModel;
|
|
|
-using System.Linq;
|
|
|
-using System.Text;
|
|
|
-using System.Threading.Tasks;
|
|
|
using WCS.Core;
|
|
|
-using WCS.WorkEngineering.WebApi.Models.AGV.Request;
|
|
|
-using WCS.WorkEngineering.WebApi.Models.AGV.Response;
|
|
|
+using WCS.Entity;
|
|
|
+using WCS.WorkEngineering.Extensions;
|
|
|
+using WCS.WorkEngineering.WebApi.Controllers;
|
|
|
using WCS.WorkEngineering.Worlds;
|
|
|
+using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
|
|
|
|
|
|
namespace WCS.WorkEngineering.Systems
|
|
|
{
|
|
@@ -16,33 +14,74 @@ namespace WCS.WorkEngineering.Systems
|
|
|
/// </summary>
|
|
|
[BelongTo(typeof(MainWorld))]
|
|
|
[Description("Agv交互系统")]
|
|
|
- public class AgvSystems : ServiceSystem<AgvCallbackRequest, AgvCallbackResponse>
|
|
|
+ public class AgvSystems : DeviceSystem<Station>
|
|
|
{
|
|
|
- protected override AgvCallbackResponse Do(AgvCallbackRequest reqDto)
|
|
|
+ protected override bool ParallelDo => true;
|
|
|
+
|
|
|
+ protected override bool SaveLogsToFile => true;
|
|
|
+
|
|
|
+ public override void Do(Station obj)
|
|
|
{
|
|
|
- switch (reqDto.method)
|
|
|
+ if (obj.Entity.HasFlag(DeviceFlags.出库))
|
|
|
{
|
|
|
- case "申请":
|
|
|
- break;
|
|
|
+ SqlSugarHelper.Do(db =>
|
|
|
+ {
|
|
|
+ //获取所有未结束的AGV任务
|
|
|
+ var agvTaks = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.Status <= AGVTaskStatus.MissionCompleted && v.Position == obj.Entity.Code).SplitTable(tabs => tabs.Take(3)).ToList();
|
|
|
|
|
|
- case "申请放货":
|
|
|
- break;
|
|
|
+ foreach (var agv in agvTaks)
|
|
|
+ {
|
|
|
+ switch (agv.Status)
|
|
|
+ {
|
|
|
+ case AGVTaskStatus.RequestOrPermission2:
|
|
|
+ //调继续执行任务接口
|
|
|
+ var res = AgvApi.ContinueTask(agv.AgvID, "");
|
|
|
+ agv.Status = AGVTaskStatus.Complete2;
|
|
|
|
|
|
- case "申请取货":
|
|
|
- break;
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
- case "取放完成":
|
|
|
- break;
|
|
|
+ db.Default.Updateable(agv).AddQueue();
|
|
|
+ }
|
|
|
|
|
|
- default:
|
|
|
- break;
|
|
|
+ db.Default.SaveQueues();
|
|
|
+ });
|
|
|
}
|
|
|
+ else if (obj.Entity.HasFlag(DeviceFlags.入库))
|
|
|
+ {
|
|
|
+ SqlSugarHelper.Do(db =>
|
|
|
+ {
|
|
|
+ //获取所有未结束的AGV任务
|
|
|
+ var agvTaks = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.Status <= AGVTaskStatus.MissionCompleted && v.Position == obj.Entity.Code).SplitTable(tabs => tabs.Take(3)).ToList();
|
|
|
+
|
|
|
+ foreach (var agv in agvTaks)
|
|
|
+ {
|
|
|
+ switch (agv.Status)
|
|
|
+ {
|
|
|
+ case AGVTaskStatus.RequestOrPermission1:
|
|
|
+ //调继续执行任务接口
|
|
|
+ AgvApi.ContinueTask(agv.AgvID, "");
|
|
|
+ agv.Status = AGVTaskStatus.Complete1;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case AGVTaskStatus.RequestOrPermission2:
|
|
|
+ //调继续执行任务接口
|
|
|
+ AgvApi.ContinueTask(agv.AgvID, "");
|
|
|
+ agv.Status = AGVTaskStatus.Complete2;
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
- var res = new AgvCallbackResponse() { code = "0", message = "成功" };
|
|
|
+ db.Default.Updateable(agv).AddQueue();
|
|
|
+ }
|
|
|
|
|
|
- return res;
|
|
|
+ db.Default.SaveQueues();
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
-
|
|
|
+ public override bool Select(Device dev)
|
|
|
+ {
|
|
|
+ return dev.HasFlag(DeviceFlags.巷道口);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|