1
huangxiaoqiang
2025-10-20 63dcb7fc55d32960f643f4040900ce9a0e33536d
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -44,19 +44,32 @@
        private Dictionary<string, OrderByType> _taskOrderBy = new()
        {
            {nameof(Dt_Task.Grade), OrderByType.Desc },
            {nameof(Dt_Task.Grade), OrderByType.Asc },
            {nameof(Dt_Task.CreateDate), OrderByType.Asc},
        };
        public Dictionary<string, OrderByType> TaskOrderBy
        { get { return _taskOrderBy; } set { _taskOrderBy = value; } }
        #region èŽ·å–æ‰€æœ‰ä»»åŠ¡ç±»åž‹ã€çŠ¶æ€
        public List<int> TaskInboundTypes => typeof(TaskInboundTypeEnum).GetEnumIndexList();
        public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList();
        public List<int> TaskRelocationboundTypes => typeof(TaskRelocationStatusEnum).GetEnumIndexList();
        public List<int> TaskAGVCarryboundTypes => typeof(TaskAGVCarryStatusEnum).GetEnumIndexList();
        public List<int> TaskAcrossFloorboundTypes => typeof(TaskAcrossFloorStatusEnum).GetEnumIndexList();
        public List<int> TaskRelocationboundTypes => typeof(TaskRelocationTypeEnum).GetEnumIndexList();
        public List<int> TaskAGVCarryboundTypes => typeof(TaskAGVCarryTypeEnum).GetEnumIndexList();
        public List<int> TaskAcrossFloorboundTypes => typeof(TaskAcrossFloorTypeEnum).GetEnumIndexList();
        public List<int> TaskInboundStates => typeof(TaskInStatusEnum).GetEnumIndexList();
        public List<int> TaskOutboundStates => typeof(TaskOutStatusEnum).GetEnumIndexList();
        public List<int> TaskRelocationboundStates => typeof(TaskRelocationStatusEnum).GetEnumIndexList();
        public List<int> TaskAGVCarryboundStates => typeof(TaskAGVCarryStatusEnum).GetEnumIndexList();
        public List<int> TaskAcrossFloorboundStates => typeof(TaskAcrossFloorStatusEnum).GetEnumIndexList();
        #endregion èŽ·å–æ‰€æœ‰ä»»åŠ¡ç±»åž‹ã€çŠ¶æ€
        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, IRouterRepository routerRepository, ITask_HtyRepository htyRepository) : base(BaseDal)
        {
@@ -96,81 +109,183 @@
                    Dt_Task task = _mapper.Map<Dt_Task>(item);
                    // è®¾ç½®ä»»åŠ¡çš„åˆ›å»ºè€…ä¸º"WMS"
                    task.Creater = "WMS";
                    task.Remark = item.Remark;
                    // åˆ¤æ–­ä»»åŠ¡ç±»åž‹æ˜¯å¦ä¸ºå‡ºåº“ä»»åŠ¡
                    if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                    {
                        var station = _stationManagerRepository.QueryFirst(x => x.stationType == 1 && x.Roadway == "SC1");
                        task.TaskState = (int)TaskOutStatusEnum.OutNew;
                        task.CurrentAddress = item.SourceAddress;
                        task.NextAddress = station.stationChildCode;
                        task.Floor = "1F";
                        task.AGVSign = "";
                    }
                    // åˆ¤æ–­ä»»åŠ¡ç±»åž‹æ˜¯å¦ä¸ºå…¥åº“ä»»åŠ¡
                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                    {
                        var station = _stationManagerRepository.QueryFirst(x => x.stationType == 1 && x.Roadway == "SC1");
                        task.TaskState = (int)TaskInStatusEnum.InNew;
                        task.CurrentAddress = item.SourceAddress;
                        task.NextAddress = station.stationChildCode;
                        task.Floor = "1F";
                        task.AGVSign= "";
                    }
                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                    {
                        task.TaskState = (int)TaskRelocationStatusEnum.RelocationNew;
                        task.CurrentAddress = item.SourceAddress;
                        task.NextAddress = task.TargetAddress;
                        task.Floor = "1F";
                        task.AGVSign = "";
                    }
                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.CarryGroup)
                    {
                        var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                        task.TaskState = (int)TaskAGVCarryStatusEnum.CarryNew;
                        task.CurrentAddress = item.SourceAddress;
                        task.NextAddress = task.TargetAddress;
                        task.Floor = station.stationFloor;
                        task.AGVSign = "";
                    }
                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.AcrossFloorGroup)
                    {
                        var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                        if (station != null)
                        if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup)
                        {
                            var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor);
                            var station = _stationManagerRepository.QueryFirst(x => x.stationType == 1 && x.Roadway == "SC1");
                            task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew;
                            task.TaskState = (int)TaskOutStatusEnum.OutNew;
                            task.CurrentAddress = item.SourceAddress;
                            task.NextAddress = next.stationChildCode;
                            task.NextAddress = station.stationChildCode;
                            task.Floor = "1F";
                            task.AGVSign = "";
                        }
                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                            if (station != null)
                            {
                                var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor);
                                task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew;
                                task.CurrentAddress = item.SourceAddress;
                                task.NextAddress = next.stationChildCode;
                                task.Floor = station.stationFloor;
                                task.AGVSign = "";
                            }
                        }
                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.TargetAddress);
                            task.TaskState = (int)TaskAGVCarryStatusEnum.CarryNew;
                            task.CurrentAddress = item.SourceAddress;
                            task.NextAddress = task.TargetAddress;
                            task.Floor = station.stationFloor;
                            task.AGVSign = "";
                        }
                    }
                    // åˆ¤æ–­ä»»åŠ¡ç±»åž‹æ˜¯å¦ä¸ºå…¥åº“ä»»åŠ¡
                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                    {
                        if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.InboundGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationType == 1 && x.Roadway == "SC1");
                            task.TaskState = (int)TaskInStatusEnum.InNew;
                            task.CurrentAddress = item.SourceAddress;
                            task.NextAddress = station.stationChildCode;
                            task.Floor = "1F";
                            task.AGVSign = "";
                        }
                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                            if (station != null)
                            {
                                var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor);
                                task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew;
                                task.CurrentAddress = item.SourceAddress;
                                task.NextAddress = next.stationChildCode;
                                task.Floor = station.stationFloor;
                                task.AGVSign = "";
                            }
                        }
                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                            task.TaskState = (int)TaskAGVCarryStatusEnum.CarryNew;
                            task.CurrentAddress = item.SourceAddress;
                            task.NextAddress = task.TargetAddress;
                            task.Floor = station.stationFloor;
                            task.AGVSign = "";
                        }
                    }
                    // åˆ¤æ–­ä»»åŠ¡ç±»åž‹æ˜¯å¦ä¸ºç§»åº“ä»»åŠ¡
                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                    {
                        if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.RelocationGroup)
                        {
                            task.TaskState = (int)TaskRelocationStatusEnum.RelocationNew;
                            task.CurrentAddress = item.SourceAddress;
                            task.NextAddress = task.TargetAddress;
                            task.Floor = "1F";
                            task.AGVSign = "";
                        }
                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                            if (station != null)
                            {
                                var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor);
                                task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew;
                                task.CurrentAddress = item.SourceAddress;
                                task.NextAddress = next.stationChildCode;
                                task.Floor = station.stationFloor;
                                task.AGVSign = "";
                            }
                        }
                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                            task.TaskState = (int)TaskAGVCarryStatusEnum.CarryNew;
                            task.CurrentAddress = item.SourceAddress;
                            task.NextAddress = task.TargetAddress;
                            task.Floor = station.stationFloor;
                            task.AGVSign = "";
                        }
                    }
                    //判断任务类型是否为跨楼层搬运任务
                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.AcrossFloorGroup)
                    {
                        if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup)
                        {
                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
                            if (station != null)
                            {
                                var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor);
                                task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew;
                                task.CurrentAddress = item.SourceAddress;
                                task.NextAddress = next.stationChildCode;
                                task.Floor = station.stationFloor;
                                task.AGVSign = "";
                            }
                        }
                    }
                    // å°†è½¬æ¢åŽçš„任务添加到任务列表中
                    tasks.Add(task);
                }
@@ -341,7 +456,7 @@
        /// <returns></returns>
        public WebResponseContent UpdateTaskStatusToNext([NotNull] Dt_Task task)
        {
            WebResponseContent content = new WebResponseContent();
            WebResponseContent? content = new WebResponseContent();
            try
            {
                int oldState = task.TaskState;
@@ -353,6 +468,8 @@
                    if (task.TaskState == (int)TaskOutStatusEnum.AGV_OutFinish)
                    {
                        CompletedTask(task.TaskNum);
                        task.ModifyDate = DateTime.Now;
                        task.Modifier = "System";
@@ -374,56 +491,51 @@
                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
                    task.TaskState = nextStatus;
                    //if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish)
                    //{
                    //    #region å…¥åº“调用接口获取货位地址
                    if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish)
                    {
                        #region å…¥åº“调用接口获取货位地址
                    //    // TODO: è°ƒç”¨æŽ¥å£èŽ·å–è´§ä½åœ°å€
                    //    // åˆ›å»ºè¯·æ±‚对象
                    //    var taskDto = new RequestTaskDto()
                    //    {
                    //        Position = task.NextAddress,
                    //        PalletCode = task.PalletCode,
                    //    };
                        //var taskDto = new RequestTaskDto()
                        //{
                        //    Position = task.NextAddress,
                        //    PalletCode = task.PalletCode,
                        //};
                    //    // èŽ·å–WMSip地址
                    //    var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                    //    var wmsBasez = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
                    //    var requestLocation = configz.Where(x => x.ConfigKey == SysConfigKeyConst.RequestLocation).FirstOrDefault()?.ConfigValue;
                    //    if (wmsBasez == null || requestLocation == null)
                    //    {
                    //        throw new InvalidOperationException("WMS IP æœªé…ç½®");
                    //    }
                    //    var wmsIpAddrss = wmsBasez + requestLocation;
                        //// èŽ·å–WMSip地址
                        //var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                        //var wmsBasez = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
                        //var requestLocation = configz.Where(x => x.ConfigKey == SysConfigKeyConst.RequestLocation).FirstOrDefault()?.ConfigValue;
                        //if (wmsBasez == null || requestLocation == null)
                        //{
                        //    throw new InvalidOperationException("WMS IP æœªé…ç½®");
                        //}
                        //var wmsIpAddrss = wmsBasez + requestLocation;
                    //    // å‘送请求并等待响应
                    //    var abc = HttpHelper.PostAsync(wmsIpAddrss, taskDto.ToJsonString()).Result;
                    //    if (abc == null)
                    //        return content.Error();
                    //    // ååºåˆ—化响应内容
                    //    content = JsonConvert.DeserializeObject<WebResponseContent>(abc);
                        //// å‘送请求并等待响应
                        //var abc = HttpHelper.PostAsync(wmsIpAddrss, taskDto.ToJsonString()).Result;
                        //if (abc == null)
                        //    return content.Error();
                        //// ååºåˆ—化响应内容
                        //content = JsonConvert.DeserializeObject<WebResponseContent>(abc);
                        //LogFactory.WriteError($"Info_获取货位", $"获取货位,任务号:【{task.TaskNum}】,托盘号:【{task.PalletCode}】返回参数【{JsonConvert.SerializeObject(content)}】{Environment.NewLine}{Environment.NewLine}");
                    //    QuartzLogger.WriteLogToFile($"Info_获取货位", $"获取货位,任务号:【{task.TaskNum}】,托盘号:【{task.PalletCode}】返回参数【{JsonConvert.SerializeObject(content)}】{Environment.NewLine}{Environment.NewLine}");
                        //// æ£€æŸ¥çŠ¶æ€å¹¶è¿”å›ž
                        //if (!content.Status)
                        //{
                        //    return content;
                        //}
                        //// ååºåˆ—化任务数据
                        //var taskResult = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
                    //    // æ£€æŸ¥çŠ¶æ€å¹¶è¿”å›ž
                    //    if (!content.Status)
                    //    {
                    //        return content;
                    //    }
                        task.CurrentAddress = task.NextAddress;
                        task.NextAddress = task.TargetAddress;
                        task.TargetAddress = task.NextAddress;
                    //    // ååºåˆ—化任务数据
                    //    var taskResult = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
                    //    task.CurrentAddress = task.NextAddress;
                    //    task.NextAddress = taskResult.TargetAddress;
                    //    task.TargetAddress = task.NextAddress;
                    //    #endregion å…¥åº“调用接口获取货位地址
                    //}
                    //else
                    if (task.TaskState == (int)TaskInStatusEnum.SC_InFinish)
                        #endregion å…¥åº“调用接口获取货位地址
                    }
                    else if (task.TaskState == (int)TaskInStatusEnum.SC_InFinish)
                    {
                        if (App.User.UserId > 0)
                        {
@@ -440,7 +552,8 @@
                        BaseDal.DeleteData(task);
                        _taskHtyRepository.AddData(task_Hty);
                    }
                }else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.CarryGroup)
                }
                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.CarryGroup)
                {
                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskAGVCarryStatusEnum>();
@@ -448,6 +561,114 @@
                    if (task.TaskState == (int)TaskAGVCarryStatusEnum.AGV_CarryFinish)
                    {
                        task.ModifyDate = DateTime.Now;
                        task.Modifier = "System";
                        Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
                        task_Hty.TaskId = 0;
                        BaseDal.DeleteData(task);
                        _taskHtyRepository.AddData(task_Hty);
                    }
                }
                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.AcrossFloorGroup)
                {
                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskAcrossFloorStatusEnum>();
                    task.TaskState = nextStatus;
                    if (task.TaskState == (int)TaskAcrossFloorStatusEnum.SecondCarryFinish)
                    {
                        CompletedTask(task.TaskNum);
                        task.TaskState = (int)TaskAcrossFloorStatusEnum.SecondCarryFinish;
                        task.ModifyDate = DateTime.Now;
                        task.Modifier = "System";
                        Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
                        task_Hty.TaskId = 0;
                        BaseDal.DeleteData(task);
                        _taskHtyRepository.AddData(task_Hty);
                    }
                    if (task.TaskState == (int)TaskAcrossFloorStatusEnum.FirstCarryFinish)
                    {
                        Dt_StationManager stationManager = new Dt_StationManager();
                        string TaskTemplate = string.Empty;
                        if (task.Floor == "1F")
                        {
                            stationManager = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == "2F");
                            TaskTemplate = "BBB";
                        }
                        else
                        {
                            stationManager = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == "1F");
                            TaskTemplate = "CCC";
                        }
                        var taskDto = new RequestAcrossFloorTaskDto()
                        {
                            NextAddress = task.NextAddress,
                            PalletCode = task.PalletCode,
                            TaskNum = task.TaskNum
                        };
                        // èŽ·å–WMSip地址
                        var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                        var wmsBasez = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
                        var requestLocation = configz.Where(x => x.ConfigKey == SysConfigKeyConst.AcrossFloorTask).FirstOrDefault()?.ConfigValue;
                        if (wmsBasez == null || requestLocation == null)
                        {
                            throw new InvalidOperationException("WMS IP æœªé…ç½®");
                        }
                        var wmsIpAddrss = wmsBasez + requestLocation;
                        var abc = HttpHelper.PostAsync(wmsIpAddrss, taskDto.ToJsonString()).Result;
                        if (abc == null)
                            return content.Error();
                        content = JsonConvert.DeserializeObject<WebResponseContent>(abc);
                        if (!content.Status)
                        {
                            return content;
                        }
                        // ååºåˆ—化任务数据
                        var taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
                        Dt_Task taskNew = _mapper.Map<Dt_Task>(taskDTO);
                        task.Creater = "WMS";
                        taskNew.CurrentAddress = stationManager.stationChildCode;
                        taskNew.NextAddress = task.TargetAddress;
                        taskNew.Floor = stationManager.stationFloor;
                        taskNew.AGVSign = "";
                        task.TaskState = (int)TaskAcrossFloorStatusEnum.FirstCarryFinish;
                        task.ModifyDate = DateTime.Now;
                        task.Modifier = "System";
                        Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
                        task_Hty.TaskId = 0;
                        BaseDal.DeleteData(task);
                        _taskHtyRepository.AddData(task_Hty);
                        BaseDal.AddData(taskNew);
                        SendAgvTask(TaskTemplate, taskNew.TaskNum);
                        return content.OK();
                    }
                    if (task.TaskState == (int)TaskAGVCarryStatusEnum.AGV_CarryFinish)
                    {
                        CompletedTask(task.TaskNum);
                        task.ModifyDate = DateTime.Now;
                        task.Modifier = "System";
@@ -479,7 +700,7 @@
                // èŽ·å–WMSip地址
                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
                var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue;
                var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTaskStatus)?.ConfigValue;
                if (wmsBase == null || updateTask == null)
                {
                    throw new InvalidOperationException("WMS IP æœªé…ç½®");
@@ -500,6 +721,29 @@
            return content;
        }
        public void CompletedTask(int taskNum)
        {
            #region WMS同步任务完成
            var keys = new Dictionary<string, object>()
            {
                {"taskNum", taskNum}
            };
            // èŽ·å–WMSip地址
            var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
            var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
            var completeTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue;
            if (wmsBase == null || completeTask == null)
            {
                throw new InvalidOperationException("WMS IP æœªé…ç½®");
            }
            var wmsIpAddress = wmsBase + completeTask;
            var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result;
            #endregion WMS同步任务完成
        }
        /// <summary>
        /// ä»»åŠ¡å®Œæˆ
        /// </summary>
@@ -513,29 +757,9 @@
                var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
                if (task == null) return WebResponseContent.Instance.Error($"未找到该任务信息,任务号:【{taskNum}】");
                #region WMS同步任务完成
                //var keys = new Dictionary<string, object>()
                //{
                //    {"taskNum", taskNum}
                //};
                //// èŽ·å–WMSip地址
                //var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                //var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
                //var completeTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue;
                //if (wmsBase == null || completeTask == null)
                //{
                //    throw new InvalidOperationException("WMS IP æœªé…ç½®");
                //}
                //var wmsIpAddress = wmsBase + completeTask;
                //var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result;
                #endregion WMS同步任务完成
                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
                {
                    var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.NextAddress);
                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
                    task.TaskState = nextStatus;
@@ -549,7 +773,8 @@
                }
                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
                {
                    //todo åŒæ­¥åˆ°WMS
                    CompletedTask(task.TaskNum);
                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
                    task.TaskState = nextStatus;
                    task.ModifyDate = DateTime.Now;
@@ -562,8 +787,10 @@
                    _taskHtyRepository.AddData(task_Hty);
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机入库完成");
                }
                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup && task.TaskState == (int)TaskRelocationStatusEnum.SC_RelocationExecuting)
                {
                    CompletedTask(task.TaskNum);
                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskRelocationStatusEnum>();
                    task.TaskState = nextStatus;
                    task.ModifyDate = DateTime.Now;