mqtt通讯修改 增加模板 计算属性

This commit is contained in:
LEED
2025-03-09 12:39:52 +08:00
parent 20c17b772d
commit 6a8cbff440
41 changed files with 2359 additions and 31 deletions

View File

@@ -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(",");
});