dengjunjie
2026-02-27 4492293132bb8f2020d89730dc894426ed7d5eb9
优化四向车任务
已修改11个文件
280 ■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/LocationStatusEnum.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTReturn.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/GetBlockPodContentDto.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/MoveBlockPodContentDto.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRGVLocationInfoService.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs 205 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs
@@ -27,6 +27,11 @@
        };
        public IRepository<Dt_RGVLocationInfo> Repository => BaseDal;
        public List<Dt_RGVLocationInfo> GetFreeLocationInfos()
        {
            return BaseDal.QueryData(x => x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt(), _emptyAssignOrderBy);
        }
        public Dt_RGVLocationInfo GetFreeLocationInfo(string AreaCode)
        {
            Dt_RGVLocationInfo? rGVLocationInfo = BaseDal.QueryFirst(x => x.WarehouseId.ToString() == AreaCode && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt(), _emptyAssignOrderBy);
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/LocationStatusEnum.cs
@@ -36,6 +36,12 @@
        OutLock = 20,
        /// <summary>
        /// ç§»åº“锁定
        /// </summary>
        [Description("移库锁定")]
        MoveLock = 30,
        /// <summary>
        /// æœ‰è´§
        /// </summary>
        [Description("有货")]
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs
@@ -130,6 +130,22 @@
        /// </summary>
        [Description("待移库后执行")]
        RGV_WaitMoveToExecute,
        /// <summary>
        /// å¾…下发,满足出库条件等待下发的任务
        /// </summary>
        [Description("待下发")]
        RGV_WaitSend,
        /// <summary>
        /// æ–°å»ºç§»åº“任务
        /// </summary>
        [Description("新建移库任务")]
        RGV_NewMoveTask,
        /// <summary>
        /// ç§»åº“任务已下发
        /// </summary>
        [Description("移库任务已下发")]
        RGV_MoveTaskSend,
        #endregion
    }
    public enum TaskInStatusEnum
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTReturn.cs
@@ -29,7 +29,7 @@
        /// <summary>
        /// å“åº”数据
        /// </summary>
        public FOURBOTnewMovePodTaskResponseData data { get; set; }
        public object data { get; set; }
    }
    /// <summary>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/GetBlockPodContentDto.cs
@@ -14,16 +14,19 @@
        /// <summary>
        /// å€™é€‰æ‰˜ç›˜å·åˆ—表
        /// </summary>
        public List<string> candidatePodIDs { get; set; } = new List<string>();
        public List<string> CandidatePodIDs { get; set; } = new List<string>();
        /// <summary>
        /// éœ€è¦å‡ºåº“的数量
        /// 0-表示全部出
        /// éž0-表示从podIDs中取num个阻碍最少的托盘
        /// </summary>
        public int num { get; set; }
        public int Num { get; set; } = 0;
    }
    public class ReturnBlockPodResultDto
    {
        public List<GetBlockPodResultDto> Result { get; set; }
    }
    /// <summary>
    /// é˜»ç¢æ‰˜ç›˜æŸ¥è¯¢ç»“æžœDTO
    /// </summary>
@@ -37,7 +40,7 @@
        /// <summary>
        /// å¯ä»¥å‡ºçš„æ‰˜ç›˜åŠé˜»ç¢æ‰˜ç›˜åˆ—表
        /// </summary>
        public List<object> outPods { get; set; } = new List<object>();
        public List<OutPodInfoDto> outPods { get; set; } = new List<OutPodInfoDto>();
        /// <summary>
        /// ä¸å¯ç§»åŠ¨æ‰˜ç›˜åˆ—è¡¨
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/MoveBlockPodContentDto.cs
@@ -45,7 +45,7 @@
        /// <summary>
        /// æˆåŠŸä»»åŠ¡åˆ—è¡¨
        /// </summary>
        public List<object> succList { get; set; } = new List<object>();
        public List<MoveBlockPodResultDto> succList { get; set; } = new List<MoveBlockPodResultDto>();
    }
    /// <summary>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRGVLocationInfoService.cs
@@ -19,5 +19,10 @@
        /// <param name="containerType"></param>
        /// <returns></returns>
        Dt_RGVLocationInfo GetFreeLocationInfo(string AreaCode);
        /// <summary>
        /// èŽ·å–æ‰€æœ‰ç©ºè´§ä½
        /// </summary>
        /// <returns></returns>
        List<Dt_RGVLocationInfo> GetFreeLocationInfos();
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs
@@ -50,7 +50,7 @@
        /// </summary>
        [ImporterHeader(Name = "WMS任务号")]
        [ExporterHeader(DisplayName = "WMS任务号")]
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "WMS任务号")]
        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "WMS任务号")]
        public string WMSTaskNum { get; set; }
        /// <summary>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.LocationEnum;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core.Helper;
@@ -16,16 +17,18 @@
    public partial class TaskJob
    {
        #region ä¸‹å‘四向车任务
        public void SendRGVTask(List<Dt_Task> tasks)
        #region ä¸‹å‘四向车入库任务
        /// <summary>
        /// ä¸‹å‘四向车新建入库任务
        /// </summary>
        /// <param name="tasks"></param>
        public void SendRGVInTask(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)
                foreach (var item in tasks)
                {
                    fOURBOTnewMovePodTask.priority = item.Grade;
                    fOURBOTnewMovePodTask.podID = item.PalletCode;
@@ -39,45 +42,59 @@
                    FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                    if (fOURBOTReturn.returnCode == 0)
                    {
                        item.RGVTaskId = fOURBOTReturn.data.taskID;
                        FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("未获取到四向车返回的任务ID");
                        item.RGVTaskId = fOURBO.taskID;
                        item.TaskState = (int)TaskStatusEnum.Execut;
                    }
                }
                _taskService.UpdateData(intasks);
                #endregion
                _taskService.UpdateData(tasks);
            }
            catch (Exception ex)
            {
                WriteError(nameof(TaskJob), ex.Message, ex);
            }
        }
        #endregion
                #region å‡ºåº“
                var outtasks = tasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPOutbound).ToList();
                foreach (var item in outtasks)
        #region å¤„理出库任务是否需要移库
        /// <summary>
        /// å¤„理出库任务是否需要移库
        /// </summary>
        /// <param name="tasks"></param>
        public void IsMoveTask(List<Dt_Task> tasks)
        {
            try
            {
                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();
                content.CandidatePodIDs = tasks.Select(x => x.PalletCode).ToList();
                string response = HttpHelper.Post(apiInfo.ApiAddress, content.Serialize());
                FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                if (fOURBOTReturn.returnCode == 0)
                {
                    ///判断是否需要移库,出库站台是否空闲
                    if (IsNoMoveTask(item) && StationIsFree(item.TargetAddress))
                    ReturnBlockPodResultDto getBlockPod = fOURBOTReturn.data as ReturnBlockPodResultDto ?? throw new Exception("未获取到阻碍托盘关系数据");
                    foreach (var Result in getBlockPod.Result)
                    {
                        #region ä¸‹å‘出库任务
                        fOURBOTnewMovePodTask.priority = item.Grade;
                        fOURBOTnewMovePodTask.podID = item.PalletCode;
                        fOURBOTnewMovePodTask.destination = item.NextAddress;
                        fOURBOTnewMovePodTask.desExt = new
                        foreach (var item in Result.outPods)
                        {
                            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;
                            var task = tasks.First(x => x.PalletCode == item.outPod);
                            if (item.blockPods.Count > 0)
                            {
                                task.TaskState = (int)TaskStatusEnum.RGV_WaitMoveToExecute;
                                dt_Tasks.Add(task);
                                AddMoveTask(item.blockPods);
                            }
                            else
                            {
                                task.TaskState = (int)TaskStatusEnum.RGV_WaitSend;
                                dt_Tasks.Add(task);
                            }
                        }
                        #endregion
                    }
                    else
                    {
                        item.TaskState = (int)TaskStatusEnum.RGV_WaitMoveToExecute;
                    }
                    _taskService.UpdateData(dt_Tasks);
                }
                _taskService.UpdateData(outtasks);
                #endregion
            }
            catch (Exception ex)
            {
@@ -112,6 +129,7 @@
                    {
                        item.CurrentAddress = item.NextAddress;
                        item.NextAddress = rGVLocationInfo.LocationCode;
                        item.Roadway = rGVLocationInfo.RoadwayNo;
                        fOURBOTnewMovePodTask.priority = item.Grade;
                        fOURBOTnewMovePodTask.podID = item.PalletCode;
                        fOURBOTnewMovePodTask.destination = item.NextAddress;
@@ -124,7 +142,8 @@
                        FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                        if (fOURBOTReturn.returnCode == 0)
                        {
                            item.RGVTaskId = fOURBOTReturn.data.taskID;
                            FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("未获取到四向车返回的任务ID");
                            item.RGVTaskId = fOURBO.taskID;
                            item.TaskState = (int)TaskStatusEnum.Puting;
                            rGVLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
                            rGVLocationInfos.Add(rGVLocationInfo);
@@ -173,7 +192,8 @@
                    FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                    if (fOURBOTReturn.returnCode == 0)
                    {
                        item.RGVTaskId = fOURBOTReturn.data.taskID;
                        FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("未获取到四向车返回的任务ID");
                        item.RGVTaskId = fOURBO.taskID;
                        item.TaskState = (int)TaskStatusEnum.Puting;
                    }
                }
@@ -186,32 +206,114 @@
        }
        #endregion
        #region åˆ¤æ–­æ˜¯å¦éœ€è¦ç§»åº“
        public static bool IsNoMoveTask(Dt_Task task)
        #region æ·»åŠ ç§»åº“ä»»åŠ¡
        public void AddMoveTask(List<string> blockPods)
        {
            var isNoMove = true;
            try
            {
                List<Dt_Task> tasks = new List<Dt_Task>();
                List<Dt_RGVLocationInfo> _UpRGVLocationInfos = new List<Dt_RGVLocationInfo>();
                List<Dt_RGVLocationInfo> rGVLocationInfos = _rGVLocationInfoService.Repository.QueryData(x => blockPods.Contains(x.PalletCode));
                var FreeLocationInfos = _rGVLocationInfoService.GetFreeLocationInfos();
                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();
                    rGVLocationInfo ??= FreeLocationInfos.First();
                    Dt_Task dt_Task = new()
                    {
                        TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                        //WMSTaskNum = taskDTO.taskCode,
                        //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                        Grade = 1,
                        PalletCode = item.PalletCode,
                        Roadway = item.RoadwayNo,
                        TaskState = TaskStatusEnum.RGV_NewMoveTask.ObjToInt(),
                        TaskType = TaskTypeEnum.CPMoveInventory.ObjToInt(),
                        SourceAddress = item.LocationCode,
                        CurrentAddress = item.LocationCode,
                        NextAddress = rGVLocationInfo.LocationCode,
                        TargetAddress = rGVLocationInfo.LocationCode,
                        Creater = "WCS",
                    };
                    tasks.Add(dt_Task);
                    item.LocationStatus = LocationStatusEnum.MoveLock.ObjToInt();
                    rGVLocationInfo.LocationStatus = LocationStatusEnum.MoveLock.ObjToInt();
                    _UpRGVLocationInfos.Add(rGVLocationInfo);
                    FreeLocationInfos.Remove(rGVLocationInfo);
                }
                _rGVLocationInfoService.UpdateData(rGVLocationInfos);
                _rGVLocationInfoService.UpdateData(_UpRGVLocationInfos);
                _taskService.AddData(tasks);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return isNoMove;
        }
        #endregion
        #region åˆ¤æ–­å‡ºåº“口是否空闲
        public bool StationIsFree(string StationCode)
        #region ä¸‹å‘四向车批量移库任务
        public void SendMoveTasks(List<Dt_Task> tasks)
        {
            Dt_StationManger stationManger = _stationMangerService.GetOutStationInfo(StationCode);
            return stationManger.IsOccupied == LocationStatusEnum.Free.ObjToInt();
            try
            {
                List<Dt_Task> dt_Tasks = new List<Dt_Task>();
                List<MoveBlockPodContentDto> moveBlocks = new List<MoveBlockPodContentDto>();
                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(MoveBlockPodContentDto)) ?? throw new Exception("未找到四向车批量搬运阻碍托任务接口配置信息!请检查接口配置");
                foreach (var item in tasks)
                {
                    MoveBlockPodContentDto moveBlock = new MoveBlockPodContentDto()
                    {
                        podID = item.PalletCode,
                        des = item.TargetAddress
                    };
                    moveBlocks.Add(moveBlock);
                }
                string response = HttpHelper.Post(apiInfo.ApiAddress, moveBlocks.Serialize());
                FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                if (fOURBOTReturn.returnCode == 0)
                {
                    MoveBlockPodsDataDto moveBlockPodsData = fOURBOTReturn.data as MoveBlockPodsDataDto ?? throw new Exception("未获取到四向车批量搬运阻碍托返回的任务ID");
                    foreach (var item in moveBlockPodsData.succList)
                    {
                        var task = tasks.First(x => x.PalletCode == item.podID);
                        task.RGVTaskId = item.taskID;
                        task.TaskState = TaskStatusEnum.RGV_MoveTaskSend.ObjToInt();
                        dt_Tasks.Add(task);
                    }
                    _taskService.UpdateData(dt_Tasks);
                }
            }
            catch (Exception ex)
            {
                WriteError(nameof(TaskJob), ex.Message, ex);
            }
        }
        #endregion
        #region ç§»åº“后下发出库任务
        public void SendMoveToExecuteTask(List<Dt_Task> tasks)
        #region å¤„理待移库后出库任务
        public void MoveToExecuteTask(List<Dt_Task> tasks)
        {
            try
            {
                foreach (var item in tasks)
                {
                    if (_taskService.Repository.QueryFirst(x => x.Roadway == item.Roadway && x.TaskType == (int)TaskTypeEnum.CPMoveInventory) == null)
                        item.TaskState = (int)TaskStatusEnum.RGV_WaitSend;
                }
                _taskService.UpdateData(tasks);
            }
            catch (Exception ex)
            {
                WriteError(nameof(TaskJob), ex.Message, ex);
            }
        }
        #endregion
        #region ä¸‹å‘出库任务
        public void SendOutTask(List<Dt_Task> tasks)
        {
            try
            {
@@ -219,8 +321,8 @@
                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;
                    var stationManger = _stationMangerService.GetOutStationInfo(item.TargetAddress);
                    if (stationManger.IsOccupied != LocationStatusEnum.Free.ObjToInt()) continue;
                    #region ä¸‹å‘出库任务
                    fOURBOTnewMovePodTask.priority = item.Grade;
                    fOURBOTnewMovePodTask.podID = item.PalletCode;
@@ -234,8 +336,11 @@
                    FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                    if (fOURBOTReturn.returnCode == 0)
                    {
                        item.RGVTaskId = fOURBOTReturn.data.taskID;
                        FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("未获取到四向车返回的任务ID");
                        item.RGVTaskId = fOURBO.taskID;
                        item.TaskState = (int)TaskStatusEnum.Execut;
                        stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt();
                        _stationMangerService.UpdateData(stationManger);
                    }
                    #endregion
                }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs
@@ -18,7 +18,7 @@
        /// <summary>
        /// ä¸‹å‘任务
        /// </summary>
        public void SendTask()
        public void SendNewTask()
        {
            try
            {
@@ -31,8 +31,10 @@
                    #endregion
                    #region æŸ¥æ‰¾RGV任务
                    Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPInbound || x.TaskType == (int)TaskTypeEnum.CPOutbound).ToList();
                    if (Tasks.Count > 0) SendRGVTask(Tasks);
                    Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPInbound).ToList();
                    if (Tasks.Count > 0) SendRGVInTask(Tasks);
                    Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPOutbound).ToList();
                    if (Tasks.Count > 0) IsMoveTask(Tasks);
                    #endregion
                    #region æŸ¥æ‰¾æµ·åº·AGV任务
@@ -57,7 +59,7 @@
            try
            {
                #region ä¸‹å‘外形检测通过的四向车任务
                var Tasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == (int)TaskStatusEnum.CheckShapeingOk).ToList();
                var Tasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == (int)TaskStatusEnum.CheckShapeingOk && x.ExceptionMessage.IsNullOrEmpty()).ToList();
                if (Tasks.Count > 0) SendCheckShapeingOkTask(Tasks);
                #endregion
@@ -68,9 +70,19 @@
                if (Tasks.Count > 0) SendCheckShapeingNGTask(Tasks);
                #endregion
                #region ä¸‹å‘待移库后四向车出库任务
                #region ä¸‹å‘四向车批量移库任务
                Tasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == (int)TaskStatusEnum.RGV_NewMoveTask).ToList();
                if (Tasks.Count > 0) SendMoveTasks(Tasks);
                #endregion
                #region å¤„理待移库后四向车出库任务
                Tasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == (int)TaskStatusEnum.RGV_WaitMoveToExecute).ToList();
                if (Tasks.Count > 0) SendMoveToExecuteTask(Tasks);
                if (Tasks.Count > 0) MoveToExecuteTask(Tasks);
                #endregion
                #region ä¸‹å‘四向车出库任务
                Tasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == (int)TaskStatusEnum.RGV_WaitSend).ToList();
                if (Tasks.Count > 0) SendOutTask(Tasks);
                #endregion
                #region ä¸‹å‘托盘确认的海康AGV任务
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs
@@ -43,7 +43,7 @@
        {
            try
            {
                SendTask();
                SendNewTask();
                SendWaitToTask();
            }