package com.usky.vpp.domain;

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.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * vpp_contract_template
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("vpp_contract_template")
public class VppContractTemplate implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @TableField("template_code")
    @NotBlank(message = "模板编码不能为空！")
    private String templateCode;
    @TableField("template_name")
    @NotBlank(message = "模板名称不能为空！")
    private String templateName;

    /**
     * 1、购售电合同 2、需求响应合作协议 3、聚合代理协议（2024 版） 4、虚拟电厂服务代理协议 5、居民个人充电桩协议
     */
    @TableField("contract_type")
    @NotNull(message = "合同类型不能为空！")
    private Integer contractType;

    /**
     * 模板分类：1居间/层间 2普通/直网（用于一对一关联校验）
     */
    @TableField("template_kind")
    private Integer templateKind;

    private String version;
    @TableField("file_url")
    @NotBlank(message = "文件路径不能为空！")
    private String fileUrl;
    @TableField("variables_json")
    private String variablesJson;
    @TableField("is_enabled")
    @NotNull(message = "是否启用不能为空！")
    private Integer isEnabled;
    @TableField("tenant_id")
    private Integer tenantId;
    @TableField("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @TableField("update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @TableField("created_by")
    private String createdBy;
    @TableField("updated_by")
    private String updatedBy;
    @TableField("delete_flag")
    private Integer deleteFlag;
    @TableField("deleted_at")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime deletedAt;
}
