diff --git a/src/main/java/com/xydl/cac/transform/I2DataTransformer.java b/src/main/java/com/xydl/cac/transform/I2DataTransformer.java index 4798760..8102d85 100644 --- a/src/main/java/com/xydl/cac/transform/I2DataTransformer.java +++ b/src/main/java/com/xydl/cac/transform/I2DataTransformer.java @@ -1,20 +1,18 @@ package com.xydl.cac.transform; import com.alibaba.excel.util.StringUtils; -import com.xydl.cac.entity.I2syncConfig; -import com.xydl.cac.entity.I2syncField; -import com.xydl.cac.entity.I2syncRecord; -import com.xydl.cac.entity.NSensor; +import com.xydl.cac.entity.*; import com.xydl.cac.model.i2sync.Attr; import com.xydl.cac.model.i2sync.Datanode; import com.xydl.cac.model.i2sync.Monitordata; import com.xydl.cac.model.i2sync.Request; -import com.xydl.cac.util.DataTable; +import com.xydl.cac.task.CacheTask; import com.xydl.cac.util.DateUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import java.util.Map; @@ -25,6 +23,17 @@ public class I2DataTransformer { public Request transform(NSensor sensor, I2syncRecord record, I2syncConfig config, List fieldList, List> dataList) throws Exception { + // 查到可用规则 + List ruleList = new ArrayList<>(); + Iterator it = CacheTask.rule_Cache.keySet().iterator(); + while (it.hasNext()) { + Integer key = it.next(); + WarnRule rule = CacheTask.rule_Cache.get(key); + if (rule.canDo() && rule.getSensorId().equals(sensor.getId())) { + ruleList.add(rule); + } + } + List nodeList = new ArrayList<>(); for (Map map : dataList) { String date = (String) map.get("acquisitionTime"); @@ -44,7 +53,11 @@ public class I2DataTransformer { attr = new Attr(); attr.setName(field.getDestFieldName()); attr.setValue(String.valueOf(value)); - attr.setAlarm("FALSE"); + if (this.triggerRule(ruleList, field.getFieldName(), value)) { + attr.setAlarm("TRUE"); + } else { + attr.setAlarm("FALSE"); + } if (StringUtils.isBlank(node.getType())) { node.setType(config.getTypeCode()); } @@ -64,4 +77,16 @@ public class I2DataTransformer { request.setMonitordata(monitordata); return request; } + + private boolean triggerRule(List ruleList, String fieldName, Object value) { + for (WarnRule rule : ruleList) { + if (rule.getTypePoint().getField().equalsIgnoreCase(fieldName)) { + boolean r = rule.triggerRule(value); + if (r) { + return true; + } + } + } + return false; + } }