package digital.laboratory.platform.imr.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import digital.laboratory.platform.common.mybatis.base.BaseEntity;
import digital.laboratory.platform.imr.enums.ApplyStatus;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.time.LocalDateTime;
import lombok.Data;
import lombok.EqualsAndHashCode;


/**
 * 检材申请实体类
 *
 * 销毁申请+外带申请
 * 申请状态用于区分两者
 *
 * @author Zhang Xiaolong created at  2023-03-17 11:51:42
 * @describe 检材申请实体类 实体类
 */
@Data
@TableName(value = "sample_apply", autoResultMap = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "检材申请实体类")
public class SampleApply extends BaseEntity {

    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    @ApiModelProperty(value="主键id")
    private String id;

    /**
     * 申请人id
     */
    @ApiModelProperty(value="申请人id")
    private String applicantId;

    /**
     * 申请日期
     */
    @ApiModelProperty(value="申请日期")
    private LocalDateTime applicationDate;

    /**
     * 申请状态
     */
    @ApiModelProperty(value="申请状态")
    private ApplyStatus applicationStatus;

    /**
     * 申请重量
     */
    @ApiModelProperty(value="申请重量")
    private Double applyQuality;


    /**
     * 重量单位
     */
    @ApiModelProperty(value="重量单位")
    private String unit;

    /**
     * 申请数量
     */
    @ApiModelProperty(value="申请样本数量数量")
    private Integer applyQuantity;

    /**
     * 审批人审批时间
     */
    @ApiModelProperty(value="审批人审批时间")
    private LocalDateTime approvalDate;

    /**
     * 审批人id
     */
    @ApiModelProperty(value="审批人id")
    private String approverId;

    /**
     * 审批人意见
     */
    @ApiModelProperty(value="审批人意见")
    private String approverOpinion;

    /**
     * 一级审核员id
     */
    @ApiModelProperty(value="一级审核员id")
    private String firstAuditorId;

    /**
     * -一级审核时间
     */
    @ApiModelProperty(value="-一级审核时间")
    private LocalDateTime firstAuditDate;

    /**
     * 一级审核意见
     */
    @ApiModelProperty(value="一级审核意见")
    private String firstAuditOpinion;

    /**
     * 申请原因
     */
    @ApiModelProperty(value="申请原因")
    private String reason;

    /**
     * 二级审核时间
     */
    @ApiModelProperty(value="二级审核时间")
    private LocalDateTime secondaryAuditDate;

    /**
     * 二级审核意见
     */
    @ApiModelProperty(value="二级审核意见")
    private String secondaryAuditOpinion;

    /**
     * 二级审核员id
     */
    @ApiModelProperty(value="二级审核员id")
    private String secondaryAuditorId;

    /**
     * 申请类型
     */
    @ApiModelProperty(value="申请类型:1.检材外带申请;2.检材销毁申请")
    private Integer applyType;

}
