/**
 * 合并多个批次的响应数据
 * @param responses 所有批次的响应数据
 * @param userPageSize 用户设置的每页数量
 * @param userCurrentPage 用户当前页码
 * @returns 合并后的响应数据
 */
export function mergeBatchResponses(responses, userPageSize, userCurrentPage) {
    if (responses.length === 0) {
        return { tableData: [], paging: {}, tableCount: 0 };
    }
    // 合并所有批次的 tableData（按批次顺序合并）
    const allTableData = [];
    let tableCount = null;
    let tableColumns = null;
    let primaryKey = null;
    responses.forEach((res) => {
        // 处理数据格式：可能是 { data: { tableData, ... } } 或 { tableData, ... }
        const finalResult = ((res === null || res === void 0 ? void 0 : res.data) || res);
        const { tableData, tableColumns: _tableColumns, primaryKey: _primaryKey, paging: _paging, } = finalResult || {};
        if (Array.isArray(tableData)) {
            allTableData.push(...tableData);
        }
        // tableCount：总条数来自 paging.totalCount
        if (tableCount === null && _paging != null) {
            const pagingData = _paging;
            const count = pagingData === null || pagingData === void 0 ? void 0 : pagingData.totalCount;
            if (count != null) {
                tableCount = Number(count);
            }
        }
        // 获取 tableColumns（应该所有批次返回的都一样，取第一个非空值）
        if (tableColumns === null && _tableColumns !== undefined && _tableColumns !== null) {
            tableColumns = _tableColumns;
        }
        // 获取 primaryKey（应该所有批次返回的都一样，取第一个非空值）
        if (primaryKey === null && _primaryKey !== undefined && _primaryKey !== null) {
            primaryKey = String(_primaryKey);
        }
    });
    // 构建合并后的响应
    const mergedResult = {
        tableData: allTableData,
        tableCount: tableCount !== null && tableCount !== void 0 ? tableCount : 0,
    };
    if (tableColumns !== null) {
        mergedResult.tableColumns = tableColumns;
    }
    if (primaryKey !== null) {
        mergedResult.primaryKey = primaryKey;
    }
    // 构建分页信息（基于用户设置的 pageSize）
    mergedResult.paging = {
        currentPage: userCurrentPage,
        pageSize: userPageSize,
        totalCount: tableCount !== null && tableCount !== void 0 ? tableCount : 0,
        total: tableCount !== null && tableCount !== void 0 ? tableCount : 0,
    };
    return mergedResult;
}
