潘志宝
4 天以前 d322fe3250eb76f46e5637d2b3336c92221a97e7
提交 | 用户 | 时间
b368e6 1 package com.iailab.module.model.api;
2
3 import com.iailab.framework.common.util.date.DateUtils;
8a74e9 4 import com.iailab.framework.common.util.object.ConvertUtils;
5 import com.iailab.module.data.api.plan.PlanItemApi;
6 import com.iailab.module.data.api.plan.dto.ApiPlanDataDTO;
b368e6 7 import com.iailab.module.data.api.point.DataPointApi;
8 import com.iailab.module.data.api.point.dto.ApiPointDTO;
9 import com.iailab.module.data.api.point.dto.ApiPointValueDTO;
10 import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO;
6eeac9 11 import com.iailab.module.data.api.point.dto.ApiPointValueWriteDTO;
8a74e9 12 import com.iailab.module.data.common.ApiDataQueryDTO;
b368e6 13 import com.iailab.module.model.api.mcs.McsApi;
14 import com.iailab.module.model.api.mcs.dto.*;
91343d 15 import com.iailab.module.model.common.enums.CommonConstant;
16 import com.iailab.module.model.common.enums.PreLineTypeEnum;
b368e6 17 import com.iailab.module.model.mcs.pre.entity.DmModuleEntity;
18 import com.iailab.module.model.mcs.pre.entity.MmItemOutputEntity;
c5fe30 19 import com.iailab.module.model.mcs.pre.entity.MmPredictAlarmMessageEntity;
b368e6 20 import com.iailab.module.model.mcs.pre.service.*;
c5fe30 21 import com.iailab.module.model.mcs.pre.vo.MmPredictAlarmMessageSaveReqVO;
6eeac9 22 import com.iailab.module.model.mcs.sche.entity.StScheduleModelOutEntity;
055765 23 import com.iailab.module.model.mcs.sche.entity.StScheduleSuggestEntity;
6eeac9 24 import com.iailab.module.model.mcs.sche.service.StScheduleModelOutService;
4072bc 25 import com.iailab.module.model.mcs.sche.service.StScheduleSchemeService;
055765 26 import com.iailab.module.model.mcs.sche.service.StScheduleSuggestService;
19f359 27 import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestSaveReqVO;
ead005 28 import com.iailab.module.model.mdk.vo.ItemVO;
730d19 29 import com.iailab.module.model.mpk.service.ChartParamService;
91343d 30 import com.iailab.module.model.mpk.service.ChartService;
b368e6 31 import lombok.extern.slf4j.Slf4j;
977edc 32 import org.apache.commons.lang3.StringUtils;
b368e6 33 import org.springframework.beans.factory.annotation.Autowired;
34 import org.springframework.util.CollectionUtils;
35 import org.springframework.validation.annotation.Validated;
36 import org.springframework.web.bind.annotation.RestController;
37
38 import java.math.BigDecimal;
39 import java.util.*;
912419 40 import java.util.stream.Collectors;
b368e6 41
42 /**
43  * @author PanZhibao
44  * @Description
45  * @createTime 2024年11月13日
46  */
47 @Slf4j
48 @RestController
49 @Validated
50 public class McsApiImpl implements McsApi {
51
52     @Autowired
6eeac9 53     private DataPointApi dataPointApi;
D 54
55     @Autowired
b368e6 56     private DmModuleService dmModuleService;
57
58     @Autowired
59     private MmPredictItemService mmPredictItemService;
60
61     @Autowired
62     private MmItemOutputService mmItemOutputService;
63
64     @Autowired
65     private MmItemResultService mmItemResultService;
66
67     @Autowired
68     private MmItemResultLastPointService mmItemResultLastPointService;
91343d 69
70     @Autowired
71     private MmItemResultJsonService mmItemResultJsonService;
72
73     @Autowired
74     private ChartService chartService;
c5fe30 75
76     @Autowired
77     private MmPredictAlarmMessageService mmPredictAlarmMessageService;
055765 78
79     @Autowired
80     private StScheduleSuggestService stScheduleSuggestService;
8a74e9 81
82     @Autowired
83     private PlanItemApi planItemApi;
9587d2 84
L 85     @Autowired
86     private MmPredictAlarmConfigService mmPredictAlarmConfigService;
3a6dfc 87
4072bc 88     @Autowired
L 89     private StScheduleSchemeService stScheduleSchemeService;
730d19 90
D 91     @Autowired
92     private ChartParamService chartParamService;
6eeac9 93
b368e6 94     private int HOUR_MINS = 60;
95
96     @Override
97     public List<PredictItemTreeDTO> getPredictItemTree() {
98         List<PredictItemTreeDTO> result = new ArrayList<>();
99
100         List<DmModuleEntity> moduleList = dmModuleService.list(new HashMap<>());
101         if (CollectionUtils.isEmpty(moduleList)) {
102             return result;
103         }
104         moduleList.forEach(item -> {
105             PredictItemTreeDTO moduleOpt = new PredictItemTreeDTO();
106             moduleOpt.setId(item.getId());
107             moduleOpt.setLabel(item.getModulename());
108             List<PredictItemTreeDTO> children = new ArrayList<>();
a4891a 109             List<ItemVO> itemList = mmPredictItemService.getByModuleId(item.getId());
b368e6 110             itemList.forEach(item1 -> {
111                 PredictItemTreeDTO chd = new PredictItemTreeDTO();
a4891a 112                 chd.setLabel(item1.getItemName());
b368e6 113                 chd.setId(item1.getId());
a4891a 114                 List<PredictItemTreeDTO> chd1 = new ArrayList<>();
115                 List<MmItemOutputEntity> outList = mmItemOutputService.getByItemid(item1.getId());
116                 if (!CollectionUtils.isEmpty(outList)) {
117                     outList.forEach(out -> {
118                         PredictItemTreeDTO chd2 = new PredictItemTreeDTO();
119                         chd2.setId(out.getId());
f283ee 120                         chd2.setLabel(out.getResultName());
a4891a 121                         chd1.add(chd2);
122                     });
123                 }
124                 chd.setChildren(chd1);
b368e6 125                 children.add(chd);
126             });
127             moduleOpt.setChildren(children);
128             result.add(moduleOpt);
129         });
130         return result;
131     }
132
133     @Override
134     public PreDataBarLineRespVO getPreDataCharts(PreDataBarLineReqVO reqVO) {
135         PreDataBarLineRespVO result = new PreDataBarLineRespVO();
a4891a 136         List<String> outIds = reqVO.getOutIds();
b368e6 137         List<String> legends = new ArrayList<>();
138         List<PreDataViewRespDTO> dataViewList = new ArrayList<>();
9e844c 139         if (CollectionUtils.isEmpty(outIds)) {
b368e6 140             return result;
141         }
142         Date predictTime = reqVO.getPredictTime();
143         if (predictTime == null) {
9e844c 144             MmItemOutputEntity output = mmItemOutputService.getOutPutById(reqVO.getOutIds().get(0));
b82ba2 145             ItemVO predictItem = mmPredictItemService.getItemByIdFromCache(output.getItemid());
9e844c 146             if (predictItem.getLastTime() != null) {
147                 predictTime = predictItem.getLastTime();
148             } else {
149                 Calendar calendar = Calendar.getInstance();
150                 calendar.set(Calendar.MILLISECOND, 0);
151                 calendar.set(Calendar.SECOND, 0);
152                 predictTime = calendar.getTime();
153             }
b368e6 154         }
155         Date startTime = reqVO.getStartTime();
156         if (startTime == null) {
157             Calendar calendar = Calendar.getInstance();
158             calendar.setTime(predictTime);
159             calendar.add(Calendar.HOUR_OF_DAY, -1);
160             startTime = calendar.getTime();
161         }
162         Date endTime = reqVO.getEndTime();
163         if (endTime == null) {
164             Calendar calendar = Calendar.getInstance();
165             calendar.setTime(predictTime);
166             calendar.add(Calendar.HOUR_OF_DAY, 1);
167             endTime = calendar.getTime();
168         }
169
a4891a 170         for (int i = 0; i < outIds.size(); i++) {
b368e6 171             PreDataViewRespDTO viewDto = new PreDataViewRespDTO();
a4891a 172             String outId = outIds.get(i);
173             MmItemOutputEntity output = mmItemOutputService.getOutPutById(outId);
b368e6 174             if (output == null) {
9e844c 175                 continue;
b368e6 176             }
f283ee 177             legends.add(output.getResultName());
9e844c 178             viewDto.setItemId(output.getItemid());
179             viewDto.setOutId(outId);
180             viewDto.setResultstr(output.getResultstr());
f283ee 181             viewDto.setResultName(output.getResultName());
b368e6 182             viewDto.setRealData(getHisData(output.getPointid(), startTime, endTime));
977edc 183             viewDto.setPreDataN(mmItemResultService.getData(output.getId(), startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
184             viewDto.setPreDataL(mmItemResultLastPointService.getData(output.getId(), startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
b368e6 185
186             List<Double> values = new ArrayList<>();
187             if (!CollectionUtils.isEmpty(viewDto.getRealData())) {
188                 List<Double> hisValues = new ArrayList<>();
189                 viewDto.getRealData().forEach(item -> {
190                     values.add(Double.parseDouble(item[1].toString()));
191                     hisValues.add(Double.parseDouble(item[1].toString()));
192                 });
193                 viewDto.setHisMax(new BigDecimal(hisValues.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP));
194                 viewDto.setHisMin(new BigDecimal(hisValues.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP));
195                 viewDto.setHisAvg(new BigDecimal(hisValues.stream().mapToDouble(Double::doubleValue).average().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP));
196                 viewDto.setHisCumulant(new BigDecimal(hisValues.stream().mapToDouble(Double::doubleValue).sum())
197                         .divide(new BigDecimal(HOUR_MINS), 2, BigDecimal.ROUND_HALF_UP));
198             }
199             if (!CollectionUtils.isEmpty(viewDto.getPreDataN())) {
200                 viewDto.getPreDataN().forEach(item -> {
201                     values.add(Double.parseDouble(item[1].toString()));
202                 });
203             }
204             if (!CollectionUtils.isEmpty(viewDto.getPreDataL())) {
205                 List<Double> preValues = new ArrayList<>();
206                 viewDto.getPreDataL().forEach(item -> {
207                     values.add(Double.parseDouble(item[1].toString()));
208                     preValues.add(Double.parseDouble(item[1].toString()));
209                 });
210                 viewDto.setPreMax(new BigDecimal(preValues.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP));
211                 viewDto.setPreMin(new BigDecimal(preValues.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP));
212                 viewDto.setPreAvg(new BigDecimal(preValues.stream().mapToDouble(Double::doubleValue).average().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP));
213             }
214             if (!CollectionUtils.isEmpty(viewDto.getCurData())) {
215                 List<Double> preValues = new ArrayList<>();
216                 viewDto.getCurData().forEach(item -> {
217                     values.add(Double.parseDouble(item[1].toString()));
218                     preValues.add(Double.parseDouble(item[1].toString()));
219                 });
220                 viewDto.setPreCumulant(new BigDecimal(preValues.stream().mapToDouble(Double::doubleValue).sum())
221                         .divide(new BigDecimal(HOUR_MINS), 2, BigDecimal.ROUND_HALF_UP));
222             }
223             if (!CollectionUtils.isEmpty(viewDto.getAdjData())) {
224                 viewDto.getAdjData().forEach(item -> {
225                     values.add(Double.parseDouble(item[1].toString()));
226                 });
227             }
228             if (!CollectionUtils.isEmpty(values)) {
229                 viewDto.setMaxValue(new BigDecimal(values.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP));
230                 viewDto.setMinValue(new BigDecimal(values.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP));
231             }
232             dataViewList.add(viewDto);
233         }
234         result.setStartTime(startTime);
235         result.setEndTime(endTime);
236         result.setPredictTime(predictTime);
237         result.setCategories(DateUtils.getTimeScale(startTime, endTime, 60));
238         result.setLegend(legends);
239         result.setDataViewList(dataViewList);
240         return result;
241     }
242
ead005 243     @Override
244     public PreDataItemChartRespVO getPreDataItemChart(PreDataItemChartReqVO reqVO) {
245         PreDataItemChartRespVO result = new PreDataItemChartRespVO();
864b61 246         ItemVO predictItem = mmPredictItemService.getItemById(reqVO.getItemId());
ead005 247         if (predictItem == null) {
248             return result;
249         }
250         if (predictItem.getLastTime() == null) {
251             return result;
252         }
328ef4 253         result.setPredictTime(predictItem.getLastTime());
ead005 254         Date startTime = reqVO.getStartTime();
255         if (startTime == null) {
256             Calendar calendar = Calendar.getInstance();
257             calendar.setTime(predictItem.getLastTime());
91343d 258             calendar.add(Calendar.MINUTE, -1 * predictItem.getPredictLength());
ead005 259             startTime = calendar.getTime();
260         }
261         Date endTime = reqVO.getEndTime();
262         if (endTime == null) {
263             Calendar calendar = Calendar.getInstance();
264             calendar.setTime(predictItem.getLastTime());
91343d 265             calendar.add(Calendar.MINUTE, predictItem.getPredictLength());
ead005 266             endTime = calendar.getTime();
267         }
1f9784 268         if (endTime.getTime() <= startTime.getTime()) {
269             Calendar calendar = Calendar.getInstance();
270             calendar.setTime(startTime);
91343d 271             calendar.add(Calendar.MINUTE, predictItem.getPredictLength());
1f9784 272             endTime = calendar.getTime();
273         }
274
ead005 275         List<String> categories = DateUtils.getTimeScale(startTime, endTime, predictItem.getGranularity());
276         List<String> legend = new ArrayList<>();
277         LinkedHashMap<String, PreDataSampleViewRespDTO> viewMap = new LinkedHashMap<>();
278         List<MmItemOutputEntity> outs = mmItemOutputService.getByItemid(reqVO.getItemId());
279         if (CollectionUtils.isEmpty(outs)) {
280             return result;
281         }
282         for (MmItemOutputEntity out : outs) {
f283ee 283             legend.add(out.getResultName());
ead005 284             PreDataSampleViewRespDTO viewDto = new PreDataSampleViewRespDTO();
85b200 285             if (StringUtils.isNotBlank(out.getPointid())) {
D 286                 viewDto.setRealData(getHisData(out.getPointid(), startTime, endTime));
287             }
977edc 288             viewDto.setPreDataN(mmItemResultService.getData(out.getId(), startTime, endTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
f283ee 289             viewMap.put(out.getResultName(), viewDto);
ead005 290         }
291         result.setStartTime(startTime);
292         result.setEndTime(endTime);
293         result.setCategories(categories);
294         result.setLegend(legend);
295         result.setViewMap(viewMap);
296         return result;
297     }
298
328ef4 299     @Override
91343d 300     public PreDataSingleChartRespVO getPreDataSingleChart(PreDataSingleChartReqVO reqVO) {
301         PreDataSingleChartRespVO result = new PreDataSingleChartRespVO();
328ef4 302
91343d 303         Map<String, String> chartParams = chartService.getByChartCode(reqVO.getChartCode());
304         if (CollectionUtils.isEmpty(chartParams)) {
305             return result;
306         }
307         String itemCode = chartParams.get(CommonConstant.ITEM_CODE);
308         if (itemCode == null) {
309             return result;
310         }
311         String resultStr = chartParams.get(CommonConstant.RESULT_STR);
312         if (resultStr == null) {
313             return result;
314         }
bd9085 315         String resultIndex = chartParams.get(CommonConstant.RESULT_INDEX);
316
91343d 317         ItemVO predictItem = mmPredictItemService.getItemByItemNo(itemCode);
318         if (predictItem == null || predictItem.getLastTime() == null) {
319             return result;
320         }
977edc 321         String timeFormat = StringUtils.isBlank(reqVO.getTimeFormat()) ? DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND : reqVO.getTimeFormat();
322         PreLineTypeEnum lineType = chartParams.get(CommonConstant.LINE_TYPE) == null ? PreLineTypeEnum.TN : PreLineTypeEnum.getEumByCode(chartParams.get(CommonConstant.LINE_TYPE));
91343d 323         BigDecimal rangeH = chartParams.get(CommonConstant.RANGE_H) == null ? BigDecimal.ZERO : new BigDecimal(chartParams.get(CommonConstant.RANGE_H));
324         BigDecimal rangeL = chartParams.get(CommonConstant.RANGE_L) == null ? BigDecimal.ZERO : new BigDecimal(chartParams.get(CommonConstant.RANGE_L));
325         BigDecimal limitH = chartParams.get(CommonConstant.LIMIT_H) == null ? BigDecimal.ZERO : new BigDecimal(chartParams.get(CommonConstant.LIMIT_H));
326         BigDecimal limitL = chartParams.get(CommonConstant.LIMIT_L) == null ? BigDecimal.ZERO : new BigDecimal(chartParams.get(CommonConstant.LIMIT_L));
327         int lengthLeft = chartParams.get(CommonConstant.LENGTH_LEFT) == null ? predictItem.getPredictLength() : new BigDecimal(chartParams.get(CommonConstant.LENGTH_LEFT)).intValue();
328         int lengthRight = chartParams.get(CommonConstant.LENGTH_RIGHT) == null ? predictItem.getPredictLength() : new BigDecimal(chartParams.get(CommonConstant.LENGTH_RIGHT)).intValue();
8a74e9 329
330         Date[] timeArray = calResultTime(predictItem, reqVO.getStartTime(), reqVO.getEndTime(), lengthLeft, lengthRight);
331         Date predictTime = timeArray[0];
332         Date startTime = timeArray[1];
333         Date endTime = timeArray[2];
334
977edc 335         List<String> categories = DateUtils.getTimeScale(startTime, endTime, predictItem.getGranularity(), timeFormat);
91343d 336         List<String> legend = new ArrayList<>();
bdab69 337         MmItemOutputEntity outPut = mmItemOutputService.getByItemid(predictItem.getId(), resultStr, resultIndex);
91343d 338         PreDataViewRespDTO dataView = new PreDataViewRespDTO();
339         dataView.setItemId(predictItem.getId());
340         dataView.setItemName(predictItem.getItemName());
341         dataView.setResultstr(resultStr);
342         dataView.setRangeH(rangeH);
343         dataView.setRangeL(rangeL);
344         dataView.setLimitH(limitH);
345         dataView.setLimitL(limitL);
b6bfe8 346         if (StringUtils.isNotBlank(outPut.getPointid())) {
D 347             dataView.setRealData(getHisData(outPut.getPointid(), startTime, endTime, timeFormat));
348         } else {
349             dataView.setRealData(new ArrayList<>());
350         }
977edc 351         dataView.setCurData(mmItemResultJsonService.getData(outPut.getId(), predictTime, timeFormat));
91343d 352         switch (lineType) {
353             case TN:
977edc 354                 dataView.setPreDataN(mmItemResultService.getData(outPut.getId(), startTime, endTime, timeFormat));
91343d 355                 break;
356             case TL:
977edc 357                 dataView.setPreDataN(mmItemResultService.getData(outPut.getId(), predictTime, endTime, timeFormat));
358                 dataView.setPreDataL(mmItemResultLastPointService.getData(outPut.getId(), startTime, endTime, timeFormat));
91343d 359                 break;
360             default:
361                 break;
362         }
912419 363
364         if (!CollectionUtils.isEmpty(dataView.getCurData())) {
365             List<Double> curList = dataView.getCurData().stream().map(t -> {
366                 return new Double(t[1].toString());
367             }).collect(Collectors.toList());
368             dataView.setPreMax(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP));
369             dataView.setPreMin(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP));
370         }
371
8a74e9 372         result.setPredictTime(predictTime);
91343d 373         result.setStartTime(startTime);
374         result.setEndTime(endTime);
375         result.setCategories(categories);
376         result.setLegend(legend);
377         result.setDataView(dataView);
8a74e9 378         return result;
379     }
380
381     @Override
d9fe8f 382     public Map<String, List<Object[]>> getPreDataCur(PreDataJsonReqVO reqVO) {
383         Map<String, List<Object[]>> result = new HashMap<>();
384         if (reqVO == null || reqVO.getPredictTime() == null || CollectionUtils.isEmpty(reqVO.getOutputIdList())) {
385             return result;
386         }
387         reqVO.getOutputIdList().forEach(outPutId -> {
388             result.put(outPutId, mmItemResultJsonService.getData(outPutId, reqVO.getPredictTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
389         });
390         return result;
391     }
392
393     @Override
8a74e9 394     public PlanDataSingleChartRespVO getPlanDataSingleChart(PreDataSingleChartReqVO reqVO) {
395         PlanDataSingleChartRespVO result = new PlanDataSingleChartRespVO();
396         Map<String, String> chartParams = chartService.getByChartCode(reqVO.getChartCode());
397         if (CollectionUtils.isEmpty(chartParams)) {
398             return result;
399         }
400         String itemCode = chartParams.get(CommonConstant.ITEM_CODE);
401         if (itemCode == null) {
402             return result;
403         }
404         String planItemStr = chartParams.get(CommonConstant.PLAN_ITEM_LIST);
405         if (planItemStr == null) {
406             return result;
407         }
408         List<String> planItemCodeList = Arrays.asList(planItemStr.split(","));
409
410         ItemVO predictItem = mmPredictItemService.getItemByItemNo(itemCode);
411         if (predictItem == null || predictItem.getLastTime() == null) {
412             return result;
413         }
414         String timeFormat = StringUtils.isBlank(reqVO.getTimeFormat()) ? DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND : reqVO.getTimeFormat();
415         int lengthLeft = chartParams.get(CommonConstant.LENGTH_LEFT) == null ? predictItem.getPredictLength() : new BigDecimal(chartParams.get(CommonConstant.LENGTH_LEFT)).intValue();
416         int lengthRight = chartParams.get(CommonConstant.LENGTH_RIGHT) == null ? predictItem.getPredictLength() : new BigDecimal(chartParams.get(CommonConstant.LENGTH_RIGHT)).intValue();
417         Date[] timeArray = calResultTime(predictItem, reqVO.getStartTime(), reqVO.getEndTime(), lengthLeft, lengthRight);
418         Date predictTime = timeArray[0];
419         Date startTime = timeArray[1];
420         Date endTime = timeArray[2];
421         List<String> categories = DateUtils.getTimeScale(startTime, endTime, predictItem.getGranularity(), timeFormat);
422         List<String> legend = new ArrayList<>();
423         LinkedHashMap<String, List<PlanDataRecordDTO>> record = new LinkedHashMap<>();
424         ApiDataQueryDTO queryDTO = new ApiDataQueryDTO();
425         queryDTO.setItemNos(planItemCodeList);
426         queryDTO.setStart(startTime);
427         queryDTO.setEnd(endTime);
428         LinkedHashMap<String, List<ApiPlanDataDTO>> planData = planItemApi.queryPlanItemRecordValue(queryDTO);
429         if (CollectionUtils.isEmpty(planData)) {
430             planData.forEach((key, value) -> {
431                 record.put(key, ConvertUtils.sourceToTarget(value, PlanDataRecordDTO.class));
432             });
433         }
434         result.setPredictTime(predictTime);
435         result.setStartTime(startTime);
436         result.setEndTime(endTime);
437         result.setCategories(categories);
438         result.setLegend(legend);
439         result.setRecord(record);
328ef4 440         return result;
441     }
442
b368e6 443     /**
444      * 获取真实值
445      *
446      * @param pointId
447      * @param startTime
448      * @param endTime
449      * @return
450      */
451     private List<Object[]> getHisData(String pointId, Date startTime, Date endTime) {
452         List<Object[]> result = new ArrayList<>();
453         ApiPointDTO pointDTO = dataPointApi.getInfoById(pointId);
454         ApiPointValueQueryDTO queryPointDto = new ApiPointValueQueryDTO();
455         queryPointDto.setPointNo(pointDTO.getPointNo());
456         queryPointDto.setStart(startTime);
457         queryPointDto.setEnd(endTime);
458         List<ApiPointValueDTO> valueDTOS = dataPointApi.queryPointHistoryValue(queryPointDto);
459         if (CollectionUtils.isEmpty(valueDTOS)) {
460             return result;
461         }
462         valueDTOS.forEach(item -> {
463             Object[] values = new Object[2];
214275 464             values[0] = DateUtils.format(item.getT(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
465             values[1] = new BigDecimal(item.getV()).setScale(2, BigDecimal.ROUND_HALF_UP);
b368e6 466             result.add(values);
467         });
468         return result;
469     }
470
977edc 471     /**
472      * 获取真实值
473      *
474      * @param pointId
475      * @param startTime
476      * @param endTime
477      * @param timeFormat
478      * @return
479      */
480     private List<Object[]> getHisData(String pointId, Date startTime, Date endTime, String timeFormat) {
481         List<Object[]> result = new ArrayList<>();
482         ApiPointDTO pointDTO = dataPointApi.getInfoById(pointId);
483         ApiPointValueQueryDTO queryPointDto = new ApiPointValueQueryDTO();
484         queryPointDto.setPointNo(pointDTO.getPointNo());
485         queryPointDto.setStart(startTime);
486         queryPointDto.setEnd(endTime);
487         List<ApiPointValueDTO> valueDTOS = dataPointApi.queryPointHistoryValue(queryPointDto);
488         if (CollectionUtils.isEmpty(valueDTOS)) {
489             return result;
490         }
491         valueDTOS.forEach(item -> {
492             Object[] values = new Object[2];
493             values[0] = DateUtils.format(item.getT(), timeFormat);
494             values[1] = new BigDecimal(item.getV()).setScale(2, BigDecimal.ROUND_HALF_UP);
495             result.add(values);
496         });
497         return result;
498     }
499
c5fe30 500     /**
501      * 新增预警信息
502      *
503      * @param dto
504      * @return
505      */
b368e6 506     @Override
507     public Boolean createAlarmMessage(AlarmMessageRespDTO dto) {
c5fe30 508         try {
509             mmPredictAlarmMessageService.create(ConvertUtils.sourceToTarget(dto, MmPredictAlarmMessageSaveReqVO.class));
510             return true;
511         } catch (Exception e) {
512             return false;
513         }
b368e6 514     }
515
516     @Override
517     public List<AlarmMessageRespDTO> listAlarmMessage(Map<String, Object> params) {
518         return null;
519     }
520
521     @Override
9587d2 522     public List<AlarmConfigRespDTO> listAlarmConfig(Map<String, Object> params) {
L 523         return mmPredictAlarmConfigService.list(params);
524     }
525
526     @Override
c5fe30 527     public AlarmMessageRespDTO getLastAlarmMessage(String alarmObj) {
528         MmPredictAlarmMessageEntity entity = mmPredictAlarmMessageService.getLast(alarmObj);
529         return ConvertUtils.sourceToTarget(entity, AlarmMessageRespDTO.class);
530     }
531
532     @Override
b368e6 533     public Boolean createScheduleSuggest(ScheduleSuggestRespDTO dto) {
19f359 534         stScheduleSuggestService.create(ConvertUtils.sourceToTarget(dto, StScheduleSuggestSaveReqVO.class));
b368e6 535         return true;
536     }
537
538     @Override
4072bc 539     public List<ScheduleSuggestRespDTO> listScheduleSuggest(Map<String, Object> params) {
3a6dfc 540         return Collections.emptyList();
L 541     }
542
543     @Override
055765 544     public List<ScheduleSuggestRespDTO> getLastLimitScheduleSuggest(String scheduleObj, Integer limit) {
545         List<StScheduleSuggestEntity> list = stScheduleSuggestService.getList(scheduleObj, limit);
546         return ConvertUtils.sourceToTarget(list, ScheduleSuggestRespDTO.class);
b368e6 547     }
548
549     @Override
550     public Boolean modifyPredictModelSetting(List<PredictModelSettingReqDTO> dtos) {
551         return true;
552     }
553
554     @Override
555     public Boolean modifyScheduleModelSetting(List<ScheduleModelSettingReqDTO> dtos) {
556         return true;
557     }
8a74e9 558
4072bc 559     @Override
ed4107 560     public List<StScheduleSchemeDTO> listScheduleScheme(String triggerMethod, String triggerCondition) {
561         Map<String, Object> params = new HashMap<>();
562         params.put("triggerMethod", triggerMethod);
563         params.put("triggerCondition", triggerCondition);
4072bc 564         return stScheduleSchemeService.list(params);
6eeac9 565     }
8a74e9 566
730d19 567     @Override
D 568     public List<ChartParamDTO> getChartParamList(String chartCode) {
569         if (StringUtils.isBlank(chartCode)) {
570             return null;
571         }
572         return chartParamService.list(chartCode);
573     }
574
8a74e9 575     private Date[] calResultTime(ItemVO predictItem, Date startTimeReq, Date endTimeReq, int lengthLeft, int lengthRight) {
576         Date[] result = new Date[3];
577         Date predictTime = predictItem.getLastTime();
578         Date startTime = startTimeReq;
579         if (startTime == null) {
580             Calendar calendar = Calendar.getInstance();
581             calendar.setTime(predictItem.getLastTime());
582             calendar.add(Calendar.MINUTE, -1 * lengthLeft);
583             startTime = calendar.getTime();
584         }
585         Date endTime = endTimeReq;
586         if (endTime == null) {
587             Calendar calendar = Calendar.getInstance();
588             calendar.setTime(predictItem.getLastTime());
589             calendar.add(Calendar.MINUTE, lengthRight);
590             endTime = calendar.getTime();
591         }
592         if (endTime.getTime() <= startTime.getTime()) {
593             Calendar calendar = Calendar.getInstance();
594             calendar.setTime(startTime);
595             calendar.add(Calendar.MINUTE, lengthRight);
596             endTime = calendar.getTime();
597         }
598         result[0] = predictTime;
599         result[1] = startTime;
600         result[2] = endTime;
601         return result;
602     }
b368e6 603 }