huangxiaoqiang
2025-06-03 d0712fcf60aa1ef5ddfb8d18b583a742893a7aea
CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
@@ -100,11 +100,11 @@
        private ConveyorLineTaskCommand MapTaskCommand(Dt_Task task, ConveyorLineTaskCommand command)
        {
            // 使用正则表达式匹配类似 -数字 的模式,并替换为空字符串
            task.NextAddress = Regex.Replace(task.NextAddress, @"-(\d+)", "");
            if (Convert.ToInt32(task.NextAddress) > 1999)
            {
                task.NextAddress = (Convert.ToInt32(task.NextAddress) - 1000).ToString();
            }
            //task.NextAddress = Regex.Replace(task.NextAddress, @"-(\d+)", "");
            //if (Convert.ToInt32(task.NextAddress) > 1999)
            //{
            //    task.NextAddress = (Convert.ToInt32(task.NextAddress) - 1000).ToString();
            //}
            var comm = _mapper.Map<ConveyorLineTaskCommand>(task);
            comm.InteractiveSignal = command.InteractiveSignal;
            return comm;
@@ -200,7 +200,8 @@
            var content = CreateAndSendTask(taskDTO);
            if (content.Status)
            {
                var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
                //var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
                var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode, command.Barcode);
                if (task != null)
                {
                    var next = task.NextAddress;
@@ -285,59 +286,101 @@
        /// </summary>
        private async Task RequestWmsTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue, Dt_StationManager stationManager)
        {
            string isTrue = string.Empty;
            ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
            ResultTrayCellsStatus result = GetResultTrayCellsStatus(command, stationManager);
            if (result.SerialNos.Count == 0)
            if (childDeviceCode == "1435")
            {
                var Traycontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
                if (Traycontent.Status)
                {
                    ConsoleHelper.WriteSuccessLine("二封空框请求回流");
                    ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
                }
            }
                ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
            List<string> strings = stationManager.Roadway.Split(",").ToList();
            foreach (string item in strings)
            {
                isTrue = RequestInboundPlatform(item, result.ProductionLine, false);
                if (isTrue != null)
                var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList();
                if (serialNosError.Count > 0 || !result.Success || result.SerialNos.Count == 0)
                {
                    break;
                    WMSTaskDTO taskDTO = new WMSTaskDTO
                    {
                        TaskNum = _taskRepository.GetTaskNo().Result,
                        Grade = 1,
                        PalletCode = command.Barcode,
                        RoadWay = "CHSC4",
                        SourceAddress = childDeviceCode,
                        TargetAddress = "CHSC4",
                        TaskState = (int)TaskInStatusEnum.InNew,
                        Id = 2,
                        TaskType = (int)TaskInboundTypeEnum.InNG,
                        ProductionLine = result.ProductionLine,
                    };
                    var Taskcontent = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
                    if (Taskcontent.Status)
                    {
                        ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
                    }
                    ConsoleHelper.WriteSuccessLine($"【{stationManager.stationRemark}】【{stationManager.stationChildCode}】{result.MOMMessage}");
                    return;
                }
            }
            if (isTrue != null && isTrue != string.Empty)
            {
                WMSTaskDTO taskDTO = new WMSTaskDTO
                else
                {
                    TaskNum = _taskRepository.GetTaskNo().Result,
                    Grade = 1,
                    PalletCode = command.Barcode,
                    RoadWay = childDeviceCode,
                    SourceAddress = childDeviceCode,
                    TargetAddress = isTrue,
                    TaskState = (int)TaskOutStatusEnum.SC_OutFinish,
                    Id = 2,
                    TaskType = (int)TaskOutboundTypeEnum.OutTray,
                    ProductionLine = result.ProductionLine,
                };
                var Taskcontent = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
                if (Taskcontent.Status)
                {
                    ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
                    var Taskcontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
                    if (Taskcontent.Status)
                    {
                        ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
                    }
                }
            }
            else
            {
                var Taskcontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
                if (Taskcontent.Status)
                string isTrue = string.Empty;
                ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
                if (result.SerialNos.Count == 0)
                {
                    ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
                    var Traycontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
                    if (Traycontent.Status)
                    {
                        ConsoleHelper.WriteSuccessLine("二封空框请求回流");
                        ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
                    }
                }
                List<string> strings = stationManager.Roadway.Split(",").ToList();
                foreach (string item in strings)
                {
                    isTrue = RequestInboundPlatform(item, result.ProductionLine, false);
                    if (isTrue != null)
                    {
                        break;
                    }
                }
                if (isTrue != null && isTrue != string.Empty)
                {
                    WMSTaskDTO taskDTO = new WMSTaskDTO
                    {
                        TaskNum = _taskRepository.GetTaskNo().Result,
                        Grade = 1,
                        PalletCode = command.Barcode,
                        RoadWay = childDeviceCode,
                        SourceAddress = childDeviceCode,
                        TargetAddress = isTrue,
                        TaskState = (int)TaskOutStatusEnum.SC_OutFinish,
                        Id = 2,
                        TaskType = (int)TaskOutboundTypeEnum.OutTray,
                        ProductionLine = result.ProductionLine,
                    };
                    var Taskcontent = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
                    if (Taskcontent.Status)
                    {
                        ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
                    }
                }
                else
                {
                    var Taskcontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
                    if (Taskcontent.Status)
                    {
                        ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
                    }
                }
            }
        }
@@ -357,7 +400,7 @@
            try
            {
                StaticVariable.isLineRun = false;
                if (StaticVariable.isStackerRun)
                {
                    ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
@@ -384,6 +427,22 @@
                    LogAndSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, logMessage, conveyorLineTaskCommand.TargetAddress.ToString());
                    return;
                }
                var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                var wmsbase = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
                var address = configz.Where(x => x.ConfigKey == SysConfigKeyConst.QueryLocationFreeJZ).FirstOrDefault()?.ConfigValue;
                if (wmsbase == null || address == null)
                {
                    throw new InvalidOperationException("WMS IP 未配置");
                }
                var wmsIpAddrss = wmsbase + address;
                var x = await HttpHelper.PostAsync(wmsIpAddrss, new { RoadwayNo = "JZSC" }.ToJsonString());
                var LocationFree = JsonConvert.DeserializeObject<WebResponseContent>(x);
                if (!LocationFree.Status)
                {
                    ConsoleHelper.WriteErrorLine(LocationFree.Message);
                    return;
                }
                if (resultTrayCellsStatus.SerialNos.Count == 0)
                {
                    var Traycontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
@@ -399,14 +458,13 @@
                }
                else
                {
                    var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                    var wmsbase = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
                    var address = configz.Where(x => x.ConfigKey == SysConfigKeyConst.QueryStockInfoForRealTrayJZAsync).FirstOrDefault()?.ConfigValue;
                    if (wmsbase == null || address == null)
                    var QueryStockInfoForRealTrayJZ = configz.Where(x => x.ConfigKey == SysConfigKeyConst.QueryStockInfoForRealTrayJZAsync).FirstOrDefault()?.ConfigValue;
                    if (wmsbase == null || QueryStockInfoForRealTrayJZ == null)
                    {
                        throw new InvalidOperationException("WMS IP 未配置");
                    }
                    var wmsIpAddrss = wmsbase + address;
                    wmsIpAddrss = wmsbase + QueryStockInfoForRealTrayJZ;
                    var result = await HttpHelper.PostAsync(wmsIpAddrss, new { ProductLine = resultTrayCellsStatus.ProductionLine, PalletCode = command.Barcode }.ToJsonString());
                    var StockInfocontent = JsonConvert.DeserializeObject<WebResponseContent>(result);
                    if (StockInfocontent.Status)
@@ -419,44 +477,6 @@
                            {
                                ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
                            }
                            #region
                            //if (task != null && task.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting && task.CurrentAddress == "1537")
                            //{
                            //    ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(stationManager.stationLocation);
                            //    if (command1.InteractiveSignal != 2)
                            //    {
                            //        ConsoleHelper.WriteSuccessLine("化成实托请求入静置");
                            //        if (StaticVariable.isStackerRun == true)
                            //        {
                            //            ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
                            //        }
                            //        return;
                            //    }
                            //    else
                            //    {
                            //        ConsoleHelper.WriteWarningLine("出库任务未完成");
                            //        return;
                            //    }
                            //}
                            //else if (task != null && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
                            //{
                            //    ConsoleHelper.WriteWarningLine("已存在静置出库任务");
                            //    return;
                            //}
                            //else
                            //{
                            //    var Task = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
                            //    if (Task.Status)
                            //    {
                            //        if (StaticVariable.isStackerRun == true)
                            //        {
                            //            ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
                            //        }
                            //    }
                            //    return;
                            //}
                            #endregion
                        }
                        else
                        {
@@ -532,7 +552,7 @@
            finally
            {
                StaticVariable.isLineRun = true;
            }
            }
        }
        /// <summary>
@@ -568,7 +588,7 @@
            else if (task.Roadway.Contains("JZ"))
            {
                // 查询是否存在静置出库任务
                var outJZTask = _taskRepository.QueryData(x => x.Roadway == task.Roadway &&
                var outJZTask = _taskRepository.QueryData(x => x.Roadway == task.Roadway && task.TaskType == (int)TaskOutboundTypeEnum.Outbound &&
                    (x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting ||
                     x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish || x.TaskState == (int)TaskOutStatusEnum.OutNew));