package com.sundot.airport.common.dto;

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

/**
 * <b>功能名：</b>WeakModuleDetailDTO<br>
 * <b>说明：</b> 薄弱模块详细信息DTO（用于检查算法逻辑） <br>
 * <b>著作权：</b> Copyright (C) 2025 SUNDOT CORPORATION<br>
 * <b>修改履历：
 *
 * @author Simon Lin
 */
public class WeakModuleDetailDTO {

    /**
     * 模块ID（二级分类的qc_id）
     */
    private String moduleId;

    /**
     * 模块名称（二级分类名称）
     */
    private String moduleName;

    /**
     * 错题数
     */
    private Integer wrongCount;

    /**
     * 巡检问题数
     */
    private Integer problemCount;

    /**
     * 综合影响分
     */
    private BigDecimal influenceScore;

    /**
     * 排名（1=TOP1, 2=TOP2, 3=TOP3）
     */
    private Integer ranking;

    /**
     * 错题权重（使用的规则配置）
     */
    private BigDecimal wrongAnswerWeight;

    /**
     * 巡检问题权重（使用的规则配置）
     */
    private BigDecimal checkProblemWeight;

    /**
     * 统计天数（使用的规则配置）
     */
    private Integer statsDays;

    /**
     * 错题得分（错题数 × 错题权重）
     */
    private BigDecimal wrongScore;

    /**
     * 巡检问题得分（巡检问题数 × 巡检问题权重）
     */
    private BigDecimal problemScore;

    /**
     * 计算公式说明
     */
    private String calculationFormula;

    /**
     * TOP3占比配置
     */
    private BigDecimal top1Ratio;
    private BigDecimal top2Ratio;
    private BigDecimal top3Ratio;

    /**
     * 题目分配详情列表（包含出题计划）
     */
    private List<QuestionAllocationDTO> questionAllocations;

    public WeakModuleDetailDTO() {
    }

    public String getModuleId() {
        return moduleId;
    }

    public void setModuleId(String moduleId) {
        this.moduleId = moduleId;
    }

    public String getModuleName() {
        return moduleName;
    }

    public void setModuleName(String moduleName) {
        this.moduleName = moduleName;
    }

    public Integer getWrongCount() {
        return wrongCount;
    }

    public void setWrongCount(Integer wrongCount) {
        this.wrongCount = wrongCount;
    }

    public Integer getProblemCount() {
        return problemCount;
    }

    public void setProblemCount(Integer problemCount) {
        this.problemCount = problemCount;
    }

    public BigDecimal getInfluenceScore() {
        return influenceScore;
    }

    public void setInfluenceScore(BigDecimal influenceScore) {
        this.influenceScore = influenceScore;
    }

    public Integer getRanking() {
        return ranking;
    }

    public void setRanking(Integer ranking) {
        this.ranking = ranking;
    }

    public BigDecimal getWrongAnswerWeight() {
        return wrongAnswerWeight;
    }

    public void setWrongAnswerWeight(BigDecimal wrongAnswerWeight) {
        this.wrongAnswerWeight = wrongAnswerWeight;
    }

    public BigDecimal getCheckProblemWeight() {
        return checkProblemWeight;
    }

    public void setCheckProblemWeight(BigDecimal checkProblemWeight) {
        this.checkProblemWeight = checkProblemWeight;
    }

    public Integer getStatsDays() {
        return statsDays;
    }

    public void setStatsDays(Integer statsDays) {
        this.statsDays = statsDays;
    }

    public BigDecimal getWrongScore() {
        return wrongScore;
    }

    public void setWrongScore(BigDecimal wrongScore) {
        this.wrongScore = wrongScore;
    }

    public BigDecimal getProblemScore() {
        return problemScore;
    }

    public void setProblemScore(BigDecimal problemScore) {
        this.problemScore = problemScore;
    }

    public String getCalculationFormula() {
        return calculationFormula;
    }

    public void setCalculationFormula(String calculationFormula) {
        this.calculationFormula = calculationFormula;
    }

    public BigDecimal getTop1Ratio() {
        return top1Ratio;
    }

    public void setTop1Ratio(BigDecimal top1Ratio) {
        this.top1Ratio = top1Ratio;
    }

    public BigDecimal getTop2Ratio() {
        return top2Ratio;
    }

    public void setTop2Ratio(BigDecimal top2Ratio) {
        this.top2Ratio = top2Ratio;
    }

    public BigDecimal getTop3Ratio() {
        return top3Ratio;
    }

    public void setTop3Ratio(BigDecimal top3Ratio) {
        this.top3Ratio = top3Ratio;
    }

    public List<QuestionAllocationDTO> getQuestionAllocations() {
        return questionAllocations;
    }

    public void setQuestionAllocations(List<QuestionAllocationDTO> questionAllocations) {
        this.questionAllocations = questionAllocations;
    }

    @Override
    public String toString() {
        return "WeakModuleDetailDTO{" +
                "moduleId='" + moduleId + '\'' +
                ", moduleName='" + moduleName + '\'' +
                ", wrongCount=" + wrongCount +
                ", problemCount=" + problemCount +
                ", influenceScore=" + influenceScore +
                ", ranking=" + ranking +
                ", wrongAnswerWeight=" + wrongAnswerWeight +
                ", checkProblemWeight=" + checkProblemWeight +
                ", statsDays=" + statsDays +
                ", wrongScore=" + wrongScore +
                ", problemScore=" + problemScore +
                ", calculationFormula='" + calculationFormula + '\'' +
                '}';
    }
}
