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