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 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(); 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 /// /// 下发外形检测成功任务 /// /// public void SendCheckShapeingOkTask(List tasks) { FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new(); try { Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("未找到四向车任务下发接口配置信息!请检查接口配置"); List rGVLocationInfos = new List(); 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(); 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); } } } }