作者 钟来

添加日志功能

... ... @@ -58,7 +58,7 @@ public class BusinessDataUpdateService {
* @param type
* @param topic
*/
public void updataDta(Type type, Topic topic, ServerDto serverDto)
public void updataDta(Type type, Topic topic, ServerDto serverDto,String operationType,boolean isLog)
{
IotDevice olddevice = cacheService.getIotDevice(topic.getClientid());
... ... @@ -81,7 +81,7 @@ public class BusinessDataUpdateService {
JSONObject jsData = data.getJSONObject(key);
if("0".equals(key)) //主机
{
IotDevice iotDevice = translateDevice(type,olddevice,jsData,serverDto);
IotDevice iotDevice = translateDevice(type,olddevice,jsData,serverDto,operationType,isLog);
if(isText)
{
iotDevice.setListen_service_ip("127.0.0.1"+":"+port+contextPath);
... ... @@ -97,7 +97,7 @@ public class BusinessDataUpdateService {
iotDevice.setName(olddevice.getName());
serverDto.setIotDevice(iotDevice);
}else{ //终端
IotTerminal iotTerminal = translateTerminal(type,key,olddevice,jsData,serverDto);
IotTerminal iotTerminal = translateTerminal(type,key,olddevice,jsData,serverDto,operationType,isLog);
iotTerminal.setData_update_time(DateUtils.getNowTimeMilly());
if(null== iotTerminal.getOnline() || 1 == iotTerminal.getOnline() || 4==iotTerminal.getOnline())
{
... ... @@ -117,7 +117,7 @@ public class BusinessDataUpdateService {
* @param serverDto
* @return
*/
private IotDevice translateDevice(Type type, IotDevice olddevice , JSONObject jsData, ServerDto serverDto)
private IotDevice translateDevice(Type type, IotDevice olddevice , JSONObject jsData, ServerDto serverDto,String operationType,boolean isLog)
{
JSONObject summaryObjec = null;
if(jsData.containsKey("summary") && null != jsData.get("summary") && jsData.get("summary") instanceof JSONObject)
... ... @@ -139,14 +139,14 @@ public class BusinessDataUpdateService {
if(null != olddevice && ("ADD".equals(type.name())|| "READ".equals(type.name())))
{
String str = olddevice.getThings_model_value();
String newStr = deviceService.getNewAdddate(device.getClient_id(),str,saveDataDto.getData(),serverDto.getLogDeviceOperationList()).toJSONString();
String newStr = deviceService.getNewAdddate(device.getClient_id(),str,saveDataDto.getData(),serverDto.getLogDeviceOperationList(),operationType,isLog).toJSONString();
device.setThings_model_value(newStr);
}else{
device.setThings_model_value(saveDataDto.getData().toJSONString());
}
//配置只做增量
String str = (null!=olddevice?olddevice.getThings_model_config():null);
String newStr = deviceService.getNewAdddate(device.getClient_id(),str,saveDataDto.getConfig(),serverDto.getLogDeviceOperationList()).toJSONString();
String newStr = deviceService.getNewAdddate(device.getClient_id(),str,saveDataDto.getConfig(),serverDto.getLogDeviceOperationList(),operationType,isLog).toJSONString();
device.setThings_model_config(newStr);
return device;
... ... @@ -161,7 +161,7 @@ public class BusinessDataUpdateService {
* @param serverDto
* @return
*/
private IotTerminal translateTerminal(Type type,String key, IotDevice olddevice , JSONObject jsData,ServerDto serverDto)
private IotTerminal translateTerminal(Type type,String key, IotDevice olddevice , JSONObject jsData,ServerDto serverDto,String operationType,boolean isLog)
{
String id = olddevice.getClient_id()+"_"+key;
SaveDataDto saveDataDto = dataModeAnalysisService.analysisThingsModelValue( id,olddevice.getMqtt_username(),jsData,serverDto);
... ... @@ -177,7 +177,7 @@ public class BusinessDataUpdateService {
if(null != oldterminal && ("ADD".equals(type.name())|| "READ".equals(type.name())))
{
String str = oldterminal.getThings_model_value();
terminal.setThings_model_value(deviceService.getNewAdddate(id,str,saveDataDto.getData(),serverDto.getLogDeviceOperationList()).toJSONString());
terminal.setThings_model_value(deviceService.getNewAdddate(id,str,saveDataDto.getData(),serverDto.getLogDeviceOperationList(),operationType,false).toJSONString());
}else{
terminal.setThings_model_value(saveDataDto.getData().toJSONString());
}
... ... @@ -186,7 +186,7 @@ public class BusinessDataUpdateService {
System.out.println(saveDataDto);
}
String str = (null!=oldterminal?oldterminal.getThings_model_config():null);
terminal.setThings_model_config(deviceService.getNewAdddate(id,str,saveDataDto.getConfig(),serverDto.getLogDeviceOperationList()).toJSONString());
terminal.setThings_model_config(deviceService.getNewAdddate(id,str,saveDataDto.getConfig(),serverDto.getLogDeviceOperationList(),operationType,isLog).toJSONString());
terminal.setName(oldterminal.getName());
return terminal;
}
... ...
... ... @@ -61,8 +61,6 @@ public class MqttCallback implements MqttCallbackExtended {
@Override
public void messageArrived(String s, MqttMessage mqttMessage) {
//接收到消息
log.info("接收到消息topc:{}, mqttMessage {},payload 十六进制 {}",s,mqttMessage, ByteUtil.hexStringToSpace(ByteUtil.toHexString(mqttMessage.getPayload())));
StringBuffer buffer = new StringBuffer();
buffer.append("topic:");
buffer.append(s);
... ...
... ... @@ -10,18 +10,23 @@ import com.zhonglai.luhui.mqtt.comm.config.RedisConfig;
import com.zhonglai.luhui.mqtt.comm.dao.BaseDao;
import com.zhonglai.luhui.mqtt.comm.dto.DeviceInfoDto;
import com.zhonglai.luhui.mqtt.comm.dto.LogDeviceOperation;
import com.zhonglai.luhui.mqtt.comm.dto.ServerDto;
import com.zhonglai.luhui.mqtt.comm.dto.thingsmodels.ThingsModelBase;
import com.zhonglai.luhui.mqtt.comm.dto.thingsmodels.ThingsModelDataTypeEnum;
import com.zhonglai.luhui.mqtt.comm.dto.thingsmodels.ThingsModelItemBase;
import com.zhonglai.luhui.mqtt.comm.factory.Topic;
import com.zhonglai.luhui.mqtt.comm.service.BusinessDataUpdateService;
import com.zhonglai.luhui.mqtt.comm.service.ClienNoticeService;
import com.zhonglai.luhui.mqtt.comm.service.DeviceLogService;
import com.zhonglai.luhui.mqtt.comm.service.redis.RedisService;
import com.zhonglai.luhui.mqtt.comm.util.DateUtils;
import com.zhonglai.luhui.mqtt.dto.Message;
import com.zhonglai.luhui.mqtt.dto.MessageCode;
import com.zhonglai.luhui.mqtt.dto.topic.AddPostDto;
import com.zhonglai.luhui.mqtt.service.CacheServiceImpl;
import com.zhonglai.luhui.mqtt.service.DataPersistenceServiceImpl;
import com.zhonglai.luhui.mqtt.service.db.mode.TerminalDataThingsModeService;
import com.zhonglai.luhui.mqtt.service.topic.AddPostTopic;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
... ... @@ -52,6 +57,11 @@ public class DeviceService {
private DeviceLogService dviceLogService;
private BaseDao baseDao = new BaseDao();
@Autowired
private DataPersistenceServiceImpl dataPersistenceService;
@Autowired
private BusinessDataUpdateService businessDataUpdateService ;
/**
* 根据id获取终端
... ... @@ -90,7 +100,7 @@ public class DeviceService {
* @param saveJson
* @return
*/
public JSONObject getNewAdddate(String id,String oldstr, JSONObject saveJson, List<LogDeviceOperation> logDeviceOperationList)
public JSONObject getNewAdddate(String id,String oldstr, JSONObject saveJson, List<LogDeviceOperation> logDeviceOperationList,String operationType,boolean isLog)
{
JSONObject oldjs = new JSONObject();
if(StringUtils.isNoneBlank(oldstr))
... ... @@ -101,11 +111,11 @@ public class DeviceService {
for (String sk:saveJson.keySet())
{
ThingsModelItemBase thingsModelItemBase = (ThingsModelItemBase) saveJson.get(sk);
if(null != thingsModelItemBase.getMode_type() && (2==thingsModelItemBase.getMode_type() || 3==thingsModelItemBase.getMode_type()) && null != logDeviceOperationList)
if(isLog || (null != thingsModelItemBase.getMode_type() && (2==thingsModelItemBase.getMode_type() || 3==thingsModelItemBase.getMode_type()) && null != logDeviceOperationList))
{
if(null!=thingsModelItemBase.getSaveView() && null != oldjs && oldjs.containsKey(sk) && !thingsModelItemBase.getSaveView().equals(oldjs.getJSONObject(sk).getString("saveView")))
if(isLog ||(null!=thingsModelItemBase.getSaveView() && null != oldjs && oldjs.containsKey(sk) && !thingsModelItemBase.getSaveView().equals(oldjs.getJSONObject(sk).getString("saveView"))))
{
logDeviceOperationList.add(dviceLogService.newLogDeviceOperation(id,thingsModelItemBase.getSaveView(),oldjs.getJSONObject(sk).getString("saveView"),"本地操作"+thingsModelItemBase.getName()+"为"+thingsModelItemBase.getView(),null));
logDeviceOperationList.add(dviceLogService.newLogDeviceOperation(id,thingsModelItemBase.getSaveView(),oldjs.getJSONObject(sk).getString("saveView"),operationType+thingsModelItemBase.getName()+"为"+thingsModelItemBase.getView(),null));
}
}
oldjs.put(sk,saveJson.get(sk));
... ... @@ -319,6 +329,8 @@ public class DeviceService {
topic.setTopicType("PUT");
topic.setMessageid(DateUtils.getNowTimeMilly()+"");
StringBuffer stringBuffer = new StringBuffer("");
List<LogDeviceOperation> logDeviceOperationList = new ArrayList<>();
for(String key:map.keySet())
{
Object sendMap = map.get(key);
... ... @@ -343,20 +355,32 @@ public class DeviceService {
String data_type = thingsModel.getData_type().toUpperCase();
Class<ThingsModelBase> aClass = Enum.valueOf(ThingsModelDataTypeEnum.class,data_type).getaClass();
ThingsModelBase thingsModelBase = JSON.parseObject(thingsModel.getSpecs(),aClass);
jsonObject.put(skey,thingsModelBase.getCmdView(jsonObject.get(skey)));
thingsModelBase.conversionThingsModel(thingsModel);
thingsModelBase.addValue(jsonObject.get(skey));
ThingsModelItemBase thingsModelItemBase = (ThingsModelItemBase) thingsModelBase;
jsonObject.put(skey,thingsModelItemBase.getCmdView(jsonObject.get(skey)));
String id = clienid+"_"+key;
logDeviceOperationList.add(dviceLogService.newLogDeviceOperation(id,thingsModelItemBase.getSaveView(),null,"远程控制"+thingsModelItemBase.getName()+"为"+thingsModelItemBase.getView(),null));
}
map.put(key,jsonObject);
}
}
MqttMessage mqttMessage = new MqttMessage();
mqttMessage.setPayload(JSON.toJSONString(map).trim().getBytes());
Message message = clienNoticeService.sendMessage(topic,mqttMessage);
if(1==message.getCode())
{
List<LogDeviceOperation> list = new ArrayList<>();
list.add(dviceLogService.newLogDeviceOperation(clienid,JSON.toJSONString(message.getData()),null,"远程操作控制","control?"+JSON.toJSONString(map).trim()));
dviceLogService.saveOperationLog(list);
topic.setClientid(clienid);
AddPostDto addPostDto = new AddPostDto();
addPostDto.setData(JSON.parseObject(JSON.toJSONString(map)));
addPostDto.setIotTerminalList(new ArrayList<>());
addPostDto.setDeviceSensorDataList(new ArrayList<>());
addPostDto.setLogDeviceOperationList(new ArrayList<>());
businessDataUpdateService.updataDta(BusinessDataUpdateService.Type.ADD,topic,addPostDto,"远程控制",true);
cacheServiceImpl.updateCache(topic,addPostDto);
addPostDto.setLogDeviceOperationList(logDeviceOperationList);
dataPersistenceService.persistence(topic,addPostDto);
}
return message;
}
... ...
... ... @@ -22,7 +22,7 @@ public class AddPostTopic implements BusinessAgreement<AddPostDto> {
private BusinessDataUpdateService businessDataUpdateService ;
@Override
public ServerDto analysis(Topic topic, AddPostDto data) {
businessDataUpdateService.updataDta(BusinessDataUpdateService.Type.ADD,topic,data);
businessDataUpdateService.updataDta(BusinessDataUpdateService.Type.ADD,topic,data,"本地控制",false);
return data;
}
... ...
... ... @@ -23,7 +23,7 @@ public class AllPostTopic implements BusinessAgreement<AllPostDto> {
private BusinessDataUpdateService businessDataUpdateService ;
@Override
public ServerDto analysis(Topic topic, AllPostDto data) throws Exception {
businessDataUpdateService.updataDta(BusinessDataUpdateService.Type.ALL,topic,data);
businessDataUpdateService.updataDta(BusinessDataUpdateService.Type.ALL,topic,data,"本地",false);
return data;
}
... ...