修改消防数据查询报错问题

This commit is contained in:
zq
2026-01-26 14:38:16 +08:00
parent e55cdc6504
commit 1531af2969
3 changed files with 16 additions and 5 deletions

View File

@ -630,6 +630,7 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i
return; return;
} }
Map<String, String> pointMatchMap = pointMatchList.stream() Map<String, String> pointMatchMap = pointMatchList.stream()
.filter(data -> StringUtils.isNotEmpty(data.getDataPoint()))
.collect(Collectors.toMap( .collect(Collectors.toMap(
data -> StringUtils.toCamelCase(data.getMatchField()), // 源字段名转为驼峰 data -> StringUtils.toCamelCase(data.getMatchField()), // 源字段名转为驼峰
EmsPointMatch::getDataPoint, // 获取目标点位名 EmsPointMatch::getDataPoint, // 获取目标点位名

View File

@ -12,7 +12,6 @@ import com.xzzn.common.core.redis.RedisCache;
import com.xzzn.common.enums.DeviceCategory; import com.xzzn.common.enums.DeviceCategory;
import com.xzzn.common.enums.DeviceType; import com.xzzn.common.enums.DeviceType;
import com.xzzn.common.enums.PointType; import com.xzzn.common.enums.PointType;
import com.xzzn.common.enums.SiteEnum;
import com.xzzn.common.enums.WorkStatus; import com.xzzn.common.enums.WorkStatus;
import com.xzzn.common.exception.ServiceException; import com.xzzn.common.exception.ServiceException;
import com.xzzn.common.utils.DateUtils; import com.xzzn.common.utils.DateUtils;
@ -37,6 +36,7 @@ import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -285,10 +285,20 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService
if (v1 == v2) return 0; if (v1 == v2) return 0;
if (v1 == null) return 1; if (v1 == null) return 1;
if (v2 == null) return -1; if (v2 == null) return -1;
// 获取实际比较对象
PointQueryResponse p1 = findByValue(resultResponse, v1);
PointQueryResponse p2 = findByValue(resultResponse, v2);
// 确保比较对象不为null
if (p1 == null && p2 == null) return 0;
if (p1 == null) return 1;
if (p2 == null) return -1;
// 非null值使用基础比较器逻辑 // 非null值使用基础比较器逻辑
return isAsc ? return isAsc ?
comparator.compare(findByValue(resultResponse, v1), findByValue(resultResponse, v2)) : comparator.compare(p1, p2) :
comparator.reversed().compare(findByValue(resultResponse, v1), findByValue(resultResponse, v2)); comparator.reversed().compare(p1, p2);
} }
); );
return resultResponse.stream() return resultResponse.stream()
@ -370,7 +380,7 @@ public class EmsDeviceSettingServiceImpl implements IEmsDeviceSettingService
return list.stream() return list.stream()
.filter(p -> { .filter(p -> {
Object val = p.getPointValue(); Object val = p.getPointValue();
return val == value || (val != null && val.equals(value)); return Objects.equals(val, value);
}) })
.findFirst() .findFirst()
.orElse(null); .orElse(null);

View File

@ -887,7 +887,7 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
xfDataVo.setEmsCommunicationStatus(xfDevice.get("communicationStatus") == null ? "" : xfDevice.get("communicationStatus").toString()); xfDataVo.setEmsCommunicationStatus(xfDevice.get("communicationStatus") == null ? "" : xfDevice.get("communicationStatus").toString());
// 处理枚举匹配字段 // 处理枚举匹配字段
devicePointMatchDataProcessor.convertFieldValueToEnumMatch(siteId, DeviceCategory.XF.getCode(), xfData); devicePointMatchDataProcessor.convertFieldValueToEnumMatch(siteId, DeviceCategory.XF.getCode(), xfDataVo);
emsXfDataList.add(xfDataVo); emsXfDataList.add(xfDataVo);
} }