| | |
| | | import com.iailab.module.data.common.ApiDataQueryDTO; |
| | | import com.iailab.module.model.api.mcs.McsApi; |
| | | import com.iailab.module.model.api.mcs.dto.*; |
| | | import com.iailab.module.model.api.mdk.dto.StScheduleRecordVO; |
| | | import com.iailab.module.model.common.enums.DataTypeEnum; |
| | | import com.iailab.module.model.enums.CommonConstant; |
| | | import com.iailab.module.model.common.enums.PreLineTypeEnum; |
| | | import com.iailab.module.model.enums.CommonConstant; |
| | | import com.iailab.module.model.influxdb.pojo.InfluxModelResultByOutPutIdsPOJO; |
| | | import com.iailab.module.model.influxdb.service.InfluxDBService; |
| | | import com.iailab.module.model.influxdb.vo.InfluxModelResultVO; |
| | |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.text.DecimalFormat; |
| | | import java.util.*; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | import java.util.stream.Stream; |
| | | |
| | | /** |
| | | * @author PanZhibao |
| | |
| | | } |
| | | |
| | | @Override |
| | | public String getLastScheduleData(String scheduleCode) { |
| | | public List<StScheduleRecordVO> getLastScheduleData(String scheduleCode, Integer limit) { |
| | | if (StringUtils.isBlank(scheduleCode)) { |
| | | return null; |
| | | } |
| | | return stScheduleRecordService.getLastScheduleResult(scheduleCode); |
| | | return stScheduleRecordService.getLastScheduleResult(scheduleCode,limit); |
| | | } |
| | | |
| | | @Override |
| | |
| | | return results; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, List<Object[]>> getPredictDataItemNo(PreDataItemNoReqVO reqVO) { |
| | | if (StringUtils.isBlank(reqVO.getItemNo()) || null == reqVO.getStartTime() || null == reqVO.getEndTime()) { |
| | | return new HashMap<>(); |
| | | } |
| | | ItemVO predictItem = mmPredictItemService.getItemByItemNo(reqVO.getItemNo()); |
| | | if (null == predictItem) { |
| | | return new HashMap<>(); |
| | | } |
| | | List<String> itemNos = new ArrayList<String>(){{ |
| | | add(reqVO.getItemNo()); |
| | | }}; |
| | | List<MmPredictItemRespVO> ItemRespVOs = mmPredictItemService.getArrayOutPutsByItemNos(itemNos); |
| | | if (CollectionUtils.isEmpty(ItemRespVOs)) { |
| | | return new HashMap<>(); |
| | | } |
| | | List<MmItemOutputRespVO> outPuts = ItemRespVOs.get(0).getOutPuts(); |
| | | if (CollectionUtils.isEmpty(outPuts)) { |
| | | return new HashMap<>(); |
| | | } |
| | | |
| | | InfluxModelResultByOutPutIdsPOJO pojo = new InfluxModelResultByOutPutIdsPOJO(); |
| | | pojo.setOutPutIds(outPuts.stream().map(MmItemOutputRespVO::getId).collect(Collectors.toList())); |
| | | pojo.setType(DataTypeEnum.FLOAT.getCode()); |
| | | Map<String, List<InfluxModelResultVO>> outPutDatas = influxDBService.queryModelResultsByOutPutIds(pojo, reqVO.getStartTime(), reqVO.getEndTime()); |
| | | Map<String,List<Object[]>> result = new HashMap<>(outPuts.size()); |
| | | for (MmItemOutputRespVO 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; |
| | | } |
| | | |
| | | /** |
| | | * 计算功率因数 p²/(根号:p²+Q²) |
| | | **/ |