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