|
|
|
package com.zhonglai.luhui.device.protocol.factory.purification;
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
import com.google.gson.JsonElement;
|
|
|
|
import com.google.gson.JsonObject;
|
|
|
|
import com.ruoyi.common.utils.DateUtils;
|
|
|
|
import com.ruoyi.common.utils.GsonConstructor;
|
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
|
import com.ruoyi.common.utils.spring.SpringUtils;
|
|
|
|
import com.zhonglai.luhui.device.analysis.comm.dto.DeviceSensorData;
|
|
|
|
import com.zhonglai.luhui.device.analysis.comm.dto.thingsmodels.ThingsModelBase;
|
|
|
|
import com.zhonglai.luhui.device.analysis.comm.dto.thingsmodels.ThingsModelDataTypeEnum;
|
|
|
|
import com.zhonglai.luhui.device.analysis.comm.dto.thingsmodels.ThingsModelItemBase;
|
|
|
|
import com.zhonglai.luhui.device.analysis.comm.factory.Topic;
|
|
|
|
import com.zhonglai.luhui.device.analysis.comm.util.DateUtils;
|
|
|
|
import com.zhonglai.luhui.device.domain.IotThingsModel;
|
|
|
|
import com.zhonglai.luhui.device.protocol.factory.dto.AnalysisDto;
|
|
|
|
import com.zhonglai.luhui.device.protocol.factory.dto.ParserDeviceHostDto;
|
|
|
|
import com.zhonglai.luhui.device.protocol.factory.dto.ParserDeviceInfoDto;
|
|
|
|
import com.zhonglai.luhui.device.protocol.factory.dto.ProtocolPurificationModel;
|
|
|
|
import com.zhonglai.luhui.device.protocol.factory.service.IotThingsModelService;
|
|
|
|
import com.zhonglai.luhui.device.protocol.factory.service.PersistenceDBService;
|
|
|
|
import org.apache.commons.lang3.EnumUtils;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
@Service("default_purification")
|
|
|
|
/**
|
|
|
|
* 默认的清洗服务
|
|
|
|
*/
|
|
|
|
public class DefaultProtocolPurificationFactoryImpl implements ProtocolPurificationFactory{
|
|
|
|
@Autowired
|
|
|
|
private IotThingsModelService iotThingsModelService;
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public ProtocolPurificationModel purification(Integer product_id,Topic topic, JsonObject protocolParserModel ) {
|
|
...
|
...
|
@@ -40,7 +34,7 @@ public class DefaultProtocolPurificationFactoryImpl implements ProtocolPurificat |
|
|
|
ParserDeviceHostDto parserDeviceHostDto = analysisHost(product_id,topic,protocolParserModel,protocolPurificationModel.getDeviceSensorDataList());
|
|
|
|
protocolPurificationModel.setParserDeviceHostDto(parserDeviceHostDto);
|
|
|
|
|
|
|
|
List<ParserDeviceInfoDto> parserDeviceInfoDtoList = analysisDeviceInfo(product_id,topic,protocolParserModel,protocolPurificationModel.getDeviceSensorDataList());
|
|
|
|
List<ParserDeviceInfoDto> parserDeviceInfoDtoList = analysisDeviceInfo(parserDeviceHostDto.getUpdateTime(),product_id,topic,protocolParserModel,protocolPurificationModel.getDeviceSensorDataList());
|
|
|
|
protocolPurificationModel.setParserDeviceInfoDtoList(parserDeviceInfoDtoList);
|
|
|
|
return protocolPurificationModel;
|
|
|
|
}
|
|
...
|
...
|
@@ -59,10 +53,11 @@ public class DefaultProtocolPurificationFactoryImpl implements ProtocolPurificat |
|
|
|
summary = jsonObjectData.get("summary").getAsJsonObject();
|
|
|
|
jsonObjectData.remove("summary");
|
|
|
|
}
|
|
|
|
int time = DateUtils.getNowTimeMilly();
|
|
|
|
ParserDeviceHostDto parserDeviceHostDto = null;
|
|
|
|
if(null != jsonObjectData && jsonObjectData.size() != 0)
|
|
|
|
{
|
|
|
|
parserDeviceHostDto = analysisJsonData(product_id,topic,jsonObjectData).pushDeviceSensorData(deviceSensorDataList).toParserDeviceHostDto(topic.getClientid());
|
|
|
|
parserDeviceHostDto = analysisJsonData(time,"0",product_id,topic,jsonObjectData).pushDeviceSensorData(deviceSensorDataList).toParserDeviceHostDto(topic.getClientid(),time);
|
|
|
|
}
|
|
|
|
|
|
|
|
if(null != summary && summary.size() != 0)
|
|
...
|
...
|
@@ -74,12 +69,13 @@ public class DefaultProtocolPurificationFactoryImpl implements ProtocolPurificat |
|
|
|
}
|
|
|
|
parserDeviceHostDto.setSummary(summary);
|
|
|
|
}
|
|
|
|
parserDeviceHostDto.setUpdateTime(time);
|
|
|
|
return parserDeviceHostDto;
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
private List<ParserDeviceInfoDto> analysisDeviceInfo(Integer product_id,Topic topic, JsonObject data,List<DeviceSensorData> deviceSensorDataList)
|
|
|
|
private List<ParserDeviceInfoDto> analysisDeviceInfo(Integer time,Integer product_id,Topic topic, JsonObject data,List<DeviceSensorData> deviceSensorDataList)
|
|
|
|
{
|
|
|
|
List<ParserDeviceInfoDto> list = new ArrayList<>();
|
|
|
|
|
|
...
|
...
|
@@ -87,7 +83,7 @@ public class DefaultProtocolPurificationFactoryImpl implements ProtocolPurificat |
|
|
|
{
|
|
|
|
if(!key.equals("0") && data.get(key).isJsonObject())
|
|
|
|
{
|
|
|
|
ParserDeviceInfoDto parserDeviceInfoDto = analysisJsonData(product_id,topic,data.get(key).getAsJsonObject()).pushDeviceSensorData(deviceSensorDataList).toParserDeviceInfoDto(topic.getClientid()+"_"+key);
|
|
|
|
ParserDeviceInfoDto parserDeviceInfoDto = analysisJsonData(time,key,product_id,topic,data.get(key).getAsJsonObject()).pushDeviceSensorData(deviceSensorDataList).toParserDeviceInfoDto(topic.getClientid()+"_"+key,time);
|
|
|
|
list.add(parserDeviceInfoDto);
|
|
|
|
}
|
|
|
|
}
|
|
...
|
...
|
@@ -95,7 +91,7 @@ public class DefaultProtocolPurificationFactoryImpl implements ProtocolPurificat |
|
|
|
return list;
|
|
|
|
}
|
|
|
|
|
|
|
|
private AnalysisDto analysisJsonData(Integer product_id,Topic topic, JsonObject jsonObjectData )
|
|
|
|
private AnalysisDto analysisJsonData(Integer time,String sensorNumber,Integer product_id,Topic topic, JsonObject jsonObjectData )
|
|
|
|
{
|
|
|
|
if(null != jsonObjectData && jsonObjectData.size() !=0)
|
|
|
|
{
|
|
...
|
...
|
@@ -108,7 +104,7 @@ public class DefaultProtocolPurificationFactoryImpl implements ProtocolPurificat |
|
|
|
analysisDto.setThings_model_config(things_model_config);
|
|
|
|
for (String key: jsonObjectData.keySet())
|
|
|
|
{
|
|
|
|
IotThingsModel thingsModel = iotThingsModelService.getIotThingsModel(product_id, key);
|
|
|
|
IotThingsModel thingsModel = SpringUtils.getBean(IotThingsModelService.class).getIotThingsModel(product_id, key);
|
|
|
|
|
|
|
|
JsonElement jsonElement = jsonObjectData.get(key);
|
|
|
|
if(null != jsonElement && !jsonElement.isJsonNull() )
|
|
...
|
...
|
@@ -145,7 +141,7 @@ public class DefaultProtocolPurificationFactoryImpl implements ProtocolPurificat |
|
|
|
deviceSensorDataList = new ArrayList<>();
|
|
|
|
analysisDto.setDeviceSensorDataList(deviceSensorDataList);
|
|
|
|
}
|
|
|
|
deviceSensorDataList.add(getDeviceSensorData(topic,thingsModel,thingsModelItemBase));
|
|
|
|
deviceSensorDataList.add(getDeviceSensorData(time,sensorNumber,topic,thingsModel,thingsModelItemBase));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
...
|
...
|
@@ -155,9 +151,6 @@ public class DefaultProtocolPurificationFactoryImpl implements ProtocolPurificat |
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private ThingsModelItemBase getThingsModelItemBase(IotThingsModel thingsModel,JsonElement jsonElement)
|
|
|
|
{
|
|
|
|
String data_type = thingsModel.getData_type().toUpperCase();
|
|
...
|
...
|
@@ -168,14 +161,19 @@ public class DefaultProtocolPurificationFactoryImpl implements ProtocolPurificat |
|
|
|
return ThingsModelItemBase.newhingsModelItem(Enum.valueOf(ThingsModelDataTypeEnum.class,data_type),thingsModel, jsonElement);
|
|
|
|
}
|
|
|
|
|
|
|
|
private DeviceSensorData getDeviceSensorData(Topic topic,IotThingsModel thingsModel,ThingsModelItemBase thingsModelItemBase)
|
|
|
|
private DeviceSensorData getDeviceSensorData(Integer time,String sensorNumber,Topic topic,IotThingsModel thingsModel,ThingsModelItemBase thingsModelItemBase)
|
|
|
|
{
|
|
|
|
DeviceSensorData sensorData = new DeviceSensorData();
|
|
|
|
sensorData.setDataType(thingsModel.getIdentifier());
|
|
|
|
sensorData.setDataValue(thingsModelItemBase.getSaveView());
|
|
|
|
sensorData.setCreatTime(com.zhonglai.luhui.device.analysis.comm.util.DateUtils.getNowTimeMilly());
|
|
|
|
sensorData.setCreatTime(time);
|
|
|
|
sensorData.setDeviceModel(topic.getUsername());
|
|
|
|
sensorData.setDeviceInfoId(topic.getClientid());
|
|
|
|
if("0".equals(sensorNumber))
|
|
|
|
{
|
|
|
|
sensorData.setDeviceInfoId(topic.getClientid());
|
|
|
|
}else {
|
|
|
|
sensorData.setDeviceInfoId(topic.getClientid()+"_"+sensorNumber);
|
|
|
|
}
|
|
|
|
return sensorData;
|
|
|
|
|
|
|
|
}
|
...
|
...
|
|