package com.lantone.entity.cdss;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.diagbot.util.StringUtil;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.Objects;

/**
 * <p>
 * 化验公表映射
 * </p>
 *
 * @author zhaops
 * @since 2020-07-28
 */
@Getter
@Setter
public class LisConfig {
    /**
     * 主键
     */
    private Long id;

    /**
     * 是否删除,N:未删除，Y:删除
     */
    private String isDeleted;

    /**
     * 记录创建时间
     */
    private Date gmtCreate;

    /**
     * 记录修改时间,如果时间是1970年则表示纪录未修改
     */
    private Date gmtModified;

    /**
     * 创建人，0表示无创建人值
     */
    private String creator;

    /**
     * 修改人,如果为0则表示纪录未修改
     */
    private String modifier;

    /**
     * 医院id
     */
    private Long hospitalId;

    /**
     * 检验套餐
     */
    @Excel(name = "检验套餐", width = 40, orderNum = "1", isImportField = "true")
    @NotBlank(message = "请输入检验套餐")
    private String hisName;

    /**
     * 检验细项
     */
    @Excel(name = "检验细项", width = 40, orderNum = "2", isImportField = "true")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String hisDetailName;

    /**
     * 标准检验项目
     */
    @Excel(name = "标准检验项目", width = 40, orderNum = "4", isImportField = "true")
    @NotBlank(message = "请输入标准检验项目")
    private String uniqueName;

    /**
     * 对应项目编码
     */
    //@Excel(name = "对应项目编码", width = 40, orderNum = "3")
    private String code;

    /**
     * 是否匹配（0-未匹配、1-已匹配）
     */
    @Excel(name = "是否匹配【未匹配、已匹配】", width = 20, orderNum = "4", replace = { "未匹配_0", "已匹配_1", "_null" }, isImportField = "true")
    private Integer isMatch;

    /**
     * 数据来源（1-标准词、2-同义词、3-编码、4-历史数据、5-相似词、99-数据迁移）
     */
    @Excel(name = "数据来源【不填、标准词、同义词、编码、历史数据、相似词】", width = 20, orderNum = "5", replace = { "标准词_1", "同义词_2", "编码_3", "历史数据_4", "相似词_5", "数据迁移_99", "_null" }, isImportField = "true")
    private Integer source;

    @Override
    public String toString() {
        return "LisConfig{" +
                "id=" + id +
                ", isDeleted=" + isDeleted +
                ", gmtCreate=" + gmtCreate +
                ", gmtModified=" + gmtModified +
                ", creator=" + creator +
                ", modifier=" + modifier +
                ", hospitalId=" + hospitalId +
                ", hisName=" + hisName +
                ", hisDetailName=" + hisDetailName +
                ", uniqueName=" + uniqueName +
                ", code=" + code +
                "}";
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        LisConfig lisConfig = (LisConfig) o;
        return Objects.equals(id, lisConfig.id)
                && Objects.equals(isDeleted, lisConfig.isDeleted)
                && Objects.equals(hospitalId, lisConfig.hospitalId)
                && Objects.equals(hisName, lisConfig.hisName)
                && Objects.equals(hisDetailName, lisConfig.hisDetailName)
                && Objects.equals(uniqueName, lisConfig.uniqueName)
                && Objects.equals(code, lisConfig.code);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, isDeleted, hospitalId, hisName, hisDetailName, uniqueName, code);
    }

    public static boolean nonNull(LisConfig o) {
        return !(o == null
                || (o.hospitalId == null
                && StringUtil.isBlank(o.hisName)
                && StringUtil.isBlank(o.hisDetailName)
                && StringUtil.isBlank(o.uniqueName)
                && StringUtil.isBlank(o.code)));
    }
}