代码提交点位地图2

This commit is contained in:
lilin 2025-08-01 10:58:32 +08:00
parent 50462faaff
commit 12cd3be1f7

View File

@ -19,6 +19,7 @@ import java.util.stream.Collectors;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.S3Object; import com.amazonaws.services.s3.model.S3Object;
@ -41,7 +42,6 @@ import com.yfd.platform.component.WebSocketServer;
import com.yfd.platform.config.ResponseResult; import com.yfd.platform.config.ResponseResult;
import com.yfd.platform.modules.experimentalData.domain.*; import com.yfd.platform.modules.experimentalData.domain.*;
import com.yfd.platform.modules.experimentalData.mapper.TsFilesMapper; import com.yfd.platform.modules.experimentalData.mapper.TsFilesMapper;
import com.yfd.platform.modules.experimentalData.mapper.TsNodesMapper;
import com.yfd.platform.modules.experimentalData.mapper.TsTaskMapper; import com.yfd.platform.modules.experimentalData.mapper.TsTaskMapper;
import com.yfd.platform.modules.experimentalData.service.ITsFilesService; import com.yfd.platform.modules.experimentalData.service.ITsFilesService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -89,8 +89,6 @@ import java.util.zip.*;
import org.apache.commons.codec.binary.Hex; import org.apache.commons.codec.binary.Hex;
import static java.lang.Float.parseFloat;
/** /**
* <p> * <p>
@ -5415,7 +5413,7 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
* 返回值说明: com.yfd.platform.config.ResponseResult * 返回值说明: com.yfd.platform.config.ResponseResult
***********************************/ ***********************************/
@Override @Override
public void batchSendNaviOutDataJob(String id, int samTimes, String token, String taskId,String configId) { public void batchSendNaviOutDataJob(String id, int samTimes, String token, String taskId, String configId) {
try { try {
TsTask tsTask = tsTaskMapper.selectById(taskId); TsTask tsTask = tsTaskMapper.selectById(taskId);
@ -5424,161 +5422,39 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
//判断文件后缀是.txt还是.csv //判断文件后缀是.txt还是.csv
String fileName = tsFiles.getFileName(); String fileName = tsFiles.getFileName();
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase(); TsFiles tsFilesData = tsFilesMapper.selectById(configId);
if ("txt".equals(suffix)) { if (currentTaskFuture != null && !currentTaskFuture.isDone()) {
if (currentTaskFuture != null && !currentTaskFuture.isDone()) { currentTaskFuture.cancel(true);
currentTaskFuture.cancel(true); // 中断之前的任务
}
currentTaskFuture = executorService.submit(() -> {
StorageSourceConfig config = getStorageSourceConfig("filePath", "local", tsTask.getLocalStorageId());
Path filePath = Paths.get(config.getValue() + tsFiles.getWorkPath() + tsFiles.getFileName());
try (BufferedReader reader = new BufferedReader(new FileReader(filePath.toFile()))) {
reader.readLine(); // 跳过标题行
SimpleNaviData data1 = null;
int result = 0;
// 读取第二行数据
String secondLine = reader.readLine();
if (secondLine != null) {
secondLine = secondLine.trim();
String[] valuesSecond = secondLine.split("\t");
data1 = parseLine(valuesSecond);
}
// 读取第三行数据
String thirdLine = reader.readLine();
if (thirdLine != null) {
thirdLine = thirdLine.trim();
String[] valuesThird = thirdLine.split("\t");
SimpleNaviData data2 = parseLine(valuesThird);
// 假设 UtcTime String 类型首先转换为 double 类型
double time1 = Double.parseDouble(data1.getUtcTime()); // 如果 getUtcTime() 返回 String 类型
double time2 = Double.parseDouble(data2.getUtcTime()); // 如果 getUtcTime() 返回 String 类型
// 保留小数点后六位
double formattedTime1 = Double.parseDouble(String.format("%.6f", time1));
double formattedTime2 = Double.parseDouble(String.format("%.6f", time2));
// 计算差值
double diff = formattedTime2 - formattedTime1;
// 确保差值不为零以避免除以零错误
if (diff != 0) {
result = (int) Math.floor(1 / diff);
} else {
result = 1;
}
}
// 不管 samTimes 如何先读取第一行数据
String firstLine = reader.readLine();
if (firstLine != null) {
firstLine = firstLine.trim();
String[] values = firstLine.split("\t");
if (values.length >= 40) {
// 发送第一行数据
sendData(token, values, 1);
} else {
System.err.println("忽略不完整行: " + firstLine);
}
}
//todo 这个地方该从一下 换成200
int step = samTimes * result; // 计算行号间隔
int lineCount = 1; // 从第一行开始
while (!Thread.currentThread().isInterrupted()) {
lineCount += step; // 直接跳到下一个需要读取的行
String line = null;
// 读取指定行
for (int i = 0; i < step; i++) {
line = reader.readLine();
if (line == null) {
break; // 文件结束
}
}
if (line == null) {
break; // 文件结束
}
line = line.trim();
String[] values = line.split("\t");
if (values.length < 40) {
LOGGER.info("忽略不完整行: " + line);
continue;
}
// 发送数据
sendData(token, values, lineCount);
// 固定休眠 3
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// 如果休眠期间被中断则退出循环
Thread.currentThread().interrupt();
break;
}
}
// 发送完成信号如果需要
if (!Thread.currentThread().isInterrupted()) {
// ServerSendEventServer.sendMessage(token, "COMPLETED");
}
} catch (Exception e) {
// 捕获异常并记录日志
LOGGER.error("任务执行失败: " + e.getMessage());
e.printStackTrace();
}
});
}else{
TsFiles tsFilesData = tsFilesMapper.selectById(configId);
if (currentTaskFuture != null && !currentTaskFuture.isDone()) {
currentTaskFuture.cancel(true);
}
currentTaskFuture = executorService.submit(() -> {
try {
// 1. 获取配置文件路径
StorageSourceConfig config = getStorageSourceConfig("filePath", "local", tsTask.getLocalStorageId());
Path basePath = Paths.get(config.getValue() + tsFilesData.getWorkPath());
// 2. 读取配置文件假设配置文件名为 trj_config.txt
Path configPath = basePath.resolve("trj_config.txt");
Map<String, String> columnMapping = parseConfigFile(configPath);
String timeColumn = columnMapping.get("time");
String lonColumn = columnMapping.get("lon");
String latColumn = columnMapping.get("lat");
String hgtColumn = columnMapping.get("hgt");
LOGGER.info("列映射: time={}, lon={}, lat={}, hgt={}",
timeColumn, lonColumn, latColumn, hgtColumn);
// 3. 获取数据文件路径
Path dataPath = basePath.resolve("VINS.csv");
// 4. 处理数据文件
processDataFile(dataPath, samTimes, token, timeColumn, lonColumn, latColumn, hgtColumn);
} catch (Exception e) {
LOGGER.error("任务执行失败: {}", e.getMessage(), e);
}
});
} }
currentTaskFuture = executorService.submit(() -> {
try {
// 1. 获取配置文件路径
StorageSourceConfig config = getStorageSourceConfig("filePath", "local", tsTask.getLocalStorageId());
Path basePath = Paths.get(config.getValue() + tsFilesData.getWorkPath());
// 2. 读取配置文件假设配置文件名为 trj_config.txt
Path configPath = basePath.resolve(tsFilesData.getFileName());
Map<String, String> columnMapping = parseConfigFile(configPath, token);
String timeColumn = columnMapping.get("time");
String lonColumn = columnMapping.get("lon");
String latColumn = columnMapping.get("lat");
String hgtColumn = columnMapping.get("hgt");
LOGGER.info("列映射: time={}, lon={}, lat={}, hgt={}",
timeColumn, lonColumn, latColumn, hgtColumn);
// 3. 获取数据文件路径
Path dataPath = basePath.resolve(tsFiles.getFileName());
// 4. 处理数据文件
processDataFile(dataPath, samTimes, token, timeColumn, lonColumn, latColumn, hgtColumn);
} catch (Exception e) {
LOGGER.error("任务执行失败: {}", e.getMessage(), e);
}
});
} catch (Exception e) { } catch (Exception e) {
@ -5590,43 +5466,40 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
} }
// 封装发送数据的逻辑 // // 封装发送数据的逻辑
private void sendData(String token, String[] values, int lineCount) { // private void sendData(String token, String[] values, int lineCount) {
if (Thread.currentThread().isInterrupted()) { // if (Thread.currentThread().isInterrupted()) {
return; // return;
} // }
//
try { // try {
SimpleNaviData data = parseLine(values); // SimpleNaviData data = parseLine(values);
String jsonData = JSONUtil.toJsonStr(data); // 假设 JSONUtil.toJsonStr 不会抛出 IOException // String jsonData = JSONUtil.toJsonStr(data); // 假设 JSONUtil.toJsonStr 不会抛出 IOException
ServerSendEventServer.sendMessageById(token, jsonData); // 假设 sendMessage 不会抛出 IOException // ServerSendEventServer.sendMessageById(token, jsonData); // 假设 sendMessage 不会抛出 IOException
LOGGER.info("Line " + lineCount + " sent at: " + System.currentTimeMillis()); // LOGGER.info("Line " + lineCount + " sent at: " + System.currentTimeMillis());
} catch (Exception e) { // } catch (Exception e) {
// 捕获所有可能的异常 // // 捕获所有可能的异常
LOGGER.error("发送数据失败: " + e.getMessage()); // LOGGER.error("发送数据失败: " + e.getMessage());
if (e.getCause() instanceof InterruptedException) { // if (e.getCause() instanceof InterruptedException) {
Thread.currentThread().interrupt(); // 重新设置中断状态 // Thread.currentThread().interrupt(); // 重新设置中断状态
} // }
} // }
} // }
//
// 辅助方法解析行数据 // // 辅助方法解析行数据
private SimpleNaviData parseLine(String[] values) { // private SimpleNaviData parseLine(String[] values) {
SimpleNaviData data = new SimpleNaviData(); // SimpleNaviData data = new SimpleNaviData();
data.setUtcTime(getValueSafely(values, 8, "0.0")); // UTC_TIME索引8 // data.setUtcTime(getValueSafely(values, 8, "0.0")); // UTC_TIME索引8
data.setLat(getValueSafely(values, 17, "0.0")); // LAT索引17 // data.setLat(getValueSafely(values, 17, "0.0")); // LAT索引17
data.setLon(getValueSafely(values, 18, "0.0")); // LON索引18 // data.setLon(getValueSafely(values, 18, "0.0")); // LON索引18
data.setAlt(getValueSafely(values, 19, "0.0")); // ALT索引19 // data.setAlt(getValueSafely(values, 19, "0.0")); // ALT索引19
return data; // return data;
} // }
//
// 安全获取数组值的方法 // // 安全获取数组值的方法
private String getValueSafely(String[] values, int index, String defaultValue) { // private String getValueSafely(String[] values, int index, String defaultValue) {
return (index < values.length) ? values[index] : defaultValue; // return (index < values.length) ? values[index] : defaultValue;
} // }
/** /**
@ -5636,7 +5509,7 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
* @return 列名映射Maptime, lon, lat, hgt * @return 列名映射Maptime, lon, lat, hgt
* @throws IOException 文件读取错误 * @throws IOException 文件读取错误
*/ */
public Map<String, String> parseConfigFile(Path configFilePath) throws IOException { public Map<String, String> parseConfigFile(Path configFilePath, String token) throws IOException {
Map<String, String> columnMapping = new HashMap<>(); Map<String, String> columnMapping = new HashMap<>();
try (BufferedReader reader = Files.newBufferedReader(configFilePath, StandardCharsets.UTF_8)) { try (BufferedReader reader = Files.newBufferedReader(configFilePath, StandardCharsets.UTF_8)) {
@ -5665,7 +5538,13 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
// 验证是否获取到所有必需的列 // 验证是否获取到所有必需的列
if (columnMapping.size() < 4) { if (columnMapping.size() < 4) {
throw new IOException("配置文件缺少必需的列定义"); JSONObject jsonResponse = new JSONObject();
jsonResponse.put("message", "配置文件选择错误,请重新选择!");
// JSON 数据发送到客户端
ServerSendEventServer.sendMessageById(token, jsonResponse.toString());
//throw new IOException("配置文件选择错误,请重新选择!");
} }
return columnMapping; return columnMapping;
@ -5675,6 +5554,7 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
/** /**
* 处理数据文件 * 处理数据文件
*/ */
private void processDataFile(Path dataPath, int samTimes, String token, private void processDataFile(Path dataPath, int samTimes, String token,
String timeColumn, String lonColumn, String timeColumn, String lonColumn,
String latColumn, String hgtColumn) String latColumn, String hgtColumn)
@ -5688,48 +5568,58 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
return; return;
} }
// 2. 解析标题行 - 使用逗号分隔 // 2. 自动检测分隔符关键改进
String[] headers = headerLine.split(","); // 改为逗号分隔 String delimiter = detectDelimiter(headerLine);
LOGGER.info("检测到分隔符: {}", delimiter.replace("\t", "\\t").replace(" ", "\\s"));
// 添加标题行调试日志 // 3. 解析标题行
String[] headers = headerLine.split(delimiter);
LOGGER.info("数据文件标题行包含 {} 列", headers.length); LOGGER.info("数据文件标题行包含 {} 列", headers.length);
LOGGER.debug("完整标题行: {}", String.join("|", headers)); LOGGER.debug("完整标题行: {}", String.join("|", headers));
Map<String, Integer> columnIndices = new HashMap<>(); Map<String, Integer> columnIndices = new HashMap<>();
// 3. 查找列索引修复后的逻辑 // 4. 查找列索引改进大小写不敏感+空格处理
for (int i = 0; i < headers.length; i++) { for (int i = 0; i < headers.length; i++) {
String header = headers[i].trim(); String header = headers[i].trim();
// 使用 equalsIgnoreCase 进行不区分大小写的匹配 // 标准化列名移除空格和下划线
if (header.equalsIgnoreCase(timeColumn)) { String normalizedHeader = header.replaceAll("[_\\s]", "")
.toLowerCase();
if (normalizedHeader.equals(timeColumn.replaceAll("[_\\s]", "").toLowerCase())) {
columnIndices.put("time", i); columnIndices.put("time", i);
LOGGER.info("找到 time 列 '{}' 在位置 {}", header, i);
} }
if (header.equalsIgnoreCase(lonColumn)) { if (normalizedHeader.equals(lonColumn.replaceAll("[_\\s]", "").toLowerCase())) {
columnIndices.put("lon", i); columnIndices.put("lon", i);
LOGGER.info("找到 lon 列 '{}' 在位置 {}", header, i);
} }
if (header.equalsIgnoreCase(latColumn)) { if (normalizedHeader.equals(latColumn.replaceAll("[_\\s]", "").toLowerCase())) {
columnIndices.put("lat", i); columnIndices.put("lat", i);
LOGGER.info("找到 lat 列 '{}' 在位置 {}", header, i);
} }
if (header.equalsIgnoreCase(hgtColumn)) { if (normalizedHeader.equals(hgtColumn.replaceAll("[_\\s]", "").toLowerCase())) {
columnIndices.put("hgt", i); columnIndices.put("hgt", i);
LOGGER.info("找到 hgt 列 '{}' 在位置 {}", header, i);
} }
} }
// 4. 验证列是否存在 // 5. 验证列是否存在改进提供更友好的错误信息
List<String> missingColumns = new ArrayList<>(); List<String> missingColumns = new ArrayList<>();
if (!columnIndices.containsKey("time")) missingColumns.add(timeColumn); if (!columnIndices.containsKey("time")) {
if (!columnIndices.containsKey("lon")) missingColumns.add(lonColumn); missingColumns.add("时间列(" + timeColumn + ")");
if (!columnIndices.containsKey("lat")) missingColumns.add(latColumn); LOGGER.warn("未找到时间列,尝试的列名: {}", timeColumn);
if (!columnIndices.containsKey("hgt")) missingColumns.add(hgtColumn); }
if (!columnIndices.containsKey("lon")) {
missingColumns.add("经度列(" + lonColumn + ")");
}
if (!columnIndices.containsKey("lat")) {
missingColumns.add("纬度列(" + latColumn + ")");
}
if (!columnIndices.containsKey("hgt")) {
missingColumns.add("高度列(" + hgtColumn + ")");
}
if (!missingColumns.isEmpty()) { if (!missingColumns.isEmpty()) {
LOGGER.error("以下列在数据文件中不存在: {}", String.join(", ", missingColumns)); LOGGER.error("缺少必需列: {}", String.join(", ", missingColumns));
LOGGER.error("数据文件标题行: {}", headerLine); LOGGER.error("可用列: {}", String.join(", ", headers));
return; return;
} }
@ -5741,15 +5631,19 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
LOGGER.info("列索引: time={}, lon={}, lat={}, hgt={}", LOGGER.info("列索引: time={}, lon={}, lat={}, hgt={}",
timeIndex, lonIndex, latIndex, hgtIndex); timeIndex, lonIndex, latIndex, hgtIndex);
// 5. 读取并处理数据行 // 6. 计算实际步长关键修复
int step = samTimes * 200; // 与之前逻辑保持一致
if (step <= 0) step = 1; // 避免除零错误
// 7. 读取并处理数据行
String line; String line;
int lineCount = 0; int lineCount = 0;
int sendCount = 0;
int lineCountData = 0; int lineCountData = 0;
float timeValue0 = 0; float timeValue0 = 0;
float timeValue1 = 0; float timeValue1 = 0;
int result = 0; // int result = 0; //
while (!Thread.currentThread().isInterrupted() && (line = reader.readLine()) != null) { while (!Thread.currentThread().isInterrupted() && (line = reader.readLine()) != null) {
lineCountData++; lineCountData++;
@ -5768,7 +5662,7 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
float data = timeValue1 - timeValue0; float data = timeValue1 - timeValue0;
// 计算 1 / data // 计算 1 / data
if (data != 0) { // 确保避免除以零 if (data != 0) { // 确保避免除以零
result = (int) Math.floor(1 / data); result = (int) Math.floor(1 / data);
} else { } else {
result = 1; result = 1;
} }
@ -5776,32 +5670,36 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
} }
while (!Thread.currentThread().isInterrupted() && (line = reader.readLine()) != null) { while (!Thread.currentThread().isInterrupted() && (line = reader.readLine()) != null) {
lineCount++; lineCount++;
// 使用逗号分隔数据行
String[] values = line.split(","); // 改为逗号分隔
// 跳过空行
if (line.trim().isEmpty()) continue;
// 使用检测到的分隔符
String[] values = line.split(delimiter);
// 跳过不符合步长的行第一行总是发送
if (lineCount > 1 && (lineCount - 1) % (samTimes * result) != 0) { if (lineCount > 1 && (lineCount - 1) % (samTimes * result) != 0) {
continue; continue;
} }
// 检查数据完整性动态计算最大索引
int maxIndex = Math.max(Math.max(timeIndex, lonIndex),
// 检查数据完整性 Math.max(latIndex, hgtIndex));
int maxIndex = getMaxIndex(timeIndex, lonIndex, latIndex, hgtIndex);
if (values.length <= maxIndex) { if (values.length <= maxIndex) {
LOGGER.warn("行 {} 数据不完整: {}", lineCount, line); LOGGER.warn("行 {} 数据不完整 (需要 {} 列, 实际 {} 列): {}",
lineCount, maxIndex + 1, values.length, line);
continue; continue;
} }
// 发送数据 // 发送数据
sendDataCsv(token, values, lineCount, timeIndex, lonIndex, latIndex, hgtIndex); sendDataCsv(token, values, lineCount, timeIndex, lonIndex, latIndex, hgtIndex);
sendCount++;
// 每次发送后都休眠3秒 // 每次发送后都休眠3秒
try { try {
Thread.sleep(3000); Thread.sleep(500);
} catch (InterruptedException e) { } catch (InterruptedException e) {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
break; break;
@ -5809,11 +5707,71 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
} }
if (!Thread.currentThread().isInterrupted()) { if (!Thread.currentThread().isInterrupted()) {
LOGGER.info("文件处理完成,共处理 {} 行", lineCount); LOGGER.info("文件处理完成: 总行数={}, 发送行数={}", lineCount, sendCount);
} }
} }
} }
// 自动检测分隔符支持两种格式
private String detectDelimiter(String headerLine) {
// 优先检查制表符
if (headerLine.contains("\t")) {
return "\t";
}
// 检查逗号
if (headerLine.contains(",")) {
return ",";
}
// 检查空格多个空格
if (headerLine.contains(" ")) {
return "\\s+";
}
// 默认使用制表符
return "\t";
}
// 安全获取数组值的方法
private String getValueSafely(String[] values, int index, String defaultValue) {
return (index < values.length) ? values[index] : defaultValue;
}
// 改进的发送方法处理各种数据格式
private void sendDataCsv(String token, String[] values, int lineCount,
int timeIndex, int lonIndex,
int latIndex, int hgtIndex) {
try {
SimpleNaviData data = new SimpleNaviData();
// 处理可能带空格的数值
data.setUtcTime(values[timeIndex].trim());
data.setLon(parseDoubleSafe(values[lonIndex].trim(), 0.0));
data.setLat(parseDoubleSafe(values[latIndex].trim(), 0.0));
data.setAlt(parseDoubleSafe(values[hgtIndex].trim(), 0.0));
String jsonData = JSONUtil.toJsonStr(data);
ServerSendEventServer.sendMessageById(token, jsonData);
LOGGER.info("发送行 {}: UTC={}, Lon={}, Lat={}, Alt={}",
lineCount, data.getUtcTime(), data.getLon(),
data.getLat(), data.getAlt());
} catch (Exception e) {
LOGGER.error("发送行 {} 失败: {}", lineCount, e.getMessage());
}
}
// 安全解析double值
private String parseDoubleSafe(String value, double defaultValue) {
try {
return String.valueOf(Double.parseDouble(value));
} catch (NumberFormatException e) {
LOGGER.warn("数值解析失败: '{}', 使用默认值 {}", value, defaultValue);
return String.valueOf(defaultValue);
}
}
// 辅助方法获取最大索引 // 辅助方法获取最大索引
private int getMaxIndex(int... indices) { private int getMaxIndex(int... indices) {
int max = -1; int max = -1;
@ -5824,34 +5782,6 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
} }
private void sendDataCsv(String token, String[] values, int lineCount,
int timeIndex, int lonIndex, int latIndex, int hgtIndex) {
if (Thread.currentThread().isInterrupted()) {
return;
}
try {
SimpleNaviData data = new SimpleNaviData();
data.setUtcTime(getValueSafely(values, timeIndex, "0.0"));
data.setLon(getValueSafely(values, lonIndex, "0.0"));
data.setLat(getValueSafely(values, latIndex, "0.0"));
data.setAlt(getValueSafely(values, hgtIndex, "0.0"));
String jsonData = JSONUtil.toJsonStr(data);
ServerSendEventServer.sendMessageById(token, jsonData);
LOGGER.info("Line {} sent at: {}", lineCount, System.currentTimeMillis());
} catch (Exception e) {
LOGGER.error("发送数据失败: {}", e.getMessage());
if (e.getCause() instanceof InterruptedException) {
Thread.currentThread().interrupt();
}
}
}
/** /**
* 查询文件内容接口 * 查询文件内容接口
* *
@ -6236,7 +6166,7 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
List<TsFiles> listTsFilesPng = tsFilesMapper.selectList(queryWrapperPng); List<TsFiles> listTsFilesPng = tsFilesMapper.selectList(queryWrapperPng);
if (listTsFilesPng == null) { if (listTsFilesPng == null) {
trajectoriesDto.setTsFilesListPng(new ArrayList<>()); trajectoriesDto.setTsFilesListPng(new ArrayList<>());
}else { } else {
for (TsFiles tsFiles1 : listTsFilesPng) { for (TsFiles tsFiles1 : listTsFilesPng) {
FileItemResult fileItemResult = new FileItemResult(); FileItemResult fileItemResult = new FileItemResult();
//获取图片url //获取图片url
@ -6268,7 +6198,7 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
List<TsFiles> listTsFilesTxt = tsFilesMapper.selectList(queryWrapperTxt); List<TsFiles> listTsFilesTxt = tsFilesMapper.selectList(queryWrapperTxt);
if (listTsFilesTxt == null) { if (listTsFilesTxt == null) {
trajectoriesDto.setTsFilesListTxt(new ArrayList<>()); trajectoriesDto.setTsFilesListTxt(new ArrayList<>());
}else{ } else {
for (TsFiles tsFiles1 : listTsFilesTxt) { for (TsFiles tsFiles1 : listTsFilesTxt) {
//读物文件内容 //读物文件内容
StorageSourceConfig config = getStorageSourceConfig("filePath", "local", tsTask.getLocalStorageId()); StorageSourceConfig config = getStorageSourceConfig("filePath", "local", tsTask.getLocalStorageId());
@ -6303,7 +6233,7 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
List<TsFiles> listTsFilesConfig = tsFilesMapper.selectList(queryWrapperConfig); List<TsFiles> listTsFilesConfig = tsFilesMapper.selectList(queryWrapperConfig);
if (listTsFilesConfig == null) { if (listTsFilesConfig == null) {
trajectoriesDto.setTsFilesListConfig(new ArrayList<>()); trajectoriesDto.setTsFilesListConfig(new ArrayList<>());
}else { } else {
for (TsFiles tsFiles1 : listTsFilesConfig) { for (TsFiles tsFiles1 : listTsFilesConfig) {
tsFilesListConfig.add(tsFiles1); tsFilesListConfig.add(tsFiles1);
} }
@ -6346,8 +6276,6 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
} }
} }