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<String, List<String>> partPoints = new HashMap<String, List<String>>() {{
|
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<String, List<String>> sumPoints = new HashMap<String, List<String>>() {{
|
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<String> partPointNos = partPoints.values().stream().flatMap(List::stream).collect(Collectors.toList());
|
Map<String, Object> partPointsRealValue = dataPointApi.queryPointsRealValue(partPointNos);
|
for (Map.Entry<String, List<String>> 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<String> sumPointNos = sumPoints.values().stream().flatMap(List::stream).collect(Collectors.toList());//合计
|
Map<String, Object> totalPointsRealValue = dataPointApi.queryPointsRealValue(sumPointNos);
|
for (Map.Entry<String, List<String>> 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运行完成");
|
}
|
}
|