作者 钟来

修改控制指令bug

1 -# 项目相关配置 jhlt: # 名称 name: zhonglai # 版本 version: 3.8.2 # 版权年份 copyrightYear: 2022 # 实例演示开关 demoEnabled: true # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) profile: D:/ruoyi/uploadPath # 获取ip地址开关 addressEnabled: false # 验证码类型 math 数组计算 char 字符验证 captchaType: math # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 port: 18080 servlet: # 应用的访问路径 context-path: / tomcat: # tomcat的URI编码 uri-encoding: UTF-8 # 连接数满后的排队数,默认为100 accept-count: 1000 threads: # tomcat最大线程数,默认为200 max: 800 # Tomcat启动初始化的线程数,默认值10 min-spare: 100 # 日志配置 logging: level: com.ruoyi: debug org.springframework: warn com.zhonglai.luhui: debug # Spring配置 spring: # 资源信息 messages: # 国际化资源文件路径 basename: i18n/messages profiles: active: druid # 文件上传 servlet: multipart: # 单个文件大小 max-file-size: 10MB # 设置总上传的文件大小 max-request-size: 20MB # 服务模块 devtools: restart: # 热部署开关 enabled: true # redis 配置 redis: # 地址 host: localhost # 端口,默认为6379 port: 6379 # 数据库索引 database: 1 # 密码 password: # 连接超时时间 timeout: 10s lettuce: pool: # 连接池中的最小空闲连接 min-idle: 0 # 连接池中的最大空闲连接 max-idle: 8 # 连接池的最大数据库连接数 max-active: 8 # #连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1ms # token配置 token: # 令牌自定义标识 header: Authorization # 令牌密钥 secret: abcdefghijklmnopqrstuvwxyz # 令牌有效期(默认30分钟) expireTime: 1440 rediskey: lh-api # MyBatis配置 mybatis: # 搜索指定包别名 typeAliasesPackage: com.ruoyi.**.domain,com.zhonglai.**.domain # 配置mapper的扫描,找到所有的mapper.xml映射文件 mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml # PageHelper分页插件 pagehelper: helperDialect: mysql supportMethodsArguments: true params: count=countSql # Swagger配置 swagger: # 是否开启swagger enabled: true # 请求前缀 pathMapping: /dev-api # 防止XSS攻击 xss: # 过滤开关 enabled: true # 排除链接(多个用逗号分隔) excludes: /system/notice # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* mqtt: client: device_life: 180 sys: ## // 对于登录login 注册register 验证码captchaImage 允许匿名访问 antMatchers: /login/ApiLogin/*,/content/**,/test/**,/fish/FishPriceCollection/*,/iot/IotTerminal/listByDeviceId/* # NameServer地址 rocketmq: name-server: 8.129.224.117:9876 # 默认的消息组 producer: group: deviceCommand send-message-timeout: 30000 send-topic: lh-mqtt-service-deviceCommand-test send-tags: 1 ssh: isEnabled: true host: 119.23.218.181 port: 22 user: root password: Luhui586 portForwardingList: - localPort: 6379 remotePort: 6379 remoteHost: 127.0.0.1 - localPort: 3306 remotePort: 3306 remoteHost: 127.0.0.1  
  1 +# 项目相关配置 jhlt: # 名称 name: zhonglai # 版本 version: 3.8.2 # 版权年份 copyrightYear: 2022 # 实例演示开关 demoEnabled: true # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) profile: D:/ruoyi/uploadPath # 获取ip地址开关 addressEnabled: false # 验证码类型 math 数组计算 char 字符验证 captchaType: math # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 port: 18080 servlet: # 应用的访问路径 context-path: / tomcat: # tomcat的URI编码 uri-encoding: UTF-8 # 连接数满后的排队数,默认为100 accept-count: 1000 threads: # tomcat最大线程数,默认为200 max: 800 # Tomcat启动初始化的线程数,默认值10 min-spare: 100 # 日志配置 logging: level: com.ruoyi: debug org.springframework: warn com.zhonglai.luhui: debug # Spring配置 spring: # 资源信息 messages: # 国际化资源文件路径 basename: i18n/messages profiles: active: druid # 文件上传 servlet: multipart: # 单个文件大小 max-file-size: 10MB # 设置总上传的文件大小 max-request-size: 20MB # 服务模块 devtools: restart: # 热部署开关 enabled: true # redis 配置 redis: # 地址 host: 119.23.218.181 # 端口,默认为6379 port: 6379 # 数据库索引 database: 1 # 密码 password: # 连接超时时间 timeout: 10s lettuce: pool: # 连接池中的最小空闲连接 min-idle: 0 # 连接池中的最大空闲连接 max-idle: 8 # 连接池的最大数据库连接数 max-active: 8 # #连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1ms # token配置 token: # 令牌自定义标识 header: Authorization # 令牌密钥 secret: abcdefghijklmnopqrstuvwxyz # 令牌有效期(默认30分钟) expireTime: 1440 rediskey: lh-api # MyBatis配置 mybatis: # 搜索指定包别名 typeAliasesPackage: com.ruoyi.**.domain,com.zhonglai.**.domain # 配置mapper的扫描,找到所有的mapper.xml映射文件 mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml # PageHelper分页插件 pagehelper: helperDialect: mysql supportMethodsArguments: true params: count=countSql # Swagger配置 swagger: # 是否开启swagger enabled: true # 请求前缀 pathMapping: /dev-api # 防止XSS攻击 xss: # 过滤开关 enabled: true # 排除链接(多个用逗号分隔) excludes: /system/notice # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* mqtt: client: device_life: 180 sys: ## // 对于登录login 注册register 验证码captchaImage 允许匿名访问 antMatchers: /login/ApiLogin/*,/content/**,/test/**,/fish/FishPriceCollection/*,/iot/IotTerminal/listByDeviceId/* # NameServer地址 rocketmq: name-server: 8.129.224.117:9876 # 默认的消息组 producer: group: deviceCommand send-message-timeout: 30000 send-topic: lh-mqtt-service-deviceCommand-test send-tags: 1 ssh: isEnabled: true host: 119.23.218.181 port: 22 user: root password: Luhui586 portForwardingList: - localPort: 6379 remotePort: 6379 remoteHost: 127.0.0.1 - localPort: 3306 remotePort: 3306 remoteHost: 127.0.0.1
@@ -3,6 +3,8 @@ package com.zhonglai.luhui.mqtt.service.topic; @@ -3,6 +3,8 @@ package com.zhonglai.luhui.mqtt.service.topic;
3 import com.alibaba.fastjson.JSON; 3 import com.alibaba.fastjson.JSON;
4 import com.alibaba.fastjson.JSONObject; 4 import com.alibaba.fastjson.JSONObject;
5 import com.google.gson.JsonElement; 5 import com.google.gson.JsonElement;
  6 +import com.google.gson.JsonObject;
  7 +import com.google.gson.JsonParser;
6 import com.ruoyi.common.utils.GsonConstructor; 8 import com.ruoyi.common.utils.GsonConstructor;
7 import com.zhonglai.luhui.device.analysis.comm.dto.thingsmodels.ThingsModelItemBase; 9 import com.zhonglai.luhui.device.analysis.comm.dto.thingsmodels.ThingsModelItemBase;
8 import com.zhonglai.luhui.device.analysis.comm.service.BusinessDataUpdateService; 10 import com.zhonglai.luhui.device.analysis.comm.service.BusinessDataUpdateService;
@@ -14,11 +16,14 @@ import com.zhonglai.luhui.device.analysis.comm.dto.thingsmodels.ThingsModelBase; @@ -14,11 +16,14 @@ import com.zhonglai.luhui.device.analysis.comm.dto.thingsmodels.ThingsModelBase;
14 import com.zhonglai.luhui.device.analysis.comm.dto.thingsmodels.ThingsModelDataTypeEnum; 16 import com.zhonglai.luhui.device.analysis.comm.dto.thingsmodels.ThingsModelDataTypeEnum;
15 import com.zhonglai.luhui.device.analysis.comm.factory.BusinessAgreement; 17 import com.zhonglai.luhui.device.analysis.comm.factory.BusinessAgreement;
16 import com.zhonglai.luhui.device.analysis.comm.factory.Topic; 18 import com.zhonglai.luhui.device.analysis.comm.factory.Topic;
  19 +import com.zhonglai.luhui.mqtt.MqttApplication;
17 import com.zhonglai.luhui.mqtt.service.ClienNoticeService; 20 import com.zhonglai.luhui.mqtt.service.ClienNoticeService;
18 import com.zhonglai.luhui.device.analysis.dto.MessageCode; 21 import com.zhonglai.luhui.device.analysis.dto.MessageCode;
19 import com.zhonglai.luhui.device.analysis.dto.topic.ReadReqDto; 22 import com.zhonglai.luhui.device.analysis.dto.topic.ReadReqDto;
20 import com.zhonglai.luhui.device.analysis.comm.db.mode.TerminalDataThingsModeService; 23 import com.zhonglai.luhui.device.analysis.comm.db.mode.TerminalDataThingsModeService;
21 import org.apache.commons.lang3.EnumUtils; 24 import org.apache.commons.lang3.EnumUtils;
  25 +import org.slf4j.Logger;
  26 +import org.slf4j.LoggerFactory;
22 import org.springframework.beans.factory.annotation.Autowired; 27 import org.springframework.beans.factory.annotation.Autowired;
23 import org.springframework.stereotype.Service; 28 import org.springframework.stereotype.Service;
24 29
@@ -27,6 +32,7 @@ import java.util.HashMap; @@ -27,6 +32,7 @@ import java.util.HashMap;
27 32
28 @Service("READ_REQ") 33 @Service("READ_REQ")
29 public class ReadReqTopic implements BusinessAgreement<ReadReqDto> { 34 public class ReadReqTopic implements BusinessAgreement<ReadReqDto> {
  35 + private static Logger log = LoggerFactory.getLogger(ReadReqTopic.class);
30 @Autowired 36 @Autowired
31 private ClienNoticeService clienNoticeService; //客户端通知服务 37 private ClienNoticeService clienNoticeService; //客户端通知服务
32 @Autowired 38 @Autowired
@@ -52,6 +58,7 @@ public class ReadReqTopic implements BusinessAgreement<ReadReqDto> { @@ -52,6 +58,7 @@ public class ReadReqTopic implements BusinessAgreement<ReadReqDto> {
52 for(String vkey:vjsonObject.keySet()) 58 for(String vkey:vjsonObject.keySet())
53 { 59 {
54 JSONObject jsData = vjsonObject.getJSONObject(vkey); 60 JSONObject jsData = vjsonObject.getJSONObject(vkey);
  61 + JsonObject gsonData = GsonConstructor.get().fromJson(jsData.toString(), JsonObject.class);
55 for(String key:jsData.keySet()) 62 for(String key:jsData.keySet())
56 { 63 {
57 IotThingsModel thingsModel = terminalDataThingsModeService.getIotThingsModel(topic.getUsername(),key); 64 IotThingsModel thingsModel = terminalDataThingsModeService.getIotThingsModel(topic.getUsername(),key);
@@ -74,14 +81,17 @@ public class ReadReqTopic implements BusinessAgreement<ReadReqDto> { @@ -74,14 +81,17 @@ public class ReadReqTopic implements BusinessAgreement<ReadReqDto> {
74 { 81 {
75 data_type = ThingsModelDataTypeEnum.STRING.name(); 82 data_type = ThingsModelDataTypeEnum.STRING.name();
76 } 83 }
77 - ThingsModelBase thingsModelBase = ThingsModelItemBase.newhingsModel(Enum.valueOf(ThingsModelDataTypeEnum.class,data_type),thingsModel, GsonConstructor.get().fromJson(jsData.get(key).toString(), JsonElement.class));  
78 -// Class<ThingsModelBase> aClass = Enum.valueOf(ThingsModelDataTypeEnum.class,data_type).getaClass();  
79 -// ThingsModelBase thingsModelBase = JSON.parseObject(thingsModel.getSpecs(),aClass);  
80 -// thingsModelBase.conversionThingsModel(thingsModel);  
81 -//  
82 -// thingsModelBase.addValue(jsData.get(key)); 84 +
  85 + try {
  86 + JsonElement vjson = JsonParser.parseString(gsonData.get(key).toString());
  87 + ThingsModelBase thingsModelBase = ThingsModelItemBase.newhingsModel(Enum.valueOf(ThingsModelDataTypeEnum.class,data_type),thingsModel,vjson);
83 88
84 jsData.put(key,thingsModelBase); 89 jsData.put(key,thingsModelBase);
  90 + }catch (Exception e)
  91 + {
  92 + log.info("{}的值{}解析异常",jsData,key);
  93 + throw e;
  94 + }
85 } 95 }
86 vjsonObject.put(vkey,jsData); 96 vjsonObject.put(vkey,jsData);
87 } 97 }
@@ -115,4 +125,5 @@ public class ReadReqTopic implements BusinessAgreement<ReadReqDto> { @@ -115,4 +125,5 @@ public class ReadReqTopic implements BusinessAgreement<ReadReqDto> {
115 public ReadReqDto toData(BusinessDto data) { 125 public ReadReqDto toData(BusinessDto data) {
116 return JSONObject.parseObject(JSONObject.toJSONString(data.getContentData()),ReadReqDto.class); 126 return JSONObject.parseObject(JSONObject.toJSONString(data.getContentData()),ReadReqDto.class);
117 } 127 }
  128 +
118 } 129 }