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 e8535561..d3cf9ab3 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 @@ -272,8 +272,15 @@ public class ThingsModelPushHandler { model = calculatedModelCache.get(identifier); } else { Map calculatedModelMap = itslCache.getDeviceCalculatedModelMap(gwSerialNumber); - calculatedModelCache.putAll(calculatedModelMap); - model = calculatedModelMap.get(identifier); + if (calculatedModelMap != null && !calculatedModelMap.isEmpty()) { + calculatedModelCache.putAll(calculatedModelMap); + } + Map map = itslCache.getCacheThMapByProductId(config.getProductId()); + if (map != null && !map.isEmpty()) { + calculatedModelCache.putAll(map); + } + log.info("[Push] configId={} sn={} 网关物模型推送总物模型数 size={}", config.getId(), gwSerialNumber, calculatedModelCache.size()); + model = calculatedModelCache.get(identifier); } if (model == null || model.getIsCalculated() == null || model.getIsCalculated() != 1 || StringUtils.isEmpty(model.getFormula())) { diff --git a/fastbee-open-api/src/main/java/com/fastbee/controller/push/ThingsModelPushController.java b/fastbee-open-api/src/main/java/com/fastbee/controller/push/ThingsModelPushController.java index 9bfd9e9e..d81fbb8a 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/controller/push/ThingsModelPushController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/controller/push/ThingsModelPushController.java @@ -75,7 +75,7 @@ public class ThingsModelPushController extends BaseController { @Log(title = "推送配置状态", businessType = BusinessType.UPDATE) @PutMapping("/status") public AjaxResult changeStatus(@RequestBody ThingsModelPushConfig config) { - return toAjax(pushConfigService.updateConfig(config)); + return toAjax(pushConfigService.updateStatus(config.getId(), config.getStatus())); } /** 删除 */ diff --git a/fastbee-protocol/fastbee-protocol-collect/src/main/java/com/fastbee/modbus/codec/ModbusProtocol.java b/fastbee-protocol/fastbee-protocol-collect/src/main/java/com/fastbee/modbus/codec/ModbusProtocol.java index 8e057c1a..92089229 100644 --- a/fastbee-protocol/fastbee-protocol-collect/src/main/java/com/fastbee/modbus/codec/ModbusProtocol.java +++ b/fastbee-protocol/fastbee-protocol-collect/src/main/java/com/fastbee/modbus/codec/ModbusProtocol.java @@ -342,8 +342,8 @@ public class ModbusProtocol implements IProtocol { simpleItem.setTs(nowDate); simpleItem.setCalculated(true); simpleItemList.add(simpleItem); - log.debug("=>添加纯计算物模型到上报列表,设备:[{}],标识符:[{}]", serialNumber, identifier); } + log.debug("=>添加纯计算物模型到上报列表,设备:[{}],标识符:[{}]", serialNumber, calculatedModelMap.keySet()); } catch (Exception e) { log.error("=>处理纯计算物模型时发生错误,设备:[{}],错误:{}", serialNumber, e.getMessage(), e); } diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/cache/impl/TSLCacheImpl.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/cache/impl/TSLCacheImpl.java index 69204e1f..315ad84c 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/cache/impl/TSLCacheImpl.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/cache/impl/TSLCacheImpl.java @@ -94,30 +94,32 @@ public class TSLCacheImpl implements ITSLCache { * @param productId * @return

* { - * "functions": [ - * ], - * "events": [ - * ], - * "properties": [ - * { - * "datatype": { - * "max": 100, - * "min": 1, - * "step": 1, - * "type": "integer", - * "unit": "流明" - * }, - * "id": "light", - * "isChart": 1, - * "isHistory": 1, - * "isMonitor": 1, - * "isReadonly": 1, - * "name": "光强", - * "order": 0, - * "regId": "light", - * "type": 1 - * } - * ] + * "createTime": "2026-03-14 22:30:11", + * "datatype": { + * "arrayCount": 0, + * "arrayType": "", + * "falseText": "", + * "max": 100, + * "maxLength": 1024, + * "min": 0, + * "step": 1, + * "trueText": "", + * "type": "decimal", + * "unit": "V" + * }, + * "formula": "%s-0.0812", + * "id": "Dev_Vol", + * "isCalculated": 0, + * "isChart": 1, + * "isHistory": 1, + * "isMonitor": 1, + * "isReadonly": 1, + * "isSharePerm": 0, + * "modelId": 1054, + * "name": "设备电压", + * "name_zh_CN": "设备电压", + * "order": 0, + * "type": 1 * } *

*/ diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IThingsModelPushConfigService.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IThingsModelPushConfigService.java index ffdd8f57..f9e81f54 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IThingsModelPushConfigService.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/IThingsModelPushConfigService.java @@ -25,6 +25,9 @@ public interface IThingsModelPushConfigService { int updateConfig(ThingsModelPushConfig config); + /** 仅更新启用/停用状态,不影响物模型项和接收用户 */ + int updateStatus(Long id, Integer status); + int deleteByIds(Long[] ids); /** 更新最近推送时间 */ diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ThingsModelPushConfigServiceImpl.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ThingsModelPushConfigServiceImpl.java index cd6c050c..fbce3518 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ThingsModelPushConfigServiceImpl.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/ThingsModelPushConfigServiceImpl.java @@ -74,6 +74,9 @@ public class ThingsModelPushConfigServiceImpl implements IThingsModelPushConfigS update.setStatus(config.getStatus()); update.setUpdateBy(SecurityUtils.getUsername()); update.setUpdateTime(DateUtils.getNowDate()); + if (config.getPushInterval() != null) { + update.setPushInterval(config.getPushInterval()); + } int rows = mapper.update(update); mapper.deleteItemsByConfigId(config.getId()); mapper.deleteUsersByConfigId(config.getId()); @@ -81,6 +84,16 @@ public class ThingsModelPushConfigServiceImpl implements IThingsModelPushConfigS return rows; } + @Override + public int updateStatus(Long id, Integer status) { + ThingsModelPushConfig update = new ThingsModelPushConfig(); + update.setId(id); + update.setStatus(status); + update.setUpdateBy(SecurityUtils.getUsername()); + update.setUpdateTime(DateUtils.getNowDate()); + return mapper.update(update); + } + @Override @Transactional(rollbackFor = Exception.class) public int deleteByIds(Long[] ids) { diff --git a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/ThingsModelPushConfigMapper.xml b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/ThingsModelPushConfigMapper.xml index 33ff417a..f56a95d3 100644 --- a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/ThingsModelPushConfigMapper.xml +++ b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/ThingsModelPushConfigMapper.xml @@ -19,7 +19,6 @@ - @@ -54,7 +53,7 @@ c.id, c.config_name, c.product_id, c.device_id, c.serial_number, c.template_id, c.push_interval, c.last_push_time, c.status, - c.tenant_id, c.tenant_name, c.user_id AS config_owner_user_id, c.create_by, c.create_time, + c.tenant_id, c.tenant_name, c.create_by, c.create_time, c.update_by, c.update_time,p.product_name, p.device_type, d.device_name,d.network_address AS device_address, nt.name AS template_name @@ -67,15 +66,20 @@ - INSERT INTO iot_things_model_push_config - (config_name, product_id, device_id, serial_number, template_id, - push_interval, status, - tenant_id, tenant_name, user_id, create_by, create_time, del_flag) + INSERT INTO + iot_things_model_push_config ( + config_name, + product_id, + device_id, + serial_number, + template_id, + push_interval, + status, + tenant_id, + tenant_name, + create_by, + create_time, + del_flag + ) VALUES - (#{configName}, #{productId}, #{deviceId}, #{serialNumber}, #{templateId}, - #{pushInterval}, #{status}, - #{tenantId}, #{tenantName}, #{userId}, #{createBy}, #{createTime}, '0') + ( + #{configName}, + #{productId}, + #{deviceId}, + #{serialNumber}, + #{templateId}, + #{pushInterval}, + #{status}, + #{tenantId}, + #{tenantName}, + #{createBy}, + #{createTime}, + '0' + ) UPDATE iot_things_model_push_config - config_name = #{configName}, - product_id = #{productId}, - device_id = #{deviceId}, - serial_number = #{serialNumber}, - template_id = #{templateId}, - push_interval = #{pushInterval}, - status = #{status}, + + config_name = #{configName}, + + + product_id = #{productId}, + + + device_id = #{deviceId}, + + + serial_number = #{serialNumber}, + + + template_id = #{templateId}, + + + push_interval = #{pushInterval}, + + + status = #{status}, + update_by = #{updateBy}, update_time = #{updateTime} - WHERE id = #{id} + WHERE + id = #{id} - UPDATE iot_things_model_push_config SET del_flag = '2' WHERE id = #{id} + UPDATE iot_things_model_push_config + SET + del_flag = '2' + WHERE + id = #{id} - UPDATE iot_things_model_push_config SET del_flag = '2' - WHERE id IN + UPDATE iot_things_model_push_config + SET + del_flag = '2' + WHERE + id IN #{id} - UPDATE iot_things_model_push_config SET last_push_time = #{lastPushTime} WHERE id = #{id} + UPDATE iot_things_model_push_config + SET + last_push_time = #{lastPushTime} + WHERE + id = #{id} - INSERT INTO iot_push_model_item - (config_id, model_id, identifier, model_name, unit, - green_min, green_max, yellow_min, yellow_max, sort_order) + INSERT INTO + iot_push_model_item ( + config_id, + model_id, + identifier, + model_name, + unit, + green_min, + green_max, + yellow_min, + yellow_max, + sort_order + ) VALUES - (#{item.configId}, #{item.modelId}, #{item.identifier}, #{item.modelName}, #{item.unit}, - #{item.greenMin}, #{item.greenMax}, #{item.yellowMin}, #{item.yellowMax}, #{item.sortOrder}) + ( + #{item.configId}, + #{item.modelId}, + #{item.identifier}, + #{item.modelName}, + #{item.unit}, + #{item.greenMin}, + #{item.greenMax}, + #{item.yellowMin}, + #{item.yellowMax}, + #{item.sortOrder} + ) - DELETE FROM iot_push_model_item WHERE config_id = #{configId} + DELETE FROM iot_push_model_item + WHERE + config_id = #{configId} - INSERT INTO iot_push_user (config_id, user_id, user_name) + INSERT INTO + iot_push_user (config_id, user_id, user_name) VALUES - (#{u.configId}, #{u.userId}, #{u.userName}) + ( + #{u.configId}, + #{u.userId}, + #{u.userName} + ) - DELETE FROM iot_push_user WHERE config_id = #{configId} + DELETE FROM iot_push_user + WHERE + config_id = #{configId} diff --git a/yack-web/src/views/iot/device/running-status.vue b/yack-web/src/views/iot/device/running-status.vue index f7ecbda9..e178723f 100644 --- a/yack-web/src/views/iot/device/running-status.vue +++ b/yack-web/src/views/iot/device/running-status.vue @@ -102,6 +102,47 @@ + + + +
+ + +
编辑下发指令,回车即可发送
+ + 编辑指令 +
+ 从设备读取 +
+
+