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

import cn.cslg.pas.common.model.vo.ProjectImportPatentVO;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * 新增任务条件DTO
 *
 * @Author chenyu
 * @Date 2023/3/27
 */
@Accessors(chain = true)
@Data
public class TaskAddNewDTO {
    /**
     * 检索信息
     */
    private String conditions;
    /**
     * 排序字段：“AD”，“PD”，“GD”，“ID”
     */
    private String orderBy;
    /**
     * 排序方式：“ASC”，“DESC”
     */
    private String orderByType;
    /**
     * 需要检索的数据库类型（"CN"/"WD"）
     */
    @JsonProperty(value = "DBType")
    private String dBType;
    /**
     * 下载起始条数位置（如2表示从第二个专利开始下载）
     */
    private Integer startNumber;
    /**
     * 下载终止条数位置（如13表示从第十三个专利开始下载）
     */
    private Integer endNumber;
    /**
     * 需要额外下载的专利
     */
    private List<String> isAddPatentNos;
    /**
     * 起止条数中不需要下载的专利
     */
    private List<String> isDeletePatentNos;
    /**
     * 专题库id
     */
    private Integer projectId;
    /**
     * 报告id
     */
    private Integer reportId;
    /**
     * 任务类型2（3.欧专局 4.专利之星）
     */
    private Integer taskType2;
    /**
     * 任务类型1 (0普通任务 1定时任务)
     */
    private Integer taskType;
    /**
     * cron表达式
     */
    private String crons;
    /**
     * 下载字段（1.著录项 2.权要 3.说明书文本 4.说明书pdf 6.摘要附图）
     */
    private List<String> configCells;
    /**
     * 网站配置id
     */
    private Integer configId;
    /**
     * 任务名称
     */
    private String taskName;


    //以下为自定义字段和文件夹信息 ↓
    /**
     * 自定义字段ids
     */
    private List<ProjectImportPatentVO.Field> fieldList;
    /**
     * 文件夹ids
     */
    private List<Integer> folderIds;

    /**
     * 自定义字段信息
     */
    @Data
    public static class Field {
        /**
         * 自定义字段id
         */
        private Integer fieldId;
        /**
         * 自定义字段类型（6为树）
         */
        private Integer type;
        /**
         * 选项id
         */
        private Integer optionId;
        private String text;
    }

    /**
     * 文件夹信息
     */
    @Data
    public static class Folder {
        /**
         * 文件夹id
         */
        private Integer id;
        /**
         * 上级文件夹id
         */
        private Integer parentId;
        /**
         * 文件夹名称
         */
        private String name;
        private Boolean selected;
        /**
         * 子级文件夹们
         */
        private List<ProjectImportPatentVO.Folder> children;
    }

}