package com.sundot.airport.exam.dto;

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

/**
 * <b>功能名：</b>DeptProfileDTO<br>
 * <b>说明：</b> 组织画像响应DTO <br>
 * <b>著作权：</b> Copyright (C) 2025 SUNDOT CORPORATION<br>
 * <b>修改履历：
 *
 * @author Claude
 */
public class DeptProfileDTO implements Serializable {

    private static final long serialVersionUID = 1L;

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

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

    /**
     * 部门类型（TEAM=班组, DEPT=科室, SITE=站级）
     */
    private String deptType;

    /**
     * 统计周期
     */
    private String period;

    /**
     * 组织平均分
     */
    private BigDecimal avgScore;

    /**
     * 排名统计
     */
    private RankingStatistics rankingStats;

    /**
     * 总错题数量
     */
    private Integer totalErrors;

    /**
     * 各分类错题统计（动态）
     */
    private java.util.List<CategoryErrorStatistics> categoryErrors;

    /**
     * 排名统计内部类
     */
    public static class RankingStatistics implements Serializable {
        private static final long serialVersionUID = 1L;

        /**
         * 全站排名
         */
        private Integer siteRanking;

        /**
         * 全站同级部门总数
         */
        private Integer siteTotalDepts;

        /**
         * 本科室排名（仅班组级别有）
         */
        private Integer deptRanking;

        /**
         * 本科室同级班组总数（仅班组级别有）
         */
        private Integer deptTotalTeams;

        public Integer getSiteRanking() {
            return siteRanking;
        }

        public void setSiteRanking(Integer siteRanking) {
            this.siteRanking = siteRanking;
        }

        public Integer getSiteTotalDepts() {
            return siteTotalDepts;
        }

        public void setSiteTotalDepts(Integer siteTotalDepts) {
            this.siteTotalDepts = siteTotalDepts;
        }

        public Integer getDeptRanking() {
            return deptRanking;
        }

        public void setDeptRanking(Integer deptRanking) {
            this.deptRanking = deptRanking;
        }

        public Integer getDeptTotalTeams() {
            return deptTotalTeams;
        }

        public void setDeptTotalTeams(Integer deptTotalTeams) {
            this.deptTotalTeams = deptTotalTeams;
        }
    }

    /**
     * 分类错题统计内部类
     */
    public static class CategoryErrorStatistics implements Serializable {
        private static final long serialVersionUID = 1L;

        /**
         * 分类ID
         */
        private String categoryId;

        /**
         * 分类名称
         */
        private String categoryName;

        /**
         * 错题数量
         */
        private Integer errorCount;

        public String getCategoryId() {
            return categoryId;
        }

        public void setCategoryId(String categoryId) {
            this.categoryId = categoryId;
        }

        public String getCategoryName() {
            return categoryName;
        }

        public void setCategoryName(String categoryName) {
            this.categoryName = categoryName;
        }

        public Integer getErrorCount() {
            return errorCount;
        }

        public void setErrorCount(Integer errorCount) {
            this.errorCount = errorCount;
        }
    }

    // Getters and Setters

    public Long getDeptId() {
        return deptId;
    }

    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    public String getDeptType() {
        return deptType;
    }

    public void setDeptType(String deptType) {
        this.deptType = deptType;
    }

    public String getPeriod() {
        return period;
    }

    public void setPeriod(String period) {
        this.period = period;
    }

    public BigDecimal getAvgScore() {
        return avgScore;
    }

    public void setAvgScore(BigDecimal avgScore) {
        this.avgScore = avgScore;
    }

    public RankingStatistics getRankingStats() {
        return rankingStats;
    }

    public void setRankingStats(RankingStatistics rankingStats) {
        this.rankingStats = rankingStats;
    }

    public Integer getTotalErrors() {
        return totalErrors;
    }

    public void setTotalErrors(Integer totalErrors) {
        this.totalErrors = totalErrors;
    }

    public java.util.List<CategoryErrorStatistics> getCategoryErrors() {
        return categoryErrors;
    }

    public void setCategoryErrors(java.util.List<CategoryErrorStatistics> categoryErrors) {
        this.categoryErrors = categoryErrors;
    }
}
