From 6bc0d82bc06817d44f3d29de7d02266c8b2dac71 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Tue, 11 Jun 2024 11:08:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0i2=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E5=B9=B6=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/I2syncRecordRepository.java | 2 + .../com/xydl/cac/service/DataService.java | 2 +- .../cac/service/impl/DataServiceImpl.java | 6 +- .../java/com/xydl/cac/task/CacheTask.java | 2 +- .../java/com/xydl/cac/task/I2syncTask.java | 85 +++++++++++++++++++ .../java/com/xydl/cac/task/RuleCheckTask.java | 8 +- 6 files changed, 96 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/xydl/cac/task/I2syncTask.java diff --git a/src/main/java/com/xydl/cac/repository/I2syncRecordRepository.java b/src/main/java/com/xydl/cac/repository/I2syncRecordRepository.java index a6cfd94..934cad4 100644 --- a/src/main/java/com/xydl/cac/repository/I2syncRecordRepository.java +++ b/src/main/java/com/xydl/cac/repository/I2syncRecordRepository.java @@ -13,4 +13,6 @@ public interface I2syncRecordRepository extends JpaRepository findByModevtypeId(Integer modevtypeId); + List findByEqmid(Integer eqmid); + } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/service/DataService.java b/src/main/java/com/xydl/cac/service/DataService.java index f603cf0..541bc0a 100644 --- a/src/main/java/com/xydl/cac/service/DataService.java +++ b/src/main/java/com/xydl/cac/service/DataService.java @@ -18,7 +18,7 @@ public interface DataService { void clearAllBind(); - List> getLatestData(NSensor sensor, ModevTypePoint point, Date start) throws Exception; + List> getLatestData(NSensor sensor, List points, Date start) throws Exception; Map getLastOneData(NSensor sensor, ModevTypePoint point) throws Exception; } diff --git a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java index 3ade23b..1973e8e 100644 --- a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java @@ -223,10 +223,7 @@ public class DataServiceImpl implements DataService { } @Override - public List> getLatestData(NSensor sensor, ModevTypePoint point, Date start) throws Exception { - List points = new ArrayList<>(); - points.add(point); - + public List> getLatestData(NSensor sensor, List points, Date start) throws Exception { ConditionModel model = new ConditionModel(); model.setPageSize(1000); model.setPageNum(1); @@ -235,7 +232,6 @@ public class DataServiceImpl implements DataService { model.setTimeAsc(true); OnePage> page = this.doSqlData(sensor, points, model); - return page.getContent(); } diff --git a/src/main/java/com/xydl/cac/task/CacheTask.java b/src/main/java/com/xydl/cac/task/CacheTask.java index f010044..b306e33 100644 --- a/src/main/java/com/xydl/cac/task/CacheTask.java +++ b/src/main/java/com/xydl/cac/task/CacheTask.java @@ -36,7 +36,7 @@ public class CacheTask { } - @Scheduled(initialDelay = 60000, fixedDelay = 60000) + @Scheduled(initialDelay = 60 * 1000, fixedDelay = 60 * 1000) private void refreshRule() { try { List list = ruleService.listAll(null); diff --git a/src/main/java/com/xydl/cac/task/I2syncTask.java b/src/main/java/com/xydl/cac/task/I2syncTask.java new file mode 100644 index 0000000..9290783 --- /dev/null +++ b/src/main/java/com/xydl/cac/task/I2syncTask.java @@ -0,0 +1,85 @@ +package com.xydl.cac.task; + +import com.xydl.cac.entity.*; +import com.xydl.cac.repository.I2syncFieldRepository; +import com.xydl.cac.repository.I2syncRecordRepository; +import com.xydl.cac.repository.NSensorRepository; +import com.xydl.cac.service.DataService; +import com.xydl.cac.service.I2syncService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +@Service +@Slf4j +public class I2syncTask { + @Resource + I2syncService i2syncService; + @Resource + I2syncFieldRepository syncFieldRepository; + @Resource + I2syncRecordRepository recordRepository; + @Resource + NSensorRepository sensorRepository; + @Resource + DataService dataService; + + @Scheduled(initialDelay = 60 * 1000, fixedDelay = 3600 * 1000) + public void syncAll() { + List configList = i2syncService.listConfig(); + if (!CollectionUtils.isEmpty(configList)) { + log.info("I2syncTask.syncAll 开始."); + try { + for (I2syncConfig config : configList) { + this.syncConfig(config); + } + log.info("I2syncTask.syncAll 结束."); + } catch (Exception e) { + log.error("I2syncTask.syncAll error.", e); + } + } + } + + // 同步一个类型 + private void syncConfig(I2syncConfig config) throws Exception { + List fieldList = syncFieldRepository.findByTableName(config.getTableName()); + if (CollectionUtils.isEmpty(fieldList)) { + return; + } + List points = new ArrayList<>(); + for (I2syncField field : fieldList) { + ModevTypePoint point = new ModevTypePoint(); + point.setField(field.getFieldName()); + } + List list = sensorRepository.findByTypeId(config.getModevtypeId()); + for (NSensor sensor : list) { + this.syncSensor(sensor, fieldList, points); + } + } + + // 同步一个装置 + private void syncSensor(NSensor sensor, List fieldList, List points) throws Exception { + Date start = null; + List recordList = recordRepository.findByEqmid(sensor.getDevId()); + if (!CollectionUtils.isEmpty(recordList)) { + start = recordList.get(0).getLastDTime(); + } + + // 查询最新数据 + List> list = dataService.getLatestData(sensor, points, start); + if (CollectionUtils.isEmpty(list)) { + return; + } + + // 格式转换 + + // 同步导出 + } +} diff --git a/src/main/java/com/xydl/cac/task/RuleCheckTask.java b/src/main/java/com/xydl/cac/task/RuleCheckTask.java index 8af1f9f..4cefd6b 100644 --- a/src/main/java/com/xydl/cac/task/RuleCheckTask.java +++ b/src/main/java/com/xydl/cac/task/RuleCheckTask.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -31,7 +32,7 @@ public class RuleCheckTask { @Resource DingTalkPushUtil dingTalkPushUtil; - @Scheduled(initialDelay = 90000, fixedDelay = 60000) + @Scheduled(initialDelay = 90 * 1000, fixedDelay = 60 * 1000) private void checkAll() { try { for (WarnRule rule : CacheTask.rule_Cache.values()) { @@ -48,7 +49,9 @@ public class RuleCheckTask { try { NSensor sensor = rule.getNSensor(); ModevTypePoint typePoint = rule.getTypePoint(); - List> list = dataService.getLatestData(sensor, typePoint, rule.getLastDTime()); + List points = new ArrayList<>(); + points.add(typePoint); + List> list = dataService.getLatestData(sensor, points, rule.getLastDTime()); if (!CollectionUtils.isEmpty(list)) { Date date = null; for (Map map : list) { @@ -90,6 +93,7 @@ public class RuleCheckTask { warningRepository.save(warning); String str = warning.getZsbName() + "-" + warning.getWarnDesc() + ", 采集时间:" + dateStr + ", 当前值:" + value + " " + warning.getTriggerDesc(); + log.warn("触发规则告警: " + str); dingTalkPushUtil.pushText(str); }