| | |
| | | dataView.setPreMax(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); |
| | | dataView.setPreMin(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); |
| | | dataView.setPreLast(new BigDecimal(curList.get(curList.size() - 1))); |
| | | dataView.setPreCumulant(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).sum()) |
| | | .divide(new BigDecimal(HOUR_MINS), 2, BigDecimal.ROUND_HALF_UP)); |
| | | dataView.setPreCumulant(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).sum())); |
| | | } |
| | | |
| | | String alarmObj = chartParams.get(CommonConstant.ALARM_OBJ); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Map<String,List<Object[]>> getElectricPredictData(String itemCode) { |
| | | ItemVO predictItem = mmPredictItemService.getItemByItemNo(itemCode); |
| | | if (null == predictItem) { |
| | | return new HashMap<>(); |
| | | } |
| | | List<Integer> resultIndexs = new ArrayList<>(); |
| | | resultIndexs.add(0); |
| | | resultIndexs.add(1); |
| | | resultIndexs.add(2); |
| | | List<MmItemOutputEntity> outPuts = mmItemOutputService.getByItemid(predictItem.getId(),"predictValues",resultIndexs); |
| | | if (CollectionUtils.isEmpty(outPuts)) { |
| | | return new HashMap<>(); |
| | | } |
| | | InfluxModelResultByOutPutIdsPOJO pojo = new InfluxModelResultByOutPutIdsPOJO(); |
| | | pojo.setOutPutIds(outPuts.stream().map(MmItemOutputEntity::getId).collect(Collectors.toList())); |
| | | pojo.setType(DataTypeEnum.FLOAT.getCode()); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(predictItem.getLastTime()); |
| | | calendar.add(Calendar.DAY_OF_YEAR, 7); |
| | | Map<String, List<InfluxModelResultVO>> outPutDatas = influxDBService.queryModelResultsByOutPutIds(pojo, predictItem.getLastTime(), calendar.getTime()); |
| | | Map<String,List<Object[]>> result = new HashMap<>(outPuts.size()); |
| | | for (MmItemOutputEntity outPut : outPuts) { |
| | | String outPutId = outPut.getId(); |
| | | if (outPutDatas.containsKey(outPutId)) { |
| | | List<InfluxModelResultVO> influxModelResultVOS = outPutDatas.get(outPutId); |
| | | result.put(null == outPut.getResultIndex() ? outPut.getResultstr() : outPut.getResultstr()+"_"+outPut.getResultIndex(),influxModelResultVOS.stream().map(e -> { |
| | | Object[] values = new Object[2]; |
| | | values[0] = DateUtils.format(Date.from(e.getTimestamp()), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); |
| | | values[1] = Double.valueOf(e.getValue().toString()); |
| | | return values; |
| | | }).collect(Collectors.toList())); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | @Override |
| | | public List<StScheduleRecordVO> getLastScheduleData(String scheduleCode, Integer limit) { |
| | | if (StringUtils.isBlank(scheduleCode)) { |
| | | return null; |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> getRealTimeStatus(List<Map<String, Object>> machines) { |
| | | List<String> pointNos = new ArrayList<>(16); |
| | | for (Map<String, Object> machine : machines) { |
| | | List<String> list = (List<String>) machine.get("pointNos"); |
| | | pointNos.addAll(list); |
| | | } |
| | | Map<String, Object> pointValues = dataPointApi.queryPointsRealValue(pointNos); |
| | | List<Map<String, Object>> results = new ArrayList<>(); |
| | | for (Map<String, Object> machine : machines) { |
| | | List<String> pointNoList = (List<String>) machine.get("pointNos"); |
| | | if (!pointValues.containsKey(pointNoList.get(0)) || !pointValues.containsKey(pointNoList.get(1))) { |
| | | machine.put("status",false); |
| | | machine.put("num",0); |
| | | results.add(machine); |
| | | continue; |
| | | } |
| | | Double PValue = Double.valueOf(pointValues.get(pointNoList.get(0)).toString()); |
| | | Double QValue = Double.valueOf(pointValues.get(pointNoList.get(1)).toString()); |
| | | Double cos = calculateCos(PValue, QValue); |
| | | if (cos.equals(0.0)) { |
| | | machine.put("status",false); |
| | | machine.put("num",0); |
| | | }else { |
| | | machine.put("status",true); |
| | | machine.put("num",cos); |
| | | } |
| | | results.add(machine); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, List<Object[]>> getPredictDataItemNo(PreDataItemNoReqVO reqVO) { |
| | | if (StringUtils.isBlank(reqVO.getItemNo()) || null == reqVO.getStartTime() || null == reqVO.getEndTime()) { |
| | | if (StringUtils.isBlank(reqVO.getItemNo())) { |
| | | return new HashMap<>(); |
| | | } |
| | | ItemVO predictItem = mmPredictItemService.getItemByItemNo(reqVO.getItemNo()); |
| | | if (null == predictItem) { |
| | | return new HashMap<>(); |
| | | } |
| | | |
| | | // 默认开始时间:运行时间 |
| | | if (null == reqVO.getStartTime()) { |
| | | reqVO.setStartTime(predictItem.getLastTime()); |
| | | } |
| | | // 默认结束时间:运行时间+预测长度*粒度 |
| | | if (null == reqVO.getEndTime()) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(predictItem.getLastTime()); |
| | | calendar.add(Calendar.SECOND,predictItem.getPredictLength() * predictItem.getGranularity()); |
| | | reqVO.setEndTime(calendar.getTime()); |
| | | } |
| | | |
| | | List<String> itemNos = new ArrayList<String>(){{ |
| | | add(reqVO.getItemNo()); |
| | | }}; |