package com.my.common.core.domain.entity;

import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.my.common.core.domain.BaseEntity;
import lombok.Data;

/**
 * 部门表 sys_dept
 * 
 * @author ruoyi
 */
@Data
public class SysDept extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 部门ID */
    @JsonSerialize(using= ToStringSerializer.class)
    private Long deptId;

    /** 父部门ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long parentId;

    /** 祖级列表 */
    private String ancestors;

    /** 部门名称 */
    private String deptName;

    /** 显示顺序 */
    private Integer orderNum;

    /** 负责人 */
    private String leader;

    /** 联系电话 */
    private String phone;

    /** 邮箱 */
    private String email;

//    /** 部门状态:0正常,1停用 */
//    private String status;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    /** 父部门名称 */
    private String parentName;
    
    /** 子部门 */
    private List<SysDept> children = new ArrayList<SysDept>();

    //------------------------H4A新增字段------------------------------

    /** H4A机构主键guid */
    private String orgGuid;
    /**  父机构主键H4Aguid */
    private String parentGuid;
    /**
     * 机构视角下的全路径
     */
    private String allPathName;

    /**
     * 机构H4A编码
     */
    private String originalSort;

    /**
     * 机构关区代码
     */
    private String customsCode;

    /**
     * 机构状态（0、正常使用，3、逻辑删除、5、机构逻辑删除，7、人员逻辑删除）
     */
    private String status;

    /**
     * 机构内部编码
     */
    private String innerSort;

    /**
     * 机构行政级别
     * 01 中央 string
     * 03 部、省级 string
     * 04 副部、副省级 string
     * 05 司、局、地、厅级 string
     * 06 副司、副局、副地、副厅级 string
     * 07 县、处级 string
     * 08 副县、副处级 string
     * 09 乡、正科级 string
     * 10 副乡、副科级 string
     * 99 其他
     */
    private String rankCode;

    /**
     * 机构行政级别
     */
    private String rankName;

    /**
     * 机构类型
     * 1 直属机构
     * 2 内设机构
     * 3 隶属机构
     * 4 派驻机构
     * 5 虚机构
     * 9 其他机构
     * 10 总署
     */
    private String orgClass;

    /**
     * 机构在部门中的全地址(编码格式)
     */
    private String globalSort;
    // UM-部门  UN-单位  UO-虚单位 UT-虚部门
    private String orgType;


    // 机构类型：1、总关，2、隶属关、3、事业单位、4-缉私局、9、下属部门
    private String orgCategory;

    private String orgName;

    // H4A创建时间
    private String h4aCreateTime;
    private String modifyTime;

    /**
     * 部门启用状态：0启用，1-禁用
     */
    private String useFlag;

}
