dengjunjie
2026-03-09 0f1717cbe5c788c294a53cd4df6f819ca0236500
优化成品仓逻辑
已添加1个文件
已修改14个文件
163 ■■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/StationMangerService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/EnableStatusEnum.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/CancelSXCTake.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTInfo.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTNewMovePodTask.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTStorageStatusNotify.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/GetBlockPodContentDto.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/MoveBlockPodContentDto.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/UpdateAgvSXCTake.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRGVLocationInfoService.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/RGV/RGVController.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RGVLocationInfoService.cs
@@ -25,16 +25,40 @@
            //{ nameof(Dt_RGVLocationInfo.Column), OrderByType.Asc },
            { nameof(Dt_RGVLocationInfo.Row), OrderByType.Asc },
        };
        private Dictionary<string, OrderByType> _DepthAscOrderBy = new Dictionary<string, OrderByType>()
        {
            { nameof(Dt_RGVLocationInfo.Depth), OrderByType.Asc },
        };
        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)
        /// <summary>
        /// æŸ¥æ‰¾å…¥åº“可用货位
        /// </summary>
        /// <param name="AreaCode"></param>
        /// <returns></returns>
        public Dt_RGVLocationInfo GetInFreeLocationInfo(string AreaCode)
        {
            Dt_RGVLocationInfo? rGVLocationInfo = BaseDal.QueryFirst(x => x.WarehouseId.ToString() == AreaCode && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt(), _emptyAssignOrderBy);
            #region åˆ¤æ–­å··é“是否有货
            if (rGVLocationInfo != null)
            {
                List<string> NoRoadwayNos = new List<string>();
                while (true)
                {
                    Dt_RGVLocationInfo dt_RGVLocationInfo = BaseDal.QueryFirst(x => x.RoadwayNo == rGVLocationInfo.RoadwayNo && x.Depth < rGVLocationInfo.Depth && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt(), _emptyAssignOrderBy);
                    if (dt_RGVLocationInfo == null) return rGVLocationInfo;
                    rGVLocationInfo = BaseDal.QueryFirst(x => x.RoadwayNo == dt_RGVLocationInfo.RoadwayNo && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.Depth > dt_RGVLocationInfo.Depth && x.LocationStatus == LocationStatusEnum.Free.ObjToInt(), _DepthAscOrderBy);
                    dt_RGVLocationInfo = BaseDal.QueryFirst(x => x.RoadwayNo == rGVLocationInfo.RoadwayNo && x.Depth > rGVLocationInfo.Depth && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt(), _emptyAssignOrderBy);
                    if (dt_RGVLocationInfo == null) return rGVLocationInfo;
                }
            }
            #endregion
            return rGVLocationInfo;
        }
    }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/StationMangerService.cs
@@ -37,7 +37,7 @@
        /// <returns></returns>
        public Dt_StationManger GetOutStationInfo(string stationCode)
        {
            return BaseDal.QueryFirst(x => x.StationCode == stationCode && x.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt());
            return BaseDal.QueryFirst(x => x.StationCode == stationCode && (x.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt() || x.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt()));
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/LocationEnum/EnableStatusEnum.cs
@@ -18,17 +18,17 @@
        [Description("正常")]
        Normal = 0,
        /// <summary>
        /// åªå…¥
        /// </summary>
        [Description("只入")]
        OnlyIn = 1,
        ///// <summary>
        ///// åªå…¥
        ///// </summary>
        //[Description("只入")]
        //OnlyIn = 1,
        /// <summary>
        /// åªå‡º
        /// </summary>
        [Description("只出")]
        OnlyOut = 2,
        ///// <summary>
        ///// åªå‡º
        ///// </summary>
        //[Description("只出")]
        //OnlyOut = 2,
        /// <summary>
        /// ç¦ç”¨
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/CancelSXCTake.cs
@@ -6,7 +6,7 @@
namespace WIDESEAWCS_DTO.RGV.FOURBOT
{
    public class CancelSXCTake
    public class CancelSXCTake: FOURBOTInfo
    {
        /// <summary>
        /// ä»»åŠ¡å·
@@ -16,7 +16,7 @@
        /// <summary>
        /// å–消原因        
        /// </summary>
        public string reason { get; set; }= "";
        public string reason { get; set; }= "NoNeed";
        /// <summary>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTInfo.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEAWCS_DTO.RGV.FOURBOT
{
    public class FOURBOTInfo
    {
        public string warehouseID { get; set; } = "HETU";
        public string clientCode { get; set; } = "WCS";
        public string requestID { get; set; } = DateTime.Now.ToString("yyyyMMddHHmmss");
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTNewMovePodTask.cs
@@ -10,11 +10,8 @@
    /// <summary>
    /// å››å‘车创建容器搬运任务
    /// </summary>
    public class FOURBOTnewMovePodTask
    public class FOURBOTnewMovePodTask: FOURBOTInfo
    {
        public string warehouseID { get; set; } = "HETU";
        public string clientCode { get; set; } = "WCS";
        public string requestID { get; set; } = DateTime.Now.ToString("yyyyMMddHHmmss");
        /// <summary>
        /// ä¼˜å…ˆçº§
        /// </summary>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTStorageStatusNotify.cs
@@ -6,6 +6,14 @@
namespace WIDESEAWCS_DTO.RGV.FOURBOT
{
    public class FOURBOTStorageStatusNotifyInfo
    {
        public long messageID { get; set; }
        public int messageType { get; set; }
        public string warehouseID { get; set; }
        public string createTime { get; set; }
        public FOURBOTStorageStatusNotify content { get; set; }
    }
    /// <summary>
    /// å››å‘车储位状态更新消息通知
    /// </summary>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/GetBlockPodContentDto.cs
@@ -9,8 +9,9 @@
    /// <summary>
    /// é˜»ç¢æ‰˜ç›˜æŸ¥è¯¢è¯·æ±‚内容DTO
    /// </summary>
    public class GetBlockPodContentListDto
    public class GetBlockPodContentListDto : FOURBOTInfo
    {
        public List<GetBlockPodContentDto> content { get; set; } = new List<GetBlockPodContentDto>();
    }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/MoveBlockPodContentDto.cs
@@ -6,10 +6,14 @@
namespace WIDESEAWCS_DTO.RGV.FOURBOT
{
    public class MoveBlockPodContentDto : FOURBOTInfo
    {
        public List<MoveBlockPodContentDtoInfo> content { get; set; }=new List<MoveBlockPodContentDtoInfo>() { };
    }
    /// <summary>
    /// æ‰¹é‡ç§»åŠ¨é˜»ç¢æ‰˜ç›˜è¯·æ±‚å†…å®¹DTO
    /// </summary>
    public class MoveBlockPodContentDto
    public class MoveBlockPodContentDtoInfo
    {
        /// <summary>
        /// æ‰˜ç›˜å·
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/UpdateAgvSXCTake.cs
@@ -9,7 +9,7 @@
    /// <summary>
    /// æ›´æ–°å››å‘车任务优先级
    /// </summary>
    public class UpdateAgvSXCTake
    public class UpdateAgvSXCTake: FOURBOTInfo
    {
        /// <summary>
        /// ä»»åŠ¡ID
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRGVLocationInfoService.cs
@@ -13,12 +13,12 @@
    {
       public IRepository<Dt_RGVLocationInfo> Repository { get; }
        /// <summary>
        /// èŽ·å–å¯ç”¨ç©ºè´§ä½
        /// èŽ·å–å…¥åº“å¯ç”¨ç©ºè´§ä½
        /// </summary>
        /// <param name="AreaCode"></param>
        /// <param name="containerType"></param>
        /// <returns></returns>
        Dt_RGVLocationInfo GetFreeLocationInfo(string AreaCode);
        Dt_RGVLocationInfo GetInFreeLocationInfo(string AreaCode);
        /// <summary>
        /// èŽ·å–æ‰€æœ‰ç©ºè´§ä½
        /// </summary>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/RGV/RGVController.cs
@@ -51,10 +51,10 @@
        /// <param name="fOURBOTStorageStatusNotify"></param>
        /// <returns></returns>
        [HttpPost, Route("multiSetNodeStatus"), AllowAnonymous]
        public FOURBOTReturn multiSetNodeStatus([FromBody] FOURBOTStorageStatusNotify fOURBOTStorageStatusNotify)
        public FOURBOTReturn multiSetNodeStatus([FromBody] FOURBOTStorageStatusNotifyInfo fOURBOTStorageStatusNotify)
        {
            FOURBOTReturn returnRGV = new FOURBOTReturn();
            var take = _taskService.multiSetNodeStatus(fOURBOTStorageStatusNotify);
            var take = _taskService.multiSetNodeStatus(fOURBOTStorageStatusNotify.content);
            if (take.Status)
            {
                returnRGV.returnCode = 0;
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs
@@ -106,14 +106,21 @@
                    }
                    else if (Rgv.messageType == 10)
                    {
                        if (task.TaskState == (int)TaskStatusEnum.TakeFinish && Rgv.content.status == 4)
                        if(Rgv.content.status == 4)
                        {
                            task.TaskState = (int)TaskStatusEnum.CheckShapeing;
                            BaseDal.UpdateData(task);
                        }
                        else if (task.TaskState == (int)TaskStatusEnum.Puting && Rgv.content.status == 4)
                        {
                            TaskCompleted(task, deviceTypeEnum);
                            if (task.TaskType == (int)TaskTypeEnum.CPInbound && task.TaskState == (int)TaskStatusEnum.TakeFinish)
                            {
                                task.TaskState = (int)TaskStatusEnum.CheckShapeing;
                                BaseDal.UpdateData(task);
                            }
                            else if (task.TaskType == (int)TaskTypeEnum.CPInbound && task.TaskState == (int)TaskStatusEnum.Puting)
                            {
                                TaskCompleted(task, deviceTypeEnum);
                            }
                            else if(task.TaskType == (int)TaskTypeEnum.CPOutbound || task.TaskType == (int)TaskTypeEnum.CPMoveInventory)//出库、移库完成
                            {
                                TaskCompleted(task, deviceTypeEnum);
                            }
                        }
                    }
                }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -96,7 +96,8 @@
                        if (!content.Status) throw new Exception(content.Message);
                        if (BaseDal.QueryFirst(x => x.WMSTaskNum == task.taskCode || x.PalletCode == task.containerCode) != null)
                        {
                            continue;
                            throw new Exception($"任务号【{task.taskCode}】/托盘号【{task.containerCode}】已存在任务");
                            //continue;
                        }
                        switch (item.taskType)
                        {
@@ -191,7 +192,8 @@
                {
                    CancelSXCTake cancelSXCTake = new CancelSXCTake
                    {
                        taskID = dt_Task.RGVTaskId
                        taskID = dt_Task.RGVTaskId,
                        withoutRunning = 1
                    };
                    Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(CancelSXCTake));
                    if (apiInfo == null) throw new Exception("未找到四向车AGV任务下发接口配置信息!请检查接口配置");
@@ -201,11 +203,11 @@
                    {
                        //直接移入历史
                        BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.自动完成);
                        return content.OK("取消任务成功", dt_Task);
                        return content.OK($"取消任务【{dt_Task.WMSTaskNum}】成功", dt_Task);
                    }
                    else
                    {
                        return content.Error($"任务失败{fOURBOTReturn.data}");
                        return content.Error($"任务取消失败【{dt_Task.WMSTaskNum}】{fOURBOTReturn.returnUserMsg}");
                    }
                }
                #endregion
@@ -304,7 +306,7 @@
                        priority = updateTaskPriority.taskPriority
                    };
                    Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(UpdateAgvSXCTake));
                    if (apiInfo == null) throw new Exception("未找到四向车AGV任务下发接口配置信息!请检查接口配置");
                    if (apiInfo == null) throw new Exception("未找到更新四向车任务优先级接口配置信息!请检查接口配置");
                    string response = HttpHelper.Post(apiInfo.ApiAddress, request.Serialize());
                    FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                    if (fOURBOTReturn.returnCode == 0 && fOURBOTReturn.returnUserMsg == "成功")
@@ -1057,7 +1059,8 @@
                };
                string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOToccupyStation.Serialize());
                FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                if (fOURBOTReturn.returnCode != 0) throw new Exception(fOURBOTReturn.returnUserMsg);
                if (fOURBOTReturn.returnCode != 0 && fOURBOTReturn.returnUserMsg != $"站点已被占用,(podID={iQC.ContainerCode})")
                    throw new Exception(fOURBOTReturn.returnUserMsg);
                #endregion
                #region åˆ›å»ºå››å‘车任务
@@ -1105,7 +1108,7 @@
                var Agvlocation = _rGVLocationInfoService.Repository.QueryData(x => fOURBOTStorageStatusNotify.storageCode.Contains(x.LocationCode));
                foreach (var item in Agvlocation)
                {
                    item.LocationStatus = (int)(fOURBOTStorageStatusNotify.disable == 0 ? EnableStatusEnum.Normal : EnableStatusEnum.Disable);
                    item.EnableStatus = (int)(fOURBOTStorageStatusNotify.disable == 0 ? EnableStatusEnum.Normal : EnableStatusEnum.Disable);
                }
                _rGVLocationInfoService.UpdateData(Agvlocation);
                return WebResponseContent.Instance.OK();
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs
@@ -91,7 +91,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 +125,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 +175,7 @@
                    try
                    {
                        #region èŽ·å–è´§ä½
                        var rGVLocationInfo = _rGVLocationInfoService.GetFreeLocationInfo(item.Roadway);
                        var rGVLocationInfo = _rGVLocationInfoService.GetInFreeLocationInfo(item.Roadway);
                        if (rGVLocationInfo == null)
                        {
                            item.ExceptionMessage = $"未找到终点库区【{item.Roadway}】可用空货位!";
@@ -456,21 +456,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)
@@ -502,7 +502,7 @@
            }
            finally
            {
                _trackloginfoService.AddTrackLog(moveBlocks, content, "下发四向车批量移库任务", "", "");
                _trackloginfoService.AddTrackLog(moveBlock, content, "下发四向车批量移库任务", "", "");
            }
        }
        #endregion
@@ -537,24 +537,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.desNodeID = 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;