package com.xinelu.manage.domain.agency;

import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 机构信息对象 agency
 *
 * @author xinelu
 * @date 2024-02-26
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "机构信息对象", description = "agency")
public class Agency extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    private Long id;

    /**
     * 上级机构id
     */
    @ApiModelProperty(value = "上级机构id")
    @Excel(name = "上级机构")
    private Long parentId;

    /**
     * 所属机构类别id
     */
    @ApiModelProperty(value = "所属机构类别id")
    private Long agencyCategoryId;

    /**
     * 所属机构类别名称
     */
    @ApiModelProperty(value = "所属机构类别名称")
    @Excel(name = "所属机构类别名称")
    private String agencyCategoryName;

    /**
     * 所属行政区域编码
     */
    @ApiModelProperty(value = "所属行政区域编码")
    @Excel(name = "所属行政区域编码")
    private String areaCode;

    /**
     * 所属行政区域名称
     */
    @ApiModelProperty(value = "所属行政区域名称")
    @Excel(name = "所属行政区域名称")
    private String areaName;

    /**
     * 机构名称
     */
    @ApiModelProperty(value = "机构名称")
    @Excel(name = "机构名称")
    private String agencyName;

    /**
     * 机构代码
     */
    @ApiModelProperty(value = "机构代码")
    @Excel(name = "机构代码")
    private String agencyCode;

    /**
     * 机构简称
     */
    @ApiModelProperty(value = "机构简称")
    @Excel(name = "机构简称")
    private String agencyAbbreviation;

    /**
     * 机构状态，ON：启用，OFF：禁用
     */
    @ApiModelProperty(value = "机构状态，ON：启用，OFF：禁用")
    @Excel(name = "机构状态，ON：启用，OFF：禁用")
    private String agencyStatus;

    /**
     * 节点类型，节点类型，卫健委：HEALTH_COMMISSION，医保局：MEDICAL_INSURANCE_BUREAU，医院：HOSPITAL，院区：CAMPUS，药店：PHARMACY，科室：DEPARTMENT，病区：WARD，中国：CHINA，省份：PROVINCE
     */
    @ApiModelProperty(value = "节点类型，节点类型，卫健委：HEALTH_COMMISSION，医保局：MEDICAL_INSURANCE_BUREAU，医院：HOSPITAL，院区：CAMPUS，药店：PHARMACY，科室：DEPARTMENT，病区：WARD，中国：CHINA，省份：PROVINCE")
    @Excel(name = "节点类型，医院：HOSPITAL，院区：CAMPUS")
    private String nodeType;

    /**
     * 组织机构编码
     */
    @ApiModelProperty(value = "组织机构编码")
    @Excel(name = "组织机构编码")
    private String orgAgencyCode;

    /**
     * 机构分类管理类别，非营利性医疗机构：NON_PROFIT_MEDICAL_AGENCY，营利性医疗机构：FOR_PROFIT_MEDICAL_AGENCY，其他卫生机构：OTHER_HEALTH_AGENCY
     */
    @ApiModelProperty(value = "机构分类管理类别，非营利性医疗机构：NON_PROFIT_MEDICAL_AGENCY，营利性医疗机构：FOR_PROFIT_MEDICAL_AGENCY，其他卫生机构：OTHER_HEALTH_AGENCY")
    @Excel(name = "机构分类管理类别")
    private String agencyCategoryManageLevel;

    /**
     * 机构联系人
     */
    @ApiModelProperty(value = "机构联系人")
    @Excel(name = "机构联系人")
    private String agencyContacts;

    /**
     * 机构联系电话
     */
    @ApiModelProperty(value = "机构联系电话")
    @Excel(name = "机构联系电话")
    private String agencyPhone;

    /**
     * 机构详细地址
     */
    @ApiModelProperty(value = "机构详细地址")
    @Excel(name = "机构详细地址")
    private String agencyAddress;

    /**
     * 机构概述
     */
    @ApiModelProperty(value = "机构概述")
    @Excel(name = "机构概述")
    private String agencyRemark;

    /**
     * 机构排序
     */
    @ApiModelProperty(value = "机构排序")
    @Excel(name = "机构排序")
    private Integer agencySort;

    /**
     * 机构经度（横坐标）
     */
    private String longitude;

    /**
     * 机构纬度（纵坐标）
     */
    private String latitude;

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("parentId", getParentId())
                .append("agencyCategoryId", getAgencyCategoryId())
                .append("agencyCategoryName", getAgencyCategoryName())
                .append("areaCode", getAreaCode())
                .append("areaName", getAreaName())
                .append("agencyName", getAgencyName())
                .append("agencyCode", getAgencyCode())
                .append("agencyAbbreviation", getAgencyAbbreviation())
                .append("agencyStatus", getAgencyStatus())
                .append("nodeType", getNodeType())
                .append("orgAgencyCode", getOrgAgencyCode())
                .append("agencyCategoryManageLevel", getAgencyCategoryManageLevel())
                .append("agencyContacts", getAgencyContacts())
                .append("agencyPhone", getAgencyPhone())
                .append("agencyAddress", getAgencyAddress())
                .append("agencyRemark", getAgencyRemark())
                .append("agencySort", getAgencySort())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}
