package com.artfess.rescue.cloud.model;

import com.artfess.base.entity.BizDelModel;
import com.artfess.base.entity.BizModel;
import com.artfess.rescue.accessory.model.Accessory;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;

/**
 * 私有云资源申请表
 *
 * @company 阿特菲斯信息技术有限公司
 * @author 管理员
 * @since 2024-08-07
 */
@ApiModel(value="BizCloudApply对象", description="私有云资源申请表")
@TableName("biz_cloud_apply")
@Data
@EqualsAndHashCode(callSuper = true)
public class BizCloudApply extends BizDelModel<BizCloudApply> {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键ID")
    @TableId(value = "ID_", type = IdType.ASSIGN_ID)
    private String id;

    @ApiModelProperty(value = "申请编号（流水号自动生成，格式yyyymm0001）")
    @TableField("APPLY_CODE_")
    private String applyCode;

    @ApiModelProperty(value = "单位名称")
    @TableField("APPLY_UNIT_NAME_")
    private String applyUnitName;

    @ApiModelProperty(value = "单位联系人")
    @TableField("APPLY_UNIT_CONTACTS_")
    private String applyUnitContacts;

    @ApiModelProperty(value = "单位联系人电话（手机）")
    @TableField("APPLY_UNIT_CONTACTS_PHONE_")
    private String applyUnitContactsPhone;

    @ApiModelProperty(value = "邮箱")
    @TableField("APPLY_UNIT_CONTACTS_MAIL_")
    private String applyUnitContactsMail;

    @ApiModelProperty(value = "申请时间")
    @TableField("APPLY_DATE_")
    private LocalDate applyDate;

    @ApiModelProperty(value = "应用系统名称")
    @TableField("APPLY_APP_NAME_")
    private String applyAppName;

    @ApiModelProperty(value = "应用开发单位")
    @TableField("APPLY_APP_DEVELOP_UNIT_")
    private String applyAppDevelopUnit;

    @ApiModelProperty(value = "资源所属云平台【使用字典，1：XSKY，2：Zstack】")
    @TableField("CLOUD_TYPE_")
    private Integer cloudType;

    @ApiModelProperty(value = "软件用途简要说明")
    @TableField("APP_PURPOSE_")
    private String appPurpose;

    @ApiModelProperty(value = "应用开发联系人")
    @TableField("APPLY_APP_CONTRACTS_")
    private String applyAppContracts;

    @ApiModelProperty(value = "应用开发联系人电话（手机）")
    @TableField("APPLY_APP_CONTRACTS_PHONE_")
    private String applyAppContractsPhone;

    @ApiModelProperty(value = "虚拟机数量（台）")
    @TableField("VIRTUAL_MACHINE_NUM_")
    private Integer virtualMachineNum;

    @ApiModelProperty(value = "CPU（核）")
    @TableField("CPU_NUM_")
    private Integer cpuNum;

    @ApiModelProperty(value = "内存容量（G）")
    @TableField("MEMORY_CAPACITY_")
    private Integer memoryCapacity;

    @ApiModelProperty(value = "数据盘容量（G)")
    @TableField("DATA_CAPACITY_")
    private Integer dataCapacity;

    @ApiModelProperty(value = "申请上线时间")
    @TableField("APPLY_ONLINE_TIME_")
    private LocalDate applyOnlineTime;

    @ApiModelProperty(value = "状态，【使用字典0：草稿，10：待审批、20：审核不通过、30待执行、40：已执行")
    @TableField("STATUS_")
    private Integer status;

    @ApiModelProperty(value = "申请单位意见")
    @TableField("APPLY_UNIT_OPINION_")
    private String applyUnitOpinion;

    @ApiModelProperty(value = "主管单位意见")
    @TableField("MANAGER_UNIT_OPINION_")
    private String managerUnitOpinion;

    @ApiModelProperty(value = "私有云资源申请附件")
    @TableField(exist = false )
    private List<Accessory> cloudApplyFile;

    @ApiModelProperty(value = "租户ID")
    @TableField("TENANT_ID_")
    private String tenantId;

    @JsonIgnore
    @ApiModelProperty(value = "版本号")
    @TableField("VERSION_")
    private Long version;

    @Override
    public String toString() {
        return "BizCloudApply{" +
            "id=" + id +
            ", applyCode=" + applyCode +
            ", applyUnitName=" + applyUnitName +
            ", applyUnitContacts=" + applyUnitContacts +
            ", applyUnitContactsPhone=" + applyUnitContactsPhone +
            ", applyUnitContactsMail=" + applyUnitContactsMail +
            ", applyDate=" + applyDate +
            ", applyAppName=" + applyAppName +
            ", applyAppDevelopUnit=" + applyAppDevelopUnit +
            ", cloudType=" + cloudType +
            ", appPurpose=" + appPurpose +
            ", applyAppContracts=" + applyAppContracts +
            ", applyAppContractsPhone=" + applyAppContractsPhone +
            ", virtualMachineNum=" + virtualMachineNum +
            ", cpuNum=" + cpuNum +
            ", memoryCapacity=" + memoryCapacity +
            ", dataCapacity=" + dataCapacity +
            ", applyOnlineTime=" + applyOnlineTime +
            ", status=" + status +
            ", applyUnitOpinion=" + applyUnitOpinion +
            ", managerUnitOpinion=" + managerUnitOpinion +
            ", tenantId=" + tenantId +
        "}";
    }
}
