正在显示
5 个修改的文件
包含
44 行增加
和
22 行删除
| @@ -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 |
-
请 注册 或 登录 后发表评论