From d4c39f0ac493aea8e20410c0009922a5c4229173 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Mon, 13 Jan 2025 11:47:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=B0=B1=E5=9B=BE?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E7=9A=84=E8=A1=A8=E7=BB=93=E6=9E=84=E5=92=8C?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=B5=81=E7=A8=8B=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/谱图202501.sql | 6 ++++++ .../java/com/xydl/cac/entity/IedDlRecord.java | 8 +++++++ .../com/xydl/cac/iec/IEDCollectService.java | 21 +++++++++++++++---- .../xydl/cac/service/IedDlRecordService.java | 2 ++ .../service/impl/IedDlRecordServiceImpl.java | 5 +++++ .../cac/spectrogram/SpectrogramHandler.java | 2 ++ .../java/com/xydl/cac/task/AsyncTask.java | 5 ++++- .../com/xydl/cac/task/Client61850Task.java | 10 ++++++++- 8 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 db/谱图202501.sql diff --git a/db/谱图202501.sql b/db/谱图202501.sql new file mode 100644 index 0000000..7dad034 --- /dev/null +++ b/db/谱图202501.sql @@ -0,0 +1,6 @@ +ALTER TABLE `ied_dl_record` +ADD COLUMN `dev_id` INT(11) NULL DEFAULT NULL COMMENT '装置ID' AFTER `create_time`, +ADD COLUMN `data` MEDIUMTEXT NULL AFTER `dev_id`; + +ALTER TABLE `ied_dl_record` +ADD INDEX `idx` (`dev_id` ASC, `create_time` ASC); \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/entity/IedDlRecord.java b/src/main/java/com/xydl/cac/entity/IedDlRecord.java index 7e52967..563f08e 100644 --- a/src/main/java/com/xydl/cac/entity/IedDlRecord.java +++ b/src/main/java/com/xydl/cac/entity/IedDlRecord.java @@ -46,6 +46,14 @@ public class IedDlRecord { @Column(name = "create_time") private Date createTime; + @ApiModelProperty("devId") + @Column(name = "dev_id") + private Integer devId; + + @ApiModelProperty("解析后数据") + @Column(name = "data") + private String data; + @Transient IedDlConfig config; diff --git a/src/main/java/com/xydl/cac/iec/IEDCollectService.java b/src/main/java/com/xydl/cac/iec/IEDCollectService.java index 3d1009c..01cc033 100644 --- a/src/main/java/com/xydl/cac/iec/IEDCollectService.java +++ b/src/main/java/com/xydl/cac/iec/IEDCollectService.java @@ -10,6 +10,7 @@ import com.xydl.cac.repository.*; import com.xydl.cac.service.DataService; import com.xydl.cac.service.IedDlRecordService; import com.xydl.cac.socket.WebSocketServer; +import com.xydl.cac.spectrogram.SpectrogramHandler; import com.xydl.cac.util.DateUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -33,6 +34,7 @@ public class IEDCollectService { WebSocketServer _webSocketServer; BizConfig _bizConfig; WarningRepository _warningRepository; + SpectrogramHandler _spectrogramHandler; String folder = "/record"; HashMap eqmidTimeMap = new HashMap<>(); @@ -42,7 +44,7 @@ public class IEDCollectService { IedDlRecordService dlRecordService, DataService dataService, String xml, IcdIed ied, WebSocketServer webSocketServer, BizConfig bizConfig, - WarningRepository warningRepository) { + WarningRepository warningRepository, SpectrogramHandler spectrogramHandler) { _configRepository = configRepository; _attRepository = attRepository; _instRepository = instRepository; @@ -54,6 +56,7 @@ public class IEDCollectService { _webSocketServer = webSocketServer; _bizConfig = bizConfig; _warningRepository = warningRepository; + _spectrogramHandler = spectrogramHandler; iecClient = new IecClient(); } @@ -213,16 +216,18 @@ public class IEDCollectService { && matchContain(filename, config.getContain())) { IedDlRecord record = new IedDlRecord(); record.setConfigId(config.getId()); + record.setDevId(config.getDevId()); record.setFilename(filename); record.setRemotePath(config.getPath() + filename); boolean exist = _dlRecordService.exist(record); if (!exist) { - String localFilePath = localPath + "/" + filename; - iecClient.getFile(record.getRemotePath(), _bizConfig.getDatapath() + localFilePath, config.getTodel()); - record.setPath(_bizConfig.getDataNginxPath() + localFilePath); + String relativePath = localPath + "/" + filename; + iecClient.getFile(record.getRemotePath(), _bizConfig.getDatapath() + relativePath, config.getTodel()); + record.setPath(_bizConfig.getDataNginxPath() + relativePath); record.setCreateTime(new Date()); _dlRecordService.add(record); log.info("采集到" + record.getRemotePath()); + this.handleSpectrogram(record, config.getSensor().getTypeId(), _bizConfig.getDatapath() + relativePath); } } } @@ -238,6 +243,14 @@ public class IEDCollectService { } } + private void handleSpectrogram(IedDlRecord record, Integer typeId, String fullPath) { + try { + _spectrogramHandler.processFile(typeId, fullPath); + } catch (Exception ex) { + log.error("解析谱图文件失败", ex); + } + } + private boolean matchSuffix(String filename, String suffix) { if (StringUtils.isBlank(suffix)) { return true; diff --git a/src/main/java/com/xydl/cac/service/IedDlRecordService.java b/src/main/java/com/xydl/cac/service/IedDlRecordService.java index 0615d99..a2e0901 100644 --- a/src/main/java/com/xydl/cac/service/IedDlRecordService.java +++ b/src/main/java/com/xydl/cac/service/IedDlRecordService.java @@ -10,4 +10,6 @@ public interface IedDlRecordService { void add(IedDlRecord item); boolean exist(IedDlRecord item); + + void update(IedDlRecord item); } diff --git a/src/main/java/com/xydl/cac/service/impl/IedDlRecordServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/IedDlRecordServiceImpl.java index c214d04..dfc5cc1 100644 --- a/src/main/java/com/xydl/cac/service/impl/IedDlRecordServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/IedDlRecordServiceImpl.java @@ -69,4 +69,9 @@ public class IedDlRecordServiceImpl implements IedDlRecordService { } } + @Override + public void update(IedDlRecord item) { + repository.save(item); + } + } diff --git a/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java b/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java index 126ac3e..2b82d31 100644 --- a/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java +++ b/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java @@ -16,6 +16,8 @@ public class SpectrogramHandler { // 油色谱谱图 if (typeId == 1) { processorYsp.process(localFilePath); + } else { + log.error("缺少该类型" + typeId + "的谱图处理模块"); } } } diff --git a/src/main/java/com/xydl/cac/task/AsyncTask.java b/src/main/java/com/xydl/cac/task/AsyncTask.java index 454402e..7205d62 100644 --- a/src/main/java/com/xydl/cac/task/AsyncTask.java +++ b/src/main/java/com/xydl/cac/task/AsyncTask.java @@ -9,6 +9,7 @@ import com.xydl.cac.repository.*; import com.xydl.cac.service.DataService; import com.xydl.cac.service.IedDlRecordService; import com.xydl.cac.socket.WebSocketServer; +import com.xydl.cac.spectrogram.SpectrogramHandler; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -35,6 +36,8 @@ public class AsyncTask { BizConfig bizConfig; @Resource WarningRepository warningRepository; + @Resource + SpectrogramHandler spectrogramHandler; @Async public void collectIed(String xml, IcdIed ied, List rptList, List dlList) { @@ -43,7 +46,7 @@ public class AsyncTask { dlRecordService, dataService, xml, ied, webSocketServer, bizConfig, - warningRepository); + warningRepository, spectrogramHandler); iedService.collectAndSave(rptList, dlList); } } diff --git a/src/main/java/com/xydl/cac/task/Client61850Task.java b/src/main/java/com/xydl/cac/task/Client61850Task.java index d43f726..202e8ff 100644 --- a/src/main/java/com/xydl/cac/task/Client61850Task.java +++ b/src/main/java/com/xydl/cac/task/Client61850Task.java @@ -88,11 +88,19 @@ public class Client61850Task { if (CollectionUtils.isEmpty(rptList) && CollectionUtils.isEmpty(dlList)) { return; } + List dlNewList = new ArrayList<>(); + for (IedDlConfig item : dlList) { + List senList = sensorRepository.findByDevId(item.getDevId()); + if (!CollectionUtils.isEmpty(senList)) { + item.setSensor(senList.get(0)); + dlNewList.add(item); + } + } List icdFileList = fileRepository.findAll(); if (!CollectionUtils.isEmpty(icdFileList)) { for (IcdFile icdFile : icdFileList) { - this.collectIcdFile(icdFile, rptList, dlList); + this.collectIcdFile(icdFile, rptList, dlNewList); } } }