package com.sptg.permissions.api.entity;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.sptg.common.core.entity.BaseEntity;
import com.sptg.common.core.util.TreeUtil;
import lombok.Getter;
import lombok.Setter;

import java.util.List;


/**
 * title: Organization
 * package: com.sptg.permissions.api.entity
 * description: 机构-实体类
 *
 *                  
 *                 
 */
@Getter
@Setter
@TableName(value = "organization")
public class Organization extends BaseEntity implements TreeUtil.TreeEntity<Organization> {

    /**
     * 根机构Id
     */
    @TableField(value = "l_root_org_id")
    private Long rootOrgId;

    /**
     * 父级节点Id
     */
    @TableField(value = "l_pid")
    private Long pid;

    /**
     * 存储位置
     */
    @TableField(value = "s_position")
    private String position;

    /**
     * 机构名称
     */
    @TableField(value = "s_name")
    private String name;

    /**
     * 机构编码（固定字母O+5位数字前面自动补0）
     */
    @TableField(value = "s_code")
    private String code;

    /**
     * 上级机构名称
     */
    @TableField(value = "s_parent_name")
    private String parentName;

    /**
     * 负责人名称
     */
    @TableField(value = "s_person_name")
    private String personName;

    /**
     * 负责人电话
     */
    @TableField(value = "s_person_tel")
    private String personTel;

    /**
     * 省（id）
     */
    @TableField(value = "s_region_province")
    private String regionProvince;

    /**
     * 市（id）
     */
    @TableField(value = "s_region_city")
    private String regionCity;

    /**
     * 区（id）
     */
    @TableField(value = "s_region_area")
    private String regionArea;

    /**
     * 区（id）
     */
    @TableField(value = "s_region_street")
    private String regionStreet;

    /**
     * 地区（广东省广州市天河区）
     */
    @TableField(value = "s_region")
    private String region;

    /**
     * 详细地址
     */
    @TableField(value = "s_address")
    private String address;

    /**
     * 备注
     */
    @TableField(value = "s_remark")
    private String remark;

    /**
     * 层级数
     */
    @TableField(value = "i_layer_number")
    private Integer layerNumber;

    /**
     * 子节点数量（含机构数量，小区数量，部门数量）
     */
    @TableField(value = "i_client_count")
    private Integer clientCount;

    /**
     * 子部门数量
     */
    @TableField(value = "i_dept_count")
    private Integer deptCount;

    /**
     * 机构类型 { 1：内部,2：广告,3：物业 }
     */
    @TableField(value = "i_org_type")
    private Integer orgType;

    /**
     * 标识：{ 1：机构，2：小区，3：部门,4社区 }
     */
    @TableField(value = "i_flag")
    private Integer flag;

    /**
     * 是否启用：{ 1：已启动，2：未启用 }
     */
    @TableField(value = "i_is_enable")
    private Integer isEnable;

    /**
     * 创建人Id
     */
    @TableField(value = "l_create_account_id")
    private Long createAccountId;

    /**
     * 数据迁移时,传入的原数据Id
     */
    @TableField(value = "old_id")
    private String oldId;

    /* -------------------------------------------------------------------------------------------------------------- */
    //  以下为字段非表字段
    /* -------------------------------------------------------------------------------------------------------------- */

    /**
     * 设备数量
     */
    @TableField(exist = false)
    private Long deviceCount;

    /**
     * 授权状态
     * 1：已授权
     * 其他：未授权
     */
    @TableField(exist = false)
    private Integer authorizedStatus;

    /**
     * 子菜单
     */
    @TableField(exist = false)
    private List<Organization> subList;

    @Override
    public Integer getSort() {
        return 0;
    }
}