perf: 优化常量

dev
huangfeng 8 months ago
parent 11cacdf53d
commit be09597c16

@ -21,7 +21,6 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.List;
@RestController
@ -83,13 +82,6 @@ public class IecServerController extends BasicController {
return Response.success("OK");
}
// @GetMapping("status")
// @ApiOperation("查看IEC服务端状态")
// public Response<HashMap<String, Object>> status() throws Exception {
// HashMap<String, Object> map = iecServerService.status();
// return Response.success(map);
// }
@GetMapping("listParamindex")
@ApiOperation("查询该IED下的paramindex数据")
public Response<List<IcdConfigTypeInst>> listParamindex(@Validated @NotNull(message = "fileId不能为空!") Integer fileId) throws Exception {

@ -5,6 +5,7 @@ import com.beanit.iec61850bean.FileInformation;
import com.xydl.cac.config.BizConfig;
import com.xydl.cac.entity.*;
import com.xydl.cac.entity.constants.Constants;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.repository.*;
import com.xydl.cac.service.DataService;
import com.xydl.cac.service.IedDlRecordService;
@ -33,9 +34,6 @@ public class IEDCollectService {
String folder = "/record";
public static HashMap<Integer, HashMap<String, String>> lastDataMap = new HashMap<>();
public static HashMap<String, String> relationMap = new HashMap<>();
public IEDCollectService(IcdConfigTypeRepository configRepository, IcdConfigTypeAttRepository attRepository,
IcdConfigTypeInstRepository instRepository, RptparamindexRepository rptparamindexRepository,
IedDlRecordService dlRecordService, DataService dataService,
@ -69,7 +67,7 @@ public class IEDCollectService {
}
// 开始连iec61850采集数据
try {
log.info("61850开始采集数据, ied=" + ied.getName() + ", ip=" + ied.getIp());
log.info("61850开始采集数据, ied=" + ied.getName() + ", ip=" + ied.getIp() + ", port=" + ied.getPort());
this.connect();
if (!CollectionUtils.isEmpty(rptList)) {
this.doCollectAndSave(configTypeList, rptList);
@ -79,7 +77,7 @@ public class IEDCollectService {
this.doDownload(dlList);
}
} catch (Exception ex) {
String err = "61850采集数据异常, ied=" + ied.getName() + ", ip=" + ied.getIp();
String err = "61850采集数据异常, ied=" + ied.getName() + ", ip=" + ied.getIp() + ", port=" + ied.getPort();
log.error(err, ex);
_webSocketServer.sendMessage(err, null);
} finally {
@ -122,10 +120,10 @@ public class IEDCollectService {
// 更新关联关系缓存
String key = paramindexNew + "_" + fc;
value = rpt.getEqmid() + "," + rpt.getColname();
relationMap.put(key, value);
StaticVariable.paramRelationMap.put(key, value);
key = paramindexT + "_" + fc;
value = rpt.getEqmid() + ",acquisitionTime";
relationMap.put(key, value);
StaticVariable.paramRelationMap.put(key, value);
}
private Rptparamindex findRpt(List<Rptparamindex> rptList, String paramindex) {
@ -183,10 +181,10 @@ public class IEDCollectService {
}
public static void updateLastData(Integer eqmid, String colname, String value, String time) {
HashMap<String, String> map = lastDataMap.get(eqmid);
HashMap<String, String> map = StaticVariable.sensorLastDataMap.get(eqmid);
if (map == null) {
map = new HashMap<>();
lastDataMap.put(eqmid, map);
StaticVariable.sensorLastDataMap.put(eqmid, map);
}
map.put(colname, value);
if (time != null) {
@ -198,8 +196,8 @@ public class IEDCollectService {
try {
String ref = bda.getReference().toString();
String key = ref + "_" + bda.getFc().toString();
if (IEDCollectService.relationMap.containsKey(key)) {
String value = IEDCollectService.relationMap.get(key);
if (StaticVariable.paramRelationMap.containsKey(key)) {
String value = StaticVariable.paramRelationMap.get(key);
String[] str = value.split(",");
Integer eqmid = Integer.parseInt(str[0]);
String colname = str[1];

@ -3,6 +3,7 @@ package com.xydl.cac.iec;
import com.xydl.cac.entity.*;
import com.xydl.cac.entity.constants.Constants;
import com.xydl.cac.exception.BusinessException;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.repository.IcdFileRepository;
import com.xydl.cac.service.IcdTransformService;
import com.xydl.cac.util.IcdXmlUtil;
@ -50,7 +51,7 @@ public class IecServerService {
IecServer iecServer = new IecServer(transformService);
iecServer.start(icdFile.getXml(), port);
iecServer.filename = icdFile.getFilename();
RealTimeDataService.iecServerMap.put(fileId, iecServer);
StaticVariable.iecServerMap.put(fileId, iecServer);
icdFile.setStart(Constants.TRUE);
icdFile.setPort(port);
fileRepository.save(icdFile);
@ -73,32 +74,23 @@ public class IecServerService {
}
private void onlyStopServer(Integer fileId) {
IecServer iecServer = RealTimeDataService.iecServerMap.get(fileId);
IecServer iecServer = StaticVariable.iecServerMap.get(fileId);
if (iecServer != null) {
log.info("关闭IecServer服务, port=" + iecServer.port);
iecServer.close();
RealTimeDataService.iecServerMap.remove(fileId);
StaticVariable.iecServerMap.remove(fileId);
}
}
@PreDestroy
private void stop() {
Iterator<Integer> it = RealTimeDataService.iecServerMap.keySet().iterator();
Iterator<Integer> it = StaticVariable.iecServerMap.keySet().iterator();
while (it.hasNext()) {
Integer key = it.next();
this.onlyStopServer(key);
}
}
// public HashMap<String, Object> status() {
// HashMap<String, Object> map = new HashMap<>();
// map.put("port", 102);
// map.put("started", iecServer.started);
// map.put("filename", iecServer.filename);
// map.put("fileId", iecServer.fileId);
// return map;
// }
public List<IcdConfigTypeInst> listParamindex(Integer fileId) throws Exception {
Optional<IcdFile> optional = fileRepository.findById(fileId);
if (!optional.isPresent()) {

@ -5,6 +5,7 @@ import com.xydl.cac.entity.IcdFile;
import com.xydl.cac.entity.IcdIed;
import com.xydl.cac.entity.constants.Constants;
import com.xydl.cac.exception.BusinessException;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.repository.IcdFileRepository;
import com.xydl.cac.repository.IcdIedRepository;
import lombok.extern.slf4j.Slf4j;
@ -27,7 +28,6 @@ public class RealTimeDataService {
@Resource
IcdIedRepository iedRepository;
public static HashMap<Integer, IecServer> iecServerMap = new HashMap<>();
public static boolean inDoing = false;
HashMap<Integer, IecClient> clientMap = new HashMap<>();
@ -137,10 +137,10 @@ public class RealTimeDataService {
}
private static void processBdaNodeValue(BasicDataAttribute bda) {
Iterator<Integer> it = RealTimeDataService.iecServerMap.keySet().iterator();
Iterator<Integer> it = StaticVariable.iecServerMap.keySet().iterator();
while (it.hasNext()) {
Integer key = it.next();
IecServer iecServer = RealTimeDataService.iecServerMap.get(key);
IecServer iecServer = StaticVariable.iecServerMap.get(key);
iecServer.updateBda(bda);
}
IEDCollectService.updateLastData(bda);

@ -0,0 +1,25 @@
package com.xydl.cac.model;
import com.xydl.cac.entity.Jg;
import com.xydl.cac.entity.ModevType;
import com.xydl.cac.entity.WarnRule;
import com.xydl.cac.entity.Zsb;
import com.xydl.cac.iec.IecServer;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
public class StaticVariable {
public static HashMap<Integer, IecServer> iecServerMap = new HashMap<>();
public static HashMap<Integer, HashMap<String, String>> sensorLastDataMap = new HashMap<>();
public static HashMap<String, String> paramRelationMap = new HashMap<>();
public static HashMap<String, String> unit_Cache = new HashMap<>();
public static List<ModevType> modevType_Cache = null;
public static List<Jg> jg_Cache = null;
public static List<Zsb> zsb_Cache = null;
public static ConcurrentHashMap<Integer, WarnRule> rule_Cache = new ConcurrentHashMap<>();
}

@ -3,10 +3,10 @@ package com.xydl.cac.service.impl;
import com.xydl.cac.entity.Bdz;
import com.xydl.cac.entity.Jg;
import com.xydl.cac.exception.BusinessException;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.repository.BdzRepository;
import com.xydl.cac.repository.JgRepository;
import com.xydl.cac.service.BdzService;
import com.xydl.cac.task.CacheTask;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -47,8 +47,8 @@ public class BdzServiceImpl implements BdzService {
throw new BusinessException("该名称已被使用");
}
repository.save(item);
CacheTask.jg_Cache = null;
CacheTask.zsb_Cache = null;
StaticVariable.jg_Cache = null;
StaticVariable.zsb_Cache = null;
}
@Override

@ -4,12 +4,12 @@ import com.xydl.cac.entity.Bdz;
import com.xydl.cac.entity.Jg;
import com.xydl.cac.entity.Zsb;
import com.xydl.cac.exception.BusinessException;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.repository.BdzRepository;
import com.xydl.cac.repository.JgRepository;
import com.xydl.cac.repository.NSensorRepository;
import com.xydl.cac.repository.ZsbRepository;
import com.xydl.cac.service.JgService;
import com.xydl.cac.task.CacheTask;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -37,11 +37,11 @@ public class JgServiceImpl implements JgService {
@Override
public List<Jg> listAll(Integer bdzid) {
if (bdzid == null) {
if (CacheTask.jg_Cache == null) {
CacheTask.jg_Cache = repository.findAll();
this.fillBdzName(CacheTask.jg_Cache);
if (StaticVariable.jg_Cache == null) {
StaticVariable.jg_Cache = repository.findAll();
this.fillBdzName(StaticVariable.jg_Cache);
}
return CacheTask.jg_Cache;
return StaticVariable.jg_Cache;
} else {
List<Jg> result = repository.findByBdzid(bdzid);
Optional<Bdz> optional = bdzRepository.findById(bdzid);
@ -58,11 +58,11 @@ public class JgServiceImpl implements JgService {
public List<Jg> sensorCount(Integer bdzid) {
List<Jg> result;
if (bdzid == null) {
if (CacheTask.jg_Cache == null) {
CacheTask.jg_Cache = repository.findAll();
this.fillBdzName(CacheTask.jg_Cache);
if (StaticVariable.jg_Cache == null) {
StaticVariable.jg_Cache = repository.findAll();
this.fillBdzName(StaticVariable.jg_Cache);
}
result = CacheTask.jg_Cache;
result = StaticVariable.jg_Cache;
} else {
result = repository.findByBdzid(bdzid);
Optional<Bdz> optional = bdzRepository.findById(bdzid);
@ -111,7 +111,7 @@ public class JgServiceImpl implements JgService {
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException("该名称已被使用");
}
CacheTask.jg_Cache = null;
StaticVariable.jg_Cache = null;
return repository.save(item);
}
@ -126,8 +126,8 @@ public class JgServiceImpl implements JgService {
throw new BusinessException("该名称已被使用");
}
repository.save(item);
CacheTask.jg_Cache = null;
CacheTask.zsb_Cache = null;
StaticVariable.jg_Cache = null;
StaticVariable.zsb_Cache = null;
}
@Override
@ -137,7 +137,7 @@ public class JgServiceImpl implements JgService {
throw new BusinessException("已被主设备使用不能删除");
}
repository.deleteById(id);
CacheTask.jg_Cache = null;
StaticVariable.jg_Cache = null;
}
@Override

@ -3,11 +3,11 @@ package com.xydl.cac.service.impl;
import com.xydl.cac.entity.ModevType;
import com.xydl.cac.entity.NSensor;
import com.xydl.cac.exception.BusinessException;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.repository.ModevTypePointRepository;
import com.xydl.cac.repository.ModevTypeRepository;
import com.xydl.cac.repository.NSensorRepository;
import com.xydl.cac.service.ModevTypeService;
import com.xydl.cac.task.CacheTask;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -31,10 +31,10 @@ public class ModevTypeServiceImpl implements ModevTypeService {
@Override
public List<ModevType> listAll() {
if (CacheTask.modevType_Cache == null) {
CacheTask.modevType_Cache = repository.findAll();
if (StaticVariable.modevType_Cache == null) {
StaticVariable.modevType_Cache = repository.findAll();
}
return CacheTask.modevType_Cache;
return StaticVariable.modevType_Cache;
}
@Override
@ -54,7 +54,7 @@ public class ModevTypeServiceImpl implements ModevTypeService {
if (!CollectionUtils.isEmpty(byMc)) {
throw new BusinessException("该监测装置类型已存在");
}
CacheTask.modevType_Cache = null;
StaticVariable.modevType_Cache = null;
return repository.save(item);
}
@ -69,7 +69,7 @@ public class ModevTypeServiceImpl implements ModevTypeService {
}
}
repository.save(item);
CacheTask.modevType_Cache = null;
StaticVariable.modevType_Cache = null;
}
@Override
@ -80,7 +80,7 @@ public class ModevTypeServiceImpl implements ModevTypeService {
}
repository.deleteById(id);
pointRepository.deleteByModevtypeId(id);
CacheTask.modevType_Cache = null;
StaticVariable.modevType_Cache = null;
}
@Override

@ -3,11 +3,7 @@ package com.xydl.cac.service.impl;
import com.xydl.cac.entity.*;
import com.xydl.cac.entity.constants.Constants;
import com.xydl.cac.exception.BusinessException;
import com.xydl.cac.iec.IEDCollectService;
import com.xydl.cac.model.ConditionModel;
import com.xydl.cac.model.OnePage;
import com.xydl.cac.model.SensorDetail;
import com.xydl.cac.model.SensorUpdateModel;
import com.xydl.cac.model.*;
import com.xydl.cac.repository.I2relationRepository;
import com.xydl.cac.repository.ModevRepository;
import com.xydl.cac.repository.NSensorRepository;
@ -84,7 +80,7 @@ public class NSensorServiceImpl implements NSensorService {
sensor.setTableName(type.getTablename());
}
}
HashMap<String, String> map = IEDCollectService.lastDataMap.get(sensor.getDevId());
HashMap<String, String> map = StaticVariable.sensorLastDataMap.get(sensor.getDevId());
sensor.setLastData(map);
}
}

@ -2,9 +2,9 @@ package com.xydl.cac.service.impl;
import com.xydl.cac.entity.Unit;
import com.xydl.cac.exception.BusinessException;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.repository.UnitRepository;
import com.xydl.cac.service.UnitService;
import com.xydl.cac.task.CacheTask;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -33,30 +33,30 @@ public class UnitServiceImpl implements UnitService {
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException("该字段已存在");
}
CacheTask.unit_Cache.clear();
StaticVariable.unit_Cache.clear();
return repository.save(item);
}
@Override
public void update(Unit item) throws Exception {
repository.save(item);
CacheTask.unit_Cache.clear();
StaticVariable.unit_Cache.clear();
}
@Override
public void delete(Integer id) {
repository.deleteById(id);
CacheTask.unit_Cache.clear();
StaticVariable.unit_Cache.clear();
}
@Override
public String findUnitInCache(String field) {
if (CacheTask.unit_Cache.size() < 1) {
if (StaticVariable.unit_Cache.size() < 1) {
List<Unit> list = repository.findAll();
for (Unit item : list) {
CacheTask.unit_Cache.put(item.getField().toLowerCase(), item.getUnit());
StaticVariable.unit_Cache.put(item.getField().toLowerCase(), item.getUnit());
}
}
return CacheTask.unit_Cache.get(field.toLowerCase());
return StaticVariable.unit_Cache.get(field.toLowerCase());
}
}

@ -4,12 +4,12 @@ import com.xydl.cac.entity.ModevTypePoint;
import com.xydl.cac.entity.NSensor;
import com.xydl.cac.entity.WarnRule;
import com.xydl.cac.exception.BusinessException;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.repository.ModevTypePointRepository;
import com.xydl.cac.repository.WarnRuleRepository;
import com.xydl.cac.service.DataService;
import com.xydl.cac.service.NSensorService;
import com.xydl.cac.service.WarnRuleService;
import com.xydl.cac.task.CacheTask;
import com.xydl.cac.util.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -87,12 +87,12 @@ public class WarnRuleServiceImpl implements WarnRuleService {
rule.setLevel(item.getLevel());
rule.setActive(item.getActive());
repository.save(rule);
CacheTask.rule_Cache.remove(rule.getId());
StaticVariable.rule_Cache.remove(rule.getId());
}
@Override
public void delete(Integer id) throws Exception {
repository.deleteById(id);
CacheTask.rule_Cache.remove(id);
StaticVariable.rule_Cache.remove(id);
}
}

@ -5,12 +5,12 @@ import com.xydl.cac.entity.Lx;
import com.xydl.cac.entity.Modev;
import com.xydl.cac.entity.Zsb;
import com.xydl.cac.exception.BusinessException;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.repository.LxRepository;
import com.xydl.cac.repository.ModevRepository;
import com.xydl.cac.repository.ZsbRepository;
import com.xydl.cac.service.JgService;
import com.xydl.cac.service.ZsbService;
import com.xydl.cac.task.CacheTask;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -37,12 +37,12 @@ public class ZsbServiceImpl implements ZsbService {
@Override
public List<Zsb> listAll(Integer jgid) throws Exception {
if (jgid == null) {
if (CacheTask.zsb_Cache == null) {
CacheTask.zsb_Cache = repository.findAll();
this.fillJgBdzName(CacheTask.zsb_Cache);
this.fillLxName(CacheTask.zsb_Cache);
if (StaticVariable.zsb_Cache == null) {
StaticVariable.zsb_Cache = repository.findAll();
this.fillJgBdzName(StaticVariable.zsb_Cache);
this.fillLxName(StaticVariable.zsb_Cache);
}
return CacheTask.zsb_Cache;
return StaticVariable.zsb_Cache;
} else {
List<Zsb> result = repository.findByJgid(jgid);
Jg jg = jgService.detail(jgid);
@ -99,7 +99,7 @@ public class ZsbServiceImpl implements ZsbService {
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException("该名称已被使用");
}
CacheTask.zsb_Cache = null;
StaticVariable.zsb_Cache = null;
return repository.save(item);
}
@ -116,7 +116,7 @@ public class ZsbServiceImpl implements ZsbService {
throw new BusinessException("该名称已被使用");
}
repository.save(item);
CacheTask.zsb_Cache = null;
StaticVariable.zsb_Cache = null;
}
@Override
@ -126,7 +126,7 @@ public class ZsbServiceImpl implements ZsbService {
throw new BusinessException("已被监测装置使用不能删除");
}
repository.deleteById(id);
CacheTask.zsb_Cache = null;
StaticVariable.zsb_Cache = null;
}
@Override

@ -1,18 +1,14 @@
package com.xydl.cac.task;
import com.xydl.cac.entity.Jg;
import com.xydl.cac.entity.ModevType;
import com.xydl.cac.entity.WarnRule;
import com.xydl.cac.entity.Zsb;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.service.WarnRuleService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@Service
@Slf4j
@ -21,19 +17,14 @@ public class CacheTask {
@Resource
WarnRuleService ruleService;
public static HashMap<String, String> unit_Cache = new HashMap<>();
public static List<ModevType> modevType_Cache = null;
public static List<Jg> jg_Cache = null;
public static List<Zsb> zsb_Cache = null;
public static ConcurrentHashMap<Integer, WarnRule> rule_Cache = new ConcurrentHashMap<>();
@Scheduled(cron = "0 0 9 * * ?")
private void clearCache() {
unit_Cache.clear();
modevType_Cache = null;
jg_Cache = null;
zsb_Cache = null;
rule_Cache.clear();
StaticVariable.unit_Cache.clear();
StaticVariable.modevType_Cache = null;
StaticVariable.jg_Cache = null;
StaticVariable.zsb_Cache = null;
StaticVariable.rule_Cache.clear();
}
@ -42,10 +33,10 @@ public class CacheTask {
try {
List<WarnRule> list = ruleService.listAll(null);
for (WarnRule item : list) {
WarnRule rule = rule_Cache.get(item.getId());
WarnRule rule = StaticVariable.rule_Cache.get(item.getId());
if (rule == null) {
item.initComparator(item.getComparator(), item.getOperator());
rule_Cache.put(item.getId(), item);
StaticVariable.rule_Cache.put(item.getId(), item);
}
}
} catch (Exception e) {

@ -4,6 +4,7 @@ import com.xydl.cac.entity.ModevTypePoint;
import com.xydl.cac.entity.NSensor;
import com.xydl.cac.entity.WarnRule;
import com.xydl.cac.entity.Warning;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.model.TriggerModel;
import com.xydl.cac.repository.WarnRuleRepository;
import com.xydl.cac.repository.WarningRepository;
@ -43,10 +44,10 @@ public class RuleCheckTask {
@Scheduled(initialDelay = 60 * 1000, fixedDelay = 3 * 60 * 1000)
private void checkAll() {
try {
Iterator<Integer> it = CacheTask.rule_Cache.keySet().iterator();
Iterator<Integer> it = StaticVariable.rule_Cache.keySet().iterator();
while (it.hasNext()) {
Integer key = it.next();
WarnRule rule = CacheTask.rule_Cache.get(key);
WarnRule rule = StaticVariable.rule_Cache.get(key);
if (rule.canDo()) {
this.ruleCheck(rule);
}

@ -2,11 +2,11 @@ package com.xydl.cac.transform;
import com.alibaba.excel.util.StringUtils;
import com.xydl.cac.entity.*;
import com.xydl.cac.model.StaticVariable;
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.task.CacheTask;
import com.xydl.cac.util.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@ -25,10 +25,10 @@ public class I2DataTransformer {
// 查到可用规则
List<WarnRule> ruleList = new ArrayList<>();
Iterator<Integer> it = CacheTask.rule_Cache.keySet().iterator();
Iterator<Integer> it = StaticVariable.rule_Cache.keySet().iterator();
while (it.hasNext()) {
Integer key = it.next();
WarnRule rule = CacheTask.rule_Cache.get(key);
WarnRule rule = StaticVariable.rule_Cache.get(key);
if (rule.canDo() && rule.getSensorId().equals(sensor.getId())) {
ruleList.add(rule);
}

Loading…
Cancel
Save