| | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * 累计点处理 |
| | |
| | | @Autowired |
| | | private RedisTemplate<String, Object> redisTemplate; |
| | | |
| | | public List<InfluxPointValuePOJO> handle(Date collectTime, List<DaPointDTO> dtos, List<String> listGood, List<String> listBad) { |
| | | public List<InfluxPointValuePOJO> handle(Date collectTime, List<DaPointDTO> dtos, Map<String, Object> dataMap, List<String> listGood, List<String> listBad) { |
| | | List<InfluxPointValuePOJO> result = new ArrayList<>(); |
| | | try { |
| | | log.info("累计点处理开始"); |
| | |
| | | } |
| | | dtos.forEach(dto -> { |
| | | try { |
| | | Object value = singleCompute(dto, collectTime, listGood, listBad); |
| | | InfluxPointValuePOJO pojo = GenInfluxPointValueUtils.getByPoint(dto, value); |
| | | Object rawValue = singleCompute(dto, collectTime, listGood, listBad); |
| | | BigDecimal coefficient = dto.getUnittransfactor() == null ? BigDecimal.ONE : dto.getUnittransfactor(); |
| | | BigDecimal calValue = new BigDecimal(rawValue.toString()).multiply(coefficient); |
| | | InfluxPointValuePOJO pojo = GenInfluxPointValueUtils.getByPoint(dto, calValue); |
| | | pojo.setTimestamp(GenInfluxPointValueUtils.getByMin(collectTime, DataPointFreqEnum.getEumByCode(dto.getMinfreqid()))); |
| | | dataMap.put(dto.getPointNo(), calValue); |
| | | result.add(pojo); |
| | | } catch (Exception ex) { |
| | | ex.printStackTrace(); |
| | |
| | | if (redisTemplate.hasKey(PointCollector.PV + item.getPointNo())) { |
| | | value = redisTemplate.opsForValue().get(PointCollector.PV + item.getPointNo()); |
| | | } else { |
| | | value = singleCompute(item, calendar.getTime()); |
| | | Object rawValue = singleCompute(item, calendar.getTime()); |
| | | BigDecimal coefficient = item.getUnittransfactor() == null ? BigDecimal.ONE : item.getUnittransfactor(); |
| | | value = new BigDecimal(rawValue.toString()).multiply(coefficient); |
| | | // 写入缓存 |
| | | redisTemplate.opsForValue().set(PointCollector.PV + item.getPointNo(), |
| | | new BigDecimal(value.toString()).doubleValue(), PointCollector.offset, TimeUnit.SECONDS); |
| | | } |
| | | data.put(item.getPointNo(), value); |
| | | }); |
| | |
| | | log.info("queryDto=" + JSONObject.toJSONString(queryDto)); |
| | | List<ApiPointValueDTO> dataList = new ArrayList<>(); |
| | | List<ApiPointValueDTO> dataListTemp = dataPointApi.queryPointHistoryValue(queryDto); |
| | | if (dto.getIsCumuNeg() != null && dto.getIsCumuNeg().equals(0)) { |
| | | for(ApiPointValueDTO item : dataListTemp) { |
| | | if (item.getV() > 0) { |
| | | if (dto.getIsCumuNeg() != null) { |
| | | if (dto.getIsCumuNeg().equals(0)) { |
| | | // 不累计负值 |
| | | for (ApiPointValueDTO item : dataListTemp) { |
| | | if (item.getV() > 0) { |
| | | dataList.add(item); |
| | | } |
| | | } |
| | | }else if (dto.getIsCumuNeg().equals(2)) { |
| | | // 绝对值累计 |
| | | for (ApiPointValueDTO item : dataListTemp) { |
| | | item.setV(Math.abs(item.getV())); |
| | | dataList.add(item); |
| | | } |
| | | }else { |
| | | dataList = dataListTemp; |
| | | } |
| | | } else { |
| | | dataList = dataListTemp; |
| | |
| | | long start = startTime.getTime(); |
| | | long end = endTime.getTime(); |
| | | long oneMin = 1000L * DataPointFreqEnum.getEumByCode(minfreqid).getValue(); |
| | | long mins = (end - start) / oneMin; |
| | | long mins = ((end - start) / oneMin) + 1; |
| | | |
| | | //找出缺少项 |
| | | Map<Long, Double> sourceDataMap = new HashMap<>(dataList.size()); |