package com.ruoyi.cs.domain.dto;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;

/**
 * 资源、工单申请对象__新增工单 cs_resource_order_apply
 *
 * @author ruoyi
 * @date 2024-04-23
 */
@Getter
@Setter
@ToString
public class CsResourceOrderApplyADDDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    public interface addHPCApply{}

    public interface addCloudComputingApply{}

    public interface addRawNodesApply{}


    /** 申请类型：0-资源，1-工单 */
    @NotBlank(message = "请输入申请类型",groups = {addHPCApply.class, addCloudComputingApply.class})
    private String applyType;

    /** 资源分类ID */
    // @NotNull(message = "请输入资源分类ID",groups = {addHPCApply.class, addCloudComputingApply.class})
    private Long resourceClassId;

    /** 资源分类名 */
    // @NotBlank(message = "请输入资源分类名",groups = {addHPCApply.class, addCloudComputingApply.class})
    private String resourceClassName;

    /** 单位名称 */
    // @NotBlank(message = "请输入单位名称",groups = {addHPCApply.class, addCloudComputingApply.class})
    private String companyName;

    /** 部门/院系ID */
    private Long deptId;

    /** 部门/院系名称 */
    // @NotBlank(message = "请输入部门/院系",groups = {addCloudComputingApply.class})
    private String deptName;

    /** 单位类别ID */
    // @NotNull(message = "请输入单位类别ID",groups = {addHPCApply.class, addCloudComputingApply.class})
    private Long companyClassId;

    /** 单位类别名 */
    // @NotBlank(message = "请输入单位类别名",groups = {addHPCApply.class, addCloudComputingApply.class})
    private String companyClassName;

    /** 姓名/联系人 */
    // @NotBlank(message = "请输入项目负责人",groups = {addHPCApply.class, addCloudComputingApply.class})
    private String name;

    /** 职称/职务 */
    // @NotBlank(message = "请输入职称/职务",groups = {addHPCApply.class, addCloudComputingApply.class})
    private String professionalTitle;

    /** 职业 */
    private String occupation;

    /** 联系电话 */
    // @NotBlank(message = "请输入负责人手机号",groups = {addHPCApply.class, addCloudComputingApply.class})
    private String phone;

    /** E-mail/联系邮箱 */
    // @NotBlank(message = "请输入邮箱信息",groups = {addHPCApply.class, addCloudComputingApply.class})
    private String email;

    /** 项目名称 */
    // @NotBlank(message = "请输入项目名称",groups = {addHPCApply.class, addCloudComputingApply.class})
    private String projectName;

    /** 项目编号 */
    // @NotBlank(message = "请输入项目编号",groups = {addHPCApply.class, addCloudComputingApply.class})
    private String projectNumber;

    /** 项目来源 */
    private String projectSource;

    /** 项目类别ID */
    // @NotNull(message = "请输入项目类别ID",groups = {addHPCApply.class, addCloudComputingApply.class})
    private Long projectClassId;

    /** 项目类别名 */
    // @NotBlank(message = "请输入项目类别名",groups = {addHPCApply.class})
    private String projectClassName;

    /** 项目周期起始 */
    private String projectCycleBegin;

    /** 项目周期结束 */
    private String projectCycleEnd;

    /** 专业领域 */
    private String majorField;

    /** 使用需求：0-专用，1-共享，2-急用 */
    // @NotBlank(message = "请选择使用需求",groups = {addHPCApply.class, addCloudComputingApply.class})
    private String useDemand;

    /** 任务量估算 */
    // @NotBlank(message = "请输入任务量估算",groups = {addHPCApply.class, addCloudComputingApply.class})
    private String workloadEstimate;

    /** 合同名称 */
    private String contractName;

    /** 合同编号 */
    private String contractNumber;

    /** 合同附件 */
    private String contractAnnex;

    /** 需求内容 */
    private String demandContent;

    /** 申请表集合 */
    private List<CsAnnexAddApplyDTO> applyFileList;

    /** 使用人员信息列表 */
    private List<CsUserInfoDTO> userInfoList;

    /** 云计算-业务映射列表 */
    private List<CsBusinessMappingDTO> businessMappingList;

    /** 网络类型：0-办公网络，1-VPN，2-特殊网络资源 */
    private String networkType;

    /** 存储额度 */
    private String storageLimit;

    /** 存储额度单位 */
    private String storageLimitUnit;


}
