package com.mosty.common.core.business.entity.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Objects;

/**
 *  部门信息
 * @author kevin
 * @date 2022/2/17 8:48 PM
 * @since 1.0.0
 */
@Data
@Accessors(chain = true)
public class SysDeptVO {

    /**
     * 子部门集合
     */
    @ApiModelProperty(value = "子部门集合")
    private List<SysDeptVO> childDeptList;
    /**
     * 部门id
     */
    @ApiModelProperty("部门id")
    private Long id;

    /**
     * 部门代码
     */
    @ApiModelProperty("部门代码")
    @NotBlank(message = "部门代码不能为空！")
    private String orgCode;

    /**
     * 部门名称
     */
    @ApiModelProperty("部门名称")
    @NotBlank(message = "部门名称不能为空！")
    private String orgName;


    /**
     * 部门类型
     */
    @ApiModelProperty("部门类型")
    @NotNull(message = "部门类型不能为空！")
    private String orgType;

    /**
     * 部门等级
     */
    @ApiModelProperty("部门等级")
    @NotNull(message = "部门等级不能为空！")
    private String orgLevel;

    /**
     * 部门业务类型
     */
    @ApiModelProperty("部门业务类型")
    @NotNull(message = "部门业务类型不能为空！")
    private String orgBizType;

    /**
     * 部门顺序号
     */
    @ApiModelProperty("部门顺序号")
    @NotNull(message = "部门顺序号不能为空！")
    private String orgNo;

    /**
     * 上级部门主键
     */
    @ApiModelProperty("上级部门主键")
//    @NotNull(message = "上级部门主键不能为空！")
    private Long parentId;

    /**
     * 部门名称拼音首字母
     */
    @ApiModelProperty("部门名称拼音首字母")
    private String bmpyszm;

    /**
     * 部门简称
     */
    @ApiModelProperty("部门简称")
    @NotBlank(message = "部门简称不能为空！")
    private String orgJc;

    /**
     * 部门全称
     */
    @ApiModelProperty("部门全称")
    @NotBlank(message = "部门全称不能为空！")
    private String orgQc;

    /**
     * 部门地址
     */
    @ApiModelProperty("部门地址")
    @NotBlank(message = "部门地址不能为空！")
    private String address;

    /**
     * 部门电话
     */
    @ApiModelProperty("部门电话")
    @NotBlank(message = "部门电话不能为空！")
    private String linkTel;

    /**
     * 部门联系人
     */
    @ApiModelProperty("部门联系人")
    @NotBlank(message = "部门联系人不能为空！")
    private String linkMan;

    /**
     * 部门联系人电话
     */
    @ApiModelProperty("部门联系人电话")
    @NotBlank(message = "部门联系人电话不能为空！")
    private String linkManTel;

    /**
     * 部门主页
     */
    @ApiModelProperty("部门主页")
    private String webUrl;

    /**
     * 部门邮箱
     */
    @ApiModelProperty("部门邮箱")
    private String email;

    /**
     * 部门所属行政区划
     */
    @ApiModelProperty("部门所属行政区划")
    @NotBlank(message = "部门所属行政区划电话不能为空！")
    private String xzqh;


    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String bz;

    /**
     * 根目录地址
     */
    @JsonInclude
    private String rootPath;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        SysDeptVO sysDeptVO = (SysDeptVO) o;
        return Objects.equals(childDeptList, sysDeptVO.childDeptList) && Objects.equals(id, sysDeptVO.id) && Objects.equals(orgCode, sysDeptVO.orgCode) && Objects.equals(orgName, sysDeptVO.orgName) && Objects.equals(orgLevel, sysDeptVO.orgLevel) && Objects.equals(parentId, sysDeptVO.parentId) && Objects.equals(bmpyszm, sysDeptVO.bmpyszm) && Objects.equals(rootPath, sysDeptVO.rootPath);
    }

    @Override
    public int hashCode() {
        return Objects.hash(childDeptList, id, orgCode, orgName, orgLevel, parentId, bmpyszm, rootPath);
    }
}
