// com/ruoyi/ems/domain/ChargingBillVO.java
package com.ruoyi.ems.model;

import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 计费账单VO
 *
 * @author ruoyi
 * @date 2024-12-20
 */
@Data
public class ChargingBillVO implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 账单主体代码
     */
    private String objCode;

    /**
     * 账单主体名称
     */
    private String objName;

    /**
     * 计量时间
     */
    private String meteredTime;

    /**
     * 电量统计-自动
     */
    private ElecAutoStatistics elecAutoStats;

    /**
     * 电量统计-手动
     */
    private ElecManualStatistics elecManualStats;

    /**
     * 水量统计-自动
     */
    private WaterStatistics waterAutoStats;

    /**
     * 水量统计-手动
     */
    private WaterStatistics waterManualStats;

    /**
     * 公摊数据
     */
    private SharedData sharedData;

    /**
     * 合计数据
     */
    private TotalStatistics totalStats;

    /**
     * 电量统计内部类
     */
    @Data
    public static class ElecAutoStatistics implements Serializable {
        private BigDecimal totalQuantity;       // 总用量
        private BigDecimal sharpPeakQuantity;   // 尖峰电量
        private BigDecimal peakQuantity;        // 峰段电量
        private BigDecimal normalQuantity;      // 平段电量
        private BigDecimal valleyQuantity;      // 谷段电量
        private BigDecimal deepValleyQuantity;  // 深谷电量
        private BigDecimal totalCost;           // 总费用
        private String unit = "kW·h";            // 单位
    }

    /**
     * 电量统计内部类
     */
    @Data
    public static class ElecManualStatistics implements Serializable {
        private BigDecimal totalQuantity;       // 总用量
        private BigDecimal totalCost;           // 总费用
        private String unit = "kW·h";            // 单位
    }

    /**
     * 水量统计内部类
     */
    @Data
    public static class WaterStatistics implements Serializable {
        private BigDecimal totalQuantity;       // 总用量
        private BigDecimal totalCost;           // 总费用
        private String unit = "m³";             // 单位
    }

    /**
     * 公摊数据内部类
     */
    @Data
    public static class SharedData implements Serializable {
        private BigDecimal elecSharedQuantity;  // 电公摊量
        private BigDecimal elecSharedCost;      // 电公摊费用
        private BigDecimal waterSharedQuantity; // 水公摊量
        private BigDecimal waterSharedCost;     // 水公摊费用
        private Integer elecSharedType;         // 电公摊方式
        private Integer waterSharedType;        // 水公摊方式
        private String elecSharedTypeName;      // 电公摊方式名称
        private String waterSharedTypeName;     // 水公摊方式名称
    }

    /**
     * 合计统计内部类
     */
    @Data
    public static class TotalStatistics implements Serializable {
        private BigDecimal elecTotalQuantity;   // 电总量
        private BigDecimal elecTotalCost;       // 电总费用
        private BigDecimal waterTotalQuantity;  // 水总量
        private BigDecimal waterTotalCost;      // 水总费用
        private BigDecimal sharedTotalCost;     // 公摊总费用
        private BigDecimal grandTotalCost;      // 总费用
    }
}