wangxinhui
2026-02-11 482ece71c06bcc49c38b0dc5d747b37a60d227fd
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -18,6 +18,7 @@
using Newtonsoft.Json;
using SqlSugar;
using System.Diagnostics.CodeAnalysis;
using System.Net.Http.Headers;
using WIDESEA_DTO.Agv;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.APIEnum;
@@ -27,6 +28,7 @@
using WIDESEAWCS_Core.Enums;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_Core.LogHelper;
using WIDESEAWCS_DTO;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_ITaskInfoRepository;
@@ -100,33 +102,83 @@
                }
            }
        }
        private readonly static object lockerCompleted = new object();
        /// <summary>
        /// ä»»åŠ¡å®Œæˆ
        /// </summary>
        public WebResponseContent TaskCompleted(int taskNum)
        {
            try
            {
                lock (lockerCompleted)
                {
                    Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
                    if (task != null)
                    {
                        task.TaskState = TaskStatusEnum.Finish.ObjToInt();
                        BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.自动完成 : OperateTypeEnum.人工完成);
                    }
                    string? url = apiInfos.FirstOrDefault(x => x.ApiCode == APIEnum.FeedBackWMSTaskCompleted.ToString())?.ApiAddress;
                    if (string.IsNullOrEmpty(url))
                    {
                        _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"未找到WMS任务完成接口,请检查接口配置");
                        UpdateTaskExceptionMessage(taskNum, $"未找到WMS任务完成接口,请检查接口配置");
                        return WebResponseContent.Instance.Error($"{taskNum},未找到WMS任务完成接口,请检查接口配置");
                    }
                    string responseStr = HttpHelper.Get(url + "?taskNum=" + taskNum);
                    WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(responseStr) ?? WebResponseContent.Instance.Error($"{taskNum},未接收到任务完成返回值");
                    return content;
                }
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// ä»»åŠ¡é‡æ–°ä¸‹å‘
        /// </summary>
        /// <param name="taskNum"></param>
        /// <returns></returns>
        public WebResponseContent ResendTask(int taskNum)
        {
            try
            {
                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
                if (task != null)
                {
                    task.TaskState = TaskStatusEnum.Finish.ObjToInt();
                    BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.自动完成 : OperateTypeEnum.人工完成);
                    if (task.TaskState == (int)TaskStatusEnum.SC_Executing)
                    {
                        task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt();
                    }
                    else if(task.TaskState == (int)TaskStatusEnum.AGV_Executing)
                    {
                        task.TaskState = TaskStatusEnum.AGV_Execute.ObjToInt();
                    }else if(task.TaskState == (int)TaskStatusEnum.AGV_Exception)
                    {
                        task.TaskState = TaskStatusEnum.AGV_Execute.ObjToInt();
                        task.Remark = "";
                    }
                    else
                    {
                        return WebResponseContent.Instance.Error($"此任务 { taskNum } æš‚时不能重新下发任务");
                    }
                    BaseDal.UpdateData(task);
                }
                string? url = apiInfos.FirstOrDefault(x => x.ApiCode == APIEnum.FeedBackWMSTaskCompleted.ToString())?.ApiAddress;
                if (string.IsNullOrEmpty(url))
                else
                {
                    _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"未找到WMS任务完成接口,请检查接口配置");
                    UpdateTaskExceptionMessage(taskNum, $"未找到WMS任务完成接口,请检查接口配置");
                    return WebResponseContent.Instance.Error($"{taskNum},未找到WMS任务完成接口,请检查接口配置");
                    return WebResponseContent.Instance.Error($"未找到任务消息");
                }
                string responseStr = HttpHelper.Get(url + "?taskNum=" + taskNum);
                WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(responseStr) ?? WebResponseContent.Instance.Error($"{taskNum},未接收到任务完成返回值");
                return content;
                return WebResponseContent.Instance.OK("任务重新下发成功");
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// æŽ¥æ”¶WMS任务信息
        /// </summary>
@@ -179,7 +231,7 @@
                            return WebResponseContent.Instance.Error($"未找到站台配置信息");
                        }
                        //获取路由信息
                        List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && (item.SourceAddress == x.StartPosi || item.RoadWay == x.StartPosi));
                        List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && (item.SourceAddress == x.StartPosi || item.RoadWay == x.StartPosi) && x.Depth==1);
                        router = routers.FirstOrDefault();
                        if (router == null)
                        {
@@ -191,9 +243,18 @@
                            //入库
                            if (taskTypeGroup == TaskTypeGroup.InboundGroup)
                            {
                                task.CurrentAddress = router.StartPosi;
                                task.NextAddress = router.NextPosi;
                                task.DeviceCode = router.ChildPosiDeviceCode;
                                if (router.NextPosi == "AGV" && router.StartPosi=="AGV") //叉车AGV搬运入库
                                {
                                    task.CurrentAddress = item.SourceAddress;
                                    task.NextAddress = item.TargetAddress;
                                    task.DeviceCode = router.ChildPosiDeviceCode;
                                }
                                else
                                {
                                    task.CurrentAddress = router.StartPosi;
                                    task.NextAddress = router.NextPosi;
                                    task.DeviceCode = router.ChildPosiDeviceCode;
                                }
                            }
                            else //出库
                            {
@@ -204,8 +265,7 @@
                        }
                        else
                        {
                            //成品码垛任务生成
                            if (taskTypeGroup == TaskTypeGroup.InboundGroup && !task.Roadway.Contains("YL"))
                            if (taskTypeGroup == TaskTypeGroup.InboundGroup && !task.Roadway.Contains("YL")) //成品码垛任务生成
                            {
                                task.CurrentAddress = router.StartPosi;
                                task.NextAddress = "";
@@ -224,12 +284,27 @@
                    {
                        //成品入库
                        List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && x.StartPosi=="AGV" && x.ChildPosiDeviceCode==item.RoadWay);
                        router = routers.FirstOrDefault();
                        if (routers.Count == 1)
                        if (routers.Count==0)
                        {
                            router = _routerRepository.QueryFirst(x => x.InOutType == item.TaskType && x.StartPosi == "AGV");
                            if (router==null)
                                return WebResponseContent.Instance.Error($"未找到路由配置信息");
                            task.NextAddress = router.NextPosi;
                            task.DeviceCode = router.ChildPosi;
                        }
                        else
                        {
                            router = routers.FirstOrDefault();
                            if (routers.Count == 1)
                            {
                                task.NextAddress = router.NextPosi;
                                if (task.Roadway.Contains("StackPlate"))
                                    task.DeviceCode = router.ChildPosiDeviceCode;
                                else
                                    task.DeviceCode = router.ChildPosi;
                            }
                        }
                    }
                    tasks.Add(task);
                }
@@ -247,17 +322,15 @@
        }
        /// <summary>
        /// æ ¹æ®æ‰˜ç›˜å·ã€èµ·å§‹åœ°å€å‘WMS请求任务
        /// æ ¹æ®ç»ˆç‚¹åœ°å€å‘WMS请求任务
        /// </summary>
        /// <param name="palletCode">托盘号</param>
        /// <param name="sourceAddress">起始地址</param>
        /// <returns></returns>
        public WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, string materielBoxCode = "")
        public WebResponseContent RequestPlateOutTask(string targetAddress)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == sourceAddress);
                Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == targetAddress);
                if (stationManger == null)
                {
                    return WebResponseContent.Instance.Error($"未找到站台信息");
@@ -267,29 +340,15 @@
                {
                    return WebResponseContent.Instance.Error($"未找到WMSApi地址");
                }
                string responseStr = "";
                if (!string.IsNullOrEmpty(materielBoxCode))
                {
                    responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTask?stationCode={sourceAddress}&roadwayNo={stationManger.StackerCraneCode}&palletCode={palletCode}&materielBoxCode={materielBoxCode}");
                }
                else
                {
                    responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTask?stationCode={sourceAddress}&roadwayNo={stationManger.StackerCraneCode}&palletCode={palletCode}");
                }
                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
                if (responseContent != null && responseContent.Status && responseContent.Data != null)
                {
                    WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString());
                    if (taskDTO != null)
                    {
                        content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
                    }
                }
                string responseStr = HttpHelper.Get($"{address}/api/Task/PlateOutbound?stationCode={targetAddress}");
                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr) ?? throw new Exception("结果返回为空");
                content = responseContent;
            }
            catch (Exception ex)
            {
                content = WebResponseContent.Instance.Error(ex.Message);
                content.Error(ex.Message);
            }
            return content;
        }
@@ -311,7 +370,7 @@
                    return WebResponseContent.Instance.Error($"未找到WMSApi地址");
                }
                string responseStr = HttpHelper.Get($"{address}/api/Task/RequestYLWMSTaskSimple?stationCode={sourceAddress}&palletCode={palletCode}&taskNum{taskNum}");
                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr) ?? throw new Exception("结果返回为空");
                if (responseContent != null && responseContent.Status && responseContent.Data != null)
                {
                    WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString());
@@ -322,22 +381,22 @@
                }
                else
                {
                    content = responseContent ?? content.Error("结果错误");
                    content = responseContent;
                }
            }
            catch (Exception ex)
            {
                content = WebResponseContent.Instance.Error(ex.Message);
                content.Error(ex.Message);
            }
            return content;
        }
        // <summary>
        /// å…¥åº“申请
        /// </summary>
        public WebResponseContent YLPurchaseBoxing(string palletCode)
        public WebResponseContent YLPurchaseBoxing(string palletCode, decimal weight = 0, decimal thickness = 0, decimal wide = 0,string stationCode="")
        {
            WebResponseContent? content = new WebResponseContent();
            WebResponseContent content = new WebResponseContent();
            try
            {
                string address = AppSettings.Get("WMSApiAddress");
@@ -345,8 +404,8 @@
                {
                    return WebResponseContent.Instance.Error($"未找到WMSApi地址");
                }
                string responseStr = HttpHelper.Get($"{address}/api/Task/YLPurchaseBoxing?palletCode={palletCode}");
                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
                string responseStr = HttpHelper.Get($"{address}/api/Task/YLPurchaseBoxing?palletCode={palletCode}&weight={weight}&thickness={thickness}&wide={wide}&stationCode={stationCode}");
                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr) ?? throw new Exception("结果返回为空");
                content = responseContent;
@@ -381,7 +440,7 @@
            }
            catch (Exception ex)
            {
                content = WebResponseContent.Instance.Error(ex.Message);
                content.Error(ex.Message);
            }
            return content;
        }
@@ -390,7 +449,7 @@
        /// è¯·æ±‚原料入库巷道
        /// </summary>
        /// <returns></returns>
        public WebResponseContent AssignYLRoadwayNo(string palletCode)
        public WebResponseContent AssignYLRoadwayNo(string palletCode, int wide = 0, int thickness = 0, int weight = 0)
        {
            WebResponseContent content = new WebResponseContent();
            try
@@ -400,17 +459,16 @@
                {
                    return WebResponseContent.Instance.Error($"未找到WMSApi地址");
                }
                string responseStr = HttpHelper.Get($"{address}/api/Task/AssignYLRoadwayNo?palletCode={palletCode}");
                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
                if (responseContent != null && responseContent.Status && responseContent.Data != null)
                {
                    content = responseContent;
                }
                string responseStr = HttpHelper.Get($"{address}/api/Task/AssignYLRoadwayNo?palletCode={palletCode}&wide={wide}&thickness={thickness}&weight={weight}");
                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr) ?? throw new Exception("结果返回为空");
                content = responseContent;
            }
            catch (Exception ex)
            {
                content = WebResponseContent.Instance.Error(ex.Message);
                content.Error(ex.Message);
            }
            return content;
        }
@@ -421,46 +479,104 @@
        /// <param name="sourceAddress">起始地址</param>
        /// /// <param name="roadWay">巷道</param>
        /// <returns></returns>
        public WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress,string roadWay="", int taskType=630, int taskNum = 0, string targetAddress = "")
        public WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress,string roadWay="", int taskType=630)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                //string address = AppSettings.Get("WMSApiAddress");
                //if (string.IsNullOrEmpty(address))
                //{
                //    return WebResponseContent.Instance.Error($"未找到WMSApi地址");
                //}
                //string responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTaskSimple?stationCode={sourceAddress}&palletCode={palletCode}");
                //WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
                //if (responseContent != null && responseContent.Status && responseContent.Data != null)
                //{
                //    WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString());
                //    if (taskDTO != null)
                //    {
                WMSTaskDTO? taskDTO = new WMSTaskDTO()
                string address = AppSettings.Get("WMSApiAddress");
                if (string.IsNullOrEmpty(address))
                {
                    TaskNum = taskNum ==0 ? DateTime.Now.ToString("mmss").ObjToInt(): taskNum,
                    PalletCode= palletCode,
                    RoadWay= roadWay,
                    TaskType= taskType,
                    PalletType=1,
                    TaskStatus= TaskStatusEnum.New.ObjToInt(),
                    SourceAddress= sourceAddress,
                    TargetAddress= targetAddress,
                    WarehouseId=2,
                    Grade=0,
                };
                content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
                //    }
                //}
                    return WebResponseContent.Instance.Error($"未找到WMSApi地址");
                }
                string responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTaskSimple?stationCode={sourceAddress}");
                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr) ?? throw new Exception("结果返回为空");
                if (responseContent.Status && responseContent.Data != null)
                {
                    WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString());
                    if (taskDTO != null)
                    {
                        content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
                    }
                }
                else
                {
                    content = responseContent;
                }
            }
            catch (Exception ex)
            {
                content = WebResponseContent.Instance.Error(ex.Message);
            }
            return content;
        }
        public WebResponseContent MESBoxCodeNotice(string boxCode)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                string address = AppSettings.Get("WMSApiAddress");
                if (string.IsNullOrEmpty(address))
                {
                    return WebResponseContent.Instance.Error($"未找到WMSApi地址");
                }
                string responseStr = HttpHelper.Get($"{address}/api/Mes/MESBoxCodeNotice?boxCode={boxCode}");
                return content.OK(responseStr);
            }
            catch (Exception ex)
            {
                content = WebResponseContent.Instance.Error(ex.Message);
            }
            return content;
        }
        /// <summary>
        /// åˆ¤æ–­å…è®¸æ”¾è´§
        /// </summary>
        /// <returns></returns>
        public string MESAvgArriveNotice(RequestAGVArriveDTO requestAGVArriveDTO)
        {
            Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.MESAvgArriveNotice.ToString());
            string response = Post(apiInfo.ApiAddress, JsonConvert.SerializeObject(requestAGVArriveDTO));
            return response;
        }
        public static string Post(string serviceAddress, string requestJson = "", string contentType = "application/json", Dictionary<string, string>? headers = null)
        {
            string result = string.Empty;
            DateTime beginDate = DateTime.Now;
            try
            {
                using (HttpContent httpContent = new StringContent(requestJson))
                {
                    httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    using HttpClient httpClient = new HttpClient();
                    httpClient.Timeout = new TimeSpan(0, 0, 30);
                    string LoginToken = AppSettings.Get("MESLoginToken");
                    headers = new Dictionary<string, string>
                    {
                        //正式
                        { "LoginToken", LoginToken }
                    };
                    if (headers != null)
                    {
                        foreach (var header in headers)
                            httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
                    }
                    HttpResponseMessage responseMessage = httpClient.PostAsync(serviceAddress, httpContent).Result;
                    result = responseMessage.Content.ReadAsStringAsync().Result;
                }
                return result;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                Logger.Add(serviceAddress, requestJson == null ? "" : requestJson, result, beginDate);
            }
        }
        public WebResponseContent CPEmptyInbound(string palletCode,string SourceAddress)
        {
@@ -482,41 +598,6 @@
            }
            return content;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="palletCode"></param>
        /// <param name="sourceAddress"></param>
        /// <param name="roadway"></param>
        /// <returns></returns>
        //public WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, string roadway)
        //{
        //    WebResponseContent content = new WebResponseContent();
        //    try
        //    {
        //        string address = AppSettings.Get("WMSApiAddress");
        //        if (string.IsNullOrEmpty(address))
        //        {
        //            return WebResponseContent.Instance.Error($"未找到WMSApi地址");
        //        }
        //        string responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTask?stationCode={sourceAddress}&roadwayNo={roadway}&palletCode={palletCode}");
        //        WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
        //        if (responseContent != null && responseContent.Status && responseContent.Data != null)
        //        {
        //            WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString());
        //            if (taskDTO != null)
        //            {
        //                content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
        //            }
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        content = WebResponseContent.Instance.Error(ex.Message);
        //    }
        //    return content;
        //}
        /// <summary>
        /// å‘WMS申请分配货位
@@ -529,6 +610,54 @@
            string address = AppSettings.Get("WMSApiAddress");
            if (string.IsNullOrEmpty(address)) throw new Exception("未找到WMSApi地址");
            string responseStr = HttpHelper.Get($"{address}/api/Task/AssignInboundTaskLocation?taskNum={taskNum}&roadwayNo={roadwayNo}");
            WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
            if (responseContent != null && responseContent.Status && responseContent.Data != null)
            {
                return responseContent.Data.ToString();
            }
            return "";
        }
        /// <summary>
        /// å‘WMS成品入库扫码请求更新条码
        /// </summary>
        /// <param name="taskNum">任务号</param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public WebResponseContent RequestInBoundPalletCode(int taskNum,string barCode)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                string address = AppSettings.Get("WMSApiAddress");
                if (string.IsNullOrEmpty(address)) throw new Exception("未找到WMSApi地址");
                string responseStr = HttpHelper.Get($"{address}/api/Task/InBoundPalletCode?taskNum={taskNum}&barCode={barCode}");
                WebResponseContent responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr) ?? throw new Exception("未收到返回参数");
                if (!responseContent.Status)
                {
                    return responseContent;
                }
                content.OK();
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
        /// <summary>
        /// å‘WMS申请出库AGV终点
        /// </summary>
        /// <param name="taskNum">任务号</param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public string? RequestTargetAddress(int taskNum)
        {
            string address = AppSettings.Get("WMSApiAddress");
            if (string.IsNullOrEmpty(address)) throw new Exception("未找到WMSApi地址");
            string responseStr = HttpHelper.Get($"{address}/api/Task/AssignOutTargetAddress?taskNum={taskNum}");
            WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
            if (responseContent != null && responseContent.Status && responseContent.Data != null)
@@ -629,7 +758,7 @@
                task.ModifyDate = DateTime.Now;
                BaseDal.UpdateData(task);
                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, task.ExceptionMessage);
                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, task.ExceptionMessage);
                content = WebResponseContent.Instance.OK();
            }
@@ -671,7 +800,7 @@
                BaseDal.UpdateData(task);
                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"人工恢复挂起任务,恢复挂起时任务状态【{task.TaskState}】");
                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"人工恢复挂起任务,恢复挂起时任务状态【{task.TaskState}】");
                content = WebResponseContent.Instance.OK();
            }
@@ -712,7 +841,7 @@
                BaseDal.UpdateData(task);
                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"人工将任务状态从【{oldState}】回滚到【{task.TaskState}】");
                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"人工将任务状态从【{oldState}】回滚到【{task.TaskState}】");
                content = WebResponseContent.Instance.OK();
            }
@@ -723,35 +852,7 @@
            return content;
        }
        public WebResponseContent SendSecureReplyToAgv(int taskNum)
        {
            try
            {
                Dt_Task WaitToTask = BaseDal.QueryFirst(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt() && x.TaskNum == taskNum);
                AgvSecureReplyDTO replyDTO = new AgvSecureReplyDTO()
                {
                    ReqCode = Guid.NewGuid().ToString().Replace("-", ""), //WaitToTask.TaskNum.ToString(),
                    taskCode = WaitToTask.AgvTaskNum,
                };
                WebResponseContent content = AgvSecureReply(replyDTO);
                if (content.Status)
                {
                    WaitToTask.TaskState = TaskStatusEnum.AGV_Executing.ObjToInt();
                }
                else
                {
                    WaitToTask.TaskState = TaskStatusEnum.Exception.ObjToInt();
                    WaitToTask.ExceptionMessage = content.Message;
                }
                UpdateData(WaitToTask);
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// //判断移库货位任务是否已存在,如存在先执行
        /// </summary>
@@ -880,6 +981,11 @@
                        nextStatus = TaskStatusEnum.SC_Executing;
                    }
                }
                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                {
                    task.TaskState = (int)TaskStatusEnum.SC_Executing;
                    nextStatus = TaskStatusEnum.SC_Executing;
                }
                else
                {
                    throw new Exception($"任务类型错误,未找到该任务类型,任务号:【{task.TaskNum}】,任务类型:【{task.TaskType}】");