diff --git a/cloud-modules/cloud-modules-enterprise/enterpise-cache/src/main/java/com/muyu/enterpise/cache/MessageValueCacheService.java b/cloud-modules/cloud-modules-enterprise/enterpise-cache/src/main/java/com/muyu/enterpise/cache/MessageValueCacheService.java index 758cf5d..80e08a1 100644 --- a/cloud-modules/cloud-modules-enterprise/enterpise-cache/src/main/java/com/muyu/enterpise/cache/MessageValueCacheService.java +++ b/cloud-modules/cloud-modules-enterprise/enterpise-cache/src/main/java/com/muyu/enterpise/cache/MessageValueCacheService.java @@ -4,6 +4,8 @@ import com.muyu.common.cache.CacheAbsBasic; import com.muyu.domain.MessageValue; import org.springframework.stereotype.Component; +import java.util.List; + /** * @version 1.0 * @Author xie ya ru @@ -11,7 +13,7 @@ import org.springframework.stereotype.Component; * @注释 */ @Component -public class MessageValueCacheService extends CacheAbsBasic { +public class MessageValueCacheService extends CacheAbsBasic>{ /** * 前缀 diff --git a/cloud-modules/cloud-modules-enterprise/enterpise-cache/src/main/java/com/muyu/enterpise/cache/SysCarCacheService.java b/cloud-modules/cloud-modules-enterprise/enterpise-cache/src/main/java/com/muyu/enterpise/cache/SysCarCacheService.java new file mode 100644 index 0000000..315992f --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/enterpise-cache/src/main/java/com/muyu/enterpise/cache/SysCarCacheService.java @@ -0,0 +1,30 @@ +package com.muyu.enterpise.cache; + +import com.muyu.common.cache.CacheAbsBasic; +import com.muyu.domain.SysCar; +import org.springframework.stereotype.Component; + +/** + * @version 1.0 + * @Author xie ya ru + * @Date 2024/9/30 11:06 + * @注释 + */ +@Component +public class SysCarCacheService extends CacheAbsBasic { + + @Override + public String keyPre() { + return "sysCar:info:"; + } + + @Override + public String encode(String key) { + return super.encode(key); + } + + @Override + public String decode(String key) { + return super.decode(key); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/enterpise-cache/src/main/java/com/muyu/enterpise/cache/SysCarTypeCacheService.java b/cloud-modules/cloud-modules-enterprise/enterpise-cache/src/main/java/com/muyu/enterpise/cache/SysCarTypeCacheService.java new file mode 100644 index 0000000..112439d --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/enterpise-cache/src/main/java/com/muyu/enterpise/cache/SysCarTypeCacheService.java @@ -0,0 +1,29 @@ +package com.muyu.enterpise.cache; + +import com.muyu.common.cache.CacheAbsBasic; +import com.muyu.domain.SysCarType; +import org.springframework.stereotype.Component; + +/** + * @version 1.0 + * @Author xie ya ru + * @Date 2024/9/30 11:18 + * @注释 + */ +@Component +public class SysCarTypeCacheService extends CacheAbsBasic { + @Override + public String keyPre() { + return "sysCarType:info:"; + } + + @Override + public String encode(String key) { + return super.encode(key); + } + + @Override + public String decode(String key) { + return super.decode(key); + } +} diff --git a/cloud-modules/cloud-modules-enterprise/enterpise-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-modules/cloud-modules-enterprise/enterpise-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 98352f9..3257b72 100644 --- a/cloud-modules/cloud-modules-enterprise/enterpise-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/cloud-modules/cloud-modules-enterprise/enterpise-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1,2 @@ com.muyu.enterpise.cache.MessageValueCacheService +com.muyu.enterpise.cache.SysCarCacheService diff --git a/cloud-modules/cloud-modules-enterprise/enterpise-common/src/main/java/com/muyu/domain/SysCarType.java b/cloud-modules/cloud-modules-enterprise/enterpise-common/src/main/java/com/muyu/domain/SysCarType.java index 28e9c00..40b8333 100644 --- a/cloud-modules/cloud-modules-enterprise/enterpise-common/src/main/java/com/muyu/domain/SysCarType.java +++ b/cloud-modules/cloud-modules-enterprise/enterpise-common/src/main/java/com/muyu/domain/SysCarType.java @@ -31,7 +31,7 @@ public class SysCarType extends BaseEntity { */ @TableId(value = "id", type = IdType.AUTO) @Schema(name = "车辆类型主键") - private String id; + private Long id; /** * 车辆类型名称 diff --git a/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/controller/MessageValueController.java b/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/controller/MessageValueController.java index 1af044a..24b66bc 100644 --- a/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/controller/MessageValueController.java +++ b/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/controller/MessageValueController.java @@ -33,7 +33,7 @@ public class MessageValueController extends BaseController { private MessageValueService messageValueService; @Autowired - private MessageValueCacheService enterpiseCacheService; + private MessageValueCacheService messageValueCacheService; /** * 报文数据列表查询 @@ -56,7 +56,6 @@ public class MessageValueController extends BaseController { @Operation(summary = "添加报文数据", description = "新增报文数据") public Result save(@RequestBody MessageValueAddReq messageValueAddReq){ messageValueService.save(MessageValue.addBuild(messageValueAddReq)); - enterpiseCacheService.put(String.valueOf(messageValueAddReq.getTemplateId()),MessageValue.addBuild(messageValueAddReq)); return Result.success("添加成功"); } @@ -81,12 +80,4 @@ public class MessageValueController extends BaseController { } - @PostMapping({"/findByTemplateId/{stringVin}"}) - @Operation( - summary = "根据车辆类型查询报文模版ID", - description = "根据车辆类型查询报文模版ID" - ) - public Result findByTemplateId(@PathVariable("stringVin") String stringVin) { - return Result.success(this.messageValueService.findByTemplateId(stringVin), "查询成功"); - } } diff --git a/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/controller/SysCarController.java b/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/controller/SysCarController.java index d398b9d..ff98b9c 100644 --- a/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/controller/SysCarController.java +++ b/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/controller/SysCarController.java @@ -8,6 +8,7 @@ import com.muyu.common.security.utils.SecurityUtils; import com.muyu.domain.SysCar; import com.muyu.domain.req.SysCarReq; import com.muyu.domain.resp.SysCarResp; +import com.muyu.enterpise.cache.SysCarCacheService; import com.muyu.enterpise.service.SysCarService; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.validation.annotation.Validated; @@ -30,6 +31,9 @@ public class SysCarController extends BaseController @Resource private SysCarService sysCarService; + @Resource + private SysCarCacheService sysCarCacheService; + /** * 查询车辆基础信息列表 */ @@ -63,7 +67,9 @@ public class SysCarController extends BaseController if (sysCarService.checkIdUnique(sysCar)) { return error("新增 车辆基础信息 '" + sysCar + "'失败,车辆基础信息已存在"); } + sysCar.setCreateBy(SecurityUtils.getUsername()); + sysCarCacheService.put(sysCar.getCarVin(),sysCar); return toAjax(sysCarService.save(sysCar)); } diff --git a/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/controller/SysTypeController.java b/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/controller/SysTypeController.java index a2ad3b3..a0a883c 100644 --- a/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/controller/SysTypeController.java +++ b/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/controller/SysTypeController.java @@ -4,6 +4,8 @@ import com.muyu.common.core.domain.Result; import com.muyu.common.core.web.controller.BaseController; import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.domain.SysCarType; +import com.muyu.enterpise.cache.SysCarCacheService; +import com.muyu.enterpise.cache.SysCarTypeCacheService; import com.muyu.enterpise.service.SysTypeService; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.GetMapping; @@ -29,6 +31,9 @@ public class SysTypeController extends BaseController { @Resource private SysTypeService sysTypeService; + @Resource + private SysCarTypeCacheService sysCarTypeCacheService; + /** * 查询车辆类型列表 @@ -37,6 +42,10 @@ public class SysTypeController extends BaseController { public Result> list() { startPage(); List list = sysTypeService.selectSysTypeList(); + for (SysCarType sysCarType : list) { + sysCarTypeCacheService.put(String.valueOf(sysCarType.getId()),sysCarType); + } return getDataTable(list); } + } diff --git a/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/mapper/MessageValueMapper.java b/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/mapper/MessageValueMapper.java index 233d11f..4993ab6 100644 --- a/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/mapper/MessageValueMapper.java +++ b/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/mapper/MessageValueMapper.java @@ -14,6 +14,5 @@ import org.apache.ibatis.annotations.Select; */ @Mapper public interface MessageValueMapper extends BaseMapper { - @Select({"SELECT sct.message_template_id FROM sys_car sc LEFT JOIN sys_car_type sct on sct.id = sc.car_type WHERE sc.car_vin = ${stringVin}"}) - Long findByTemplateId(String stringVin); + } diff --git a/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/service/MessageValueService.java b/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/service/MessageValueService.java index 7817ddd..b4eb650 100644 --- a/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/service/MessageValueService.java +++ b/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/service/MessageValueService.java @@ -27,6 +27,6 @@ public interface MessageValueService extends IService { * @param str */ void test(String str); - Long findByTemplateId(String stringVin); + } diff --git a/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/service/impl/MessageValueServiceImpl.java b/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/service/impl/MessageValueServiceImpl.java index 2e3282b..3f1407f 100644 --- a/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/service/impl/MessageValueServiceImpl.java +++ b/cloud-modules/cloud-modules-enterprise/enterpise-service/src/main/java/com/muyu/enterpise/service/impl/MessageValueServiceImpl.java @@ -7,6 +7,7 @@ import com.muyu.common.core.utils.StringUtils; import com.muyu.domain.MessageValue; import com.muyu.domain.req.MessageValueReq; import com.muyu.domain.resp.MessageValueListResp; +import com.muyu.enterpise.cache.MessageValueCacheService; import com.muyu.enterpise.mapper.MessageValueMapper; import com.muyu.enterpise.service.MessageValueService; import org.springframework.data.redis.core.RedisTemplate; @@ -30,7 +31,8 @@ public class MessageValueServiceImpl @Resource private MessageValueMapper messageValueMapper; - + @Resource + private MessageValueCacheService messageValueCacheService; /** * 查询所有消息值 @@ -53,8 +55,7 @@ public class MessageValueServiceImpl } List list = this.list(queryWrapper); - - + messageValueCacheService.put(String.valueOf(messageValueReq.getMessageTemplateId()),list); return list.stream() .map(messageValue -> MessageValueListResp.valueBuild( messageValue @@ -77,10 +78,7 @@ public class MessageValueServiceImpl } } - @Override - public Long findByTemplateId(String stringVin) { - return messageValueMapper.findByTemplateId(stringVin); - } + } diff --git a/cloud-modules/cloud-modules-parse/pom.xml b/cloud-modules/cloud-modules-parse/pom.xml index 11e6373..45f2124 100644 --- a/cloud-modules/cloud-modules-parse/pom.xml +++ b/cloud-modules/cloud-modules-parse/pom.xml @@ -106,12 +106,13 @@ enterpise-cache ${muyu.version} + - - - - - + + com.muyu + cloud-common-kafka + ${muyu.version} + diff --git a/cloud-modules/cloud-modules-parse/src/main/java/com/muyu/parse/process/ProcessData.java b/cloud-modules/cloud-modules-parse/src/main/java/com/muyu/parse/process/ProcessData.java index bfd4a90..609bd17 100644 --- a/cloud-modules/cloud-modules-parse/src/main/java/com/muyu/parse/process/ProcessData.java +++ b/cloud-modules/cloud-modules-parse/src/main/java/com/muyu/parse/process/ProcessData.java @@ -1,21 +1,24 @@ package com.muyu.parse.process; import cn.hutool.json.JSONObject; -import com.alibaba.fastjson.JSON; -import com.muyu.common.core.domain.Result; - +import com.muyu.common.kafka.config.KafkaProducerConfig; import com.muyu.domain.MessageValue; -import com.muyu.domain.req.MessageValueReq; -import com.muyu.domain.resp.MessageValueListResp; +import com.muyu.domain.SysCar; +import com.muyu.domain.SysCarType; import com.muyu.enterpise.cache.MessageValueCacheService; +import com.muyu.enterpise.cache.SysCarCacheService; +import com.muyu.enterpise.cache.SysCarTypeCacheService; import com.muyu.parse.uitl.DataParseUtil; import com.muyu.remote.RemoteMessageValueService; import lombok.extern.log4j.Log4j2; +import org.apache.kafka.clients.producer.Callback; +import org.apache.kafka.clients.producer.ProducerRecord; +import org.apache.kafka.clients.producer.RecordMetadata; import javax.annotation.Resource; -import java.util.Collections; import java.util.List; + /** * @version 1.0 * @Author xie ya ru @@ -28,58 +31,39 @@ public class ProcessData { @Resource private static RemoteMessageValueService remoteMessageValueService; + //报文模版信息 @Resource - private static MessageValueCacheService enterpiseCacheService; + private static MessageValueCacheService messageValueCacheService; -// @Resource -// private static KafkaProducerConfig kafkaProducerConfig; + //车辆信息 + @Resource + private static SysCarCacheService sysCarCacheService; + + //车辆类型信息 + @Resource + private static SysCarTypeCacheService sysCarTypeCacheService; + + @Resource + private static KafkaProducerConfig kafkaProducerConfig; + + private final static String topic = "sysCar_vin_topic"; public static void DataConversion(String jsonVin ) { + //设置数组存储车辆数据 + JSONObject jsonObject = new JSONObject(); String vin = DataParseUtil.dataParsing(jsonVin); System.out.println("车辆转换的vin是:"+vin); - //从Redis中获取车辆信息 + //判断vin是否存在缓存中 + if(sysCarCacheService.hashKey(vin)){ + //从Redis中获取车辆信息 + SysCar sysCar = sysCarCacheService.get(vin); + //根据缓存车辆类型获取缓存报文 + SysCarType sysCarType = sysCarTypeCacheService.get(String.valueOf(sysCar.getCarType())); - //根据车辆信息获取车辆类型 - - - - - Result byTemplateId = remoteMessageValueService.findByTemplateId(vin); - - Long templateId = byTemplateId.getData(); - List templateList; - try{ - //从Redis中获取报文模版信息 - if ( enterpiseCacheService.hashKey(String.valueOf(templateId))) { - - List list = Collections.singletonList(enterpiseCacheService.get(String.valueOf(templateId))); - templateList = list.stream() - .map(obj -> JSON.parseObject(obj.toString(), MessageValueListResp.class)) - .toList(); - log.info("Redis缓存查询成功"); - } else { - - Result> byTemplate = remoteMessageValueService.findAll(MessageValueReq.builder().messageTemplateId(templateId).build()); - templateList = byTemplate.getData(); - templateList.forEach( - listResp ->{ - enterpiseCacheService.put(String.valueOf(listResp.getMessageId()), MessageValue.addRollback(listResp)); - } - - ); - } - log.info("数据库查询成功"); - } catch (Exception e) { - throw new RuntimeException("获取报文模板失败"); - } - //判断报文模板列表不为空 - if (templateList.isEmpty()) { - throw new RuntimeException("报文模版为空"); - } - //存储报文模版解析后的数据 - JSONObject jsonObject = new JSONObject(); - for (MessageValueListResp messageValue : templateList) { + //获取报文模版信息 + List messageValues = messageValueCacheService.get(String.valueOf(sysCarType.getMessageTemplateId())); + for (MessageValue messageValue : messageValues) { //起始位下标 Integer startIndex = messageValue.getMessageStartIndex() - 1; //结束位下标 @@ -90,9 +74,20 @@ public class ProcessData { System.out.println("标签"+messageValue.getMessageLabel()+"值"+value); jsonObject.put(messageValue.getMessageLabel(), value); } - System.out.println(jsonObject); - + sendKafkaMessage(jsonObject); + } } + + + private static void sendKafkaMessage(JSONObject jsonObject){ + ProducerRecord producerRecord = new ProducerRecord<>(topic, jsonObject); + try { + kafkaProducerConfig.kafkaProducer().send(new ProducerRecord<>(topic,jsonObject.toString())); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } diff --git a/cloud-modules/cloud-modules-parse/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-parse/src/main/resources/bootstrap.yml index 6de1934..3f1f253 100644 --- a/cloud-modules/cloud-modules-parse/src/main/resources/bootstrap.yml +++ b/cloud-modules/cloud-modules-parse/src/main/resources/bootstrap.yml @@ -53,7 +53,9 @@ spring: - application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} # # xxl-job 配置文件 # - application-xxl-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} - + #kafka共享配置 + #application-kafka-config-dev.yml + - application-kafka-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} logging: level: com.muyu.system.mapper: DEBUG diff --git a/cloud-modules/cloud-modules-vehicle-gateway/pom.xml b/cloud-modules/cloud-modules-vehicle-gateway/pom.xml index 595e845..31414a6 100644 --- a/cloud-modules/cloud-modules-vehicle-gateway/pom.xml +++ b/cloud-modules/cloud-modules-vehicle-gateway/pom.xml @@ -53,39 +53,6 @@ 0.2.21 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.alibaba.cloud