/*
 * 文 件 名:  PowerUtils
 * 版    权:  浩鲸云计算科技股份有限公司
 * 描    述:  <描述>
 * 修 改 人:  lvwenbin
 * 修改时间:  2024/10/21
 * 跟踪单号:  <跟踪单号>
 * 修改单号:  <修改单号>
 * 修改内容:  <修改内容>
 */
package com.ruoyi.ems.util;

import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * 电力工具类
 * <功能详细描述>
 *
 * @author lvwenbin
 * @version [版本号, 2024/10/21]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public abstract class PowerUtils {
    /**
     * 计算视在功率
     *
     * @param pPower 有功功率
     * @param qPower 无功功率
     * @return 视在功率
     */
    public static double getSPower(Double pPower, Double qPower) {
        BigDecimal pValue = new BigDecimal(pPower.toString());
        BigDecimal qValue = new BigDecimal(qPower.toString());

        BigDecimal pValueM = pValue.multiply(pValue);
        BigDecimal qValueM = qValue.multiply(qValue);
        BigDecimal tmp = pValueM.add(qValueM).setScale(2, RoundingMode.HALF_UP);

        return Math.sqrt(tmp.doubleValue());
    }

    /**
     * 计算功率因素
     *
     * @param pPower 有功功率
     * @param sPower 视在功率
     * @return 视在功率
     */
    public static double getPF(Double pPower, Double sPower) {
        BigDecimal pValue = new BigDecimal(pPower.toString());
        BigDecimal sValue = new BigDecimal(sPower.toString());
        BigDecimal tmp = pValue.divide(sValue, 2, RoundingMode.HALF_UP);
        return tmp.doubleValue();
    }
}