feat: 增加i2同步定时任务并查询数据

dev
huangfeng 1 year ago
parent e8aa69683f
commit 6bc0d82bc0

@ -13,4 +13,6 @@ public interface I2syncRecordRepository extends JpaRepository<I2syncRecord, Inte
List<I2syncRecord> findByModevtypeId(Integer modevtypeId);
List<I2syncRecord> findByEqmid(Integer eqmid);
}

@ -18,7 +18,7 @@ public interface DataService {
void clearAllBind();
List<Map<String, Object>> getLatestData(NSensor sensor, ModevTypePoint point, Date start) throws Exception;
List<Map<String, Object>> getLatestData(NSensor sensor, List<ModevTypePoint> points, Date start) throws Exception;
Map<String, Object> getLastOneData(NSensor sensor, ModevTypePoint point) throws Exception;
}

@ -223,10 +223,7 @@ public class DataServiceImpl implements DataService {
}
@Override
public List<Map<String, Object>> getLatestData(NSensor sensor, ModevTypePoint point, Date start) throws Exception {
List<ModevTypePoint> points = new ArrayList<>();
points.add(point);
public List<Map<String, Object>> getLatestData(NSensor sensor, List<ModevTypePoint> 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<Map<String, Object>> page = this.doSqlData(sensor, points, model);
return page.getContent();
}

@ -36,7 +36,7 @@ public class CacheTask {
}
@Scheduled(initialDelay = 60000, fixedDelay = 60000)
@Scheduled(initialDelay = 60 * 1000, fixedDelay = 60 * 1000)
private void refreshRule() {
try {
List<WarnRule> list = ruleService.listAll(null);

@ -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<I2syncConfig> 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<I2syncField> fieldList = syncFieldRepository.findByTableName(config.getTableName());
if (CollectionUtils.isEmpty(fieldList)) {
return;
}
List<ModevTypePoint> points = new ArrayList<>();
for (I2syncField field : fieldList) {
ModevTypePoint point = new ModevTypePoint();
point.setField(field.getFieldName());
}
List<NSensor> list = sensorRepository.findByTypeId(config.getModevtypeId());
for (NSensor sensor : list) {
this.syncSensor(sensor, fieldList, points);
}
}
// 同步一个装置
private void syncSensor(NSensor sensor, List<I2syncField> fieldList, List<ModevTypePoint> points) throws Exception {
Date start = null;
List<I2syncRecord> recordList = recordRepository.findByEqmid(sensor.getDevId());
if (!CollectionUtils.isEmpty(recordList)) {
start = recordList.get(0).getLastDTime();
}
// 查询最新数据
List<Map<String, Object>> list = dataService.getLatestData(sensor, points, start);
if (CollectionUtils.isEmpty(list)) {
return;
}
// 格式转换
// 同步导出
}
}

@ -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<Map<String, Object>> list = dataService.getLatestData(sensor, typePoint, rule.getLastDTime());
List<ModevTypePoint> points = new ArrayList<>();
points.add(typePoint);
List<Map<String, Object>> list = dataService.getLatestData(sensor, points, rule.getLastDTime());
if (!CollectionUtils.isEmpty(list)) {
Date date = null;
for (Map<String, Object> 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);
}

Loading…
Cancel
Save