作者 钟来

温度宝支持http数据服务

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://rm-wz9740un21f09iokuao.mysql.rds.aliyuncs.com:3306/liu_yu_le?useUnicode=true&characterEncoding=utf8&autoReconnect=true
username=luhui
password=Luhui586
#\u6700\u5927\u8FDE\u63A5\u6570\u91CF
maxActive=100
#\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5
maxIdle=-1
#\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5
minIdle=10
#\u8D85\u65F6\u7B49\u5F85\u65F6\u95F4\u4EE5\u6BEB\u79D2\u4E3A\u5355\u4F4D 60000\u6BEB\u79D2/1000\u7B49\u4E8E60\u79D2
maxWait=60000
#removeAbandoned: \u662F\u5426\u81EA\u52A8\u56DE\u6536\u8D85\u65F6\u8FDE\u63A5
removeAbandoned=true
#removeAbandonedTimeout: \u8D85\u65F6\u65F6\u95F4(\u4EE5\u79D2\u6570\u4E3A\u5355\u4F4D)
removeAbandonedTimeout=120
testOnBorrow=false
logAbandoned=true
\ No newline at end of file
... ...
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.zhonglai.luhui</groupId>
<artifactId>lh-device-protocol-agreement</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>lh-device-wendubao</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.zhonglai.luhui</groupId>
<artifactId>lh-device-protocol-factory</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
... ...
package com.zhonglai.luhui.device.protocol.wendubao.analysis;
import com.google.gson.JsonObject;
import com.ruoyi.common.utils.GsonConstructor;
import com.zhonglai.luhui.device.analysis.comm.dao.BaseDao;
import com.zhonglai.luhui.device.analysis.comm.dto.DeviceSensorData;
import com.zhonglai.luhui.device.analysis.comm.dto.LogDeviceOperation;
import com.zhonglai.luhui.device.analysis.comm.dto.thingsmodels.ThingsModelItemBase;
import com.zhonglai.luhui.device.protocol.factory.config.DeviceCach;
import com.zhonglai.luhui.device.protocol.factory.dto.DeviceHost;
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.sync.ProtocolSyncFactory;
import com.zhonglai.luhui.device.protocol.wendubao.db.WdbDBFactoryImp;
import com.zhonglai.luhui.device.protocol.wendubao.dto.WdbTerminal;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List;
@Service
public class WenDuBaoProtocolSyncFactoryImpl implements ProtocolSyncFactory {
private BaseDao ly_baseDao = new BaseDao(new WdbDBFactoryImp());
@Override
public void updateParserDeviceHostDto(ParserDeviceHostDto parserDeviceHostDto) {
DeviceHost upDeviceHost = new DeviceHost();
if(null != parserDeviceHostDto.getData())
{
DeviceHost deviceHost = (DeviceHost) ly_baseDao.get(DeviceHost.class,parserDeviceHostDto.getId());
if(null == deviceHost)
{
return;
}
JsonObject jsonObject = null != deviceHost.getData()?GsonConstructor.get().fromJson(deviceHost.getData(),JsonObject.class):new JsonObject();
JsonObject hostData = parserDeviceHostDto.getData();
for (String key:hostData.keySet())
{
jsonObject.add(key,hostData.get(key).getAsJsonObject().get("value"));
}
upDeviceHost.setData(jsonObject.toString());
if(hostData.has("27"))
{
ThingsModelItemBase thingsModelItemBase = ThingsModelItemBase.newhingsModelItem(hostData.get("27").getAsJsonObject());
ParserDeviceHostDto oldParserDeviceHostDto = DeviceCach.getDeviceHost(parserDeviceHostDto.getId());
ThingsModelItemBase oldthingsModelItemBase = ThingsModelItemBase.newhingsModelItem(oldParserDeviceHostDto.getData().get("27").getAsJsonObject());
if(!thingsModelItemBase.getSaveView().equals(oldthingsModelItemBase.getSaveView()))
{
if(hostData.get("27").getAsJsonObject().get("value").getAsInt()==1)
{
upDeviceHost.setAlarmCode("00");
}else{
upDeviceHost.setAlarmCode("89");
}
}
}
}
upDeviceHost.setId(parserDeviceHostDto.getId());
upDeviceHost.setOnline("01");
upDeviceHost.setDataUpdateTime(parserDeviceHostDto.getUpdateTime());
ly_baseDao.update(upDeviceHost);
}
@Override
public void updateParserDeviceInfoDtoList(Integer productId, List<ParserDeviceInfoDto> parserDeviceInfoDtoList) {
if(null != parserDeviceInfoDtoList && parserDeviceInfoDtoList.size() != 0)
{
for (ParserDeviceInfoDto parserDeviceInfoDto:parserDeviceInfoDtoList)
{
JsonObject dataObject = parserDeviceInfoDto.getData();
if(null != dataObject && dataObject.size() != 0)
{
String deviceInfoId =dataObject.get("sn").getAsJsonObject().get("value").getAsString(); //25636548,//主机sn号 int 型
dataObject.remove("sn");
WdbTerminal wdbTerminal = (WdbTerminal) ly_baseDao.get(WdbTerminal.class,deviceInfoId);
if(null == wdbTerminal)
{
wdbTerminal = new WdbTerminal();
wdbTerminal.setId(deviceInfoId);
wdbTerminal.setCreateTime(parserDeviceInfoDto.getUpdateTime());
wdbTerminal.setBaseStationId(deviceInfoId);
wdbTerminal.setBaseStationName(deviceInfoId);
ly_baseDao.insert(wdbTerminal);
}
JsonObject jsonObject = new JsonObject();
JsonObject devcieData = parserDeviceInfoDto.getData();
for (String key:devcieData.keySet())
{
switch (key)
{
case "4": //气温float型
break;
case "21": //光照 int型
break;
case "wt": //水面 float型
if(null != wdbTerminal && null != wdbTerminal.getWaterSurfaceErrorConfig())
{
jsonObject.addProperty("55",new BigDecimal(devcieData.get(key).getAsJsonObject().get("value").getAsFloat()).add(new BigDecimal(wdbTerminal.getWaterSurfaceErrorConfig())).floatValue());
}
break;
case "wm": //水中 float型
if(null != wdbTerminal && null != wdbTerminal.getWaterSurfaceErrorConfig())
{
jsonObject.addProperty("23",new BigDecimal(devcieData.get(key).getAsJsonObject().get("value").getAsFloat()).add(new BigDecimal(wdbTerminal.getWaterErrorConfig())).floatValue());
}
break;
case "wb": //水底 float型
if(null != wdbTerminal && null != wdbTerminal.getWaterSurfaceErrorConfig())
{
jsonObject.addProperty("24",new BigDecimal(devcieData.get(key).getAsJsonObject().get("value").getAsFloat()).add(new BigDecimal(wdbTerminal.getBedErrorConfig())).floatValue());
}
break;
case "bat": //电池电量百分比0-100 int型
jsonObject.add("25",devcieData.get(key).getAsJsonObject().get("value"));
break;
case "mcu": //信噪比 int型
jsonObject.add("26",devcieData.get(key).getAsJsonObject().get("value"));
break;
case "rssi": //信号接收灵敏度 int型
jsonObject.add("28",devcieData.get(key).getAsJsonObject().get("value"));
break;
}
}
wdbTerminal.setDataUpdateTime(parserDeviceInfoDto.getUpdateTime());
wdbTerminal.setOnline("01");
wdbTerminal.setData(jsonObject.toString());
ly_baseDao.update(wdbTerminal,"id");
}
}
}
}
@Override
public void updateDeviceSensorDataList(List<DeviceSensorData> deviceSensorDataList) {
}
@Override
public void updateLogDeviceOperationList(List<LogDeviceOperation> logDeviceOperationList) {
}
}
... ...
package com.zhonglai.luhui.device.protocol.wendubao.db;
import com.zhonglai.luhui.device.analysis.comm.dao.DBFactory;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.util.Properties;
public class WdbDBFactoryImp implements DBFactory {
private static DataSource ds = null;
static {
try {
if(null==ds )
{
String dbPath = System.getProperty("dbPath");
String path = null != dbPath?dbPath:System.getProperty("user.dir")+"/configs/";
Properties p = new Properties();
System.out.println("》》》》》》》》》》》》》数据库配置文件地址:"+path+"wdb_dbcpconfig.properties");
p.load(new FileInputStream(path+"wdb_dbcpconfig.properties"));
ds = BasicDataSourceFactory.createDataSource(p);
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public DataSource getDataSource() {
return ds;
}
}
... ...
package com.zhonglai.luhui.device.protocol.wendubao.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* @类名 温度宝终端
* @描述 TODO
* @创建者 钟来
* @时间 19-5-28 下午5:13
* @版本 1.0
**/
@Data
public class WdbTerminal {
private String id; // VARCHAR(20) NOT NULL COMMENT '主键',
private String data; // VARCHAR(200) DEFAULT NULL COMMENT '数据',
private Integer createTime; // INT(11) DEFAULT NULL COMMENT '创建时间',
private String baseStationId; // VARCHAR(20) DEFAULT NULL COMMENT '基地id',
private String baseStationName; // VARCHAR(50) DEFAULT NULL COMMENT '基地名称',
private String alarmCode; // VARCHAR(2) NOT NULL DEFAULT '00' COMMENT '告警状态',
private Integer dataUpdateTime; // INT(11) DEFAULT NULL COMMENT '数据更新时间',
private Integer alarmUpdateTime; // INT(11) DEFAULT NULL COMMENT '告警更新时间',
private String online; // VARCHAR(50) NOT NULL COMMENT '在线状态',
private Double underwaterUpperLimit; //水底温度上限
private Double waterLayer; //水分层误差
private Double bedErrorConfig; // double DEFAULT NULL COMMENT '水底误差配置',
private Double waterErrorConfig; // double DEFAULT NULL COMMENT '水中误差配置',
private Double waterSurfaceErrorConfig; // double DEFAULT NULL COMMENT '水面误差配置',
}
... ...
... ... @@ -24,5 +24,6 @@
<module>lh-device-modbus</module>
<module>lh-device-defaul</module>
<module>lh-device-6wp</module>
<module>lh-device-wendubao</module>
</modules>
</project>
\ No newline at end of file
... ...