diff --git a/pom.xml b/pom.xml
index f1303d3..5fc815f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -161,6 +161,12 @@
hutool-all
5.8.22
+
+
+ com.xuxueli
+ xxl-job-core
+ 2.4.1
+
diff --git a/src/main/java/com/hxjt/dataupload/config/XxlJobConfig.java b/src/main/java/com/hxjt/dataupload/config/XxlJobConfig.java
new file mode 100644
index 0000000..f23ba59
--- /dev/null
+++ b/src/main/java/com/hxjt/dataupload/config/XxlJobConfig.java
@@ -0,0 +1,59 @@
+package com.hxjt.dataupload.config;
+
+import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 小滴课堂,愿景:让技术不再难学
+ *
+ * @Description
+ * @Author 二当家小D,微信:xdclass6
+ * @Remark 有问题直接联系我,源码-笔记-技术交流群
+ * @Version 1.0
+ **/
+@Configuration
+public class XxlJobConfig {
+ private Logger log = LoggerFactory.getLogger(XxlJobConfig.class);
+
+ @Value("${xxl.job.admin.addresses}")
+ private String adminAddresses;
+
+ @Value("${xxl.job.executor.appname}")
+ private String appName;
+
+ @Value("${xxl.job.executor.ip}")
+ private String ip;
+
+ @Value("${xxl.job.executor.port}")
+ private int port;
+
+ @Value("${xxl.job.accessToken}")
+ private String accessToken;
+
+ @Value("${xxl.job.executor.logpath}")
+ private String logPath;
+
+ @Value("${xxl.job.executor.logretentiondays}")
+ private int logRetentionDays;
+
+ //旧版的有bug
+ //@Bean(initMethod = "start", destroyMethod = "destroy")
+ @Bean
+ public XxlJobSpringExecutor xxlJobExecutor() {
+ log.info(">>>>>>>>>>> xxl-job config init.");
+ XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
+ xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
+ xxlJobSpringExecutor.setAppname(appName);
+ xxlJobSpringExecutor.setIp(ip);
+ xxlJobSpringExecutor.setPort(port);
+ xxlJobSpringExecutor.setAccessToken(accessToken);
+ xxlJobSpringExecutor.setLogPath(logPath);
+ xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
+
+ return xxlJobSpringExecutor;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/doubleprevent/MyJobHandler.java b/src/main/java/com/hxjt/dataupload/jobhandler/doubleprevent/MyJobHandler.java
new file mode 100644
index 0000000..79d5cb0
--- /dev/null
+++ b/src/main/java/com/hxjt/dataupload/jobhandler/doubleprevent/MyJobHandler.java
@@ -0,0 +1,45 @@
+package com.hxjt.dataupload.jobhandler.doubleprevent;
+
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDateTime;
+
+
+/**
+ * 小滴课堂,愿景:让技术不再难学
+ *
+ * @Description
+ * @Author 二当家小D,微信:xdclass6
+ * @Remark 有问题直接联系我,源码-笔记-技术交流群
+ * @Version 1.0
+ **/
+
+@Component
+public class MyJobHandler {
+
+ private Logger log = LoggerFactory.getLogger(MyJobHandler.class);
+
+ @XxlJob(value = "demoJobHandler",init = "init",destroy = "destroy")
+ public ReturnT execute(String param){
+
+
+ log.info("小滴课堂 execute 任务触发成功:"+LocalDateTime.now());
+
+
+ return ReturnT.SUCCESS;
+ }
+
+
+ private void init(){
+ log.info("init 方法调用成功");
+ }
+
+ private void destroy(){
+ log.info("destroy 方法调用成功");
+ }
+
+}
diff --git a/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/AlarmInfo2MqttJob.java b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/AlarmInfo2MqttJob.java
new file mode 100644
index 0000000..129aff7
--- /dev/null
+++ b/src/main/java/com/hxjt/dataupload/jobhandler/mqtt/AlarmInfo2MqttJob.java
@@ -0,0 +1,123 @@
+package com.hxjt.dataupload.jobhandler.mqtt;
+
+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.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 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.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.TimeZone;
+
+@Component
+
+public class AlarmInfo2MqttJob {
+
+ @Resource
+ MqttClient mqttClient;
+
+ @Value("${spring.mqtt.deviceTopic:}")
+ private String deviceTopic;
+
+ @Value("${user.token.containerId:}")
+ private String containerId;
+
+ @Resource
+ RestTemplate restTemplate;
+
+ @Value("${alarm.real.url:}")
+ private String alarmUrl;
+
+ @Value("${alarm.real.code:}")
+ private String codeAlarm;
+
+ public static final Logger log = LoggerFactory.getLogger(Log4j2.class);
+
+ @XxlJob("alarmInfo2MqttJobHandler")
+ public void userBaseInfo2MqttJobHandler() throws Exception {
+ try {
+ XxlJobHelper.log("Alarm info To Mqtt Job Handler Beginning.");
+
+ ResponseEntity