作者 钟来

添加日志功能

@@ -58,7 +58,7 @@ public class BusinessDataUpdateService { @@ -58,7 +58,7 @@ public class BusinessDataUpdateService {
58 * @param type 58 * @param type
59 * @param topic 59 * @param topic
60 */ 60 */
61 - public void updataDta(Type type, Topic topic, ServerDto serverDto) 61 + public void updataDta(Type type, Topic topic, ServerDto serverDto,String operationType,boolean isLog)
62 { 62 {
63 IotDevice olddevice = cacheService.getIotDevice(topic.getClientid()); 63 IotDevice olddevice = cacheService.getIotDevice(topic.getClientid());
64 64
@@ -81,7 +81,7 @@ public class BusinessDataUpdateService { @@ -81,7 +81,7 @@ public class BusinessDataUpdateService {
81 JSONObject jsData = data.getJSONObject(key); 81 JSONObject jsData = data.getJSONObject(key);
82 if("0".equals(key)) //主机 82 if("0".equals(key)) //主机
83 { 83 {
84 - IotDevice iotDevice = translateDevice(type,olddevice,jsData,serverDto); 84 + IotDevice iotDevice = translateDevice(type,olddevice,jsData,serverDto,operationType,isLog);
85 if(isText) 85 if(isText)
86 { 86 {
87 iotDevice.setListen_service_ip("127.0.0.1"+":"+port+contextPath); 87 iotDevice.setListen_service_ip("127.0.0.1"+":"+port+contextPath);
@@ -97,7 +97,7 @@ public class BusinessDataUpdateService { @@ -97,7 +97,7 @@ public class BusinessDataUpdateService {
97 iotDevice.setName(olddevice.getName()); 97 iotDevice.setName(olddevice.getName());
98 serverDto.setIotDevice(iotDevice); 98 serverDto.setIotDevice(iotDevice);
99 }else{ //终端 99 }else{ //终端
100 - IotTerminal iotTerminal = translateTerminal(type,key,olddevice,jsData,serverDto); 100 + IotTerminal iotTerminal = translateTerminal(type,key,olddevice,jsData,serverDto,operationType,isLog);
101 iotTerminal.setData_update_time(DateUtils.getNowTimeMilly()); 101 iotTerminal.setData_update_time(DateUtils.getNowTimeMilly());
102 if(null== iotTerminal.getOnline() || 1 == iotTerminal.getOnline() || 4==iotTerminal.getOnline()) 102 if(null== iotTerminal.getOnline() || 1 == iotTerminal.getOnline() || 4==iotTerminal.getOnline())
103 { 103 {
@@ -117,7 +117,7 @@ public class BusinessDataUpdateService { @@ -117,7 +117,7 @@ public class BusinessDataUpdateService {
117 * @param serverDto 117 * @param serverDto
118 * @return 118 * @return
119 */ 119 */
120 - private IotDevice translateDevice(Type type, IotDevice olddevice , JSONObject jsData, ServerDto serverDto) 120 + private IotDevice translateDevice(Type type, IotDevice olddevice , JSONObject jsData, ServerDto serverDto,String operationType,boolean isLog)
121 { 121 {
122 JSONObject summaryObjec = null; 122 JSONObject summaryObjec = null;
123 if(jsData.containsKey("summary") && null != jsData.get("summary") && jsData.get("summary") instanceof JSONObject) 123 if(jsData.containsKey("summary") && null != jsData.get("summary") && jsData.get("summary") instanceof JSONObject)
@@ -139,14 +139,14 @@ public class BusinessDataUpdateService { @@ -139,14 +139,14 @@ public class BusinessDataUpdateService {
139 if(null != olddevice && ("ADD".equals(type.name())|| "READ".equals(type.name()))) 139 if(null != olddevice && ("ADD".equals(type.name())|| "READ".equals(type.name())))
140 { 140 {
141 String str = olddevice.getThings_model_value(); 141 String str = olddevice.getThings_model_value();
142 - String newStr = deviceService.getNewAdddate(device.getClient_id(),str,saveDataDto.getData(),serverDto.getLogDeviceOperationList()).toJSONString(); 142 + String newStr = deviceService.getNewAdddate(device.getClient_id(),str,saveDataDto.getData(),serverDto.getLogDeviceOperationList(),operationType,isLog).toJSONString();
143 device.setThings_model_value(newStr); 143 device.setThings_model_value(newStr);
144 }else{ 144 }else{
145 device.setThings_model_value(saveDataDto.getData().toJSONString()); 145 device.setThings_model_value(saveDataDto.getData().toJSONString());
146 } 146 }
147 //配置只做增量 147 //配置只做增量
148 String str = (null!=olddevice?olddevice.getThings_model_config():null); 148 String str = (null!=olddevice?olddevice.getThings_model_config():null);
149 - String newStr = deviceService.getNewAdddate(device.getClient_id(),str,saveDataDto.getConfig(),serverDto.getLogDeviceOperationList()).toJSONString(); 149 + String newStr = deviceService.getNewAdddate(device.getClient_id(),str,saveDataDto.getConfig(),serverDto.getLogDeviceOperationList(),operationType,isLog).toJSONString();
150 device.setThings_model_config(newStr); 150 device.setThings_model_config(newStr);
151 151
152 return device; 152 return device;
@@ -161,7 +161,7 @@ public class BusinessDataUpdateService { @@ -161,7 +161,7 @@ public class BusinessDataUpdateService {
161 * @param serverDto 161 * @param serverDto
162 * @return 162 * @return
163 */ 163 */
164 - private IotTerminal translateTerminal(Type type,String key, IotDevice olddevice , JSONObject jsData,ServerDto serverDto) 164 + private IotTerminal translateTerminal(Type type,String key, IotDevice olddevice , JSONObject jsData,ServerDto serverDto,String operationType,boolean isLog)
165 { 165 {
166 String id = olddevice.getClient_id()+"_"+key; 166 String id = olddevice.getClient_id()+"_"+key;
167 SaveDataDto saveDataDto = dataModeAnalysisService.analysisThingsModelValue( id,olddevice.getMqtt_username(),jsData,serverDto); 167 SaveDataDto saveDataDto = dataModeAnalysisService.analysisThingsModelValue( id,olddevice.getMqtt_username(),jsData,serverDto);
@@ -177,7 +177,7 @@ public class BusinessDataUpdateService { @@ -177,7 +177,7 @@ public class BusinessDataUpdateService {
177 if(null != oldterminal && ("ADD".equals(type.name())|| "READ".equals(type.name()))) 177 if(null != oldterminal && ("ADD".equals(type.name())|| "READ".equals(type.name())))
178 { 178 {
179 String str = oldterminal.getThings_model_value(); 179 String str = oldterminal.getThings_model_value();
180 - terminal.setThings_model_value(deviceService.getNewAdddate(id,str,saveDataDto.getData(),serverDto.getLogDeviceOperationList()).toJSONString()); 180 + terminal.setThings_model_value(deviceService.getNewAdddate(id,str,saveDataDto.getData(),serverDto.getLogDeviceOperationList(),operationType,false).toJSONString());
181 }else{ 181 }else{
182 terminal.setThings_model_value(saveDataDto.getData().toJSONString()); 182 terminal.setThings_model_value(saveDataDto.getData().toJSONString());
183 } 183 }
@@ -186,7 +186,7 @@ public class BusinessDataUpdateService { @@ -186,7 +186,7 @@ public class BusinessDataUpdateService {
186 System.out.println(saveDataDto); 186 System.out.println(saveDataDto);
187 } 187 }
188 String str = (null!=oldterminal?oldterminal.getThings_model_config():null); 188 String str = (null!=oldterminal?oldterminal.getThings_model_config():null);
189 - terminal.setThings_model_config(deviceService.getNewAdddate(id,str,saveDataDto.getConfig(),serverDto.getLogDeviceOperationList()).toJSONString()); 189 + terminal.setThings_model_config(deviceService.getNewAdddate(id,str,saveDataDto.getConfig(),serverDto.getLogDeviceOperationList(),operationType,isLog).toJSONString());
190 terminal.setName(oldterminal.getName()); 190 terminal.setName(oldterminal.getName());
191 return terminal; 191 return terminal;
192 } 192 }
@@ -61,8 +61,6 @@ public class MqttCallback implements MqttCallbackExtended { @@ -61,8 +61,6 @@ public class MqttCallback implements MqttCallbackExtended {
61 @Override 61 @Override
62 public void messageArrived(String s, MqttMessage mqttMessage) { 62 public void messageArrived(String s, MqttMessage mqttMessage) {
63 //接收到消息 63 //接收到消息
64 - log.info("接收到消息topc:{}, mqttMessage {},payload 十六进制 {}",s,mqttMessage, ByteUtil.hexStringToSpace(ByteUtil.toHexString(mqttMessage.getPayload())));  
65 -  
66 StringBuffer buffer = new StringBuffer(); 64 StringBuffer buffer = new StringBuffer();
67 buffer.append("topic:"); 65 buffer.append("topic:");
68 buffer.append(s); 66 buffer.append(s);
@@ -10,18 +10,23 @@ import com.zhonglai.luhui.mqtt.comm.config.RedisConfig; @@ -10,18 +10,23 @@ import com.zhonglai.luhui.mqtt.comm.config.RedisConfig;
10 import com.zhonglai.luhui.mqtt.comm.dao.BaseDao; 10 import com.zhonglai.luhui.mqtt.comm.dao.BaseDao;
11 import com.zhonglai.luhui.mqtt.comm.dto.DeviceInfoDto; 11 import com.zhonglai.luhui.mqtt.comm.dto.DeviceInfoDto;
12 import com.zhonglai.luhui.mqtt.comm.dto.LogDeviceOperation; 12 import com.zhonglai.luhui.mqtt.comm.dto.LogDeviceOperation;
  13 +import com.zhonglai.luhui.mqtt.comm.dto.ServerDto;
13 import com.zhonglai.luhui.mqtt.comm.dto.thingsmodels.ThingsModelBase; 14 import com.zhonglai.luhui.mqtt.comm.dto.thingsmodels.ThingsModelBase;
14 import com.zhonglai.luhui.mqtt.comm.dto.thingsmodels.ThingsModelDataTypeEnum; 15 import com.zhonglai.luhui.mqtt.comm.dto.thingsmodels.ThingsModelDataTypeEnum;
15 import com.zhonglai.luhui.mqtt.comm.dto.thingsmodels.ThingsModelItemBase; 16 import com.zhonglai.luhui.mqtt.comm.dto.thingsmodels.ThingsModelItemBase;
16 import com.zhonglai.luhui.mqtt.comm.factory.Topic; 17 import com.zhonglai.luhui.mqtt.comm.factory.Topic;
  18 +import com.zhonglai.luhui.mqtt.comm.service.BusinessDataUpdateService;
17 import com.zhonglai.luhui.mqtt.comm.service.ClienNoticeService; 19 import com.zhonglai.luhui.mqtt.comm.service.ClienNoticeService;
18 import com.zhonglai.luhui.mqtt.comm.service.DeviceLogService; 20 import com.zhonglai.luhui.mqtt.comm.service.DeviceLogService;
19 import com.zhonglai.luhui.mqtt.comm.service.redis.RedisService; 21 import com.zhonglai.luhui.mqtt.comm.service.redis.RedisService;
20 import com.zhonglai.luhui.mqtt.comm.util.DateUtils; 22 import com.zhonglai.luhui.mqtt.comm.util.DateUtils;
21 import com.zhonglai.luhui.mqtt.dto.Message; 23 import com.zhonglai.luhui.mqtt.dto.Message;
22 import com.zhonglai.luhui.mqtt.dto.MessageCode; 24 import com.zhonglai.luhui.mqtt.dto.MessageCode;
  25 +import com.zhonglai.luhui.mqtt.dto.topic.AddPostDto;
23 import com.zhonglai.luhui.mqtt.service.CacheServiceImpl; 26 import com.zhonglai.luhui.mqtt.service.CacheServiceImpl;
  27 +import com.zhonglai.luhui.mqtt.service.DataPersistenceServiceImpl;
24 import com.zhonglai.luhui.mqtt.service.db.mode.TerminalDataThingsModeService; 28 import com.zhonglai.luhui.mqtt.service.db.mode.TerminalDataThingsModeService;
  29 +import com.zhonglai.luhui.mqtt.service.topic.AddPostTopic;
25 import org.apache.commons.lang3.StringUtils; 30 import org.apache.commons.lang3.StringUtils;
26 import org.eclipse.paho.client.mqttv3.MqttException; 31 import org.eclipse.paho.client.mqttv3.MqttException;
27 import org.eclipse.paho.client.mqttv3.MqttMessage; 32 import org.eclipse.paho.client.mqttv3.MqttMessage;
@@ -52,6 +57,11 @@ public class DeviceService { @@ -52,6 +57,11 @@ public class DeviceService {
52 private DeviceLogService dviceLogService; 57 private DeviceLogService dviceLogService;
53 58
54 private BaseDao baseDao = new BaseDao(); 59 private BaseDao baseDao = new BaseDao();
  60 + @Autowired
  61 + private DataPersistenceServiceImpl dataPersistenceService;
  62 +
  63 + @Autowired
  64 + private BusinessDataUpdateService businessDataUpdateService ;
55 65
56 /** 66 /**
57 * 根据id获取终端 67 * 根据id获取终端
@@ -90,7 +100,7 @@ public class DeviceService { @@ -90,7 +100,7 @@ public class DeviceService {
90 * @param saveJson 100 * @param saveJson
91 * @return 101 * @return
92 */ 102 */
93 - public JSONObject getNewAdddate(String id,String oldstr, JSONObject saveJson, List<LogDeviceOperation> logDeviceOperationList) 103 + public JSONObject getNewAdddate(String id,String oldstr, JSONObject saveJson, List<LogDeviceOperation> logDeviceOperationList,String operationType,boolean isLog)
94 { 104 {
95 JSONObject oldjs = new JSONObject(); 105 JSONObject oldjs = new JSONObject();
96 if(StringUtils.isNoneBlank(oldstr)) 106 if(StringUtils.isNoneBlank(oldstr))
@@ -101,11 +111,11 @@ public class DeviceService { @@ -101,11 +111,11 @@ public class DeviceService {
101 for (String sk:saveJson.keySet()) 111 for (String sk:saveJson.keySet())
102 { 112 {
103 ThingsModelItemBase thingsModelItemBase = (ThingsModelItemBase) saveJson.get(sk); 113 ThingsModelItemBase thingsModelItemBase = (ThingsModelItemBase) saveJson.get(sk);
104 - if(null != thingsModelItemBase.getMode_type() && (2==thingsModelItemBase.getMode_type() || 3==thingsModelItemBase.getMode_type()) && null != logDeviceOperationList) 114 + if(isLog || (null != thingsModelItemBase.getMode_type() && (2==thingsModelItemBase.getMode_type() || 3==thingsModelItemBase.getMode_type()) && null != logDeviceOperationList))
105 { 115 {
106 - if(null!=thingsModelItemBase.getSaveView() && null != oldjs && oldjs.containsKey(sk) && !thingsModelItemBase.getSaveView().equals(oldjs.getJSONObject(sk).getString("saveView"))) 116 + if(isLog ||(null!=thingsModelItemBase.getSaveView() && null != oldjs && oldjs.containsKey(sk) && !thingsModelItemBase.getSaveView().equals(oldjs.getJSONObject(sk).getString("saveView"))))
107 { 117 {
108 - logDeviceOperationList.add(dviceLogService.newLogDeviceOperation(id,thingsModelItemBase.getSaveView(),oldjs.getJSONObject(sk).getString("saveView"),"本地操作"+thingsModelItemBase.getName()+"为"+thingsModelItemBase.getView(),null)); 118 + logDeviceOperationList.add(dviceLogService.newLogDeviceOperation(id,thingsModelItemBase.getSaveView(),oldjs.getJSONObject(sk).getString("saveView"),operationType+thingsModelItemBase.getName()+"为"+thingsModelItemBase.getView(),null));
109 } 119 }
110 } 120 }
111 oldjs.put(sk,saveJson.get(sk)); 121 oldjs.put(sk,saveJson.get(sk));
@@ -319,6 +329,8 @@ public class DeviceService { @@ -319,6 +329,8 @@ public class DeviceService {
319 topic.setTopicType("PUT"); 329 topic.setTopicType("PUT");
320 topic.setMessageid(DateUtils.getNowTimeMilly()+""); 330 topic.setMessageid(DateUtils.getNowTimeMilly()+"");
321 331
  332 + StringBuffer stringBuffer = new StringBuffer("");
  333 + List<LogDeviceOperation> logDeviceOperationList = new ArrayList<>();
322 for(String key:map.keySet()) 334 for(String key:map.keySet())
323 { 335 {
324 Object sendMap = map.get(key); 336 Object sendMap = map.get(key);
@@ -343,20 +355,32 @@ public class DeviceService { @@ -343,20 +355,32 @@ public class DeviceService {
343 String data_type = thingsModel.getData_type().toUpperCase(); 355 String data_type = thingsModel.getData_type().toUpperCase();
344 Class<ThingsModelBase> aClass = Enum.valueOf(ThingsModelDataTypeEnum.class,data_type).getaClass(); 356 Class<ThingsModelBase> aClass = Enum.valueOf(ThingsModelDataTypeEnum.class,data_type).getaClass();
345 ThingsModelBase thingsModelBase = JSON.parseObject(thingsModel.getSpecs(),aClass); 357 ThingsModelBase thingsModelBase = JSON.parseObject(thingsModel.getSpecs(),aClass);
346 - jsonObject.put(skey,thingsModelBase.getCmdView(jsonObject.get(skey))); 358 + thingsModelBase.conversionThingsModel(thingsModel);
  359 + thingsModelBase.addValue(jsonObject.get(skey));
  360 + ThingsModelItemBase thingsModelItemBase = (ThingsModelItemBase) thingsModelBase;
  361 + jsonObject.put(skey,thingsModelItemBase.getCmdView(jsonObject.get(skey)));
  362 + String id = clienid+"_"+key;
  363 + logDeviceOperationList.add(dviceLogService.newLogDeviceOperation(id,thingsModelItemBase.getSaveView(),null,"远程控制"+thingsModelItemBase.getName()+"为"+thingsModelItemBase.getView(),null));
347 } 364 }
348 365
349 map.put(key,jsonObject); 366 map.put(key,jsonObject);
350 - }  
351 367
  368 + }
352 MqttMessage mqttMessage = new MqttMessage(); 369 MqttMessage mqttMessage = new MqttMessage();
353 mqttMessage.setPayload(JSON.toJSONString(map).trim().getBytes()); 370 mqttMessage.setPayload(JSON.toJSONString(map).trim().getBytes());
354 Message message = clienNoticeService.sendMessage(topic,mqttMessage); 371 Message message = clienNoticeService.sendMessage(topic,mqttMessage);
355 if(1==message.getCode()) 372 if(1==message.getCode())
356 { 373 {
357 - List<LogDeviceOperation> list = new ArrayList<>();  
358 - list.add(dviceLogService.newLogDeviceOperation(clienid,JSON.toJSONString(message.getData()),null,"远程操作控制","control?"+JSON.toJSONString(map).trim()));  
359 - dviceLogService.saveOperationLog(list); 374 + topic.setClientid(clienid);
  375 + AddPostDto addPostDto = new AddPostDto();
  376 + addPostDto.setData(JSON.parseObject(JSON.toJSONString(map)));
  377 + addPostDto.setIotTerminalList(new ArrayList<>());
  378 + addPostDto.setDeviceSensorDataList(new ArrayList<>());
  379 + addPostDto.setLogDeviceOperationList(new ArrayList<>());
  380 + businessDataUpdateService.updataDta(BusinessDataUpdateService.Type.ADD,topic,addPostDto,"远程控制",true);
  381 + cacheServiceImpl.updateCache(topic,addPostDto);
  382 + addPostDto.setLogDeviceOperationList(logDeviceOperationList);
  383 + dataPersistenceService.persistence(topic,addPostDto);
360 } 384 }
361 return message; 385 return message;
362 } 386 }
@@ -22,7 +22,7 @@ public class AddPostTopic implements BusinessAgreement<AddPostDto> { @@ -22,7 +22,7 @@ public class AddPostTopic implements BusinessAgreement<AddPostDto> {
22 private BusinessDataUpdateService businessDataUpdateService ; 22 private BusinessDataUpdateService businessDataUpdateService ;
23 @Override 23 @Override
24 public ServerDto analysis(Topic topic, AddPostDto data) { 24 public ServerDto analysis(Topic topic, AddPostDto data) {
25 - businessDataUpdateService.updataDta(BusinessDataUpdateService.Type.ADD,topic,data); 25 + businessDataUpdateService.updataDta(BusinessDataUpdateService.Type.ADD,topic,data,"本地控制",false);
26 return data; 26 return data;
27 } 27 }
28 28
@@ -23,7 +23,7 @@ public class AllPostTopic implements BusinessAgreement<AllPostDto> { @@ -23,7 +23,7 @@ public class AllPostTopic implements BusinessAgreement<AllPostDto> {
23 private BusinessDataUpdateService businessDataUpdateService ; 23 private BusinessDataUpdateService businessDataUpdateService ;
24 @Override 24 @Override
25 public ServerDto analysis(Topic topic, AllPostDto data) throws Exception { 25 public ServerDto analysis(Topic topic, AllPostDto data) throws Exception {
26 - businessDataUpdateService.updataDta(BusinessDataUpdateService.Type.ALL,topic,data); 26 + businessDataUpdateService.updataDta(BusinessDataUpdateService.Type.ALL,topic,data,"本地",false);
27 return data; 27 return data;
28 } 28 }
29 29