package com.iailab.module.ansteel.api.controller.admin; 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.*; 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.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 javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; import static com.iailab.framework.common.pojo.CommonResult.success; /** * 焦化接口 * * @author PanZhibao * @Description * @createTime 2025年04月11日 */ @Slf4j @RestController @RequestMapping("/ansteel/api/coking") public class CokingController { @Autowired private CokingAnalyIndService cokingAnalyIndService; @Autowired private CokingAnalyTrendService cokingAnalyTrendService; @Autowired private CokingProcessChildService cokingProcessChildService; @Autowired private CokingProcessMainService cokingProcessMainService; @Autowired private CokingProdDayService cokingProdDayService; @Autowired private CokingTraceEnergyService cokingTraceEnergyService; @Autowired private CokingTraceSuggestService cokingTraceSuggestService; @Autowired private CokingTraceIndService cokingTraceIndService; @Autowired private CokingTraceDeviationService cokingTraceDeviationService; @Autowired private CokingTraceChartService cokingTraceChartService; @Resource private DataPointApi dataPointApi; @Resource private IndItemApi indItemApi; @GetMapping("/analy-ind/list") @Operation(summary = "焦化工序-指标分析") public CommonResult> getCokingAnalyIndList(@RequestParam Map params) { List list = cokingAnalyIndService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingAnalyIndDTO.class)); } @GetMapping("/analy-trend/list") @Operation(summary = "焦化工序-趋势分析") public CommonResult> getCokingAnalyTrendList(@RequestParam Map params) { List list = cokingAnalyTrendService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingAnalyTrendDTO.class)); } @GetMapping("/process-child/list") @Operation(summary = "焦化工序-子工序指标") public CommonResult> getCokingProcessChildList(@RequestParam Map params) { List list = cokingProcessChildService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingProcessChildDTO.class)); } @GetMapping("/process-main/list") @Operation(summary = "焦化工序-主工序指标") public CommonResult> getCokingProcessMainList(@RequestParam Map params) { List list = cokingProcessMainService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingProcessMainDTO.class)); } @GetMapping("/prod-day/list") @Operation(summary = "焦化工序-日生产信息") public CommonResult> getCokingProdDayList(@RequestParam Map params) { List list = cokingProdDayService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingProdDayDTO.class)); } @GetMapping("/trace-energy/list") @Operation(summary = "焦化工序-能耗整体情况") public CommonResult>> getEnergyConsumptionList(@RequestParam Map params) { Map> result = cokingTraceEnergyService.list(params); return success(result); } @GetMapping("/trace-suggest/list") @Operation(summary = "焦化工序-异常溯源及优化建议") public CommonResult> getTraceSuggestList(@RequestParam Map params) { List list = cokingTraceSuggestService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingTraceSuggestDTO.class)); } @GetMapping("/trace-ind/list") @Operation(summary = "焦化工序-异常溯源指标") public CommonResult> getTraceIndList(@RequestParam Map params) { List list = cokingTraceIndService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingTraceIndDTO.class)); } @GetMapping("/trace-deviation/list") @Operation(summary = "焦化工序-异常溯源影响因素偏差值") public CommonResult> getTraceDeviationList(@RequestParam Map params) { List list = cokingTraceDeviationService.list(params); return success(ConvertUtils.sourceToTarget(list, CokingTraceDeviationDTO.class)); } @GetMapping("/trace-chart/list") @Operation(summary = "焦化工序-异常溯源折线图") public CommonResult> getCokingTraceChartList(@RequestParam Map params) { List list = cokingTraceChartService.list(params); List result = new ArrayList<>(); if (CollectionUtils.isEmpty(list)) { return success(result); } for (CokingTraceChartEntity entity : list) { CokingTraceChartDTO dto = ConvertUtils.sourceToTarget(entity, CokingTraceChartDTO.class); List dataList = new ArrayList<>(); switch (ProcessConfDataTypeEnum.getEumByCode(entity.getDataType())) { case DATAPOINT: ApiPointValueQueryDTO queryParams1 = new ApiPointValueQueryDTO(); queryParams1.setPointNo(entity.getDataNo()); queryParams1.setStart(entity.getStartTime()); queryParams1.setEnd(entity.getEndTime()); List 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: ApiIndItemQueryDTO queryParams2 = new ApiIndItemQueryDTO(); queryParams2.setItemNo(entity.getDataNo()); queryParams2.setStart(entity.getStartTime()); queryParams2.setEnd(entity.getEndTime()); List 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); } return success(result); } }