baoshiwei
2025-06-08 013fa08f64639a4a722dbb709a746a4561a02964
src/main/java/com/zhitan/service/impl/DataServiceImpl.java
@@ -129,6 +129,35 @@
    @Override
    public void writeTimeSeriesData(@NotNull PowerEntity powerEntity) {
        List<IndexTemplate> templates = getIndexTemplate();
        // 判断总有功是否为空,如果为空判断正向有功和反向有功是否为空,如果后两个任意一个不为空,则从时序数据库中获取为空的那一个,然后将总有功能电能赋值为正向有功能电能减去反向有功能电能
        if (powerEntity.getEps() == null) {
            if (powerEntity.getEpsp() != null && powerEntity.getEpsn() != null) {
                powerEntity.setEps(powerEntity.getEpsp() - powerEntity.getEpsn());
            } else if (powerEntity.getEpsp() != null) {
                double lastValue = repository.getLastPoint(influxdbConfig.getMeasurement(),
                        TAG, powerEntity.getSn() + "_" + "Exp");
                powerEntity.setEps(powerEntity.getEpsp() - lastValue);
            } else if (powerEntity.getEpsn() != null) {
                double lastValue = repository.getLastPoint(influxdbConfig.getMeasurement(),
                        TAG, powerEntity.getSn() + "_" + "ActiveZT");
                powerEntity.setEps(lastValue - powerEntity.getEpsn());
            }
        }
        // 判断总无功是否为空,如果为空判断正向无功和反向无功是否为空,如果后两个任意一个不为空,则从时序数据库中获取为空的那一个,然后将总无功电能赋值为正向无功电能和反向无功电能的绝对值之和
        if (powerEntity.getEqs() == null) {
            if (powerEntity.getEqsp() != null && powerEntity.getEqsn() != null) {
                powerEntity.setEqs(Math.abs(powerEntity.getEqsp()) + Math.abs(powerEntity.getEqsn()));
            } else if (powerEntity.getEqsp() != null) {
                double lastValue = repository.getLastPoint(influxdbConfig.getMeasurement(),
                        TAG, powerEntity.getSn() + "_" + "ExpZN");
                powerEntity.setEqs(Math.abs(lastValue) + Math.abs(powerEntity.getEqsp()));
            } else if (powerEntity.getEqsn() != null) {
                double lastValue = repository.getLastPoint(influxdbConfig.getMeasurement(),
                        TAG, powerEntity.getSn() + "_" + "ActiveZN");
                powerEntity.setEqs(Math.abs(lastValue) + Math.abs(powerEntity.getEqsn()));
            }
        }
        // 获取类中所有声明的字段
        Field[] fields = powerEntity.getClass().getDeclaredFields();
        List<Point> points = new ArrayList<>();