wanshenmean
8 小时以前 b6c983ac19c0c80744795e122575f4b9ac145414
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotTaskProcessor.cs
@@ -185,7 +185,7 @@
                // 将任务关联到状态对象
                state.CurrentTask = task;
                if(isScanNG)
                if (isScanNG)
                {
                    state.IsScanNG = true;
                }
@@ -456,7 +456,7 @@
        /// <param name="state">机器人当前状态</param>
        /// <param name="useSourceAddress">是否使用源地址(true 表示拆盘/换盘场景,false 表示组盘/换盘场景)</param>
        /// <returns>处理是否成功</returns>
        public async Task<bool> HandleInboundTaskAsync(RobotSocketState state, bool useSourceAddress)
        public async Task<bool> HandleInboundTaskAsync(RobotSocketState state, bool useSourceAddress, string isRoadway = null)
        {
            // 获取当前关联的任务
            var currentTask = state.CurrentTask;
@@ -468,18 +468,17 @@
            }
            // 获取巷道代码
            string roadway = currentTask.RobotSourceAddressLineCode;
            string roadway = string.Empty;
            // 根据巷道名称判断仓库 ID
            // ZYRB1 -> 1, HPRB001 -> 2, 其他 -> 3
            int warehouseId = currentTask.RobotRoadway == "注液组盘机械手" ? 1 : currentTask.RobotRoadway == "HPRB001" ? 2 : 3;
            // 任务类型(0 表示未定义,稍后根据任务类型设置)
            int taskType = 0;
            int warehouseId = 0;
            // 源地址和目标地址(初始化)
            string SourceAddress = currentTask.RobotTargetAddressLineCode;
            string TargetAddress = currentTask.RobotSourceAddressLineCode;
            // 任务类型(0 表示未定义,稍后根据任务类型设置)
            int taskType = 0;
            // 托盘代码(初始化为空)
            string PalletCode = string.Empty;
@@ -494,16 +493,33 @@
                switch (robotTaskType)
                {
                    case RobotTaskTypeEnum.GroupPallet:
                        // 组盘任务不使用源地址,直接返回 false
                        _logger.LogDebug("HandleInboundTaskAsync:组盘任务不使用源地址");
                        QuartzLogger.Debug($"HandleInboundTaskAsync:组盘任务不使用源地址", state.RobotCrane?.DeviceName ?? "Unknown");
                        return false;
                        warehouseId = 1;
                        roadway = "GWSC1";
                        break;
                    case RobotTaskTypeEnum.ChangePallet:
                        // 换盘/拆盘场景:托盘需要入库
                        taskType = TaskTypeEnum.InEmpty.GetHashCode();  // 空托盘入库
                        PalletCode = currentTask.RobotSourceAddressPalletCode;  // 使用源地址的托盘码
                        if (isRoadway == "HWSC1")
                        {
                            warehouseId = 2;
                            roadway = "HWSC1";
                        }
                        else if (isRoadway == "GWSC1")
                        {
                            warehouseId = 1;
                            roadway = "GWSC1";
                        }
                        break;
                    case RobotTaskTypeEnum.SplitPallet:
                        // 换盘/拆盘场景:托盘需要入库
                        taskType = TaskTypeEnum.InEmpty.GetHashCode();  // 空托盘入库
                        PalletCode = currentTask.RobotSourceAddressPalletCode;  // 使用源地址的托盘码
                        warehouseId = 3;
                        roadway = "CWSC1";
                        break;
                }
            }
@@ -513,17 +529,34 @@
                switch (robotTaskType)
                {
                    case RobotTaskTypeEnum.ChangePallet:
                        // 换盘/组盘场景:货物需要入库
                        taskType = TaskTypeEnum.Inbound.GetHashCode();  // 成品入库
                        PalletCode = currentTask.RobotTargetAddressPalletCode;  // 使用目标地址的托盘码
                        if (isRoadway == "HWSC1")
                        {
                            warehouseId = 2;
                            roadway = "HWSC1";
                        }
                        else if (isRoadway == "GWSC1")
                        {
                            warehouseId = 1;
                            roadway = "GWSC1";
                        }
                        break;
                    case RobotTaskTypeEnum.GroupPallet:
                        // 换盘/组盘场景:货物需要入库
                        taskType = TaskTypeEnum.Inbound.GetHashCode();  // 成品入库
                        PalletCode = currentTask.RobotTargetAddressPalletCode;  // 使用目标地址的托盘码
                        warehouseId = 1;
                        roadway = "GWSC1";
                        break;
                    case RobotTaskTypeEnum.SplitPallet:
                        // 拆盘任务不使用目标地址
                        _logger.LogDebug("HandleInboundTaskAsync:拆盘任务不使用目标地址");
                        QuartzLogger.Debug($"HandleInboundTaskAsync:拆盘任务不使用目标地址", state.RobotCrane?.DeviceName ?? "Unknown");
                        return true;
                        break;
                }
            }
@@ -532,8 +565,8 @@
            {
                PalletCode = PalletCode,                    // 托盘条码
                SourceAddress = SourceAddress ?? string.Empty,  // 源地址
                TargetAddress = TargetAddress ?? string.Empty,  // 目标地址
                Roadway = roadway,                          // 巷道
                TargetAddress = roadway ?? string.Empty,  // 目标地址
                Roadway = roadway ?? string.Empty,             // 巷道
                WarehouseId = warehouseId,                   // 仓库 ID
                PalletType = 1,                             // 托盘类型(默认为1)
                TaskType = taskType                         // 任务类型(入库/空托盘入库)