package com.usky.vpp.service.vo;

import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.List;

/**
 * 客户管理 响应VO（含关联合同信息）
 *
 * @author fyc
 * @email yuchuan.fu@chinausky.com
 * @date 2026/7/6
 */
@Data
public class CustomerResponseVO {

    // ========== 客户基础字段 ==========

    private Long id;

    private String accountNo;

    private String customerName;

    /**
     * 客户类型：1中高压 2低压商用 3居民充电桩 4自有资产
     */
    private Integer customerType;

    private String powerCompany;

    private BigDecimal contractCapacity;

    /**
     * 信用状态：1正常 2关注 3不良
     */
    private Integer creditStatus;

    /**
     * 签约状态：1待签约 2已签约 3履约中 4待续约 5已续约 6已解约
     */
    private Integer lifecycleStatus;

    /**
     * 需求响应提前通知分钟数
     */
    private Integer drNotifyMinutes;

    /**
     * 需求响应上调能力 kW
     */
    private BigDecimal drUpCapacityKw;

    /**
     * 需求响应下调能力 kW
     */
    private BigDecimal drDownCapacityKw;

    private String province;

    /** 是否集团内用户 0否 1是 */
    private Integer isGroupUser;

    /** 是否绿电 0否 1是 */
    private Integer isGreenPower;

    /** 是否合作开发用户 0否 1是 */
    private Integer isCoopDevUser;

    /** 合作开发单位名称 */
    private String coopPartnerName;

    private String city;

    private String district;

    private String address;

    private String businessLicenseUrl;

    private String remark;

    /**
     * 是否虚拟电厂资源：0否 1是
     */
    private Integer isVppResource;

    /**
     * 虚拟电厂分类
     */
    private String vppCategory;

    /**
     * 需求响应资源分类
     */
    private String drResourceType;

    /**
     * 聚合代理用户虚拟电厂编码
     */
    private String vppProxyCode;

    /**
     * 所属行业
     */
    private String industry;

    /**
     * 所属产业
     */
    private String industrySector;

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

    /**
     * 生产经营开始时间
     */
    private LocalTime productionStartDate;

    /**
     * 生产经营结束时间
     */
    private LocalTime productionEndDate;

    /**
     * 用电地址
     */
    private String powerAddress;

    /**
     * 签约时间
     */
    private LocalDateTime signingDate;

    // ========== 审计字段 ==========

    private Integer tenantId;

    private LocalDateTime createTime;

    private LocalDateTime updateTime;

    private String createdBy;

    private String updatedBy;

    // ========== 关联合同信息 ==========

    /**
     * 关联合同列表
     */
    private List<ContractBriefVO> contracts;

    // ========== 关联联系人信息 ==========

    /**
     * 主联系人姓名
     */
    private String contactName;

    /**
     * 主联系电话
     */
    private String contactPhone;

    /**
     * 主联系邮箱
     */
    private String contactEmail;

    /**
     * 合同简要信息（嵌套VO）
     */
    @Data
    public static class ContractBriefVO {

        private Long id;

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

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

        /**
         * 合同类型：1购售电 2需求响应合作 3聚合代理 4服务代理 5居民充电桩 6自有资产
         */
        private Integer contractType;

        /**
         * 合同状态：0草稿 1审核中 2已生效 3已到期 4已终止
         */
        private Integer contractStatus;

        /**
         * 签约日期
         */
        private LocalDate signDate;

        /**
         * 生效日期
         */
        private LocalDate effectiveDate;

        /**
         * 到期日期
         */
        private LocalDate expireDate;
    }
}
