package org.dromara.business.domain.bo;

import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.business.domain.CaseBaseInfo;
import org.dromara.business.domain.CaseOssFile;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;

import java.util.Date;
import java.util.List;

/**
 * 病例基础信息业务对象 case_base_info
 *
 * @author wuzhigang
 * @date 2023-11-27
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = CaseBaseInfo.class, reverseConvertGenerate = false)
public class CaseBaseInfoBo extends BaseEntity {

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

    /**
     * 租户编号
     */
    private String tenantId;

    /**
     * 病例所属用户id
     */
    @NotNull(message = "病例所属用户id不能为空", groups = {AddGroup.class})
    private Long userId;

    /**
     * 病例所属用户ids
     */
    private String userIds;

    /**
     * 病例上传用户id
     */
    private Long uploadUserId;


    /**
     * 病例ID
     */
    private String caseId;

    /**
     * 病例名称
     */
    @NotBlank(message = "名称不能为空", groups = {AddGroup.class})
    private String caseName;

    /**
     * 病例文件列表
     */
    private List<CaseOssFile> caseFileList;


    /**
     * 病例美化文件名称
     */
    private List<CaseOssFile> caseBeautifyFileList;


    /**
     * 审核状态（0未审核 1通过 2拒绝）
     */
    private String checkStatus;

    /**
     * 病例状态（0正常 1禁用 ）
     */
    private String caseStatus;

    /**
     * 病例描述
     */
    private String caseDescription;

    /**
     * 美化状态 0否 1是
     */
    private String beautifyStatus;

    /**
     * 上传方式 0直接上传 1志愿者上传
     */
    private String uploadType;

    /**
     * 点评专家ID
     */

    private Long commentUserId;

    /**
     * 点评专家ids
     */
    private String commentUserIds;


    /**
     * 审核拒绝原因
     */
    private String rejectReason;

    /**
     * 点评时间
     */
    private Date commentTime;

    /**
     * 审核时间
     */
    private Date checkTime;

    /**
     * 点评审核状态 0未审核 1审核未通过 2审核通过
     */
    private String commentAuditStatus;

    /**
     * 点评状态 0已点评 1待点评 2重新点评
     */
    private String commentStatus;

    /**
     * 点评内容
     */
    private String commentContent;

    /**
     * 点评拒绝原因
     */
    private String commentRejectReason;

    /**
     * 病例解析审核状态 0未审核 1审核未通过 2审核通过 3解析完成
     */
    private String caseAnalysisStatus;

    /**
     * 病例解析拒绝原因
     */
    private String analysisRejectReason;

    /**
     * 病例点评评分
     */
    private String commentScore;

    /**
     * 项目名称
     */
    private String projectName;

    /**
     * 美化文件下载 0未下载 1已下载
     */
    private String beautifyFileDownload;

}
