Jay
2025-02-24 023d6b104c5056ced2fb0b834ae28363078203ba
iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/CalculateHandle.java
@@ -1,5 +1,6 @@
package com.iailab.module.data.point.collection.handler;
import com.alibaba.fastjson.JSON;
import com.iailab.framework.common.util.string.StrUtils;
import com.iailab.module.data.common.enums.CommonConstant;
import com.iailab.module.data.common.enums.DataTypeEnum;
@@ -21,6 +22,8 @@
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
 * 计算点处理
@@ -57,6 +60,7 @@
            if (CollectionUtils.isEmpty(dtos)) {
                return result;
            }
            log.info(JSON.toJSONString(listBad));
            dtos.forEach(dto -> {
                try {
                    Object value = singleCompute(dto, dataMap, listGood, listBad);
@@ -79,9 +83,13 @@
    private Object singleCompute(DaPointDTO dto, Map<String, Object> dataMap,List<String> listGood,List<String> listBad) {
        String expression = dto.getExpression();
        log.info("PointNo=" + dto.getPointNo() + ";SourceExpression=" + expression);
        String[] arr = expression.split(regex);
        // 去掉arr中的空格
        arr = Stream.of(arr).filter(StringUtils::isNotBlank).toArray(String[]::new);
        // 判断arr都在dataMap中包含
        if (!Arrays.stream(arr).allMatch(dataMap::containsKey)) {
            log.info("dataMap not contains key");
            listBad.add(dto.getPointNo());
            return CommonConstant.BAD_VALUE;
        }