Commit 81fcb38d authored by zhuangzhuang's avatar zhuangzhuang

5.29--修改网关tdl绑定的配置逻辑

parent d179b08a
......@@ -237,14 +237,17 @@ public class GWConfigWorker implements Callable<String>, MqttCallback {
mqttAsyncClient.publish(ConfigTopic,msg);
}
public void GCConfigClose(){
public boolean GCConfigClose(){
try {
if(mqttAsyncClient.isConnected()){
mqttAsyncClient.disconnect();
return true;
}
}catch (Exception e){
e.printStackTrace();
return false;
}
return true;
}
......
package com.example.tdl.domain.vo;
public class DeviceMessageVo {
private String TDLName;
private String TDLSN;
private String SN;
private String type;
private String warehouseName;
private String addressDetail;
private String regionName;
private String alarmType;
private String temMax;
private String temMin;
private String humidityMax;
private String humidityMin;
public String getTDLName() {
return TDLName;
}
public void setTDLName(String TDLName) {
this.TDLName = TDLName;
}
public String getTDLSN() {
return TDLSN;
}
public void setTDLSN(String TDLSN) {
this.TDLSN = TDLSN;
}
public String getSN() {
return SN;
}
public void setSN(String SN) {
this.SN = SN;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getWarehouseName() {
return warehouseName;
}
public void setWarehouseName(String warehouseName) {
this.warehouseName = warehouseName;
}
public String getAddressDetail() {
return addressDetail;
}
public void setAddressDetail(String addressDetail) {
this.addressDetail = addressDetail;
}
public String getRegionName() {
return regionName;
}
public void setRegionName(String regionName) {
this.regionName = regionName;
}
public String getAlarmType() {
return alarmType;
}
public void setAlarmType(String alarmType) {
this.alarmType = alarmType;
}
public String getTemMax() {
return temMax;
}
public void setTemMax(String temMax) {
this.temMax = temMax;
}
public String getTemMin() {
return temMin;
}
public void setTemMin(String temMin) {
this.temMin = temMin;
}
public String getHumidityMax() {
return humidityMax;
}
public void setHumidityMax(String humidityMax) {
this.humidityMax = humidityMax;
}
public String getHumidityMin() {
return humidityMin;
}
public void setHumidityMin(String humidityMin) {
this.humidityMin = humidityMin;
}
}
......@@ -4,9 +4,9 @@ public class SearchTdlVo {
private String warehouseNo;
private String gatewaySN;
private String SN;
private String tdlSN;
private String TDLSN;
public String getWarehouseNo() {
return warehouseNo;
......@@ -16,19 +16,19 @@ public class SearchTdlVo {
this.warehouseNo = warehouseNo;
}
public String getGatewaySN() {
return gatewaySN;
public String getSN() {
return SN;
}
public void setGatewaySN(String gatewaySN) {
this.gatewaySN = gatewaySN;
public void setSN(String SN) {
this.SN = SN;
}
public String getTdlSN() {
return tdlSN;
public String getTDLSN() {
return TDLSN;
}
public void setTdlSN(String tdlSN) {
this.tdlSN = tdlSN;
public void setTDLSN(String TDLSN) {
this.TDLSN = TDLSN;
}
}
......@@ -34,4 +34,5 @@ public interface GatewayMapper {
int updateCompany(UpdateGatewayCompanyVo updateGatewayCompanyVo);
List<GatewayOnLineVo> getByWarehouseNo(@Param("warehouseNo") String warehouseNo);
}
......@@ -48,4 +48,6 @@ public interface WarehouseMapper {
Integer updateImg(@Param("warehouseNo")String warehouseNo,@Param("img")String img,@Param("updateTime") Long updateTime);
WarehouseDetailVo getWarehouseDetailByNo(@Param("warehouseNo") String warehouseNo);
DeviceMessageVo getDeviceMessage(SearchTdlVo searchTdlVo);
}
......@@ -131,11 +131,9 @@ public class MqttListener implements MqttCallback {
Long tskey = Long.valueOf(tmparray[2]);
if(ts - tskey > 60*1000){
GWConfigWorker tmpgwconfigworker = gwconfigworkerMap.get(key);
tmpgwconfigworker.GCConfigClose();
// Future<String> result = futureMap.get(key);
// result.cancel(true);
// if(result.isCancelled())
// futureMap.remove(key);
Boolean boo = tmpgwconfigworker.GCConfigClose();
if(boo)
gwconfigworkerMap.remove(key);
}
}
}catch (Exception e){
......
......@@ -66,4 +66,6 @@ public class GatewayService {
public List<GatewayOnLineVo> getByWarehouseNo(String warehouseNo){
return gatewayMapper.getByWarehouseNo(warehouseNo);
}
}
......@@ -87,4 +87,8 @@ public class WarehouseService {
public WarehouseDetailVo getWarehouseDetailByNo(String warehouseNo){
return warehouseMapper.getWarehouseDetailByNo(warehouseNo);
}
public DeviceMessageVo getDeviceMessage(SearchTdlVo searchTdlVo){
return warehouseMapper.getDeviceMessage(searchTdlVo);
}
}
......@@ -149,7 +149,7 @@ public class EquipmentBindingController {
gpsPeriod=5;
gprsPeriod=15;
}
ConfigCMDVo configCMDVo = new ConfigCMDVo("config",5,15,devList,bindingVo.getMode(),System.currentTimeMillis()/1000l);
ConfigCMDVo configCMDVo = new ConfigCMDVo("config",gpsPeriod,gprsPeriod,devList,bindingVo.getMode(),System.currentTimeMillis()/1000l);
Map<Object,Object> map=new HashMap<>();
map.put("companyName",user.getCompanyName());
map.put("transportationNo",bindingVo.getTransportationNo());
......@@ -257,6 +257,7 @@ public class EquipmentBindingController {
}
@ApiOperation(value = "解绑网关",notes = "解绑网关")
@ApiImplicitParams({
@ApiImplicitParam(paramType="header", name = "Account_token", value = "token", required = true, dataType = "String"),
......
......@@ -781,6 +781,7 @@ public class WarehouseController {
return gson.toJson(fb);
}
//绑定报警联系人
@ApiOperation(value="绑定报警联系人",notes = "绑定报警联系人,传值:" +
"warehouseNo:仓库编号" +
......@@ -856,8 +857,7 @@ public class WarehouseController {
List<String> tdls=tdlDeviceService.getByGatewaySN(gatewayOnLineVos.get(a).getSN(),gatewayOnLineVos.get(a).getType());
List<WarehouseDataVo> warehouseDataVos=new ArrayList<>();
for (int b=0;b<tdls.size();b++){
// String sqls ="SELECT \"tdl\",\"T\", \"h\" FROM \"tdl_policy\".\""+device+"\" WHERE (\"tdl\" = '"+tdls.get(b)+"') ORDER BY time DESC ";
String sqls ="SELECT \"tdl\",\"T\", \"h\" FROM \"tdl_policy\".\"WTD93LG_17110194\" WHERE (\"tdl\" = 'TDL-1701110082608') ORDER BY time DESC ";
String sqls ="SELECT \"tdl\",\"T\", \"h\" FROM \"tdl_policy\".\""+device+"\" WHERE (\"tdl\" = '"+tdls.get(b)+"') ORDER BY time DESC ";
QueryResult queryResults = influxDBTemplate.query(new Query(sqls, database));
WarehouseDataVo warehouseDataVo=new WarehouseDataVo();
......@@ -894,44 +894,6 @@ public class WarehouseController {
}
public List<WarehouseTimeAndDataVo> getData(QueryResult queryResult){
List<List<Object>> values = getValues(queryResult);
List<WarehouseTimeAndDataVo> historyDataList = new ArrayList<>();
for(List<Object> value:values){
WarehouseTimeAndDataVo warehouseTimeAndDataVo = new WarehouseTimeAndDataVo();
warehouseTimeAndDataVo.setTime(parseTime(value.get(0).toString()));
warehouseTimeAndDataVo.setValue(value.get(2)==null ? "" :value.get(2).toString());
historyDataList.add(warehouseTimeAndDataVo);
}
return historyDataList;
}
public List<WarehouseTimeAndDataVo> getDatas(QueryResult queryResult){
List<List<Object>> values = getValues(queryResult);
List<WarehouseTimeAndDataVo> historyDataList = new ArrayList<>();
for(List<Object> value:values){
WarehouseTimeAndDataVo warehouseTimeAndDataVo = new WarehouseTimeAndDataVo();
warehouseTimeAndDataVo.setTime(parseTime(value.get(0).toString()));
warehouseTimeAndDataVo.setValue(value.get(3)==null ? "" :value.get(3).toString());
historyDataList.add(warehouseTimeAndDataVo);
}
return historyDataList;
}
//解析数据格式
public List<List<Object>> getValues( QueryResult queryResult){
List<List<Object>> values = new ArrayList<>();
for(QueryResult.Result result : queryResult.getResults()){
if(result.getSeries() !=null){
for (QueryResult.Series series : result.getSeries()) {
if(series !=null){
values= series.getValues();
}
}
}
}
return values;
}
//货物仓库某一tdl的温湿度
@ApiOperation(value="绑定报警联系人",notes = "绑定报警联系人,传值:" +
......@@ -953,30 +915,36 @@ public class WarehouseController {
return gson.toJson(fb);
}
//判断网关和tdl是否存在
if (StringUtils.isEmpty(searchTdlVo.getGatewaySN())) {
if (StringUtils.isEmpty(searchTdlVo.getSN())) {
fb.setCode(0);
fb.setMessage("网关编号不能为空");
return gson.toJson(fb);
}
if(StringUtils.isEmpty(searchTdlVo.getTdlSN())) {
if(StringUtils.isEmpty(searchTdlVo.getTDLSN())) {
fb.setCode(0);
fb.setMessage("传感器编号不能为空");
return gson.toJson(fb);
}
//获取tdl的信息
DeviceMessageVo deviceMessageVo = warehouseService.getDeviceMessage(searchTdlVo);
TdlDataVo tdlDataVo = new TdlDataVo();
if(deviceMessageVo == null){
return tdlDataVo;
}
tdlDataVo.setgSN(deviceMessageVo.getSN());
tdlDataVo.setTdl(deviceMessageVo.getTDLName());
tdlDataVo.setWarehouseName(deviceMessageVo.getWarehouseName());
List<GraphicDataVo> graphicDataList = new ArrayList<>();
List<TdlDataVo.HistoryDataVo> historyDataList = new ArrayList<>();
//获取TDL数据
// String sql = "SELECT \"T\",\"h\" FROM \"tdl_policy\".\"WTD93LG_17110194\" where \"tdl\" = \'TDL-"+searchTdlVo.getTdlSN()+"\' order by time ";
// String sql = "SELECT \"T\",\"h\" FROM \"tdl_policy\".\""+deviceMessageVo.getType()+"_"+deviceMessageVo.getSN()+"\" where \"tdl\" = \'TDL-"+searchTdlVo.getTdlSN()+"\' order by time ";
String sql = "SELECT \"T\",\"h\" FROM \"tdl_policy\".\"WTD93LG_17110194\" where \"tdl\" = \'TDL-1706190193608\' order by time ";
QueryResult queryResult = influxDBTemplate.query(new Query(sql,database));
if(queryResult.getResults().get(0).getSeries()== null){
tdlDataVo.setGraphicDataList(graphicDataList);
tdlDataVo.setHistoryDataList(historyDataList);
}
tdlDataVo = parseData(queryResult);
tdlDataVo = parseData(queryResult,deviceMessageVo.getHumidityMax(),deviceMessageVo.getHumidityMin(),deviceMessageVo.getTemMax(),deviceMessageVo.getTemMin());
return tdlDataVo;
}
......@@ -1009,7 +977,6 @@ public class WarehouseController {
//生成仓库编号
public String getWarehouseNo(){
String warehouseNo = "WH" +System.currentTimeMillis() ;
......@@ -1022,6 +989,46 @@ public class WarehouseController {
return warehouseNo;
}
public List<WarehouseTimeAndDataVo> getData(QueryResult queryResult){
List<List<Object>> values = getValues(queryResult);
List<WarehouseTimeAndDataVo> historyDataList = new ArrayList<>();
for(List<Object> value:values){
WarehouseTimeAndDataVo warehouseTimeAndDataVo = new WarehouseTimeAndDataVo();
warehouseTimeAndDataVo.setTime(parseTime(value.get(0).toString()));
warehouseTimeAndDataVo.setValue(value.get(2)==null ? "" :value.get(2).toString());
historyDataList.add(warehouseTimeAndDataVo);
}
return historyDataList;
}
public List<WarehouseTimeAndDataVo> getDatas(QueryResult queryResult){
List<List<Object>> values = getValues(queryResult);
List<WarehouseTimeAndDataVo> historyDataList = new ArrayList<>();
for(List<Object> value:values){
WarehouseTimeAndDataVo warehouseTimeAndDataVo = new WarehouseTimeAndDataVo();
warehouseTimeAndDataVo.setTime(parseTime(value.get(0).toString()));
warehouseTimeAndDataVo.setValue(value.get(3)==null ? "" :value.get(3).toString());
historyDataList.add(warehouseTimeAndDataVo);
}
return historyDataList;
}
//解析数据格式
public List<List<Object>> getValues( QueryResult queryResult){
List<List<Object>> values = new ArrayList<>();
for(QueryResult.Result result : queryResult.getResults()){
if(result.getSeries() !=null){
for (QueryResult.Series series : result.getSeries()) {
if(series !=null){
values= series.getValues();
}
}
}
}
return values;
}
//解析时间
public String parseTime(String time){
String dateResult =null;
......@@ -1102,8 +1109,7 @@ public class WarehouseController {
}
}
public TdlDataVo parseData(QueryResult queryResult){
public TdlDataVo parseData(QueryResult queryResult,String humidityMax,String humidityMin,String tempMax,String tempMin){
TdlDataVo tdlDataVo = new TdlDataVo();
List<List<Object>> values = new ArrayList<>();
for(QueryResult.Result result : queryResult.getResults()){
......@@ -1122,9 +1128,13 @@ public class WarehouseController {
List<GraphicDataVo> graphicDataList = new ArrayList<>();
GraphicDataVo temp = new GraphicDataVo();
temp.setDescption("temp");
temp.setMax(tempMax);
temp.setMin(tempMin);
List<HistoryData> tempData = new ArrayList<>();
GraphicDataVo hum = new GraphicDataVo();
hum.setDescption("humidity");
hum.setMin(humidityMin);
hum.setMax(humidityMax);
List<HistoryData> humpData = new ArrayList<>();
List<TdlDataVo.HistoryDataVo> historyDataList = new ArrayList<>();
for (int i =0,length = values.size();i<length;i++){
......@@ -1142,6 +1152,10 @@ public class WarehouseController {
hump.setTime(time);
hump.setValue(values.get(i).get(2)==null ?"" :values.get(i).get(2).toString());
humpData.add(hump);
if( i == length-1){
tdlDataVo.setHumidity(values.get(i).get(2)==null ?"" :values.get(i).get(2).toString());
tdlDataVo.setTemp(values.get(i).get(1)==null ?"" :values.get(i).get(1).toString());
}
}
temp.setHistoryDataList(tempData);
hum.setHistoryDataList(humpData);
......
......@@ -217,3 +217,5 @@ deleteTDLSuccess=\u5220\u9664\u7F51\u5173\u6210\u529F
deleteTDLFailure=\u5220\u9664\u7F51\u5173\u5931\u8D25
updateTDLCompanySuccess=\u7F51\u5173\u5206\u914D\u516C\u53F8\u6210\u529F
updateTDLCompanyFailure=\u7F51\u5173\u5206\u914D\u516C\u53F8\u5931\u8D25
#\u4ED3\u5E93
......@@ -254,13 +254,22 @@
<select id="getWarehouseDetailByNo" parameterType="String" resultType="com.example.tdl.domain.vo.WarehouseDetailVo">
SELECT warehouseNo,warehouseName,c.country,c.city,addressDetail,(SELECT COUNT(id) from gateway_warehouse WHERE warehouse_id=w.id) gatewayCounts,
(SELECT COUNT(id) FROM tdldevice WHERE warehouse_id=w.id) tdlCounts,property,type,hardwareLevel,areaPlanIndoor
(SELECT COUNT(id) FROM tdldevice WHERE warehouse_id=w.id) tdlCounts,,property,type,hardwareLevel,areaPlanIndoor
from warehouse w INNER JOIN city c ON w.city_id=c.id
where warehouseNo=#{warehouseNo,jdbcType=VARCHAR}
</select>
<select id="getDeviceMessage" parameterType="com.example.tdl.domain.vo.SearchTdlVo" resultType="com.example.tdl.domain.vo.DeviceMessageVo">
SELECT t.TDLName,g.SN,g.type,w.warehouseName,w.addressDetail,(SELECT regionName from region where w.region_id=id) regionName,
a.alarmType,a.temMax,a.temMin,a.humidityMax,a.humidityMin
from gateway_warehouse gw INNER JOIN warehouse w ON gw.warehouse_id=w.id,gateway g,tdldevice t,alarm a
where t.gateway_id=g.id
AND gw.gateway_id=g.id
AND w.alarm_id=a.id
AND warehouseNo=#{warehouseNo,jdbcType=VARCHAR}
AND g.SN=#{SN,jdbcType=VARCHAR}
AND t.TDLSN=#{TDLSN,jdbcType=VARCHAR}
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment