From 681c88db286ceacd3617f7fe8a609cb42a84c17f Mon Sep 17 00:00:00 2001
From: LQS <2506203757@qq.com>
Date: Sat, 28 Sep 2024 23:11:55 +0800
Subject: [PATCH] =?UTF-8?q?fate():=E6=96=B0=E5=A2=9E=E5=8D=8F=E8=AE=AE?=
=?UTF-8?q?=E8=A7=A3=E6=9E=90=E6=A8=A1=E5=9D=97=EF=BC=9AMQTT=E8=BF=9E?=
=?UTF-8?q?=E6=8E=A5=EF=BC=8C=E6=95=B0=E6=8D=AE=E8=BD=AC=E6=8D=A2JSON?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
JavaSample-tcp1061513671883/.lck | 0
.../cloud-modules-enterprise-common/pom.xml | 14 +-
.../cloud-modules-enterprise-server/pom.xml | 12 +-
.../CloudEnterpriseApplication.java | 24 ++-
.../enterprise/mapper/car/VehicleMapper.java | 3 +-
.../impl/carImpl/VehicleServiceImpl.java | 23 ++-
.../cloud-modules-protocol-analysis/pom.xml | 117 ++++++++++++++
.../muyu/analysis/parsing}/MQTT/DemoMQTT.java | 13 +-
.../parsing/ProtocolParsingApplication.java | 24 +++
.../parsing/controller/ParsingController.java | 87 ++++++++++
.../parsing/mapper/ParsingMapper.java | 17 ++
.../parsing/remote/RemoteClientService.java | 41 +++++
.../factory/RemoteClientServiceFactory.java | 40 +++++
.../parsing/service/ParsingService.java | 24 +++
.../service/impl/ParsingServiceImpl.java | 151 ++++++++++++++++++
...ot.autoconfigure.AutoConfiguration.imports | 1 +
.../src/main/resources/banner.txt | 2 +
.../src/main/resources/bootstrap.yml | 46 ++++++
.../src/main/resources/logback/dev.xml | 74 +++++++++
.../src/main/resources/logback/prod.xml | 81 ++++++++++
.../src/main/resources/logback/test.xml | 81 ++++++++++
.../cloud-modules-enterprise/pom.xml | 1 +
22 files changed, 855 insertions(+), 21 deletions(-)
delete mode 100644 JavaSample-tcp1061513671883/.lck
create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/pom.xml
rename cloud-modules/cloud-modules-enterprise/{cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise => cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing}/MQTT/DemoMQTT.java (90%)
create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/ProtocolParsingApplication.java
create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/controller/ParsingController.java
create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/mapper/ParsingMapper.java
create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/remote/RemoteClientService.java
create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/remote/factory/RemoteClientServiceFactory.java
create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/service/ParsingService.java
create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/service/impl/ParsingServiceImpl.java
create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/resources/banner.txt
create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/resources/bootstrap.yml
create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/resources/logback/dev.xml
create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/resources/logback/prod.xml
create mode 100644 cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/resources/logback/test.xml
diff --git a/JavaSample-tcp1061513671883/.lck b/JavaSample-tcp1061513671883/.lck
deleted file mode 100644
index e69de29..0000000
diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/pom.xml b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/pom.xml
index ee4cfa9..a51a034 100644
--- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/pom.xml
+++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/pom.xml
@@ -29,5 +29,17 @@
io.swagger.core.v3
swagger-annotations-jakarta
+
+
+ org.eclipse.paho
+ org.eclipse.paho.client.mqttv3
+ 1.2.2
+
+
+
+ org.springframework.integration
+ spring-integration-mqtt
+ 6.2.5
+
-
\ No newline at end of file
+
diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/pom.xml b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/pom.xml
index 82c7085..d817bf8 100644
--- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/pom.xml
+++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/pom.xml
@@ -23,15 +23,9 @@
- org.eclipse.paho
- org.eclipse.paho.client.mqttv3
- 1.2.2
-
-
-
- org.springframework.integration
- spring-integration-mqtt
- 6.2.5
+ com.github.yulichang
+ mybatis-plus-join-boot-starter
+ 1.4.11
diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/CloudEnterpriseApplication.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/CloudEnterpriseApplication.java
index cd401fd..91d5fe9 100644
--- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/CloudEnterpriseApplication.java
+++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/CloudEnterpriseApplication.java
@@ -16,8 +16,26 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
public class CloudEnterpriseApplication {
public static void main (String[] args) {
SpringApplication.run(CloudEnterpriseApplication.class, args);
- while (true){
- System.out.println("马叉,马叉");
+ System.out.println(" _ooOoo_\n" +
+ " o8888888o\n" +
+ " 88\" . \"88\n" +
+ " (| -_- |)\n" +
+ " O\\ = /O\n" +
+ " ____/`---'\\____\n" +
+ " .' \\\\| |// `.\n" +
+ " / \\\\||| : |||// \\\n" +
+ " / _||||| -:- |||||- \\\n" +
+ " | | \\\\\\ - /// | |\n" +
+ " | \\_| ''\\---/'' | |\n" +
+ " \\ .-\\__ `-` ___/-. /\n" +
+ " ___`. .' /--.--\\ `. . __\n" +
+ " .\"\" '< `.___\\_<|>_/___.' >'\"\".\n" +
+ " | | : `- \\`.;`\\ _ /`;.`/ - ` : | |\n" +
+ " \\ \\ `-. \\_ __\\ /__ _/ .-` / /\n" +
+ " ======`-.____`-.___\\_____/___.-`____.-'======\n" +
+ " `=---='\n" +
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+ " // 佛祖保佑 永不宕机 永无BUG //");
}
- }
+
}
diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/car/VehicleMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/car/VehicleMapper.java
index 314b93d..d79f256 100644
--- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/car/VehicleMapper.java
+++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/car/VehicleMapper.java
@@ -2,6 +2,7 @@ package com.muyu.enterprise.mapper.car;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
import com.muyu.enterprise.domain.car.Vehicle;
import com.muyu.enterprise.domain.req.car.VehicleManageReq;
import com.muyu.enterprise.domain.resp.car.VehicleManageResp;
@@ -19,7 +20,7 @@ import java.util.List;
* @Description: 车辆管理持久层
*/
@Mapper
-public interface VehicleMapper extends BaseMapper
+public interface VehicleMapper extends MPJBaseMapper
{
/**
* 查询车辆管理列表
diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/carImpl/VehicleServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/carImpl/VehicleServiceImpl.java
index 6aa1bd8..1f9871d 100644
--- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/carImpl/VehicleServiceImpl.java
+++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/carImpl/VehicleServiceImpl.java
@@ -1,7 +1,10 @@
package com.muyu.enterprise.service.impl.carImpl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.muyu.common.core.utils.StringUtils;
import com.muyu.enterprise.domain.car.Vehicle;
+import com.muyu.enterprise.domain.car.VehicleType;
import com.muyu.enterprise.domain.req.car.VehicleManageReq;
import com.muyu.enterprise.domain.resp.car.VehicleManageResp;
import com.muyu.enterprise.mapper.car.VehicleMapper;
@@ -36,8 +39,24 @@ extends ServiceImpl getVehicleList(VehicleManageReq vehicleManageReq) {
- List vehicleList = vehicleMapper.findAll(vehicleManageReq);
- return vehicleList;
+ MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>();
+ wrapper.selectAll(Vehicle.class)
+ .selectAs(VehicleType::getVehicleTypeName, VehicleManageResp::getVehicleTypeName)
+ .leftJoin(VehicleType.class, VehicleType::getVehicleTypeId, Vehicle::getVehicleTypeId)
+ .like(
+ StringUtils.isNotEmpty(vehicleManageReq.getLicenceNumber()),
+ Vehicle::getLicenceNumber, vehicleManageReq.getLicenceNumber()
+ )
+ .like(
+ StringUtils.isNotEmpty(vehicleManageReq.getVehicleVin()),
+ Vehicle::getVehicleVin, vehicleManageReq.getVehicleVin()
+ )
+ .eq(
+ StringUtils.isNotBlank(vehicleManageReq.getVehicleStatus()),
+ Vehicle::getVehicleStatus, vehicleManageReq.getVehicleStatus()
+ );
+ List list = vehicleMapper.selectJoinList(VehicleManageResp.class, wrapper);
+ return list;
}
diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/pom.xml b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/pom.xml
new file mode 100644
index 0000000..8b08818
--- /dev/null
+++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/pom.xml
@@ -0,0 +1,117 @@
+
+
+ 4.0.0
+
+ com.muyu
+ cloud-modules-enterprise
+ 3.6.3
+
+
+ cloud-modules-protocol-analysis
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+ cloud-modules-protocol-analysis协议解析模块
+
+
+
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+
+ com.mysql
+ mysql-connector-j
+
+
+
+
+ com.muyu
+ cloud-common-datasource
+
+
+
+
+ com.muyu
+ cloud-common-datascope
+
+
+
+
+ com.muyu
+ cloud-common-log
+
+
+
+
+ com.muyu
+ cloud-common-api-doc
+
+
+
+
+ com.muyu
+ cloud-modules-enterprise-common
+
+
+
+ com.muyu
+ cloud-modules-enterprise-server
+ 3.6.3
+
+
+
+ com.github.yulichang
+ mybatis-plus-join-boot-starter
+ 1.4.11
+
+
+
+
+ ${project.artifactId}
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ repackage
+
+
+
+
+
+
+
+
diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/MQTT/DemoMQTT.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/MQTT/DemoMQTT.java
similarity index 90%
rename from cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/MQTT/DemoMQTT.java
rename to cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/MQTT/DemoMQTT.java
index 518139d..2ba02a7 100644
--- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/MQTT/DemoMQTT.java
+++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/MQTT/DemoMQTT.java
@@ -1,18 +1,18 @@
-package com.muyu.enterprise.MQTT;
+package com.muyu.analysis.parsing.MQTT;
+import com.muyu.analysis.parsing.controller.ParsingController;
import org.eclipse.paho.client.mqttv3.*;
-import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
/**
* 测试MQTT
* @ClassName demo
* @Description 描述
- * @Author YiBo.Liu
- * @Date 2024/9/27 22:27
+ * @Author 李庆帅
+ * @Date 2024/9/28
*/
public class DemoMQTT {
- public static void main(String[] args) {
+ public void main(String[] args) {
String topic = "vehicle";
String content = "Message from MqttPublishSample";
@@ -20,6 +20,8 @@ public class DemoMQTT {
String broker = "tcp://106.15.136.7:1883";
String clientId = "JavaSample";
+
+
try {
// 第三个参数为空,默认持久化策略
MqttClient sampleClient = new MqttClient(broker, clientId);
@@ -55,4 +57,5 @@ public class DemoMQTT {
}
}
+
}
diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/ProtocolParsingApplication.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/ProtocolParsingApplication.java
new file mode 100644
index 0000000..25cc5d5
--- /dev/null
+++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/ProtocolParsingApplication.java
@@ -0,0 +1,24 @@
+package com.muyu.analysis.parsing;
+
+import com.muyu.common.security.annotation.EnableCustomConfig;
+import com.muyu.common.security.annotation.EnableMyFeignClients;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * 协议解析启动类
+ * @Author: 李庆帅
+ * @Package: com.muyu.cloud.protocol.parsing
+ * @Project: 2112-car-cloud-server
+ * @name: ProtocolParsingApplication
+ * @Date: 2024/9/28 11:54
+ * @Description: 协议解析启动类
+ */
+@EnableCustomConfig
+@EnableMyFeignClients
+@SpringBootApplication
+public class ProtocolParsingApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(ProtocolParsingApplication.class, args);
+ }
+}
diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/controller/ParsingController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/controller/ParsingController.java
new file mode 100644
index 0000000..6d89015
--- /dev/null
+++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/controller/ParsingController.java
@@ -0,0 +1,87 @@
+package com.muyu.analysis.parsing.controller;
+
+import cn.hutool.json.JSONObject;
+import com.muyu.analysis.parsing.MQTT.DemoMQTT;
+import com.muyu.analysis.parsing.service.ParsingService;
+import org.eclipse.paho.client.mqttv3.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 协议解析控制层
+ * @Author:李庆帅
+ * @Package:com.muyu.analysis.parsing.controller
+ * @Project:cloud-server
+ * @name:ParsingController
+ * @Date:2024/9/28 20:36
+ */
+@RestController
+@RequestMapping("/parsing")
+public class ParsingController
+{
+ private static final String topic = "vehicle";
+ private static final String content = "Message from MqttPublishSample";
+ private static final int qos = 2;
+ private static final String broker = "tcp://106.15.136.7:1883";
+ private static final String clientId = "JavaSample";
+
+ @Autowired
+ private ParsingService parsingService;
+
+// /**
+// * 协议解析
+// * @param messageStr
+// * @return
+// */
+// @PostMapping("/protocolParsing")
+// public JSONObject protocolParsing(@RequestParam("messageStr") String messageStr) {
+// try {
+// // 第三个参数为空,默认持久化策略
+// MqttClient sampleClient = new MqttClient(broker, clientId);
+// MqttConnectOptions connOpts = new MqttConnectOptions();
+// connOpts.setCleanSession(true);
+// System.out.println("Connecting to broker: "+broker);
+// sampleClient.connect(connOpts);
+// sampleClient.subscribe(topic,0);
+// sampleClient.setCallback(new MqttCallback() {
+// // 连接丢失
+// @Override
+// public void connectionLost(Throwable throwable) {
+//
+// }
+// // 连接成功
+// @Override
+// public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
+// System.out.println(new String(mqttMessage.getPayload()));
+// }
+// // 接收信息
+// @Override
+// public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
+//
+// }
+// });
+// } catch(MqttException me) {
+// System.out.println("reason "+me.getReasonCode());
+// System.out.println("msg "+me.getMessage());
+// System.out.println("loc "+me.getLocalizedMessage());
+// System.out.println("cause "+me.getCause());
+// System.out.println("excep "+me);
+// me.printStackTrace();
+// }
+// JSONObject messageValue = parsingService.protocolParsing(messageStr);
+// return messageValue;
+// }
+
+ /**
+ * 协议解析
+ */
+ @PostMapping("/mqttClient")
+ public void mqttClient() {
+ parsingService.mqtt();
+ }
+
+
+}
diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/mapper/ParsingMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/mapper/ParsingMapper.java
new file mode 100644
index 0000000..913cd90
--- /dev/null
+++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/mapper/ParsingMapper.java
@@ -0,0 +1,17 @@
+package com.muyu.analysis.parsing.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.muyu.enterprise.domain.car.MessageValue;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 协议解析持久层
+ * @Author:李庆帅
+ * @Package:com.muyu.analysis.parsing.mapper
+ * @Project:cloud-server
+ * @name:ParsingMapper
+ * @Date:2024/9/28 20:54
+ */
+@Mapper
+public interface ParsingMapper extends BaseMapper {
+}
diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/remote/RemoteClientService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/remote/RemoteClientService.java
new file mode 100644
index 0000000..d7a0f39
--- /dev/null
+++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/remote/RemoteClientService.java
@@ -0,0 +1,41 @@
+package com.muyu.analysis.parsing.remote;
+
+import com.muyu.analysis.parsing.remote.factory.RemoteClientServiceFactory;
+import com.muyu.common.core.domain.Result;
+import com.muyu.enterprise.domain.resp.car.MessageValueListResp;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import java.util.List;
+
+/**
+ * 报文模版远程调用接口
+ * @Author:李庆帅
+ * @Package:com.muyu.analysis.parsing.feign
+ * @Project:cloud-server
+ * @name:RemoteServiceClient
+ * @Date:2024/9/28 20:38
+ */
+@FeignClient(name = "remoteClientService"
+,fallbackFactory= RemoteClientServiceFactory.class)
+public interface RemoteClientService {
+ /**
+ * 根据报文模版id查询报文数据
+ * @param vehicleVin 请求对象
+ * @return 返回结果
+ */
+ @GetMapping("/vehicleManage/findByVehicleVin/{vehicleVin}")
+// @Operation(description = "通过车辆vin码查询模板id")
+ public Result findByVehicleVin(@PathVariable("vehicleVin") String vehicleVin);
+
+ /**
+ * 根据报文模版id查询报文数据
+ * @param templateId 请求对象
+ * @return 返回结果
+ */
+ @GetMapping("/messageValue/findByTemplateId/{templateId}")
+// @Operation(summary = "根据报文模版id查询报文数据", description = "根据报文模版id查询报文数据")
+ public Result> findByTemplateId(@PathVariable("templateId") Long templateId);
+
+}
diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/remote/factory/RemoteClientServiceFactory.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/remote/factory/RemoteClientServiceFactory.java
new file mode 100644
index 0000000..5851bbc
--- /dev/null
+++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/remote/factory/RemoteClientServiceFactory.java
@@ -0,0 +1,40 @@
+package com.muyu.analysis.parsing.remote.factory;
+
+import com.muyu.analysis.parsing.remote.RemoteClientService;
+import com.muyu.common.core.domain.Result;
+import com.muyu.enterprise.domain.resp.car.MessageValueListResp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+
+import java.util.List;
+
+/**
+ * 报文模版对象服务降级处理
+ * @Author:李庆帅
+ * @Package:com.muyu.analysis.parsing.remote.factory
+ * @Project:cloud-server
+ * @name:RemoteServiceClientFactory
+ * @Date:2024/9/28 21:16
+ */
+public class RemoteClientServiceFactory implements FallbackFactory
+{
+ private static final Logger log = LoggerFactory.getLogger(RemoteClientServiceFactory.class);
+
+ @Override
+ public RemoteClientService create(Throwable throwable) {
+ log.error("报文模版传参调用失败:{}", throwable.getMessage());
+ return new RemoteClientService(){
+
+ @Override
+ public Result findByVehicleVin(String vehicleVin) {
+ return Result.error("报文模版传参调用失败" + throwable.getMessage());
+ }
+
+ @Override
+ public Result> findByTemplateId(Long templateId) {
+ return Result.error("报文模版传参调用失败" + throwable.getMessage());
+ }
+ };
+ }
+}
diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/service/ParsingService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/service/ParsingService.java
new file mode 100644
index 0000000..9885754
--- /dev/null
+++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/service/ParsingService.java
@@ -0,0 +1,24 @@
+package com.muyu.analysis.parsing.service;
+
+import cn.hutool.json.JSONObject;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.muyu.enterprise.domain.car.MessageValue;
+
+/**
+ * 协议解析业务层
+ * @Author:李庆帅
+ * @Package:com.muyu.analysis.parsing.service
+ * @Project:cloud-server
+ * @name:ParsingService
+ * @Date:2024/9/28 20:50
+ */
+public interface ParsingService extends IService
+{
+
+
+ /**
+ * 协议解析
+ * @return
+ */
+ void mqtt();
+}
diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/service/impl/ParsingServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/service/impl/ParsingServiceImpl.java
new file mode 100644
index 0000000..909319a
--- /dev/null
+++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/service/impl/ParsingServiceImpl.java
@@ -0,0 +1,151 @@
+package com.muyu.analysis.parsing.service.impl;
+
+import cn.hutool.json.JSONObject;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.muyu.analysis.parsing.controller.ParsingController;
+import com.muyu.analysis.parsing.remote.RemoteClientService;
+import com.muyu.analysis.parsing.mapper.ParsingMapper;
+import com.muyu.analysis.parsing.service.ParsingService;
+import com.muyu.common.core.domain.Result;
+import com.muyu.enterprise.domain.car.MessageValue;
+import com.muyu.enterprise.domain.resp.car.MessageValueListResp;
+import lombok.extern.log4j.Log4j2;
+import org.eclipse.paho.client.mqttv3.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 协议解析实现层
+ * @Author:李庆帅
+ * @Package:com.muyu.analysis.parsing.service.impl
+ * @Project:cloud-server
+ * @name:ParsingServiceImpl
+ * @Date:2024/9/28 20:53
+ */
+@Log4j2
+@Service
+public class ParsingServiceImpl extends ServiceImpl
+ implements ParsingService
+{
+ @Resource
+ private RedisTemplate redisTemplate;
+
+ @Autowired
+ private RemoteClientService remoteServiceClientService;
+
+
+
+ @Override
+ public void mqtt() {
+ String topic = "vehicle";
+ String content = "Message from MqttPublishSample";
+ int qos = 2;
+ String broker = "tcp://106.15.136.7:1883";
+ String clientId = "JavaSample";
+
+
+
+ try {
+ // 第三个参数为空,默认持久化策略
+ MqttClient sampleClient = new MqttClient(broker, clientId);
+ MqttConnectOptions connOpts = new MqttConnectOptions();
+ connOpts.setCleanSession(true);
+ System.out.println("Connecting to broker: "+broker);
+ sampleClient.connect(connOpts);
+ sampleClient.subscribe(topic,0);
+ sampleClient.setCallback(new MqttCallback() {
+ // 连接丢失
+ @Override
+ public void connectionLost(Throwable throwable) {
+
+ }
+ // 连接成功
+ @Override
+ public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
+ System.out.println(new String(mqttMessage.getPayload()));
+ String mqtt= new String(mqttMessage.getPayload());
+ JSONObject jsonObject = this.protocolParsing(mqtt);
+ System.out.println("转换后:"+jsonObject);
+ }
+
+ public JSONObject protocolParsing(String messageStr) {
+ //根据空格切割数据
+ String[] hexArray = messageStr.split(" ");
+ StringBuilder result = new StringBuilder();
+ //遍历十六进制数据转换为字符
+ for (String hex : hexArray) {
+ int decimal = Integer.parseInt(hex, 16);
+ result.append((char) decimal);
+ }
+ //取出车辆VIN码
+ String vehicleVin = result.substring(1, 18);
+ log.info("车辆VIN码: " + vehicleVin);
+ //根据车辆VIN码查询报文模板ID
+ Result byVehicleVin = remoteServiceClientService.findByVehicleVin(vehicleVin);
+ Long templateId = byVehicleVin.getData();
+ List templateList;
+ //从redis缓存中获取报文模板数据
+ try {
+ String redisKey = "messageTemplate" + templateId;
+ if (redisTemplate.hasKey(redisKey)) {
+ List