package com.iailab.module.shasteel.job.task; import com.iailab.module.data.api.point.DataPointApi; import com.iailab.module.data.api.point.dto.ApiPointValueWriteDTO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @description: 发电厂机组运行情况 * @author: lirm * @date: 2025/4/14 **/ @Component("runMachineStateTask") public class RunMachineStateTask implements ITask { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private DataPointApi dataPointApi; private static final HashMap> partPoints = new HashMap>() {{ put("F0000101185", Arrays.asList("F0000100098", "F0000100099", "F0000100100", "F0000100101")); put("F0000101186", Arrays.asList("F0000100109", "F0000100110", "F0000100111", "F0000100112")); put("F0000101187", Arrays.asList("M0000100009", "M0000100023", "M0000100026", "M0000100029")); put("F0000101189", Arrays.asList("M0000100010", "M0000100024", "M0000100027", "M0000100030")); put("F0000101190", Arrays.asList("C0000101199", "C0000101200", "C0000101201", "C0000101202")); put("F0000101191", Arrays.asList("M0000100854", "M0000100855", "M0000100856", "M0000100857")); put("F0000101192", Arrays.asList("C0000101242", "C0000101243", "C0000101244", "C0000101245")); put("F0000101193", Arrays.asList("C0000101223", "C0000101224", "C0000101225", "C0000101226"));// put("F0000101194", Arrays.asList("C0000101210", "C0000101211", "C0000101212", "C0000101213"));// put("F0000101195", Arrays.asList("C0000101214", "C0000101215", "C0000101216", "C0000101217"));// put("F0000101196", Arrays.asList("F0000100105", "F0000100106", "F0000100107", "F0000100108")); put("F0000101197", Arrays.asList("F0000100116", "F0000100117", "F0000100118", "F0000100119")); put("F0000101198", Arrays.asList("M0000100032", "M0000100035", "M0000100038", "M0000100041")); put("F0000101201", Arrays.asList("C0000101203", "C0000101204", "C0000101205", "C0000101206")); put("F0000101204", Arrays.asList("C0000101227", "C0000101228", "C0000101229", "C0000101230"));// put("F0000101207", Arrays.asList("F0000100102", "F0000100103")); put("F0000101208", Arrays.asList("F0000100113", "F0000100114")); put("F0000101209", Arrays.asList("C0000101114", "C0000101115")); put("F0000101210", Arrays.asList("C0000101116", "C0000101117")); put("F0000101211", Arrays.asList("M0000101043", "M0000101039")); put("F0000101212", Arrays.asList("C0000101207", "C0000101208")); put("F0000101213", Arrays.asList("C0000101116", "C0000101117")); put("F0000101214", Arrays.asList("C0000101240", "C0000101241")); put("F0000101215", Arrays.asList("C0000101231", "C0000101232"));// put("F0000101216", Arrays.asList("C0000101221", "C0000101222"));// put("F0000101217", Arrays.asList("C0000101218", "C0000101219"));// put("F0000100104", Arrays.asList("F0000100104"));// put("C0000101233", Arrays.asList("C0000101233"));// put("C0000101220", Arrays.asList("C0000101220"));// }}; private static final HashMap> sumPoints = new HashMap>() {{ put("F0000101218", Arrays.asList("F0000101185", "F0000101196", "F0000101207", "F0000100104")); put("F0000101219", Arrays.asList("F0000101186", "F0000101197", "F0000101208", "F0000100115")); put("F0000101220", Arrays.asList("F0000101187", "F0000101198", "F0000101209", "M0000100013")); put("F0000101221", Arrays.asList("F0000101188", "F0000101199", "F0000101210")); put("F0000101222", Arrays.asList("F0000101189", "F0000101200", "F0000101211", "M0000100014")); put("F0000101223", Arrays.asList("F0000101190", "F0000101201", "F0000101212", "C0000101209")); put("F0000101224", Arrays.asList("F0000101191", "F0000101202", "F0000101213", "M0000101003")); put("F0000101225", Arrays.asList("F0000101192", "F0000101203", "F0000101214", "C0000101239")); put("F0000101226", Arrays.asList("F0000101193", "F0000101204", "F0000101215", "C0000101233")); put("F0000101227", Arrays.asList("F0000101194", "F0000101205", "F0000101216")); put("F0000101228", Arrays.asList("F0000101195", "F0000101206", "F0000101217", "C0000101220")); }}; private boolean qhFlag1 = false; private boolean qhFlag2 = false; private boolean qhFlag135 = false; private boolean qhFlag180 = false; private boolean qhFlagTotal = false; @Override public void run(String params) { logger.info("RunMachineStateTask定时任务正在执行,参数为:{}", params); try { List partPointNos = partPoints.values().stream().flatMap(List::stream).collect(Collectors.toList()); Map partPointsRealValue = dataPointApi.queryPointsRealValue(partPointNos); for (Map.Entry> entry : partPoints.entrySet()) { ApiPointValueWriteDTO writeDTO = new ApiPointValueWriteDTO(); double dataValue = 0d; int count = 0; for (String pointNo : entry.getValue()) { Double value = Double.valueOf(String.format("%.2f", Double.valueOf(partPointsRealValue.get(pointNo).toString()))); if (value > 0) { dataValue += value; count++; } } if ("F0000101185".equals(entry.getKey()) || "F0000101186".equals(entry.getKey()) || "F0000101196".equals(entry.getKey()) || "F0000101197".equals(entry.getKey()) || "F0000101207".equals(entry.getKey()) || "F0000101208".equals(entry.getKey())) { writeDTO.setPointNo(entry.getKey()); BigDecimal value = count == 0 ? BigDecimal.ZERO : new BigDecimal(dataValue).divide(new BigDecimal(count), 2, BigDecimal.ROUND_HALF_UP); writeDTO.setValue(value); if ("F0000101185".equals(entry.getKey()) && value.compareTo(BigDecimal.ZERO) == 0) { qhFlag1 = true; } if ("F0000101196".equals(entry.getKey()) && value.compareTo(BigDecimal.ZERO) == 0) { qhFlag2 = true; } if ("F0000101207".equals(entry.getKey()) && value.compareTo(BigDecimal.ZERO) == 0) { qhFlag135 = true; } if ("F0000100104".equals(entry.getKey()) && value.compareTo(BigDecimal.ZERO) == 0) { qhFlag180 = true; } }else { writeDTO.setPointNo(entry.getKey()); writeDTO.setValue(dataValue); } logger.info("写入常量点="+writeDTO.getPointNo()+",值="+writeDTO.getValue()); dataPointApi.writePointRealValue(writeDTO); } Thread.sleep(5000); List sumPointNos = sumPoints.values().stream().flatMap(List::stream).collect(Collectors.toList());//合计 Map totalPointsRealValue = dataPointApi.queryPointsRealValue(sumPointNos); for (Map.Entry> entry : sumPoints.entrySet()) { ApiPointValueWriteDTO writeDTO = new ApiPointValueWriteDTO(); double dataValue = 0d; int count = 0; for (String pointNo : entry.getValue()) { Double value = Double.valueOf(String.format("%.2f", Double.valueOf(totalPointsRealValue.get(pointNo).toString()))); if (value > 0) { dataValue += value; count++; } } if ("F0000101218".equals(entry.getKey()) || "F0000101219".equals(entry.getKey())) { writeDTO.setPointNo(entry.getKey()); BigDecimal value = count == 0 ? BigDecimal.ZERO : new BigDecimal(dataValue).divide(new BigDecimal(count), 2, BigDecimal.ROUND_HALF_UP); writeDTO.setValue(value); if ("F0000101218".equals(entry.getKey()) && value.compareTo(BigDecimal.ZERO) == 0) { qhFlagTotal = true; } }else { writeDTO.setPointNo(entry.getKey()); writeDTO.setValue(dataValue); } logger.info("写入常量点="+writeDTO.getPointNo()+",值="+writeDTO.getValue()); dataPointApi.writePointRealValue(writeDTO); } ApiPointValueWriteDTO writeDTO = new ApiPointValueWriteDTO(); if(qhFlag1){ logger.info("一期机组气耗率为0"); writeDTO.setValue(0); writeDTO.setPointNo("F0000101193"); dataPointApi.writePointRealValue(writeDTO); writeDTO.setPointNo("F0000101194"); dataPointApi.writePointRealValue(writeDTO); writeDTO.setPointNo("F0000101195"); dataPointApi.writePointRealValue(writeDTO); } if(qhFlag2){ logger.info("二期机组气耗率为0"); writeDTO.setValue(0); writeDTO.setPointNo("F0000101204"); dataPointApi.writePointRealValue(writeDTO); writeDTO.setPointNo("F0000101205"); dataPointApi.writePointRealValue(writeDTO); writeDTO.setPointNo("F0000101206"); dataPointApi.writePointRealValue(writeDTO); } if(qhFlag135){ logger.info("135机组气耗率为0"); writeDTO.setValue(0); writeDTO.setPointNo("F0000101215"); dataPointApi.writePointRealValue(writeDTO); writeDTO.setPointNo("F0000101216"); dataPointApi.writePointRealValue(writeDTO); writeDTO.setPointNo("F0000101217"); dataPointApi.writePointRealValue(writeDTO); } if(qhFlag180){ logger.info("180机组气耗率为0"); writeDTO.setValue(0); writeDTO.setPointNo("C0000101233"); dataPointApi.writePointRealValue(writeDTO); writeDTO.setPointNo("C0000101220"); dataPointApi.writePointRealValue(writeDTO); } if(qhFlagTotal){ logger.info("合计气耗率为0"); writeDTO.setValue(0); writeDTO.setPointNo("F0000101226"); dataPointApi.writePointRealValue(writeDTO); writeDTO.setPointNo("F0000101227"); dataPointApi.writePointRealValue(writeDTO); writeDTO.setPointNo("F0000101228"); dataPointApi.writePointRealValue(writeDTO); } } catch (Exception ex) { logger.error("RunMachineStateTask运行异常", ex); } logger.info("RunMachineStateTask运行完成"); } }