dengjunjie
2026-02-27 b6a82cb656a6cd045d772274ae927c8ca2c22b06
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs
@@ -50,8 +50,33 @@
                var outtasks = tasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPOutbound).ToList();
                foreach (var item in outtasks)
                {
                    ///判断是否需要移库
                    ///判断是否需要移库,出库站台是否空闲
                    if (IsNoMoveTask(item) && StationIsFree(item.TargetAddress))
                    {
                        #region ä¸‹å‘出库任务
                        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.Execut;
                        }
                        #endregion
                    }
                    else
                    {
                        item.TaskState = (int)TaskStatusEnum.RGV_WaitMoveToExecute;
                    }
                }
                _taskService.UpdateData(outtasks);
                #endregion
            }
            catch (Exception ex)
@@ -60,6 +85,8 @@
            }
        }
        #endregion
        #region ä¸‹å‘外形检测成功任务
        /// <summary>
        /// ä¸‹å‘外形检测成功任务
        /// </summary>
@@ -71,6 +98,7 @@
            {
                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("未找到四向车任务下发接口配置信息!请检查接口配置");
                List<Dt_RGVLocationInfo> rGVLocationInfos = new List<Dt_RGVLocationInfo>();
                List<Dt_StationManger> stationMangers = new List<Dt_StationManger>();
                foreach (var item in tasks)
                {
                    #region èŽ·å–è´§ä½
@@ -100,12 +128,18 @@
                            item.TaskState = (int)TaskStatusEnum.Puting;
                            rGVLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
                            rGVLocationInfos.Add(rGVLocationInfo);
                            #region é‡Šæ”¾å…¥åº“站台
                            Dt_StationManger stationManger = _stationMangerService.GetInStationInfo(item.SourceAddress);
                            stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt();
                            stationMangers.Add(stationManger);
                            #endregion
                        }
                    }
                }
                _taskService.Db.Ado.BeginTran();
                _taskService.UpdateData(tasks);
                _rGVLocationInfoService.UpdateData(rGVLocationInfos);
                _stationMangerService.UpdateData(stationMangers);
                _taskService.Db.Ado.CommitTran();
            }
            catch (Exception ex)
@@ -113,5 +147,105 @@
                WriteError(nameof(TaskJob), ex.Message, ex);
            }
        }
        #endregion
        #region ä¸‹å‘外形检测失败任务
        public void SendCheckShapeingNGTask(List<Dt_Task> tasks)
        {
            FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new();
            try
            {
                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("未找到四向车任务下发接口配置信息!请检查接口配置");
                foreach (var item in tasks)
                {
                    Dt_StationManger stationManger = _stationMangerService.GetInStationInfo(item.SourceAddress);
                    item.CurrentAddress = item.NextAddress;
                    item.NextAddress = stationManger.RGVStationCode;
                    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;
                    }
                }
                _taskService.UpdateData(tasks);
            }
            catch (Exception ex)
            {
                WriteError(nameof(TaskJob), ex.Message, ex);
            }
        }
        #endregion
        #region åˆ¤æ–­æ˜¯å¦éœ€è¦ç§»åº“
        public static bool IsNoMoveTask(Dt_Task task)
        {
            var isNoMove = true;
            try
            {
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return isNoMove;
        }
        #endregion
        #region åˆ¤æ–­å‡ºåº“口是否空闲
        public bool StationIsFree(string StationCode)
        {
            Dt_StationManger stationManger = _stationMangerService.GetOutStationInfo(StationCode);
            return stationManger.IsOccupied == LocationStatusEnum.Free.ObjToInt();
        }
        #endregion
        #region ç§»åº“后下发出库任务
        public void SendMoveToExecuteTask(List<Dt_Task> tasks)
        {
            try
            {
                FOURBOTnewMovePodTask fOURBOTnewMovePodTask = new();
                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(FOURBOTnewMovePodTask)) ?? throw new Exception("未找到四向车任务下发接口配置信息!请检查接口配置");
                foreach (var item in tasks)
                {
                    if (_taskService.Repository.QueryData(x => x.Roadway == item.Roadway && x.TaskType == (int)TaskTypeEnum.CPMoveInventory).Any()) continue;
                    if (!StationIsFree(item.TargetAddress)) continue;
                    #region ä¸‹å‘出库任务
                    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;
                    }
                    #endregion
                }
                _taskService.UpdateData(tasks);
            }
            catch (Exception ex)
            {
                WriteError(nameof(TaskJob), ex.Message, ex);
            }
        }
        #endregion
    }
}