package cn.cslg.report.common.model.dto;

import cn.cslg.report.common.model.BaseEntity;
import cn.cslg.report.entity.ReportFiles;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;


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

@Data
@Accessors(chain = true)
@TableName(value = "REPORT")
@Schema(description = "报告", required = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder(toBuilder = true)
public class ReportDTO {
    private Integer id;
    /**
     * 标的专利/产品号
     */
    @Schema(description = "标的专利号", required = true)
    private String signPatentNo;
    /**
     * 报告名称
     */
    @Schema(description = "报告名称", required = true)
    private String name;
    /**
     * 产品/技术
     */
    @Schema(description = "产品/技术")
    private String proTec;
    /**
     * 报告类别（0无效分析1第三方意见2稳定性分析3FTO调查4侵权分析5回避设计6图表分析7无效应对报告）
     */
    @Schema(description = "报告类别（0无效分析1第三方意见2稳定性分析3FTO调查4侵权分析5回避设计6图表分析7无效应对报告）")
    private Integer type;
    /**
     * 报告状态（0开卷审核 1创建中 2处理中 3完成 4取消开卷 5补资料中）
     */
    @Schema(description = "报告状态")
    private Integer status;

    /**
     * 报告生成时间
     */
    @Schema(description = "报告生成时间")
    private Date createTime;

    /**
     * 报告生成文件ID
     */
    @Schema(description = "报告生成文件ID")
    private Integer reportFileId;

    /**
     * 负责人ID
     */
    @Schema(description = "负责人ID")
    private Integer personId;
    /**
     * 负责人ID
     */
    @Schema(description = "负责人姓名")
    private String personName;

    /**
     * 委托人ID
     */
    @Schema(description = "委托人ID")
    private Integer clientId;

    /**
     * 委托人姓名
     */
    @Schema(description = "委托人姓名")
    private String clientName;

    /**
     * 承担部门ID
     */
    @Schema(description = "承担部门ID")
    private Integer departmentId;

    /**
     * 承担部门名称
     */
    @Schema(description = "承担部门名称")
    private String departmentName;

    /**
     * 关联报告ID
     */
    @Schema(description = "关联报告ID")
    private Integer associateReportId;

    /**
     * 关联报告名称
     */
    @Schema(description = "关联报告名称")
    private String associateReportName;

    /**
     * 应用场景
     */
    @Schema(description = "应用场景")
    private String scenarioId;
    /**
     * 调查类型
     */
    @Schema(description = "调查类型")
    private Integer itFlag;

    /**
     * 专题库ID
     */
    @Schema(description = "专题库ID")
    private Integer projectId;

    /**
     * 卷号
     */
    @Schema(description = "卷号")
    private String volumeNumber;
    /**
     * 拆分根据
     */
    @Schema(description = "拆分根据")
    private Integer splitBy;
    /**
     * 拆分类型
     */
    @Schema(description = "拆分类型")
    private Integer splitType;

    /**
     * 创建人ID
     */
    @Schema(description = "创建人ID")
    private Integer createPersonId;
    /**
     * 创建人姓名
     */
    @Schema(description = "创建人姓名")
    private String createPersonName;
    /**
     * 备注
     */
    @Schema(description = "REMARK")
    private String remark;

    /**
     * 结论id
     */
    @Schema(description = "结论id")
    private String conclusionId;


    /**
     * 核心结论
     */
    @Schema(description = "核心结论")
    private String cronConclusion;

    /**
     * 文件
     */
    private List<ReportFiles> reportFiles;
    /**
     * 场景列表
     */
    private List<String> scenarioList;
    private List<String> scenarioNames;
    private List<Integer> conclusionIds;
    private List<Integer> copyIds;
    private List<String> types;

    /**
     * 事件
     */
    private List<EventAddNewDTO> eventAddNewDTOs;
    /**
     * 后续事项
     */
    private List<FollowUpDTO> followUps;
    private Boolean track;

    //以下是无效应对报告使用的字段 ↓
    /**
     * 案件编号
     */
    private String caseNumber;
    /**
     * 发文序号
     */
    private String issueNumber;
    /**
     * 发明创造名称
     */
    private String inventionName;
    /**
     * 专利权人
     */
    private String currentApplication;
    /**
     * 无效宣告请求人
     */
    private String invalidApplication;

}
