1
dengjunjie
2026-03-10 aa75f3cbdcfce80d7ebd3c4f2bcfeea850949209
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs
@@ -20,13 +20,75 @@
{
    public partial class TaskJob
    {
        #region ä¸‹å‘四向车入库任务
        /// <summary>
        /// ä¸‹å‘四向车新建入库任务
        /// </summary>
        /// <param name="tasks"></param>
        public void SendRGVInTask(List<Dt_Task> tasks)
        public void SendRGVNewInTask(List<Dt_Task> tasks)
        {
            FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new();
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("未找到四向车任务下发接口配置信息!请检查接口配置");
                int i = 0;
                foreach (var task in tasks)
                {
                    i++;
                    fOURBOTnewMovePodTask = new()
                    {
                        priority = task.Grade,
                        podID = task.PalletCode,
                        desExt = new
                        {
                            unload = 0//是否放下容器,0否1是
                        },
                        desStationCodes = task.SourceAddress,
                        desType = 5
                    };
                    fOURBOTnewMovePodTask.requestID += i;
                    try
                    {
                        string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize());
                        FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                        content.Data = fOURBOTReturn;
                        if (fOURBOTReturn.returnCode != 0) throw new Exception(fOURBOTReturn.returnUserMsg);
                        string dataJson = fOURBOTReturn.data.ToString();
                        FOURBOTnewMovePodTaskResponseData? fOURBO = JsonConvert.DeserializeObject<FOURBOTnewMovePodTaskResponseData>(dataJson);
                        if (fOURBO == null || fOURBO.taskID == 0)
                        {
                            throw new Exception($"未获取到四向车返回的任务ID,返回数据:{response}");
                        }
                        //FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("未获取到四向车返回的任务ID");
                        task.RGVTaskId = fOURBO.taskID;
                        task.ExceptionMessage = "";
                        task.TaskState = (int)TaskStatusEnum.Execut;
                    }
                    catch (Exception ex)
                    {
                        task.ExceptionMessage = ex.Message;
                    }
                }
                _taskService.UpdateData(tasks);
                content.OK();
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            finally
            {
                _trackloginfoService.AddTrackLog(fOURBOTnewMovePodTask, content, "下发四向车新建入库任务", "", "");
            }
        }
        #region
        /// <summary>
        /// ä¸‹å‘四向车外形检测任务
        /// </summary>
        /// <param name="tasks"></param>
        public void SendRGVCheckShapeTask(List<Dt_Task> tasks)
        {
            FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new();
            WebResponseContent content = new WebResponseContent();
@@ -62,7 +124,7 @@
                        }
                        //FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("未获取到四向车返回的任务ID");
                        item.RGVTaskId = fOURBO.taskID;
                        item.TaskState = (int)TaskStatusEnum.Execut;
                        item.TaskState = (int)TaskStatusEnum.TakeFinish;
                    }
                }
                _taskService.UpdateData(tasks);
@@ -91,7 +153,7 @@
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(GetBlockPodContentDto)) ?? throw new Exception("未找到四向车任务下发接口配置信息!请检查接口配置");
                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(GetBlockPodContentDto)) ?? throw new Exception("未找到批量获取阻碍托盘关系接口配置信息!请检查接口配置");
                List<Dt_Task> dt_Tasks = new List<Dt_Task>();
                var PalletCodes = tasks.Select(x => x.PalletCode).ToList();
                //GetBlockPodContentDto content = new GetBlockPodContentDto();
@@ -125,7 +187,7 @@
                        foreach (var item in Result.outPods)
                        {
                            var task = tasks.First(x => x.PalletCode == item.outPod);
                            if (item.blockPods.Count > 0)
                            if (item.blockPods != null && item.blockPods.Count > 0)
                            {
                                task.TaskState = (int)TaskStatusEnum.RGV_WaitMoveToExecute;
                                dt_Tasks.Add(task);
@@ -175,7 +237,7 @@
                    try
                    {
                        #region èŽ·å–è´§ä½
                        var rGVLocationInfo = _rGVLocationInfoService.GetFreeLocationInfo(item.Roadway);
                        var rGVLocationInfo = _rGVLocationInfoService.GetInFreeLocationInfo(item.Roadway);
                        if (rGVLocationInfo == null)
                        {
                            item.ExceptionMessage = $"未找到终点库区【{item.Roadway}】可用空货位!";
@@ -363,7 +425,8 @@
                    item.NextAddress = stationManger.StationCode;
                    fOURBOTnewMovePodTask.priority = item.Grade;
                    fOURBOTnewMovePodTask.podID = item.PalletCode;
                    fOURBOTnewMovePodTask.destination = item.NextAddress;
                    //fOURBOTnewMovePodTask.desNodeID = item.NextAddress;
                    fOURBOTnewMovePodTask.desStationCodes = item.NextAddress;
                    fOURBOTnewMovePodTask.desExt = new
                    {
                        unload = 1//是否放下容器,0否1是
@@ -415,7 +478,7 @@
                if (FreeLocationInfos.Count < 1) throw new Exception($"成品库创建移库任务无可用空货位");
                foreach (var item in rGVLocationInfos)
                {
                    Dt_RGVLocationInfo? rGVLocationInfo = FreeLocationInfos.Where(x => x.Layer == item.Layer).OrderBy(n => Math.Abs(n.Row - item.Row)).FirstOrDefault();
                    Dt_RGVLocationInfo? rGVLocationInfo = FreeLocationInfos.Where(x => x.Layer == item.Layer && x.RoadwayNo != item.RoadwayNo).OrderBy(n => Math.Abs(n.Row - item.Row)).FirstOrDefault();
                    rGVLocationInfo ??= FreeLocationInfos.First();
                    Dt_Task dt_Task = new()
                    {
@@ -455,21 +518,21 @@
        {
            WebResponseContent content = new WebResponseContent();
            List<Dt_Task> dt_Tasks = new List<Dt_Task>();
            List<MoveBlockPodContentDto> moveBlocks = new List<MoveBlockPodContentDto>();
            MoveBlockPodContentDto moveBlock = new MoveBlockPodContentDto();
            try
            {
                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(MoveBlockPodContentDto)) ?? throw new Exception("未找到四向车批量搬运阻碍托任务接口配置信息!请检查接口配置");
                foreach (var item in tasks)
                {
                    MoveBlockPodContentDto moveBlock = new MoveBlockPodContentDto()
                    MoveBlockPodContentDtoInfo moveBlockInfo = new MoveBlockPodContentDtoInfo()
                    {
                        podID = item.PalletCode,
                        des = item.TargetAddress
                    };
                    moveBlocks.Add(moveBlock);
                    moveBlock.content.Add(moveBlockInfo);
                }
                string response = HttpHelper.Post(apiInfo.ApiAddress, moveBlocks.Serialize());
                string response = HttpHelper.Post(apiInfo.ApiAddress, moveBlock.Serialize());
                FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                content.Data = fOURBOTReturn;
                if (fOURBOTReturn.returnCode == 0)
@@ -501,7 +564,7 @@
            }
            finally
            {
                _trackloginfoService.AddTrackLog(moveBlocks, content, "下发四向车批量移库任务", "", "");
                _trackloginfoService.AddTrackLog(moveBlock, content, "下发四向车批量移库任务", "", "");
            }
        }
        #endregion
@@ -536,24 +599,28 @@
            try
            {
                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("未找到四向车任务下发接口配置信息!请检查接口配置");
                var i = 0;
                foreach (var item in tasks)
                {
                    i++;
                    var stationManger = _stationMangerService.GetOutStationInfo(item.TargetAddress);
                    item.NextAddress = stationManger.StationCode;
                    if (stationManger.IsOccupied != LocationStatusEnum.Free.ObjToInt()) continue;
                    #region ä¸‹å‘出库任务
                    fOURBOTnewMovePodTask.priority = item.Grade;
                    fOURBOTnewMovePodTask.podID = item.PalletCode;
                    fOURBOTnewMovePodTask.destination = item.NextAddress;
                    //fOURBOTnewMovePodTask.desNodeID = item.NextAddress;
                    fOURBOTnewMovePodTask.desStationCodes = item.NextAddress;
                    fOURBOTnewMovePodTask.desExt = new
                    {
                        unload = 0//是否放下容器,0否1是
                        unload = 1//是否放下容器,0否1是
                    };
                    fOURBOTnewMovePodTask.taskExt = new
                    {
                        autoToRest = 1
                    };
                    fOURBOTnewMovePodTask.desType = 5;
                    fOURBOTnewMovePodTask.requestID = DateTime.Now.ToString("yyyyMMddHHmmss") + i;
                    string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize());
                    FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                    content.Data = fOURBOTReturn;