From 900343db262a5f2081ee7d5e941d6bda3154a121 Mon Sep 17 00:00:00 2001 From: fengchunyu Date: Mon, 18 Nov 2024 15:11:25 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=88=E6=9C=AC=E8=BF=AD=E4=BB=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{standard => }/ApiController.java | 2 +- .../{standard => }/ProducerController.java | 4 +- .../dianxin/domain/BaseHighThrowRecord.java | 2 + .../dianxin/domain/dto/HighThrowDto.java | 19 +++++ .../domain/dto/HighThrowRequestDataDTO.java | 16 ++++ .../dto/HighThrowRequestDataListDTO.java | 30 ++++++++ .../dianxin/listener/MessageConsumer.java | 2 +- .../datasend/dianxin/task/StandardTask.java | 77 +++++++++++++++++++ src/main/java/com/bootdo/util/Base64Util.java | 50 ++++++++++++ src/main/resources/application.yml | 12 ++- 10 files changed, 208 insertions(+), 6 deletions(-) rename src/main/java/com/bootdo/datasend/dianxin/controller/{standard => }/ApiController.java (92%) rename src/main/java/com/bootdo/datasend/dianxin/controller/{standard => }/ProducerController.java (94%) create mode 100644 src/main/java/com/bootdo/datasend/dianxin/domain/dto/HighThrowDto.java create mode 100644 src/main/java/com/bootdo/datasend/dianxin/domain/dto/HighThrowRequestDataDTO.java create mode 100644 src/main/java/com/bootdo/datasend/dianxin/domain/dto/HighThrowRequestDataListDTO.java create mode 100644 src/main/java/com/bootdo/datasend/dianxin/task/StandardTask.java diff --git a/src/main/java/com/bootdo/datasend/dianxin/controller/standard/ApiController.java b/src/main/java/com/bootdo/datasend/dianxin/controller/ApiController.java similarity index 92% rename from src/main/java/com/bootdo/datasend/dianxin/controller/standard/ApiController.java rename to src/main/java/com/bootdo/datasend/dianxin/controller/ApiController.java index e62d22c..32b1ebb 100644 --- a/src/main/java/com/bootdo/datasend/dianxin/controller/standard/ApiController.java +++ b/src/main/java/com/bootdo/datasend/dianxin/controller/ApiController.java @@ -1,4 +1,4 @@ -package com.bootdo.datasend.dianxin.controller.standard; +package com.bootdo.datasend.dianxin.controller; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; diff --git a/src/main/java/com/bootdo/datasend/dianxin/controller/standard/ProducerController.java b/src/main/java/com/bootdo/datasend/dianxin/controller/ProducerController.java similarity index 94% rename from src/main/java/com/bootdo/datasend/dianxin/controller/standard/ProducerController.java rename to src/main/java/com/bootdo/datasend/dianxin/controller/ProducerController.java index 60442c5..18e3eb2 100644 --- a/src/main/java/com/bootdo/datasend/dianxin/controller/standard/ProducerController.java +++ b/src/main/java/com/bootdo/datasend/dianxin/controller/ProducerController.java @@ -1,4 +1,4 @@ -package com.bootdo.datasend.dianxin.controller.standard; +package com.bootdo.datasend.dianxin.controller; import com.alibaba.fastjson.JSONObject; import org.slf4j.Logger; @@ -27,7 +27,7 @@ public class ProducerController { } - @PostConstruct +// @PostConstruct public String sendMessagetest() { try { JSONObject json = new JSONObject(); diff --git a/src/main/java/com/bootdo/datasend/dianxin/domain/BaseHighThrowRecord.java b/src/main/java/com/bootdo/datasend/dianxin/domain/BaseHighThrowRecord.java index b46f1d2..15b0721 100644 --- a/src/main/java/com/bootdo/datasend/dianxin/domain/BaseHighThrowRecord.java +++ b/src/main/java/com/bootdo/datasend/dianxin/domain/BaseHighThrowRecord.java @@ -103,4 +103,6 @@ public class BaseHighThrowRecord { */ private Long passTime; + private Integer isSend; + } diff --git a/src/main/java/com/bootdo/datasend/dianxin/domain/dto/HighThrowDto.java b/src/main/java/com/bootdo/datasend/dianxin/domain/dto/HighThrowDto.java new file mode 100644 index 0000000..575c087 --- /dev/null +++ b/src/main/java/com/bootdo/datasend/dianxin/domain/dto/HighThrowDto.java @@ -0,0 +1,19 @@ +package com.bootdo.datasend.dianxin.domain.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Auther: cyFeng + * @Date: 2024/11/18 14:23 + * @Description: + */ +@NoArgsConstructor +@Data +public class HighThrowDto { + + @JSONField(name = "requestData") + private HighThrowRequestDataDTO requestData; + +} diff --git a/src/main/java/com/bootdo/datasend/dianxin/domain/dto/HighThrowRequestDataDTO.java b/src/main/java/com/bootdo/datasend/dianxin/domain/dto/HighThrowRequestDataDTO.java new file mode 100644 index 0000000..062aed4 --- /dev/null +++ b/src/main/java/com/bootdo/datasend/dianxin/domain/dto/HighThrowRequestDataDTO.java @@ -0,0 +1,16 @@ +package com.bootdo.datasend.dianxin.domain.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@NoArgsConstructor +@Data +public class HighThrowRequestDataDTO { + @JSONField(name = "requestFlag") + private String requestFlag; + @JSONField(name = "requestDataList") + private List requestDataList; +} \ No newline at end of file diff --git a/src/main/java/com/bootdo/datasend/dianxin/domain/dto/HighThrowRequestDataListDTO.java b/src/main/java/com/bootdo/datasend/dianxin/domain/dto/HighThrowRequestDataListDTO.java new file mode 100644 index 0000000..b5a1813 --- /dev/null +++ b/src/main/java/com/bootdo/datasend/dianxin/domain/dto/HighThrowRequestDataListDTO.java @@ -0,0 +1,30 @@ +package com.bootdo.datasend.dianxin.domain.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@Data +public class HighThrowRequestDataListDTO { + @JSONField(name = "gatewaySN") + private String gatewaySN; + @JSONField(name = "warnType") + private String warnType; + @JSONField(name = "deviceType") + private String deviceType; + @JSONField(name = "deviceSN") + private String deviceSN; + @JSONField(name = "detailSN") + private String detailSN; + + @JSONField(name = "eventName") + private String eventName; + @JSONField(name = "warnTime") + private String warnTime; + @JSONField(name = "eventDescribe") + private String eventDescribe; + @JSONField(name = "globalPicBase64") + private String globalPicBase64; + +} \ No newline at end of file diff --git a/src/main/java/com/bootdo/datasend/dianxin/listener/MessageConsumer.java b/src/main/java/com/bootdo/datasend/dianxin/listener/MessageConsumer.java index 31093d9..059b547 100644 --- a/src/main/java/com/bootdo/datasend/dianxin/listener/MessageConsumer.java +++ b/src/main/java/com/bootdo/datasend/dianxin/listener/MessageConsumer.java @@ -14,7 +14,7 @@ public class MessageConsumer { //测试消费kafka // 监听队列 "myQueue" // @RabbitListener(queues = "myQueue") - public void receiveMessage(JSONObject message) { + public void receiveMessage(String message) { try { // 处理接收到的消息 logger.info("Received message: " + message.toString()); diff --git a/src/main/java/com/bootdo/datasend/dianxin/task/StandardTask.java b/src/main/java/com/bootdo/datasend/dianxin/task/StandardTask.java new file mode 100644 index 0000000..32f87f6 --- /dev/null +++ b/src/main/java/com/bootdo/datasend/dianxin/task/StandardTask.java @@ -0,0 +1,77 @@ +package com.bootdo.datasend.dianxin.task; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.bootdo.datasend.dianxin.domain.BaseHighThrowRecord; +import com.bootdo.datasend.dianxin.domain.dto.HighThrowDto; +import com.bootdo.datasend.dianxin.domain.dto.HighThrowRequestDataDTO; +import com.bootdo.datasend.dianxin.domain.dto.HighThrowRequestDataListDTO; +import com.bootdo.datasend.dianxin.service.BaseHighThrowRecordService; +import com.bootdo.util.Base64Util; +import com.bootdo.util.StringKit; +import lombok.RequiredArgsConstructor; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +@Component +@RequiredArgsConstructor +public class StandardTask { + + private final RabbitTemplate rabbitTemplate; + private final BaseHighThrowRecordService highThrowRecordService; + + /** + * 功能描述: 设备发送 + */ + @Scheduled(cron = "0/5 * * * * ? ") + public void sendDevice() { + + //获取高抛记录 + List highThrowRecords = highThrowRecordService.list(new QueryWrapper() + .eq("is_send","0") + ); + + for (BaseHighThrowRecord h:highThrowRecords){ + + HighThrowDto dto = new HighThrowDto(); + + HighThrowRequestDataDTO dataDTO = new HighThrowRequestDataDTO(); + dataDTO.setRequestFlag("1"); + + HighThrowRequestDataListDTO requestDataListDTO = new HighThrowRequestDataListDTO(); + requestDataListDTO.setGatewaySN(h.getGeminiSn()); + requestDataListDTO.setWarnType("1001"); + requestDataListDTO.setDeviceType("302"); + requestDataListDTO.setDeviceSN(h.getGbsChannelNo()); + requestDataListDTO.setEventName("高抛报警"); + requestDataListDTO.setWarnTime(StringKit.toString(h.getPassTime())); + requestDataListDTO.setGlobalPicBase64(Base64Util.getBase64ByUrl(h.getHighThrowImgurl())); + List list = new ArrayList<>(); + list.add(requestDataListDTO); + dataDTO.setRequestDataList(list); + dto.setRequestData(dataDTO); + + //循环发送mq + boolean b=sendHighThrowMq(dto); + if(b){ + h.setIsSend(1); + highThrowRecordService.saveOrUpdate(h); + } + } + } + + public boolean sendHighThrowMq(HighThrowDto bean) { + try { + rabbitTemplate.convertAndSend("warnrecord", "routing.key.warnrecord", JSON.toJSONString( bean)); + }catch (Exception e){ + return false; + } + return true; + } + + +} diff --git a/src/main/java/com/bootdo/util/Base64Util.java b/src/main/java/com/bootdo/util/Base64Util.java index 99f94ae..30bc022 100644 --- a/src/main/java/com/bootdo/util/Base64Util.java +++ b/src/main/java/com/bootdo/util/Base64Util.java @@ -7,7 +7,10 @@ import javax.imageio.ImageIO; import javax.xml.bind.DatatypeConverter; import java.awt.image.BufferedImage; import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; import java.net.URLEncoder; +import java.util.Base64; public class Base64Util { private static final Logger logger = LoggerFactory.getLogger(Base64Util.class); @@ -73,4 +76,51 @@ public class Base64Util { } + /** + * + * 功能描述: 获取网络地址的base64 + * + */ + public static String getBase64ByUrl(String imageUrl) { + try { + // 图片 URL 地址 +// String imageUrl = "http://221.229.107.118:30521/box-im/image/20241117/1731789048895.png"; + + // 创建 URL 对象 + URL url = new URL(imageUrl); + + // 打开 HTTP 连接 + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("GET"); + + // 获取输入流 + InputStream inputStream = connection.getInputStream(); + + // 转换图片 InputStream 为字节数组 + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = inputStream.read(buffer)) != -1) { + byteArrayOutputStream.write(buffer, 0, bytesRead); + } + + // 获取字节数组 + byte[] imageBytes = byteArrayOutputStream.toByteArray(); + + // 将字节数组转换为 Base64 字符串 + String base64String = Base64.getEncoder().encodeToString(imageBytes); + + // 输出 Base64 字符串 +// System.out.println("Base64 String: " + base64String); + + // 关闭流 + inputStream.close(); + byteArrayOutputStream.close(); + return base64String; + } catch (Exception e) { + e.printStackTrace(); + } + return ""; + } + } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 06e07fb..7d04b1a 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -31,11 +31,19 @@ spring: hibernate: format_sql: true rabbitmq: - host: 110.1.200.11 - port: 19000 + host: 221.229.107.118 + port: 30529 username: root password: 'sm@rtC@m!n23ty' dynamic: true +# rabbitmq: +# host: 110.1.200.11 +# port: 19000 +# username: root +# password: 'sm@rtC@m!n23ty' +# dynamic: true + + #mybatis: # type-aliases-package: com.bootdo.pretreatment.*.entity