| | |
| | | package com.iailab.module.model.api; |
| | | |
| | | import com.iailab.framework.common.util.date.DateUtils; |
| | | import com.iailab.framework.common.util.object.ConvertUtils; |
| | | import com.iailab.module.data.api.plan.PlanItemApi; |
| | | import com.iailab.module.data.api.plan.dto.ApiPlanDataDTO; |
| | | import com.iailab.module.data.api.point.DataPointApi; |
| | | import com.iailab.module.data.api.point.dto.ApiPointDTO; |
| | | import com.iailab.module.data.api.point.dto.ApiPointValueDTO; |
| | | import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO; |
| | | 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.common.enums.CommonConstant; |
| | |
| | | |
| | | @Autowired |
| | | private ChartService chartService; |
| | | |
| | | @Autowired |
| | | private PlanItemApi planItemApi; |
| | | |
| | | private int HOUR_MINS = 60; |
| | | |
| | |
| | | BigDecimal limitL = chartParams.get(CommonConstant.LIMIT_L) == null ? BigDecimal.ZERO : new BigDecimal(chartParams.get(CommonConstant.LIMIT_L)); |
| | | int lengthLeft = chartParams.get(CommonConstant.LENGTH_LEFT) == null ? predictItem.getPredictLength() : new BigDecimal(chartParams.get(CommonConstant.LENGTH_LEFT)).intValue(); |
| | | int lengthRight = chartParams.get(CommonConstant.LENGTH_RIGHT) == null ? predictItem.getPredictLength() : new BigDecimal(chartParams.get(CommonConstant.LENGTH_RIGHT)).intValue(); |
| | | result.setPredictTime(predictItem.getLastTime()); |
| | | Date predictTime = predictItem.getLastTime(); |
| | | Date startTime = reqVO.getStartTime(); |
| | | if (startTime == null) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(predictItem.getLastTime()); |
| | | calendar.add(Calendar.MINUTE, -1 * lengthLeft); |
| | | startTime = calendar.getTime(); |
| | | } |
| | | Date endTime = reqVO.getEndTime(); |
| | | if (endTime == null) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(predictItem.getLastTime()); |
| | | calendar.add(Calendar.MINUTE, lengthRight); |
| | | endTime = calendar.getTime(); |
| | | } |
| | | if (endTime.getTime() <= startTime.getTime()) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(startTime); |
| | | calendar.add(Calendar.MINUTE, lengthRight); |
| | | endTime = calendar.getTime(); |
| | | } |
| | | |
| | | Date[] timeArray = calResultTime(predictItem, reqVO.getStartTime(), reqVO.getEndTime(), lengthLeft, lengthRight); |
| | | Date predictTime = timeArray[0]; |
| | | Date startTime = timeArray[1]; |
| | | Date endTime = timeArray[2]; |
| | | |
| | | List<String> categories = DateUtils.getTimeScale(startTime, endTime, predictItem.getGranularity(), timeFormat); |
| | | List<String> legend = new ArrayList<>(); |
| | | MmItemOutputEntity outPut = mmItemOutputService.getByItemid(predictItem.getId(), resultStr); |
| | |
| | | dataView.setPreMin(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); |
| | | } |
| | | |
| | | result.setPredictTime(predictTime); |
| | | result.setStartTime(startTime); |
| | | result.setEndTime(endTime); |
| | | result.setCategories(categories); |
| | | result.setLegend(legend); |
| | | result.setDataView(dataView); |
| | | return result; |
| | | } |
| | | |
| | | @Override |
| | | public PlanDataSingleChartRespVO getPlanDataSingleChart(PreDataSingleChartReqVO reqVO) { |
| | | PlanDataSingleChartRespVO result = new PlanDataSingleChartRespVO(); |
| | | Map<String, String> chartParams = chartService.getByChartCode(reqVO.getChartCode()); |
| | | if (CollectionUtils.isEmpty(chartParams)) { |
| | | return result; |
| | | } |
| | | String itemCode = chartParams.get(CommonConstant.ITEM_CODE); |
| | | if (itemCode == null) { |
| | | return result; |
| | | } |
| | | String planItemStr = chartParams.get(CommonConstant.PLAN_ITEM_LIST); |
| | | if (planItemStr == null) { |
| | | return result; |
| | | } |
| | | List<String> planItemCodeList = Arrays.asList(planItemStr.split(",")); |
| | | |
| | | ItemVO predictItem = mmPredictItemService.getItemByItemNo(itemCode); |
| | | if (predictItem == null || predictItem.getLastTime() == null) { |
| | | return result; |
| | | } |
| | | String timeFormat = StringUtils.isBlank(reqVO.getTimeFormat()) ? DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND : reqVO.getTimeFormat(); |
| | | int lengthLeft = chartParams.get(CommonConstant.LENGTH_LEFT) == null ? predictItem.getPredictLength() : new BigDecimal(chartParams.get(CommonConstant.LENGTH_LEFT)).intValue(); |
| | | int lengthRight = chartParams.get(CommonConstant.LENGTH_RIGHT) == null ? predictItem.getPredictLength() : new BigDecimal(chartParams.get(CommonConstant.LENGTH_RIGHT)).intValue(); |
| | | Date[] timeArray = calResultTime(predictItem, reqVO.getStartTime(), reqVO.getEndTime(), lengthLeft, lengthRight); |
| | | Date predictTime = timeArray[0]; |
| | | Date startTime = timeArray[1]; |
| | | Date endTime = timeArray[2]; |
| | | List<String> categories = DateUtils.getTimeScale(startTime, endTime, predictItem.getGranularity(), timeFormat); |
| | | List<String> legend = new ArrayList<>(); |
| | | LinkedHashMap<String, List<PlanDataRecordDTO>> record = new LinkedHashMap<>(); |
| | | ApiDataQueryDTO queryDTO = new ApiDataQueryDTO(); |
| | | queryDTO.setItemNos(planItemCodeList); |
| | | queryDTO.setStart(startTime); |
| | | queryDTO.setEnd(endTime); |
| | | LinkedHashMap<String, List<ApiPlanDataDTO>> planData = planItemApi.queryPlanItemRecordValue(queryDTO); |
| | | if (CollectionUtils.isEmpty(planData)) { |
| | | planData.forEach((key, value) -> { |
| | | record.put(key, ConvertUtils.sourceToTarget(value, PlanDataRecordDTO.class)); |
| | | }); |
| | | } |
| | | result.setPredictTime(predictTime); |
| | | result.setStartTime(startTime); |
| | | result.setEndTime(endTime); |
| | | result.setCategories(categories); |
| | | result.setLegend(legend); |
| | | result.setRecord(record); |
| | | return result; |
| | | } |
| | | |
| | |
| | | public Boolean modifyScheduleModelSetting(List<ScheduleModelSettingReqDTO> dtos) { |
| | | return true; |
| | | } |
| | | |
| | | |
| | | private Date[] calResultTime(ItemVO predictItem, Date startTimeReq, Date endTimeReq, int lengthLeft, int lengthRight) { |
| | | Date[] result = new Date[3]; |
| | | Date predictTime = predictItem.getLastTime(); |
| | | Date startTime = startTimeReq; |
| | | if (startTime == null) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(predictItem.getLastTime()); |
| | | calendar.add(Calendar.MINUTE, -1 * lengthLeft); |
| | | startTime = calendar.getTime(); |
| | | } |
| | | Date endTime = endTimeReq; |
| | | if (endTime == null) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(predictItem.getLastTime()); |
| | | calendar.add(Calendar.MINUTE, lengthRight); |
| | | endTime = calendar.getTime(); |
| | | } |
| | | if (endTime.getTime() <= startTime.getTime()) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(startTime); |
| | | calendar.add(Calendar.MINUTE, lengthRight); |
| | | endTime = calendar.getTime(); |
| | | } |
| | | result[0] = predictTime; |
| | | result[1] = startTime; |
| | | result[2] = endTime; |
| | | return result; |
| | | } |
| | | } |