fix(event): 修复事件详情波形路径更新逻辑
- 修正CsEventPOServiceImpl中wavePath更新时的对象引用错误 - 在EventDetailVO中新增startTime2字段用于显示不带毫秒的时间 - 优化DataTaskServiceImpl中的设备通信离线时段计算逻辑 - 完善DeviceMessageServiceImpl中设备消息映射的边界情况处理
This commit is contained in:
@@ -549,57 +549,115 @@ public class DataTaskServiceImpl implements IDataTaskService {
|
||||
Map<String, List<PqsCommunicate>> deviceCommMap = pqsCommunicates.stream()
|
||||
.collect(Collectors.groupingBy(PqsCommunicate::getDevId));
|
||||
|
||||
// deviceCommMap.forEach((devId, commList) -> {
|
||||
// // 按时间排序
|
||||
// commList.sort(Comparator.comparing(PqsCommunicate::getTime));
|
||||
//
|
||||
// List<String> offlinePeriods = new ArrayList<>();
|
||||
// String offlineStartTime = null;
|
||||
// String offlineEndTime = null;
|
||||
//
|
||||
// if (commList.size() == 1) {
|
||||
// // 只有一条数据的情况
|
||||
// PqsCommunicate singleRecord = commList.get(0);
|
||||
// if (singleRecord.getType() == 0) {
|
||||
// // 掉线:从掉线时间到 24 点
|
||||
// offlineStartTime = DATE_TIME_FORMATTER.format(singleRecord.getTime());
|
||||
// offlineEndTime = DATE_TIME_FORMATTER.format(singleRecord.getTime()).substring(0, 10) + " 23:59:59";
|
||||
// } else {
|
||||
// // 上线:从 0 点到上线时间
|
||||
// offlineStartTime = DATE_TIME_FORMATTER.format(singleRecord.getTime()).substring(0, 10) + " 00:00:00";
|
||||
// offlineEndTime = DATE_TIME_FORMATTER.format(singleRecord.getTime());
|
||||
// }
|
||||
// offlinePeriods.add(offlineStartTime + " ~ " + offlineEndTime);
|
||||
// } else {
|
||||
// // 多条数据的情况
|
||||
// for (int i = 0; i < commList.size(); i++) {
|
||||
// PqsCommunicate current = commList.get(i);
|
||||
//
|
||||
// if (current.getType() == 0) {
|
||||
// // 掉线记录
|
||||
// if (offlineStartTime == null) {
|
||||
// offlineStartTime = DATE_TIME_FORMATTER.format(current.getTime());
|
||||
// }
|
||||
// // 如果是最后一条记录,结束时间为 24 点
|
||||
// if (i == commList.size() - 1) {
|
||||
// offlineEndTime = DATE_TIME_FORMATTER.format(current.getTime()).substring(0, 10) + " 23:59:59";
|
||||
// offlinePeriods.add(offlineStartTime + " ~ " + offlineEndTime);
|
||||
// }
|
||||
// } else {
|
||||
// // 上线记录
|
||||
// if (offlineStartTime != null) {
|
||||
// // 有对应的掉线记录,形成完整时间段
|
||||
// offlineEndTime = DATE_TIME_FORMATTER.format(current.getTime());
|
||||
// offlinePeriods.add(offlineStartTime + " ~ " + offlineEndTime);
|
||||
// offlineStartTime = null;
|
||||
// offlineEndTime = null;
|
||||
// } else {
|
||||
// // 没有对应的掉线记录,说明是从 0 点开始掉线
|
||||
// offlineStartTime = DATE_TIME_FORMATTER.format(current.getTime()).substring(0, 10) + " 00:00:00";
|
||||
// offlineEndTime = DATE_TIME_FORMATTER.format(current.getTime());;
|
||||
// offlinePeriods.add(offlineStartTime + " ~ " + offlineEndTime);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// if (CollUtil.isNotEmpty(offlinePeriods)) {
|
||||
// result.put(devId, offlinePeriods);
|
||||
// }
|
||||
// });
|
||||
deviceCommMap.forEach((devId, commList) -> {
|
||||
// 按时间排序
|
||||
commList.sort(Comparator.comparing(PqsCommunicate::getTime));
|
||||
|
||||
List<String> offlinePeriods = new ArrayList<>();
|
||||
String offlineStartTime = null;
|
||||
String offlineEndTime = null;
|
||||
|
||||
if (commList.size() == 1) {
|
||||
// 只有一条数据的情况
|
||||
PqsCommunicate singleRecord = commList.get(0);
|
||||
if (singleRecord.getType() == 0) {
|
||||
// 掉线:从掉线时间到 24 点
|
||||
offlineStartTime = DATE_TIME_FORMATTER.format(singleRecord.getTime());
|
||||
offlineEndTime = DATE_TIME_FORMATTER.format(singleRecord.getTime()).substring(0, 10) + " 23:59:59";
|
||||
String startTime1 = DATE_TIME_FORMATTER.format(singleRecord.getTime());
|
||||
String endTime1 = DATE_TIME_FORMATTER.format(singleRecord.getTime()).substring(0, 10) + " 23:59:59";
|
||||
offlinePeriods.add(startTime1 + " ~ " + endTime1);
|
||||
} else {
|
||||
// 上线:从 0 点到上线时间
|
||||
offlineStartTime = DATE_TIME_FORMATTER.format(singleRecord.getTime()).substring(0, 10) + " 00:00:00";
|
||||
offlineEndTime = DATE_TIME_FORMATTER.format(singleRecord.getTime());
|
||||
String startTime1 = DATE_TIME_FORMATTER.format(singleRecord.getTime()).substring(0, 10) + " 00:00:00";
|
||||
String endTime1 = DATE_TIME_FORMATTER.format(singleRecord.getTime());
|
||||
offlinePeriods.add(startTime1 + " ~ " + endTime1);
|
||||
}
|
||||
offlinePeriods.add(offlineStartTime + " ~ " + offlineEndTime);
|
||||
} else {
|
||||
// 多条数据的情况
|
||||
// 多条数据的情况:遍历每相邻两条记录
|
||||
for (int i = 0; i < commList.size(); i++) {
|
||||
PqsCommunicate current = commList.get(i);
|
||||
|
||||
if (current.getType() == 0) {
|
||||
// 掉线记录
|
||||
// 掉线记录:开始计时
|
||||
if (offlineStartTime == null) {
|
||||
offlineStartTime = DATE_TIME_FORMATTER.format(current.getTime());
|
||||
}
|
||||
// 如果是最后一条记录,结束时间为 24 点
|
||||
if (i == commList.size() - 1) {
|
||||
offlineEndTime = DATE_TIME_FORMATTER.format(current.getTime()).substring(0, 10) + " 23:59:59";
|
||||
offlinePeriods.add(offlineStartTime + " ~ " + offlineEndTime);
|
||||
}
|
||||
} else {
|
||||
// 上线记录
|
||||
// 上线记录:结算离线时段
|
||||
if (offlineStartTime != null) {
|
||||
// 有对应的掉线记录,形成完整时间段
|
||||
offlineEndTime = DATE_TIME_FORMATTER.format(current.getTime());
|
||||
// 有未结算的离线时段,进行结算
|
||||
String offlineEndTime = DATE_TIME_FORMATTER.format(current.getTime());
|
||||
offlinePeriods.add(offlineStartTime + " ~ " + offlineEndTime);
|
||||
offlineStartTime = null;
|
||||
offlineEndTime = null;
|
||||
} else {
|
||||
// 没有对应的掉线记录,说明是从 0 点开始掉线
|
||||
offlineStartTime = DATE_TIME_FORMATTER.format(current.getTime()).substring(0, 10) + " 00:00:00";
|
||||
offlineEndTime = DATE_TIME_FORMATTER.format(current.getTime());;
|
||||
offlinePeriods.add(offlineStartTime + " ~ " + offlineEndTime);
|
||||
// 没有对应的掉线记录,说明是从 0 点开始掉线到当前上线时间
|
||||
String startTime1 = DATE_TIME_FORMATTER.format(current.getTime()).substring(0, 10) + " 00:00:00";
|
||||
String endTime1 = DATE_TIME_FORMATTER.format(current.getTime());
|
||||
offlinePeriods.add(startTime1 + " ~ " + endTime1);
|
||||
}
|
||||
}
|
||||
|
||||
// 如果是最后一条记录且仍在离线状态,结算到 24 点
|
||||
if (i == commList.size() - 1 && offlineStartTime != null) {
|
||||
String endTime1 = DATE_TIME_FORMATTER.format(current.getTime()).substring(0, 10) + " 23:59:59";
|
||||
offlinePeriods.add(offlineStartTime + " ~ " + endTime1);
|
||||
offlineStartTime = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CollUtil.isNotEmpty(offlinePeriods)) {
|
||||
|
||||
Reference in New Issue
Block a user