diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/VehicleType.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/VehicleType.java index 629720b..21bfdf6 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/VehicleType.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-common/src/main/java/com/muyu/domain/VehicleType.java @@ -41,7 +41,7 @@ public class VehicleType extends BaseEntity { * 报文模版外键 */ @Schema(type = "Integer",description = "报文模版外键") - private Integer messageTemplateId; + private Long messageTemplateId; /** * 添加车辆类型 diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java index 8999394..e466edf 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java @@ -48,13 +48,6 @@ public class VehicleController extends BaseController { //添加车辆缓存 @Autowired private VehicleCacheService vehicleCacheService; - //车辆信息 - @Autowired - private AllVehicleCacheService allVehicleCacheService; - - @Autowired - private RedisTemplate redisTemplate; - /** * 查询车辆管理列表 @@ -66,10 +59,11 @@ public class VehicleController extends BaseController { public Result> getVehicleList(@RequestBody VehicleManageReq vehicleManageReq) { startPage(); List list = vehicleService.getVehicleList(vehicleManageReq); -// 将车辆信息存到Redis - for (VehicleManageResp resp : list) { - allVehicleCacheService.put(resp.getVehicleVin(), resp); - } + //将车辆信息存到Redis + List vehicleList = vehicleService.list(); + vehicleList.forEach(vehicle -> { + vehicleCacheService.put(vehicle.getVehicleVin(), vehicle); + }); return getDataTable(list); } diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java index bab87e8..7d12c08 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java @@ -2,11 +2,12 @@ package com.muyu.enterprise.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.muyu.enterprise.mapper.MessageValueMapper; -import com.muyu.enterprise.service.MessageValueService; import com.muyu.domain.MessageValue; import com.muyu.domain.req.MessageValueReq; import com.muyu.domain.resp.MessageValueListResp; +import com.muyu.enterprise.cache.AllMessageValueCacheService; +import com.muyu.enterprise.mapper.MessageValueMapper; +import com.muyu.enterprise.service.MessageValueService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -31,6 +32,9 @@ public class MessageValueServiceImpl @Autowired private MessageValueMapper messageValueMapper; + @Autowired + private AllMessageValueCacheService allMessageValueCacheService; + public MessageValueServiceImpl(MessageValueMapper messageValueMapper) { this.messageValueMapper = messageValueMapper; } @@ -63,11 +67,13 @@ public class MessageValueServiceImpl LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(MessageValue::getTemplateId, templateId); List list = this.list(queryWrapper); - return list.stream() + List collect = list.stream() .map(messageValue -> MessageValueListResp.valueBuild( messageValue ) ).collect(Collectors.toList()); + allMessageValueCacheService.put(String.valueOf(templateId), collect); + return collect; } diff --git a/cloud-modules/cloud-modules-protocol-parsing/pom.xml b/cloud-modules/cloud-modules-protocol-parsing/pom.xml index fa6b4ec..6d31bae 100644 --- a/cloud-modules/cloud-modules-protocol-parsing/pom.xml +++ b/cloud-modules/cloud-modules-protocol-parsing/pom.xml @@ -116,6 +116,12 @@ cloud-common-kafka + + com.muyu + cloud-modules-enterprise-cache + 3.6.3 + + diff --git a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/feign/RemoteServiceClient.java b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/feign/RemoteServiceClient.java deleted file mode 100644 index 1f12ca7..0000000 --- a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/feign/RemoteServiceClient.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.muyu.cloud.protocol.parsing.feign; - -import com.muyu.common.core.domain.Result; -import com.muyu.domain.resp.MessageValueListResp; -import io.swagger.v3.oas.annotations.Operation; -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: LiDongJia - * @Package: com.muyu.cloud.protocol.parsing.feign - * @Project: 2112-car-cloud-server - * @name: RemoteServiceClient - * @Date: 2024/9/28 14:49 - * @Description: 远程调用接口 - */ -@FeignClient(name = "cloud-car") -public interface RemoteServiceClient { - - /** - * 通过车辆vin码查询模板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-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/feign/factory/RemoteServiceClientFactory.java b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/feign/factory/RemoteServiceClientFactory.java deleted file mode 100644 index 3d2af79..0000000 --- a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/feign/factory/RemoteServiceClientFactory.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.muyu.cloud.protocol.parsing.feign.factory; - -import com.muyu.cloud.protocol.parsing.feign.RemoteServiceClient; -import com.muyu.common.core.domain.Result; -import com.muyu.domain.resp.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 RemoteServiceClientFactory implements FallbackFactory -{ - private static final Logger log = LoggerFactory.getLogger(com.muyu.cloud.protocol.parsing.feign.factory.RemoteServiceClientFactory.class); - - @Override - public RemoteServiceClient create(Throwable throwable) { - log.error("报文模版传参调用失败:{}", throwable.getMessage()); - return new RemoteServiceClient() { - - @Override - public Result findByVehicleVin(String vehicleVin) { - return Result.success(Long.valueOf(vehicleVin)); - } - - @Override - public Result> findByTemplateId(Long templateId) { - return null; - } - }; - } -} diff --git a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingMessage.java similarity index 66% rename from cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java rename to cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingMessage.java index 9d9e31b..d0bbdea 100644 --- a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java +++ b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingMessage.java @@ -1,16 +1,17 @@ package com.muyu.cloud.protocol.parsing.test; import cn.hutool.json.JSONObject; -import com.alibaba.fastjson.JSON; -import com.muyu.cloud.protocol.parsing.feign.RemoteServiceClient; -import com.muyu.common.core.domain.Result; +import com.muyu.domain.Vehicle; +import com.muyu.domain.VehicleType; import com.muyu.domain.resp.MessageValueListResp; +import com.muyu.enterprise.cache.AllMessageValueCacheService; +import com.muyu.enterprise.cache.VehicleCacheService; +import com.muyu.enterprise.cache.VehicleTypeCacheService; import lombok.extern.log4j.Log4j2; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerRecord; 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; @@ -27,17 +28,20 @@ import java.util.List; */ @Log4j2 @Component -public class ParsingTest { - - @Resource - private RedisTemplate redisTemplate; - - @Autowired - private RemoteServiceClient remoteServiceClient; +public class ParsingMessage { @Resource private KafkaProducer kafkaProducer; + @Autowired + private VehicleCacheService vehicleCacheService; + + @Autowired + private VehicleTypeCacheService vehicleTypeCacheService; + + @Autowired + private AllMessageValueCacheService allMessageValueCacheService; + /** * 协议解析 */ @@ -92,32 +96,34 @@ public class ParsingTest { String vehicleVin = result.substring(1, 18); log.info("车辆VIN码: " + vehicleVin); //根据车辆VIN码查询报文模板ID - Result byVehicleVin = remoteServiceClient.findByVehicleVin(vehicleVin); - Long templateId = byVehicleVin.getData(); - List templateList; - //从redis缓存中获取报文模板数据 - try { - String redisKey = "messageTemplate" + templateId; - if (redisTemplate.hasKey(redisKey)) { - List list = redisTemplate.opsForList().range(redisKey, 0, -1); - templateList = list.stream() - .map(obj -> JSON.parseObject(obj.toString(), MessageValueListResp.class)) - .toList(); - log.info("Redis缓存查询成功"); - } else { - Result> byTemplateId = remoteServiceClient.findByTemplateId(templateId); - templateList = byTemplateId.getData(); - templateList.forEach( - listResp -> - redisTemplate.opsForList().rightPush( - redisKey, JSON.toJSONString(listResp) - ) - ); - log.info("数据库查询成功"); - } - } catch (Exception e) { - throw new RuntimeException("获取报文模板失败"); - } + Vehicle vehicle = vehicleCacheService.get(vehicleVin); + Long vehicleTypeId = vehicle.getVehicleTypeId(); + VehicleType vehicleType = vehicleTypeCacheService.get(String.valueOf(vehicleTypeId)); + Long templateId = vehicleType.getMessageTemplateId(); + List templateList = allMessageValueCacheService.get(String.valueOf(templateId)); +// //从redis缓存中获取报文模板数据 +// try { +// String redisKey = "messageTemplate" + templateId; +// if (redisTemplate.hasKey(redisKey)) { +// List list = redisTemplate.opsForList().range(redisKey, 0, -1); +// templateList = list.stream() +// .map(obj -> JSON.parseObject(obj.toString(), MessageValueListResp.class)) +// .toList(); +// log.info("Redis缓存查询成功"); +// } else { +// Result> byTemplateId = remoteServiceClient.findByTemplateId(templateId); +// templateList = byTemplateId.getData(); +// templateList.forEach( +// listResp -> +// redisTemplate.opsForList().rightPush( +// redisKey, JSON.toJSONString(listResp) +// ) +// ); +// log.info("数据库查询成功"); +// } +// } catch (Exception e) { +// throw new RuntimeException("获取报文模板失败"); +// } //判断报文模板列表不为空 if (templateList.isEmpty()) { throw new RuntimeException("报文模版为空");