package com.sundot.airport.blocked.domain;

import java.math.BigDecimal;
import java.util.Date;

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 com.fasterxml.jackson.annotation.JsonFormat;
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.annotation.Excel.Type;
import com.sundot.airport.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 速率对象 blocked_rate
 *
 * @author ruoyi
 * @date 2026-04-13
 */
@TableName("blocked_rate")
public class BlockedRate extends BaseEntity {
    private static final long serialVersionUID = 1L;

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

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

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

    /**
     * 日期（格式：yyyy-MM-dd）
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "日期", dateFormat = "yyyy-MM-dd")
    private Date statDate;

    /**
     * 旅检国内区域平均速率（高峰期时段）
     */
    @Excel(name = "旅检国内区域平均速率")
    private BigDecimal travelInspectionDomesticAvgRatePeak;

    /**
     * 当班大队ID
     */
    private Long dutyBrigadeId;

    /**
     * 当班大队名称
     */
    @Excel(name = "当班大队")
    private String dutyBrigadeName;

    /**
     * T1-A区速率（高峰期时段）
     */
    @Excel(name = "T1-A区速率")
    private BigDecimal t1AAreaRatePeak;

    /**
     * T1-B区速率（高峰期时段）
     */
    @Excel(name = "T1-B区速率")
    private BigDecimal t1BAreaRatePeak;

    /**
     * T2-国内速率（高峰期时段）
     */
    @Excel(name = "T2-国内速率")
    private BigDecimal t2DomesticRatePeak;

    /**
     * T2-国际速率（高峰期时段）
     */
    @Excel(name = "T2-国际速率")
    private BigDecimal t2InternationalRatePeak;

    /**
     * 班次（字典:shift【DAY=白班;NIGHT=夜班】）
     */
    @Excel(name = "班次",
            readConverterExp = "DAY=白班," +
                    "NIGHT=夜班,",
            combo = "白班,夜班",
            type = Type.EXPORT)
    private String shift;

    /**
     * 班次描述
     */
    @Excel(name = "班次", type = Type.IMPORT)
    @TableField(exist = false)
    private String shiftDesc;

    /**
     * T2-中转（高峰期时段）
     */
    @Excel(name = "T2-中转")
    private BigDecimal t2TransferRatePeak;

    /**
     * 国际及中转区域平均速率（高峰期时段）
     */
    @Excel(name = "国际及中转区域平均速率")
    private BigDecimal internationalTransferAvgRatePeak;

    /**
     * 查询开始日期
     */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date startDate;

    /**
     * 查询结束日期
     */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date endDate;

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

    public String getTenantId() {
        return tenantId;
    }

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

    public Long getRevision() {
        return revision;
    }

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

    public Long getId() {
        return id;
    }

    public void setStatDate(Date statDate) {
        this.statDate = statDate;
    }

    public Date getStatDate() {
        return statDate;
    }

    public void setTravelInspectionDomesticAvgRatePeak(BigDecimal travelInspectionDomesticAvgRatePeak) {
        this.travelInspectionDomesticAvgRatePeak = travelInspectionDomesticAvgRatePeak;
    }

    public BigDecimal getTravelInspectionDomesticAvgRatePeak() {
        return travelInspectionDomesticAvgRatePeak;
    }

    public void setDutyBrigadeId(Long dutyBrigadeId) {
        this.dutyBrigadeId = dutyBrigadeId;
    }

    public Long getDutyBrigadeId() {
        return dutyBrigadeId;
    }

    public void setDutyBrigadeName(String dutyBrigadeName) {
        this.dutyBrigadeName = dutyBrigadeName;
    }

    public String getDutyBrigadeName() {
        return dutyBrigadeName;
    }

    public void setT1AAreaRatePeak(BigDecimal t1AAreaRatePeak) {
        this.t1AAreaRatePeak = t1AAreaRatePeak;
    }

    public BigDecimal getT1AAreaRatePeak() {
        return t1AAreaRatePeak;
    }

    public void setT1BAreaRatePeak(BigDecimal t1BAreaRatePeak) {
        this.t1BAreaRatePeak = t1BAreaRatePeak;
    }

    public BigDecimal getT1BAreaRatePeak() {
        return t1BAreaRatePeak;
    }

    public void setT2DomesticRatePeak(BigDecimal t2DomesticRatePeak) {
        this.t2DomesticRatePeak = t2DomesticRatePeak;
    }

    public BigDecimal getT2DomesticRatePeak() {
        return t2DomesticRatePeak;
    }

    public void setT2InternationalRatePeak(BigDecimal t2InternationalRatePeak) {
        this.t2InternationalRatePeak = t2InternationalRatePeak;
    }

    public BigDecimal getT2InternationalRatePeak() {
        return t2InternationalRatePeak;
    }

    public void setShift(String shift) {
        this.shift = shift;
    }

    public String getShift() {
        return shift;
    }

    public String getShiftDesc() {
        return shiftDesc;
    }

    public void setShiftDesc(String shiftDesc) {
        this.shiftDesc = shiftDesc;
    }

    public void setT2TransferRatePeak(BigDecimal t2TransferRatePeak) {
        this.t2TransferRatePeak = t2TransferRatePeak;
    }

    public BigDecimal getT2TransferRatePeak() {
        return t2TransferRatePeak;
    }

    public void setInternationalTransferAvgRatePeak(BigDecimal internationalTransferAvgRatePeak) {
        this.internationalTransferAvgRatePeak = internationalTransferAvgRatePeak;
    }

    public BigDecimal getInternationalTransferAvgRatePeak() {
        return internationalTransferAvgRatePeak;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    @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("statDate", getStatDate())
                .append("travelInspectionDomesticAvgRatePeak", getTravelInspectionDomesticAvgRatePeak())
                .append("dutyBrigadeId", getDutyBrigadeId())
                .append("dutyBrigadeName", getDutyBrigadeName())
                .append("t1AAreaRatePeak", getT1AAreaRatePeak())
                .append("t1BAreaRatePeak", getT1BAreaRatePeak())
                .append("t2DomesticRatePeak", getT2DomesticRatePeak())
                .append("t2InternationalRatePeak", getT2InternationalRatePeak())
                .append("shift", getShift())
                .append("t2TransferRatePeak", getT2TransferRatePeak())
                .append("internationalTransferAvgRatePeak", getInternationalTransferAvgRatePeak())
                .toString();
    }
}
