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 lombok.Data;
import java.io.DataInputStream;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Data @Data
public class YspModel extends SpectrogramModel { public class YspModel extends SpectrogramModel {
Integer code;
Integer length;
Long createTime; Long createTime;
Integer flag; Integer flag;
Float xInterval; Float xInterval;
Float yMax; Float yMax;
String xUnit; Integer xUnit;
String yUnit; Integer yUnit;
Integer k; Integer k;
Integer num; Integer m;
List<YspWay> wayList; 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 lombok.Data;
import java.io.DataInputStream;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Data @Data
public class YspWay { public class YspWay {
Integer count; Integer n;
List<YspWayHump> humpList; List<YspWayHump> humpList = new ArrayList<>();
List<Float> valueList; 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 lombok.Data;
import java.io.DataInputStream;
@Data @Data
public class YspWayHump { public class YspWayHump {
String name; String name;
Integer number; Integer j;
Float time; Float time;
Float startTime; Float startTime;
Float endTime; Float endTime;
Float high; Float high;
Float area; 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; package com.xydl.cac.spectrogram;
import com.xydl.cac.model.spectrogram.YspModel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.DataInputStream;
import java.io.FileInputStream;
@Service @Service
@Slf4j @Slf4j
public class ProcessorYsp { 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; package com.xydl.cac.spectrogram;
import com.xydl.cac.model.spectrogram.SpectrogramModel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -15,9 +16,10 @@ public class SpectrogramHandler {
public void processFile(Integer typeId, String localFilePath) { public void processFile(Integer typeId, String localFilePath) {
// 油色谱谱图 // 油色谱谱图
if (typeId == 1) { if (typeId == 1) {
processorYsp.process(localFilePath); SpectrogramModel model = processorYsp.process(localFilePath);
} else { } else {
log.error("缺少该类型" + typeId + "的谱图处理模块"); log.error("缺少该类型" + typeId + "的谱图处理模块");
} }
} }
} }

Loading…
Cancel
Save