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.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 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 CokingOverviewService cokingOverviewService;
|
|
@Autowired
|
private CokingTraceSuggestService cokingTraceSuggestService;
|
|
@Autowired
|
private CokingTraceIndService cokingTraceIndService;
|
|
@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 = "焦化总图-指标分析")
|
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 = "焦化工序-趋势分析(废弃)")
|
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 = "焦化总图-子工序指标")
|
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 = "焦化总图-主工序指标")
|
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 = "焦化总图-日生产信息")
|
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);
|
}
|
|
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")
|
@Operation(summary = "焦化工序-异常溯源及优化建议")
|
public CommonResult<List<CokingTraceSuggestDTO>> getTraceSuggestList(@RequestParam Map<String, Object> params) {
|
List<CokingTraceSuggestEntity> list = cokingTraceSuggestService.list(params);
|
return success(ConvertUtils.sourceToTarget(list, CokingTraceSuggestDTO.class));
|
}
|
|
@GetMapping("/trace-ind/list")
|
@Operation(summary = "焦化工序-异常溯源指标")
|
public CommonResult<List<CokingTraceIndDTO>> getTraceIndList(@RequestParam Map<String, Object> params) {
|
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);
|
}
|
}
|