作者 钟来

添加topic方式

@@ -3,6 +3,7 @@ package com.zhonglai.luhui.device.protocol.factory.service.impl; @@ -3,6 +3,7 @@ package com.zhonglai.luhui.device.protocol.factory.service.impl;
3 import com.google.gson.JsonObject; 3 import com.google.gson.JsonObject;
4 import com.ruoyi.common.utils.GsonConstructor; 4 import com.ruoyi.common.utils.GsonConstructor;
5 import com.ruoyi.common.utils.StringUtils; 5 import com.ruoyi.common.utils.StringUtils;
  6 +import com.zhonglai.luhui.device.analysis.comm.config.SysParameter;
6 import com.zhonglai.luhui.device.analysis.comm.dao.BaseDao; 7 import com.zhonglai.luhui.device.analysis.comm.dao.BaseDao;
7 import com.zhonglai.luhui.device.analysis.comm.dto.DeviceSensorData; 8 import com.zhonglai.luhui.device.analysis.comm.dto.DeviceSensorData;
8 import com.zhonglai.luhui.device.analysis.comm.dto.LogDeviceOperation; 9 import com.zhonglai.luhui.device.analysis.comm.dto.LogDeviceOperation;
@@ -121,6 +122,7 @@ public class DefaultDbService { @@ -121,6 +122,7 @@ public class DefaultDbService {
121 IotDevice iotDevice = new IotDevice(); 122 IotDevice iotDevice = new IotDevice();
122 iotDevice.setClient_id(parserDeviceHostDto.getId()); 123 iotDevice.setClient_id(parserDeviceHostDto.getId());
123 iotDevice.setData_update_time(parserDeviceHostDto.getUpdateTime()); 124 iotDevice.setData_update_time(parserDeviceHostDto.getUpdateTime());
  125 + iotDevice.setListen_service_ip(SysParameter.service_ip);
124 if(parserDeviceHostDto.is_summary_up()) 126 if(parserDeviceHostDto.is_summary_up())
125 { 127 {
126 if(null != parserDeviceHostDto.getSummary() && parserDeviceHostDto.getSummary().size() != 0) 128 if(null != parserDeviceHostDto.getSummary() && parserDeviceHostDto.getSummary().size() != 0)
@@ -11,6 +11,9 @@ import com.zhonglai.luhui.device.protocol.factory.analysis.ProtocolParserFactory @@ -11,6 +11,9 @@ import com.zhonglai.luhui.device.protocol.factory.analysis.ProtocolParserFactory
11 import com.zhonglai.luhui.device.protocol.factory.dto.ParserDeviceHostDto; 11 import com.zhonglai.luhui.device.protocol.factory.dto.ParserDeviceHostDto;
12 import com.zhonglai.luhui.device.protocol.factory.dto.ParserDeviceInfoDto; 12 import com.zhonglai.luhui.device.protocol.factory.dto.ParserDeviceInfoDto;
13 import com.zhonglai.luhui.device.protocol.factory.dto.ProtocolPurificationModel; 13 import com.zhonglai.luhui.device.protocol.factory.dto.ProtocolPurificationModel;
  14 +import com.zhonglai.luhui.device.protocol.xinjie.analysis.topic.PubData;
  15 +import com.zhonglai.luhui.device.protocol.xinjie.analysis.topic.WriteData;
  16 +import com.zhonglai.luhui.device.protocol.xinjie.analysis.topic.WriteReply;
14 import com.zhonglai.luhui.device.protocol.xinjie.dto.Variant; 17 import com.zhonglai.luhui.device.protocol.xinjie.dto.Variant;
15 import com.zhonglai.luhui.device.protocol.xinjie.dto.XinJieDto; 18 import com.zhonglai.luhui.device.protocol.xinjie.dto.XinJieDto;
16 import org.springframework.stereotype.Service; 19 import org.springframework.stereotype.Service;
@@ -20,52 +23,29 @@ import java.util.List; @@ -20,52 +23,29 @@ import java.util.List;
20 23
21 @Service 24 @Service
22 public class ProtocolParserServiceImpl implements ProtocolParserFactory<byte[]> { 25 public class ProtocolParserServiceImpl implements ProtocolParserFactory<byte[]> {
23 - private static final String topicModel = "/{{roleid}}/{{username}}/{{clientid}}/{{payloadtype}}/{{imei}}/{{topicType}}"; 26 + private static final String topicModel = "/{{roleid}}/{{username}}/{{password}}/{{payloadtype}}/{{clientid}}/{{topicType}}";
24 27
25 @Override 28 @Override
26 public Topic analysisTopic(String topicStr) { 29 public Topic analysisTopic(String topicStr) {
27 // /13/jiulin/476210165B365166812345678Userdata/Json/476210165B365166812345678/pub_data 30 // /13/jiulin/476210165B365166812345678Userdata/Json/476210165B365166812345678/pub_data
28 Topic topic = TopicUtil.initTopicFromModelStr(topicStr,topicModel); 31 Topic topic = TopicUtil.initTopicFromModelStr(topicStr,topicModel);
  32 + topic.setClientid(topic.getClientid().replace("12345678",""));
29 return topic; 33 return topic;
30 } 34 }
31 35
32 @Override 36 @Override
33 public JsonObject analysisPayload(Topic topic, byte[] payload) { 37 public JsonObject analysisPayload(Topic topic, byte[] payload) {
34 - String data = new String(payload);  
35 - XinJieDto xinJieDto = GsonConstructor.get().fromJson(data, XinJieDto.class);  
36 - if(null != xinJieDto.getVariant() && xinJieDto.getVariant().size()!=0) 38 + switch (topic.getTopicType())
37 { 39 {
38 - JsonObject rj = new JsonObject();  
39 -  
40 - analysisHost(rj,xinJieDto);  
41 - analysisDeviceInfo(rj,xinJieDto);  
42 -  
43 - return rj; 40 + case "pub_data":
  41 + return new PubData().analysisPayload(topic,payload);
  42 + case "write_data":
  43 + return new WriteData().analysisPayload(topic,payload);
  44 + case "write_reply":
  45 + return new WriteReply().analysisPayload(topic,payload);
  46 + default:
  47 + return null;
44 } 48 }
45 - return GsonConstructor.get().fromJson(data, JsonObject.class);  
46 - }  
47 -  
48 - private void analysisHost(JsonObject rj,XinJieDto xinJieDto)  
49 - {  
50 - Variant variant = xinJieDto.getVariant().get(0);  
51 - JsonObject data = new JsonObject();  
52 -  
53 - JsonObject summary = new JsonObject();  
54 - summary.addProperty("Unix",variant.getUnix());  
55 - summary.addProperty("Version",variant.getVersion());  
56 - data.add("summary",summary);  
57 - rj.add("0",data);  
58 } 49 }
59 50
60 - private void analysisDeviceInfo(JsonObject rj,XinJieDto xinJieDto )  
61 - {  
62 - Variant variant = xinJieDto.getVariant().get(0);  
63 -  
64 - int i =1;  
65 - for (String key:variant.getPub_Data().keySet())  
66 - {  
67 - rj.add(ByteUtil.changerTwoStr(i+""),variant.getPub_Data().get(key).getAsJsonObject());  
68 - i++;  
69 - }  
70 - }  
71 } 51 }
  1 +package com.zhonglai.luhui.device.protocol.xinjie.analysis;
  2 +
  3 +import com.google.gson.JsonObject;
  4 +import com.zhonglai.luhui.device.analysis.comm.factory.Topic;
  5 +
  6 +public interface ProtocolTopicParser<T> {
  7 + JsonObject analysisPayload(Topic topic, T payload);
  8 +}
  1 +package com.zhonglai.luhui.device.protocol.xinjie.analysis.topic;
  2 +
  3 +import com.google.gson.JsonObject;
  4 +import com.ruoyi.common.utils.GsonConstructor;
  5 +import com.zhonglai.luhui.device.analysis.comm.factory.Topic;
  6 +import com.zhonglai.luhui.device.analysis.comm.util.ByteUtil;
  7 +import com.zhonglai.luhui.device.protocol.xinjie.analysis.ProtocolTopicParser;
  8 +import com.zhonglai.luhui.device.protocol.xinjie.dto.Variant;
  9 +import com.zhonglai.luhui.device.protocol.xinjie.dto.XinJieDto;
  10 +
  11 +public class PubData implements ProtocolTopicParser<byte[]> {
  12 +
  13 + @Override
  14 + public JsonObject analysisPayload(Topic topic, byte[] payload) {
  15 + String data = new String(payload);
  16 + XinJieDto xinJieDto = GsonConstructor.get().fromJson(data, XinJieDto.class);
  17 + if(null != xinJieDto.getVariant() && xinJieDto.getVariant().size()!=0)
  18 + {
  19 + JsonObject rj = new JsonObject();
  20 +
  21 + analysisHost(rj,xinJieDto);
  22 + analysisDeviceInfo(rj,xinJieDto);
  23 +
  24 + return rj;
  25 + }
  26 + return GsonConstructor.get().fromJson(data, JsonObject.class);
  27 + }
  28 +
  29 + private void analysisHost(JsonObject rj,XinJieDto xinJieDto)
  30 + {
  31 + Variant variant = xinJieDto.getVariant().get(0);
  32 + JsonObject data = new JsonObject();
  33 +
  34 + JsonObject summary = new JsonObject();
  35 + summary.addProperty("Unix",variant.getUnix());
  36 + summary.addProperty("Version",variant.getVersion());
  37 + data.add("summary",summary);
  38 + rj.add("0",data);
  39 + }
  40 +
  41 + private void analysisDeviceInfo(JsonObject rj,XinJieDto xinJieDto )
  42 + {
  43 + Variant variant = xinJieDto.getVariant().get(0);
  44 +
  45 + int i =1;
  46 + for (String key:variant.getPub_Data().keySet())
  47 + {
  48 + JsonObject jsonObject = variant.getPub_Data().get(key).getAsJsonObject();
  49 + jsonObject.addProperty("系统名称",key);
  50 + rj.add(ByteUtil.changerTwoStr(i+""),jsonObject);
  51 + i++;
  52 + }
  53 + }
  54 +}
  1 +package com.zhonglai.luhui.device.protocol.xinjie.analysis.topic;
  2 +
  3 +import com.google.gson.JsonObject;
  4 +import com.zhonglai.luhui.device.analysis.comm.factory.Topic;
  5 +import com.zhonglai.luhui.device.protocol.xinjie.analysis.ProtocolTopicParser;
  6 +
  7 +public class WriteData implements ProtocolTopicParser<byte[]> {
  8 + @Override
  9 + public JsonObject analysisPayload(Topic topic, byte[] payload) {
  10 + return null;
  11 + }
  12 +}
  1 +package com.zhonglai.luhui.device.protocol.xinjie.analysis.topic;
  2 +
  3 +import com.google.gson.JsonObject;
  4 +import com.zhonglai.luhui.device.analysis.comm.factory.Topic;
  5 +import com.zhonglai.luhui.device.protocol.xinjie.analysis.ProtocolTopicParser;
  6 +
  7 +public class WriteReply implements ProtocolTopicParser<byte[]> {
  8 + @Override
  9 + public JsonObject analysisPayload(Topic topic, byte[] payload) {
  10 + return null;
  11 + }
  12 +}