Browse Source

人员定位上传配置相关代码结构,还不能真正启用

master
liwenxuan 7 months ago
parent
commit
de7fe13f13
  1. 24
      pom.xml
  2. 4
      src/main/java/com/hxjt/dataupload/DataUploadApplication.java
  3. 4
      src/main/java/com/hxjt/dataupload/jobhandler/mqtt/enums/AlarmType.java
  4. 4
      src/main/java/com/hxjt/dataupload/jobhandler/mqtt/enums/UserType.java
  5. 73
      src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AlarmInfoHx.java
  6. 15
      src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AlarmInfoIot.java
  7. 54
      src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AreaUserInfoHx.java
  8. 15
      src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AreaUserInfoIot.java
  9. 73
      src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/DeviceInfoHx.java
  10. 15
      src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/DeviceInfoIot.java
  11. 40
      src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/UserBaseInfo.java
  12. 15
      src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/UserBaseInfoIot.java
  13. 40
      src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/AlarmInfo2MqttJob.java
  14. 18
      src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/AreaPersonInfo2MqttJob.java
  15. 56
      src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/DeviceInfo2MqttJob.java
  16. 46
      src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/UserBaseInfo2MqttJob.java
  17. 2
      src/main/java/com/hxjt/dataupload/jobhandler/mqtt/template/RestTemplateConfig.java
  18. 174
      src/main/java/com/hxjt/dataupload/model/entity/rydw/AlarmInfoHx.java
  19. 29
      src/main/java/com/hxjt/dataupload/model/entity/rydw/AlarmInfoIot.java
  20. 139
      src/main/java/com/hxjt/dataupload/model/entity/rydw/AreaUserInfoHx.java
  21. 29
      src/main/java/com/hxjt/dataupload/model/entity/rydw/AreaUserInfoIot.java
  22. 125
      src/main/java/com/hxjt/dataupload/model/entity/rydw/DeviceInfoHx.java
  23. 29
      src/main/java/com/hxjt/dataupload/model/entity/rydw/DeviceInfoIot.java
  24. 101
      src/main/java/com/hxjt/dataupload/model/entity/rydw/UserBaseInfo.java
  25. 29
      src/main/java/com/hxjt/dataupload/model/entity/rydw/UserBaseInfoIot.java
  26. 4
      src/main/java/com/hxjt/dataupload/mqtt/MqttCallback.java
  27. 41
      src/main/java/com/hxjt/dataupload/mqtt/MqttClient.java
  28. 93
      src/main/java/com/hxjt/dataupload/mqtt/MqttConfig.java
  29. 36
      src/main/java/com/hxjt/dataupload/mqtt/RespObject.java
  30. 12
      src/main/resources/application-dev.yml

24
pom.xml

@ -146,11 +146,33 @@
<artifactId>javase</artifactId>
<version>3.3.3</version>
</dependency>
<!-- MQTT依赖 -->
<!-- lombok依赖 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- spring boot项目集成消息中间件基础依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-integration</artifactId>
</dependency>
<!-- spring boot项目和mqtt客户端集成起步依赖 -->
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mqtt</artifactId>
<version>5.5.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>

4
src/main/java/com/hxjt/dataupload/DataUploadApplication.java

@ -1,13 +1,17 @@
package com.hxjt.dataupload;
import com.hxjt.dataupload.mqtt.MqttConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
//@EnableScheduling
@EnableAsync
@EnableConfigurationProperties(value = MqttConfig.class)
public class DataUploadApplication {
public static void main(String[] args) {

4
src/main/java/com/hxjt/dataupload/enums/AlarmType.java → src/main/java/com/hxjt/dataupload/jobhandler/mqtt/enums/AlarmType.java

@ -1,4 +1,4 @@
package com.hxjt.dataupload.enums;
package com.hxjt.dataupload.jobhandler.mqtt.enums;
public enum AlarmType {
ALARM_1("1","禁区告警-区域"),
@ -36,7 +36,7 @@ public enum AlarmType {
}
public static String getContentByCode(String code) {
for (com.hxjt.dataupload.enums.AlarmType objEnum : com.hxjt.dataupload.enums.AlarmType.values()) {
for (AlarmType objEnum : AlarmType.values()) {
if(objEnum.getAlarmCode().equals(code)) {
return objEnum.getAlarmContent();
}

4
src/main/java/com/hxjt/dataupload/enums/UserType.java → src/main/java/com/hxjt/dataupload/jobhandler/mqtt/enums/UserType.java

@ -1,4 +1,4 @@
package com.hxjt.dataupload.enums;
package com.hxjt.dataupload.jobhandler.mqtt.enums;
public enum UserType {
@ -27,7 +27,7 @@ public enum UserType {
}
public static String getContentByCode(String code) {
for (com.hxjt.dataupload.enums.UserType objEnum : com.hxjt.dataupload.enums.UserType.values()) {
for (UserType objEnum : UserType.values()) {
if(objEnum.getAlarmCode().equals(code)) {
return objEnum.getAlarmContent();
}

73
src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AlarmInfoHx.java

@ -0,0 +1,73 @@
package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain;
import lombok.Data;
@Data
public class AlarmInfoHx {
/**
* 唯一标示
*/
private String uniqueId;
/**
* 企业容器id
*/
private String containerId ="ningyanghuagongchany";
/**
* 设备编号
*/
private String deviceCode;
/**
* 告警类型
*/
private String alarmType;
/**
* 告警内容
*/
private String alarmContent;
/**
* 楼层ID
*/
private String layerId;
/**
* 一级区域id
*/
private String firAreaId = "HXGK0001";
/**
* 一级区域名称
*/
private String firAreaName = "恒信高科";
/**
*
*/
private String userOrgCode = "370910170";
/**
*
*/
private String userOrgName = "山东恒信高科能源有限公司";
/**
* 二级区域id
*/
private String secAreaId;
/**
* 二级区域名称
*/
private String secAreaName;
/**
* 纬度
*/
private Double x;
/**
* 经度
*/
private Double y;
/**
* 定位时间yyyy-MM-dd HH:mm:ss
*/
private String dateTime;
/**
* 处理状态0待处理1已处理
*/
private String dealStatus;
}

15
src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AlarmInfoIot.java

@ -0,0 +1,15 @@
package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain;
import lombok.Data;
@Data
public class AlarmInfoIot {
/**
* 数据类型
*/
private String dataType ="alarm";
/**
* 人员信息
*/
private AlarmInfoHx data;
}

54
src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AreaUserInfoHx.java

@ -0,0 +1,54 @@
package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain;
import lombok.Data;
import java.util.List;
@Data
public class AreaUserInfoHx {
/**
* 唯一标示
*/
private String uniqueId;
/**
* 企业容器id
*/
private String containerId ="ningyanghuagongchany";
/**
* 单位唯一标志
*/
private String orgCode;
/**
* 单位名称
*/
private String orgName;
/**
* 区域唯一标志
*/
private String areaId;
/**
* 区域名称
*/
private String areaName;
/**
* 上级区域唯一标志
*/
private String areaPid;
/**
* 上级区域名称
*/
private String areaPname;
/**
* 区域内告警数量
*/
private String alarmNum;
/**
* 区域内人员数量
*/
private String personNum;
/**
* 区域内人员列表
*/
private List<UserBaseInfo> personList;
}

15
src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AreaUserInfoIot.java

@ -0,0 +1,15 @@
package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain;
import lombok.Data;
@Data
public class AreaUserInfoIot {
/**
* 数据类型
*/
private String dataType ="areaPersonAlarm";
/**
* 人员信息
*/
private AreaUserInfoHx data;
}

73
src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/DeviceInfoHx.java

@ -0,0 +1,73 @@
package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain;
import lombok.Data;
@Data
public class DeviceInfoHx {
/**
* 企业容器id
*/
private String containerId ="ningyanghuagongchany";
/**
* 设备编号
*/
private String deviceCode;
/**
* 设备类型0蓝牙1GPS
*/
private String deviceType = "0";
/**
* 企业编码
*/
private String userOrgCode = "370910170";
/**
* 企业名称
*/
private String userOrgName = "山东恒信高科能源有限公司";
/**
* 设备当前所在的一级区域 ID
*/
private String firAreaId = "HXGK0001";
/**
* 设备当前所在的一级区域 name
*/
private String firAreaName = "恒信高科";
/**
* 设备当前所在的二级区域 ID
*/
private String secondAreaId;
/**
* 设备当前所在的二级区域 name
*/
private String secondAreaName;
/**
* X
*/
private Double x;
/**
* Y
*/
private Double y;
/**
* 是否移动
*/
private String move;
/**
* 定位时间
*/
private String dateTime;
/**
* 电量状态
*/
private String lowPowerStatus;
/**
* 电量
*/
private String power;
/**
* 定位时间
*/
private String uniqueId;
}

15
src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/DeviceInfoIot.java

@ -0,0 +1,15 @@
package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain;
import lombok.Data;
@Data
public class DeviceInfoIot {
/**
* 数据类型
*/
private String dataType ="position";
/**
* 人员信息
*/
private DeviceInfoHx data;
}

40
src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/UserBaseInfo.java

@ -0,0 +1,40 @@
package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain;
import lombok.Data;
@Data
public class UserBaseInfo {
/**
* 企业容器id
*/
private String containerId ="ningyanghuagongchany";
/**
* 人员唯一标示
*/
private String userCode;
/**
* 人员姓名
*/
private String userName;
/**
* 联系电话
*/
private String userPhone;
/**
* 人员类型
*/
private String userType = "01";
/**
* 企业编码
*/
private String userOrgCode = "370910170";
/**
* 企业名称
*/
private String userOrgName = "山东恒信高科能源有限公司";
/**
* 绑定设备唯一编码
*/
private String cardId;
}

15
src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/UserBaseInfoIot.java

@ -0,0 +1,15 @@
package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain;
import lombok.Data;
@Data
public class UserBaseInfoIot {
/**
* 数据类型
*/
private String dataType ="baseInfo";
/**
* 人员信息
*/
private UserBaseInfo data;
}

40
src/main/java/com/hxjt/dataupload/jobhandler/mqtt/AlarmInfo2MqttJob.java → src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/AlarmInfo2MqttJob.java

@ -1,17 +1,14 @@
package com.hxjt.dataupload.jobhandler.mqtt;
package com.hxjt.dataupload.jobhandler.mqtt.job.user.jobhandler;
import cn.hutool.json.JSONUtil;
import com.hxjt.dataupload.enums.AlarmType;
import com.hxjt.dataupload.model.entity.rydw.AlarmInfoHx;
import com.hxjt.dataupload.model.entity.rydw.AlarmInfoIot;
import com.hxjt.dataupload.jobhandler.mqtt.enums.AlarmType;
import com.hxjt.dataupload.jobhandler.mqtt.job.user.domain.AlarmInfoHx;
import com.hxjt.dataupload.jobhandler.mqtt.job.user.domain.AlarmInfoIot;
import com.hxjt.dataupload.mqtt.MqttClient;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import groovy.util.logging.Log4j2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
@ -24,8 +21,15 @@ import java.util.List;
import java.util.Map;
import java.util.TimeZone;
/*
* @description: 报警信息推送
* @author: ZhangRY
* @date: 2025/4/9 10:51
* @param: null
* @return: null
**/
@Component
@Slf4j
public class AlarmInfo2MqttJob {
@Resource
@ -36,7 +40,6 @@ public class AlarmInfo2MqttJob {
@Value("${user.token.containerId:}")
private String containerId;
@Resource
RestTemplate restTemplate;
@ -46,10 +49,8 @@ public class AlarmInfo2MqttJob {
@Value("${alarm.real.code:}")
private String codeAlarm;
public static final Logger log = LoggerFactory.getLogger(Log4j2.class);
@XxlJob("alarmInfo2MqttJobHandler")
public void userBaseInfo2MqttJobHandler() throws Exception {
public void alarmInfo2MqttJobHandler() throws Exception {
try {
XxlJobHelper.log("Alarm info To Mqtt Job Handler Beginning.");
@ -57,12 +58,13 @@ public class AlarmInfo2MqttJob {
Map body = forEntity.getBody();
List<Map<String,Object>> data = (List<Map<String,Object>>)body.get("data");
log.info(">>>>>>>>>>>>>>>>>>data="+data.size());
XxlJobHelper.log(">>>>>>>>>>>>>>>>>>data="+data.size());
data.forEach(alarmMap -> {
try {
AlarmInfoIot alarmInfoIot = new AlarmInfoIot();
AlarmInfoHx alarmInfoHx = new AlarmInfoHx();
Object id = alarmMap.get("id");
alarmInfoHx.setUniqueId(id != null ? containerId + id.toString() : "");
alarmInfoHx.setUniqueId(id != null ? containerId + id : "");
alarmInfoHx.setContainerId(containerId);
Object deviceNo = alarmMap.get("deviceNo");
alarmInfoHx.setDeviceCode(deviceNo != null ? deviceNo.toString() : "");
@ -70,6 +72,7 @@ public class AlarmInfo2MqttJob {
String code = alarmType.toString();
if(codeAlarm.equals(code)||"2".equals(code)||"3".equals(code)||"8".equals(code)||"15".equals(code)||"16".equals(code)) {
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>alarm occur");
XxlJobHelper.log(">>>>>>>>>>>>>>>>>>>>>>>>>alarm occur");
if (alarmType != null) {
String contentByCode = AlarmType.getContentByCode(code);
alarmInfoHx.setAlarmType(contentByCode);
@ -78,15 +81,16 @@ public class AlarmInfo2MqttJob {
Object layer = alarmMap.get("factory");
alarmInfoHx.setLayerId(layer != null ? layer.toString() : "");
Object area = alarmMap.get("area");
alarmInfoHx.setFirAreaId(area != null ? area.toString() : "");
alarmInfoHx.setSecAreaId(area != null ? area.toString() : "");
Object areaName = alarmMap.get("areaName");
alarmInfoHx.setFirAreaName(areaName != null ? areaName.toString() : "");
alarmInfoHx.setSecAreaName(areaName != null ? areaName.toString() : "");
Object latitude = alarmMap.get("latitude");
alarmInfoHx.setX(latitude != null ? new Double(latitude.toString()) : 0);
Object longitude = alarmMap.get("longitude");
alarmInfoHx.setY(longitude != null ? new Double(longitude.toString()) : 0);
Object dateTime = alarmMap.get("warningtime");
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>dateTime="+dateTime);
XxlJobHelper.log(">>>>>>>>>>>>>>>>>>>>>>>>>dateTime="+dateTime);
if (dateTime != null) {
try {
Date date = new Date(Long.parseLong(dateTime.toString()));
@ -96,6 +100,7 @@ public class AlarmInfo2MqttJob {
alarmInfoHx.setDateTime(dateStr);
} catch (NumberFormatException e) {
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>exception occur"+e.getMessage());
XxlJobHelper.log(">>>>>>>>>>>>>>>>>>>>>>>>>exception occur"+e.getMessage());
alarmInfoHx.setDateTime(dateTime.toString());
}
}
@ -105,11 +110,13 @@ public class AlarmInfo2MqttJob {
alarmInfoIot.setDataType("alarm");
String jsonData = JSONUtil.toJsonStr(alarmInfoIot);
log.info(jsonData);
XxlJobHelper.log("mqtt push data : : " + jsonData);
mqttClient.publish(0, false, deviceTopic, jsonData);
}
} catch (Exception ex) {
ex.printStackTrace();
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>exception occur"+ex.getMessage());
XxlJobHelper.log(">>>>>>>>>>>>>>>>>>>>>>>>>exception occur"+ex.getMessage());
}
});
@ -117,6 +124,7 @@ public class AlarmInfo2MqttJob {
e.printStackTrace();
}
log.info(">>>>>>>>>>>>>>>Alarm info mqtt push finished!");
XxlJobHelper.log(">>>>>>>>>>>>>>>Alarm info mqtt push finished!");
}

18
src/main/java/com/hxjt/dataupload/jobhandler/mqtt/AreaPersonInfo2MqttJob.java → src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/AreaPersonInfo2MqttJob.java

@ -1,18 +1,15 @@
package com.hxjt.dataupload.jobhandler.mqtt;
package com.hxjt.dataupload.jobhandler.mqtt.job.user.jobhandler;
import cn.hutool.json.JSONUtil;
import com.hxjt.dataupload.enums.UserType;
import com.hxjt.dataupload.model.entity.rydw.AreaUserInfoHx;
import com.hxjt.dataupload.model.entity.rydw.AreaUserInfoIot;
import com.hxjt.dataupload.model.entity.rydw.UserBaseInfo;
import com.hxjt.dataupload.jobhandler.mqtt.enums.UserType;
import com.hxjt.dataupload.jobhandler.mqtt.job.user.domain.AreaUserInfoHx;
import com.hxjt.dataupload.jobhandler.mqtt.job.user.domain.AreaUserInfoIot;
import com.hxjt.dataupload.jobhandler.mqtt.job.user.domain.UserBaseInfo;
import com.hxjt.dataupload.mqtt.MqttClient;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import groovy.util.logging.Log4j2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
@ -24,6 +21,7 @@ import java.util.List;
import java.util.Map;
@Component
@Slf4j
public class AreaPersonInfo2MqttJob {
@Resource
@ -41,8 +39,6 @@ public class AreaPersonInfo2MqttJob {
@Value("${area.data.url:}")
private String areaPersonUrl;
public static final Logger log = LoggerFactory.getLogger(Log4j2.class);
@XxlJob("areaInfo2MqttJobHandler")
public void userBaseInfo2MqttJobHandler() throws Exception {
try {

56
src/main/java/com/hxjt/dataupload/jobhandler/mqtt/DeviceInfo2MqttJob.java → src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/DeviceInfo2MqttJob.java

@ -1,27 +1,36 @@
package com.hxjt.dataupload.jobhandler.mqtt;
package com.hxjt.dataupload.jobhandler.mqtt.job.user.jobhandler;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.hxjt.dataupload.model.entity.rydw.DeviceInfoHx;
import com.hxjt.dataupload.model.entity.rydw.DeviceInfoIot;
import com.hxjt.dataupload.jobhandler.mqtt.job.user.domain.DeviceInfoHx;
import com.hxjt.dataupload.jobhandler.mqtt.job.user.domain.DeviceInfoIot;
import com.hxjt.dataupload.mqtt.MqttClient;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import groovy.util.logging.Log4j2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
/*
* @description: 定位信息推送
* @author: ZhangRY
* @date: 2025/4/9 10:51
* @param: null
* @return: null
**/
@Component
@Slf4j
public class DeviceInfo2MqttJob {
@Resource
@ -39,35 +48,43 @@ public class DeviceInfo2MqttJob {
@Value("${device.real.url:}")
private String deviceUrl;
public static final Logger log = LoggerFactory.getLogger(Log4j2.class);
@XxlJob("deviceInfo2MqttJobHandler")
public void userBaseInfo2MqttJobHandler() throws Exception {
public void deviceInfo2MqttJobHandler() throws Exception {
try {
XxlJobHelper.log(" Device base info To Mqtt Job Handler Beginning.");
ResponseEntity<Map> forEntity = restTemplate.getForEntity(deviceUrl, Map.class);
Map body = forEntity.getBody();
List<Map<String,Object>> data = (List<Map<String,Object>>)body.get("data");
data.forEach(deviceMap -> {
Map data = (Map) body.get("data");
List<Map<String,Object>> list = (List<Map<String,Object>>)data.get("list");
list.forEach(deviceMap -> {
DeviceInfoIot deviceInfoIot = new DeviceInfoIot();
DeviceInfoHx deviceInfo = new DeviceInfoHx();
deviceInfo.setContainerId(containerId);
Object deviceNo = deviceMap.get("deviceNo");
deviceInfo.setUniqueId(UUID.randomUUID().toString());
Object deviceNo = deviceMap.get("deviceno");
deviceInfo.setDeviceCode(deviceNo != null ? deviceNo.toString() : "");
Object layer = deviceMap.get("layer");
deviceInfo.setLayerId(layer != null ? layer.toString() : "");
Object crossX = deviceMap.get("longitude");
deviceInfo.setX(crossX != null ? new Double(crossX.toString()) : 0.0);
Object crossY = deviceMap.get("latitude");
deviceInfo.setY(crossY != null ? new Double(crossY.toString()) : 0.0);
Object dateTime = deviceMap.get("dateTime");
deviceInfo.setDateTime(dateTime != null ? dateTime.toString() : "");
String str = IdUtil.getSnowflakeNextIdStr();
long dateTime = Long.valueOf(String.valueOf(deviceMap.get("datetime")));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(dateTime);
String formattedDate = sdf.format(date);
deviceInfo.setDateTime(formattedDate != null ? formattedDate : "");
Object electric = deviceMap.get("electric");
BigDecimal electricBigDecimal = new BigDecimal(ObjectUtil.isEmpty(electric) ? "-1" : String.valueOf(electric));
BigDecimal criticalValue = new BigDecimal("3.7");
deviceInfo.setPower(electric != null ? electric.toString() : "");
deviceInfo.setLowPowerStatus(electricBigDecimal != null && electricBigDecimal.compareTo(criticalValue) >= 0 ? "0": "1");
deviceInfoIot.setData(deviceInfo);
Object islxsign = deviceMap.get("islxsign");
deviceInfo.setMove(islxsign != null ? "0".equals(islxsign) ? "1" : "0" : "");
deviceInfoIot.setDataType("position");
String jsonData = JSONUtil.toJsonStr(deviceInfoIot);
log.info(jsonData);
XxlJobHelper.log(jsonData);
mqttClient.publish(0, false, deviceTopic, jsonData);
});
@ -75,5 +92,6 @@ public class DeviceInfo2MqttJob {
e.printStackTrace();
}
log.info(">>>>>>>>>>>>>>>Device base info mqtt push finished!");
XxlJobHelper.log(">>>>>>>>>>>>>>>Device base info mqtt push finished!");
}
}

46
src/main/java/com/hxjt/dataupload/jobhandler/mqtt/UserBaseInfo2MqttJob.java → src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/UserBaseInfo2MqttJob.java

@ -1,39 +1,43 @@
package com.hxjt.dataupload.jobhandler.mqtt;
package com.hxjt.dataupload.jobhandler.mqtt.job.user.jobhandler;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.hxjt.dataupload.model.entity.rydw.UserBaseInfo;
import com.hxjt.dataupload.model.entity.rydw.UserBaseInfoIot;
import com.hxjt.dataupload.jobhandler.mqtt.job.user.domain.UserBaseInfo;
import com.hxjt.dataupload.jobhandler.mqtt.job.user.domain.UserBaseInfoIot;
import com.hxjt.dataupload.mqtt.MqttClient;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import groovy.util.logging.Log4j2;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/*
* @description: 人员信息推送
* @author: ZhangRY
* @date: 2025/4/9 10:51
* @param: null
* @return: null
**/
@Component
@Slf4j
public class UserBaseInfo2MqttJob {
@Resource
MqttClient mqttClient;
@Value("${spring.mqtt.realTimeTopic:}")
private String realTimeTopic;
@Value("${spring.mqtt.personTopic:}")
private String personTopic;
@Value("${user.token.url:}")
private String tokenUrl;
@ -56,8 +60,6 @@ public class UserBaseInfo2MqttJob {
@Value("${user.token.containerId:}")
private String containerId;
public static final Logger log = LoggerFactory.getLogger(Log4j2.class);
@XxlJob("userBaseInfo2MqttJobHandler")
public void userBaseInfo2MqttJobHandler() throws Exception {
try {
@ -87,11 +89,13 @@ public class UserBaseInfo2MqttJob {
//解析返回结果
int statusCode = response.getStatusLine().getStatusCode();
log.info("-----------查询token响应码为:" + statusCode);
XxlJobHelper.log("-----------查询token响应码为:" + statusCode);
if (200 == statusCode) {
org.apache.http.HttpEntity entityRes = response.getEntity();
String body = EntityUtils.toString(entityRes);
log.info("-----------查询token响应数据为:" + statusCode);
XxlJobHelper.log("-----------查询token响应数据为:" + statusCode);
JSONObject jsonObject = JSONUtil.parseObj(body);
JSONObject data = JSONUtil.parseObj(jsonObject.get("data"));
@ -123,11 +127,13 @@ public class UserBaseInfo2MqttJob {
//解析返回结果
int staPersonCode = resPerson.getStatusLine().getStatusCode();
log.info("-----------查询人员响应码为:" + staPersonCode);
XxlJobHelper.log("-----------查询人员响应码为:" + staPersonCode);
if (200 == staPersonCode) {
org.apache.http.HttpEntity entPersonRes = resPerson.getEntity();
String personBody = EntityUtils.toString(entPersonRes);
log.info("-----------查询人员响应数据为:" + personBody);
XxlJobHelper.log("-----------查询人员响应数据为:" + personBody);
resPerson.close();
JSONObject jsonObjPerson = JSONUtil.parseObj(personBody);
System.out.println(jsonObjPerson);
@ -138,10 +144,10 @@ public class UserBaseInfo2MqttJob {
Object deviceNo = person.get("cardld");
Object personName = person.get("empName");
Object empNo = person.get("userCode");
Object specifictype = person.get("userType");
Object workUnit = person.get("userOrgName");
// Object specifictype = person.get("userType");
Object userPhone = person.get("userPhone");
Object workUnitCode = person.get("userOrgCode");
// Object workUnit = person.get("userOrgName");
// Object workUnitCode = person.get("userOrgCode");
UserBaseInfoIot userBaseInfoIot = new UserBaseInfoIot();
UserBaseInfo userBaseInfo = new UserBaseInfo();
@ -150,13 +156,14 @@ public class UserBaseInfo2MqttJob {
userBaseInfo.setUserPhone(userPhone != null ? userPhone.toString() : null);
userBaseInfo.setUserName(personName != null ? personName.toString() : null);
userBaseInfo.setUserCode(empNo != null ? empNo.toString() : null);
userBaseInfo.setUserType(specifictype != null ? specifictype.toString() : null);
userBaseInfo.setUserOrgName(workUnit != null ? workUnit.toString() : null);
userBaseInfo.setUserOrgCode(workUnitCode != null ? workUnitCode.toString() : null);
// userBaseInfo.setUserType(specifictype != null ? specifictype.toString() : null);
// userBaseInfo.setUserOrgName(workUnit != null ? workUnit.toString() : null);
// userBaseInfo.setUserOrgCode(workUnitCode != null ? workUnitCode.toString() : null);
userBaseInfoIot.setData(userBaseInfo);
userBaseInfoIot.setDataType("baseInfo");
String jsonData = JSONUtil.toJsonStr(userBaseInfoIot);
mqttClient.publish(0, false, realTimeTopic, jsonData);
XxlJobHelper.log("mqtt push data : " + jsonData);
mqttClient.publish(0, false, personTopic, jsonData);
});
}
}
@ -167,5 +174,6 @@ public class UserBaseInfo2MqttJob {
e.printStackTrace();
}
log.info(">>>>>>>>>>>>>>>mqtt push finished!");
XxlJobHelper.log(">>>>>>>>>>>>>>>mqtt push finished!");
}
}

2
src/main/java/com/hxjt/dataupload/template/RestTemplateConfig.java → src/main/java/com/hxjt/dataupload/jobhandler/mqtt/template/RestTemplateConfig.java

@ -1,4 +1,4 @@
package com.hxjt.dataupload.template;
package com.hxjt.dataupload.jobhandler.mqtt.template;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

174
src/main/java/com/hxjt/dataupload/model/entity/rydw/AlarmInfoHx.java

@ -1,174 +0,0 @@
package com.hxjt.dataupload.model.entity.rydw;
public class AlarmInfoHx {
/**
* 唯一标示
*/
private String uniqueId;
/**
* 企业容器id
*/
private String containerId ="ningyanghuagongchany";
/**
* 设备编号
*/
private String deviceCode;
/**
* 告警类型
*/
private String alarmType;
/**
* 告警内容
*/
private String alarmContent;
/**
* 楼层ID
*/
private String layerId;
/**
* 一级区域id
*/
private String firAreaId;
/**
* 一级区域名称
*/
private String firAreaName;
/**
* 二级区域id
*/
private String secAreaId;
/**
* 二级区域名称
*/
private String secAreaName;
/**
* 纬度
*/
private Double x;
/**
* 经度
*/
private Double y;
/**
* 定位时间yyyy-MM-dd HH:mm:ss
*/
private String dateTime;
/**
* 处理状态0待处理1已处理
*/
private String dealStatus;
public String getUniqueId() {
return uniqueId;
}
public void setUniqueId(String uniqueId) {
this.uniqueId = uniqueId;
}
public String getContainerId() {
return containerId;
}
public void setContainerId(String containerId) {
this.containerId = containerId;
}
public String getDeviceCode() {
return deviceCode;
}
public void setDeviceCode(String deviceCode) {
this.deviceCode = deviceCode;
}
public String getAlarmType() {
return alarmType;
}
public void setAlarmType(String alarmType) {
this.alarmType = alarmType;
}
public String getAlarmContent() {
return alarmContent;
}
public void setAlarmContent(String alarmContent) {
this.alarmContent = alarmContent;
}
public String getLayerId() {
return layerId;
}
public void setLayerId(String layerId) {
this.layerId = layerId;
}
public String getFirAreaId() {
return firAreaId;
}
public void setFirAreaId(String firAreaId) {
this.firAreaId = firAreaId;
}
public String getFirAreaName() {
return firAreaName;
}
public void setFirAreaName(String firAreaName) {
this.firAreaName = firAreaName;
}
public String getSecAreaId() {
return secAreaId;
}
public void setSecAreaId(String secAreaId) {
this.secAreaId = secAreaId;
}
public String getSecAreaName() {
return secAreaName;
}
public void setSecAreaName(String secAreaName) {
this.secAreaName = secAreaName;
}
public Double getX() {
return x;
}
public void setX(Double x) {
this.x = x;
}
public Double getY() {
return y;
}
public void setY(Double y) {
this.y = y;
}
public String getDateTime() {
return dateTime;
}
public void setDateTime(String dateTime) {
this.dateTime = dateTime;
}
public String getDealStatus() {
return dealStatus;
}
public void setDealStatus(String dealStatus) {
this.dealStatus = dealStatus;
}
}

29
src/main/java/com/hxjt/dataupload/model/entity/rydw/AlarmInfoIot.java

@ -1,29 +0,0 @@
package com.hxjt.dataupload.model.entity.rydw;
public class AlarmInfoIot {
/**
* 数据类型
*/
private String dataType ="alarm";
/**
* 人员信息
*/
private AlarmInfoHx data;
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public AlarmInfoHx getData() {
return data;
}
public void setData(AlarmInfoHx data) {
this.data = data;
}
}

139
src/main/java/com/hxjt/dataupload/model/entity/rydw/AreaUserInfoHx.java

@ -1,139 +0,0 @@
package com.hxjt.dataupload.model.entity.rydw;
import java.util.List;
public class AreaUserInfoHx {
/**
* 唯一标示
*/
private String uniqueId;
/**
* 企业容器id
*/
private String containerId ="ningyanghuagongchany";
/**
* 单位唯一标志
*/
private String orgCode;
/**
* 单位名称
*/
private String orgName;
/**
* 区域唯一标志
*/
private String areaId;
/**
* 区域名称
*/
private String areaName;
/**
* 上级区域唯一标志
*/
private String areaPid;
/**
* 上级区域名称
*/
private String areaPname;
/**
* 区域内告警数量
*/
private String alarmNum;
/**
* 区域内人员数量
*/
private String personNum;
/**
* 区域内人员列表
*/
private List<UserBaseInfo> personList;
public String getUniqueId() {
return uniqueId;
}
public void setUniqueId(String uniqueId) {
this.uniqueId = uniqueId;
}
public String getContainerId() {
return containerId;
}
public void setContainerId(String containerId) {
this.containerId = containerId;
}
public String getOrgCode() {
return orgCode;
}
public void setOrgCode(String orgCode) {
this.orgCode = orgCode;
}
public String getOrgName() {
return orgName;
}
public void setOrgName(String orgName) {
this.orgName = orgName;
}
public String getAreaId() {
return areaId;
}
public void setAreaId(String areaId) {
this.areaId = areaId;
}
public String getAreaName() {
return areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
public String getAreaPid() {
return areaPid;
}
public void setAreaPid(String areaPid) {
this.areaPid = areaPid;
}
public String getAreaPname() {
return areaPname;
}
public void setAreaPname(String areaPname) {
this.areaPname = areaPname;
}
public String getAlarmNum() {
return alarmNum;
}
public void setAlarmNum(String alarmNum) {
this.alarmNum = alarmNum;
}
public String getPersonNum() {
return personNum;
}
public void setPersonNum(String personNum) {
this.personNum = personNum;
}
public List<UserBaseInfo> getPersonList() {
return personList;
}
public void setPersonList(List<UserBaseInfo> personList) {
this.personList = personList;
}
}

29
src/main/java/com/hxjt/dataupload/model/entity/rydw/AreaUserInfoIot.java

@ -1,29 +0,0 @@
package com.hxjt.dataupload.model.entity.rydw;
public class AreaUserInfoIot {
/**
* 数据类型
*/
private String dataType ="areaPersonAlarm";
/**
* 人员信息
*/
private AreaUserInfoHx data;
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public AreaUserInfoHx getData() {
return data;
}
public void setData(AreaUserInfoHx data) {
this.data = data;
}
}

125
src/main/java/com/hxjt/dataupload/model/entity/rydw/DeviceInfoHx.java

@ -1,125 +0,0 @@
package com.hxjt.dataupload.model.entity.rydw;
public class DeviceInfoHx {
/**
* 企业容器id
*/
private String containerId ="ningyanghuagongchany";
/**
* 设备编号
*/
private String deviceCode;
/**
* 楼层编号
*/
private String layerId;
/**
* X
*/
private Double x;
/**
* Y
*/
private Double y;
/**
* 定位时间
*/
private String dateTime;
/**
* 定位时间
*/
private String uniqueId;
/**
* 是否移动
*/
private String move;
/**
* 电量状态
*/
private String lowPowerStatus;
/**
* 电量
*/
private String power;
public String getContainerId() {
return containerId;
}
public void setContainerId(String containerId) {
this.containerId = containerId;
}
public String getDeviceCode() {
return deviceCode;
}
public void setDeviceCode(String deviceCode) {
this.deviceCode = deviceCode;
}
public String getLayerId() {
return layerId;
}
public void setLayerId(String layerId) {
this.layerId = layerId;
}
public Double getX() {
return x;
}
public void setX(Double x) {
this.x = x;
}
public Double getY() {
return y;
}
public void setY(Double y) {
this.y = y;
}
public String getDateTime() {
return dateTime;
}
public void setDateTime(String dateTime) {
this.dateTime = dateTime;
}
public String getUniqueId() {
return uniqueId;
}
public void setUniqueId(String uniqueId) {
this.uniqueId = uniqueId;
}
public String getMove() {
return move;
}
public void setMove(String move) {
this.move = move;
}
public String getLowPowerStatus() {
return lowPowerStatus;
}
public void setLowPowerStatus(String lowPowerStatus) {
this.lowPowerStatus = lowPowerStatus;
}
public String getPower() {
return power;
}
public void setPower(String power) {
this.power = power;
}
}

29
src/main/java/com/hxjt/dataupload/model/entity/rydw/DeviceInfoIot.java

@ -1,29 +0,0 @@
package com.hxjt.dataupload.model.entity.rydw;
public class DeviceInfoIot {
/**
* 数据类型
*/
private String dataType ="position";
/**
* 人员信息
*/
private DeviceInfoHx data;
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public DeviceInfoHx getData() {
return data;
}
public void setData(DeviceInfoHx data) {
this.data = data;
}
}

101
src/main/java/com/hxjt/dataupload/model/entity/rydw/UserBaseInfo.java

@ -1,101 +0,0 @@
package com.hxjt.dataupload.model.entity.rydw;
public class UserBaseInfo {
/**
* 企业容器id
*/
private String containerId ="ningyanghuagongchany";
/**
* 人员唯一标示
*/
private String userCode;
/**
* 人员姓名
*/
private String userName;
/**
* 联系电话
*/
private String userPhone;
/**
* 人员类型
*/
private String userType;
/**
* 所属单位唯一标志
*/
private String userOrgCode;
/**
* 所属单位名称
*/
private String userOrgName;
/**
* 绑定设备唯一编码
*/
private String cardId;
public String getContainerId() {
return containerId;
}
public void setContainerId(String containerId) {
this.containerId = containerId;
}
public String getUserCode() {
return userCode;
}
public void setUserCode(String userCode) {
this.userCode = userCode;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPhone() {
return userPhone;
}
public void setUserPhone(String userPhone) {
this.userPhone = userPhone;
}
public String getUserType() {
return userType;
}
public void setUserType(String userType) {
this.userType = userType;
}
public String getUserOrgCode() {
return userOrgCode;
}
public void setUserOrgCode(String userOrgCode) {
this.userOrgCode = userOrgCode;
}
public String getUserOrgName() {
return userOrgName;
}
public void setUserOrgName(String userOrgName) {
this.userOrgName = userOrgName;
}
public String getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
}

29
src/main/java/com/hxjt/dataupload/model/entity/rydw/UserBaseInfoIot.java

@ -1,29 +0,0 @@
package com.hxjt.dataupload.model.entity.rydw;
public class UserBaseInfoIot {
/**
* 数据类型
*/
private String dataType ="baseInfo";
/**
* 人员信息
*/
private UserBaseInfo data;
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public UserBaseInfo getData() {
return data;
}
public void setData(UserBaseInfo data) {
this.data = data;
}
}

4
src/main/java/com/hxjt/dataupload/mqtt/MqttCallback.java

@ -6,15 +6,13 @@ import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
@Component
public class MqttCallback implements org.eclipse.paho.client.mqttv3.MqttCallback {
private static final Logger logger = LoggerFactory.getLogger(com.hxjt.dataupload.mqtt.MqttClient.class);
private static final Logger logger = LoggerFactory.getLogger(MqttClient.class);
@Autowired
@Lazy
private MqttConfig mqttConfig;
private static org.eclipse.paho.client.mqttv3.MqttClient client;

41
src/main/java/com/hxjt/dataupload/mqtt/MqttClient.java

@ -6,17 +6,15 @@ import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
@Component
public class MqttClient {
private static final Logger logger = LoggerFactory.getLogger(com.hxjt.dataupload.mqtt.MqttClient.class);
private MqttCallback pushCallback;
private static final Logger logger = LoggerFactory.getLogger(MqttClient.class);
@Lazy
@Autowired
public void setPushCallback(MqttCallback pushCallback) {
this.pushCallback = pushCallback;
}
private MqttCallback pushCallback;
private static org.eclipse.paho.client.mqttv3.MqttClient client;
@ -25,12 +23,19 @@ public class MqttClient {
}
private static void setClient(org.eclipse.paho.client.mqttv3.MqttClient client) {
com.hxjt.dataupload.mqtt.MqttClient.client = client;
MqttClient.client = client;
}
public void connect(String host, String clientID, String username, String password, int timeout, int keepalive) {
org.eclipse.paho.client.mqttv3.MqttClient client;
public synchronized void connect(String host, String clientID, String username, String password, int timeout, int keepalive) {
// org.eclipse.paho.client.mqttv3.MqttClient client;
if (client != null && client.isConnected()){
return;
}
try {
if (client != null){
client.disconnect();
client.close();
}
client = new org.eclipse.paho.client.mqttv3.MqttClient(host, clientID, new MemoryPersistence());
MqttConnectOptions options = new MqttConnectOptions();
//设置自动重连
@ -42,15 +47,11 @@ public class MqttClient {
options.setPassword(password.toCharArray());
options.setConnectionTimeout(timeout);
options.setKeepAliveInterval(keepalive);
com.hxjt.dataupload.mqtt.MqttClient.setClient(client);//
try {
//设置消息到达的回调
client.setCallback(pushCallback);
//连接到服务器
client.connect(options);
} catch (Exception e) {
e.printStackTrace();
}
MqttClient.setClient(client);
//设置消息到达的回调
client.setCallback(pushCallback);
//连接到服务器
client.connect(options);
} catch (Exception e) {
e.printStackTrace();
}
@ -69,7 +70,7 @@ public class MqttClient {
message.setQos(qos);
message.setRetained(retained);
message.setPayload(pushMessage.getBytes());
MqttTopic mTopic = com.hxjt.dataupload.mqtt.MqttClient.getClient().getTopic(topic);
MqttTopic mTopic = MqttClient.getClient().getTopic(topic);
if (null == mTopic) {
logger.error("topic not exist");
}
@ -95,7 +96,7 @@ public class MqttClient {
public void subscribe(String topic, int qos) {
logger.info("开始订阅主题" + topic);
try {
com.hxjt.dataupload.mqtt.MqttClient.getClient().subscribe(topic, qos);
MqttClient.getClient().subscribe(topic, qos);
} catch (MqttException e) {
e.printStackTrace();
}

93
src/main/java/com/hxjt/dataupload/mqtt/MqttConfig.java

@ -1,21 +1,17 @@
package com.hxjt.dataupload.mqtt;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.DependsOn;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
@Component
@ConfigurationProperties("spring.mqtt")
@DependsOn("mqttCallback")
@Data
public class MqttConfig {
@Autowired
@Lazy
private com.hxjt.dataupload.mqtt.MqttClient mqttClient;
private MqttClient mqttClient;
private String username;
@ -34,91 +30,18 @@ public class MqttConfig {
private boolean enabled;
@Bean
public com.hxjt.dataupload.mqtt.MqttClient getMqttPushClient() {
public MqttClient getMqttPushClient() {
try {
if(enabled == true){
String mqtt_topic[] = StringUtils.split(defaultTopic, ",");
mqttClient.connect(hostUrl, clientId, username, password, timeout, keepalive);//连接
for(int i=0; i<mqtt_topic.length; i++){
mqttClient.subscribe(mqtt_topic[i], 0);//订阅主题
}
// String mqtt_topic[] = StringUtils.split(defaultTopic, ",");
// for(int i=0; i<mqtt_topic.length; i++){
// mqttClient.subscribe(mqtt_topic[i], 0);//订阅主题
// }
}
} catch (Exception e) {
e.printStackTrace();
}
return mqttClient;
}
public MqttClient getMqttClient() {
return mqttClient;
}
public void setMqttClient(MqttClient mqttClient) {
this.mqttClient = mqttClient;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getHostUrl() {
return hostUrl;
}
public void setHostUrl(String hostUrl) {
this.hostUrl = hostUrl;
}
public String getClientId() {
return clientId;
}
public void setClientId(String clientId) {
this.clientId = clientId;
}
public String getDefaultTopic() {
return defaultTopic;
}
public void setDefaultTopic(String defaultTopic) {
this.defaultTopic = defaultTopic;
}
public int getTimeout() {
return timeout;
}
public void setTimeout(int timeout) {
this.timeout = timeout;
}
public int getKeepalive() {
return keepalive;
}
public void setKeepalive(int keepalive) {
this.keepalive = keepalive;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
}

36
src/main/java/com/hxjt/dataupload/mqtt/RespObject.java

@ -13,40 +13,40 @@ public class RespObject<T> implements Serializable {
private T resultValue;
public static com.hxjt.dataupload.mqtt.RespObject of() {
return new com.hxjt.dataupload.mqtt.RespObject(true, "OK", 0, (Object)null);
public static RespObject of() {
return new RespObject(true, "OK", 0, (Object)null);
}
public static <T> com.hxjt.dataupload.mqtt.RespObject<T> of(T resultValue) {
return new com.hxjt.dataupload.mqtt.RespObject(true, "OK", 0, resultValue);
public static <T> RespObject<T> of(T resultValue) {
return new RespObject(true, "OK", 0, resultValue);
}
public static com.hxjt.dataupload.mqtt.RespObject toHint(boolean successful, String resultHint) {
return new com.hxjt.dataupload.mqtt.RespObject(successful, resultHint, 1, (Object)null);
public static RespObject toHint(boolean successful, String resultHint) {
return new RespObject(successful, resultHint, 1, (Object)null);
}
public static <T> com.hxjt.dataupload.mqtt.RespObject<T> toHint(boolean successful, String resultHint, T resultValue) {
return new com.hxjt.dataupload.mqtt.RespObject(successful, resultHint, 1, resultValue);
public static <T> RespObject<T> toHint(boolean successful, String resultHint, T resultValue) {
return new RespObject(successful, resultHint, 1, resultValue);
}
public static <T> com.hxjt.dataupload.mqtt.RespObject<T> toLogin(boolean successful, String resultHint) {
return new com.hxjt.dataupload.mqtt.RespObject(successful, resultHint, 2, null);
public static <T> RespObject<T> toLogin(boolean successful, String resultHint) {
return new RespObject(successful, resultHint, 2, null);
}
public static <T> com.hxjt.dataupload.mqtt.RespObject<T> toInfo(boolean successful, String resultHint) {
return new com.hxjt.dataupload.mqtt.RespObject(successful, resultHint, 1001, null);
public static <T> RespObject<T> toInfo(boolean successful, String resultHint) {
return new RespObject(successful, resultHint, 1001, null);
}
public static <T> com.hxjt.dataupload.mqtt.RespObject<T> toWarn(boolean successful, String resultHint) {
return new com.hxjt.dataupload.mqtt.RespObject(successful, resultHint, 1002, null);
public static <T> RespObject<T> toWarn(boolean successful, String resultHint) {
return new RespObject(successful, resultHint, 1002, null);
}
public static <T> com.hxjt.dataupload.mqtt.RespObject<T> toError(boolean successful, String resultHint) {
return new com.hxjt.dataupload.mqtt.RespObject(successful, resultHint, 1003, null);
public static <T> RespObject<T> toError(boolean successful, String resultHint) {
return new RespObject(successful, resultHint, 1003, null);
}
public static <T> com.hxjt.dataupload.mqtt.RespObject<T> toError(boolean successful, String resultHint, Integer code, T resultValue) {
return new com.hxjt.dataupload.mqtt.RespObject(successful, resultHint, code, resultValue);
public static <T> RespObject<T> toError(boolean successful, String resultHint, Integer code, T resultValue) {
return new RespObject(successful, resultHint, code, resultValue);
}
public RespObject() {

12
src/main/resources/application-dev.yml

@ -59,6 +59,18 @@ spring:
primary: syncplant
#设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源.
strict: false
mqtt:
username: 10@ningyanghuagongchany20250328091457
password: 4c0d00b8dcdd4809ad75ad1d0e38533c
hostUrl: tcp://112.245.55.112:18183
clientId: 10@ningyanghuagongchany20250328091457
defaultTopic: /indoor/10@ningyanghuagongchany20250328091457/thirdParty/sensorData
timeout: 100
keepalive: 60
enabled: true
personTopic: /indoor/10@ningyanghuagongchany20250328091457/personInfo/up
deviceTopic: /indoor/10@ningyanghuagongchany20250328091457/bluetooth/up
areaTopic: /indoor/10@ningyanghuagongchany20250328091457/statistics/up
xxl:
job:
admin:

Loading…
Cancel
Save