From a728cf138838c869c34cc330dec5cccbf95ed495 Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期四, 24 四月 2025 09:14:59 +0800 Subject: [PATCH] 焦化溯源-历史数折线图 --- ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/CokingController.java | 143 +++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 130 insertions(+), 13 deletions(-) diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/CokingController.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/CokingController.java index e945f45..48672bc 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/CokingController.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/CokingController.java @@ -1,23 +1,36 @@ package com.iailab.module.ansteel.api.controller.admin; +import com.alibaba.fastjson.JSONArray; 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.module.ansteel.api.dto.*; -import com.iailab.module.ansteel.coking.dto.CokingTraceEnergyDTO; +import com.iailab.module.ansteel.coking.dto.CokingOverviewDTO; import com.iailab.module.ansteel.coking.dto.CokingTraceIndDTO; import com.iailab.module.ansteel.coking.dto.CokingTraceSuggestDTO; +import com.iailab.module.ansteel.coking.dto.*; import com.iailab.module.ansteel.coking.entity.*; import com.iailab.module.ansteel.coking.service.*; +import com.iailab.module.ansteel.common.enums.ProcessConfDataTypeEnum; +import com.iailab.module.data.api.ind.IndItemApi; +import com.iailab.module.data.api.ind.dto.ApiIndItemQueryDTO; +import com.iailab.module.data.api.ind.dto.ApiIndItemValueDTO; +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 io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.Map; +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; import static com.iailab.framework.common.pojo.CommonResult.success; @@ -49,7 +62,7 @@ private CokingProdDayService cokingProdDayService; @Autowired - private CokingTraceEnergyService cokingTraceEnergyService; + private CokingOverviewService cokingOverviewService; @Autowired private CokingTraceSuggestService cokingTraceSuggestService; @@ -60,47 +73,93 @@ @Autowired private CokingTraceDeviationService cokingTraceDeviationService; + @Autowired + private CokingTraceChartService cokingTraceChartService; + + @Autowired + private CokingTraceDataService cokingTraceDataService; + + @Resource + private DataPointApi dataPointApi; + + @Resource + private IndItemApi indItemApi; + @GetMapping("/analy-ind/list") - @Operation(summary = "焦化工序-指标分析") + @Operation(summary = "焦化总图-指标分析") public CommonResult<List<CokingAnalyIndDTO>> getCokingAnalyIndList(@RequestParam Map<String, Object> params) { List<CokingAnalyIndEntity> list = cokingAnalyIndService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingAnalyIndDTO.class)); } @GetMapping("/analy-trend/list") - @Operation(summary = "焦化工序-趋势分析") + @Operation(summary = "焦化工序-趋势分析(废弃)") public CommonResult<List<CokingAnalyTrendDTO>> getCokingAnalyTrendList(@RequestParam Map<String, Object> params) { List<CokingAnalyTrendEntity> list = cokingAnalyTrendService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingAnalyTrendDTO.class)); } @GetMapping("/process-child/list") - @Operation(summary = "焦化工序-子工序指标") + @Operation(summary = "焦化总图-子工序指标") public CommonResult<List<CokingProcessChildDTO>> getCokingProcessChildList(@RequestParam Map<String, Object> params) { List<CokingProcessChildEntity> list = cokingProcessChildService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingProcessChildDTO.class)); } @GetMapping("/process-main/list") - @Operation(summary = "焦化工序-主工序指标") + @Operation(summary = "焦化总图-主工序指标") public CommonResult<List<CokingProcessMainDTO>> getCokingProcessMainList(@RequestParam Map<String, Object> params) { List<CokingProcessMainEntity> list = cokingProcessMainService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingProcessMainDTO.class)); } @GetMapping("/prod-day/list") - @Operation(summary = "焦化工序-日生产信息") + @Operation(summary = "焦化总图-日生产信息") public CommonResult<List<CokingProdDayDTO>> getCokingProdDayList(@RequestParam Map<String, Object> params) { List<CokingProdDayEntity> list = cokingProdDayService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingProdDayDTO.class)); } + @GetMapping("/ex-data/list") + @Operation(summary = "焦化总图-异常数据") + public CommonResult<List<CokingTraceDataDTO>> getExDataList(@RequestParam Map<String, Object> params) { + String clock = (String) params.get("clock"); + if (StringUtils.isBlank(clock)) { + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DAY_OF_YEAR, -1); + clock = DateUtils.format(calendar.getTime(), "yyyy-MM-dd"); + params.put("clock", clock); + } - @GetMapping("/trace-energy/list") - @Operation(summary = "焦化工序-能耗整体情况") - public CommonResult<Map<String,List<CokingTraceEnergyDTO>>> getEnergyConsumptionList(@RequestParam Map<String, Object> params) { - Map<String,List<CokingTraceEnergyDTO>> result = cokingTraceEnergyService.list(params); + List<CokingTraceDataEntity> list = cokingTraceDataService.list(params); + return success(ConvertUtils.sourceToTarget(list, CokingTraceDataDTO.class)); + } + + + @GetMapping("/overview/list") + @Operation(summary = "各工序-概况数据") + public CommonResult<Map<String,List<CokingOverviewDTO>>> getOverviewList(@RequestParam Map<String, Object> params) { + Map<String,List<CokingOverviewDTO>> result = cokingOverviewService.list(params); return success(result); + } + + @GetMapping("/overview/abnormal-data") + @Operation(summary = "各工序-异常数据") + public CommonResult<List<CokingTraceDataDTO>> getAbnormalData(@RequestParam Map<String, Object> params) { + String processType = (String) params.get("processType"); + if (StringUtils.isBlank(processType)) { + return success(new ArrayList<>()); + } + + String clock = (String) params.get("clock"); + if (StringUtils.isBlank(clock)) { + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DAY_OF_YEAR, -1); + clock = DateUtils.format(calendar.getTime(), "yyyy-MM-dd"); + params.put("clock", clock); + } + List<CokingTraceDataEntity> list = cokingTraceDataService.list(params); + return success(ConvertUtils.sourceToTarget(list, CokingTraceDataDTO.class)); } @GetMapping("/trace-suggest/list") @@ -116,4 +175,62 @@ List<CokingTraceIndEntity> list = cokingTraceIndService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingTraceIndDTO.class)); } + + @GetMapping("/trace-deviation/list") + @Operation(summary = "焦化工序-异常溯源影响因素偏差值") + public CommonResult<List<CokingTraceDeviationDTO>> getTraceDeviationList(@RequestParam Map<String, Object> params) { + List<CokingTraceDeviationEntity> list = cokingTraceDeviationService.list(params); + return success(ConvertUtils.sourceToTarget(list, CokingTraceDeviationDTO.class)); + } + + @GetMapping("/trace-chart/list") + @Operation(summary = "焦化工序-异常溯源折线图") + public CommonResult<List<CokingTraceChartDTO>> getCokingTraceChartList(@RequestParam Map<String, Object> params) { + List<CokingTraceChartEntity> list = cokingTraceChartService.list(params); + List<CokingTraceChartDTO> result = new ArrayList<>(); + if (CollectionUtils.isEmpty(list)) { + log.info("TraceChart is empty"); + return success(result); + } + log.info("TraceChart List:" + JSONArray.toJSONString(list)); + for (CokingTraceChartEntity entity : list) { + CokingTraceChartDTO dto = ConvertUtils.sourceToTarget(entity, CokingTraceChartDTO.class); + List<Object[]> dataList = new ArrayList<>(); + switch (ProcessConfDataTypeEnum.getEumByCode(entity.getDataType())) { + case DATAPOINT: + log.info("DATAPOINT"); + ApiPointValueQueryDTO queryParams1 = new ApiPointValueQueryDTO(); + queryParams1.setPointNo(entity.getDataNo()); + queryParams1.setStart(entity.getStartTime()); + queryParams1.setEnd(entity.getEndTime()); + List<ApiPointValueDTO> pointHisValue = dataPointApi.queryPointHistoryValue(queryParams1); + pointHisValue.forEach(item -> { + Object[] values = new Object[2]; + values[0] = DateUtils.format(item.getT(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); + values[1] = new BigDecimal(item.getV()).setScale(3, BigDecimal.ROUND_HALF_UP); + dataList.add(values); + }); + break; + case IND: + log.info("IND"); + ApiIndItemQueryDTO queryParams2 = new ApiIndItemQueryDTO(); + queryParams2.setItemNo(entity.getDataNo()); + queryParams2.setStart(entity.getStartTime()); + queryParams2.setEnd(entity.getEndTime()); + List<ApiIndItemValueDTO> indValues = indItemApi.queryIndItemHistoryValue(queryParams2); + indValues.forEach(item -> { + Object[] values = new Object[2]; + values[0] = item.getDataTime(); + values[1] = item.getDataValue(); + dataList.add(values); + }); + break; + default: + break; + } + dto.setDataList(dataList); + result.add(dto); + } + return success(result); + } } \ No newline at end of file -- Gitblit v1.9.3