package thyyxxk.webserver.entity.executeItem;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;

import java.math.BigDecimal;
import java.util.Date;

/**
 * (YzActOcc)表实体类
 *
 * @author lihong
 * @since 2024-01-08 16:13:38
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName("yz_act_occ")
@ToString
public class YzActOcc  {
    /**医嘱号*/
    private BigDecimal actOrderNo;
    @TableField(exist = false)
    private String actOrderNoStr;
    /**科室*/
    private String deptCode;
    /**病室*/
    private String wardCode;
    /**收费编码 见zd_charge_item 的 code*/
    private String chargeCode;
    /**执行时间*/
    private Date occTime;
    /**住院号*/
    private String inpatientNo;
    /**住院次数*/
    private Integer admissTimes;
    /**病人姓名*/
    private String inpatientName;
    /**床位号*/
    private String bedNo;
    /** 执行类别 o 执行项目 d 口服药 j 注射用药 i 大输液 */
    private String occType;
    /**药品规格*/
    private String specification;
    /**执行用量*/
    private BigDecimal drugQuan;
    /**婴儿标识 1 婴儿  0 成人*/
    private String infantFlag;
    /** 描述*/
    private String discription;
    /** 执行人*/
    private String occOper;
    /** 长期临时标识  a 长期 t 临时  */
    private String alwaysFlag;
    /** 打印标识   */
    private String printFlag;
    /** 状态标志 d  删除*/
    private String statusFlag;
    /**医生姓名*/
    private String phyName;
    /** 嘱托*/
    private String instruction;
    /** 给药方式  见表 yz_supply_type */
    private String supplyCode;
    /** 执行名称*/
    private String occName;
    /** 父执行号*/
    private BigDecimal parentNo;
    /** 没使用*/
    private String parentSortOld;
    /** 没使用*/
    private String parentSortFlag;
    /** 排序码*/
    private String parentSort;
    /** 领量 */
    private BigDecimal drugQuan2;
    /** 执行科室*/
    private String execUnit;
    /** 剂量 */
    private String dose;
    /** 页号  药单号 初始为0*/
    private Integer pageNo;
    /** 0 普通 1=需住院确认 2=住院已确认已付款 3=住院已确认*/
    private String paySelf;
    /** 医嘱名称*/
    private String orderName;
    /** 药品序列号  01 小包装   99 大包装*/
    private String serial;
    /** 药房*/
    private String groupNo;
    /** 1自费 */
    private String selfFlag;
    /** 频率*/
    private String frequCode;
    /** 住院流水号*/
    private String zySerialNo;
    /** 剂量单位*/
    private String doseUnit;
    /** 单价*/
    private BigDecimal retprice;
    /** 打印记录说明*/
    private String printComment;
    /** 药单类别 见枚举 PageClassEnum */
    private String pageClass;
    /** 没使用*/
    private String ydPageNo;
    /** 没使用*/
    private String printCommentBq;

    public String getActOrderNoStr() {
        if(actOrderNo != null){
            actOrderNoStr = actOrderNo.toPlainString();
        }
        return actOrderNoStr;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;

        if (o == null || getClass() != o.getClass()) return false;

        YzActOcc yzActOcc = (YzActOcc) o;

        return new EqualsBuilder()
                .append(actOrderNo, yzActOcc.actOrderNo)
                .append(deptCode, yzActOcc.deptCode)
                .append(wardCode, yzActOcc.wardCode)
                .append(chargeCode, yzActOcc.chargeCode)
                .append(occTime, yzActOcc.occTime)
                .append(inpatientNo, yzActOcc.inpatientNo)
                .append(admissTimes, yzActOcc.admissTimes)
                .isEquals();
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder(17, 37)
                .append(actOrderNo)
                .append(deptCode)
                .append(wardCode)
                .append(chargeCode)
                .append(occTime)
                .append(inpatientNo)
                .append(admissTimes)
                .toHashCode();
    }
}

