package com.zt.plat.module.qms.business.reportdoc.controller.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigPermissionSaveReqVO;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.util.List;

@Schema(description = "管理后台 - 报告类型配置新增/修改 Request VO")
@Data
public class ReportDocumentTypeSaveReqVO {

    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9014")
    private Long id;

    @Schema(description = "报表类型ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9447")
    @NotNull(message = "报表类型ID不能为空")
    private Long configReportTypeId;

    @Schema(description = "类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
    @NotEmpty(message = "类型名称不能为空")
    private String name;

    @Schema(description = "流程key", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "流程key不能为空")
    private String flowKey;

    @Schema(description = "报告模板key", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "报告模板key不能为空")
    private String reportKey;

    @Schema(description = "报告编号规则", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "报告编号规则不能为空")
    private String codeRule;

    @Schema(description = "报告分类,【字典】【jy_doc_main_type】化验报告、典型性报告、检测报告", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotEmpty(message = "报告分类,【字典】【jy_doc_main_type】化验报告、典型性报告、检测报告不能为空")
    private String documentType;

    @Schema(description = "权限")
    private Integer permission;

    @Schema(description = "样品数量", example = "30323")
    private Integer sampleCount;

    @Schema(description = "其他配置")
    private String customConfig;

    @Schema(description = "所属部门")
    private String systemDepartmentCode;

    @Schema(description = "备注")
    private String remark;

    @Schema(description = "版本", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer version;

    @Schema(description = "排序号")
    private Integer sortNo;

    @Schema(description = "是否最新版本")
    private Integer currentFlag;

    @Schema(description = "是否创建新版本")
    private String newVersionFlag;

    @Schema(description = "主id")
    private Long mainId;

    @Schema(description = "前端组件")
    private String pageComponent;

    @Schema(description = "前端组件（移动端）")
    private String pageComponentMobile;

    //===========扩展字段=======================
    @Schema(description = "权限列表")
    List<ConfigPermissionSaveReqVO> permissionList;

}