鞍钢鲅鱼圈能源管控系统后端代码
潘志宝
2025-05-29 665e2c159aaea0b95a29a0d64aaf209026a52527
日功率因数
已修改2个文件
已添加1个文件
79 ■■■■■ 文件已修改
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/common/utils/PowerUtil.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerNetFactorEntity.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java
@@ -11,6 +11,7 @@
import com.iailab.module.ansteel.api.vo.PowerCapacitorHisPageReqVO;
import com.iailab.module.ansteel.api.vo.PowerMaxDemandMainPageReqVO;
import com.iailab.module.ansteel.common.utils.DecimalUtil;
import com.iailab.module.ansteel.common.utils.PowerUtil;
import com.iailab.module.ansteel.power.entity.*;
import com.iailab.module.ansteel.power.service.*;
import com.iailab.module.data.api.point.DataPointApi;
@@ -232,6 +233,32 @@
                    powerNetFactorDTO.setQstatus(1);
                }
            }
            // 日功率因数
            if (entity.getPDay() != null && entity.getQDay() != null) {
                List<String> pointNos = new ArrayList<>();
                pointNos.add(entity.getPDay());
                pointNos.add(entity.getQDay());
                Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(pointNos);
                if (!CollectionUtils.isEmpty(pointsRealValue)) {
                    double pValue = new BigDecimal(pointsRealValue.get(entity.getPDay()).toString()).doubleValue();
                    double qValue = new BigDecimal(pointsRealValue.get(entity.getQDay()).toString()).doubleValue();
                    powerNetFactorDTO.setDayCos(new BigDecimal(PowerUtil.calculateCos(pValue, qValue)).setScale(2, BigDecimal.ROUND_HALF_UP)) ;
                }
            }
            // 月功率因数
            if (entity.getPMon() != null && entity.getQMon() != null) {
                List<String> pointNos = new ArrayList<>();
                pointNos.add(entity.getPMon());
                pointNos.add(entity.getQMon());
                Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(pointNos);
                if (!CollectionUtils.isEmpty(pointsRealValue)) {
                    double pValue = new BigDecimal(pointsRealValue.get(entity.getPMon()).toString()).doubleValue();
                    double qValue = new BigDecimal(pointsRealValue.get(entity.getQMon()).toString()).doubleValue();
                    powerNetFactorDTO.setMonthCos(new BigDecimal(PowerUtil.calculateCos(pValue, qValue)).setScale(2, BigDecimal.ROUND_HALF_UP)) ;
                }
            }
            result.add(powerNetFactorDTO);
        }
        return success(result);
ansteel-biz/src/main/java/com/iailab/module/ansteel/common/utils/PowerUtil.java
对比新文件
@@ -0,0 +1,32 @@
package com.iailab.module.ansteel.common.utils;
import java.math.BigDecimal;
/**
 * 电力工具类
 *
 * @author PanZhibao
 * @Description
 * @createTime 2025年05月28日
 */
public class PowerUtil {
    /**
     * 计算功率因数 p /(根号:p²+Q²)
     **/
    public static Double calculateCos(double PValue, double QValue) {
        // 绝对值
        PValue = Math.abs(PValue);
        QValue = Math.abs(QValue);
        //PValue或QValue 小于 1 直接判断为关闭返回0
        if (QValue < 0.01) {
            return 0.0;
        } else {
            BigDecimal result = new BigDecimal(PValue).divide(BigDecimal.valueOf(Math.sqrt(Math.pow(PValue, 2) + Math.pow(QValue, 2))), 2, BigDecimal.ROUND_HALF_UP);
            if (result.compareTo(BigDecimal.ONE) >= 0) {
                return 0.99;
            }
            return result.doubleValue();
        }
    }
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PowerNetFactorEntity.java
@@ -121,4 +121,24 @@
     * 功率因数上限
     */
    private BigDecimal cosLimitH;
    /**
     * 有功日累计
     */
    private String pDay;
    /**
     * 无功日累计
     */
    private String qDay;
    /**
     * 有功月累计
     */
    private String pMon;
    /**
     * 无功月累计
     */
    private String qMon;
}