潘志宝
2025-01-17 1b48b6b5045c0e3c18539820ceade4a2d1678d67
iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/api/point/DataPointApiImpl.java
@@ -1,5 +1,6 @@
package com.iailab.module.data.api.point;
import com.iailab.framework.common.pojo.PageResult;
import com.iailab.framework.common.util.date.DateUtils;
import com.iailab.framework.common.util.object.ConvertUtils;
import com.iailab.module.data.api.point.dto.*;
@@ -7,9 +8,13 @@
import com.iailab.module.data.influxdb.service.InfluxDBService;
import com.iailab.module.data.influxdb.service.impl.InfluxDBServiceImpl;
import com.iailab.module.data.point.collection.PointCollector;
import com.iailab.module.data.point.collection.handler.CalculateHandle;
import com.iailab.module.data.point.dto.DaMathPointDTO;
import com.iailab.module.data.point.dto.DaPointDTO;
import com.iailab.module.data.point.dto.DaPointWriteValueDTO;
import com.iailab.module.data.point.service.DaMathPointService;
import com.iailab.module.data.point.service.DaPointService;
import com.iailab.module.data.point.vo.DaPointPageReqVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
@@ -17,6 +22,7 @@
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/**
 * @author PanZhibao
@@ -35,6 +41,9 @@
    @Autowired
    private InfluxDBService influxDBService;
    @Autowired
    private DaMathPointService daMathPointService;
    @Override
    public ApiPointDTO getInfoById(String pointId) {
@@ -103,6 +112,7 @@
            endTime = calendar.getTime();
        }
        if (startTime == null) {
            calendar.setTime(endTime);
            calendar.add(Calendar.HOUR_OF_DAY, -1);
            startTime = calendar.getTime();
        }
@@ -130,4 +140,30 @@
            return false;
        }
    }
    @Override
    public PageResult<ApiPointDTO> queryMathPointCurrentValue(ApiPointPageReqVO reqVO) {
        DaPointDTO daPointDTO = daPointService.getSimpleInfoByNo(reqVO.getPointNo());
        DaMathPointDTO daMathPointDTO = daMathPointService.getByPoint(daPointDTO.getId());
        String[] pointNos = daMathPointDTO.getExpression().split(CalculateHandle.regex);
        DaPointPageReqVO pageReqVO = new DaPointPageReqVO();
        pageReqVO.setPageNo(reqVO.getPageNo());
        pageReqVO.setPageSize(reqVO.getPageSize());
        pageReqVO.setPointNos(Arrays.asList(pointNos));
        PageResult<DaPointDTO> pageResult = daPointService.queryPage(pageReqVO);
        List<String> pointNosL = pageResult.getList().stream().map(item -> {
            return item.getPointNo();
        }).collect(Collectors.toList());
        Map<String, Object> currentValueMap = pointCollector.getCurrentValue(pointNosL);
        List<ApiPointDTO> dataList = new ArrayList<>();
        pageResult.getList().forEach(item -> {
            ApiPointDTO dto = new ApiPointDTO();
            dto.setPointNo(item.getPointNo());
            dto.setPointName(item.getPointName());
            dto.setCurrentValue(currentValueMap.get(item.getPointNo()).toString());
            dataList.add(dto);
        });
        return new PageResult<>(dataList, pageResult.getTotal());
    }
}