瀏覽代碼

Merge remote-tracking branch 'origin/master'

丁治程 1 年之前
父節點
當前提交
20f7a8bb50

+ 3 - 1
jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java

@@ -8,6 +8,7 @@ import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.core.env.Environment;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
@@ -18,6 +19,7 @@ import java.net.UnknownHostException;
 */
 @Slf4j
 @SpringBootApplication
+@EnableScheduling
 //@EnableAutoConfiguration(exclude={MongoAutoConfiguration.class})
 public class JeecgSystemApplication extends SpringBootServletInitializer {
 
@@ -41,4 +43,4 @@ public class JeecgSystemApplication extends SpringBootServletInitializer {
 
     }
 
-}
+}

+ 37 - 36
jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml

@@ -36,42 +36,42 @@ spring:
             enable: true
             required: true
   ## kafka配置
-  kafka:
-      bootstrap-servers: 192.168.2.154:9092,192.168.2.176:9092,192.168.2.114:9092
-      producer:
-        # 发生错误后,消息重发的次数。
-        retries: 0
-        #当有多个消息需要被发送到同一个分区时,生产者会把它们放在同一个批次里。该参数指定了一个批次可以使用的内存大小,按照字节数计算。
-        batch-size: 16384
-        # 设置生产者内存缓冲区的大小。
-        buffer-memory: 33554432
-        # 键的序列化方式
-        key-serializer: org.apache.kafka.common.serialization.StringSerializer
-        # 值的序列化方式
-        value-serializer: org.apache.kafka.common.serialization.StringSerializer
-        # acks=0 : 生产者在成功写入消息之前不会等待任何来自服务器的响应。
-        # acks=1 : 只要集群的首领节点收到消息,生产者就会收到一个来自服务器成功响应。
-        # acks=all :只有当所有参与复制的节点全部收到消息时,生产者才会收到一个来自服务器的成功响应。
-        acks: 0
-      consumer:
-        # 自动提交的时间间隔 在spring boot 2.X 版本中这里采用的是值的类型为Duration 需要符合特定的格式,如1S,1M,2H,5D
-        auto-commit-interval: 1S
-        # 该属性指定了消费者在读取一个没有偏移量的分区或者偏移量无效的情况下该作何处理:
-        # latest(默认值)在偏移量无效的情况下,消费者将从最新的记录开始读取数据(在消费者启动之后生成的记录)
-        # earliest :在偏移量无效的情况下,消费者将从起始位置读取分区的记录
-        auto-offset-reset: earliest
-        # 是否自动提交偏移量,默认值是true,为了避免出现重复数据和数据丢失,可以把它设置为false,然后手动提交偏移量
-        enable-auto-commit: false
-        # 键的反序列化方式
-        key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
-        # 值的反序列化方式
-        value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
-      listener:
-        # 在侦听器容器中运行的线程数。
-        concurrency: 5
-        #listner负责ack,每调用一次,就立即commit
-        ack-mode: manual_immediate
-        missing-topics-fatal: false
+#  kafka:
+#      bootstrap-servers: 192.168.2.154:9092,192.168.2.176:9092,192.168.2.114:9092
+#      producer:
+#        # 发生错误后,消息重发的次数。
+#        retries: 0
+#        #当有多个消息需要被发送到同一个分区时,生产者会把它们放在同一个批次里。该参数指定了一个批次可以使用的内存大小,按照字节数计算。
+#        batch-size: 16384
+#        # 设置生产者内存缓冲区的大小。
+#        buffer-memory: 33554432
+#        # 键的序列化方式
+#        key-serializer: org.apache.kafka.common.serialization.StringSerializer
+#        # 值的序列化方式
+#        value-serializer: org.apache.kafka.common.serialization.StringSerializer
+#        # acks=0 : 生产者在成功写入消息之前不会等待任何来自服务器的响应。
+#        # acks=1 : 只要集群的首领节点收到消息,生产者就会收到一个来自服务器成功响应。
+#        # acks=all :只有当所有参与复制的节点全部收到消息时,生产者才会收到一个来自服务器的成功响应。
+#        acks: 0
+#      consumer:
+#        # 自动提交的时间间隔 在spring boot 2.X 版本中这里采用的是值的类型为Duration 需要符合特定的格式,如1S,1M,2H,5D
+#        auto-commit-interval: 1S
+#        # 该属性指定了消费者在读取一个没有偏移量的分区或者偏移量无效的情况下该作何处理:
+#        # latest(默认值)在偏移量无效的情况下,消费者将从最新的记录开始读取数据(在消费者启动之后生成的记录)
+#        # earliest :在偏移量无效的情况下,消费者将从起始位置读取分区的记录
+#        auto-offset-reset: earliest
+#        # 是否自动提交偏移量,默认值是true,为了避免出现重复数据和数据丢失,可以把它设置为false,然后手动提交偏移量
+#        enable-auto-commit: false
+#        # 键的反序列化方式
+#        key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
+#        # 值的反序列化方式
+#        value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
+#      listener:
+#        # 在侦听器容器中运行的线程数。
+#        concurrency: 5
+#        #listner负责ack,每调用一次,就立即commit
+#        ack-mode: manual_immediate
+#        missing-topics-fatal: false
   ## quartz定时任务,采用数据库方式
   quartz:
     job-store-type: jdbc
@@ -167,6 +167,7 @@ spring:
         connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
       datasource:
         master:
+          type: com.alibaba.druid.pool.DruidDataSource
           url: jdbc:mysql://152.136.206.27:3306/ems?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
           username: itdm-boot
           password: itdm-boot@2023

+ 1 - 1
jeecg-module-system/jeecg-system-start/src/main/resources/application.yml

@@ -2,4 +2,4 @@ spring:
   application:
     name: jeecg-system
   profiles:
-    active: '@profile.name@'
+    active: 'dev'

+ 24 - 24
jeecg_module_ems/src/main/java/org/jeecg/kafka/consumer/TestConsumer.java

@@ -1,28 +1,28 @@
 package org.jeecg.kafka.consumer;
 
 
-import org.apache.kafka.clients.consumer.ConsumerRecord;
-import org.jeecg.kafka.producer.TestProducer;
-import org.springframework.kafka.annotation.KafkaListener;
-import org.springframework.stereotype.Component;
+//import org.apache.kafka.clients.consumer.ConsumerRecord;
+//import org.jeecg.kafka.producer.TestProducer;
+//import org.springframework.kafka.annotation.KafkaListener;
+//import org.springframework.stereotype.Component;
 
-@Component
-public class TestConsumer {
-
-    /**
-     * 指定一个消费者组,一个主题主题。
-     */
-    @KafkaListener(topics = TestProducer.TOPIC_TEST,groupId = TestProducer.GROUP_TEST)
-    public void simpleConsumer(ConsumerRecord<String, Object> record) {
-        System.out.println("进入simpleConsumer方法");
-        System.out.printf(
-                "分区 = %d, 偏移量 = %d, key = %s, 内容 = %s,创建消息的时间戳 =%d%n",
-                record.partition(),
-                record.offset(),
-                record.key(),
-                record.value(),
-                record.timestamp()
-        );
-    }
-
-}
+//@Component
+//public class TestConsumer {
+//
+//    /**
+//     * 指定一个消费者组,一个主题主题。
+//     */
+//    @KafkaListener(topics = TestProducer.TOPIC_TEST,groupId = TestProducer.GROUP_TEST)
+//    public void simpleConsumer(ConsumerRecord<String, Object> record) {
+//        System.out.println("进入simpleConsumer方法");
+//        System.out.printf(
+//                "分区 = %d, 偏移量 = %d, key = %s, 内容 = %s,创建消息的时间戳 =%d%n",
+//                record.partition(),
+//                record.offset(),
+//                record.key(),
+//                record.value(),
+//                record.timestamp()
+//        );
+//    }
+//
+//}

+ 19 - 19
jeecg_module_ems/src/main/java/org/jeecg/kafka/controller/TestController.java

@@ -1,22 +1,22 @@
 package org.jeecg.kafka.controller;
 
 
-import org.jeecg.kafka.producer.TestProducer;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-
-@RestController
-@RequestMapping("/kafka/test")
-public class TestController {
-
-    @Resource
-    private TestProducer testProducer;
-
-    @GetMapping("/send")
-    public void sendMsg(){
-        testProducer.send("------------测试消息-----------");
-    }
-}
+//import org.jeecg.kafka.producer.TestProducer;
+//import org.springframework.web.bind.annotation.GetMapping;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RestController;
+//
+//import javax.annotation.Resource;
+//
+//@RestController
+//@RequestMapping("/kafka/test")
+//public class TestController {
+//
+//    @Resource
+//    private TestProducer testProducer;
+//
+//    @GetMapping("/send")
+//    public void sendMsg(){
+//        testProducer.send("------------测试消息-----------");
+//    }
+//}

+ 39 - 39
jeecg_module_ems/src/main/java/org/jeecg/kafka/producer/TestProducer.java

@@ -1,44 +1,44 @@
 package org.jeecg.kafka.producer;
 
-import com.alibaba.fastjson.JSON;
-import lombok.extern.slf4j.Slf4j;
-import org.jetbrains.annotations.NotNull;
-import org.springframework.kafka.core.KafkaTemplate;
-import org.springframework.kafka.support.SendResult;
-import org.springframework.stereotype.Component;
-import org.springframework.util.concurrent.ListenableFuture;
-import org.springframework.util.concurrent.ListenableFutureCallback;
+//import com.alibaba.fastjson.JSON;
+//import lombok.extern.slf4j.Slf4j;
+//import org.jetbrains.annotations.NotNull;
+//import org.springframework.kafka.core.KafkaTemplate;
+//import org.springframework.kafka.support.SendResult;
+//import org.springframework.stereotype.Component;
+//import org.springframework.util.concurrent.ListenableFuture;
+//import org.springframework.util.concurrent.ListenableFutureCallback;
 
 import javax.annotation.Resource;
 
-@Component
-@Slf4j
-public class TestProducer {
-
-    @Resource
-    private KafkaTemplate<String, Object> kafkaTemplate;
-
-    //自定义topic
-    public static final String TOPIC_TEST = "visible";
-
-    public static final String GROUP_TEST = "grout.test";
-    public void send(Object obj) {
-        String obj2String = JSON.toJSONString(obj);
-        log.info("准备发送消息为:{}", obj2String);
-        //发送消息
-        ListenableFuture<SendResult<String, Object>> future = kafkaTemplate.send("TOPIC_TEST", obj);
-        future.addCallback(new ListenableFutureCallback<SendResult<String, Object>>() {
-            @Override
-            public void onFailure(@NotNull Throwable throwable) {
-                //发送失败的处理
-                log.info(TOPIC_TEST + " - 生产者 发送消息失败:" + throwable.getMessage());
-            }
-
-            @Override
-            public void onSuccess(SendResult<String, Object> stringObjectSendResult) {
-                //成功的处理
-                log.info(TOPIC_TEST + " - 生产者 发送消息成功:" + stringObjectSendResult.toString());
-            }
-        });
-    }
-}
+//@Component
+//@Slf4j
+//public class TestProducer {
+//
+//    @Resource
+//    private KafkaTemplate<String, Object> kafkaTemplate;
+//
+//    //自定义topic
+//    public static final String TOPIC_TEST = "visible";
+//
+//    public static final String GROUP_TEST = "grout.test";
+//    public void send(Object obj) {
+//        String obj2String = JSON.toJSONString(obj);
+//        log.info("准备发送消息为:{}", obj2String);
+//        //发送消息
+//        ListenableFuture<SendResult<String, Object>> future = kafkaTemplate.send("TOPIC_TEST", obj);
+//        future.addCallback(new ListenableFutureCallback<SendResult<String, Object>>() {
+//            @Override
+//            public void onFailure(@NotNull Throwable throwable) {
+//                //发送失败的处理
+//                log.info(TOPIC_TEST + " - 生产者 发送消息失败:" + throwable.getMessage());
+//            }
+//
+//            @Override
+//            public void onSuccess(SendResult<String, Object> stringObjectSendResult) {
+//                //成功的处理
+//                log.info(TOPIC_TEST + " - 生产者 发送消息成功:" + stringObjectSendResult.toString());
+//            }
+//        });
+//    }
+//}

+ 4 - 7
jeecg_module_ems/src/main/java/org/jeecg/modules/cronJob/GenerateDataJob.java

@@ -1,8 +1,6 @@
 package org.jeecg.modules.cronJob;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.jeecg.modules.dataCurrent.entity.DataCurrent;
 import org.jeecg.modules.dataCurrent.service.IDataCurrentService;
@@ -16,11 +14,10 @@ import org.jeecg.modules.tpmEquipment.entity.TpmEquipment;
 import org.jeecg.modules.tpmEquipment.service.ITpmEquipmentService;
 import org.jeecg.modules.tpmTag.entity.TpmTag;
 import org.jeecg.modules.tpmTag.service.ITpmTagService;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
@@ -30,7 +27,7 @@ import java.util.Date;
 import java.util.List;
 
 @Component
-public class GenerateDataJob implements Job {
+public class GenerateDataJob  {
 
     @Autowired
     private ITpmEquipmentService equipmentService; //设备service
@@ -45,8 +42,8 @@ public class GenerateDataJob implements Job {
     @Autowired
     private IDataVoltageService voltageService; //设备实时电压service
 
-    @Override
-    public void execute(JobExecutionContext context) throws JobExecutionException {
+    //@Scheduled(cron = "0 * * * * ?")
+    public void execute() throws JobExecutionException {
         // 电流值范围:20-50、电压值范围:350-450、需量:400-1500、用电量、0-1.5
         // tagtype:4需量、5电流、6电压、7电量