package org.springblade.system.domain.vo;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author：liang.chao
 * @Date：2025/9/11 - 11:05
 */
@Data
public class DaKyProFilesContentsVo {
    /**
     * id
     */
    private String id;

    /**
     * 项目id
     */
    private String proId;

    /**
     * 分类名称/档案名称
     */
    @NotBlank(message = "分类名称或文件题名不能为空")
    @Length(max = 64, message = "分类名称或文件题名长度不能超过64个字符")
    private String contentName;

    /**
     * 父节点id
     */
    @NotBlank(message = "上级节点不能为空")
    private String parentId;

    /**
     * 层级
     */
    @NotNull(message = "级别不能为空")
    private Integer level;

    /**
     * 分类号/案卷排序号
     */
    private Integer sort;

    /**
     * 档案标识代码
     */
    @NotBlank(message = "档案标识代码不能为空")
    private String markCode;

    /**
     * 案卷期限
     */
    @NotBlank(message = "案卷期限不能为空")
    private String term;
    /**
     * 所属专业
     */
    @NotBlank(message = "所属专业不能为空")
    private String major;

    /**
     * 文件分类标记
     */
    @NotBlank(message = "文件分类标记不能为空")
    private String classifyMark;


    /**
     * 归档责任单位
     */
    @NotBlank(message = "归档责任单位不能为空")
    private String unitName;

    /**
     * 来源 1.本系统上传 2.智慧现场
     */
    private String dataSource;

    /**
     * 是否独有 0.否 1.是
     */
    private String isUnique;

    /**
     * 完整性确认状态 0.未确认 1.已确认 ---确认后不能进行操作
     */
    private String integrityStatus;

    /**
     * 创建时间
     */
    private String createTime;

    /**
     * 修改时间
     */
    private String updateTime;

    /**
     * 创建人ID
     */
    private Long createUserId;

    /**
     * 创建人姓名
     */
    private String createUserName;

    /**
     * 修改人ID
     */
    private Long updateUserId;
    /**
     * 业务id
     */
    private String businessId;

    /**
     * 修改人姓名
     */
    private String updateUserName;
    /**
     * 文件id
     */
    private String fileId;
    /**
     * 文件地址
     */
    private String filePath;
    /**
     * 文件名称
     */
    private String fileName;
    /**
     * 文件类型
     */
    private String fileType;
    /**
     * 文件大小
     */
    private BigDecimal fileSize;

    /**
     * 文件后缀名
     */
    private String suffixName;
    /**
     * 资源类型
     */
    private String sourceType;
    /**
     * 文件源文件名
     */
    private String sourceFileName;

    /**
     * 是否删除 0.删除 1.未删除
     */
    private String delFlag;

    private List<DaKyProFilesContentsVo> children = new ArrayList<>();
}
