package org.springblade.thirdparty.mk.pojo.dto;

import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 *  mk 推送机构部门参数
 * @author bfhuange
 * @date 2024/9/24
 */
@Data
public class MKPushOrgDeptDTO implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    //=================必填项开始================
    /**
     * 唯一标识 必填，不能保证唯一的情况下，建议id前面拼接上组织类型。 例：org:1111，dept:22222,person:333333,group:555555,post:6666666 进阶情况，组织来源多个不同系统，还可以拼接上来源系统唯一id
     */
    private String fdId;
    /**
     * 是否有效,该属性决定该组织架构是否删除 必填
     */
    private Boolean fdIsAvailable;
    /**
     * 名称 必填
     */
    private String fdName;
    /**
     * 组织架构类型: org-机构,dept-部门
     */
    private String fdOrgType;
    /**
     * 来源系统标识:例如：EKP
     */
    private String fdSourceSystem;
    //=================必填项结束================

    /**
     * 所在部门-主部门，只能一个，有值情况：当type为org,dept,post,person时，为空表示在根节点
     */
    private String fdParent;
    /**
     * 编号
     */
    private String fdNo;
    /**
     * 排序号
     */
    private Integer fdOrder;

    /**
     * 映射MK的fdId,用来和Mk数据进行绑定
     */
    private String fdElementId;
    /**
     * 指定同步到mk的哪个节点下，有parent则以parent为准，没有则以mkParent为准。只能选择机构和部门，同步对象如果是机构，则mkParent也只能是机构，机构不能挂部门下
     */
    private String mkParent;
    /**
     * 部门领导，有值情况：当type为org,dept,post
     */
    private String fdThisLeader;
    /**
     * 置空属性:字段传空过来，不想Mk这边也更新为空？可以指定这个属性。包含的字段如果为空则会被置为空，不包含的如果为空则不会更新。例如：["fdName","fdNo","fdEmail"]
     */
    private List<String> nullValueProps;

    //=======================一般不用的字段开始=========================
    /**
     * 机构简称
     */
    private String fdAbbreviation;
    /**
     * 地址1
     */
    private String fdAddress1;
    /**
     * 地址2
     */
    private String fdAddress2;
    /**
     * 管理员,例：["113","43424",..]
     */
    private List<String> fdAdmins;
    /**
     * 营业执照编号
     */
    private String fdBusinessLicenseNo;
    /**
     * 群组分类id，有值情况：当type为group时
     */
    private String fdCategoryName;
    /**
     * 扩展属性，未定义的字段并且需要同步的可以传到此json对象中，同步前需要去后台管理增加对应key值的扩展字段。例：{"birthDate":"1900‐01‐01","education":"本科","isSocialRecruitment":"true"}
     */
    private Object fdCustomProps;
    /**
     * 说明
     */
    private String fdDesc;
    /**
     * 外部组织显示位置:默认情况是内部组织都在行政组织树，外部组织都在生态组织树。组织架构开启一体化后，外部组织既可以出现在行政树下面也可以出现在生态组织树下。但行政里面的外部组织必须要有顶级机构。是否显示在生态组织目录：true/null-显示在生态组织目录，false-显示在行政组织
     */
    private Boolean fdEosShowType;
    /**
     * 外部组织分类code：MK有外部组织分类，需要提前在管理端建好
     */
    private String fdExternalCode;
    /**
     * 是否外部组织：默认不填表示内部组织，true表示外部组织，外部组织需要externalCode
     */
    private Boolean fdIsExternal;
    /**
     * 关键字
     */
    private String fdKeyword;
    /**
     * 多语言字段：例：{"fdNameUs":"Tom","fdNameCn":"张三"}
     */
    private Object fdLangProps;
    /**
     * 是否法人
     */
    private Boolean fdLegalPerson;
    /**
     * 上级领导，有值情况：当type为org,dept
     */
    private String fdSuperLeader;
    /**
     * 多维分类编号，当fdOrgType为org(机构),dept(部门) 时生效，表示当前组织/部门是该多维分类下的顶层组织。注：后续不允许变更。
     */
    private String fdVirtualizeNo;
    /**
     * 可见性：fdVisibleType:1-仅自己 2-所在组织同级及下级 3-指定组织/人员：例： {"fdVisibleType":1,"visibleOrgList":[{"fdId":"1feiglp6sw132weiw37cucsm1kqoe29hu4w0","fdName":"刘芬"}]}
     */
    private Object fdVisible;
    /**
     * 机构网站地址
     */
    private String fdWebAddress;
}
