package com.sundot.airport.ledger.dto;

import lombok.Data;

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

/**
 * <b>功能名：</b>GroupPortraitDTO<br>
 * <b>说明：</b> 组织画像（小组/通道维度）DTO<br>
 * <b>著作权：</b> Copyright (C) 2025 SUNDOT CORPORATION<br>
 *
 * @author Claude
 */
@Data
public class GroupPortraitDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 部门ID
     */
    private Long deptId;

    /**
     * 部门名称
     */
    private String deptName;

    /**
     * 部门类型（班组/通道/科室等）
     */
    private String deptType;

    /**
     * 查询周期
     */
    private String period;

    /**
     * 小组成员数
     */
    private Integer memberCount;

    /**
     * 各维度得分列表
     */
    private List<DimensionScore> dimensions;

    /**
     * 综合评分
     */
    private BigDecimal totalScore;

    /**
     * 维度得分项
     */
    @Data
    public static class DimensionScore implements Serializable {
        private static final long serialVersionUID = 1L;

        /**
         * 维度名称
         */
        private String name;

        /**
         * 小组六维度均值（员工平均）
         */
        private BigDecimal groupAverageScore;

        /**
         * 基础分
         */
        private BigDecimal baseScore;

        /**
         * 小组维度特有加分
         */
        private BigDecimal addScore;

        /**
         * 小组维度特有减分
         */
        private BigDecimal subtractScore;

        /**
         * 特有合计（加分-减分）
         */
        private BigDecimal specialTotal;

        /**
         * 最终分值（基础分+均值+特有合计）
         */
        private BigDecimal finalScore;

        /**
         * 权重
         */
        private BigDecimal weight;

        /**
         * 贡献分值（最终分值*权重/100）
         */
        private BigDecimal contribution;

        /**
         * 特有加减分明细列表
         */
        private List<SpecialDetail> specialDetails;
    }

    /**
     * 特有加减分明细项
     */
    @Data
    public static class SpecialDetail implements Serializable {
        private static final long serialVersionUID = 1L;

        /**
         * 二级指标
         */
        private String level2Name;

        /**
         * 三级指标
         */
        private String level3Name;

        /**
         * 四级指标
         */
        private String level4Name;

        /**
         * 分值（正数为加分，负数为减分）
         */
        private BigDecimal score;

        /**
         * 事件描述
         */
        private String eventDesc;

        /**
         * 事件时间
         */
        private String eventTime;

        /**
         * 类型（加分/减分）
         */
        private String type;
    }
}
