package com.sundot.airport.common.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * 基于时间维度的绩效统计结果DTO
 * 数据结构：时间 -> [对象名称, 数值] 列表
 */
@Data
@ApiModel("基于时间维度的绩效统计结果")
public class TimeBasedPerformanceResult {

    /**
     * 时间轴标签列表
     */
    @ApiModelProperty("时间轴标签列表")
    private List<String> timeAxis;

    /**
     * 时间维度数据列表
     */
    @ApiModelProperty("时间维度数据列表")
    private List<TimeData> timeDataList;

    /**
     * 排序字段
     */
    @ApiModelProperty("绩效维度")
    private String resultField;

    /**
     * 是否为进步维度
     */
    @ApiModelProperty("是否为进步维度")
    private Boolean isProgress;

    /**
     * 时间数据内部类
     */
    @Data
    @ApiModel("时间数据")
    public static class TimeData {
        /**
         * 时间标签（如：2024-01、2024-01-01~2024-01-07等）
         */
        @ApiModelProperty("时间标签")
        private String timeLabel;

        /**
         * 该时间点下的数据项列表
         */
        @ApiModelProperty("数据项列表")
        private List<DataItem> dataItems;
    }

    /**
     * 数据项内部类
     */
    @Data
    @ApiModel("数据项")
    public static class DataItem {
        @ApiModelProperty("数据项 ID")
        private Long id;
        /**
         * 对象名称（人员姓名/科室名称/班组名称）
         */
        @ApiModelProperty("对象名称")
        private String name;

        /**
         * 数值
         */
        @ApiModelProperty("数值")
        private BigDecimal value;

        /**
         * 显示格式（如：84/+3%）
         */
        @ApiModelProperty("显示格式")
        private String displayValue;

        /**
         * 大队名称（当维度为科室或班级或人员时填写）
         */
        @ApiModelProperty("大队名称")
        private String brigadeName;

        /**
         * 科室名称（当维度为班级或人员时填写）
         */
        @ApiModelProperty("科室名称")
        private String deptName;

        /**
         * 班级名称（当维度为人员时填写）
         */
        @ApiModelProperty("班级名称")
        private String className;
    }
}