| | |
| | | package com.iailab.module.data.point.collection; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.iailab.module.data.common.enums.DataSourceType; |
| | | import com.iailab.module.data.common.utils.R; |
| | | import com.iailab.module.data.channel.kio.collector.KingIOCollector; |
| | | import com.iailab.module.data.influxdb.pojo.InfluxPointValueBoolPOJO; |
| | | import com.iailab.module.data.influxdb.pojo.InfluxPointValueDigPOJO; |
| | | import com.iailab.module.data.influxdb.pojo.InfluxPointValueSimPOJO; |
| | | import com.iailab.module.data.point.collection.handler.CalculateHandle; |
| | | import com.iailab.module.data.point.collection.handler.CumulateHandle; |
| | | import com.iailab.module.data.point.collection.handler.*; |
| | | import com.iailab.module.data.point.common.PointTypeEnum; |
| | | import com.iailab.module.data.point.dto.DaPointDTO; |
| | | import com.iailab.module.data.point.service.DaPointCollectStatusService; |
| | |
| | | import com.iailab.module.data.influxdb.pojo.InfluxPointValuePOJO; |
| | | import com.iailab.module.data.channel.modbus.collector.ModBusCollector; |
| | | import com.iailab.module.data.channel.opcua.collector.OpcUaCollector; |
| | | import com.iailab.module.data.point.collection.handler.ConstantHandle; |
| | | import com.iailab.module.data.point.collection.handler.MeasureHandle; |
| | | import com.iailab.module.data.point.dto.DaPointWriteValueDTO; |
| | | import com.iailab.module.data.influxdb.service.InfluxDBService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.Duration; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | |
| | | @Resource |
| | | private CumulateHandle cumulateHandle; |
| | | |
| | | @Resource |
| | | private ExtremalHandle extremalHandle; |
| | | |
| | | @Autowired |
| | | private DaPointCollectStatusService daPointCollectStatusService; |
| | | |
| | |
| | | */ |
| | | public void collect(Date collectTime, String minfreq) { |
| | | try { |
| | | log.info("collectTime=" + collectTime.getTime()); |
| | | Map<String, Object> dataMap = new HashMap<>(); |
| | | List<InfluxPointValuePOJO> pointValues = new ArrayList<>(); |
| | | // 记录点位状态 |
| | |
| | | List<DaPointDTO> pointMeasureList = daPointService.getMeasurePoint(minfreq); |
| | | pointValues.addAll(measureHandle.handle(collectTime, pointMeasureList, dataMap, listGood, listBad)); |
| | | |
| | | List<String> listBadNew = new ArrayList<>(); |
| | | if (!CollectionUtils.isEmpty(listBad)) { |
| | | log.info("BAD点值修复"); |
| | | List<InfluxPointValuePOJO> influxParams = new ArrayList<>(); |
| | | for (String bad : listBad) { |
| | | DaPointDTO daPointDTO = daPointService.getByNo(bad); |
| | | InfluxPointValuePOJO pojo = new InfluxPointValuePOJO(); |
| | | pojo.setPoint(bad); |
| | | pojo.setType(daPointDTO.getDataType()); |
| | | influxParams.add(pojo); |
| | | } |
| | | Map<String, Object> lastValue = influxDBService.queryPointsLastValue(influxParams); |
| | | log.info("lastValue=" + JSONObject.toJSONString(lastValue)); |
| | | if (!CollectionUtils.isEmpty(lastValue)) { |
| | | for (String bad : listBad) { |
| | | if (lastValue.containsKey(bad)) { |
| | | listGood.add(bad); |
| | | dataMap.put(bad, lastValue.get(bad)); |
| | | } else { |
| | | listBadNew.add(bad); |
| | | } |
| | | } |
| | | } else { |
| | | listBadNew = listBad; |
| | | } |
| | | } |
| | | |
| | | log.info("读取计算点"); |
| | | List<DaPointDTO> pointCalculateList = daPointService.getMathPoint(minfreq); |
| | | pointValues.addAll(calculateHandle.handle(collectTime, pointCalculateList, dataMap, listGood, listBadNew)); |
| | | pointValues.addAll(calculateHandle.handle(collectTime, pointCalculateList, dataMap, listGood, listBad)); |
| | | |
| | | log.info("读取累计点"); |
| | | List<DaPointDTO> pointCumulateList = daPointService.getCumulatePoint(minfreq); |
| | | pointValues.addAll(cumulateHandle.handle(collectTime, pointCumulateList, listGood, listBadNew)); |
| | | pointValues.addAll(cumulateHandle.handle(collectTime, pointCumulateList, listGood, listBad)); |
| | | |
| | | log.info("读取极值点"); |
| | | List<DaPointDTO> pointExtremalList = daPointService.getExtremalPoint(minfreq); |
| | | pointValues.addAll(extremalHandle.handle(collectTime, pointExtremalList, listGood, listBad)); |
| | | |
| | | log.info("存入时序库"); |
| | | log.info("pointValueTimestamp=" + (pointValues.get(0) == null ? 0 : pointValues.get(0).getTimestamp().getNano())); |
| | | influxDBService.asyncWritePointValues(pointValues); |
| | | |
| | | log.info("存入缓存"); |
| | |
| | | data.putAll(measureHandle.getCurrent(pointNos)); |
| | | data.putAll(calculateHandle.getCurrent(pointNos)); |
| | | data.putAll(cumulateHandle.getCurrent(pointNos)); |
| | | data.putAll(extremalHandle.getCurrent(pointNos)); |
| | | return data; |
| | | } catch (Exception ex) { |
| | | ex.printStackTrace(); |