package com.sundot.airport.personnel.domain;

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

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.sundot.airport.common.annotation.Excel;
import com.sundot.airport.common.core.domain.BaseEntity;

/**
 * 月度考核指标明细对象 personnel_monthly_assessment_indicator_detail
 *
 * @author ruoyi
 * @date 2026-05-07
 */
@TableName("personnel_monthly_assessment_indicator_detail")
public class PersonnelMonthlyAssessmentIndicatorDetail extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 租户号 */
    private String tenantId;

    /** 乐观锁 */
    private Integer revision;

    /** 主键 */
    @TableId(type = IdType.AUTO)
    private Long id;

    /** 类型 */
    @Excel(name = "类型")
    private String sourceType;

    /** 来源ID */
    @Excel(name = "来源ID")
    private Long sourceId;

    /** 指标ID */
    @Excel(name = "指标ID")
    private Long indicatorId;

    /** 指标编码 */
    @Excel(name = "指标编码")
    private String indicatorCode;

    /** 指标名称 */
    @Excel(name = "指标名称")
    private String indicatorName;

    /** 所属一级分类编码 */
    @Excel(name = "所属一级分类编码")
    private String categoryCodeOne;

    /** 所属一级分类名称 */
    @Excel(name = "所属一级分类名称")
    private String categoryNameOne;

    /** 所属二级分类编码 */
    @Excel(name = "所属二级分类编码")
    private String categoryCode;

    /** 所属二级分类名称 */
    @Excel(name = "所属二级分类名称")
    private String categoryName;

    /** 分值 */
    @Excel(name = "分值")
    private BigDecimal score;

    /** 单位 */
    @Excel(name = "单位")
    private String unit;

    /** 事/病假 */
    @Excel(name = "事/病假",
            readConverterExp = "PERSONAL_LEAVE=事假," +
                    "SICK_LEAVE=病假,",
            combo = "事假,病假")
    private String leaveType;

    /** 奖罚类型 */
    @Excel(name = "奖罚类型")
    private String rewardPunishmentType;

    /** 发生次数 */
    @Excel(name = "发生次数")
    private Integer occurCount;

    /** 分值结果 */
    @Excel(name = "分值结果")
    private BigDecimal scoreResult;

    /** 奖罚金额（元） */
    @Excel(name = "奖罚金额（元）")
    private BigDecimal amountResult;

    /** 奖罚明细列表 */
    @TableField(exist = false)
    private List<PersonnelMonthlyAssessmentIndicatorRewardPunishmentDetail> personnelMonthlyAssessmentIndicatorRewardPunishmentDetailList;

    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

    public String getTenantId() {
        return tenantId;
    }

    public void setRevision(Integer revision) {
        this.revision = revision;
    }

    public Integer getRevision() {
        return revision;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setSourceType(String sourceType) {
        this.sourceType = sourceType;
    }

    public String getSourceType() {
        return sourceType;
    }

    public void setSourceId(Long sourceId) {
        this.sourceId = sourceId;
    }

    public Long getSourceId() {
        return sourceId;
    }

    public void setIndicatorId(Long indicatorId) {
        this.indicatorId = indicatorId;
    }

    public Long getIndicatorId() {
        return indicatorId;
    }

    public void setIndicatorCode(String indicatorCode) {
        this.indicatorCode = indicatorCode;
    }

    public String getIndicatorCode() {
        return indicatorCode;
    }

    public void setIndicatorName(String indicatorName) {
        this.indicatorName = indicatorName;
    }

    public String getIndicatorName() {
        return indicatorName;
    }

    public String getCategoryCodeOne() {
        return categoryCodeOne;
    }

    public void setCategoryCodeOne(String categoryCodeOne) {
        this.categoryCodeOne = categoryCodeOne;
    }

    public String getCategoryNameOne() {
        return categoryNameOne;
    }

    public void setCategoryNameOne(String categoryNameOne) {
        this.categoryNameOne = categoryNameOne;
    }

    public String getCategoryCode() {
        return categoryCode;
    }

    public void setCategoryCode(String categoryCode) {
        this.categoryCode = categoryCode;
    }

    public String getCategoryName() {
        return categoryName;
    }

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

    public void setScore(BigDecimal score) {
        this.score = score;
    }

    public BigDecimal getScore() {
        return score;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }

    public String getUnit() {
        return unit;
    }

    public String getLeaveType() {
        return leaveType;
    }

    public void setLeaveType(String leaveType) {
        this.leaveType = leaveType;
    }

    public void setRewardPunishmentType(String rewardPunishmentType) {
        this.rewardPunishmentType = rewardPunishmentType;
    }

    public String getRewardPunishmentType() {
        return rewardPunishmentType;
    }

    public void setOccurCount(Integer occurCount) {
        this.occurCount = occurCount;
    }

    public Integer getOccurCount() {
        return occurCount;
    }

    public void setScoreResult(BigDecimal scoreResult) {
        this.scoreResult = scoreResult;
    }

    public BigDecimal getScoreResult() {
        return scoreResult;
    }

    public void setAmountResult(BigDecimal amountResult) {
        this.amountResult = amountResult;
    }

    public BigDecimal getAmountResult() {
        return amountResult;
    }

    public List<PersonnelMonthlyAssessmentIndicatorRewardPunishmentDetail> getPersonnelMonthlyAssessmentIndicatorRewardPunishmentDetailList() {
        return personnelMonthlyAssessmentIndicatorRewardPunishmentDetailList;
    }

    public void setPersonnelMonthlyAssessmentIndicatorRewardPunishmentDetailList(List<PersonnelMonthlyAssessmentIndicatorRewardPunishmentDetail> personnelMonthlyAssessmentIndicatorRewardPunishmentDetailList) {
        this.personnelMonthlyAssessmentIndicatorRewardPunishmentDetailList = personnelMonthlyAssessmentIndicatorRewardPunishmentDetailList;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("tenantId", getTenantId())
                .append("revision", getRevision())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .append("id", getId())
                .append("sourceType", getSourceType())
                .append("sourceId", getSourceId())
                .append("indicatorId", getIndicatorId())
                .append("indicatorCode", getIndicatorCode())
                .append("indicatorName", getIndicatorName())
                .append("categoryCodeOne", getCategoryCodeOne())
                .append("categoryNameOne", getCategoryNameOne())
                .append("categoryCode", getCategoryCode())
                .append("categoryName", getCategoryName())
                .append("score", getScore())
                .append("unit", getUnit())
                .append("leaveType", getLeaveType())
                .append("rewardPunishmentType", getRewardPunishmentType())
                .append("occurCount", getOccurCount())
                .append("scoreResult", getScoreResult())
                .append("amountResult", getAmountResult())
                .append("personnelMonthlyAssessmentIndicatorRewardPunishmentDetailList", getPersonnelMonthlyAssessmentIndicatorRewardPunishmentDetailList())
                .toString();
    }
}
