mqtt通讯修改 增加模板 计算属性
This commit is contained in:
@@ -15,6 +15,7 @@ import com.xinda.common.core.thingsModel.ThingsModelSimpleItem;
|
||||
import com.xinda.common.exception.ServiceException;
|
||||
import com.xinda.common.utils.DateUtils;
|
||||
import com.xinda.common.utils.gateway.mq.TopicsUtils;
|
||||
import com.xinda.iot.domain.Device;
|
||||
import com.xinda.iot.model.ThingsModels.ThingsModelValueItem;
|
||||
import com.xinda.iot.model.ThingsModels.ValueItem;
|
||||
import com.xinda.iot.service.IDeviceService;
|
||||
@@ -25,6 +26,7 @@ import org.springframework.stereotype.Component;
|
||||
import javax.annotation.Resource;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -33,8 +35,8 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@SysProtocol(name = "工控帮-华泰数智网关",protocolCode = XinDaConstant.PROTOCOL.GONGKONGBANG_HTSZ,description = "工控帮-华泰数智网关")
|
||||
public class GKBHTSZProtocolService implements IProtocol {
|
||||
@SysProtocol(name = "IECF6113-JSON协议",protocolCode = XinDaConstant.PROTOCOL.IECF6113,description = "IECF6113-JSON协议")
|
||||
public class IECF6113ProtocolService implements IProtocol {
|
||||
|
||||
|
||||
@Resource
|
||||
@@ -119,6 +121,10 @@ public class GKBHTSZProtocolService implements IProtocol {
|
||||
}else{
|
||||
Map<String,Object> values = JSON.parseObject(data, Map.class);
|
||||
if (values.containsKey("AD1") || values.containsKey("lng") || values.containsKey("I0.1")||values.containsKey("PAD")){
|
||||
// 初始化纬度变量,使用BigDecimal来存储高精度值
|
||||
BigDecimal latitude = new BigDecimal("39.9042");
|
||||
// 初始化经度变量,同样使用BigDecimal
|
||||
BigDecimal longitude = new BigDecimal("116.4074");
|
||||
for (Map.Entry<String, Object> entry : values.entrySet()) {
|
||||
// JSONArray value = (JSONArray) entry.getValue();
|
||||
ThingsModelSimpleItem simpleItem = new ThingsModelSimpleItem();
|
||||
@@ -126,6 +132,20 @@ public class GKBHTSZProtocolService implements IProtocol {
|
||||
simpleItem.setId(entry.getKey());
|
||||
simpleItem.setValue(entry.getValue()+"");
|
||||
result.add(simpleItem);
|
||||
if(values.containsKey("lng")) {
|
||||
if (entry.getKey().equals("lng")) {
|
||||
longitude = new BigDecimal(entry.getValue() + "");
|
||||
}
|
||||
if (entry.getKey().equals("lat")) {
|
||||
latitude = new BigDecimal(entry.getValue() + "");
|
||||
//更新设备经纬度信息
|
||||
Device device = new Device();
|
||||
device.setSerialNumber(deviceData.getSerialNumber());
|
||||
device.setLatitude(latitude);
|
||||
device.setLongitude(longitude);
|
||||
deviceService.updateDeviceStatus(device);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -181,7 +201,7 @@ public class GKBHTSZProtocolService implements IProtocol {
|
||||
Map<String, Object> result = getKeysAndValuesWithPrefix(params, "Q0.");
|
||||
// 输出结果
|
||||
if (!result.isEmpty()) {
|
||||
StringBuilder msg = new StringBuilder("GKB29810,0UT,{\"");
|
||||
StringBuilder msg = new StringBuilder("GKB29810,OUT,{\"");
|
||||
result.forEach((k, v) -> {
|
||||
msg.append(k).append("\":").append(v).append(",");
|
||||
});
|
||||
Reference in New Issue
Block a user