|
@@ -13,6 +13,7 @@ using WCS.WorkEngineering.Extensions;
|
|
|
using WCS.WorkEngineering.Systems;
|
|
|
using WCS.WorkEngineering.WebApi.Models.WCS.Request;
|
|
|
using WCS.WorkEngineering.WebApi.Models.WCS.Response;
|
|
|
+using WCS.WorkEngineering.WebApi.Models.WMS.Response;
|
|
|
|
|
|
namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
{
|
|
@@ -29,9 +30,9 @@ namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
/// <param name="req"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpPost]
|
|
|
- public HandleTaskResponse HandleTask([FromBody] HandleTaskRequest req)
|
|
|
+ public SRes<HandleTaskResponse> HandleTask([FromBody] HandleTaskRequest req)
|
|
|
{
|
|
|
- var response = new HandleTaskResponse() { IsSuccess = false, Message = "失败" };
|
|
|
+ SRes<HandleTaskResponse> response = new SRes<HandleTaskResponse>() { ResCode = ResponseStatusCodeEnum.Sucess, ResDataList = new List<HandleTaskResponse>() };
|
|
|
|
|
|
//取消任务
|
|
|
if (req.Type == HandleTaskTypeEnum.取消任务)
|
|
@@ -50,21 +51,40 @@ namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
switch (task.Type)
|
|
|
{
|
|
|
case TaskType.SetPlate:
|
|
|
+ if (task.Status != Entity.TaskStatus.WaitingToExecute)
|
|
|
+ {
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"只能取消待执行状态组盘任务",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
break;
|
|
|
|
|
|
case TaskType.EnterDepot:
|
|
|
if (task.Status != Entity.TaskStatus.WaitingToExecute)
|
|
|
{
|
|
|
- response.IsSuccess = false;
|
|
|
- response.Message = $"取消任务失败,{res.ResMsg}";
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"只能取消待执行状态入库任务",
|
|
|
+ });
|
|
|
return;
|
|
|
}
|
|
|
break;
|
|
|
+
|
|
|
case TaskType.OutDepot:
|
|
|
if (task.Status != Entity.TaskStatus.WaitingToExecute)
|
|
|
{
|
|
|
- response.IsSuccess = false;
|
|
|
- response.Message = $"取消任务失败,{res.ResMsg}";
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"只能取消待执行状态出库任务",
|
|
|
+ });
|
|
|
return;
|
|
|
}
|
|
|
break;
|
|
@@ -75,47 +95,84 @@ namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
case TaskType.Delivery:
|
|
|
if (task.Status != Entity.TaskStatus.WaitingToExecute)
|
|
|
{
|
|
|
- response.IsSuccess = false;
|
|
|
- response.Message = $"取消任务失败,{res.ResMsg}";
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"只能取消待执行搬运任务",
|
|
|
+ });
|
|
|
return;
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
case TaskType.EmptyInit:
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
+ if (task.Status != Entity.TaskStatus.WaitingToExecute)
|
|
|
+ {
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"只能取消待执行状态空轮初始化任务",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
//取消任务
|
|
|
var cancelRes = WmsApi.CarryTaskInfo(new List<int>() { task.ID }, 106);
|
|
|
if (cancelRes.ResCode == Models.WMS.Response.ResponseStatusCodeEnum.Sucess)
|
|
|
{
|
|
|
+ //找到对应的AGV任务
|
|
|
+ var agv = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.ID == task.AgvTaskID).SplitTable(v => v.Take(2)).First();
|
|
|
+ if (agv != null)
|
|
|
+ {
|
|
|
+ agv.Status = AGVTaskStatus.Cancel;
|
|
|
+ agv.AgvStatus = AGVTaskStatus.Cancel;
|
|
|
+ db.Default.Updateable(agv).SplitTable().ExecuteCommand();
|
|
|
+ }
|
|
|
//更新任务状态
|
|
|
task.Status = Entity.TaskStatus.Cancel;
|
|
|
task.EditTime = DateTime.Now;
|
|
|
+ task.EditWho = req.User;
|
|
|
+ task.ManualRemarks = req.ManualRemarks;
|
|
|
task.AddWCS_TASK_DTL(db, "未知", "任务取消");
|
|
|
db.Default.Updateable(task).ExecuteCommand();
|
|
|
task.CompleteOrCancelTasks(db);
|
|
|
- response.IsSuccess = true;
|
|
|
- response.Message = "成功";
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = true,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"完成",
|
|
|
+ });
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- response.IsSuccess = false;
|
|
|
- response.Message = $"取消任务失败,{cancelRes.ResMsg}";
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"取消任务失败,{cancelRes.ResMsg}",
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- response.IsSuccess = false;
|
|
|
- response.Message = $"取消任务失败,{res.ResMsg}";
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"取消任务失败,{res.ResMsg}",
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- response.IsSuccess = false;
|
|
|
- response.Message = $"未找到对应任务{item}";
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"未找到对应任务{item}"
|
|
|
+ });
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -123,9 +180,159 @@ namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
// 完成任务
|
|
|
else if (req.Type == HandleTaskTypeEnum.完成任务)
|
|
|
{
|
|
|
- foreach (var item in req.TaskIds)
|
|
|
+ SqlSugarHelper.Do(db =>
|
|
|
{
|
|
|
- }
|
|
|
+ foreach (var item in req.TaskIds)
|
|
|
+ {
|
|
|
+ var task = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.ID == item).First();
|
|
|
+ if (task != null)
|
|
|
+ {
|
|
|
+ if (task.Type == TaskType.OutDepot && task.Floor == 1)
|
|
|
+ {
|
|
|
+ task.Status = Entity.TaskStatus.Finish;
|
|
|
+ task.EditWho = req.User;
|
|
|
+ task.ManualRemarks = req.ManualRemarks;
|
|
|
+ task.AddWCS_TASK_DTL(db, "未知", "手动完成任务");
|
|
|
+ task.CompleteOrCancelTasks(db);
|
|
|
+ db.Default.Updateable(task).ExecuteCommand();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"未实现当前任务的完成功能"
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"未找到对应任务{item}"
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (req.Type == HandleTaskTypeEnum.重新下发AGV任务)
|
|
|
+ {
|
|
|
+ SqlSugarHelper.Do(db =>
|
|
|
+ {
|
|
|
+ foreach (var item in req.TaskIds)
|
|
|
+ {
|
|
|
+ var task = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.ID == item).First();
|
|
|
+ if (task != null)
|
|
|
+ {
|
|
|
+ //只有WCS是AGV执行中 AGV是确认 才能从新下发
|
|
|
+ switch (task.Type)
|
|
|
+ {
|
|
|
+ case TaskType.SetPlate:
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"组盘任务无AGV执行流程",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+
|
|
|
+ case TaskType.EnterDepot:
|
|
|
+ switch (task.Floor)
|
|
|
+ {
|
|
|
+ case 1:
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 2:
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"二楼入库任务重新下发AGV未实现",
|
|
|
+ });
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case TaskType.OutDepot:
|
|
|
+ switch (task.Floor)
|
|
|
+ {
|
|
|
+ case 1:
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 2:
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"二楼出库任务重新下发AGV未实现",
|
|
|
+ });
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case TaskType.TransferDepot:
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"组盘任务无AGV执行流程",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+
|
|
|
+ case TaskType.Delivery:
|
|
|
+ switch (task.Floor)
|
|
|
+ {
|
|
|
+ case 1:
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 2:
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"二楼搬运任务重新下发AGV未实现",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case TaskType.EmptyInit:
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"空轮初始化无AGV执行流程",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ //找到对应的AGV任务
|
|
|
+ var agv = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.ID == task.AgvTaskID).SplitTable(v => v.Take(2)).First();
|
|
|
+ if (agv != null)
|
|
|
+ {
|
|
|
+ agv.Status = AGVTaskStatus.NewBuild;
|
|
|
+ agv.AgvStatus = AGVTaskStatus.NewBuild;
|
|
|
+ db.Default.Updateable(agv).SplitTable().ExecuteCommand();
|
|
|
+ }
|
|
|
+ task.Status = Entity.TaskStatus.WaitingToExecute;
|
|
|
+ task.AddWCS_TASK_DTL(db, "AGV", "重新下发AGV任务");
|
|
|
+ db.Default.Updateable(task).ExecuteCommand();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = task.ID,
|
|
|
+ Message = $"未找到对应任务{item}"
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
return response;
|