5 changed files with 164 additions and 9 deletions
@ -0,0 +1,61 @@ |
|||||
|
package com.hxjt.dataupload.jobhandler.mqtt.job.user.domain; |
||||
|
|
||||
|
public class RealtimeDataRequestObj { |
||||
|
|
||||
|
private String code; |
||||
|
private Long time; |
||||
|
private String value; |
||||
|
private String extand; |
||||
|
private String type; |
||||
|
|
||||
|
public String getCode() { |
||||
|
return code; |
||||
|
} |
||||
|
|
||||
|
public void setCode(String code) { |
||||
|
this.code = code; |
||||
|
} |
||||
|
|
||||
|
public Long getTime() { |
||||
|
return time; |
||||
|
} |
||||
|
|
||||
|
public void setTime(Long time) { |
||||
|
this.time = time; |
||||
|
} |
||||
|
|
||||
|
public String getValue() { |
||||
|
return value; |
||||
|
} |
||||
|
|
||||
|
public void setValue(String value) { |
||||
|
this.value = value; |
||||
|
} |
||||
|
|
||||
|
public String getExtand() { |
||||
|
return extand; |
||||
|
} |
||||
|
|
||||
|
public void setExtand(String extand) { |
||||
|
this.extand = extand; |
||||
|
} |
||||
|
|
||||
|
public String getType() { |
||||
|
return type; |
||||
|
} |
||||
|
|
||||
|
public void setType(String type) { |
||||
|
this.type = type; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public String toString() { |
||||
|
return "RealtimeDataRequestObj{" + |
||||
|
"code='" + code + '\'' + |
||||
|
", time=" + time + |
||||
|
", value='" + value + '\'' + |
||||
|
", extand='" + extand + '\'' + |
||||
|
", type='" + type + '\'' + |
||||
|
'}'; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,98 @@ |
|||||
|
package com.hxjt.dataupload.jobhandler.mqtt.job.user.jobhandler; |
||||
|
|
||||
|
|
||||
|
import com.alibaba.fastjson2.JSON; |
||||
|
import com.hxjt.dataupload.jobhandler.mqtt.job.user.domain.ApiResponse; |
||||
|
import com.hxjt.dataupload.jobhandler.mqtt.job.user.domain.RealtimeDataRequestObj; |
||||
|
import com.hxjt.dataupload.jobhandler.mqtt.job.user.domain.SensorDataRequestObj; |
||||
|
import com.hxjt.dataupload.mqtt.MqttClient; |
||||
|
import com.xxl.job.core.context.XxlJobHelper; |
||||
|
import com.xxl.job.core.handler.annotation.XxlJob; |
||||
|
import org.slf4j.Logger; |
||||
|
import org.slf4j.LoggerFactory; |
||||
|
import org.springframework.beans.factory.annotation.Value; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
import org.springframework.web.client.RestTemplate; |
||||
|
|
||||
|
import javax.annotation.Resource; |
||||
|
import java.time.Instant; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.HashMap; |
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
import static com.hxjt.dataupload.utils.ExcelDataExtraction.extractData; |
||||
|
|
||||
|
/* |
||||
|
* 测点实时信息推送 |
||||
|
* */ |
||||
|
@Component |
||||
|
public class RealtimeDataTopicMqttJobHandler { |
||||
|
|
||||
|
private Logger log = LoggerFactory.getLogger(RealtimeDataTopicMqttJobHandler.class); |
||||
|
@Resource |
||||
|
MqttClient mqttClient; |
||||
|
|
||||
|
@Value("${xxl.mqtt.realtimeDataTopic:}") |
||||
|
private String realtimeDataTopic; |
||||
|
|
||||
|
@Resource |
||||
|
RestTemplate restTemplate; |
||||
|
|
||||
|
|
||||
|
@XxlJob("RealtimeDataTopicMqttJobHandler") |
||||
|
public void execute(){ |
||||
|
|
||||
|
XxlJobHelper.log("RealtimeDataTopicMqttJobHandler Beginning."); |
||||
|
|
||||
|
String filePath = "F://Users/liwenxuan/Desktop/环保上传园区/数据位号2025.3.4-1.xlsx"; // 请替换为实际的Excel文件路径
|
||||
|
List<String> dataList = extractData(filePath); |
||||
|
ArrayList<RealtimeDataRequestObj> sArr = new ArrayList<>() ; |
||||
|
dataList.forEach(id -> { |
||||
|
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/SD5UvGh2BGxEaaTh76ybq3Ml1ClvF8j6?id={id}"; |
||||
|
|
||||
|
//请求参数
|
||||
|
Map<String, String> uriVariables = new HashMap<>(); |
||||
|
uriVariables.put("id", id); |
||||
|
|
||||
|
|
||||
|
//发起请求,直接返回对象(带参数请求)
|
||||
|
|
||||
|
ApiResponse apiResponse = restTemplate.getForObject(url, ApiResponse.class, uriVariables); |
||||
|
Map recordMap = apiResponse.getData().getRecords().get(0); |
||||
|
System.out.println(apiResponse.getData().getRecords().get(0)); |
||||
|
RealtimeDataRequestObj obj = new RealtimeDataRequestObj(); |
||||
|
|
||||
|
|
||||
|
obj.setCode((String) recordMap.get("code")); |
||||
|
long timestamp = Instant.now().toEpochMilli(); // 毫秒级
|
||||
|
obj.setTime(timestamp); |
||||
|
obj.setValue((String)recordMap.get("value")); |
||||
|
obj.setType((String) recordMap.get("kpiType")); |
||||
|
obj.setExtand(""); |
||||
|
//System.out.println(sensorDataRequestObj);
|
||||
|
sArr.add(obj); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
String json = JSON.toJSONString(sArr); |
||||
|
System.out.println(json); |
||||
|
XxlJobHelper.log("mqtt push data : : " + json); |
||||
|
|
||||
|
|
||||
|
mqttClient.publish(0, false, realtimeDataTopic, json); |
||||
|
XxlJobHelper.log(">>>>>>>>>>>>>>>Alarm info mqtt push finished!"); |
||||
|
} |
||||
|
|
||||
|
private void init() { |
||||
|
log.info("init 方法调用成功"); |
||||
|
} |
||||
|
|
||||
|
private void destroy() { |
||||
|
log.info("destroy 方法调用成功"); |
||||
|
} |
||||
|
|
||||
|
} |
||||
Loading…
Reference in new issue