using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEAWCS_Common.TaskEnum;
|
using WIDESEAWCS_Core.Helper;
|
using WIDESEAWCS_Core;
|
using WIDESEAWCS_DTO.TaskInfo;
|
using WIDESEAWCS_DTO.WMSInfo;
|
using WIDESEAWCS_Model.Models;
|
using WIDESEAWCS_QuartzJob.Models;
|
|
namespace WIDESEAWCS_TaskInfoService
|
{
|
public partial class TaskService
|
{
|
|
/// <summary>
|
/// 堆垛机任务完成
|
/// </summary>
|
/// <param name="taskNum">任务编号</param>
|
/// <returns>返回处理结果</returns>
|
public WebResponseContent StackCraneTaskCompleted(int taskNum)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
|
if (task == null) return WebResponseContent.Instance.Error($"未找到该任务信息,任务号:【{taskNum}】");
|
|
if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
|
{
|
List<Dt_Router> routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
|
if (!routers.Any()) return WebResponseContent.Instance.Error($"未找到设备路由信息");
|
|
int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
|
task.TaskState = nextStatus;
|
task.CurrentAddress = task.NextAddress;
|
task.NextAddress = routers.FirstOrDefault().ChildPosi;
|
task.ModifyDate = DateTime.Now;
|
task.Modifier = "System";
|
BaseDal.UpdateData(task);
|
|
_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机出库完成");
|
//todo 同步到WMS
|
|
//暂不考虑多个出库口
|
}
|
else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
|
{
|
//todo
|
int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
|
task.TaskState = nextStatus;
|
task.ModifyDate = DateTime.Now;
|
task.Modifier = "System";
|
|
#region 向WMS反馈堆垛机任务完成
|
WMSTaskDTO WMStask = _mapper.Map<WMSTaskDTO>(task);
|
var ResultData = HttpHelper.PostAsync(WMSInterfaceAddress.UpdateTaskStatus, WMStask.ToJson(), headers: new Dictionary<string, string>());
|
if (ResultData.Result == null) throw new Exception($"任务状态同步到WMS失败!任务号:{task.TaskNum}");
|
content = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result);
|
if (content.Status)
|
{
|
//isDel = content.Status;
|
BaseDal.UpdateData(task);
|
_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机入库完成");
|
}
|
#endregion
|
#region MyRegion
|
|
|
|
//WMSTaskDTO taskDTO = new WMSTaskDTO()
|
//{
|
// TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
|
// Grade = 1,
|
// PalletCode = task.PalletCode + "S",
|
// RoadWay = "SC01",
|
// SourceAddress = task.TargetAddress,
|
// TargetAddress = "CLOutAreaA",
|
// TaskState = (int)TaskOutStatusEnum.OutNew,
|
// Id = 0,
|
// TaskType = (int)TaskOutboundTypeEnum.Outbound
|
//};
|
|
//content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
|
#endregion
|
}
|
else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
|
{
|
//todo 调用WMS移库完成
|
}
|
else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OtherGroup && task.TaskState == (int)TaskCarStatusEnum.SC_CarExecuting)
|
{
|
int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskCarStatusEnum>();
|
task.TaskState = nextStatus;
|
task.ModifyDate = DateTime.Now;
|
task.Modifier = "System";
|
|
task.CurrentAddress = task.NextAddress;
|
task.NextAddress = string.Empty;
|
BaseDal.UpdateData(task);
|
|
_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机移车完成");
|
}
|
else
|
{
|
throw new Exception($"任务类型错误,未找到该任务类型,任务号:【{taskNum}】,任务类型:【{task.TaskType}】");
|
}
|
|
content = WebResponseContent.Instance.OK();
|
}
|
catch (Exception ex)
|
{
|
content = WebResponseContent.Instance.Error($"任务完成异常,任务号:【{taskNum}】");
|
}
|
return content;
|
}
|
}
|
}
|