package com.ruoyi.oa.domain.vo;

import lombok.Data;

import java.util.List;
import java.util.Map;

/**
 * 动态数据返回格式
 *
 * @author ruoyi
 * @date 2024-12-19
 */
@Data
public class DynamicDataVo {

    /**
     * 元数据信息
     */
    private Meta meta;

    /**
     * 响应数据（根据renderType不同而不同）
     */
    private Object response;

    /**
     * 渲染类型：text | table | chart | fix
     */
    private String renderType;

    /**
     * 元数据类
     */
    @Data
    public static class Meta {
        /**
         * 字段信息列表
         */
        private List<Field> fields;
    }

    /**
     * 字段信息类
     */
    @Data
    public static class Field {
        /**
         * 字段名（后端返回的key）
         */
        private String fieldName;

        /**
         * 字段中文名称（用于前端显示列名）
         */
        private String label;

        /**
         * 数据类型（number/string/date/bool等，前端据此处理渲染）
         */
        private String type;

        /**
         * 格式化规则（如数字千分位、日期格式等，可选）
         */
        private String format;
    }

    /**
     * 表格数据格式
     */
    @Data
    public static class TableData {
        /**
         * 列信息
         */
        private List<Map<String, Object>> columns;
        
        /**
         * 数据源
         */
        private List<Map<String, Object>> datasource;
    }

    /**
     * 图表数据格式
     */
    @Data
    public static class ChartData {
        /**
         * 图表配置选项
         */
        private Object options;
        
        /**
         * 数据集
         */
        private List<Map<String, Object>> dataset;
    }
} 