package org.dromara.business.domain.vo;

import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.business.domain.CaseBaseInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.business.domain.CaseOssFile;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

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


/**
 * 病例基础信息视图对象 case_base_info
 *
 * @author wuzhigang
 * @date 2023-11-27
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = CaseBaseInfo.class)
public class CaseBaseInfoVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ExcelProperty(value = "主键")
    private Long id;

    /**
     * 病例所属用户id
     */
    @ExcelProperty(value = "病例所属用户id")
    private Long userId;

    /**
     * 病例所属用户姓名
     */
    @ExcelProperty(value = "病例所属用户姓名")
    private String userName;

    /**
     * 病例上传用户id
     */
    @ExcelProperty(value = "病例上传用户id")
    private Long uploadUserId;

    /**
     * 病例上传用户姓名
     */
    @ExcelProperty(value = "病例上传用户姓名")
    private String uploadUserName;

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

    /**
     * 病例名称
     */
    @ExcelProperty(value = "病例名称")
    private String caseName;

    /**
     * 病例文件
     */
    private String caseFile;

    /**
     * 病例美化文件
     */
    private String caseBeautifyFile;

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


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

    /**
     * 审核状态（0未审核 1通过 2拒绝）
     */
    @ExcelProperty(value = "审核状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=未审核,1=通过,2=拒绝")
    private String checkStatus;

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

    /**
     * 病例描述
     */
    @ExcelProperty(value = "病例描述")
    private String caseDescription;

    /**
     * 美化状态 0否 1是
     */
    @ExcelProperty(value = "美化状态 0否 1是")
    private String beautifyStatus;

    /**
     * 上传方式 0直接上传 1志愿者上传
     */
    @ExcelProperty(value = "上传方式 0直接上传 1志愿者上传")
    private String uploadType;

    /**
     * 点评专家ID
     */
    @ExcelProperty(value = "点评专家ID")
    private Long commentUserId;

    /**
     * 点评专家姓名
     */
    @ExcelProperty(value = "点评专家姓名")
    private String commentUseName;

    /**
     * 点评专家职称
     */
    private String commentUseTitle;

    /**
     * 点评专家医院
     */
    private String commentUseCompany;

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

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date createTime;

    /**
     * 点评时间
     */
    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 Long commentWaitingHours;

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

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

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

    /**
     * 病例解析数据
     */
    private JSONObject analysisJson;

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

}
