| | |
| | | |
| | | import com.iailab.framework.common.pojo.CommonResult; |
| | | import com.iailab.framework.common.util.date.DateUtils; |
| | | import com.iailab.framework.common.util.object.ConvertUtils; |
| | | import com.iailab.framework.excel.core.util.ExcelUtils; |
| | | import com.iailab.framework.tenant.core.context.TenantContextHolder; |
| | | import com.iailab.module.data.api.dto.IndexQueryDTO; |
| | | import com.iailab.module.data.api.dto.echarts.BarLineDTO; |
| | | import com.iailab.module.data.api.dto.echarts.SeriesItem; |
| | | import com.iailab.module.data.api.ind.dto.ApiIndItemQueryDTO; |
| | | import com.iailab.module.data.api.ind.dto.ApiIndItemValueDTO; |
| | | 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.ApiPointValueDTO; |
| | | import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO; |
| | | import com.iailab.module.data.api.point.dto.ApiPointsValueQueryDTO; |
| | | import com.iailab.module.data.common.ApiDataQueryDTO; |
| | | import com.iailab.module.data.common.ApiDataValueDTO; |
| | | import com.iailab.module.data.ind.collection.IndItemCollector; |
| | | import com.iailab.module.data.ind.item.vo.IndItemValueVO; |
| | | import com.iailab.module.data.plan.item.entity.PlanItemEntity; |
| | | import com.iailab.module.data.plan.item.vo.PlanItemValueExportVO; |
| | | import com.iailab.module.data.point.common.PointDataTypeEnum; |
| | | import com.iailab.module.data.point.dto.DaPointDTO; |
| | | import com.iailab.module.data.point.service.DaPointService; |
| | | import com.iailab.module.data.api.dto.DeviceValueDTO; |
| | | import com.iailab.module.data.api.utils.ApiSecurityUtils; |
| | | import com.iailab.module.data.common.utils.ApiSecurityUtils; |
| | | import com.iailab.module.data.plan.item.service.PlanItemService; |
| | | import com.iailab.module.data.point.vo.DaPointExcelVO; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | |
| | | import javax.annotation.security.PermitAll; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | |
| | | |
| | | @Autowired |
| | | private DataPointApi dataPointApi; |
| | | |
| | | @Autowired |
| | | private PlanItemApi planItemApi; |
| | | |
| | | @Autowired |
| | | private IndItemCollector indItemCollector; |
| | | |
| | | @Autowired |
| | | private PlanItemService planItemService; |
| | | |
| | | @PermitAll |
| | | @PostMapping("/query-points/history-value") |
| | |
| | | } |
| | | return CommonResult; |
| | | } |
| | | |
| | | @PermitAll |
| | | @PostMapping("/query-plan/history-value") |
| | | @Operation(summary = "查询单个计划历史值") |
| | | public CommonResult<List<ApiDataValueDTO>> queryPlanItemHistoryValue(HttpServletResponse response, HttpServletRequest |
| | | request, @RequestBody ApiDataQueryDTO dto) { |
| | | List<ApiDataValueDTO> result = new ArrayList<>(); |
| | | try { |
| | | apiSecurityUtils.validate(request); |
| | | result = planItemApi.queryPlanItemHistoryValue(dto); |
| | | return new CommonResult<List<ApiDataValueDTO>>().setData(result); |
| | | } catch (Exception ex) { |
| | | return new CommonResult<List<ApiDataValueDTO>>().setMsg(ex.getMessage()); |
| | | } |
| | | } |
| | | |
| | | @PermitAll |
| | | @PostMapping("/query-plan/record-value") |
| | | @Operation(summary = "查询单个计划历史值") |
| | | public CommonResult<LinkedHashMap<String, List<ApiPlanDataDTO>>> queryPlanItemRecordValue(HttpServletResponse response, HttpServletRequest |
| | | request, @RequestBody ApiDataQueryDTO dto) { |
| | | LinkedHashMap<String, List<ApiPlanDataDTO>> result = new LinkedHashMap<>(); |
| | | try { |
| | | apiSecurityUtils.validate(request); |
| | | result = planItemApi.queryPlanItemRecordValue(dto); |
| | | return new CommonResult<LinkedHashMap<String, List<ApiPlanDataDTO>>>().setData(result); |
| | | } catch (Exception ex) { |
| | | return new CommonResult<LinkedHashMap<String, List<ApiPlanDataDTO>>>().setMsg(ex.getMessage()); |
| | | } |
| | | } |
| | | |
| | | @PostMapping("/query-plans/chart") |
| | | public CommonResult<BarLineDTO> queryPlansChart(HttpServletResponse response, HttpServletRequest |
| | | request, @RequestBody ApiDataQueryDTO dto) { |
| | | |
| | | BarLineDTO CommonResult = new BarLineDTO(); |
| | | |
| | | try { |
| | | apiSecurityUtils.validate(request); |
| | | List<String> legend = new ArrayList<>(); |
| | | List<SeriesItem> series = new ArrayList<>(); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | Date endDate = dto.getEnd() == null ? DateUtils.addDateHours(calendar.getTime(), 2) : dto.getEnd(); |
| | | Date startDate = dto.getStart() == null ? calendar.getTime() : dto.getStart(); |
| | | List<String> categories = DateUtils.getTimeScale(startDate, endDate, dto.getGranularity() == null ? 60 : dto.getGranularity()); |
| | | if (CollectionUtils.isEmpty(dto.getItemNos())) { |
| | | return new CommonResult<BarLineDTO>().setData(CommonResult); |
| | | } |
| | | List<PlanItemEntity> planItemList = new ArrayList<>(); |
| | | dto.getItemNos().forEach(item -> { |
| | | planItemList.add(planItemService.getInfoByNo(item)); |
| | | }); |
| | | planItemList.forEach(item -> { |
| | | legend.add(item.getItemName()); |
| | | SeriesItem seriesItem = new SeriesItem(); |
| | | seriesItem.setName(item.getItemName()); |
| | | ApiDataQueryDTO queryDto = new ApiDataQueryDTO(); |
| | | queryDto.setItemNo(item.getItemNo()); |
| | | queryDto.setStart(startDate); |
| | | queryDto.setEnd(endDate); |
| | | List<ApiDataValueDTO> list = planItemApi.queryPlanItemHistoryValue(queryDto); |
| | | |
| | | List<Object[]> sData = list.stream().map(dataItem -> { |
| | | Object[] valueArray = new Object[]{DateUtils.format(dataItem.getDataTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND), |
| | | dataItem.getDataValue()}; |
| | | return valueArray; |
| | | }).collect(Collectors.toList()); |
| | | seriesItem.setData(sData); |
| | | series.add(seriesItem); |
| | | }); |
| | | CommonResult.setLegend(legend); |
| | | CommonResult.setCategories(categories); |
| | | CommonResult.setSeries(series); |
| | | } catch (Exception ex) { |
| | | ex.printStackTrace(); |
| | | } |
| | | return new CommonResult<BarLineDTO>().setData(CommonResult); |
| | | } |
| | | |
| | | @PostMapping("/export-plan/history-value") |
| | | @Operation(summary = "导出计划数据") |
| | | public void exportPlanHistoryValue(HttpServletResponse response, HttpServletRequest |
| | | request, @RequestBody ApiDataQueryDTO dto) throws IOException { |
| | | //apiSecurityUtils.validate(request); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | Date endDate = dto.getEnd() == null ? DateUtils.addDateHours(calendar.getTime(), 2) : dto.getEnd(); |
| | | Date startDate = dto.getStart() == null ? calendar.getTime() : dto.getStart(); |
| | | ApiDataQueryDTO queryDto = new ApiDataQueryDTO(); |
| | | queryDto.setItemNo(dto.getItemNo()); |
| | | queryDto.setStart(startDate); |
| | | queryDto.setEnd(endDate); |
| | | List<ApiDataValueDTO> list = planItemApi.queryPlanItemHistoryValue(queryDto); |
| | | List<PlanItemValueExportVO> exportList = list.stream().map(item -> { |
| | | PlanItemValueExportVO exportVO = new PlanItemValueExportVO(); |
| | | exportVO.setDataTime(DateUtils.format(item.getDataTime(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); |
| | | exportVO.setDataValue(new BigDecimal(item.getDataValue()).setScale(0, BigDecimal.ROUND_HALF_UP).toString()); |
| | | return exportVO; |
| | | }).collect(Collectors.toList()); |
| | | ExcelUtils.write(response, "计划数据.xls", "计划数据", PlanItemValueExportVO.class, exportList); |
| | | } |
| | | |
| | | @PermitAll |
| | | @GetMapping("/query-ind/default-value") |
| | | @Operation(summary = "查询指标默认值") |
| | | public CommonResult<List<ApiIndItemValueDTO>> queryIndItemDefaultValue(@RequestParam String itemNo) { |
| | | TenantContextHolder.setTenantId(161L); |
| | | List<IndItemValueVO> list = indItemCollector.queryValue(itemNo); |
| | | List<ApiIndItemValueDTO> dtoList = new ArrayList<>(); |
| | | list.forEach(item -> { |
| | | ApiIndItemValueDTO dto = new ApiIndItemValueDTO(); |
| | | dto.setDataTime(item.getDataTime()); |
| | | dto.setDataValue(item.getDataValue().doubleValue()); |
| | | dtoList.add(dto); |
| | | }); |
| | | return success(dtoList); |
| | | } |
| | | |
| | | @PermitAll |
| | | @GetMapping("/query-ind/history-value") |
| | | @Operation(summary = "查询指标历史值") |
| | | public CommonResult<List<ApiIndItemValueDTO>> queryIndItemHistoryValue(@RequestParam ApiIndItemQueryDTO dto) { |
| | | List<IndItemValueVO> list = indItemCollector.queryValue(dto.getItemNo(), dto.getStart(), dto.getEnd()); |
| | | return success(ConvertUtils.sourceToTarget(list, ApiIndItemValueDTO.class)); |
| | | } |
| | | } |