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.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalTime;

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

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @TableField("account_no")
    private String accountNo;
    @TableField("customer_name")
    private String customerName;

    /**
     * 客户管理1.虚拟电厂2.售电客户
     */
    @TableField("customer_type")
    private Integer customerType;
    @TableField("power_company")
    private String powerCompany;
    @TableField("contract_capacity")
    private BigDecimal contractCapacity;

    /**
     * 信用状态
     * 1正常 2关注 3不良
     */
    @TableField("credit_status")
    private Integer creditStatus;

    /**
     * 签约状态
     * 1待签约 2已签约 3履约中 4待续约 5已续约 6已解约
     */
    @TableField("lifecycle_status")
    private Integer lifecycleStatus;

    /**
     * 需求响应提前通知分钟数，默认30
     */
    @TableField("dr_notify_minutes")
    private Integer drNotifyMinutes;

    /**
     * 登记上调能力 kW
     */
    @TableField("dr_up_capacity_kw")
    private BigDecimal drUpCapacityKw;

    /**
     * 需求响应下调能力 kW
     */
    @TableField("dr_down_capacity_kw")
    private BigDecimal drDownCapacityKw;

    /**
     * 省
     */
    private String province;

    /**
     * 是否集团内用户 0否 1是
     */
    @TableField("is_group_user")
    private Integer isGroupUser;

    /**
     * 是否绿电 0否 1是
     */
    @TableField("is_green_power")
    private Integer isGreenPower;

    /**
     * 是否合作开发用户 0否 1是
     */
    @TableField("is_coop_dev_user")
    private Integer isCoopDevUser;

    /**
     * 合作开发单位名称
     */
    @TableField("coop_partner_name")
    private String coopPartnerName;

    /**
     * 市
     */
    private String city;

    /**
     * 区/县
     */
    private String district;
    private String address;
    @TableField("business_license_url")
    private String businessLicenseUrl;
    private String remark;
    @TableField("tenant_id")
    private Integer tenantId;
    @TableField("create_time")
    private LocalDateTime createTime;
    @TableField("update_time")
    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;

    /**
     * 是否虚拟电厂资源(0:否,1:是)
     */
    @NotNull(message = "是否虚拟电厂资源不能为空!")
    @TableField("is_vpp_resource")
    private Integer isVppResource;

    /**
     * 虚拟电厂分类(1:充换电,2:分布式三联供,3:楼宇空调,5:用户侧储能,6:数据中心,7:工业负荷,8:其他)
     */
    @TableField("vpp_category")
    private String vppCategory;

    /**
     * 需求响应资源分类(1:工业负荷,2:商业负荷,3:储能,4:电动汽车,5:居民负荷,6:其他)
     */
    @TableField("dr_resource_type")
    private String drResourceType;

    /**
     * 聚合代理用户虚拟电厂编码
     */
    @TableField("vpp_proxy_code")
    private String vppProxyCode;

    /**
     * 所属行业(1:制造业,2:建筑业,3:批发和零售业,4:交通运输、仓储和邮政业,5:住宿和餐饮业,6:信息传输、软件和信息技术服务业,7:金融业,8:房地产业,9:租赁和商务服务业,10:科学研究和技术服务业,
     * 11:水利、环境和公共设施管理业,12:居民服务、修理和其他服务业,13:教育,14:卫生和社会工作,15:文化、体育和娱乐业,16:公共管理、社会保障和社会组织,17:国际组织,18:农、林、牧、渔业,
     * 19:采矿业,20:电力、热力、燃气及水生产和供应业,21:其他)
     */
    @TableField("industry")
    private String industry;

    /**
     * 所属产业(1:第一产业,2:第二产业,3:第三产业)
     */
    @TableField("industry_sector")
    private String industrySector;

    /**
     * 运行容量（kW）
     */
    private BigDecimal runningCapacity;

    /**
     * 生产经营开始时间
     */
    @JsonFormat(pattern = "HH:mm")
    private LocalTime productionStartDate;

    /**
     * 生产经营结束时间
     */
    @JsonFormat(pattern = "HH:mm")
    private LocalTime productionEndDate;

    /**
     * 用电地址
     */
    @TableField("power_address")
    private String powerAddress;

    /**
     * 签约时间
     */
    @TableField("signing_date")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime signingDate;
}
