package com.yhy.module.core.controller.admin.workbench.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import lombok.Data;

/**
 * 单位工程信息 保存 Request VO
 */
@Schema(description = "工作台 - 单位工程信息保存 Request VO")
@Data
public class WbUnitInfoSaveReqVO {

    @Schema(description = "ID（更新时必填）", example = "1")
    private Long id;

    @Schema(description = "编制树节点ID（单位工程节点）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "编制树节点ID不能为空")
    private Long compileTreeId;

    @Schema(description = "工程编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "UNIT-001")
    @NotBlank(message = "工程编号不能为空")
    @Size(max = 50, message = "工程编号长度不能超过50个字符")
    private String unitCode;

    @Schema(description = "工程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1号楼")
    @NotBlank(message = "工程名称不能为空")
    @Size(max = 200, message = "工程名称长度不能超过200个字符")
    private String unitName;

    @Schema(description = "专业类别（fields_majors 节点ID）", example = "2043533844464746497")
    private String specialtyType;

    @Schema(description = "库类别（字典：wb_library_type）", example = "boq_pricing")
    private String libraryType;

    @Schema(description = "清单数据库（清单目录树ID）", example = "100")
    private Long boqCatalogItemId;

    @Schema(description = "定额数据库（定额专业树ID）", example = "200")
    private Long quotaCatalogItemId;

    @Schema(description = "执行费率文件（费率模式节点ID）", example = "300")
    private Long rateModeId;

    @Schema(description = "建设规模（字典：wb_construction_scale）", example = "large")
    private String constructionScale;
}
