package com.iailab.module.ansteel.job.task;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import com.iailab.framework.common.util.date.DateUtils;
|
import com.iailab.module.ansteel.coking.entity.CokingOverviewEntity;
|
import com.iailab.module.ansteel.coking.entity.CokingProcessConfEntity;
|
import com.iailab.module.ansteel.coking.entity.CokingTraceChartEntity;
|
import com.iailab.module.ansteel.coking.entity.CokingTraceReportEntity;
|
import com.iailab.module.ansteel.coking.service.CokingOverviewService;
|
import com.iailab.module.ansteel.coking.service.CokingProcessConfService;
|
import com.iailab.module.ansteel.coking.service.CokingTraceChartService;
|
import com.iailab.module.ansteel.coking.service.CokingTraceReportService;
|
import com.iailab.module.ansteel.common.enums.ProcessConfDataTypeEnum;
|
import com.iailab.module.ansteel.common.enums.ProcessTypeEnum;
|
import com.iailab.module.data.api.ind.IndItemApi;
|
import com.iailab.module.data.api.ind.dto.ApiIndItemValueDTO;
|
import com.iailab.module.data.api.point.DataPointApi;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.CollectionUtils;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
import java.util.stream.Stream;
|
|
/**
|
* 备煤工序-概况
|
*
|
* @author PanZhibao
|
* @Description
|
* @createTime 2025年04月21日
|
*/
|
@Slf4j
|
@Component("runCokingOverviewTask")
|
public class RunCokingOverviewTask implements ITask{
|
private Logger logger = LoggerFactory.getLogger(getClass());
|
|
@Resource
|
private CokingProcessConfService cokingProcessConfService;
|
@Resource
|
private CokingOverviewService cokingOverviewService;
|
@Resource
|
private DataPointApi dataPointApi;
|
@Resource
|
private IndItemApi indItemApi;
|
@Resource
|
private CokingTraceReportService cokingTraceReportService;
|
@Resource
|
private CokingTraceChartService cokingTraceChartService;
|
|
@Override
|
public void run(String processTypes) {
|
logger.info("runCokingOverviewTask,参数为:{}", processTypes);
|
try {
|
|
String[] split = processTypes.split(",");
|
|
for (String processType : split) {
|
CokingProcessConfEntity queryParams = new CokingProcessConfEntity();
|
queryParams.setIndType(processType);
|
List<CokingProcessConfEntity> list = cokingProcessConfService.list(queryParams);
|
if (CollectionUtils.isEmpty(list)) {
|
logger.info("ConfLis is Empty");
|
return;
|
}
|
|
Calendar calendar = Calendar.getInstance();
|
calendar.set(Calendar.MILLISECOND, 0);
|
calendar.set(Calendar.SECOND, 0);
|
calendar.set(Calendar.MINUTE, 0);
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
calendar.add(Calendar.DAY_OF_YEAR, -1);
|
String clock = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY);
|
// 溯源报告
|
CokingTraceReportEntity reportEntity = new CokingTraceReportEntity();
|
String relId = UUID.randomUUID().toString();
|
reportEntity.setId(relId);
|
reportEntity.setProcess(ProcessTypeEnum.getEumByCode(processType).getProcess());
|
reportEntity.setReportName(ProcessTypeEnum.getEumByCode(processType).getReportName());
|
reportEntity.setAnalyDate(clock);
|
reportEntity.setClock(clock);
|
cokingTraceReportService.save(reportEntity);
|
|
// 整体情况
|
// 筛选info_type = 2,按照子工序类型分组
|
Map<String, List<CokingProcessConfEntity>> processTypeMap = list.stream().filter(e -> e.getInfoType().equals("2")).collect(Collectors.groupingBy(CokingProcessConfEntity::getExt2));
|
// 结果 <子工序类型,<数据key,数据value>>
|
List<CokingOverviewEntity> result = new ArrayList<>(processTypeMap.size());
|
|
for (Map.Entry<String, List<CokingProcessConfEntity>> entry : processTypeMap.entrySet()) {
|
Map<String,Double> values = new HashMap<>(entry.getValue().size());
|
for (CokingProcessConfEntity conf : entry.getValue()) {
|
if (StringUtils.isBlank(conf.getDataType())) {
|
logger.info("DataType is Empty");
|
continue;
|
}
|
if (StringUtils.isBlank(conf.getPointNo())) {
|
logger.info("PointNo is Empty");
|
continue;
|
}
|
Double value = 0.0;
|
switch (ProcessConfDataTypeEnum.getEumByCode(conf.getDataType())) {
|
case DATAPOINT:
|
List<String> points = new ArrayList<>();
|
points.add(conf.getPointNo());
|
Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points);
|
value = Double.valueOf(pointsRealValue.get(conf.getPointNo()).toString());
|
break;
|
case IND:
|
List<ApiIndItemValueDTO> indValues = indItemApi.queryIndItemDefaultValue(conf.getPointNo());
|
if (!CollectionUtils.isEmpty(indValues)) {
|
value = Double.valueOf(indValues.get(indValues.size() - 1).getDataValue().toString());
|
}
|
break;
|
case MODEL:
|
break;
|
default:
|
break;
|
|
}
|
values.put(conf.getExt1(),value);
|
}
|
CokingOverviewEntity overviewEntity = new CokingOverviewEntity();
|
BeanUtil.fillBeanWithMap(values,overviewEntity,true);
|
overviewEntity.setId(UUID.randomUUID().toString());
|
overviewEntity.setRelId(relId);
|
overviewEntity.setProcessType(processType);
|
overviewEntity.setSubProcessType(entry.getKey());
|
overviewEntity.setClock(clock);
|
result.add(overviewEntity);
|
}
|
cokingOverviewService.insert(result);
|
|
// 指标运行趋势
|
List<CokingProcessConfEntity> indRunTrend = list.stream().filter(e -> e.getInfoType().equals("1")).collect(Collectors.toList());
|
List<CokingTraceChartEntity> cokingTraceChartEntityList = new ArrayList<>(indRunTrend.size());
|
indRunTrend.forEach(e -> {
|
CokingTraceChartEntity cokingTraceChartEntity = new CokingTraceChartEntity();
|
cokingTraceChartEntity.setRelId(relId);
|
cokingTraceChartEntity.setName(e.getIndName());
|
cokingTraceChartEntity.setClock(clock);
|
cokingTraceChartEntity.setDataNo(e.getPointNo());
|
cokingTraceChartEntity.setDataType(e.getDataType());
|
|
Calendar clone = (Calendar) calendar.clone();
|
cokingTraceChartEntity.setEndTime(clone.getTime());
|
if (e.getExt2().equals("month")) {
|
clone.add(Calendar.MONTH,-1 * Integer.parseInt(e.getExt1()));
|
} else if (e.getExt2().equals("day")) {
|
clone.add(Calendar.DAY_OF_YEAR,-1 * Integer.parseInt(e.getExt1()));
|
}
|
cokingTraceChartEntity.setStartTime(clone.getTime());
|
cokingTraceChartEntity.setCreateDate(new Date());
|
cokingTraceChartEntityList.add(cokingTraceChartEntity);
|
});
|
cokingTraceChartService.insert(cokingTraceChartEntityList);
|
|
}
|
} catch (Exception ex) {
|
logger.error("runCokingOverviewTask运行异常");
|
ex.printStackTrace();
|
}
|
logger.info("runCokingOverviewTask运行完成");
|
|
}
|
}
|