From 652caf915711beb169b1dbc85837ef12110a3d90 Mon Sep 17 00:00:00 2001 From: George Date: Fri, 3 Apr 2026 06:01:44 +0800 Subject: [PATCH] =?UTF-8?q?20260401:=E7=BD=91=E5=85=B3=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E8=B7=A8=E8=AE=A1=E7=AE=97=E6=95=B0=E6=8D=AE=E6=8E=A8=E9=80=81?= =?UTF-8?q?(bug=E9=87=8D=E5=A4=8D=E6=8E=A8=E9=80=81=E6=95=B0=E6=8D=AE)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/data/push/ThingsModelPushHandler.java | 51 +++++++++---------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/fastbee-iot-data/src/main/java/com/fastbee/iot/data/push/ThingsModelPushHandler.java b/fastbee-iot-data/src/main/java/com/fastbee/iot/data/push/ThingsModelPushHandler.java index 8317238e..58f3c2b6 100644 --- a/fastbee-iot-data/src/main/java/com/fastbee/iot/data/push/ThingsModelPushHandler.java +++ b/fastbee-iot-data/src/main/java/com/fastbee/iot/data/push/ThingsModelPushHandler.java @@ -13,17 +13,17 @@ import com.fastbee.common.utils.StringUtils; import com.fastbee.common.utils.wechat.WechatUtils; import com.fastbee.common.wechat.WeChatAppResult; import com.fastbee.iot.cache.ITSLCache; -import com.fastbee.iot.domain.SubGateway; import com.fastbee.iot.domain.PushModelItem; import com.fastbee.iot.domain.SocialUser; -import com.fastbee.iot.domain.ThingsModel; +import com.fastbee.iot.domain.SubGateway; import com.fastbee.iot.domain.ThingsModelPushConfig; +import com.fastbee.iot.model.ThingsModels.ThingsModelValueItem; import com.fastbee.iot.model.ThingsModels.ValueItem; import com.fastbee.iot.model.gateWay.SubDeviceListVO; -import com.fastbee.iot.service.ISubGatewayService; -import com.fastbee.iot.service.IThingsModelService; -import com.fastbee.iot.service.IThingsModelPushConfigService; import com.fastbee.iot.service.ISocialUserService; +import com.fastbee.iot.service.ISubGatewayService; +import com.fastbee.iot.service.IThingsModelPushConfigService; +import com.fastbee.iot.service.IThingsModelService; import com.fastbee.notify.core.wechat.vo.TemplateDataVo; import com.fastbee.notify.core.wechat.vo.WeChatPublicAccountPushVO; import com.fastbee.notify.domain.NotifyChannel; @@ -161,15 +161,16 @@ public class ThingsModelPushHandler { } Map cacheMap = itslCache.getSimpleThingsModelValueItemByCache(redisKey); Map subDeviceBySlaveId = null; - Map calculatedModelCache = new HashMap<>(); + Map calculatedModelCache = new HashMap<>(); + + // 设备类型 + Integer deviceType = config.getDeviceType(); + for (PushModelItem item : config.getItems()) { ValueItem valueItem = cacheMap.get(item.getIdentifier()); String value; Date ts; - if (valueItem != null) { - value = valueItem.getValue(); - ts = valueItem.getTs(); - } else { + if (deviceType != null && deviceType == 2) { // 如果缓存里没有,尝试按网关计算物模型公式计算(跨设备引用) if (subDeviceBySlaveId == null) { subDeviceBySlaveId = loadSubDeviceBySlaveId(config.getDeviceId()); @@ -177,6 +178,9 @@ public class ThingsModelPushHandler { ComputedValue computed = tryComputeGatewayCalculatedValue(config, serialNumber, item.getIdentifier(), subDeviceBySlaveId, calculatedModelCache); value = computed != null ? computed.value : null; ts = computed != null ? computed.ts : null; + } else { + value = valueItem.getValue(); + ts = valueItem.getTs(); } if (config.getLastPushTime() != null && ts != null && ts.before(config.getLastPushTime())) { log.warn("[Push] configId={} sn={} item={} value={} 时间{}早于上次推送时间{},跳过", @@ -259,27 +263,17 @@ public class ThingsModelPushHandler { String gwSerialNumber, String identifier, Map subDeviceBySlaveId, - Map calculatedModelCache) { + Map calculatedModelCache) { if (config == null || config.getProductId() == null || StringUtils.isEmpty(identifier)) { return null; } - ThingsModel model; + ThingsModelValueItem model; if (calculatedModelCache != null && calculatedModelCache.containsKey(identifier)) { model = calculatedModelCache.get(identifier); } else { - ThingsModel query = new ThingsModel(); - query.setProductId(config.getProductId()); - query.setIdentifier(identifier); - query.setIsCalculated(1); - query.setSerialNumber(gwSerialNumber); - try { - model = thingsModelService.selectSingleThingsModel(query); - } catch (Exception e) { - return null; - } - if (calculatedModelCache != null) { - calculatedModelCache.put(identifier, model); - } + Map calculatedModelMap = itslCache.getDeviceCalculatedModelMap(gwSerialNumber); + calculatedModelCache.putAll(calculatedModelMap); + model = calculatedModelMap.get(identifier); } if (model == null || model.getIsCalculated() == null || model.getIsCalculated() != 1 || StringUtils.isEmpty(model.getFormula())) { @@ -312,9 +306,10 @@ public class ThingsModelPushHandler { val = v.getValue(); } if (v != null && v.getTs() != null) { - if (maxTs == null || v.getTs().after(maxTs)) { - maxTs = v.getTs(); - } +// if (maxTs == null || v.getTs().after(maxTs)) { +// maxTs = v.getTs(); +// } + maxTs = v.getTs(); } } catch (Exception ignored) { }