/**
 * Copyright &copy; 2021-2026 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
 */
package com.jeeplus.sys.service.dto;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.jeeplus.core.query.Query;
import com.jeeplus.core.service.dto.TreeDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;

/**
 * 机构Entity
 * @author jeeplus
 * @version 2021-05-15
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class OfficeDTO extends TreeDTO <OfficeDTO> {

	private static final long serialVersionUID = 1L;

	/**
	 * 归属区域
	 */
	@NotNull
	private AreaDTO areaDTO;

	/**
	 * 机构编码
	 */
	@Size(min = 0, max = 64)
	private String code;

	/**
	 * 机构类型（1：公司；2：部门）
	 */
	@Size(min = 1, max = 1 )
	private String type;

	/**
	 * 机构等级（1：一级；2：二级；3：三级；4：四级）
	 */
	@Size(min =1, max = 1)
	private String grade;

	/**
	 * 联系地址
	 */
	@Excel ( name = "联系地址")
	@Size(min = 0, max = 255)
	private String address;

	/**
	 * 邮政编码
	 */
	@Size(min = 0, max = 64)
	private String zipCode;

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

	/**
	 * 电话
	 */
	@Size(max = 64)
	private String phone;

	/**
	 * 传真
	 */
	@Size(max = 64)
	private String fax;

	/**
	 * 邮箱
	 */
	@Size(max = 64)
	private String email;

	/**
	 * 是否可用
	 */
	private String useable;

	/**
	 * 备注
	 */
	private String remarks;

	/**
	 * 子部门
	 */
	private List<String> childDeptList;

	/**
	 * 是否可用
	 */
	private boolean disabled = false;


	/**
	 * 登录名
	 */
	@Length(min = 1, max = 100)
	@Excel (name = "登录名")
	@Query
	private String loginName;

	/**
	 * 父级部门
	 */
	@Length(min = 1, max = 100)
	@Excel (name = "父级部门")
	@Query
	private String parentName;

	/**
	 * 密码
	 */
	@JsonIgnore
	@Length(min = 1, max = 100)
	private String password;


	/**
	 * 工号
	 */
	@Length(min = 1, max = 100)
	@Excel (name = "工号")
	private String no;

	/**
	 * 手机
	 */
	@Length(min = 0, max = 100)
	@Excel(name = "手机")
	private String mobile;

	/**
	 * 最后登录IP
	 */
	@ApiModelProperty(hidden = true)
	private String loginIp;

	/**
	 * 最后登录日期
	 */
	@ApiModelProperty(hidden = true)
	private Date loginDate;

	/**
	 * 是否允许登录
	 */
	private String loginFlag;

	/**
	 * 头像
	 */
	private String photo;

	/**
	 * 二维码
	 */
	private String qrCode;

	/**
	 * 原登录名
	 */
	private String oldLoginName;

	/**
	 * 新密码
	 */
	private String newPassword;

	/**
	 * 签名
	 */
	private String sign;

	/**
	 * 超级管理员标志
	 */
	private boolean isAdmin;

	/**
	 * 是否可用
	 */
	private boolean typeFlag = false;

}
