diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/enums/AlarmType.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/enums/AlarmType.java deleted file mode 100644 index 9287a48..0000000 --- a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/enums/AlarmType.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.hxjt.dataupload.jobhandler.mqtt.enums; - -public enum AlarmType { - ALARM_1("1","禁区告警-区域"), - ALARM_2("2","超员告警-区域"), - ALARM_3("3","滞留告警-区域"), - ALARM_4("4","区域过短-区域"), - ALARM_5("5","禁静止超时-区域"), - ALARM_6("6","SOS"), - ALARM_7("7","闯入告警-围栏"), - ALARM_8("8","脱岗告警-围栏"), - ALARM_13("13","车辆超速"), - ALARM_14("14","人员卡充电告警"), - ALARM_15("15","缺员告警-区域"), - ALARM_16("16","脱岗告警-区域"), - ALARM_17("17","车辆路线偏移"), - ALARM_18("18","违规告警"), - ALARM_19("19","二道门离厂告警"); - - - private final String alarmCode; - - private final String alarmContent; - - AlarmType(String alarmCode, String alarmContent) { - this.alarmCode = alarmCode; - this.alarmContent = alarmContent; - } - - public String getAlarmCode() { - return alarmCode; - } - - public String getAlarmContent() { - return alarmContent; - } - - public static String getContentByCode(String code) { - for (AlarmType objEnum : AlarmType.values()) { - if(objEnum.getAlarmCode().equals(code)) { - return objEnum.getAlarmContent(); - } - } - return null; - } - -} diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/enums/UserType.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/enums/UserType.java deleted file mode 100644 index 649f61d..0000000 --- a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/enums/UserType.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.hxjt.dataupload.jobhandler.mqtt.enums; - -public enum UserType { - - ALARM_0("0","在职员工"), - ALARM_1("1","临时访客"), - ALARM_2("2","承包商员工"), - ALARM_3("3","物品"), - ALARM_4("4","车辆"), - ALARM_5("5","司机"); - - private final String alarmCode; - - private final String alarmContent; - - UserType(String alarmCode, String alarmContent) { - this.alarmCode = alarmCode; - this.alarmContent = alarmContent; - } - - public String getAlarmCode() { - return alarmCode; - } - - public String getAlarmContent() { - return alarmContent; - } - - public static String getContentByCode(String code) { - for (UserType objEnum : UserType.values()) { - if(objEnum.getAlarmCode().equals(code)) { - return objEnum.getAlarmContent(); - } - } - return null; - } - -} diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AlarmInfoHx.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AlarmInfoHx.java deleted file mode 100644 index 7f40986..0000000 --- a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AlarmInfoHx.java +++ /dev/null @@ -1,73 +0,0 @@ -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; - - -} diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AlarmInfoIot.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AlarmInfoIot.java deleted file mode 100644 index 57e6b2b..0000000 --- a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AlarmInfoIot.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain; - -import lombok.Data; - -@Data -public class AlarmInfoIot { - /** - * 数据类型 - */ - private String dataType ="alarm"; - /** - * 人员信息 - */ - private AlarmInfoHx data; -} diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/ApiResponse.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/ApiResponse.java new file mode 100644 index 0000000..cf0bdb8 --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/ApiResponse.java @@ -0,0 +1,43 @@ +package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain; + +import com.alibaba.fastjson2.JSONObject; + +public class ApiResponse { + private Integer code; + private String msg; + private DataPage data; + + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public DataPage getData() { + return data; + } + + public void setData(DataPage data) { + this.data = data; + } + + @Override + public String toString() { + return "ApiResponse{" + + "code=" + code + + ", msg='" + msg + '\'' + + ", data=" + data + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AreaUserInfoHx.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AreaUserInfoHx.java deleted file mode 100644 index 0d376fa..0000000 --- a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AreaUserInfoHx.java +++ /dev/null @@ -1,54 +0,0 @@ -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 personList; - -} diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AreaUserInfoIot.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AreaUserInfoIot.java deleted file mode 100644 index 816a78b..0000000 --- a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/AreaUserInfoIot.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain; - -import lombok.Data; - -@Data -public class AreaUserInfoIot { - /** - * 数据类型 - */ - private String dataType ="areaPersonAlarm"; - /** - * 人员信息 - */ - private AreaUserInfoHx data; -} diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/DataPage.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/DataPage.java new file mode 100644 index 0000000..b8de8bd --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/DataPage.java @@ -0,0 +1,65 @@ +package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain; + +import com.google.gson.JsonObject; + +import java.util.List; +import java.util.Map; + +public class DataPage { + private Integer current; + private Integer total; + private Integer pages; + private Integer size; + private List records; + + public Integer getCurrent() { + return current; + } + + public void setCurrent(Integer current) { + this.current = current; + } + + public Integer getTotal() { + return total; + } + + public void setTotal(Integer total) { + this.total = total; + } + + public Integer getPages() { + return pages; + } + + public void setPages(Integer pages) { + this.pages = pages; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public List getRecords() { + return records; + } + + public void setRecords(List records) { + this.records = records; + } + + @Override + public String toString() { + return "DataPage{" + + "current=" + current + + ", total=" + total + + ", pages=" + pages + + ", size=" + size + + ", records=" + records + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/DeviceInfoHx.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/DeviceInfoHx.java deleted file mode 100644 index 6988239..0000000 --- a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/DeviceInfoHx.java +++ /dev/null @@ -1,73 +0,0 @@ -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:蓝牙;1:GPS - */ - 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; - -} diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/DeviceInfoIot.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/DeviceInfoIot.java deleted file mode 100644 index ad02e31..0000000 --- a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/DeviceInfoIot.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain; - -import lombok.Data; - -@Data -public class DeviceInfoIot { - /** - * 数据类型 - */ - private String dataType ="position"; - /** - * 人员信息 - */ - private DeviceInfoHx data; -} diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/SensorDataRequestObj.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/SensorDataRequestObj.java new file mode 100644 index 0000000..e03484c --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/SensorDataRequestObj.java @@ -0,0 +1,96 @@ +package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain; + + + +/* +请求数据: +JSON +[ + { + "descript": "厂房大门温度", + "name": "温度计", + "code": "ModbusRTU@0edb5c08b9f0_/dev/ttyS0_1_10_3", + "max": "100", + "min": "0", + "type": "温度", + "unit": "°C" + } +] + + +字段名 类型 说明 +descript String 描述 +name String 名称 +code String 系统唯一编码,请确认在当前节点中该编码不会重复 +max String 量程上限 如 100,不能为空 +min String 量程下限 如 0,不能为空 +type String 类型,如温度、湿度、压力、液位等等 +unit String 单位,若无则传空字符串 +* */ + +public class SensorDataRequestObj { + private String descript; + private String name; + private String code; + private String max; + private String min; + private String type; + private String unit; + + + public String getDescript() { + return descript; + } + + public void setDescript(String descript) { + this.descript = descript; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMax() { + return max; + } + + public void setMax(String max) { + this.max = max; + } + + public String getMin() { + return min; + } + + public void setMin(String min) { + this.min = min; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } +} diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/UserBaseInfo.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/UserBaseInfo.java deleted file mode 100644 index 507e7e1..0000000 --- a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/UserBaseInfo.java +++ /dev/null @@ -1,40 +0,0 @@ -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; - -} diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/UserBaseInfoIot.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/UserBaseInfoIot.java deleted file mode 100644 index f9308a8..0000000 --- a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/domain/UserBaseInfoIot.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain; - -import lombok.Data; - -@Data -public class UserBaseInfoIot { - /** - * 数据类型 - */ - private String dataType ="baseInfo"; - /** - * 人员信息 - */ - private UserBaseInfo data; -} diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/AreaPersonInfo2MqttJob.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/AreaPersonInfo2MqttJob.java deleted file mode 100644 index f286fa0..0000000 --- a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/AreaPersonInfo2MqttJob.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.hxjt.dataupload.jobhandler.mqtt.job.user.jobhandler; - -import cn.hutool.json.JSONUtil; - -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 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.util.ArrayList; -import java.util.List; -import java.util.Map; - -@Component -@Slf4j -public class AreaPersonInfo2MqttJob { - - @Resource - MqttClient mqttClient; - - @Value("${spring.mqtt.areaTopic:}") - private String areaTopic; - - @Value("${user.token.containerId:}") - private String containerId; - - @Resource - RestTemplate restTemplate; - - @Value("${area.data.url:}") - private String areaPersonUrl; - - @XxlJob("areaInfo2MqttJobHandler") - public void userBaseInfo2MqttJobHandler() throws Exception { - try { - XxlJobHelper.log("Area person info To Mqtt Job Handler Beginning."); - - ResponseEntity forEntity = restTemplate.getForEntity(areaPersonUrl, Map.class); - Map body = forEntity.getBody(); - List> data = (List>)body.get("data"); - log.info(">>>>>>>>>>>>>>>>>>>>>>area data size:"+data.size()); - data.forEach(alarmMap -> { - try { - AreaUserInfoIot areaUserInfoIot = new AreaUserInfoIot(); - AreaUserInfoHx areaUserInfoHx = new AreaUserInfoHx(); - Object areaId = alarmMap.get("areaId"); - areaUserInfoHx.setUniqueId(containerId + areaId); - areaUserInfoHx.setContainerId(containerId); - areaUserInfoHx.setOrgCode("91370921328482832M"); - areaUserInfoHx.setOrgName("山东恒信高科能源有限公司"); - areaUserInfoHx.setAreaId(areaId != null ? areaId.toString() : ""); - Object areaName = alarmMap.get("areaName"); - areaUserInfoHx.setAreaName(areaName != null ? areaName.toString() : ""); - Object upperLimit = alarmMap.get("upperLimit"); - areaUserInfoHx.setAreaPid(upperLimit != null ? upperLimit.toString() : ""); - Object workLevel = alarmMap.get("workLevel"); - areaUserInfoHx.setAreaPname(workLevel != null ? workLevel.toString() : ""); - List> personList = (List>)alarmMap.get("personList"); - log.info(">>>>>>>>>>>>>>>>>>>>>>person data size:"+personList.size()); - List users = new ArrayList<>(); - if(personList != null && personList.size()>0){ - areaUserInfoHx.setPersonNum(personList.size() + ""); - personList.forEach(p -> { - try { - UserBaseInfo userBaseInfo = new UserBaseInfo(); - Object empNo = p.get("empNo"); - userBaseInfo.setUserCode(empNo != null ? empNo.toString() : ""); - Object empName = p.get("empName"); - userBaseInfo.setUserName(empName != null ? empName.toString() : ""); - Object deviceNo = p.get("deviceNo"); - userBaseInfo.setCardId(deviceNo != null ? deviceNo.toString() : ""); - userBaseInfo.setUserOrgCode("91370921328482832M"); - userBaseInfo.setUserOrgName("山东恒信高科能源有限公司"); - Object specifictype = p.get("specifictype"); - String contentByCode = UserType.getContentByCode(specifictype != null ? specifictype.toString() : ""); - userBaseInfo.setUserType(contentByCode != null ? contentByCode : ""); - users.add(userBaseInfo); - } catch (Exception e) { - log.error(">>>>>>>>>>>>>>>>>>>>>>occur exception!"+e.getMessage()); - } - }); - } else { - areaUserInfoHx.setPersonNum("0"); - } - areaUserInfoHx.setPersonList(users); - areaUserInfoIot.setData(areaUserInfoHx); - areaUserInfoIot.setDataType("areaPersonAlarm"); - String jsonData = JSONUtil.toJsonStr(areaUserInfoIot); - log.info(jsonData); - mqttClient.publish(0, false,areaTopic, jsonData); - } catch (Exception e) { - e.printStackTrace(); - log.error(">>>>>>>>>>>>>>>>>>>>>>occur exception!"+e.getMessage()); - } - }); - - } catch (Exception e) { - e.printStackTrace(); - log.info(">>>>>>>>>>>>>>>>>>>>>>occur exception!"+e.getMessage()); - } - log.info(">>>>>>>>>>>>>>>Area person info mqtt push finished!"); - } - - -} diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/DeviceInfo2MqttJob.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/DeviceInfo2MqttJob.java deleted file mode 100644 index 61c32d2..0000000 --- a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/DeviceInfo2MqttJob.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.hxjt.dataupload.jobhandler.mqtt.job.user.jobhandler; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.json.JSONUtil; - -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 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 - MqttClient mqttClient; - - @Value("${spring.mqtt.deviceTopic:}") - private String deviceTopic; - - @Value("${user.token.containerId:}") - private String containerId; - - @Resource - RestTemplate restTemplate; - - @Value("${device.real.url:}") - private String deviceUrl; - - @XxlJob("deviceInfo2MqttJobHandler") - public void deviceInfo2MqttJobHandler() throws Exception { - try { - XxlJobHelper.log(" Device base info To Mqtt Job Handler Beginning."); - - ResponseEntity forEntity = restTemplate.getForEntity(deviceUrl, Map.class); - Map body = forEntity.getBody(); - Map data = (Map) body.get("data"); - List> list = (List>)data.get("list"); - list.forEach(deviceMap -> { - DeviceInfoIot deviceInfoIot = new DeviceInfoIot(); - DeviceInfoHx deviceInfo = new DeviceInfoHx(); - deviceInfo.setContainerId(containerId); - deviceInfo.setUniqueId(UUID.randomUUID().toString()); - Object deviceNo = deviceMap.get("deviceno"); - deviceInfo.setDeviceCode(deviceNo != null ? deviceNo.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); - 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); - }); - - } catch (Exception e) { - e.printStackTrace(); - } - log.info(">>>>>>>>>>>>>>>Device base info mqtt push finished!"); - XxlJobHelper.log(">>>>>>>>>>>>>>>Device base info mqtt push finished!"); - } -} diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/SensorDataTopicMqttJobHandler.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/SensorDataTopicMqttJobHandler.java index 673554c..14e3b40 100644 --- a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/SensorDataTopicMqttJobHandler.java +++ b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/SensorDataTopicMqttJobHandler.java @@ -1,23 +1,26 @@ package com.hxjt.dataupload.jobhandler.mqtt.job.user.jobhandler; -import cn.hutool.json.JSONUtil; + + + +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson2.JSONObject; -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.jobhandler.mqtt.job.user.domain.ApiResponse; import com.hxjt.dataupload.mqtt.MqttClient; import com.xxl.job.core.context.XxlJobHelper; import com.xxl.job.core.handler.annotation.XxlJob; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + 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.text.SimpleDateFormat; + import java.util.*; import static com.hxjt.dataupload.utils.ExcelDataExtraction.extractData; @@ -30,25 +33,22 @@ import static com.hxjt.dataupload.utils.ExcelDataExtraction.extractData; * @return: null **/ @Component -@Slf4j public class SensorDataTopicMqttJobHandler { + private Logger log = LoggerFactory.getLogger(SensorDataTopicMqttJobHandler.class); @Resource MqttClient mqttClient; @Value("${spring.mqtt.sensorDataTopic:}") private String sensorDataTopic; - @Resource RestTemplate restTemplate; - - @XxlJob("sensorDataTopicMqttJobHandler") - public void execute() throws Exception { - try { + public void execute(){ + XxlJobHelper.log("sensorDataTopicMqttJobHandler Beginning."); String filePath = "F://Users/liwenxuan/Desktop/环保上传园区/数据位号2025.3.4-1.xlsx"; // 请替换为实际的Excel文件路径 @@ -57,7 +57,7 @@ public class SensorDataTopicMqttJobHandler { if(id.equals("DK$SO2_ZS_PV")||id.equals("DK$DLGL_GL_GL_DUST_ZS_PV")||id.equals("DK$DLGL_NOX_ZS_PV")||id.equals("DK$DLGL_SFLOW_PV")||id.equals("DK$DLGL_O2_PV")||id.equals("DK$TEMP_PV")||id.equals("DK$DLGL_HUM_PV")||id.equals("DK$DLGL_VELOCITY_PV")||id.equals("DK$DLGL_PRESS_PV")){ System.out.println(id); //请求地址 - String url = "http://172.20.5.120:29912/open/app/api/po/send/MkZSTLpZ7vHYcz2clyDMBuUnuqHX9A49?id=DK$1AT_HJ001_FLAG?id={id}"; + String url = "http://172.20.5.120:29912/open/app/api/po/send/MkZSTLpZ7vHYcz2clyDMBuUnuqHX9A49?id={id}"; //请求参数 Map uriVariables = new HashMap<>(); @@ -66,33 +66,26 @@ public class SensorDataTopicMqttJobHandler { //发起请求,直接返回对象(带参数请求) - JSONObject responseBean = restTemplate.getForObject(url, JSONObject.class, uriVariables); - System.out.println(responseBean.toString()); + ApiResponse apiResponse = restTemplate.getForObject(url, ApiResponse.class, uriVariables); + HashMap recordMap = apiResponse.getData().getRecords().get(0); + System.out.println(apiResponse.getData().getRecords().get(0)); } }); + /*String jsonData = JSONUtil.toJsonStr(alarmInfoIot); + log.info(jsonData); + XxlJobHelper.log("mqtt push data : : " + jsonData); + mqttClient.publish(0, false, deviceTopic, jsonData);*/ - //dataList.forEach(id -> { - try { - - /* - 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()); - } - //}); - - } catch (Exception e) { - e.printStackTrace(); - } - log.info(">>>>>>>>>>>>>>>Alarm info mqtt push finished!"); XxlJobHelper.log(">>>>>>>>>>>>>>>Alarm info mqtt push finished!"); } + + private void init() { + log.info("init 方法调用成功"); + } + private void destroy() { + log.info("destroy 方法调用成功"); + } } diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/UserBaseInfo2MqttJob.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/UserBaseInfo2MqttJob.java deleted file mode 100644 index 78fe3c5..0000000 --- a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/job/user/jobhandler/UserBaseInfo2MqttJob.java +++ /dev/null @@ -1,179 +0,0 @@ -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.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 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.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.personTopic:}") - private String personTopic; - - @Value("${user.token.url:}") - private String tokenUrl; - - @Value("${user.token.username:}") - private String username; - - @Value("${user.token.password:}") - private String password; - - @Value("${user.token.orgin:}") - private String origin; - - @Value("${user.token.verCode:}") - private String verCode; - - @Value("${user.token.urlPerson:}") - private String urlPerson; - - @Value("${user.token.containerId:}") - private String containerId; - - @XxlJob("userBaseInfo2MqttJobHandler") - public void userBaseInfo2MqttJobHandler() throws Exception { - try { - XxlJobHelper.log(" User base info To Mqtt Job Handler Beginning."); - - // 创建httpclient对象 - CloseableHttpClient httpClient = HttpClients.createDefault(); - - //创建请求对象 - HttpPost httpPost = new HttpPost(tokenUrl); - - JSONObject jsonObj = new JSONObject(); - jsonObj.putOnce("username", username); - jsonObj.putOnce("password", password); - - StringEntity entity = new StringEntity(jsonObj.toString()); - //指定请求编码方式 - entity.setContentEncoding("utf-8"); - //数据格式 - entity.setContentType("application/json"); - httpPost.setEntity(entity); - httpPost.setHeader("Origin", origin); - httpPost.setHeader("User-Agent", "sdhxgk"); - - //发送请求 - CloseableHttpResponse response = httpClient.execute(httpPost); - //解析返回结果 - 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")); - String token = data.get("token").toString(); - System.out.println(token); - String number = data.get("number").toString(); - System.out.println(number); - String secNumber = SecureUtil.md5(number); - String secverCode = SecureUtil.md5(verCode); - String twoSec = SecureUtil.md5(secNumber + secverCode); - String threeSec = SecureUtil.md5(twoSec + verCode); - - HttpPost httpPostPerson = new HttpPost(urlPerson); - - - StringEntity entityEmpty = new StringEntity(""); - //指定请求编码方式 - entityEmpty.setContentEncoding("utf-8"); - //数据格式 - entityEmpty.setContentType("application/json"); - httpPostPerson.setEntity(entityEmpty); - httpPostPerson.setHeader("Origin", origin); - httpPostPerson.setHeader("User-Agent", "sdhxgk"); - httpPostPerson.setHeader("token", token); - httpPostPerson.setHeader("number", threeSec); - - //发送请求 - CloseableHttpResponse resPerson = httpClient.execute(httpPostPerson); - //解析返回结果 - 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); - - JSONArray parseArray = JSONUtil.parseArray(jsonObjPerson.get("data")); - parseArray.forEach(obj -> { - JSONObject person = JSONUtil.parseObj(obj); - Object deviceNo = person.get("cardld"); - Object personName = person.get("empName"); - Object empNo = person.get("userCode"); -// Object specifictype = person.get("userType"); - Object userPhone = person.get("userPhone"); -// Object workUnit = person.get("userOrgName"); -// Object workUnitCode = person.get("userOrgCode"); - - UserBaseInfoIot userBaseInfoIot = new UserBaseInfoIot(); - UserBaseInfo userBaseInfo = new UserBaseInfo(); - userBaseInfo.setContainerId(containerId); - userBaseInfo.setCardId(deviceNo != null ? deviceNo.toString() : null); - 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); - userBaseInfoIot.setData(userBaseInfo); - userBaseInfoIot.setDataType("baseInfo"); - String jsonData = JSONUtil.toJsonStr(userBaseInfoIot); - XxlJobHelper.log("mqtt push data : " + jsonData); - mqttClient.publish(0, false, personTopic, jsonData); - }); - } - } - //关闭资源 - response.close(); - httpClient.close(); - } catch (Exception e) { - e.printStackTrace(); - } - log.info(">>>>>>>>>>>>>>>mqtt push finished!"); - XxlJobHelper.log(">>>>>>>>>>>>>>>mqtt push finished!"); - } -} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index e689df0..7a0d0aa 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -64,16 +64,6 @@ spring: primary: syncplant #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源. strict: false - mqtt: - username: 10@ningyanghuagongchany20250422172632 - password: 9fabff0fe3d049af92329e29dd9af7e4 - hostUrl: tcp://112.245.55.112:7379 - clientId: 10@ningyanghuagongchany20250422172632 - sensorDataTopic: /iot/{clientId}/thirdParty/sensorData - timeout: 100 - keepalive: 60 - enabled: true - realtimeDataTopic: /iot/{clientId}/thirdParty/realtimeData xxl: job: admin: @@ -95,4 +85,14 @@ xxl: logpath: ./data/logs/xxl-job/executor #执行器日志保存天数 logretentiondays: 30 + mqtt: + username: 10@ningyanghuagongchany20250422172632 + password: 9fabff0fe3d049af92329e29dd9af7e4 + hostUrl: tcp://112.245.55.112:7379 + clientId: 10@ningyanghuagongchany20250422172632 + sensorDataTopic: /iot/10@ningyanghuagongchany20250422172632/thirdParty/sensorData + timeout: 100 + keepalive: 60 + enabled: true + realtimeDataTopic: /iot/10@ningyanghuagongchany20250422172632/thirdParty/realtimeData