package com.syjy.calculate.entity;

import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 计算公式的入参
 *
 * @author zcl
 * @version 1.0
 * @since 2022/9/09 10:16
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class CalculationInfo implements Serializable  {

    private static final long serialVersionUID = 1L;

    /**
     * 时间
     */
    private long time;

    // PowerStationStatusData 相关数据
    /**
     * 人工判断是否限电
     * 0 以系统判断结果为准
     * 1 限电
     * 2 不限电
     */
    private Integer isRationingByManualControl;

    /**
     * 系统自动判断是否限电
     */
    Boolean isRationingByAutoControl;

    /**
     * 实际功率（MW）
     */
    private BigDecimal realValue;

    /**
     * 可用功率(MW)
     */
    private BigDecimal ableValue;

    /**
     * 理论功率(MW
     */
    private BigDecimal theoryValue;

    /**
     * 开机容量(MW)
     */
    private BigDecimal openCapacity;

    /**
     * 装机容量(MW)
     */
    private BigDecimal capacity;

    // 预测相关数据
    /**
     * 可用预测功率(MW)
     */
    private BigDecimal forecastAbleValue;

    /**
     * 理论预测功率(MW)
     */
    private BigDecimal forecastTheoryValue;

    /**
     *  开机容量(MW)
     */
    private BigDecimal forecastSuCapacity;

    /**
     * 装机容量（MW）
     */
    private BigDecimal forecastCapacity;

    public CalculationInfo(){

    }

    /**
     * 构造函数设置值
     * @param realValue
     * @param ableValue
     * @param theoryValue
     * @param openCapacity
     * @param capacity
     * @param forecastAbleValue
     * @param forecastTheoryValue
     */
    public CalculationInfo(BigDecimal realValue, BigDecimal ableValue, BigDecimal theoryValue, BigDecimal openCapacity, BigDecimal capacity, BigDecimal forecastAbleValue, BigDecimal forecastTheoryValue){
        this.setRealValue(realValue);
        this.setAbleValue(ableValue);
        this.setTheoryValue(theoryValue);
        this.setOpenCapacity(openCapacity);
        this.setCapacity(capacity);
        this.setForecastAbleValue(forecastAbleValue);
        this.setForecastTheoryValue(forecastTheoryValue);
    }

}
