package com.yh.saas.plugin.servicer.entity;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.yh.saas.common.support.entity.BaseModel;
import com.yh.saas.common.support.util.query.SearchField;
import com.yh.saas.common.support.util.query.SearchMode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.StringUtils;

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

/**
 * <p>
 * 记录服务商信息表
 * </p>
 *
 * @author yul
 * @since 2019-11-11
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("servicer_merchant_info")
public class ServicerMerchantInfo extends BaseModel<ServicerMerchantInfo> {

	private static final long serialVersionUID = -7319219122494086826L;
	/**
	 * 服务商ID
	 */
	@TableId(type = IdType.UUID)
	private String servicerId;
	/**
	 * 公司ID
	 */
	@SearchField(mode = SearchMode.EQ)
	private String compId;
	/**
	 * 服务商名称
	 */
	@SearchField(mode = SearchMode.EQ)
	private String servicerName;
	/**
	 * 服务商英文名
	 */
	@SearchField(mode = SearchMode.EQ)
	private String servicerEnName;

	/**
	 * 服务商类型
	 */
	private String servicerTypeId;

	/**
	 * 服务商类型英文
	 */
	private String servicerType;

	/**
	 * 国籍编码
	 */
	private String nationalityKey;
	/**
	 * 国籍名称
	 */
	private String nationalityValue;
	/**
	 * 国籍英文名
	 */
	private String nationalityEnValue;
	/**
	 * 统一社会信用代码
	 */
	@SearchField(mode = SearchMode.EQ)
	private String uscc;
	/**
	 * 所属省份编码
	 */
	private Integer provKey;
	/**
	 * 所属省份名称
	 */
	private String provValue;
	/**
	 * 所属城市编码
	 */
	private Integer cityKey;
	/**
	 * 所属城市名称
	 */
	private String cityValue;
	/**
	 * 地区全名
	 */
	private String area_full_name;
	/**
	 * 服务商公司地址
	 */
	private String address;
	/**
	 * 传真
	 */
	private String faxNumber;
	/**
	 * 邮政编码
	 */
	private String postalCode;
	/**
	 * 备注
	 */
	private String remark;
	/**
	 * 服务类型ID
	 */
	private String serviceTypeIds;
	/**
	 * 服务类型名称
	 */
	private String serviceTypeNames;
	/**
	 * 服务类型名称（英文）
	 */
	private String serviceTypeNamesEn;
	/**
	 * 服务类型备注
	 */
	private String serviceTypeRemark;
	/**
	 * 单一采购标识
	 */
	private String singlePurchaseFlag;
	/**
	 * 营业执照附件地址
	 */
	private String certificateAppendixIds;
	/**
	 * 资质附件地址
	 */
	private String qualificationAppendixIds;
	/**
	 * 服务商状态
	 */
	private String statusFlag;
	/**
	 * 服务商状态名称
	 */
	private String statusName;
	/**
	 * 服务商状态英文名
	 */
	private String statusEnName;
	/**
	 * 审核状态
	 */
	private String approveStatus;
	/**
	 * 审核状态英文
	 */
	private String approveStatusEn;
	/**
	 * 工作流ID
	 */
	private String workFlowId;
	/**
	 * 备用工作流ID
	 */
	private String spareWorkFlowId;
	/**
	 * 是否启用
	 */
	private Integer enabled;
	/**
	 * 是否审核通过
	 */
	private Integer passFlag;
	/**
	 * 服务商账号
	 */
	private String servicerAccount;
	/**
	 * 服务商密码
	 */
	private String servicerPassword;
	/**
	 * 服务商公司ID
	 */
	private String servicerCompId;
    /**
     * 公共邮箱
     */
    private String commonEmailAddress;
    /**
     * 黑名单标识
     */
    private Boolean blackFlag;
    /**
     * 黑名单原因
     */
    private String blackReason;

	/**
	 * 服务商联系人列表
	 */
	@TableField(exist = false)
	private List<ServicerMerchantContactsInfo> contactsList;

	/**
	 * 服务商银行账户列表
	 */
	@TableField(exist = false)
	private List<ServicerMerchantBankInfo> bankList;

	/**
	 * 任务ID
	 */
	@TableField(exist = false)
	private String taskId;

	@Override
	protected Serializable pkVal() {
		return this.servicerId;
	}

	/**
	 * 查询用字段
	 * 
	 */
	public static class QueryFields {

		public static final String SERVICER_ID = "servicer_id";

		public static final String COMP_ID = "comp_id";

		public static final String SERVICER_NAME = "servicer_name";

		public static final String SERVICER_EN_NAME = "servicer_en_name";

		public static final String USCC = "uscc";

		public static final String DELETE_FALG = "delete_flag";

		public static final String CREATE_DATE = "create_date";

		private QueryFields() {
		}
	}

	public String getCurrentWorkflowId() {
		if (!StringUtils.contains(this.workFlowId, ",")) {
			return this.workFlowId;
		}
		String[] workflowIdArr = this.workFlowId.split(",");
		return workflowIdArr[workflowIdArr.length - 1];
	}

}
