From 831901d5e82cd503ca16c22a0613785828bbd9f6 Mon Sep 17 00:00:00 2001 From: dengzedong <dengzedong@email> Date: 星期二, 13 五月 2025 18:07:50 +0800 Subject: [PATCH] 默认值-2 --- ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java | 86 +++++++++++++++++++++++++++++++++++++----- 1 files changed, 75 insertions(+), 11 deletions(-) diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java index 59da296..324f216 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java @@ -4,6 +4,8 @@ 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.arc.ArcDataApi; +import com.iailab.module.data.api.arc.dto.ApiArcDataDTO; 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; @@ -17,6 +19,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -33,6 +36,8 @@ private CokingProcessConfService cokingProcessConfService; @Resource private DataPointApi dataPointApi; + @Resource + private ArcDataApi arcDataApi; @Resource private IndItemApi indItemApi; @Resource @@ -68,6 +73,8 @@ continue; } List<CokingProcessMainEntity> processMainEntities = new ArrayList<>(list.size()); + // 历史最优计算方向,正数取最大值,负数取最小值 + Map<String,Double> directionMap = new HashMap<>(list.size()); for (CokingProcessConfEntity conf : list) { if (StringUtils.isBlank(conf.getDataType())) { logger.info("DataType is Empty"); @@ -87,41 +94,94 @@ processMainEntity.setSort(conf.getSort()); // 日实际值 Double value = getConfValue(conf.getDataType(),conf.getPointNo()); - processMainEntity.setRealValue(value == null ? BigDecimal.ZERO : BigDecimal.valueOf(value)); + processMainEntity.setRealValue(value == null ? BigDecimal.valueOf(-2) : BigDecimal.valueOf(value)); // 基准值、理论值 来源模型下发结果 Double standValue = getConfValue("DATAPOINT",conf.getExt1()); - processMainEntity.setStandValue(standValue == null ? BigDecimal.ZERO : BigDecimal.valueOf(standValue)); + processMainEntity.setStandValue(standValue == null ? BigDecimal.valueOf(-2) : BigDecimal.valueOf(standValue)); Double theoryValue = getConfValue("DATAPOINT",conf.getExt2()); - processMainEntity.setTheoryValue(theoryValue == null ? BigDecimal.ZERO : BigDecimal.valueOf(theoryValue)); + processMainEntity.setTheoryValue(theoryValue == null ? BigDecimal.valueOf(-2) : BigDecimal.valueOf(theoryValue)); + // 历史最优计算方向 + if (conf.getExt3() != null) { + directionMap.put(conf.getIndCode(),Double.valueOf(conf.getExt3())); + } + processMainEntities.add(processMainEntity); + } + // 计算吨焦产煤气,吨焦产蒸汽,吨焦耗煤气 + Map<String, CokingProcessMainEntity> resultCodeMap = processMainEntities.stream().collect(Collectors.toMap(CokingProcessMainEntity::getIndCode, Function.identity(), (e1, e2) -> e1)); + // 有焦炭产量 + if (resultCodeMap.containsKey("main_jcmq")) { + // 焦炭产量 + BigDecimal jtcl = resultCodeMap.get("main_jcmq").getRealValue(); + if (jtcl != null && !jtcl.equals(BigDecimal.valueOf(-2))) { + processMainEntities.forEach(e -> { + // 吨焦产煤气 + if (e.getIndCode().equals("main_jcmq") && resultCodeMap.containsKey("main_jlmqfs")) { + // 焦炉煤气发生 + BigDecimal mainJlmqfs = resultCodeMap.get("main_jlmqfs").getRealValue(); + e.setRealValue(mainJlmqfs.divide(jtcl,2,BigDecimal.ROUND_HALF_UP)); + } + // 吨焦产蒸汽 + if (e.getIndCode().equals("main_djczq") && resultCodeMap.containsKey("main_gxjzqcs")) { + // 干熄焦蒸汽产生 + BigDecimal mainGxjzqcs = resultCodeMap.get("main_gxjzqcs").getRealValue(); + e.setRealValue(mainGxjzqcs.divide(jtcl,2,BigDecimal.ROUND_HALF_UP)); + } + // 吨焦耗煤气 + if (e.getIndCode().equals("main_djhmq") && resultCodeMap.containsKey("main_glmqxh") && resultCodeMap.containsKey("main_jlmqxh")) { + // 高炉煤气消耗 + BigDecimal mainGlmqxh = resultCodeMap.get("main_glmqxh").getRealValue(); + // 焦炉煤气消耗 + BigDecimal mainJlmqxh = resultCodeMap.get("main_jlmqxh").getRealValue(); + e.setRealValue(mainGlmqxh.add(mainJlmqxh).divide(jtcl,2,BigDecimal.ROUND_HALF_UP)); + } + // 吨焦耗蒸汽 + if (e.getIndCode().equals("main_djhzq") && resultCodeMap.containsKey("main_zqxh")) { + // 干熄焦蒸汽产生 + BigDecimal mainZqxh = resultCodeMap.get("main_zqxh").getRealValue(); + e.setRealValue(mainZqxh.divide(jtcl,2,BigDecimal.ROUND_HALF_UP)); + } + // 吨焦耗电 + if (e.getIndCode().equals("main_djhd") && resultCodeMap.containsKey("main_dlxh")) { + // 干熄焦蒸汽产生 + BigDecimal mainDlxh = resultCodeMap.get("main_dlxh").getRealValue(); + e.setRealValue(mainDlxh.divide(jtcl,2,BigDecimal.ROUND_HALF_UP)); + } + }); + } + } + + // 计算 统计值 + processMainEntities.forEach(processMainEntity -> { // 计算 月累计 - calendar.add(Calendar.DAY_OF_YEAR, -29); + calendar.add(Calendar.DAY_OF_YEAR, -28); String clock_30 = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY); - List<CokingProcessMainEntity> historyList_30 = cokingProcessMainService.historyList(clock_30, clock, "day",conf.getIndCode()); + List<CokingProcessMainEntity> historyList_30 = cokingProcessMainService.historyList(clock_30, clock, "day",processMainEntity.getIndCode()); historyList_30.add(processMainEntity); - double monthValue = historyList_30.stream().mapToDouble(e -> e.getRealValue().doubleValue()).sum(); + double monthValue = historyList_30.stream().mapToDouble(e -> e.getRealValue().doubleValue()).average().orElse(0.0) * 30; processMainEntity.setMonthValue(BigDecimal.valueOf(monthValue)); // 计算 历史平均 calendar.add(Calendar.DAY_OF_YEAR, -60); String clock_90 = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY); - List<CokingProcessMainEntity> historyList_90 = cokingProcessMainService.historyList(clock_90, clock, "day",conf.getIndCode()); + List<CokingProcessMainEntity> historyList_90 = cokingProcessMainService.historyList(clock_90, clock, "day",processMainEntity.getIndCode()); historyList_90.add(processMainEntity); double avgValue = historyList_90.stream().mapToDouble(e -> e.getRealValue().doubleValue()).average().orElse(0.0); processMainEntity.setAvgValue(BigDecimal.valueOf(avgValue)); // 历史最优 double baseValue = 0.0; - if (Double.valueOf(conf.getExt3()) > 0.0) { + if (!directionMap.containsKey(processMainEntity.getIndCode()) || directionMap.get(processMainEntity.getIndCode()) > 0.0) { baseValue = historyList_90.stream().mapToDouble(e -> e.getRealValue().doubleValue()).max().orElse(0.0); }else { baseValue = historyList_90.stream().mapToDouble(e -> e.getRealValue().doubleValue()).min().orElse(0.0); } processMainEntity.setBaseValue(BigDecimal.valueOf(baseValue)); + }); - processMainEntities.add(processMainEntity); - } + + cokingProcessMainService.save(processMainEntities); } } catch (Exception ex) { @@ -147,7 +207,11 @@ value = Double.valueOf(indValues.get(0).getDataValue().toString()); } break; - case MODEL: + case ARC: + ApiArcDataDTO apiArcDataDTO = arcDataApi.queryArcLastValue(pointNo); + if (apiArcDataDTO != null) { + value = apiArcDataDTO.getArcValue().doubleValue(); + } break; default: break; -- Gitblit v1.9.3