update with batch upload

This commit is contained in:
revisit 2024-10-25 22:45:50 +08:00
parent 80925cb252
commit 9ac094d472
4 changed files with 91 additions and 74 deletions

View File

@ -2,4 +2,5 @@ AppDebug=true
AppParamHelper=cn.tsy.idsse.dsds.helper.DSDSParamHelper AppParamHelper=cn.tsy.idsse.dsds.helper.DSDSParamHelper
AppDatabaseStdout=Active AppDatabaseStdout=Active
AppListener=cn.tsy.idsse.dsds.control.DSDSInitializeLisener AppListener=cn.tsy.idsse.dsds.control.DSDSInitializeLisener
AppName=DSDS2024Server AppName=DSDS2024Server
DatabaseWarnDelayTimes=10000

View File

@ -2,4 +2,5 @@ AppDebug=true
AppParamHelper=cn.tsy.idsse.dsds.helper.DSDSParamHelper AppParamHelper=cn.tsy.idsse.dsds.helper.DSDSParamHelper
AppDatabaseStdout=Active AppDatabaseStdout=Active
AppListener=cn.tsy.idsse.dsds.control.DSDSInitializeLisener AppListener=cn.tsy.idsse.dsds.control.DSDSInitializeLisener
AppName=DSDS2024Server AppName=DSDS2024Server
DatabaseWarnDelayTimes=10000

View File

@ -27,9 +27,13 @@ public class SampleDatasetTrackService {
public List<SampleDatasetTrack> uploadTrack(int dataset_id, List<String> array, String file_name, FrameOptr optr) { public List<SampleDatasetTrack> uploadTrack(int dataset_id, List<String> array, String file_name, FrameOptr optr) {
FrameAssertHelper.hasValue(array, "潜次轨迹文件为空,请检查!"); FrameAssertHelper.hasValue(array, "潜次轨迹文件为空,请检查!");
List<SampleDatasetTrack> navArray = new ArrayList<>(); List<SampleDatasetTrack> navArray = new ArrayList<>();
SampleDataset dataset = this.mDataset.find(dataset_id); String dv_sn = file_name.replace(".txt", "");
FrameAssertHelper.isNotNull(dataset, "未找到指定数据集,请检查!"); List<SampleDataset> sdArray = this.mDataset.selectListByColumn("diving_sn", dv_sn);
this.mTrack.deleteByColumn("dataset_id", dataset_id); if (sdArray.size() == 0)
throw new BusinessException("未找到潜次[" + dv_sn + "]对应的数据集!");
// SampleDataset dataset = this.mDataset.find(dataset_id);
// FrameAssertHelper.isNotNull(dataset, "未找到指定数据集,请检查!");
// this.mTrack.deleteByColumn("dataset_id", dataset_id);
for (int i = 0; i < array.size(); i++) { for (int i = 0; i < array.size(); i++) {
if (array.get(i).trim().length() == 0) if (array.get(i).trim().length() == 0)
break; break;
@ -73,19 +77,22 @@ public class SampleDatasetTrackService {
nav.setTrack_lat(lat); nav.setTrack_lat(lat);
nav.setTrack_lon(lon); nav.setTrack_lon(lon);
nav.setTrack_time(curTime); nav.setTrack_time(curTime);
nav.setDataset_id(dataset_id);
// 判断时间是否重复了
// List<SampleDatasetTrack> vArray = this.mTrack.selectList(SqlBuilder.create().addSqlCondition(SqlCondition.of("dataset_id", dataset_id)).addSqlCondition(SqlCondition.of("track_time", curTime)));
// if (vArray.size() == 0) {
this.mTrack.insert(nav);
navArray.add(nav); navArray.add(nav);
// }
} }
if (navArray.size() > 0) { if (navArray.size() > 0) {
SampleDataset ds = new SampleDataset(); for(SampleDataset ds :sdArray) {
ds.setTsy_id(dataset_id); this.mTrack.deleteByColumn("dataset_id", ds.getTsy_id());
ds.setDiving_track_file(file_name); for(SampleDatasetTrack nav :navArray) {
this.mDataset.update(ds); nav.setTsy_id(null);
nav.setDataset_id(ds.getTsy_id());
this.mTrack.insert(nav);
}
SampleDataset d = new SampleDataset();
d.setTsy_id(dataset_id);
d.setDiving_track_file(file_name);
this.mDataset.update(ds);
}
} }
return navArray; return navArray;

View File

@ -31,73 +31,81 @@ public class SampleLineTrackService {
public List<SampleLineTrack> uploadTrack(int dataset_id, List<String> array, String file_name) { public List<SampleLineTrack> uploadTrack(int dataset_id, List<String> array, String file_name) {
FrameAssertHelper.hasValue(array, "测线轨迹文件为空,请检查!"); FrameAssertHelper.hasValue(array, "测线轨迹文件为空,请检查!");
SampleDataset ds = this.mDataset.find(dataset_id); // SampleDataset ds = this.mDataset.find(dataset_id);
FrameAssertHelper.isNotNull(ds, "未找到指定数据集,请检查!"); // FrameAssertHelper.isNotNull(ds, "未找到指定数据集,请检查!");
this.mTrack.deleteByColumn("dataset_id", dataset_id);
int index = 1;
List<SampleLineTrack> navArray = new ArrayList<>(); // this.mTrack.deleteByColumn("dataset_id", dataset_id);
for (int i = 0; i < array.size(); i++) { // 找出所有航线
if (array.get(i).trim().length() == 0) { String dv_sn = file_name.replace(".txt", "").replace("_Clean", "");
this.update(file_name,ds, index, navArray); List<SampleDataset> sdArray = this.mDataset.selectListByColumn("diving_sn", dv_sn);
break; if (sdArray.size() == 0)
} throw new BusinessException("未找到潜次[" + dv_sn + "]对应的数据集!");
String[] values = StringHelper.splitWithSpace(array.get(i)); for (SampleDataset ds : sdArray) {
if (values[0].equals(">>")) { int index = 1;
this.update(file_name, ds, index, navArray);
navArray = new ArrayList<>();
index++;
continue;
}
if (values.length < 3) {
throwError(i, "列不足至少需要3列");
}
// 110.565232 17.370000 2023-05-20-13:55:27 List<SampleLineTrack> navArray = new ArrayList<>();
String lon = values[0]; for (int i = 0; i < array.size(); i++) {
String lat = values[1]; if (array.get(i).trim().length() == 0) {
String time = values[2]; this.update(file_name, ds, index, navArray);
// 经纬度的范围包括经度范围0°-180°和纬度范围0°-90° break;
try { }
double d = Double.parseDouble(lon); String[] values = StringHelper.splitWithSpace(array.get(i));
if (d > 180) if (values[0].equals(">>")) {
throwError(i, "经度[" + lon + "]不能大于 180°"); this.update(file_name, ds, index, navArray);
if (d < 0) navArray = new ArrayList<>();
throwError(i, "经度[" + lon + "]不能小于 0°"); index++;
} catch (Exception e) { continue;
throwError(i, "经度[" + lon + "]格式错误"); }
} if (values.length < 3) {
throwError(i, "列不足至少需要3列");
}
try { // 110.565232 17.370000 2023-05-20-13:55:27
double d = Double.parseDouble(lat); String lon = values[0];
if (d > 90) String lat = values[1];
throwError(i, "纬度[" + lat + "]不能大于 90°"); String time = values[2];
if (d < 0) // 经纬度的范围包括经度范围0°-180°和纬度范围0°-90°
throwError(i, "纬度[" + lat + "]不能小于 0°"); try {
} catch (Exception e) { double d = Double.parseDouble(lon);
throwError(i, "纬度[" + lat + "]格式错误"); if (d > 180)
} throwError(i, "经度[" + lon + "]不能大于 180°");
// 109.49100 18.23400 2023-09-18-21:58:35 if (d < 0)
String[] vs = time.split("-"); throwError(i, "经度[" + lon + "]不能小于 0°");
if (vs.length != 4) } catch (Exception e) {
throwError(i, "时间[" + time + "]格式错误,样例 2023-09-18-21:58:35"); throwError(i, "经度[" + lon + "]格式错误");
LocalDateTime curTime = LocalDateHelper.parseDateTime(vs[0] + "-" + vs[1] + "-" + vs[2] + " " + vs[3]); }
if (curTime == null)
throwError(i, "时间[" + time + "]格式错误,样例 2023-09-18-21:58:35");
// 判断通过
// 判断时间是否重复了 try {
double d = Double.parseDouble(lat);
if (d > 90)
throwError(i, "纬度[" + lat + "]不能大于 90°");
if (d < 0)
throwError(i, "纬度[" + lat + "]不能小于 0°");
} catch (Exception e) {
throwError(i, "纬度[" + lat + "]格式错误");
}
// 109.49100 18.23400 2023-09-18-21:58:35
String[] vs = time.split("-");
if (vs.length != 4)
throwError(i, "时间[" + time + "]格式错误,样例 2023-09-18-21:58:35");
LocalDateTime curTime = LocalDateHelper.parseDateTime(vs[0] + "-" + vs[1] + "-" + vs[2] + " " + vs[3]);
if (curTime == null)
throwError(i, "时间[" + time + "]格式错误,样例 2023-09-18-21:58:35");
// 判断通过
// 判断时间是否重复了
// List<SampleLineTrack> vArray = this.mTrack.selectList(SqlBuilder.create().addSqlCondition(SqlCondition.of("line_id", line_id)).addSqlCondition(SqlCondition.of("track_time", curTime))); // List<SampleLineTrack> vArray = this.mTrack.selectList(SqlBuilder.create().addSqlCondition(SqlCondition.of("line_id", line_id)).addSqlCondition(SqlCondition.of("track_time", curTime)));
// if (vArray.size() == 0) { // if (vArray.size() == 0) {
SampleLineTrack nav = new SampleLineTrack(); SampleLineTrack nav = new SampleLineTrack();
nav.setTrack_lat(lat); nav.setTrack_lat(lat);
nav.setTrack_lon(lon); nav.setTrack_lon(lon);
nav.setTrack_time(curTime); nav.setTrack_time(curTime);
navArray.add(nav); navArray.add(nav);
// } // }
}
} }
return navArray; return new ArrayList<>();
} }
public void update(String file_name, SampleDataset ds, int index, List<SampleLineTrack> navArray) { public void update(String file_name, SampleDataset ds, int index, List<SampleLineTrack> navArray) {