From a338c921d339ca7c873974e5db5d24cb88c6a5e3 Mon Sep 17 00:00:00 2001 From: mashili Date: Tue, 21 Oct 2025 12:39:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=BC=E5=90=88=E6=9F=A5=E8=AF=A2=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/GeneralQueryServiceImpl.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/GeneralQueryServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/GeneralQueryServiceImpl.java index d424da4..c8b53ab 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/impl/GeneralQueryServiceImpl.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/GeneralQueryServiceImpl.java @@ -271,7 +271,7 @@ public class GeneralQueryServiceImpl implements IGeneralQueryService private Stats clacStats(List deviceDataList) { // 提取有效数值(过滤null) List values = deviceDataList.stream() - .map(vo -> (BigDecimal) vo.getPointValue()) + .map(vo -> convertToBigDecimal(vo.getPointValue())) .filter(value -> value != null) // 过滤null值 .collect(Collectors.toList()); if (values.isEmpty()) { @@ -290,6 +290,27 @@ public class GeneralQueryServiceImpl implements IGeneralQueryService return new Stats(maxValue,minValue,avgValue,diff); } + private BigDecimal convertToBigDecimal(Object pointValue) { + if (pointValue == null) { + return null; + } + // 根据实际存储的数值类型,依次判断并转换 + if (pointValue instanceof BigDecimal) { + return (BigDecimal) pointValue; + } else if (pointValue instanceof Integer) { + return new BigDecimal ((Integer) pointValue); + } else if (pointValue instanceof Long) { + return new BigDecimal ((Long) pointValue); + } else if (pointValue instanceof Double) { + return BigDecimal.valueOf ((Double) pointValue); // 避免 Double 精度丢失 + } else if (pointValue instanceof Float) { + return BigDecimal.valueOf ((Float) pointValue); + } else { + // 非数值类型(如 String),可根据业务需求处理(此处返回 null) + return null; + } + } + private void dealDataTime(PointNameRequest request) { String startDate = request.getStartDate(); String endDate = request.getEndDate(); @@ -354,7 +375,7 @@ public class GeneralQueryServiceImpl implements IGeneralQueryService data.setValueDate(minute); data.setSiteId(siteId); data.setDeviceId(deviceId); - data.setPointValue(lastValue==null? 0 : lastValue); // 用上一分钟值填充 + data.setPointValue(lastValue==null? BigDecimal.ZERO : lastValue); // 用上一分钟值填充 } else { lastValue = data.getPointValue(); // 更新最新值 }