diff --git a/cloud-common/pom.xml b/cloud-common/pom.xml index 39e986c..7155ab4 100644 --- a/cloud-common/pom.xml +++ b/cloud-common/pom.xml @@ -23,6 +23,7 @@ cloud-common-saas cloud-common-swagger cloud-common-cache + cloud-common-kafka cloud-common diff --git a/cloud-modules/cloud-modules-template/pom.xml b/cloud-modules/cloud-modules-template/pom.xml index 8c03c73..65e4bd1 100644 --- a/cloud-modules/cloud-modules-template/pom.xml +++ b/cloud-modules/cloud-modules-template/pom.xml @@ -17,6 +17,17 @@ + + com.muyu + cloud-common-kafka + 3.6.3 + + + + com.muyu.server + saas-server + 3.6.3 + @@ -77,7 +88,6 @@ com.muyu cloud-common-xxl - diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java index 823f919..80804e6 100644 --- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java +++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java @@ -1,19 +1,15 @@ package com.muyu.template; - 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 liuxinyue * @Package:com.muyu.template * @name:CloudTemplateApplication * @Date:2024/9/30 10:36 */ - @EnableCustomConfig -//@EnableCustomSwagger2 @EnableMyFeignClients @SpringBootApplication public class CloudTemplateApplication { diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/config/KafkaConsumerConfig.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/KafkaConsumerConfig.java similarity index 98% rename from cloud-modules/saas/saas-server/src/main/java/com/muyu/server/config/KafkaConsumerConfig.java rename to cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/KafkaConsumerConfig.java index 4ee0d1a..921077f 100644 --- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/config/KafkaConsumerConfig.java +++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/KafkaConsumerConfig.java @@ -1,4 +1,4 @@ -package com.muyu.server.config; +package com.muyu.template.config; import org.apache.kafka.clients.consumer.KafkaConsumer; import org.apache.kafka.common.serialization.Deserializer; diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/config/KafkaProviderConfig.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/KafkaProviderConfig.java similarity index 98% rename from cloud-modules/saas/saas-server/src/main/java/com/muyu/server/config/KafkaProviderConfig.java rename to cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/KafkaProviderConfig.java index e377733..00f5617 100644 --- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/config/KafkaProviderConfig.java +++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/KafkaProviderConfig.java @@ -1,4 +1,4 @@ -package com.muyu.server.config; +package com.muyu.template.config; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.common.serialization.Serializer; diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java new file mode 100644 index 0000000..e4ae3a1 --- /dev/null +++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java @@ -0,0 +1,150 @@ +package com.muyu.template.config; +import cn.hutool.json.JSONObject; +import com.alibaba.fastjson2.JSON; +import com.muyu.common.domain.MessageTemplateType; +import com.muyu.common.domain.SysCar; +import com.muyu.common.redis.service.RedisService; +import com.muyu.server.service.MessageTemplateTypeService; +import com.muyu.server.service.SysCarService; +import com.muyu.server.service.impl.SysCarServiceImpl; +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.Component; +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.util.List; +/** + * @author liuxinyue + * @Package:com.muyu.mqtt.configure + * @Project:cloud-server + * @name:MqttConfigure + * @Date:2024/9/28 16:10 + */ +@Log4j2 +@Component +public class MqttConfigure { + @Autowired + private RedisService redisService; + + @Resource + private SysCarService sysCarService; + + @Resource + private SysCarServiceImpl service; + + @Resource + private MessageTemplateTypeService messageTemplateTypeService; + + @Autowired + private RedisTemplate redisTemplate; + + @PostConstruct + public void MQTTMonitoring(){ + + String topic = "vehicle"; + int qos = 2; + String broker = "tcp://47.101.53.251:1883"; + String clientId = "测试mqtt"; + try { + MqttClient sampleClient = new MqttClient(broker, clientId); + MqttConnectOptions connOpts = new MqttConnectOptions(); + //是否清空session + connOpts.setCleanSession(true); + log.info("Connecting to broker: " + broker); + //连接 + sampleClient.connect(connOpts); + sampleClient.subscribe(topic,qos); + sampleClient.setCallback(new MqttCallback() { + //连接丢失(报错) + @Override + public void connectionLost(Throwable throwable) { + log.error("error:"+throwable.getMessage()); + } + //消息已经接收到 + @Override + public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { + // 将MQTT消息转换为字符串 + String messageContent = new String(mqttMessage.getPayload()); + // 解析JSON字符串 + JSONObject jsonObject = new JSONObject(messageContent); + // 从JSON对象中获取"msg"字段的值 + String msgValue = jsonObject.getStr("msg"); + messageParsing(msgValue); + log.info("接收到的值为:"+msgValue); + } + //交付完成 + @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(); + } + } + + public JSONObject messageParsing(String templateMessage) { + //给一个JSON对象 + JSONObject jsonObject = new JSONObject(); + //先截取出VIN码 然后根据VIN码查询这个车属于什么类型 + if (templateMessage.length() < 18) { + throw new RuntimeException("The vehicle message is incorrect"); + } + //将报文进行切割 + String[] hexArray = templateMessage.split(" "); + StringBuilder result = new StringBuilder(); + for (String hex : hexArray) { + int decimal = Integer.parseInt(hex, 16); + result.append((char) decimal); + } + //取出VIN码 + String carVin = result.substring(0, 18 - 1); + log.info("carVin码为:" + carVin); + //根据VIN码获取车辆信息 + SysCar carByVin = service.findCarByVin(carVin); + log.info("车辆信息为:" + carByVin); + //对应车辆所对应的报文模版 + Integer templateId = carByVin.getTemplateId(); + List templateTypeList; + //key + String redisKey = "messageTemplateType" + templateId; + //key存在 + if (redisTemplate.hasKey(redisKey)) { + + List list = redisTemplate.opsForList().range(redisKey, 0, -1); + + templateTypeList = list.stream().map(o -> JSON.parseObject(o.toString(), MessageTemplateType.class)) + .toList(); + } else { + List templateTypeList1 = messageTemplateTypeService.findTemplateById(templateId); + templateTypeList = templateTypeList1; + templateTypeList.forEach( + templateType -> + redisTemplate.opsForList().rightPush( + redisKey, com.alibaba.fastjson.JSON.toJSONString(templateType) + ) + ); + } + //将模版里面有的配置进行循环 + for (MessageTemplateType messageTemplateType : templateTypeList) { + //开始位置 + Integer startIndex = messageTemplateType.getStartIndex() - 1; + //结束位置 + Integer endIndex = messageTemplateType.getEndIndex(); + //将每个解析后的字段都存入到JSON对象中 + jsonObject.put(messageTemplateType.getMessageField(), result.substring(startIndex, endIndex)); + } + + System.out.println("哈哈哈红红火火恍恍惚惚"); + log.info("解析后的报文是:" + jsonObject); + + return jsonObject; + } +} diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/service/TemplateService.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/service/TemplateService.java deleted file mode 100644 index f6bc10a..0000000 --- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/service/TemplateService.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.muyu.template.service; - -/** - * @author liuxinyue - * @Package:com.muyu.template.service - * @name:TemplateService - * @Date:2024/9/30 10:57 - */ -public interface TemplateService { -} diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/service/impl/TemplateServiceImpl.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/service/impl/TemplateServiceImpl.java deleted file mode 100644 index 4e92057..0000000 --- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/service/impl/TemplateServiceImpl.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.muyu.template.service.impl; - -import com.muyu.template.service.TemplateService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -/** - * @author liuxinyue - * @Package:com.muyu.template.service.impl - * @name:TemplateServiceImpl - * @Date:2024/9/30 10:57 - */ -@Service -public class TemplateServiceImpl implements TemplateService { - - - - -} diff --git a/cloud-modules/cloud-modules-template/src/main/resources/mapper/CarTypeMapper.xml b/cloud-modules/cloud-modules-template/src/main/resources/mapper/CarTypeMapper.xml deleted file mode 100644 index 63274cf..0000000 --- a/cloud-modules/cloud-modules-template/src/main/resources/mapper/CarTypeMapper.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/cloud-modules/cloud-modules-template/src/main/resources/mapper/EnterpriseMapper.xml b/cloud-modules/cloud-modules-template/src/main/resources/mapper/EnterpriseMapper.xml deleted file mode 100644 index 76e2c13..0000000 --- a/cloud-modules/cloud-modules-template/src/main/resources/mapper/EnterpriseMapper.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - insert into tb_enterprise - set enterprise_name = #{enterpriseName}, - enterprise_car_count = #{enterpriseCarCount}, - enterprise_fence_count = #{enterpriseFenceCount} - - - - - - - - - update tb_enterprise - set enterprise_name = #{enterpriseName}, - enterprise_car_count = #{enterpriseCarCount}, - enterprise_fence_count = #{enterpriseFenceCount} - where enterprise_id = #{enterpriseId} and enterprise_id != 0 - - - - - - - delete from tb_enterprise - where enterprise_id in - - #{one} - - - - - - diff --git a/cloud-modules/cloud-modules-template/src/main/resources/mapper/SysCarMapper.xml b/cloud-modules/cloud-modules-template/src/main/resources/mapper/SysCarMapper.xml deleted file mode 100644 index 792d531..0000000 --- a/cloud-modules/cloud-modules-template/src/main/resources/mapper/SysCarMapper.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - INSERT INTO `four`.`sys_car` - ( `car_vin`, `car_type_id`, `state`, `car_motor_manufacturer`, `car_motor_model`, - `car_battery_manufacturer`, `car_battery_model`, `strategy_id`,`group_id`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`,) - VALUES (#{carVin}, #{carTypeId}, '1', #{carMotorManufacturer}, #{carMotorModel}, - #{carBatteryManufacturer}, #{carBatteryModel}, #{strategyId},#{groupId},#{createBy}, #{createTime}, #{updateBy}, #{updateTime}, #{remark}) - - - UPDATE `four`.`sys_car` - SET `car_vin` = #{carVin}, - `car_type_id` = #{carTypeId}, - `state` = #{state}, - `car_motor_manufacturer` = #{carMotorManufacturer}, - `car_motor_model` = #{carMotorModel}, - `car_battery_manufacturer` = #{carBatteryManufacturer}, - `car_battery_model` = #{carBatteryModel}, - `strategy_id` = #{strategyId}, - `group_id`=#{groupId} - `create_by` = #{createBy}, - `create_time` = #{createTime}, - `update_by` = #{updateBy}, - `update_time` = #{updateTime}, - `remark` = #{remark} WHERE `id` = #{id} - - - - - - - - - diff --git a/cloud-modules/cloud-modules-template/src/main/resources/mapper/TemplateNeedMapper.xml b/cloud-modules/cloud-modules-template/src/main/resources/mapper/TemplateNeedMapper.xml deleted file mode 100644 index 5ea4090..0000000 --- a/cloud-modules/cloud-modules-template/src/main/resources/mapper/TemplateNeedMapper.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/cloud-modules/cloud-modules-template/src/main/resources/mapper/WarnLogsMapper.xml b/cloud-modules/cloud-modules-template/src/main/resources/mapper/WarnLogsMapper.xml deleted file mode 100644 index d837d31..0000000 --- a/cloud-modules/cloud-modules-template/src/main/resources/mapper/WarnLogsMapper.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - INSERT INTO warn_logs VALUES - - (#{warnLogs.id}) - - - - - diff --git a/cloud-modules/cloud-modules-template/src/main/resources/mapper/WarnRuleMapper.xml b/cloud-modules/cloud-modules-template/src/main/resources/mapper/WarnRuleMapper.xml deleted file mode 100644 index a18d318..0000000 --- a/cloud-modules/cloud-modules-template/src/main/resources/mapper/WarnRuleMapper.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - diff --git a/cloud-modules/cloud-modules-template/src/main/resources/mapper/WarnStrategyMapper.xml b/cloud-modules/cloud-modules-template/src/main/resources/mapper/WarnStrategyMapper.xml deleted file mode 100644 index ce15729..0000000 --- a/cloud-modules/cloud-modules-template/src/main/resources/mapper/WarnStrategyMapper.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/config/MqttConfigure.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/config/MqttConfigure.java deleted file mode 100644 index 10411a0..0000000 --- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/config/MqttConfigure.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.muyu.server.config; - -import cn.hutool.json.JSONObject; -import com.muyu.server.service.TemplateService; -import lombok.extern.log4j.Log4j2; -import org.eclipse.paho.client.mqttv3.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; - -/** - * - * @author liuxinyue - * @Package:com.muyu.mqtt.configure - * @Project:cloud-server - * @name:MqttConfigure - * @Date:2024/9/28 16:10 - */ -@Log4j2 -@Component -public class MqttConfigure { - - @Autowired - private TemplateService templateService; - - @PostConstruct - public void MQTTMonitoring(){ - String topic = "vehicle"; - int qos = 2; - String broker = "tcp://47.101.53.251:1883"; - String clientId = "测试mqtt"; - try { - MqttClient sampleClient = new MqttClient(broker, clientId); - MqttConnectOptions connOpts = new MqttConnectOptions(); - //是否清空session - connOpts.setCleanSession(true); - log.info("Connecting to broker: " + broker); - //连接 - sampleClient.connect(connOpts); - sampleClient.subscribe(topic,qos); - sampleClient.setCallback(new MqttCallback() { - //连接丢失(报错) - @Override - public void connectionLost(Throwable throwable) { - log.error("error:"+throwable.getMessage()); - } - //消息已经接收到 - @Override - public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { - // 将MQTT消息转换为字符串 - String messageContent = new String(mqttMessage.getPayload()); - // 解析JSON字符串 - JSONObject jsonObject = new JSONObject(messageContent); - // 从JSON对象中获取"msg"字段的值 - String msgValue = jsonObject.getStr("msg"); - templateService.messageParsing(msgValue); - log.info("接收到的值为:"+msgValue); - } - //交付完成 - @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(); - } - } -} diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/TemplateController.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/TemplateController.java index 89dc512..ad8712c 100644 --- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/TemplateController.java +++ b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/TemplateController.java @@ -45,17 +45,7 @@ public class TemplateController { } - /** - * 解析报文 - * @param templateMessage - * @return - */ - @PostMapping("/messageParsing") - @Operation(summary = "报文解析",description = "报文解析") - public Result messageParsing(@RequestParam("templateMessage") String templateMessage) throws SQLException, IoTDBConnectionException, ClassNotFoundException, StatementExecutionException, ExecutionException, InterruptedException { - templateService.messageParsing(templateMessage); - return Result.success(); - } + /** * 报文模版添加 diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/TemplateService.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/TemplateService.java index ea7189d..3751181 100644 --- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/TemplateService.java +++ b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/TemplateService.java @@ -19,7 +19,7 @@ import java.util.concurrent.ExecutionException; public interface TemplateService extends IService