鞍钢鲅鱼圈能源管控系统后端代码
潘志宝
昨天 a728cf138838c869c34cc330dec5cccbf95ed495
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);
    }
}