|
...
|
...
|
@@ -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;
|
|
|
|
}
|
...
|
...
|
|