From d5d17321ff5130aa53ee955139f86effc2ece981 Mon Sep 17 00:00:00 2001 From: Number7 <1845377266@qq.com> Date: Tue, 8 Oct 2024 17:11:03 +0800 Subject: [PATCH] =?UTF-8?q?fix():=E4=BF=AE=E5=A4=8D=E5=8D=8F=E8=AE=AE?= =?UTF-8?q?=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/CloudTemplateApplication.java | 1 + .../controller/TemplateController.java | 21 ---- .../src/main/java/com/muyu/template/test.java | 99 +++++++++++++++++-- .../common/domain/MessageTemplateType.java | 2 +- 4 files changed, 91 insertions(+), 32 deletions(-) delete mode 100644 cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/TemplateController.java 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 359305f..2040f47 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 @@ -13,6 +13,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @EnableMyFeignClients @SpringBootApplication public class CloudTemplateApplication { + public static void main(String[] args) { SpringApplication.run(CloudTemplateApplication.class, args); } diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/TemplateController.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/TemplateController.java deleted file mode 100644 index 1e55cda..0000000 --- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/TemplateController.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.muyu.template.controller; - -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.AllArgsConstructor; -import lombok.extern.log4j.Log4j2; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @author liuxinyue - * @Package:com.muyu.template.controller - * @name:TemplateController - * @Date:2024/10/7 10:28 - */ -@RestController -@RequestMapping("/template") -@AllArgsConstructor -@Tag(name = "协议解析管理",description = "协议解析管理") -@Log4j2 -public class TemplateController { -} diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java index 958969a..dead53c 100644 --- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java +++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java @@ -1,11 +1,27 @@ package com.muyu.template; -import com.alibaba.fastjson.JSONObject; +import cn.hutool.json.JSONObject; +import com.muyu.cache.MessageTemplateTypeCacheService; +import com.muyu.cache.SysCarCacheService; +import com.muyu.cache.WarnRuleCacheService; +import com.muyu.cache.WarnStrategyCacheService; +import com.muyu.common.domain.MessageTemplateType; +import com.muyu.common.domain.SysCar; +import com.muyu.common.domain.resp.SysCarVo; +import com.muyu.common.domain.resp.WarnRuleResp; +import com.muyu.common.domain.resp.WarnStrategyResp; import lombok.extern.log4j.Log4j2; + +import javax.annotation.Resource; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @author liuxinyue * @Package:com.muyu.template @@ -14,14 +30,82 @@ import java.util.concurrent.TimeUnit; */ @Log4j2 public class test { - private static 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) { + //预警策略 + @Resource + private WarnStrategyCacheService warnStrategyCacheService; + //车辆 + @Resource + private SysCarCacheService sysCarCacheService; + //预警规则 + @Resource + private WarnRuleCacheService warnRuleCacheService; + //报文模版 + @Resource + private MessageTemplateTypeCacheService messageTemplateTypeCacheService; + public void main(String[] args) { + //协议解析:每秒穿过来一个JSONObject jsonObject; 添加进receivedStrings + //根据这个车辆VIN查询出他对应的车辆类型 + String carVin=null; + //报文模版的ID + Integer templateId=null; + for (JSONObject receivedString : receivedStrings) { + carVin = receivedString.getStr("carVin"); + } + SysCar carByVin = null; + List carVoList = sysCarCacheService.get(sysCarCacheService.keyPre()); + Map carMap = carVoList.stream() + .collect(Collectors.toMap(SysCarVo::getCarVin, Function.identity())); + //获取到了这个车辆的信息 + carByVin = carMap.get(carVin); + //获取到这辆车绑定的报文模版 + templateId=carByVin.getTemplateId(); + //这个是这辆车对应的所有策略 + List carWithWarnStrategyList=null; + List warnStrategyResps = warnStrategyCacheService.get(warnStrategyCacheService.keyPre()); + for (WarnStrategyResp warnStrategyResp : warnStrategyResps) { + if(warnStrategyResp.getCarTypeId()==carByVin.getCarTypeId()){ + carWithWarnStrategyList.add(warnStrategyResp); + } + } + //该车对应的所有预警规则 + List warnRuleResp=null; + List warnRuleResps = warnRuleCacheService.get(warnRuleCacheService.keyPre()); + for (WarnStrategyResp warnStrategyResp : carWithWarnStrategyList) { + for (WarnRuleResp ruleResp : warnRuleResps) { + if(warnStrategyResp.getId().equals(ruleResp.getStrategyId())){ + warnRuleResp.add(ruleResp); + } + } + } + //报文模版 + List messageTemplateTypes = messageTemplateTypeCacheService.get(messageTemplateTypeCacheService.keyPre()); + Long msgTypeId=null; + //滑窗时间 + Long slideTime=null; + //增长率 + Long slideFrequency=null; + for (WarnRuleResp ruleResp : warnRuleResp) { + //每一个规则他绑定了报文模版里面对应的一个配置 比如:电池,或者车速 + msgTypeId = ruleResp.getMsgTypeId(); + slideTime = ruleResp.getSlideTime(); + slideFrequency = ruleResp.getSlideFrequency(); + } + for (JSONObject receivedString : receivedStrings) { + for (MessageTemplateType messageTemplateType : messageTemplateTypes) { + if(messageTemplateType.getMessageTemplateTypeId().equals(msgTypeId)){ + //例如: 车速 {"车速":127} + Long str = Long.valueOf(receivedString.getStr(messageTemplateType.getMessageField())); + if(str+slideFrequency>slideFrequency){ + log.info("出错啦,出错啦,您的"+messageTemplateType.getMessageField()+"不正常,请检查!!!"); + } + } + } + } // 定义一个任务,每秒执行一次 Runnable task = new Runnable() { @Override @@ -39,6 +123,7 @@ public class test { scheduler.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS); } + // 模拟从某个源获取字符串的方法 private static JSONObject getStringFromSource() { JSONObject jsonObject = new JSONObject(); @@ -47,7 +132,6 @@ public class test { jsonObject.put("elapsed", elapsedSeconds); return jsonObject; } - // 清理超过60秒的数据 private static void cleanUpOldStrings() { long currentTime = System.currentTimeMillis(); @@ -55,16 +139,13 @@ public class test { currentTime - jsonObject.getLong("time") > TimeUnit.SECONDS.toMillis(DURATION_SECONDS) ); } - // 检查是否有超速情况 private static void checkForSpeeding() { if (receivedStrings.size() < 2) return; // 如果数据不足,直接返回 - JSONObject jsonObject = new JSONObject(); jsonObject.put("message", "Hello World"); jsonObject.put("time", System.currentTimeMillis()); jsonObject.put("elapsed", 100); - for (int i = 0; i < receivedStrings.size() - 1; i++) { JSONObject current = receivedStrings.get(i); JSONObject next = receivedStrings.get(i + 1); @@ -78,6 +159,4 @@ public class test { } } } - - } diff --git a/cloud-modules/saas/saas-common/src/main/java/com/muyu/common/domain/MessageTemplateType.java b/cloud-modules/saas/saas-common/src/main/java/com/muyu/common/domain/MessageTemplateType.java index 3c2cd95..87cbb7f 100644 --- a/cloud-modules/saas/saas-common/src/main/java/com/muyu/common/domain/MessageTemplateType.java +++ b/cloud-modules/saas/saas-common/src/main/java/com/muyu/common/domain/MessageTemplateType.java @@ -30,7 +30,7 @@ public class MessageTemplateType implements Serializable { * 主键 */ @TableId(value = "message_template_type_id",type = IdType.AUTO) - private String messageTemplateTypeId; + private Long messageTemplateTypeId; /** * 报文类别 */