wanshenmean
12 小时以前 2f7c7a0621ee2e84c47ccd054889a71e8ce4fdd0
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotPrefixCommandHandler.cs
@@ -270,28 +270,47 @@
                    // 换盘任务:根据阶段区分处理
                    if (state.ChangePalletPhase == 2)
                    {
                        // Phase 2:放正常电芯到目标托盘完成,递增计数
                        state.RobotTaskTotalNum += positions.Length;
                        if (task != null)
                            task.RobotTaskTotalNum -= positions.Length;
                        if (isFlowA)
                        {
                            // 流向A Phase2:放假电芯到目标托盘,不调用 API,不递增计数
                            // 仅更新状态
                            // 流向A:不调用 API,仅递增计数
                        }
                        else
                        {
                            // 流向B Phase2:放正常电芯,递增计数
                            state.RobotTaskTotalNum += positions.Length;
                            if (task != null)
                                task.RobotTaskTotalNum -= positions.Length;
                            // 构建库存 DTO 并调用 ChangePalletAsync API
                            // 流向B:调用换盘 API
                            var stockDTO = RobotTaskProcessor.BuildStockDTO(state, positions);
                            var result = _taskProcessor.PostGroupPalletAsync(nameof(ConfigKey.ChangePalletAsync), stockDTO);
                            putSuccess = result.Data.Status && result.IsSuccess;
                        }
                        // 切回 Phase 1,继续取正常电芯
                        state.ChangePalletPhase = 1;
                    }
                    else if (state.ChangePalletPhase == 4)
                    {
                        // 流向B Phase4:放假电芯到5号位,不调用 API,不递增计数,释放点位
                        _fakeBatteryPositionService.MarkAsAvailable(positions.ToList());
                        if (isFlowA)
                        {
                            // 流向A:放假电芯到目标托盘,递增计数,调用换盘 API
                            state.RobotTaskTotalNum += positions.Length;
                            if (task != null)
                                task.RobotTaskTotalNum -= positions.Length;
                            var stockDTO = RobotTaskProcessor.BuildStockDTO(state, positions);
                            var result = _taskProcessor.PostGroupPalletAsync(nameof(ConfigKey.ChangePalletAsync), stockDTO);
                            putSuccess = result.Data.Status && result.IsSuccess;
                        }
                        else
                        {
                            // 流向B:放假电芯到5号位,释放点位
                            _fakeBatteryPositionService.MarkAsAvailable(positions.ToList());
                        }
                        // 切回 Phase 3,继续取假电芯
                        state.ChangePalletPhase = 3;
                    }
                    else
                    {