From 3f83956ac97676e1f3e13efc1e99b1c4077e2075 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Mon, 13 Jan 2025 09:49:33 +0800 Subject: [PATCH 01/13] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E6=B2=B9?= =?UTF-8?q?=E8=89=B2=E8=B0=B1=E8=B0=B1=E5=9B=BE=E6=95=B0=E6=8D=AE=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/spectrogram/SpectrogramModel.java | 7 +++++++ .../xydl/cac/model/spectrogram/YspModel.java | 18 ++++++++++++++++ .../xydl/cac/model/spectrogram/YspWay.java | 12 +++++++++++ .../cac/model/spectrogram/YspWayHump.java | 14 +++++++++++++ .../xydl/cac/spectrogram/ProcessorYsp.java | 13 ++++++++++++ .../cac/spectrogram/SpectrogramHandler.java | 21 +++++++++++++++++++ 6 files changed, 85 insertions(+) create mode 100644 src/main/java/com/xydl/cac/model/spectrogram/SpectrogramModel.java create mode 100644 src/main/java/com/xydl/cac/model/spectrogram/YspModel.java create mode 100644 src/main/java/com/xydl/cac/model/spectrogram/YspWay.java create mode 100644 src/main/java/com/xydl/cac/model/spectrogram/YspWayHump.java create mode 100644 src/main/java/com/xydl/cac/spectrogram/ProcessorYsp.java create mode 100644 src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java diff --git a/src/main/java/com/xydl/cac/model/spectrogram/SpectrogramModel.java b/src/main/java/com/xydl/cac/model/spectrogram/SpectrogramModel.java new file mode 100644 index 0000000..2b861d7 --- /dev/null +++ b/src/main/java/com/xydl/cac/model/spectrogram/SpectrogramModel.java @@ -0,0 +1,7 @@ +package com.xydl.cac.model.spectrogram; + +import lombok.Data; + +@Data +public class SpectrogramModel { +} diff --git a/src/main/java/com/xydl/cac/model/spectrogram/YspModel.java b/src/main/java/com/xydl/cac/model/spectrogram/YspModel.java new file mode 100644 index 0000000..71433d3 --- /dev/null +++ b/src/main/java/com/xydl/cac/model/spectrogram/YspModel.java @@ -0,0 +1,18 @@ +package com.xydl.cac.model.spectrogram; + +import lombok.Data; + +import java.util.List; + +@Data +public class YspModel extends SpectrogramModel { + Long createTime; + Integer flag; + Float xInterval; + Float yMax; + String xUnit; + String yUnit; + Integer k; + Integer num; + List wayList; +} diff --git a/src/main/java/com/xydl/cac/model/spectrogram/YspWay.java b/src/main/java/com/xydl/cac/model/spectrogram/YspWay.java new file mode 100644 index 0000000..a2cbaf6 --- /dev/null +++ b/src/main/java/com/xydl/cac/model/spectrogram/YspWay.java @@ -0,0 +1,12 @@ +package com.xydl.cac.model.spectrogram; + +import lombok.Data; + +import java.util.List; + +@Data +public class YspWay { + Integer count; + List humpList; + List valueList; +} diff --git a/src/main/java/com/xydl/cac/model/spectrogram/YspWayHump.java b/src/main/java/com/xydl/cac/model/spectrogram/YspWayHump.java new file mode 100644 index 0000000..1c7359c --- /dev/null +++ b/src/main/java/com/xydl/cac/model/spectrogram/YspWayHump.java @@ -0,0 +1,14 @@ +package com.xydl.cac.model.spectrogram; + +import lombok.Data; + +@Data +public class YspWayHump { + String name; + Integer number; + Float time; + Float startTime; + Float endTime; + Float high; + Float area; +} diff --git a/src/main/java/com/xydl/cac/spectrogram/ProcessorYsp.java b/src/main/java/com/xydl/cac/spectrogram/ProcessorYsp.java new file mode 100644 index 0000000..07a03d5 --- /dev/null +++ b/src/main/java/com/xydl/cac/spectrogram/ProcessorYsp.java @@ -0,0 +1,13 @@ +package com.xydl.cac.spectrogram; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class ProcessorYsp { + + public void process(String localFilePath) { + + } +} diff --git a/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java b/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java new file mode 100644 index 0000000..126ac3e --- /dev/null +++ b/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java @@ -0,0 +1,21 @@ +package com.xydl.cac.spectrogram; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +@Slf4j +public class SpectrogramHandler { + + @Resource + ProcessorYsp processorYsp; + + public void processFile(Integer typeId, String localFilePath) { + // 油色谱谱图 + if (typeId == 1) { + processorYsp.process(localFilePath); + } + } +} From d4c39f0ac493aea8e20410c0009922a5c4229173 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Mon, 13 Jan 2025 11:47:49 +0800 Subject: [PATCH 02/13] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=B0=B1?= =?UTF-8?q?=E5=9B=BE=E8=A7=A3=E6=9E=90=E7=9A=84=E8=A1=A8=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E5=92=8C=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); } } } From 594271831da00421a30afae28f852a321ed62a27 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Thu, 16 Jan 2025 11:43:45 +0800 Subject: [PATCH 03/13] =?UTF-8?q?feat:=20=E4=BB=8E=E6=B2=B9=E8=89=B2?= =?UTF-8?q?=E8=B0=B1=E5=9B=BE=E6=96=87=E4=BB=B6=E8=AF=BB=E5=8F=96=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E6=88=90java=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xydl/cac/model/spectrogram/YspModel.java | 30 ++++++++++++++++--- .../xydl/cac/model/spectrogram/YspWay.java | 21 +++++++++++-- .../cac/model/spectrogram/YspWayHump.java | 19 +++++++++++- .../xydl/cac/spectrogram/ProcessorYsp.java | 23 +++++++++++++- .../cac/spectrogram/SpectrogramHandler.java | 4 ++- 5 files changed, 87 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/xydl/cac/model/spectrogram/YspModel.java b/src/main/java/com/xydl/cac/model/spectrogram/YspModel.java index 71433d3..cab0d54 100644 --- a/src/main/java/com/xydl/cac/model/spectrogram/YspModel.java +++ b/src/main/java/com/xydl/cac/model/spectrogram/YspModel.java @@ -2,17 +2,39 @@ package com.xydl.cac.model.spectrogram; import lombok.Data; +import java.io.DataInputStream; +import java.util.ArrayList; import java.util.List; @Data public class YspModel extends SpectrogramModel { + Integer code; + Integer length; Long createTime; Integer flag; Float xInterval; Float yMax; - String xUnit; - String yUnit; + Integer xUnit; + Integer yUnit; Integer k; - Integer num; - List wayList; + Integer m; + List wayList = new ArrayList<>(); + + public void readFrom(DataInputStream dis) throws Exception { + code = dis.read(); + length = dis.readInt(); + createTime = dis.readLong(); + flag = dis.read(); + xInterval = dis.readFloat(); + yMax = dis.readFloat(); + xUnit = dis.read(); + yUnit = dis.read(); + k = dis.readInt(); + m = dis.read(); + for (int i = 0; i < m; i++) { + YspWay way = new YspWay(); + way.readFrom(dis, k); + wayList.add(way); + } + } } diff --git a/src/main/java/com/xydl/cac/model/spectrogram/YspWay.java b/src/main/java/com/xydl/cac/model/spectrogram/YspWay.java index a2cbaf6..a3d7f64 100644 --- a/src/main/java/com/xydl/cac/model/spectrogram/YspWay.java +++ b/src/main/java/com/xydl/cac/model/spectrogram/YspWay.java @@ -2,11 +2,26 @@ package com.xydl.cac.model.spectrogram; import lombok.Data; +import java.io.DataInputStream; +import java.util.ArrayList; import java.util.List; @Data public class YspWay { - Integer count; - List humpList; - List valueList; + Integer n; + List humpList = new ArrayList<>(); + List valueList = new ArrayList<>(); + + public void readFrom(DataInputStream dis, Integer k) throws Exception { + n = dis.read(); + for (int i = 0; i < n; i++) { + YspWayHump hump = new YspWayHump(); + hump.readFrom(dis); + humpList.add(hump); + } + for (int i = 0; i < k; i++) { + Float v = dis.readFloat(); + valueList.add(v); + } + } } diff --git a/src/main/java/com/xydl/cac/model/spectrogram/YspWayHump.java b/src/main/java/com/xydl/cac/model/spectrogram/YspWayHump.java index 1c7359c..44c6643 100644 --- a/src/main/java/com/xydl/cac/model/spectrogram/YspWayHump.java +++ b/src/main/java/com/xydl/cac/model/spectrogram/YspWayHump.java @@ -2,13 +2,30 @@ package com.xydl.cac.model.spectrogram; import lombok.Data; +import java.io.DataInputStream; + @Data public class YspWayHump { String name; - Integer number; + Integer j; Float time; Float startTime; Float endTime; Float high; Float area; + + public void readFrom(DataInputStream dis) throws Exception { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 10; i++) { + char c = (char) dis.readByte(); + sb.append(c); + } + name = sb.toString(); + j = dis.read(); + time = dis.readFloat(); + startTime = dis.readFloat(); + endTime = dis.readFloat(); + high = dis.readFloat(); + area = dis.readFloat(); + } } diff --git a/src/main/java/com/xydl/cac/spectrogram/ProcessorYsp.java b/src/main/java/com/xydl/cac/spectrogram/ProcessorYsp.java index 07a03d5..af27b64 100644 --- a/src/main/java/com/xydl/cac/spectrogram/ProcessorYsp.java +++ b/src/main/java/com/xydl/cac/spectrogram/ProcessorYsp.java @@ -1,13 +1,34 @@ package com.xydl.cac.spectrogram; +import com.xydl.cac.model.spectrogram.YspModel; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.io.DataInputStream; +import java.io.FileInputStream; + @Service @Slf4j public class ProcessorYsp { - public void process(String localFilePath) { + public YspModel process(String localFilePath) { + try (DataInputStream dis = new DataInputStream(new FileInputStream(localFilePath))) { + YspModel model = this.readOneBlock(dis); + return model; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + private YspModel readOneBlock(DataInputStream dis) throws Exception { + YspModel model = new YspModel(); + model.readFrom(dis); + return model; + } + public static void main(String[] args) { + ProcessorYsp processorYsp = new ProcessorYsp(); + processorYsp.process("C:/Code/cac/谱图文件/0312B12000042A3840001_203_07_20250113163055.dat"); } } diff --git a/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java b/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java index 2b82d31..a1f9013 100644 --- a/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java +++ b/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java @@ -1,5 +1,6 @@ package com.xydl.cac.spectrogram; +import com.xydl.cac.model.spectrogram.SpectrogramModel; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -15,9 +16,10 @@ public class SpectrogramHandler { public void processFile(Integer typeId, String localFilePath) { // 油色谱谱图 if (typeId == 1) { - processorYsp.process(localFilePath); + SpectrogramModel model = processorYsp.process(localFilePath); } else { log.error("缺少该类型" + typeId + "的谱图处理模块"); } } + } From 4bd1c833d1d43e5a4ce427f5dd4ab025facfe2f8 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Wed, 19 Feb 2025 11:17:31 +0800 Subject: [PATCH 04/13] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=8D=97?= =?UTF-8?q?=E7=BD=91=E8=B0=B1=E5=9B=BE=E7=BB=93=E6=9E=84=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xydl/cac/model/spectrogram/SouthYsp.java | 52 +++++++++++++++++++ .../model/spectrogram/SouthYspChannel.java | 30 +++++++++++ .../spectrogram/{YspModel.java => Ysp.java} | 10 ++-- .../{YspWay.java => YspChannel.java} | 14 ++--- .../{YspWayHump.java => YspChannelCrest.java} | 6 +-- .../xydl/cac/spectrogram/ProcessorYsp.java | 12 ++--- 6 files changed, 103 insertions(+), 21 deletions(-) create mode 100644 src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java create mode 100644 src/main/java/com/xydl/cac/model/spectrogram/SouthYspChannel.java rename src/main/java/com/xydl/cac/model/spectrogram/{YspModel.java => Ysp.java} (77%) rename src/main/java/com/xydl/cac/model/spectrogram/{YspWay.java => YspChannel.java} (60%) rename src/main/java/com/xydl/cac/model/spectrogram/{YspWayHump.java => YspChannelCrest.java} (88%) diff --git a/src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java b/src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java new file mode 100644 index 0000000..0018ff5 --- /dev/null +++ b/src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java @@ -0,0 +1,52 @@ +package com.xydl.cac.model.spectrogram; + +import lombok.Data; + +import java.io.DataInputStream; +import java.util.ArrayList; +import java.util.List; + +@Data +public class SouthYsp extends SpectrogramModel { + Float version; + Float fileVersion; + Short type; + Long createTime; + Integer flag; + String name; + Float xInterval; + Float yMax; + Integer xUnit; + Integer yUnit; + Integer k; + Integer m; + List channels = new ArrayList<>(); + + public void readFrom(DataInputStream dis) throws Exception { + version = dis.readFloat(); + fileVersion = dis.readFloat(); + type = dis.readShort(); + createTime = dis.readLong(); + flag = dis.read(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 32; i++) { + char c = (char) dis.readByte(); + sb.append(c); + } + name = sb.toString(); + xInterval = dis.readFloat(); + yMax = dis.readFloat(); + xUnit = dis.read(); + yUnit = dis.read(); + k = dis.readInt(); + m = dis.read(); + for (int i = 0; i < m; i++) { + SouthYspChannel channel = new SouthYspChannel(); + channel.readFrom(dis); + channels.add(channel); + } + for (SouthYspChannel channel : channels) { + channel.readDataFrom(dis, k); + } + } +} diff --git a/src/main/java/com/xydl/cac/model/spectrogram/SouthYspChannel.java b/src/main/java/com/xydl/cac/model/spectrogram/SouthYspChannel.java new file mode 100644 index 0000000..06b09b1 --- /dev/null +++ b/src/main/java/com/xydl/cac/model/spectrogram/SouthYspChannel.java @@ -0,0 +1,30 @@ +package com.xydl.cac.model.spectrogram; + +import lombok.Data; + +import java.io.DataInputStream; +import java.util.ArrayList; +import java.util.List; + +@Data +public class SouthYspChannel { + Integer n; + List crests = new ArrayList<>(); + List data = new ArrayList<>(); + + public void readFrom(DataInputStream dis) throws Exception { + n = dis.read(); + for (int i = 0; i < n; i++) { + YspChannelCrest crest = new YspChannelCrest(); + crest.readFrom(dis); + crests.add(crest); + } + } + + public void readDataFrom(DataInputStream dis, Integer k) throws Exception { + for (int i = 0; i < k; i++) { + Float v = dis.readFloat(); + data.add(v); + } + } +} diff --git a/src/main/java/com/xydl/cac/model/spectrogram/YspModel.java b/src/main/java/com/xydl/cac/model/spectrogram/Ysp.java similarity index 77% rename from src/main/java/com/xydl/cac/model/spectrogram/YspModel.java rename to src/main/java/com/xydl/cac/model/spectrogram/Ysp.java index cab0d54..63fc00d 100644 --- a/src/main/java/com/xydl/cac/model/spectrogram/YspModel.java +++ b/src/main/java/com/xydl/cac/model/spectrogram/Ysp.java @@ -7,7 +7,7 @@ import java.util.ArrayList; import java.util.List; @Data -public class YspModel extends SpectrogramModel { +public class Ysp extends SpectrogramModel { Integer code; Integer length; Long createTime; @@ -18,7 +18,7 @@ public class YspModel extends SpectrogramModel { Integer yUnit; Integer k; Integer m; - List wayList = new ArrayList<>(); + List channels = new ArrayList<>(); public void readFrom(DataInputStream dis) throws Exception { code = dis.read(); @@ -32,9 +32,9 @@ public class YspModel extends SpectrogramModel { k = dis.readInt(); m = dis.read(); for (int i = 0; i < m; i++) { - YspWay way = new YspWay(); - way.readFrom(dis, k); - wayList.add(way); + YspChannel channel = new YspChannel(); + channel.readFrom(dis, k); + channels.add(channel); } } } diff --git a/src/main/java/com/xydl/cac/model/spectrogram/YspWay.java b/src/main/java/com/xydl/cac/model/spectrogram/YspChannel.java similarity index 60% rename from src/main/java/com/xydl/cac/model/spectrogram/YspWay.java rename to src/main/java/com/xydl/cac/model/spectrogram/YspChannel.java index a3d7f64..cd4512c 100644 --- a/src/main/java/com/xydl/cac/model/spectrogram/YspWay.java +++ b/src/main/java/com/xydl/cac/model/spectrogram/YspChannel.java @@ -7,21 +7,21 @@ import java.util.ArrayList; import java.util.List; @Data -public class YspWay { +public class YspChannel { Integer n; - List humpList = new ArrayList<>(); - List valueList = new ArrayList<>(); + List crests = new ArrayList<>(); + List data = new ArrayList<>(); public void readFrom(DataInputStream dis, Integer k) throws Exception { n = dis.read(); for (int i = 0; i < n; i++) { - YspWayHump hump = new YspWayHump(); - hump.readFrom(dis); - humpList.add(hump); + YspChannelCrest crest = new YspChannelCrest(); + crest.readFrom(dis); + crests.add(crest); } for (int i = 0; i < k; i++) { Float v = dis.readFloat(); - valueList.add(v); + data.add(v); } } } diff --git a/src/main/java/com/xydl/cac/model/spectrogram/YspWayHump.java b/src/main/java/com/xydl/cac/model/spectrogram/YspChannelCrest.java similarity index 88% rename from src/main/java/com/xydl/cac/model/spectrogram/YspWayHump.java rename to src/main/java/com/xydl/cac/model/spectrogram/YspChannelCrest.java index 44c6643..b4524f5 100644 --- a/src/main/java/com/xydl/cac/model/spectrogram/YspWayHump.java +++ b/src/main/java/com/xydl/cac/model/spectrogram/YspChannelCrest.java @@ -5,13 +5,13 @@ import lombok.Data; import java.io.DataInputStream; @Data -public class YspWayHump { +public class YspChannelCrest { String name; Integer j; Float time; Float startTime; Float endTime; - Float high; + Float height; Float area; public void readFrom(DataInputStream dis) throws Exception { @@ -25,7 +25,7 @@ public class YspWayHump { time = dis.readFloat(); startTime = dis.readFloat(); endTime = dis.readFloat(); - high = dis.readFloat(); + height = dis.readFloat(); area = dis.readFloat(); } } diff --git a/src/main/java/com/xydl/cac/spectrogram/ProcessorYsp.java b/src/main/java/com/xydl/cac/spectrogram/ProcessorYsp.java index af27b64..29c5fd0 100644 --- a/src/main/java/com/xydl/cac/spectrogram/ProcessorYsp.java +++ b/src/main/java/com/xydl/cac/spectrogram/ProcessorYsp.java @@ -1,6 +1,6 @@ package com.xydl.cac.spectrogram; -import com.xydl.cac.model.spectrogram.YspModel; +import com.xydl.cac.model.spectrogram.*; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -11,18 +11,18 @@ import java.io.FileInputStream; @Slf4j public class ProcessorYsp { - public YspModel process(String localFilePath) { + public SouthYsp process(String localFilePath) { try (DataInputStream dis = new DataInputStream(new FileInputStream(localFilePath))) { - YspModel model = this.readOneBlock(dis); + SouthYsp model = this.readOneBlock(dis); return model; } catch (Exception e) { - e.printStackTrace(); + log.error("解析文件失败" + localFilePath, e); return null; } } - private YspModel readOneBlock(DataInputStream dis) throws Exception { - YspModel model = new YspModel(); + private SouthYsp readOneBlock(DataInputStream dis) throws Exception { + SouthYsp model = new SouthYsp(); model.readFrom(dis); return model; } From eb318677abebd65bd4b42140d73161d14d5ca19f Mon Sep 17 00:00:00 2001 From: huangfeng Date: Fri, 21 Feb 2025 16:17:26 +0800 Subject: [PATCH 05/13] =?UTF-8?q?fix:=20=E6=94=B9=E7=94=A8=E5=B0=8F?= =?UTF-8?q?=E7=AB=AF=E5=AD=97=E8=8A=82=E5=BA=8F=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xydl/cac/model/spectrogram/SouthYsp.java | 22 ++++---- .../model/spectrogram/SouthYspChannel.java | 4 +- .../model/spectrogram/SpectrogramModel.java | 50 +++++++++++++++++++ .../com/xydl/cac/model/spectrogram/Ysp.java | 10 ++-- .../cac/model/spectrogram/YspChannel.java | 4 +- .../model/spectrogram/YspChannelCrest.java | 19 +++---- 6 files changed, 78 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java b/src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java index 0018ff5..0b6e0ae 100644 --- a/src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java +++ b/src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java @@ -23,28 +23,24 @@ public class SouthYsp extends SpectrogramModel { List channels = new ArrayList<>(); public void readFrom(DataInputStream dis) throws Exception { - version = dis.readFloat(); - fileVersion = dis.readFloat(); - type = dis.readShort(); - createTime = dis.readLong(); + version = readLittleEndianFloat(dis); + fileVersion = readLittleEndianFloat(dis); + type = readLittleEndianShort(dis); + createTime = readLittleEndianLong(dis); flag = dis.read(); - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < 32; i++) { - char c = (char) dis.readByte(); - sb.append(c); - } - name = sb.toString(); - xInterval = dis.readFloat(); - yMax = dis.readFloat(); + name = readString(dis, 32); + xInterval = readLittleEndianFloat(dis); + yMax = readLittleEndianFloat(dis); xUnit = dis.read(); yUnit = dis.read(); - k = dis.readInt(); + k = readLittleEndianInt(dis); m = dis.read(); for (int i = 0; i < m; i++) { SouthYspChannel channel = new SouthYspChannel(); channel.readFrom(dis); channels.add(channel); } + dis.readInt(); for (SouthYspChannel channel : channels) { channel.readDataFrom(dis, k); } diff --git a/src/main/java/com/xydl/cac/model/spectrogram/SouthYspChannel.java b/src/main/java/com/xydl/cac/model/spectrogram/SouthYspChannel.java index 06b09b1..f2a5174 100644 --- a/src/main/java/com/xydl/cac/model/spectrogram/SouthYspChannel.java +++ b/src/main/java/com/xydl/cac/model/spectrogram/SouthYspChannel.java @@ -6,6 +6,8 @@ import java.io.DataInputStream; import java.util.ArrayList; import java.util.List; +import static com.xydl.cac.model.spectrogram.SpectrogramModel.readLittleEndianFloat; + @Data public class SouthYspChannel { Integer n; @@ -23,7 +25,7 @@ public class SouthYspChannel { public void readDataFrom(DataInputStream dis, Integer k) throws Exception { for (int i = 0; i < k; i++) { - Float v = dis.readFloat(); + Float v = readLittleEndianFloat(dis); data.add(v); } } diff --git a/src/main/java/com/xydl/cac/model/spectrogram/SpectrogramModel.java b/src/main/java/com/xydl/cac/model/spectrogram/SpectrogramModel.java index 2b861d7..1e09fba 100644 --- a/src/main/java/com/xydl/cac/model/spectrogram/SpectrogramModel.java +++ b/src/main/java/com/xydl/cac/model/spectrogram/SpectrogramModel.java @@ -2,6 +2,56 @@ package com.xydl.cac.model.spectrogram; import lombok.Data; +import java.io.DataInputStream; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; + @Data public class SpectrogramModel { + + // 读取小端序的int(4字节) + public static int readLittleEndianInt(DataInputStream dis) throws IOException { + byte[] bytes = new byte[4]; + dis.readFully(bytes); + return ByteBuffer.wrap(bytes) + .order(ByteOrder.LITTLE_ENDIAN) + .getInt(); + } + + // 读取小端序的short(2字节) + public static short readLittleEndianShort(DataInputStream dis) throws IOException { + byte[] bytes = new byte[2]; + dis.readFully(bytes); + return ByteBuffer.wrap(bytes) + .order(ByteOrder.LITTLE_ENDIAN) + .getShort(); + } + + // 读取小端序的long(8字节) + public static long readLittleEndianLong(DataInputStream dis) throws IOException { + byte[] bytes = new byte[8]; + dis.readFully(bytes); + return ByteBuffer.wrap(bytes) + .order(ByteOrder.LITTLE_ENDIAN) + .getLong(); + } + + // 读取小端序的float(4字节) + public static float readLittleEndianFloat(DataInputStream dis) throws IOException { + byte[] bytes = new byte[4]; + dis.readFully(bytes); + return ByteBuffer.wrap(bytes) + .order(ByteOrder.LITTLE_ENDIAN) + .getFloat(); + } + + // 读取String + public static String readString(DataInputStream dis, int length) throws IOException { + byte[] bytes = new byte[length]; + dis.readFully(bytes); + String str = new String(bytes, StandardCharsets.UTF_8); + return str.replaceAll("\\u0000", ""); + } } diff --git a/src/main/java/com/xydl/cac/model/spectrogram/Ysp.java b/src/main/java/com/xydl/cac/model/spectrogram/Ysp.java index 63fc00d..2d168ab 100644 --- a/src/main/java/com/xydl/cac/model/spectrogram/Ysp.java +++ b/src/main/java/com/xydl/cac/model/spectrogram/Ysp.java @@ -22,14 +22,14 @@ public class Ysp extends SpectrogramModel { public void readFrom(DataInputStream dis) throws Exception { code = dis.read(); - length = dis.readInt(); - createTime = dis.readLong(); + length = readLittleEndianInt(dis); + createTime = readLittleEndianLong(dis); flag = dis.read(); - xInterval = dis.readFloat(); - yMax = dis.readFloat(); + xInterval = readLittleEndianFloat(dis); + yMax = readLittleEndianFloat(dis); xUnit = dis.read(); yUnit = dis.read(); - k = dis.readInt(); + k = readLittleEndianInt(dis); m = dis.read(); for (int i = 0; i < m; i++) { YspChannel channel = new YspChannel(); diff --git a/src/main/java/com/xydl/cac/model/spectrogram/YspChannel.java b/src/main/java/com/xydl/cac/model/spectrogram/YspChannel.java index cd4512c..c73a52e 100644 --- a/src/main/java/com/xydl/cac/model/spectrogram/YspChannel.java +++ b/src/main/java/com/xydl/cac/model/spectrogram/YspChannel.java @@ -6,6 +6,8 @@ import java.io.DataInputStream; import java.util.ArrayList; import java.util.List; +import static com.xydl.cac.model.spectrogram.SpectrogramModel.readLittleEndianFloat; + @Data public class YspChannel { Integer n; @@ -20,7 +22,7 @@ public class YspChannel { crests.add(crest); } for (int i = 0; i < k; i++) { - Float v = dis.readFloat(); + Float v = readLittleEndianFloat(dis); data.add(v); } } diff --git a/src/main/java/com/xydl/cac/model/spectrogram/YspChannelCrest.java b/src/main/java/com/xydl/cac/model/spectrogram/YspChannelCrest.java index b4524f5..d167bbc 100644 --- a/src/main/java/com/xydl/cac/model/spectrogram/YspChannelCrest.java +++ b/src/main/java/com/xydl/cac/model/spectrogram/YspChannelCrest.java @@ -4,6 +4,8 @@ import lombok.Data; import java.io.DataInputStream; +import static com.xydl.cac.model.spectrogram.SpectrogramModel.*; + @Data public class YspChannelCrest { String name; @@ -15,17 +17,12 @@ public class YspChannelCrest { Float area; public void readFrom(DataInputStream dis) throws Exception { - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < 10; i++) { - char c = (char) dis.readByte(); - sb.append(c); - } - name = sb.toString(); + name = readString(dis, 10); j = dis.read(); - time = dis.readFloat(); - startTime = dis.readFloat(); - endTime = dis.readFloat(); - height = dis.readFloat(); - area = dis.readFloat(); + time = readLittleEndianFloat(dis); + startTime = readLittleEndianFloat(dis); + endTime = readLittleEndianFloat(dis); + height = readLittleEndianFloat(dis); + area = readLittleEndianFloat(dis); } } From 6127aee14b935358d285cc34a13fb607064b3eda Mon Sep 17 00:00:00 2001 From: huangfeng Date: Fri, 21 Feb 2025 16:22:55 +0800 Subject: [PATCH 06/13] fix --- .../java/com/xydl/cac/model/spectrogram/SpectrogramModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/xydl/cac/model/spectrogram/SpectrogramModel.java b/src/main/java/com/xydl/cac/model/spectrogram/SpectrogramModel.java index 1e09fba..02997fe 100644 --- a/src/main/java/com/xydl/cac/model/spectrogram/SpectrogramModel.java +++ b/src/main/java/com/xydl/cac/model/spectrogram/SpectrogramModel.java @@ -52,6 +52,6 @@ public class SpectrogramModel { byte[] bytes = new byte[length]; dis.readFully(bytes); String str = new String(bytes, StandardCharsets.UTF_8); - return str.replaceAll("\\u0000", ""); + return str.replaceAll("\u0000", ""); } } From 4b1ee47a26dbdf86210165e70cabebc96b9882a7 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Mon, 24 Feb 2025 09:57:42 +0800 Subject: [PATCH 07/13] =?UTF-8?q?feat:=20=E9=87=87=E9=9B=86=E7=9A=84?= =?UTF-8?q?=E8=B0=B1=E5=9B=BE=E6=96=87=E4=BB=B6=E8=A7=A3=E6=9E=90=E5=90=8E?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=85=A5=E5=BA=93=EF=BC=8C=E5=B9=B6=E5=8F=AF?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=87=BA=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/谱图202501.sql | 7 ++- .../java/com/xydl/cac/entity/IedDlRecord.java | 7 +++ .../xydl/cac/entity/constants/Constants.java | 2 + .../com/xydl/cac/iec/IEDCollectService.java | 16 ++----- .../service/impl/IedDlRecordServiceImpl.java | 4 ++ .../cac/spectrogram/SpectrogramHandler.java | 47 ++++++++++++++++--- 6 files changed, 63 insertions(+), 20 deletions(-) diff --git a/db/谱图202501.sql b/db/谱图202501.sql index 7dad034..8f43ba3 100644 --- a/db/谱图202501.sql +++ b/db/谱图202501.sql @@ -1,6 +1,9 @@ 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`; +ADD COLUMN `type_id` INT(11) NULL DEFAULT NULL COMMENT '类型id' AFTER `dev_id`, +ADD COLUMN `data` MEDIUMTEXT NULL AFTER `type_id`; ALTER TABLE `ied_dl_record` -ADD INDEX `idx` (`dev_id` ASC, `create_time` ASC); \ No newline at end of file +ADD INDEX `idxDev` (`dev_id` ASC, `create_time` ASC); +ALTER TABLE `ied_dl_record` +ADD INDEX `idxConfig` (`config_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 563f08e..b4b6aab 100644 --- a/src/main/java/com/xydl/cac/entity/IedDlRecord.java +++ b/src/main/java/com/xydl/cac/entity/IedDlRecord.java @@ -1,6 +1,7 @@ package com.xydl.cac.entity; import com.fasterxml.jackson.annotation.JsonInclude; +import com.xydl.cac.model.spectrogram.SpectrogramModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; @@ -50,11 +51,17 @@ public class IedDlRecord { @Column(name = "dev_id") private Integer devId; + @ApiModelProperty("typeId") + @Column(name = "type_id") + private Integer typeId; + @ApiModelProperty("解析后数据") @Column(name = "data") private String data; @Transient IedDlConfig config; + @Transient + SpectrogramModel model; } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/entity/constants/Constants.java b/src/main/java/com/xydl/cac/entity/constants/Constants.java index 8e32afc..a73df99 100644 --- a/src/main/java/com/xydl/cac/entity/constants/Constants.java +++ b/src/main/java/com/xydl/cac/entity/constants/Constants.java @@ -16,4 +16,6 @@ public class Constants { public static String FloatCompare = "float"; public static String IntCompare = "int"; public static String MissCompare = "miss"; + + public static final Integer TypeYSP = 1; } diff --git a/src/main/java/com/xydl/cac/iec/IEDCollectService.java b/src/main/java/com/xydl/cac/iec/IEDCollectService.java index 01cc033..5c7cfd8 100644 --- a/src/main/java/com/xydl/cac/iec/IEDCollectService.java +++ b/src/main/java/com/xydl/cac/iec/IEDCollectService.java @@ -217,17 +217,19 @@ public class IEDCollectService { IedDlRecord record = new IedDlRecord(); record.setConfigId(config.getId()); record.setDevId(config.getDevId()); + record.setTypeId(config.getSensor().getTypeId()); record.setFilename(filename); record.setRemotePath(config.getPath() + filename); boolean exist = _dlRecordService.exist(record); if (!exist) { String relativePath = localPath + "/" + filename; - iecClient.getFile(record.getRemotePath(), _bizConfig.getDatapath() + relativePath, config.getTodel()); + String localFullPath = _bizConfig.getDatapath() + relativePath; + iecClient.getFile(record.getRemotePath(), localFullPath, 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); + _spectrogramHandler.processFile(record, localFullPath); + _dlRecordService.add(record); } } } @@ -243,14 +245,6 @@ 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/impl/IedDlRecordServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/IedDlRecordServiceImpl.java index dfc5cc1..c1e8589 100644 --- a/src/main/java/com/xydl/cac/service/impl/IedDlRecordServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/IedDlRecordServiceImpl.java @@ -5,6 +5,7 @@ import com.xydl.cac.entity.IedDlRecord; import com.xydl.cac.repository.IedDlRecordRepository; import com.xydl.cac.service.IedDlConfigService; import com.xydl.cac.service.IedDlRecordService; +import com.xydl.cac.spectrogram.SpectrogramHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -26,6 +27,8 @@ public class IedDlRecordServiceImpl implements IedDlRecordService { IedDlRecordRepository repository; @Resource IedDlConfigService configService; + @Resource + SpectrogramHandler spectrogramHandler; @Override public Page list(Integer configId, int pageNum, int pageSize) throws Exception { @@ -48,6 +51,7 @@ public class IedDlRecordServiceImpl implements IedDlRecordService { break; } } + spectrogramHandler.jsonToModel(item); } } return result; diff --git a/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java b/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java index a1f9013..565227f 100644 --- a/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java +++ b/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java @@ -1,6 +1,9 @@ package com.xydl.cac.spectrogram; -import com.xydl.cac.model.spectrogram.SpectrogramModel; +import com.xydl.cac.entity.IedDlRecord; +import com.xydl.cac.entity.constants.Constants; +import com.xydl.cac.model.spectrogram.SouthYsp; +import com.xydl.cac.util.JSONUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -13,12 +16,42 @@ public class SpectrogramHandler { @Resource ProcessorYsp processorYsp; - public void processFile(Integer typeId, String localFilePath) { - // 油色谱谱图 - if (typeId == 1) { - SpectrogramModel model = processorYsp.process(localFilePath); - } else { - log.error("缺少该类型" + typeId + "的谱图处理模块"); + public void processFile(IedDlRecord record, String localFilePath) { + if (record.getTypeId() == null) { + return; + } + try { + // 油色谱谱图 + if (record.getTypeId() == Constants.TypeYSP) { + SouthYsp model = processorYsp.process(localFilePath); + String json = JSONUtil.object2Json(model); + record.setData(json); + log.info("解析油色谱谱图文件成功"); + } else { + log.error("缺少该类型" + record.getTypeId() + "的谱图处理模块"); + } + } catch (Exception ex) { + log.error("解析谱图文件失败, typeId=" + record.getTypeId() + ", devId=" + record.getDevId() + + ", file=" + localFilePath, ex); + } + } + + public void jsonToModel(IedDlRecord record) { + if (record.getTypeId() == null) { + return; + } + if (record.getData() == null) { + return; + } + try { + if (Constants.TypeYSP == record.getTypeId()) { + SouthYsp model = JSONUtil.json2Object(record.getData(), SouthYsp.class); + record.setModel(model); + record.setData(null); + } + } catch (Exception ex) { + log.error("谱图数据data内容存在异常, typeId=" + record.getTypeId() + ", devId=" + record.getDevId() + + ", file=" + record.getPath()); } } From 7e1c476c1b372c6af376b19b395092b69736d5c8 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Mon, 24 Feb 2025 11:13:15 +0800 Subject: [PATCH 08/13] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E8=AF=BB?= =?UTF-8?q?=E5=8F=96=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/model/spectrogram/SouthYsp.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java b/src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java index 0b6e0ae..284bfee 100644 --- a/src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java +++ b/src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java @@ -16,8 +16,8 @@ public class SouthYsp extends SpectrogramModel { String name; Float xInterval; Float yMax; - Integer xUnit; - Integer yUnit; + String xUnit; + String yUnit; Integer k; Integer m; List channels = new ArrayList<>(); @@ -31,8 +31,8 @@ public class SouthYsp extends SpectrogramModel { name = readString(dis, 32); xInterval = readLittleEndianFloat(dis); yMax = readLittleEndianFloat(dis); - xUnit = dis.read(); - yUnit = dis.read(); + xUnit = readString(dis, 1); + yUnit = readString(dis, 1); k = readLittleEndianInt(dis); m = dis.read(); for (int i = 0; i < m; i++) { From 1c1a543405b62ac4611b40752bb0cc69f67a718e Mon Sep 17 00:00:00 2001 From: huangfeng Date: Mon, 24 Feb 2025 11:55:40 +0800 Subject: [PATCH 09/13] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E8=AF=BB?= =?UTF-8?q?=E5=8F=96=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java b/src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java index 284bfee..b8547cd 100644 --- a/src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java +++ b/src/main/java/com/xydl/cac/model/spectrogram/SouthYsp.java @@ -12,7 +12,7 @@ public class SouthYsp extends SpectrogramModel { Float fileVersion; Short type; Long createTime; - Integer flag; + String flag; String name; Float xInterval; Float yMax; @@ -27,7 +27,7 @@ public class SouthYsp extends SpectrogramModel { fileVersion = readLittleEndianFloat(dis); type = readLittleEndianShort(dis); createTime = readLittleEndianLong(dis); - flag = dis.read(); + flag = readString(dis, 1); name = readString(dis, 32); xInterval = readLittleEndianFloat(dis); yMax = readLittleEndianFloat(dis); From 640955b151fe7e0fe6fa437f57cbdff72f96ac56 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Mon, 24 Feb 2025 15:43:25 +0800 Subject: [PATCH 10/13] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E6=8C=89?= =?UTF-8?q?=E8=A3=85=E7=BD=AE=E6=9F=A5=E8=AF=A2=E8=B0=B1=E5=9B=BE=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/controller/IedDlController.java | 5 +++-- .../java/com/xydl/cac/service/IedDlRecordService.java | 2 +- .../xydl/cac/service/impl/IedDlRecordServiceImpl.java | 9 +++++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/xydl/cac/controller/IedDlController.java b/src/main/java/com/xydl/cac/controller/IedDlController.java index a257384..9526783 100644 --- a/src/main/java/com/xydl/cac/controller/IedDlController.java +++ b/src/main/java/com/xydl/cac/controller/IedDlController.java @@ -66,12 +66,13 @@ public class IedDlController extends BasicController { @GetMapping("listDownload") @ApiOperation("查询下载记录列表") - public Response> list(@ApiParam("类型") @RequestParam(value = "configId", required = false) Integer configId, + public Response> list(@ApiParam("配置Id") @RequestParam(value = "configId", required = false) Integer configId, + @ApiParam("devId") @RequestParam(value = "devId", required = false) Integer devId, @ApiParam("页码") @RequestParam(value = "pageNum", required = false) Integer pageNum, @ApiParam("每页数量") @RequestParam(value = "pageSize", required = false) Integer pageSize) throws Exception { pageNum = this.initPageNum(pageNum); pageSize = this.initPageSize(pageSize); - Page result = recordService.list(configId, pageNum, pageSize); + Page result = recordService.list(configId, devId, pageNum, pageSize); return Response.success(result); } diff --git a/src/main/java/com/xydl/cac/service/IedDlRecordService.java b/src/main/java/com/xydl/cac/service/IedDlRecordService.java index a2e0901..658a42a 100644 --- a/src/main/java/com/xydl/cac/service/IedDlRecordService.java +++ b/src/main/java/com/xydl/cac/service/IedDlRecordService.java @@ -5,7 +5,7 @@ import org.springframework.data.domain.Page; public interface IedDlRecordService { - Page list(Integer configId, int pageNum, int pageSize) throws Exception; + Page list(Integer configId, Integer devId, int pageNum, int pageSize) throws Exception; void add(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 c1e8589..6256300 100644 --- a/src/main/java/com/xydl/cac/service/impl/IedDlRecordServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/IedDlRecordServiceImpl.java @@ -31,14 +31,19 @@ public class IedDlRecordServiceImpl implements IedDlRecordService { SpectrogramHandler spectrogramHandler; @Override - public Page list(Integer configId, int pageNum, int pageSize) throws Exception { + public Page list(Integer configId, Integer devId, int pageNum, int pageSize) throws Exception { PageRequest request = PageRequest.of(pageNum - 1, pageSize); Specification specification = (root, query, builder) -> { Predicate predicate = builder.conjunction(); if (configId != null) { predicate.getExpressions().add(builder.equal(root.get("configId"), configId)); + query.orderBy(builder.desc(root.get("createTime"))); + } else if (devId != null) { + predicate.getExpressions().add(builder.equal(root.get("devId"), devId)); + query.orderBy(builder.desc(root.get("createTime"))); + } else { + query.orderBy(builder.desc(root.get("id"))); } - query.orderBy(builder.desc(root.get("id"))); return predicate; }; Page result = repository.findAll(specification, request); From ecd9cb67094852c271f7797c3a6059ba61d65c9e Mon Sep 17 00:00:00 2001 From: huangfeng Date: Tue, 25 Feb 2025 10:13:43 +0800 Subject: [PATCH 11/13] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E4=BA=8C?= =?UTF-8?q?=E6=AC=A1=E8=A7=A3=E6=9E=90=E8=B0=B1=E5=9B=BE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xydl/cac/controller/IedDlController.java | 10 ++++++++++ .../java/com/xydl/cac/iec/IEDCollectService.java | 2 +- .../com/xydl/cac/service/IedDlRecordService.java | 3 +++ .../cac/service/impl/IedDlRecordServiceImpl.java | 13 +++++++++++++ .../xydl/cac/spectrogram/SpectrogramHandler.java | 6 +++++- 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/xydl/cac/controller/IedDlController.java b/src/main/java/com/xydl/cac/controller/IedDlController.java index 9526783..ec675c0 100644 --- a/src/main/java/com/xydl/cac/controller/IedDlController.java +++ b/src/main/java/com/xydl/cac/controller/IedDlController.java @@ -76,6 +76,16 @@ public class IedDlController extends BasicController { return Response.success(result); } + @PostMapping("rebuildData") + @ApiOperation("rebuildData") + public Response rebuildData(@Validated @NotNull(message = "id不能为空!") Integer id) throws Exception { + if (id == null) { + throw new BusinessException("id不能为空!"); + } + recordService.rebuildData(id); + return Response.success("OK"); + } + @GetMapping("listFiles") @ApiOperation("查询文件和目录") public Response> listFiles(Integer iedId, String path) throws Exception { diff --git a/src/main/java/com/xydl/cac/iec/IEDCollectService.java b/src/main/java/com/xydl/cac/iec/IEDCollectService.java index 5c7cfd8..b2965a5 100644 --- a/src/main/java/com/xydl/cac/iec/IEDCollectService.java +++ b/src/main/java/com/xydl/cac/iec/IEDCollectService.java @@ -228,7 +228,7 @@ public class IEDCollectService { record.setPath(_bizConfig.getDataNginxPath() + relativePath); record.setCreateTime(new Date()); log.info("采集到" + record.getRemotePath()); - _spectrogramHandler.processFile(record, localFullPath); + _spectrogramHandler.processFile(record); _dlRecordService.add(record); } } diff --git a/src/main/java/com/xydl/cac/service/IedDlRecordService.java b/src/main/java/com/xydl/cac/service/IedDlRecordService.java index 658a42a..0597284 100644 --- a/src/main/java/com/xydl/cac/service/IedDlRecordService.java +++ b/src/main/java/com/xydl/cac/service/IedDlRecordService.java @@ -1,6 +1,7 @@ package com.xydl.cac.service; import com.xydl.cac.entity.IedDlRecord; +import com.xydl.cac.exception.BusinessException; import org.springframework.data.domain.Page; public interface IedDlRecordService { @@ -12,4 +13,6 @@ public interface IedDlRecordService { boolean exist(IedDlRecord item); void update(IedDlRecord item); + + void rebuildData(Integer id) throws BusinessException; } 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 6256300..08e2645 100644 --- a/src/main/java/com/xydl/cac/service/impl/IedDlRecordServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/IedDlRecordServiceImpl.java @@ -2,6 +2,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.IedDlConfig; import com.xydl.cac.entity.IedDlRecord; +import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.IedDlRecordRepository; import com.xydl.cac.service.IedDlConfigService; import com.xydl.cac.service.IedDlRecordService; @@ -17,6 +18,7 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import javax.persistence.criteria.Predicate; import java.util.List; +import java.util.Optional; @Service @Slf4j @@ -83,4 +85,15 @@ public class IedDlRecordServiceImpl implements IedDlRecordService { repository.save(item); } + @Override + public void rebuildData(Integer id) throws BusinessException { + Optional optional = repository.findById(id); + if (!optional.isPresent()) { + throw new BusinessException("未找到该记录"); + } + IedDlRecord record = optional.get(); + spectrogramHandler.processFile(record); + repository.save(record); + } + } diff --git a/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java b/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java index 565227f..af604ea 100644 --- a/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java +++ b/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java @@ -1,5 +1,6 @@ package com.xydl.cac.spectrogram; +import com.xydl.cac.config.BizConfig; import com.xydl.cac.entity.IedDlRecord; import com.xydl.cac.entity.constants.Constants; import com.xydl.cac.model.spectrogram.SouthYsp; @@ -13,13 +14,16 @@ import javax.annotation.Resource; @Slf4j public class SpectrogramHandler { + @Resource + BizConfig bizConfig; @Resource ProcessorYsp processorYsp; - public void processFile(IedDlRecord record, String localFilePath) { + public void processFile(IedDlRecord record) { if (record.getTypeId() == null) { return; } + String localFilePath = record.getPath().replaceFirst(bizConfig.getDataNginxPath(), bizConfig.getDatapath()); try { // 油色谱谱图 if (record.getTypeId() == Constants.TypeYSP) { From 8e5f2252675c9af9e633f4963b79ab78cc4d41d4 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Tue, 25 Feb 2025 10:41:12 +0800 Subject: [PATCH 12/13] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=BC=80?= =?UTF-8?q?=E5=A7=8B=E6=97=B6=E9=97=B4=E7=BB=93=E6=9D=9F=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xydl/cac/controller/IedDlController.java | 5 ++++- .../java/com/xydl/cac/service/IedDlRecordService.java | 4 +++- .../xydl/cac/service/impl/IedDlRecordServiceImpl.java | 11 ++++++++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/xydl/cac/controller/IedDlController.java b/src/main/java/com/xydl/cac/controller/IedDlController.java index ec675c0..c6e3b64 100644 --- a/src/main/java/com/xydl/cac/controller/IedDlController.java +++ b/src/main/java/com/xydl/cac/controller/IedDlController.java @@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.constraints.NotNull; +import java.util.Date; import java.util.List; @RestController @@ -68,11 +69,13 @@ public class IedDlController extends BasicController { @ApiOperation("查询下载记录列表") public Response> list(@ApiParam("配置Id") @RequestParam(value = "configId", required = false) Integer configId, @ApiParam("devId") @RequestParam(value = "devId", required = false) Integer devId, + @ApiParam("开始时间") @RequestParam(value = "startTime", required = false) Date startTime, + @ApiParam("结束时间") @RequestParam(value = "endTime", required = false) Date endTime, @ApiParam("页码") @RequestParam(value = "pageNum", required = false) Integer pageNum, @ApiParam("每页数量") @RequestParam(value = "pageSize", required = false) Integer pageSize) throws Exception { pageNum = this.initPageNum(pageNum); pageSize = this.initPageSize(pageSize); - Page result = recordService.list(configId, devId, pageNum, pageSize); + Page result = recordService.list(configId, devId, startTime, endTime, pageNum, pageSize); return Response.success(result); } diff --git a/src/main/java/com/xydl/cac/service/IedDlRecordService.java b/src/main/java/com/xydl/cac/service/IedDlRecordService.java index 0597284..95c754d 100644 --- a/src/main/java/com/xydl/cac/service/IedDlRecordService.java +++ b/src/main/java/com/xydl/cac/service/IedDlRecordService.java @@ -4,9 +4,11 @@ import com.xydl.cac.entity.IedDlRecord; import com.xydl.cac.exception.BusinessException; import org.springframework.data.domain.Page; +import java.util.Date; + public interface IedDlRecordService { - Page list(Integer configId, Integer devId, int pageNum, int pageSize) throws Exception; + Page list(Integer configId, Integer devId, Date startTime, Date endTime, int pageNum, int pageSize) throws Exception; void add(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 08e2645..b9fffd6 100644 --- a/src/main/java/com/xydl/cac/service/impl/IedDlRecordServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/IedDlRecordServiceImpl.java @@ -12,17 +12,16 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import javax.persistence.criteria.Predicate; +import java.util.Date; import java.util.List; import java.util.Optional; @Service @Slf4j -@Transactional(rollbackFor = Exception.class) public class IedDlRecordServiceImpl implements IedDlRecordService { @Resource @@ -33,7 +32,7 @@ public class IedDlRecordServiceImpl implements IedDlRecordService { SpectrogramHandler spectrogramHandler; @Override - public Page list(Integer configId, Integer devId, int pageNum, int pageSize) throws Exception { + public Page list(Integer configId, Integer devId, Date startTime, Date endTime, int pageNum, int pageSize) throws Exception { PageRequest request = PageRequest.of(pageNum - 1, pageSize); Specification specification = (root, query, builder) -> { Predicate predicate = builder.conjunction(); @@ -46,6 +45,12 @@ public class IedDlRecordServiceImpl implements IedDlRecordService { } else { query.orderBy(builder.desc(root.get("id"))); } + if (startTime != null) { + predicate.getExpressions().add(builder.greaterThan(root.get("createTime"), startTime)); + } + if (endTime != null) { + predicate.getExpressions().add(builder.lessThanOrEqualTo(root.get("createTime"), endTime)); + } return predicate; }; Page result = repository.findAll(specification, request); From d9dcc76d623fb3ff68e159241d505c96c7485b9e Mon Sep 17 00:00:00 2001 From: huangfeng Date: Thu, 27 Feb 2025 11:18:34 +0800 Subject: [PATCH 13/13] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E9=87=87?= =?UTF-8?q?=E9=9B=86=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/upgrade20250227.sql | 17 +++++++++++++++++ db/谱图202501.sql | 9 --------- .../java/com/xydl/cac/entity/IedDlRecord.java | 6 ++++-- .../com/xydl/cac/iec/IEDCollectService.java | 1 - .../service/impl/IedDlRecordServiceImpl.java | 8 ++++---- .../cac/spectrogram/SpectrogramHandler.java | 10 ++++++++++ 6 files changed, 35 insertions(+), 16 deletions(-) create mode 100644 db/upgrade20250227.sql delete mode 100644 db/谱图202501.sql diff --git a/db/upgrade20250227.sql b/db/upgrade20250227.sql new file mode 100644 index 0000000..e991d58 --- /dev/null +++ b/db/upgrade20250227.sql @@ -0,0 +1,17 @@ +DROP TABLE IF EXISTS `ied_dl_record`; + +CREATE TABLE `ied_dl_record` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `config_id` int(11) DEFAULT NULL, + `remote_path` varchar(200) DEFAULT NULL COMMENT '源路径', + `filename` varchar(200) DEFAULT NULL COMMENT '文件名', + `path` varchar(200) DEFAULT NULL COMMENT '本地路径', + `create_time` datetime DEFAULT NULL, + `d_time` datetime DEFAULT NULL, + `dev_id` int(11) DEFAULT NULL COMMENT '装置ID', + `type_id` int(11) DEFAULT NULL COMMENT '类型id', + `data` mediumtext, + PRIMARY KEY (`id`), + KEY `idxDev` (`dev_id`,`d_time`), + KEY `idxConfig` (`config_id`,`d_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; diff --git a/db/谱图202501.sql b/db/谱图202501.sql deleted file mode 100644 index 8f43ba3..0000000 --- a/db/谱图202501.sql +++ /dev/null @@ -1,9 +0,0 @@ -ALTER TABLE `ied_dl_record` -ADD COLUMN `dev_id` INT(11) NULL DEFAULT NULL COMMENT '装置ID' AFTER `create_time`, -ADD COLUMN `type_id` INT(11) NULL DEFAULT NULL COMMENT '类型id' AFTER `dev_id`, -ADD COLUMN `data` MEDIUMTEXT NULL AFTER `type_id`; - -ALTER TABLE `ied_dl_record` -ADD INDEX `idxDev` (`dev_id` ASC, `create_time` ASC); -ALTER TABLE `ied_dl_record` -ADD INDEX `idxConfig` (`config_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 b4b6aab..e16b61f 100644 --- a/src/main/java/com/xydl/cac/entity/IedDlRecord.java +++ b/src/main/java/com/xydl/cac/entity/IedDlRecord.java @@ -1,6 +1,5 @@ package com.xydl.cac.entity; -import com.fasterxml.jackson.annotation.JsonInclude; import com.xydl.cac.model.spectrogram.SpectrogramModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -12,7 +11,6 @@ import lombok.NoArgsConstructor; import javax.persistence.*; import java.util.Date; -@JsonInclude(JsonInclude.Include.NON_NULL) @Data @Builder @AllArgsConstructor @@ -43,6 +41,10 @@ public class IedDlRecord { @Column(name = "filename") private String filename; + @ApiModelProperty("采集时间") + @Column(name = "d_time") + private Date dTime; + @ApiModelProperty("创建时间") @Column(name = "create_time") private Date createTime; diff --git a/src/main/java/com/xydl/cac/iec/IEDCollectService.java b/src/main/java/com/xydl/cac/iec/IEDCollectService.java index b2965a5..ba5a2dc 100644 --- a/src/main/java/com/xydl/cac/iec/IEDCollectService.java +++ b/src/main/java/com/xydl/cac/iec/IEDCollectService.java @@ -226,7 +226,6 @@ public class IEDCollectService { String localFullPath = _bizConfig.getDatapath() + relativePath; iecClient.getFile(record.getRemotePath(), localFullPath, config.getTodel()); record.setPath(_bizConfig.getDataNginxPath() + relativePath); - record.setCreateTime(new Date()); log.info("采集到" + record.getRemotePath()); _spectrogramHandler.processFile(record); _dlRecordService.add(record); 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 b9fffd6..a144c92 100644 --- a/src/main/java/com/xydl/cac/service/impl/IedDlRecordServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/IedDlRecordServiceImpl.java @@ -38,18 +38,18 @@ public class IedDlRecordServiceImpl implements IedDlRecordService { Predicate predicate = builder.conjunction(); if (configId != null) { predicate.getExpressions().add(builder.equal(root.get("configId"), configId)); - query.orderBy(builder.desc(root.get("createTime"))); + query.orderBy(builder.desc(root.get("dTime"))); } else if (devId != null) { predicate.getExpressions().add(builder.equal(root.get("devId"), devId)); - query.orderBy(builder.desc(root.get("createTime"))); + query.orderBy(builder.desc(root.get("dTime"))); } else { query.orderBy(builder.desc(root.get("id"))); } if (startTime != null) { - predicate.getExpressions().add(builder.greaterThan(root.get("createTime"), startTime)); + predicate.getExpressions().add(builder.greaterThan(root.get("dTime"), startTime)); } if (endTime != null) { - predicate.getExpressions().add(builder.lessThanOrEqualTo(root.get("createTime"), endTime)); + predicate.getExpressions().add(builder.lessThanOrEqualTo(root.get("dTime"), endTime)); } return predicate; }; diff --git a/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java b/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java index af604ea..559df49 100644 --- a/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java +++ b/src/main/java/com/xydl/cac/spectrogram/SpectrogramHandler.java @@ -4,11 +4,14 @@ import com.xydl.cac.config.BizConfig; import com.xydl.cac.entity.IedDlRecord; import com.xydl.cac.entity.constants.Constants; import com.xydl.cac.model.spectrogram.SouthYsp; +import com.xydl.cac.util.DataUtil; +import com.xydl.cac.util.DateUtil; import com.xydl.cac.util.JSONUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Date; @Service @Slf4j @@ -30,6 +33,13 @@ public class SpectrogramHandler { SouthYsp model = processorYsp.process(localFilePath); String json = JSONUtil.object2Json(model); record.setData(json); + record.setCreateTime(new Date()); + try { + String str = String.valueOf(model.getCreateTime()); + Date dtime = DateUtil.parse(str, "yyyyMMddHHmmss"); + record.setDTime(dtime); + } catch (Exception ignore) { + } log.info("解析油色谱谱图文件成功"); } else { log.error("缺少该类型" + record.getTypeId() + "的谱图处理模块");