using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEAWCS_Common.LocationEnum;
|
using WIDESEAWCS_Common.TaskEnum;
|
using WIDESEAWCS_Core.Helper;
|
using WIDESEAWCS_DTO;
|
using WIDESEAWCS_DTO.RGV.FOURBOT;
|
using WIDESEAWCS_DTO.WMS;
|
using WIDESEAWCS_Model.Models;
|
|
namespace WIDESEAWCS_Tasks
|
{
|
public partial class TaskJob
|
{
|
|
#region 下发四向车任务
|
public void SendRGVTask(List<Dt_Task> tasks)
|
{
|
FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new();
|
try
|
{
|
Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("未找到四向车任务下发接口配置信息!请检查接口配置");
|
#region 入库
|
var intasks = tasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPInbound).ToList();
|
foreach (var item in intasks)
|
{
|
fOURBOTnewMovePodTask.priority = item.Grade;
|
fOURBOTnewMovePodTask.podID = item.PalletCode;
|
fOURBOTnewMovePodTask.destination = item.NextAddress;
|
fOURBOTnewMovePodTask.desExt = new
|
{
|
unload = 0//是否放下容器,0否1是
|
};
|
fOURBOTnewMovePodTask.desType = 2;
|
string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize());
|
FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
|
if (fOURBOTReturn.returnCode == 0)
|
{
|
item.RGVTaskId = fOURBOTReturn.data.taskID;
|
item.TaskState = (int)TaskStatusEnum.Execut;
|
}
|
}
|
_taskService.UpdateData(intasks);
|
#endregion
|
|
#region 出库
|
var outtasks = tasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPOutbound).ToList();
|
foreach (var item in outtasks)
|
{
|
///判断是否需要移库
|
}
|
#endregion
|
}
|
catch (Exception ex)
|
{
|
WriteError(nameof(TaskJob), ex.Message, ex);
|
}
|
}
|
#endregion
|
/// <summary>
|
/// 下发外形检测成功任务
|
/// </summary>
|
/// <param name="tasks"></param>
|
public void SendCheckShapeingOkTask(List<Dt_Task> tasks)
|
{
|
FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new();
|
try
|
{
|
Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("未找到四向车任务下发接口配置信息!请检查接口配置");
|
List<Dt_RGVLocationInfo> rGVLocationInfos = new List<Dt_RGVLocationInfo>();
|
foreach (var item in tasks)
|
{
|
#region 获取货位
|
var rGVLocationInfo = _rGVLocationInfoService.GetFreeLocationInfo(item.Roadway);
|
if (rGVLocationInfo == null)
|
{
|
item.ExceptionMessage = $"未找到终点库区【{item.Roadway}】可用空货位!";
|
}
|
#endregion
|
else
|
{
|
item.CurrentAddress = item.NextAddress;
|
item.NextAddress = rGVLocationInfo.LocationCode;
|
fOURBOTnewMovePodTask.priority = item.Grade;
|
fOURBOTnewMovePodTask.podID = item.PalletCode;
|
fOURBOTnewMovePodTask.destination = item.NextAddress;
|
fOURBOTnewMovePodTask.desExt = new
|
{
|
unload = 1//是否放下容器,0否1是
|
};
|
fOURBOTnewMovePodTask.desType = 2;
|
string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize());
|
FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
|
if (fOURBOTReturn.returnCode == 0)
|
{
|
item.RGVTaskId = fOURBOTReturn.data.taskID;
|
item.TaskState = (int)TaskStatusEnum.Puting;
|
rGVLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
|
rGVLocationInfos.Add(rGVLocationInfo);
|
}
|
}
|
}
|
_taskService.Db.Ado.BeginTran();
|
_taskService.UpdateData(tasks);
|
_rGVLocationInfoService.UpdateData(rGVLocationInfos);
|
_taskService.Db.Ado.CommitTran();
|
}
|
catch (Exception ex)
|
{
|
WriteError(nameof(TaskJob), ex.Message, ex);
|
}
|
}
|
}
|
}
|