package com.ruoyi.project.business.domain;

import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.domain.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.springframework.data.annotation.Transient;

/**
 * 区域表 tb_area
 *
 * @author ruoyi
 * @date 2024-04-15
 */
@Getter
@Setter
public class TbArea extends BaseEntity {
    private static final long serialVersionUID = 1L;
    
    private Long id;

    /**
     * 区域ID
     */
    private Long areaId;

    /**
     * 区域名称
     */
    @Excel(name = "区域名称", i18nCode = "area.name")
    private String areaName;

    /**
     * 区域名称
     */
    @Excel(name = "区域名称（英）", i18nCode = "area.areaNameUS")
    private String areaNameUS;

    /**
     * 区域名称
     */
    @Excel(name = "区域名称（俄）", i18nCode = "area.areaNameRU")
    private String areaNameRU;

    /**
     * 区域名称
     */
    @Excel(name = "区域名称（西）", i18nCode = "area.areaNameES")
    private String areaNameES;


    /**
     * 区域等级（关联字典）
     */
    private String areaLevel;

    /**
     * 区域等级（国际化导出用字段）
     */
    @Transient
    @Excel(name = "区域等级", i18nCode = "area.level")
    private String i18AreaLevel;

    /**
     * 上级区域
     */
    private Long parentArea;

    /**
     * 数据权限字符
     */
    private String permissionChar;

    /**
     * 删除标记（0：未删除  1：已删除）
     */
    private String delFlag;

    /**
     * 关联国家ID对应字符串
     */
    @Transient
    private String countryIds;

    /**
     * 上级区域名称
     */
    @Transient
    @Excel(name = "上级区域", i18nCode = "area.parent")
    private String parentAreaName;

    /**
     * 导出前端传入语言参数
     */
    @Transient
    private String language;

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("areaId", getAreaId())
                .append("areaName", getAreaName())
                .append("areaLevel", getAreaLevel())
                .append("parentArea", getParentArea())
                .append("permissionChar", getPermissionChar())
                .append("delFlag", getDelFlag())
                .append("createTime", getCreateTime())
                .append("createBy", getCreateBy())
                .append("updateTime", getUpdateTime())
                .append("updateBy", getUpdateBy())
                .append("remark", getRemark())
                .toString();
    }

}
