|
@@ -1,6 +1,7 @@
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
using Newtonsoft.Json;
|
|
|
using ServiceCenter;
|
|
|
+using ServiceCenter.Extensions;
|
|
|
using ServiceCenter.Redis;
|
|
|
using ServiceCenter.SqlSugars;
|
|
|
using System.Net.NetworkInformation;
|
|
@@ -44,156 +45,124 @@ namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
var task = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.ID == item).First();
|
|
|
if (task != null)
|
|
|
{
|
|
|
- SRes res = new SRes();
|
|
|
//验证wms是否能取消
|
|
|
- try
|
|
|
- {
|
|
|
- res = WmsApi.HandleTaskVerify(new List<int>() { task.ID }, 106);
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- response.ResDataList.Add(new HandleTaskResponse()
|
|
|
- {
|
|
|
- IsSuccess = false,
|
|
|
- TaskNo = item,
|
|
|
- Message = ex.Message,
|
|
|
- });
|
|
|
- return;
|
|
|
- }
|
|
|
- if (res.ResCode == Models.WMS.Response.ResponseStatusCodeEnum.Sucess)
|
|
|
- {
|
|
|
- switch (task.Type)
|
|
|
- {
|
|
|
- case TaskType.SetPlate:
|
|
|
- if (task.Status != Entity.TaskStatus.WaitingToExecute)
|
|
|
- {
|
|
|
- response.ResDataList.Add(new HandleTaskResponse()
|
|
|
- {
|
|
|
- IsSuccess = false,
|
|
|
- TaskNo = item,
|
|
|
- Message = $"只能取消待执行状态组盘任务",
|
|
|
- });
|
|
|
- return;
|
|
|
- }
|
|
|
- break;
|
|
|
+ SRes res = HandleTaskVerify(response, item);
|
|
|
+ if (res == null) return;
|
|
|
|
|
|
- case TaskType.EnterDepot:
|
|
|
- if (task.Status > Entity.TaskStatus.WaitingToExecute)
|
|
|
+ switch (task.Type)
|
|
|
+ {
|
|
|
+ case TaskType.SetPlate:
|
|
|
+ if (task.Status != Entity.TaskStatus.WaitingToExecute)
|
|
|
+ {
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
{
|
|
|
- response.ResDataList.Add(new HandleTaskResponse()
|
|
|
- {
|
|
|
- IsSuccess = false,
|
|
|
- TaskNo = item,
|
|
|
- Message = $"只能取消待执行状态入库任务",
|
|
|
- });
|
|
|
- return;
|
|
|
- }
|
|
|
- break;
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = item,
|
|
|
+ Message = $"只能取消待执行状态组盘任务",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ break;
|
|
|
|
|
|
- case TaskType.OutDepot:
|
|
|
- if (task.Status != Entity.TaskStatus.WaitingToExecute)
|
|
|
+ case TaskType.EnterDepot:
|
|
|
+ if (task.Status > Entity.TaskStatus.WaitingToExecute)
|
|
|
+ {
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
{
|
|
|
- response.ResDataList.Add(new HandleTaskResponse()
|
|
|
- {
|
|
|
- IsSuccess = false,
|
|
|
- TaskNo = item,
|
|
|
- Message = $"只能取消待执行状态出库任务",
|
|
|
- });
|
|
|
- return;
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case TaskType.TransferDepot:
|
|
|
- break;
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = item,
|
|
|
+ Message = $"只能取消待执行状态入库任务",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ break;
|
|
|
|
|
|
- case TaskType.Delivery:
|
|
|
- if (task.Status != Entity.TaskStatus.WaitingToExecute)
|
|
|
+ case TaskType.OutDepot:
|
|
|
+ if (task.Status != Entity.TaskStatus.WaitingToExecute)
|
|
|
+ {
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
{
|
|
|
- response.ResDataList.Add(new HandleTaskResponse()
|
|
|
- {
|
|
|
- IsSuccess = false,
|
|
|
- TaskNo = item,
|
|
|
- Message = $"只能取消待执行搬运任务",
|
|
|
- });
|
|
|
- return;
|
|
|
- }
|
|
|
- break;
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = item,
|
|
|
+ Message = $"只能取消待执行状态出库任务",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ break;
|
|
|
|
|
|
- case TaskType.EmptyInit:
|
|
|
- if (task.Status != Entity.TaskStatus.WaitingToExecute)
|
|
|
+ case TaskType.TransferDepot:
|
|
|
+ if (task.Status > Entity.TaskStatus.WaitingToExecute)
|
|
|
+ {
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
{
|
|
|
- response.ResDataList.Add(new HandleTaskResponse()
|
|
|
- {
|
|
|
- IsSuccess = false,
|
|
|
- TaskNo = item,
|
|
|
- Message = $"只能取消待执行状态空轮初始化任务",
|
|
|
- });
|
|
|
- return;
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = item,
|
|
|
+ Message = $"无法取消{task.Status.GetDescription()}的移库任务,只能取消新建/待执行的移库任务",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ break;
|
|
|
|
|
|
- SRes cancelRes = new SRes();
|
|
|
- //取消任务
|
|
|
- try
|
|
|
- {
|
|
|
- cancelRes = WmsApi.CarryTaskInfo(new List<int>() { task.ID }, 106);
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ case TaskType.Delivery:
|
|
|
+ if (task.Status != Entity.TaskStatus.WaitingToExecute)
|
|
|
{
|
|
|
- IsSuccess = false,
|
|
|
- TaskNo = item,
|
|
|
- Message = ex.Message,
|
|
|
- });
|
|
|
- return;
|
|
|
- }
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = item,
|
|
|
+ Message = $"只能取消待执行搬运任务",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ break;
|
|
|
|
|
|
- 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)
|
|
|
+ case TaskType.EmptyInit:
|
|
|
+ if (task.Status != Entity.TaskStatus.WaitingToExecute)
|
|
|
{
|
|
|
- agv.Status = AGVTaskStatus.Cancel;
|
|
|
- agv.AgvStatus = AGVTaskStatus.Cancel;
|
|
|
- db.Default.Updateable(agv).SplitTable().ExecuteCommand();
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = item,
|
|
|
+ Message = $"只能取消待执行状态空轮初始化任务",
|
|
|
+ });
|
|
|
+ return;
|
|
|
}
|
|
|
- //更新任务状态
|
|
|
- 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.ResDataList.Add(new HandleTaskResponse()
|
|
|
- {
|
|
|
- IsSuccess = true,
|
|
|
- TaskNo = item,
|
|
|
- Message = $"完成",
|
|
|
- });
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- response.ResDataList.Add(new HandleTaskResponse()
|
|
|
- {
|
|
|
- IsSuccess = false,
|
|
|
- TaskNo = item,
|
|
|
- Message = $"取消任务失败,{cancelRes.ResMsg}",
|
|
|
- });
|
|
|
- }
|
|
|
+ break;
|
|
|
}
|
|
|
- else
|
|
|
+
|
|
|
+ SRes cancelRes = CarryTaskInfo(response, item);
|
|
|
+ if (cancelRes == null) return;
|
|
|
+ //取消任务
|
|
|
+ try
|
|
|
+ {
|
|
|
+ cancelRes = WmsApi.CarryTaskInfo(new List<int>() { task.ID }, 106);
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
{
|
|
|
response.ResDataList.Add(new HandleTaskResponse()
|
|
|
{
|
|
|
IsSuccess = false,
|
|
|
TaskNo = item,
|
|
|
- Message = $"取消任务失败,{res.ResMsg}",
|
|
|
+ Message = ex.Message,
|
|
|
});
|
|
|
+ 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.Cancel;
|
|
|
+ agv.AgvStatus = AGVTaskStatus.Cancel;
|
|
|
+ db.Default.Updateable(agv).SplitTable().ExecuteCommand();
|
|
|
}
|
|
|
+ //更新任务状态
|
|
|
+ task.Status = Entity.TaskStatus.Cancel;
|
|
|
+ task.EedTime = DateTime.Now;
|
|
|
+ task.EditWho = req.User;
|
|
|
+ task.ManualRemarks = req.ManualRemarks;
|
|
|
+ task.AddWCS_TASK_DTL(db, "未知", "任务取消");
|
|
|
+ db.Default.Updateable(task).ExecuteCommand();
|
|
|
+ task.CompleteOrCancelTasks(db);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -219,101 +188,44 @@ namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
{
|
|
|
if (task.Type == TaskType.OutDepot)
|
|
|
{
|
|
|
- SRes res = new SRes();
|
|
|
- //验证wms是否能完成
|
|
|
- try
|
|
|
- {
|
|
|
- res = WmsApi.HandleTaskVerify(new List<int>() { task.ID }, 99);
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- response.ResDataList.Add(new HandleTaskResponse()
|
|
|
- {
|
|
|
- IsSuccess = false,
|
|
|
- TaskNo = item,
|
|
|
- Message = ex.Message,
|
|
|
- });
|
|
|
- return;
|
|
|
- }
|
|
|
- if (res.ResCode == Models.WMS.Response.ResponseStatusCodeEnum.Sucess)
|
|
|
- {
|
|
|
- switch (task.Type)
|
|
|
- {
|
|
|
- case TaskType.OutDepot:
|
|
|
- if (task.Status >= Entity.TaskStatus.Finish)
|
|
|
- {
|
|
|
- response.ResDataList.Add(new HandleTaskResponse()
|
|
|
- {
|
|
|
- IsSuccess = false,
|
|
|
- TaskNo = item,
|
|
|
- Message = $"只能完成未完成状态的任务",
|
|
|
- });
|
|
|
- return;
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
+ SRes res = HandleTaskVerify(response, item);
|
|
|
+ if (res == null) return;
|
|
|
|
|
|
- SRes finishRes = new SRes();
|
|
|
- //完成任务
|
|
|
- try
|
|
|
- {
|
|
|
- finishRes = WmsApi.CarryTaskInfo(new List<int>() { task.ID }, 99);
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- response.ResDataList.Add(new HandleTaskResponse()
|
|
|
- {
|
|
|
- IsSuccess = false,
|
|
|
- TaskNo = item,
|
|
|
- Message = ex.Message,
|
|
|
- });
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (finishRes.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)
|
|
|
+ switch (task.Type)
|
|
|
+ {
|
|
|
+ case TaskType.OutDepot:
|
|
|
+ if (task.Status >= Entity.TaskStatus.Finish)
|
|
|
{
|
|
|
- agv.Status = AGVTaskStatus.MissionCompleted;
|
|
|
- agv.AgvStatus = AGVTaskStatus.MissionCompleted;
|
|
|
- db.Default.Updateable(agv).SplitTable().ExecuteCommand();
|
|
|
+ response.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = item,
|
|
|
+ Message = $"只能完成未完成状态的任务",
|
|
|
+ });
|
|
|
+ return;
|
|
|
}
|
|
|
- //更新任务状态
|
|
|
- task.Status = Entity.TaskStatus.Finish;
|
|
|
- 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.ResDataList.Add(new HandleTaskResponse()
|
|
|
- {
|
|
|
- IsSuccess = true,
|
|
|
- TaskNo = item,
|
|
|
- Message = $"完成",
|
|
|
- });
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- response.ResDataList.Add(new HandleTaskResponse()
|
|
|
- {
|
|
|
- IsSuccess = false,
|
|
|
- TaskNo = item,
|
|
|
- Message = $"完成任务失败,{finishRes.ResMsg}",
|
|
|
- });
|
|
|
- }
|
|
|
+ break;
|
|
|
}
|
|
|
- else
|
|
|
+
|
|
|
+ SRes cancelRes = CarryTaskInfo(response, item);
|
|
|
+ if (cancelRes == null) return;
|
|
|
+
|
|
|
+ //找到对应的AGV任务
|
|
|
+ var agv = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.ID == task.AgvTaskID).SplitTable(v => v.Take(2)).First();
|
|
|
+ if (agv != null)
|
|
|
{
|
|
|
- response.ResDataList.Add(new HandleTaskResponse()
|
|
|
- {
|
|
|
- IsSuccess = false,
|
|
|
- TaskNo = item,
|
|
|
- Message = $"完成任务失败"
|
|
|
- });
|
|
|
+ agv.Status = AGVTaskStatus.MissionCompleted;
|
|
|
+ agv.AgvStatus = AGVTaskStatus.MissionCompleted;
|
|
|
+ db.Default.Updateable(agv).SplitTable().ExecuteCommand();
|
|
|
}
|
|
|
+ //更新任务状态
|
|
|
+ task.Status = Entity.TaskStatus.Finish;
|
|
|
+ task.EedTime = DateTime.Now;
|
|
|
+ task.EditWho = req.User;
|
|
|
+ task.ManualRemarks = req.ManualRemarks;
|
|
|
+ task.AddWCS_TASK_DTL(db, "未知", "任务完成");
|
|
|
+ db.Default.Updateable(task).ExecuteCommand();
|
|
|
+ task.CompleteOrCancelTasks(db);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -326,7 +238,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- });
|
|
|
+ });
|
|
|
}
|
|
|
else if (req.Type == HandleTaskTypeEnum.重新下发AGV任务)
|
|
|
{
|
|
@@ -434,6 +346,56 @@ namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// WMS完成或取消任务验证
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sRes"></param>
|
|
|
+ /// <param name="id"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public SRes? HandleTaskVerify(SRes<HandleTaskResponse> sRes, int id)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var res = WmsApi.HandleTaskVerify(new List<int>() { id }, 106);
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ sRes.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = id,
|
|
|
+ Message = ex.Message,
|
|
|
+ });
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// WMS完成或取消任务执行
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sRes"></param>
|
|
|
+ /// <param name="id"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public SRes? CarryTaskInfo(SRes<HandleTaskResponse> sRes, int id)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var res = WmsApi.CarryTaskInfo(new List<int>() { id }, 106);
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ sRes.ResDataList.Add(new HandleTaskResponse()
|
|
|
+ {
|
|
|
+ IsSuccess = false,
|
|
|
+ TaskNo = id,
|
|
|
+ Message = ex.Message,
|
|
|
+ });
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 设备信息写入接口
|
|
|
/// </summary>
|