fix(event): 修复事件详情波形路径更新逻辑
- 修正CsEventPOServiceImpl中wavePath更新时的对象引用错误 - 在EventDetailVO中新增startTime2字段用于显示不带毫秒的时间 - 优化DataTaskServiceImpl中的设备通信离线时段计算逻辑 - 完善DeviceMessageServiceImpl中设备消息映射的边界情况处理
This commit is contained in:
@@ -103,6 +103,8 @@ class DeviceMessageServiceImpl implements DeviceMessageService {
|
||||
map.put(1,item.getLineId());
|
||||
} else if (Objects.equals(dictData.getCode(), DicDataEnum.LOAD_SIDE.getCode())){
|
||||
map.put(2,item.getLineId());
|
||||
} else {
|
||||
map.put(item.getClDid(),item.getLineId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,6 +62,13 @@ public class EventDetailVO {
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS",timezone = "GMT+8")
|
||||
private LocalDateTime startTime;
|
||||
|
||||
/**
|
||||
* 事件时间 不带毫秒
|
||||
*/
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
|
||||
private LocalDateTime startTime2;
|
||||
|
||||
/**
|
||||
* 事件类型
|
||||
*/
|
||||
|
||||
@@ -459,7 +459,7 @@ public class CsEventPOServiceImpl extends ServiceImpl<CsEventPOMapper, CsEventPO
|
||||
LambdaQueryWrapper<RmpEventDetailPO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(RmpEventDetailPO::getEventId,id);
|
||||
RmpEventDetailPO po2 = wlRmpEventDetailMapper.selectOne(wrapper);
|
||||
po2.setWavePath(po2.getWavePath());
|
||||
po2.setWavePath(po.getWavePath());
|
||||
po2.setFileFlag(1);
|
||||
int row = wlRmpEventDetailMapper.updateById(po2);
|
||||
if (row > 0) {
|
||||
|
||||
@@ -46,6 +46,8 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -350,6 +352,9 @@ public class CsEventUserPOServiceImpl extends ServiceImpl<CsEventUserPOMapper, C
|
||||
List<String> ids = returnpage.getRecords().stream().map(EventDetailVO::getId).collect(Collectors.toList());
|
||||
List<CsEventUserPO> userEvents = this.queryEventListByUserId(RequestUtil.getUserIndex(),ids);
|
||||
returnpage.getRecords().forEach(temp -> {
|
||||
if (!Objects.equals(csEventUserQueryPage.getType(),"0")) {
|
||||
temp.setStartTime2(temp.getStartTime());
|
||||
}
|
||||
//台账信息
|
||||
DevDetailDTO devDetail = csLedgerFeignClient.queryDevDetail(temp.getDeviceId()).getData();
|
||||
temp.setEquipmentName(devDetail.getEquipmentName());
|
||||
|
||||
@@ -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