feat: 从油色谱图文件读取解析成java结构

dev
huangfeng 5 months ago
parent d4c39f0ac4
commit 594271831d

@ -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<YspWay> wayList;
Integer m;
List<YspWay> 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);
}
}
}

@ -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<YspWayHump> humpList;
List<Float> valueList;
Integer n;
List<YspWayHump> humpList = new ArrayList<>();
List<Float> 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);
}
}
}

@ -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();
}
}

@ -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");
}
}

@ -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 + "的谱图处理模块");
}
}
}

Loading…
Cancel
Save