diff --git a/cloud-common/cloud-common-cache/pom.xml b/cloud-common/cloud-common-cache/pom.xml index 7166c7a..3682a5f 100644 --- a/cloud-common/cloud-common-cache/pom.xml +++ b/cloud-common/cloud-common-cache/pom.xml @@ -12,7 +12,7 @@ cloud-common-cache - cloud-common-cache redis缓存架构 + cloud-common-cache 缓存基准模块 diff --git a/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/config/CacheAbsBasic.java b/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/config/CacheAbsBasic.java index 4fdbab2..4be2e40 100644 --- a/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/config/CacheAbsBasic.java +++ b/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/config/CacheAbsBasic.java @@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.util.concurrent.TimeUnit; public abstract class CacheAbsBasic implements CacheBasic { @@ -21,16 +22,44 @@ public abstract class CacheAbsBasic implements CacheBasic { @Override public void put(K key, V value) { - redisService.setCacheObject(encode(key),value); + + try { + redisService.setCacheObject(encode(key), value,30L, TimeUnit.MINUTES); + } catch (Exception e) { + throw new RuntimeException("运行时异常,异常信息为:{}"+e.getMessage()); + } } @Override public V get(K key) { - return redisService.getCacheObject(encode(key)); + + try { + return redisService.getCacheObject(encode(key)); + } catch (Exception e) { + throw new RuntimeException("运行时异常,异常信息为:{}"+e.getMessage()); + } } @Override public void remove(K key) { - redisService.deleteObject(encode(key)); + + try { + redisService.deleteObject(encode(key)); + } catch (Exception e) { + throw new RuntimeException("运行时异常,异常信息为:{}"+e.getMessage()); + } } + + @Override + public boolean hashKey(K key){ + Boolean b = false; + + try { + b = redisService.hasKey(encode(key)); + } catch (Exception e) { + throw new RuntimeException("运行时异常,异常信息为:{}"+e.getMessage()); + } + return b; + } + } diff --git a/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/config/CacheBasic.java b/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/config/CacheBasic.java index 1a3fd7c..dd264ec 100644 --- a/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/config/CacheBasic.java +++ b/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/config/CacheBasic.java @@ -12,11 +12,12 @@ import java.awt.image.Kernel; public interface CacheBasic extends PrimaryKeyBasic{ - void put(K key,V value); + void put(K key, V value); V get(K key); void remove(K key); + boolean hashKey(K key); } diff --git a/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/config/PrimaryKeyBasic.java b/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/config/PrimaryKeyBasic.java index 895cd76..8b7295a 100644 --- a/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/config/PrimaryKeyBasic.java +++ b/cloud-common/cloud-common-cache/src/main/java/com/muyu/common/cache/config/PrimaryKeyBasic.java @@ -9,26 +9,28 @@ package com.muyu.common.cache.config; */ public interface PrimaryKeyBasic { /** - * key 前缀 + * 主键前缀 + * @return */ public String keyPre(); /** - * 编码 - * @param key 缓存键 - * @return 装修键 + * 主键编码 + * @param key 缓存建 + * @return 装修建 */ - public default String encode(K key){ + public default String encode(K key){ return keyPre() + key.toString(); } /** - * 解码 Key - * @param key 解码后的key - * @return + * 主键解码 + * @param key 缓存建 + * @return 装修建 */ - public K decode(String key); - + public default K decode(String key) { + return (K) key.substring(keyPre().length()); + } diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/pom.xml b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/pom.xml index 4139ff8..07275bf 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/pom.xml +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/pom.xml @@ -18,17 +18,16 @@ - cloud-modules-enterprise-cache redis 缓存平台 + cloud-modules-enterprise-cache redis 缓存基准服务 - + com.muyu cloud-common-cache - - + com.muyu cloud-modules-enterprise-common diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/CarMessageValueCacheService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/CarMessageValueCacheService.java new file mode 100644 index 0000000..89f1f24 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/CarMessageValueCacheService.java @@ -0,0 +1,43 @@ +package com.muyu.enterprise.cache; + +import com.muyu.common.cache.config.CacheAbsBasic; +import com.muyu.enterprise.domain.CarCompany; +import com.muyu.enterprise.domain.CarTemplate; +import com.muyu.enterprise.domain.car.MessageValue; +import com.muyu.enterprise.domain.resp.car.MessageValueListResp; + +import java.util.List; + +/** + * 报文类型缓存---实现类 + * + * + * @ClassName CarTemplateCacheService + * @Description CarTemplateCacheService:类的描述 + * @Date 2024/10/3 15:22 + * @author MingWei.Zong + */ + +public class CarMessageValueCacheService extends CacheAbsBasic> { + /** + * 前缀 + * @return + */ + @Override + public String keyPre() + { + return "messageValue:info"; + } + + @Override + public String encode(String key) + { + return super.encode(key); + } + @Override + public String decode(String key) + { + return key.replace("messageValue:info:",""); + } + +} diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/CarVehicleCacheService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/CarVehicleCacheService.java new file mode 100644 index 0000000..1fc2aaf --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/CarVehicleCacheService.java @@ -0,0 +1,32 @@ +package com.muyu.enterprise.cache; + +import com.muyu.common.cache.config.CacheAbsBasic; +import com.muyu.enterprise.domain.car.Vehicle; + +/** + * 车辆管理---实现类 + * + * + * @ClassName CarMessageCacheService + * @Description CarMessageCacheService:类的描述 + * @Date 2024/9/30 11:42 + * @author MingWei.Zong + */ +public class CarVehicleCacheService 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/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/CarVehicleTypeCacheService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/CarVehicleTypeCacheService.java new file mode 100644 index 0000000..c94b505 --- /dev/null +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/CarVehicleTypeCacheService.java @@ -0,0 +1,37 @@ +package com.muyu.enterprise.cache; + +import com.muyu.common.cache.config.CacheAbsBasic; +import com.muyu.enterprise.domain.CarManage; +import com.muyu.enterprise.domain.car.VehicleType; + +/** + * 车辆类型的缓存---实现类 + * + * + * @ClassName CarManageCacheService + * @Description CarManageCacheService:类的描述 + * @Date 2024/10/3 15:22 + * @author MingWei.Zong + */ + +public class CarVehicleTypeCacheService 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/cloud-modules-enterprise-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 7c16588..2f099e6 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,7 +1,7 @@ com.muyu.enterprise.cache.CarCompanyCacheService com.muyu.enterprise.cache.CarFaultCacheService -com.muyu.enterprise.cache.CarManageCacheService -com.muyu.enterprise.cache.CarMessageCacheService -com.muyu.enterprise.cache.CarTemplateCacheService +com.muyu.enterprise.cache.CarVehicleTypeCacheService +com.muyu.enterprise.cache.CarVehicleCacheService +com.muyu.enterprise.cache.CarMessageValueCacheService com.muyu.enterprise.cache.CarWarnCacheService com.muyu.enterprise.cache.ElectronicFenceCacheService diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/java/com/muyu/enterprise/remote/RemoteMessageValueService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/java/com/muyu/enterprise/remote/RemoteMessageValueService.java index fcef0f4..cf50df0 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/java/com/muyu/enterprise/remote/RemoteMessageValueService.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/java/com/muyu/enterprise/remote/RemoteMessageValueService.java @@ -12,6 +12,7 @@ import java.util.List; /** * 报文数据服务 + * * @Author:李庆帅 * @Package:com.muyu.analysis.parsing.feign * @Project:cloud-server diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 497f58a..4a9fba4 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,2 +1,2 @@ -com.muyu.enterprise.remote.factory.RemoteVehicleServiceFactory com.muyu.enterprise.remote.factory.RemoteMessageValueServiceFactory +com.muyu.enterprise.remote.factory.RemoteVehicleServiceFactory diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/CarManageController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/CarManageController.java index 38120ba..7dfbc1b 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/CarManageController.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/CarManageController.java @@ -3,9 +3,10 @@ package com.muyu.enterprise.controller; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.RandomUtil; import com.muyu.common.core.utils.StringUtils; -import com.muyu.enterprise.cache.CarManageCacheService; +import com.muyu.common.core.utils.poi.ExcelUtil; import com.muyu.enterprise.domain.CarManage; import com.muyu.enterprise.domain.CarMessage; +import com.muyu.enterprise.domain.car.Vehicle; import com.muyu.enterprise.domain.dto.CarDTO; import com.muyu.enterprise.domain.vo.CarVO; import com.muyu.enterprise.service.CarCompanyService; @@ -16,6 +17,7 @@ import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.common.security.utils.SecurityUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -36,7 +38,6 @@ import java.util.List; @Tag(name = "CarManageController", description = "车辆管理") public class CarManageController extends BaseController { - private final CarManageCacheService carManageCacheService; private final CarCompanyService sysCarCompanyService; @@ -128,6 +129,27 @@ public class CarManageController extends BaseController { carManageService.removeBatchByIds(ids); return Result.success("车辆删除成功"); } + /** + * 导出所有车辆数据 + * @param response 请求对象 + */ + @PostMapping("/export") + public void export(HttpServletResponse response) { + List list = carManageService.list(); + ExcelUtil util = new ExcelUtil<>(CarManage.class); + util.exportExcel(response, list, "车辆数据"); + } + /** + * 通过车辆vin码查询模板id + * @param carManageVin 请求对象 + * @return 返回结果 + */ + @GetMapping("/findByCarManageVin/{carManageVin}") + @Operation(description = "通过车辆vin码查询模板id") + public Result findByCarManageVin(@PathVariable("vehicleVin") String carManageVin) { + Long byCarManageVin = carManageService.findByCarManageVin(carManageVin); + return Result.success(byCarManageVin); + } } diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/CarMessageController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/CarMessageController.java index 3c9905a..a4bb6af 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/CarMessageController.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/CarMessageController.java @@ -3,9 +3,10 @@ package com.muyu.enterprise.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.muyu.common.core.domain.Result; import com.muyu.common.core.web.controller.BaseController; -import com.muyu.enterprise.cache.CarManageCacheService; -import com.muyu.enterprise.cache.CarMessageCacheService; +import com.muyu.enterprise.cache.CarVehicleTypeCacheService; +import com.muyu.enterprise.cache.CarVehicleCacheService; import com.muyu.enterprise.domain.CarMessage; +import com.muyu.enterprise.domain.car.Vehicle; import com.muyu.enterprise.service.CarMessageService; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; @@ -28,7 +29,7 @@ import java.util.List; @Tag(name = "报文",description = "报文模块") public class CarMessageController extends BaseController { - private final CarMessageCacheService carMessageCacheService; + private final CarVehicleCacheService carMessageCacheService; private final CarMessageService sysCarMessageService; @Autowired private CarMessageService carMessageService; @@ -70,7 +71,7 @@ public class CarMessageController extends BaseController { public Result insertMessage(@RequestBody CarMessage carMessage){ sysCarMessageService.save(carMessage); //报文 redis - carMessageCacheService.put(carMessage.getMessageType(),new CarMessage()); + carMessageCacheService.put(carMessage.getMessageType(),new Vehicle()); return Result.success("添加成功"); } /** diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/car/MessageValueController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/car/MessageValueController.java index e739722..8c83d17 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/car/MessageValueController.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/car/MessageValueController.java @@ -4,6 +4,7 @@ package com.muyu.enterprise.controller.car; import cn.hutool.json.JSONObject; import com.muyu.common.core.domain.Result; import com.muyu.common.core.web.controller.BaseController; +import com.muyu.enterprise.cache.CarMessageValueCacheService; import com.muyu.enterprise.domain.car.MessageValue; import com.muyu.enterprise.domain.req.car.MessageValueAddReq; import com.muyu.enterprise.domain.req.car.MessageValueReq; @@ -37,18 +38,22 @@ public class MessageValueController extends BaseController @Autowired private MessageValueService messageValueService; + @Autowired + private CarMessageValueCacheService carMessageValueCacheService; + /** - * 报文数据列表查询 + * 报文数据条件查询 * @param messageValueReq 请求对象 * @return 返回结果 */ @RequestMapping(value = "/list", method = RequestMethod.POST) - @Operation(summary = "报文数据列表", description = "根据报文类别, 报文模版筛选报文数据") + @Operation(summary = "报文数据条件查询", description = "根据报文类别, 报文模版筛选报文数据") public Result> findAll(@RequestBody MessageValueReq messageValueReq) { List list = messageValueService.findAll(messageValueReq); return Result.success(list); } + /** * 提供预警和故障使用 * @return 返回结果 @@ -111,6 +116,11 @@ public class MessageValueController extends BaseController @Operation(summary = "根据报文模版id查询报文数据", description = "根据报文模版id查询报文数据") public Result> findByTemplateId(@PathVariable("templateId") Long templateId){ List list = messageValueService.findByTemplateId(templateId); + //存入缓存中com.muyu.enterprise.cache.CarMessageValueCacheService + carMessageValueCacheService.put( + String.valueOf( + templateId + ), list); return Result.success(list); } diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/car/VehicleController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/car/VehicleController.java index cd14fc5..7469f5b 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/car/VehicleController.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/car/VehicleController.java @@ -7,6 +7,7 @@ import com.muyu.common.core.utils.poi.ExcelUtil; import com.muyu.common.core.web.controller.BaseController; import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.common.log.annotation.Log; +import com.muyu.enterprise.cache.CarVehicleCacheService; import com.muyu.enterprise.domain.car.Vehicle; import com.muyu.enterprise.domain.req.car.VehicleAddReq; import com.muyu.enterprise.domain.req.car.VehicleManageReq; @@ -41,6 +42,9 @@ public class VehicleController extends BaseController @Autowired private VehicleService vehicleService; + @Autowired + private CarVehicleCacheService carVehicleCacheService; + /** * 查询车辆管理列表 * @param vehicleManageReq 请求对象 @@ -74,7 +78,10 @@ public class VehicleController extends BaseController @GetMapping("/{vehicleId}") @Operation(summary = "通过id查询车辆信息", description = "通过id查询车辆信息") public Result findById(@PathVariable("vehicleId") Long vehicleId) { - return Result.success(vehicleService.getById(vehicleId)); + Vehicle byId = vehicleService.getById(vehicleId); + //存入缓存中com.muyu.enterprise.cache.carVehicleCacheService + carVehicleCacheService.put(String.valueOf(byId.getVehicleVin()), byId); + return Result.success(byId); } /** diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/car/VehicleTypeController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/car/VehicleTypeController.java index 54cc6eb..7da445f 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/car/VehicleTypeController.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/car/VehicleTypeController.java @@ -3,6 +3,7 @@ package com.muyu.enterprise.controller.car; import com.muyu.common.core.domain.Result; import com.muyu.common.core.web.controller.BaseController; +import com.muyu.enterprise.cache.CarVehicleTypeCacheService; import com.muyu.enterprise.domain.car.VehicleType; import com.muyu.enterprise.service.car.VehicleTypeService; import io.swagger.v3.oas.annotations.Operation; @@ -33,14 +34,22 @@ public class VehicleTypeController extends BaseController @Autowired private VehicleTypeService vehicleTypeService; + @Autowired + private CarVehicleTypeCacheService carVehicleTypeCacheService; + /** * 车辆类型查询 * @return 返回结果 */ - @RequestMapping(path = "/", method = RequestMethod.POST) + @RequestMapping(value = "/findAll", method = RequestMethod.POST) @Operation(summary = "车辆类型列表",description = "车辆类型列表") public Result> findAll(){ - return Result.success(vehicleTypeService.list()); + List list = vehicleTypeService.list(); + for (VehicleType vehicleType : list) { + //存入缓存中com.muyu.enterprise.cache.CarVehicleTypeCacheService + carVehicleTypeCacheService.put(String.valueOf(vehicleType.getVehicleTypeId()),vehicleType); + } + return Result.success(); } diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/CarManageMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/CarManageMapper.java index 7bbb674..24300c8 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/CarManageMapper.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/CarManageMapper.java @@ -9,6 +9,7 @@ import com.muyu.enterprise.domain.dto.CarDTO; import com.muyu.enterprise.domain.vo.CarVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -21,5 +22,11 @@ import java.util.List; */ @Mapper public interface CarManageMapper extends MPJBaseMapper { - + /** + * 通过车辆vin码查询模板id + * @param carManageVin 请求对象 + * @return 返回结果 + */ + @Select("SELECT t.template_id FROM car_manage v LEFT JOIN car_type t ON v.car_type_id = t.car_type_id WHERE v.car_vin = #{carManageVin}") + Long findByCarManageVin(String carManageVin); } diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/CarManageService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/CarManageService.java index cad71f2..f0adde7 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/CarManageService.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/CarManageService.java @@ -34,6 +34,14 @@ public interface CarManageService extends IService { * @return */ void insertCar(CarManage carVO); + /** + * 通过车辆vin码查询模板id + * @param carManageVin 请求对象 + * @return 返回结果 + */ + Long findByCarManageVin(String carManageVin); + + /** * 通过 carTypeId 查询车辆信息 diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/CarManageServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/CarManageServiceImpl.java index 2d84cf6..0acc857 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/CarManageServiceImpl.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/CarManageServiceImpl.java @@ -9,15 +9,18 @@ import com.muyu.enterprise.cache.CarManageCacheService; import com.muyu.enterprise.domain.CarCompany; import com.muyu.enterprise.domain.CarConfig; import com.muyu.enterprise.domain.CarManage; +import com.muyu.enterprise.domain.car.Vehicle; import com.muyu.enterprise.domain.dto.CarDTO; import com.muyu.enterprise.domain.vo.CarVO; import com.muyu.enterprise.mapper.CarManageMapper; import com.muyu.enterprise.service.CarCompanyService; import com.muyu.enterprise.service.CarConfigService; import com.muyu.enterprise.service.CarManageService; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @@ -38,7 +41,7 @@ public class CarManageServiceImpl extends ServiceImpl redisTemplate; + @Autowired + private CarMessageValueCacheService carMessageValueCacheService; public MessageValueServiceImpl(MessageValueMapper messageValueMapper) { 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 5ebd293..280258c 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 @@ -16,12 +16,13 @@ import org.springframework.stereotype.Service; import java.util.List; /** + * 车辆管理业务实现层 * @Author:李庆帅 * @Package:com.muyu.car.service.impl * @Project:cloud-server * @name:VehicleServiceImpl * @Date:2024/9/26 22:35 - * @Description: 车辆管理业务层 + * @Description: */ @Log4j2 @Service diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/carImpl/VehicleTypeServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/carImpl/VehicleTypeServiceImpl.java index 6d024cf..79fad94 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/carImpl/VehicleTypeServiceImpl.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/carImpl/VehicleTypeServiceImpl.java @@ -8,12 +8,13 @@ import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Service; /** + * 车辆类型业务实现层 * @Author:李庆帅 * @Package:com.muyu.car.service.impl * @Project:cloud-server * @name:VehicleTypeServiceImpl * @Date:2024/9/26 22:36 - * @Description: 车辆类型实现层 + * @Description: */ @Log4j2 @Service diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/mapper/car/CarManageMapper.xml b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/mapper/car/CarManageMapper.xml index 2626ceb..2157943 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/mapper/car/CarManageMapper.xml +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/resources/mapper/car/CarManageMapper.xml @@ -5,4 +5,5 @@ + diff --git a/cloud-modules/cloud-modules-event-process/src/main/java/com/muyu/event/process/consumer/GoOnlineConsumer.java b/cloud-modules/cloud-modules-event-process/src/main/java/com/muyu/event/process/consumer/GoOnlineConsumer.java index ff0e571..7b823cd 100644 --- a/cloud-modules/cloud-modules-event-process/src/main/java/com/muyu/event/process/consumer/GoOnlineConsumer.java +++ b/cloud-modules/cloud-modules-event-process/src/main/java/com/muyu/event/process/consumer/GoOnlineConsumer.java @@ -1,7 +1,7 @@ package com.muyu.event.process.consumer; import com.muyu.enterprise.cache.CarFaultCacheService; -import com.muyu.enterprise.cache.CarManageCacheService; +import com.muyu.enterprise.cache.CarVehicleTypeCacheService; import com.muyu.enterprise.cache.CarWarnCacheService; import com.muyu.enterprise.cache.ElectronicFenceCacheService; import com.muyu.event.process.constant.CacheHandlerConstants; @@ -35,7 +35,7 @@ public class GoOnlineConsumer { /** * 车辆管理缓存服务 */ - private final CarManageCacheService carManageCacheService; + private final CarVehicleTypeCacheService carManageCacheService; /** * 车辆故障缓存服务 diff --git a/cloud-modules/cloud-modules-protocol-analysis/pom.xml b/cloud-modules/cloud-modules-protocol-analysis/pom.xml index c294bb2..b46dbe9 100644 --- a/cloud-modules/cloud-modules-protocol-analysis/pom.xml +++ b/cloud-modules/cloud-modules-protocol-analysis/pom.xml @@ -22,8 +22,6 @@ - - com.alibaba.cloud @@ -89,41 +87,56 @@ com.muyu cloud-modules-enterprise-common + com.github.yulichang mybatis-plus-join + com.muyu cloud-common-core + com.muyu cloud-common-kafka + com.muyu cloud-common-mqtt + org.springframework.boot spring-boot-starter-cache + com.github.ben-manes.caffeine caffeine + com.muyu cloud-modules-enterprise-remote + + + + com.muyu + cloud-modules-enterprise-cache + + + diff --git a/cloud-modules/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/ProtocolAnalysisApplication.java b/cloud-modules/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/ProtocolAnalysisApplication.java index 8477033..6d08b71 100644 --- a/cloud-modules/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/ProtocolAnalysisApplication.java +++ b/cloud-modules/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/ProtocolAnalysisApplication.java @@ -4,6 +4,7 @@ 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; +import org.springframework.cloud.openfeign.EnableFeignClients; /** * 协议解析启动类 diff --git a/cloud-modules/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/MQTT/ParsingMQTT.java b/cloud-modules/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/MQTT/ParsingMQTT.java index f6d51ca..770eba1 100644 --- a/cloud-modules/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/MQTT/ParsingMQTT.java +++ b/cloud-modules/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/MQTT/ParsingMQTT.java @@ -4,6 +4,11 @@ import com.muyu.common.core.constant.KafkaConstants; import com.muyu.common.core.constant.RedisConstants; import com.muyu.common.core.domain.Result; import com.muyu.common.mqtt.MQTTConnect; +import com.muyu.enterprise.cache.CarMessageValueCacheService; +import com.muyu.enterprise.cache.CarVehicleCacheService; +import com.muyu.enterprise.cache.CarVehicleTypeCacheService; +import com.muyu.enterprise.domain.car.Vehicle; +import com.muyu.enterprise.domain.car.VehicleType; import com.muyu.enterprise.domain.resp.car.MessageValueListResp; import com.muyu.enterprise.remote.RemoteMessageValueService; import com.muyu.enterprise.remote.RemoteVehicleService; @@ -15,7 +20,6 @@ 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; @@ -33,6 +37,9 @@ import java.util.List; @Component public class ParsingMQTT { + private final static String topic = "sysCar_vin_topic"; + + @Resource private RedisTemplate redisTemplate; @@ -45,6 +52,18 @@ public class ParsingMQTT { @Resource private RemoteMessageValueService remoteMessageValueService; + //车辆信息 + @Resource + private CarVehicleCacheService vehicleCacheService; + + //车辆类型信息 + @Resource + private CarVehicleTypeCacheService vehicleTypeCacheService; + + //报文模版信息 + @Resource + private CarMessageValueCacheService allMessageValueCacheService; + /** * 协议解析 */ @@ -59,7 +78,7 @@ public class ParsingMQTT { MqttClient sampleClient = new MqttClient(MQTTConnect.BROKER, MQTTConnect.CLIENT_ID); MqttConnectOptions connOpts = new MqttConnectOptions(); connOpts.setCleanSession(true); - log.info("Connecting to MQTTConnect.BROKER: {}", MQTTConnect.BROKER); + log.info("连接中MQTTConnect.BROKER: {}", MQTTConnect.BROKER); sampleClient.connect(connOpts); sampleClient.subscribe(MQTTConnect.TOPIC, 0); sampleClient.setCallback(new MqttCallback() { @@ -78,7 +97,7 @@ public class ParsingMQTT { ProducerRecord producerRecord = new ProducerRecord<>(KafkaConstants.MESSAGE_PARSING, entries.toString() ); kafkaProducer.send(producerRecord); - log.info("解析之后的数据"+entries); + log.info("解析之后的数据:"+entries); } @@ -100,33 +119,11 @@ public class ParsingMQTT { String vehicleVin = result.substring(1, 18); log.info("车辆VIN码: " + vehicleVin); //根据车辆VIN码查询报文模板ID - Result byVehicleVin = remoteVehicleService.findByVehicleVin(vehicleVin); - Long templateId = byVehicleVin.getData(); - List templateList; - //从redis缓存中获取报文模板数据 - try { - String redisKey = RedisConstants.MESSAGE_TEMPLATE + 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 = remoteMessageValueService.findByTemplateId(templateId); - templateList = byTemplateId.getData(); - templateList.forEach( - listResp -> - redisTemplate.opsForList().rightPush( - redisKey, JSON.toJSONString(listResp) - ) - ); - log.info("数据库查询成功:"+byTemplateId); - } - } catch (Exception e) { - log.info("获取报文模板失败"); - throw new RuntimeException("获取报文模板失败"); - } + // 根据车辆VIN码查询车辆信息 + Vehicle vehicle = vehicleCacheService.get(vehicleVin); + VehicleType vehicleType = vehicleTypeCacheService.get(String.valueOf(vehicle.getVehicleTypeId())); + Long templateId = vehicleType.getMessageTemplateId(); + List templateList = allMessageValueCacheService.get(String.valueOf(templateId)); //判断报文模板列表不为空 if (templateList.isEmpty()) { log.info("报文模版为空"); diff --git a/cloud-modules/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/MQTT/Test2.java b/cloud-modules/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/MQTT/Test2.java deleted file mode 100644 index 9ed2037..0000000 --- a/cloud-modules/cloud-modules-protocol-analysis/src/main/java/com/muyu/analysis/parsing/MQTT/Test2.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.muyu.analysis.parsing.mqtt; - -import com.alibaba.fastjson2.JSONObject; -import lombok.extern.log4j.Log4j2; -import org.w3c.dom.stylesheets.LinkStyle; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -/** - * @Author:李庆帅 - * @Package:com.muyu.analysis.parsing.mqtt - * @Project:cloud-server - * @name:Test2 - * @Date:2024/10/6 20:36 - */ -@Log4j2 -public class Test2 -{ - private static final int DURATION_SECONDS = 5; - private static List receivedStrings = new ArrayList<>(); - private static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); - private static int elapsedSeconds = 0; - private static String file = "elapsed" ; - - public static void main(String[] args){ - //定义一个任务,每秒执行一次 - Runnable task = new Runnable() { - @Override - public void run() { - JSONObject stringFromSource = getStringFromSource(); - receivedStrings.add(stringFromSource); - System.out.println("Received:"+stringFromSource); - //清理超过的数据 - cleanUpOIdStrings(); - //检查超速条件 - checkForSpeeding(); - } - }; - //每个1秒执行一次任务 - scheduler.scheduleAtFixedRate(task,0,1, TimeUnit.SECONDS); - } - //模拟从某个源获取字符串的方法 - private static JSONObject getStringFromSource(){ - JSONObject jsonObject = new JSONObject(); - jsonObject.put("message","Hello World"); - jsonObject.put("time",System.currentTimeMillis()); - jsonObject.put("elapsed",elapsedSeconds); - return jsonObject; - } - - //清理超过60秒的数据 - private static void cleanUpOIdStrings(){ - long currentTime = System.currentTimeMillis(); - receivedStrings.removeIf(jsonObject ->currentTime-jsonObject.getLong("time")>TimeUnit.SECONDS.toMicros(DURATION_SECONDS)); - } - - //检查是否有超速情况 - private static void checkForSpeeding() - { - if(receivedStrings.size() < 2)return;//如果数据不足,直接返回 - - JSONObject jsonObject = new JSONObject(); - jsonObject.put("message","你好"); - jsonObject.put("time",System.currentTimeMillis()); - jsonObject.put("elapsed",10); - - for (int i = 0; i < receivedStrings.size(); i++) { - JSONObject current = receivedStrings.get(i); - JSONObject next = receivedStrings.get(i + 1); - - Short currentElapsed = current.getShort(file); - Short nextElapsed = next.getShort(file); - receivedStrings.add(jsonObject); - //检查条件,如果相差大于12,则记录错误 - if (nextElapsed - currentElapsed > 12) { - System.out.println("出错啦!出错啦!车子超速啦!!!"); - } - } - } - - -}