package com.ruoyi.tc.entity;

import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * 单位信息
 * @author du
 * @since 2024/11/13 9:13
 */
@Data
@ApiModel("单位信息")
@TableName(value = "unit_info")
public class Unit implements Serializable {
    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.AUTO,value = "id")
    private Long id;


    @NotBlank
    @ApiModelProperty("单位名称/用户昵称")
    @Excel(name = "单位名称*",required = true)
    private String nickName;

    @NotNull
    @ApiModelProperty("组织机构（部门id）")
    private Long deptId;

    @ApiModelProperty("组织机构名称（部门名称）")
    @Excel(name = "组织机构名称*",required = true)
    @TableField(exist = false)
    private String deptName;

    @ApiModelProperty("组织机构名称（加上父级deptId部门名称）,返回体")
    @TableField(exist = false)
    private String ancestors;


    @ApiModelProperty("单位简称")
    @Excel(name = "单位简称")
    private String dwjc;

    @ApiModelProperty("所属区域-省")
    @Excel(name = "所属区域-省*")
    private String ssqyprovince;

    @ApiModelProperty("所属区域-市")
    @Excel(name = "所属区域-市")
    private String ssqycity;

    @ApiModelProperty("所属区域-县")
    @Excel(name = "所属区域-区（县）")
    private String ssqycounty;

    @ApiModelProperty("所属监管单位")
    private String ssjgdw;

    @ApiModelProperty("上级单位")
    @Excel(name = "上级单位")
    private String sjdw;

    @ApiModelProperty("单位详细地址")
    @Excel(name = "单位详细地址")
    private String dwxxdz;

    @ApiModelProperty("所属行业")
    @Excel(name = "所属行业",dictType="sshy",comboReadDict = true)
    private String sshy;

    @ApiModelProperty("单位类型")
    @Excel(name = "单位类型",dictType="dwlx",comboReadDict = true )
    private String dwlx;

    @ApiModelProperty("单位标签（多个标签逗号隔开）")
    @Excel(name = "单位标签（多个标签逗号隔开）")
    private String dwbq;

    @ApiModelProperty("单位角色")
    @Excel(name = "单位角色",dictType="dwjs",comboReadDict = true)
    private String dwjs;

    @NotBlank
    @ApiModelProperty("统一社会信用代码/用户账号")
    @Excel(name = "统一社会信用代码",required = true)
    private String userName;

    @ApiModelProperty("是否关基单位")
    @Excel(name="是否关基单位",dictType="gjdw",comboReadDict = true)
    private String gjdw;

    @ApiModelProperty("日常运营负责部门")
    private String rcyyfzbm;

    @ApiModelProperty("单位负责人姓名")
    @Excel(name="单位负责人")
    private String dwfzrxm;

    @ApiModelProperty("单位负责人联系方式")
    @Excel(name="单位负责人联系方式")
    private String dwfzrlxfs;

    @ApiModelProperty("单位负责人邮箱")
    @Excel(name="单位负责人邮箱")
    private String dwfzryx;

    @ApiModelProperty("单位负责人职务职称")
    @Excel(name="单位负责人职务职称")
    private String dwfzrzwzc;

    @ApiModelProperty("分管负责人姓名")
    @Excel(name="分管负责人")
    private String fgfzrxm;

    @ApiModelProperty("分管负责人联系方式")
    @Excel(name="分管负责人联系方式")
    private String fgfzrlxfs;

    @ApiModelProperty("分管负责人邮箱")
    @Excel(name="分管负责人邮箱")
    private String fgfzryx;

    @ApiModelProperty("分管负责人职务职称")
    @Excel(name="分管负责人职务职称")
    private String fgfzrzwzc;

    @ApiModelProperty("部门负责人姓名")
    @Excel(name="部门负责人")
    private String bmfzrxm;

    @ApiModelProperty("部门负责人联系方式")
    @Excel(name="部门负责人联系方式")
    private String bmfzrlxfs;

    @ApiModelProperty("部门负责人邮箱")
    @Excel(name="部门负责人邮箱")
    private String bmfzryx;

    @ApiModelProperty("部门负责人职务职称")
    @Excel(name="部门负责人职务职称")
    private String bmfzrzwzc;

    @ApiModelProperty("第一联系人姓名")
    @Excel(name="第一联系人")
    private String dylxrxm;

    @ApiModelProperty("第一联系人联系方式")
    @Excel(name="第一联系人联系方式")
    private String dylxrlxfs;

    @ApiModelProperty("第一联系人邮箱")
    @Excel(name="第一联系人邮箱")
    private String dylxryx;

    @ApiModelProperty("第一联系人职务职称")
    @Excel(name="第一联系人职务职称")
    private String dylxrzwzc;

    @ApiModelProperty("单位其他联系人")
    @TableField(exist = false)
    private List<UnitOtherConcat> otherConcat;


    @ApiModelProperty("检查信息列表")
    @TableField(exist = false)
    private List<ExamineInfo> jcxxList;

    @ApiModelProperty("官网")
    @Excel(name = "官网")
    private String gw;

    @ApiModelProperty("地图位置-经度")
    @Excel(name = "地图位置-经度")
    private String dtjd;

    @ApiModelProperty("地图位置-纬度")
    @Excel(name = "地图位置-纬度")
    private String dtwd;

    @ApiModelProperty("单位直属性质")
    @Excel(name = "单位直属性质", dictType="dwzsxz",comboReadDict = true)
    private String dwzsxz;

    /**
     * 创建者
     */
    @ApiModelProperty("创建者")
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /**
     * 创建id
     */
    @JSONField(serialize = false)
    @TableField(fill = FieldFill.INSERT)
    private Long createId;

    /**
     * 更新id
     */
    @JSONField(serialize = false)
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateId;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新者
     */
    @ApiModelProperty("更新者")
    @TableField(fill = FieldFill.UPDATE)
    private String updateBy;

    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    @ApiModelProperty("备注")
    @Excel(name = "备注")
    private String remark;

    @ApiModelProperty("删除标志（0代表存在 2代表删除）")
    private String delFlag;
}
