From cb3da951d7bbd9d702a1c4cd77b53f9cd5c31263 Mon Sep 17 00:00:00 2001 From: liriming <1343021927@qq.com> Date: 星期四, 26 六月 2025 15:59:34 +0800 Subject: [PATCH] 无功上网与功率因数定时任务 --- ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java | 102 +++++++++++++++------------------------------------ 1 files changed, 30 insertions(+), 72 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 324f216..847bd7d 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 @@ -9,6 +9,8 @@ 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 com.iailab.module.data.api.point.dto.ApiPointValueDTO; +import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -55,6 +57,15 @@ 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); + // 当月一号到当前的天数 + int days = calendar.get(Calendar.DAY_OF_MONTH); + Calendar clone = (Calendar) calendar.clone(); + clone.set(Calendar.DAY_OF_MONTH,1); + // 当月一号 + String clock_month_1 = DateUtils.format(clone.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY); + calendar.add(Calendar.DAY_OF_YEAR, -88); + // 前90天 + String clock_90 = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY); // 清理旧数据 cokingProcessMainService.deleteByClock(clock); @@ -73,8 +84,6 @@ 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"); @@ -91,6 +100,7 @@ processMainEntity.setInfoType(conf.getInfoType()); processMainEntity.setIndCode(conf.getIndCode()); processMainEntity.setIndName(conf.getIndName()); + processMainEntity.setIndUnit(conf.getIndUnit()); processMainEntity.setSort(conf.getSort()); // 日实际值 Double value = getConfValue(conf.getDataType(),conf.getPointNo()); @@ -101,86 +111,30 @@ processMainEntity.setStandValue(standValue == null ? BigDecimal.valueOf(-2) : BigDecimal.valueOf(standValue)); Double theoryValue = getConfValue("DATAPOINT",conf.getExt2()); 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, -28); - String clock_30 = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY); - List<CokingProcessMainEntity> historyList_30 = cokingProcessMainService.historyList(clock_30, clock, "day",processMainEntity.getIndCode()); + // 计算 当月累计 当前自然月 + List<CokingProcessMainEntity> historyList_30 = cokingProcessMainService.historyList(clock_month_1, clock, "day",processMainEntity.getIndCode()); historyList_30.add(processMainEntity); - double monthValue = historyList_30.stream().mapToDouble(e -> e.getRealValue().doubleValue()).average().orElse(0.0) * 30; + // 过滤-2,平均值*一号到当天总天数 + double monthValue = historyList_30.stream().filter(e -> e.getRealValue().compareTo(BigDecimal.valueOf(-2)) != 0).mapToDouble(e -> e.getRealValue().doubleValue()).average().orElse(0.0) * days; 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",processMainEntity.getIndCode()); historyList_90.add(processMainEntity); + // 过滤-2 + historyList_90 = historyList_90.stream().filter(e -> e.getRealValue().compareTo(BigDecimal.valueOf(-2)) != 0).collect(Collectors.toList()); double avgValue = historyList_90.stream().mapToDouble(e -> e.getRealValue().doubleValue()).average().orElse(0.0); processMainEntity.setAvgValue(BigDecimal.valueOf(avgValue)); // 历史最优 double baseValue = 0.0; - if (!directionMap.containsKey(processMainEntity.getIndCode()) || directionMap.get(processMainEntity.getIndCode()) > 0.0) { + if (StringUtils.isNotBlank(conf.getExt3()) && Double.valueOf(conf.getExt3()) > 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); } @@ -194,11 +148,15 @@ Double value = null; switch (ProcessConfDataTypeEnum.getEumByCode(dataType)) { case DATAPOINT: - List<String> points = new ArrayList<>(); - points.add(pointNo); - Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points); - if (pointsRealValue.containsKey(pointNo)) { - value = Double.valueOf(pointsRealValue.get(pointNo).toString()); + ApiPointValueQueryDTO queryDTO = new ApiPointValueQueryDTO(); + queryDTO.setPointNo(pointNo); + Calendar calendar = Calendar.getInstance(); + queryDTO.setEnd(calendar.getTime()); + calendar.add(Calendar.DAY_OF_YEAR,-1); + queryDTO.setStart(calendar.getTime()); + List<ApiPointValueDTO> values = dataPointApi.queryPointHistoryValue(queryDTO); + if (!CollectionUtils.isEmpty(values)) { + value = values.get(values.size() - 1).getV(); } break; case IND: -- Gitblit v1.9.3