diff --git a/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/CoupletTroubleCode.java b/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/CoupletTroubleCode.java index 0ace253..180a756 100644 --- a/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/CoupletTroubleCode.java +++ b/couplet-common/couplet-common-business/src/main/java/com/couplet/common/domain/CoupletTroubleCode.java @@ -65,4 +65,9 @@ public class CoupletTroubleCode { */ @Excel(name = "故障位置") private String troublePosition; + + /** + * 处理状态 + */ + private Integer processingState; } diff --git a/couplet-common/couplet-common-business/src/main/java/com/couplet/remote/RemoteRealTimeService.java b/couplet-common/couplet-common-business/src/main/java/com/couplet/remote/RemoteRealTimeService.java new file mode 100644 index 0000000..13cf4b6 --- /dev/null +++ b/couplet-common/couplet-common-business/src/main/java/com/couplet/remote/RemoteRealTimeService.java @@ -0,0 +1,19 @@ +package com.couplet.remote; + +import com.couplet.common.core.constant.ServiceNameConstants; +import com.couplet.common.core.domain.Result; +import com.couplet.common.domain.CoupletTroubleCode; +import com.couplet.remote.factory.RemoteRealTimeFallbackFactory; +import com.couplet.remote.factory.RemoteTroubleFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient(contextId = "remoteRealTimeService" , + value = ServiceNameConstants.BUSINESS_SERVICE, + fallbackFactory = RemoteRealTimeFallbackFactory.class +) +public interface RemoteRealTimeService { + + +} diff --git a/couplet-common/couplet-common-business/src/main/java/com/couplet/remote/RemoteVehicleService.java b/couplet-common/couplet-common-business/src/main/java/com/couplet/remote/RemoteVehicleService.java index 1b03483..ec9a53a 100644 --- a/couplet-common/couplet-common-business/src/main/java/com/couplet/remote/RemoteVehicleService.java +++ b/couplet-common/couplet-common-business/src/main/java/com/couplet/remote/RemoteVehicleService.java @@ -63,13 +63,6 @@ public interface RemoteVehicleService { */ @PostMapping("/vehicleAndLogo/queryByLogoIds/{vehicleId}") public Result> queryByLogoIds(@PathVariable("vehicleId") Long vehicleId); - /** - * 根据车辆id查询绑定的标识 - * @param - * @return - */ -// @PostMapping("/vehicleAndLogo/queryByLogoIds/{vehicleId}") -// public Result> queryByLogoIds(@PathVariable("vehicleId") Long vehicleId); @PostMapping("/list") public Result list(@RequestBody VehicleListParams listParams); diff --git a/couplet-common/couplet-common-business/src/main/java/com/couplet/remote/factory/RemoteRealTimeFallbackFactory.java b/couplet-common/couplet-common-business/src/main/java/com/couplet/remote/factory/RemoteRealTimeFallbackFactory.java new file mode 100644 index 0000000..16075fa --- /dev/null +++ b/couplet-common/couplet-common-business/src/main/java/com/couplet/remote/factory/RemoteRealTimeFallbackFactory.java @@ -0,0 +1,21 @@ +package com.couplet.remote.factory; + +import com.couplet.common.core.domain.Result; +import com.couplet.common.domain.CoupletTroubleCode; +import com.couplet.remote.RemoteRealTimeService; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * @Author: LiJiaYao + * @Date: 2024/4/8 + * @Description: + */ +@Component +public class RemoteRealTimeFallbackFactory implements FallbackFactory { + + @Override + public RemoteRealTimeService create(Throwable cause) { + return null; + } +} diff --git a/couplet-common/couplet-common-event/src/main/java/com/couplet/analyze/common/contents/AnalyzeEventContents.java b/couplet-common/couplet-common-event/src/main/java/com/couplet/analyze/common/contents/AnalyzeEventContents.java index cd18fcf..b457d29 100644 --- a/couplet-common/couplet-common-event/src/main/java/com/couplet/analyze/common/contents/AnalyzeEventContents.java +++ b/couplet-common/couplet-common-event/src/main/java/com/couplet/analyze/common/contents/AnalyzeEventContents.java @@ -1,5 +1,6 @@ package com.couplet.analyze.common.contents; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; /** @@ -8,8 +9,7 @@ import org.springframework.stereotype.Component; * @Description: 事件内容 */ -@Component -public class AnalyzeEventContents { +public interface AnalyzeEventContents { /** * 故障 diff --git a/couplet-modules/couplet-analyze/couplet-analyze-msg/pom.xml b/couplet-modules/couplet-analyze/couplet-analyze-msg/pom.xml index fd6a1d7..fd7ec92 100644 --- a/couplet-modules/couplet-analyze/couplet-analyze-msg/pom.xml +++ b/couplet-modules/couplet-analyze/couplet-analyze-msg/pom.xml @@ -92,6 +92,8 @@ com.couplet couplet-common-event + + org.springframework.kafka spring-kafka @@ -101,6 +103,12 @@ couplet-common-business + + + org.springframework.boot + spring-boot-starter-amqp + + diff --git a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/consumer/CodeConsumer.java b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/consumer/CodeConsumer.java index c49f871..9dc7660 100644 --- a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/consumer/CodeConsumer.java +++ b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/consumer/CodeConsumer.java @@ -1,150 +1,203 @@ -//package com.couplet.analyze.msg.consumer; -// -//import com.alibaba.fastjson.JSONObject; -//import com.couplet.analyze.msg.domain.CoupletMsgData; -//import com.couplet.analyze.msg.utils.MsgUtils; -//import com.couplet.common.domain.CoupletTroubleCode; -//import com.couplet.common.redis.service.RedisService; -//import com.couplet.remote.RemoteTroubleService; -//import com.rabbitmq.client.Channel; -//import lombok.extern.slf4j.Slf4j; -//import org.springframework.amqp.rabbit.annotation.Queue; -//import org.springframework.amqp.rabbit.annotation.RabbitListener; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.data.redis.core.RedisTemplate; -//import org.springframework.amqp.core.Message; -//import org.springframework.stereotype.Component; -// -//import java.util.Date; -//import java.util.concurrent.CompletableFuture; -// -///** -// * @author DongXiaoDong -// * @version 1.0 -// * @date 2024/4/6 15:37 -// * @description -// */ -//@Component -//@Slf4j -//public class CodeConsumer { -//// @Autowired -//// private RedisTemplate redisTemplate; -// +package com.couplet.analyze.msg.consumer; + +import com.alibaba.fastjson.JSONObject; +import com.couplet.analyze.msg.domain.CoupletMsgData; +import com.couplet.analyze.msg.utils.MsgUtils; +import com.couplet.common.domain.CoupletTroubleCode; +import com.couplet.common.redis.service.RedisService; +import com.couplet.remote.RemoteTroubleService; +import com.rabbitmq.client.Channel; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.amqp.core.Message; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.concurrent.CompletableFuture; + +/** + * @author DongXiaoDong + * @version 1.0 + * @date 2024/4/6 15:37 + * @description + */ +@Component +@Slf4j +public class CodeConsumer { // @Autowired -// private RedisService redisService; -// @Autowired -// private RemoteTroubleService remoteTroubleService; -// -// @RabbitListener(queuesToDeclare = {@Queue("couplet-code-queue")}) -// public void sendLogQueueConsumer(Message message, CoupletMsgData msgData, Channel channel) { -// log.info("日志队列:{},接收到的消息:{},开始消费...","couplet-code-queue", JSONObject.toJSONString(msgData)); -// long start = System.currentTimeMillis(); -// -// String messageId = message.getMessageProperties().getMessageId(); -// -// try { -// boolean addToSetIfNotExists = redisService.addToSetIfNotExists("couplet-code-queue", messageId); -// if (addToSetIfNotExists) { -// //异步保存记录 -// CompletableFuture.runAsync(() -> { -// CoupletTroubleCode troubleCode = new CoupletTroubleCode(); -// troubleCode.setTroubleStartTime(new Date()); -// troubleCode.setTroubleVin(msgData.getVin()); -// // 随机生成故障码 -// String faultCode = MsgUtils.generateGTA(); -// troubleCode.setTroubleCode(faultCode); -// -// // 检查车辆状态,若为0,则设置故障位置为"190" -// if(msgData.getVehicleStatus() == 0) { -// troubleCode.setTroublePosition("190"); -// } -// -// // 检查充电状态,若为0,则设置故障位置为"191" -// if (msgData.getChargingStatus() == 0) { -// troubleCode.setTroublePosition("191"); -// } -// -// // 检查运行状态,若为0,则设置故障位置为"192" -// if (msgData.getOperatingStatus() == 0) { -// troubleCode.setTroublePosition("192"); -// } -// -// // 检查电池荷电状态(SOC), 若为0,则设置故障位置为"193" -// if (msgData.getSocStatus() == 0) { -// troubleCode.setTroublePosition("193"); -// } -// -// // 检查充电能源存储状态,若为0,则设置故障位置为"194" -// if (msgData.getChargingEnergyStorageStatus() == 0) { -// troubleCode.setTroublePosition("194"); -// } -// -// // 检查驱动电机状态,若为0,则设置故障位置为"195" -// if (msgData.getDriveMotorStatus() == 0) { -// troubleCode.setTroublePosition("195"); -// } -// -// // 检查定位状态,若为0,则设置故障位置为"196" -// if (msgData.getPositionStatus() == 0) { -// troubleCode.setTroublePosition("196"); -// } -// -// // 检查电子驻车系统(EAS)状态,若为0,则设置故障位置为"197" -// if (msgData.getEasStatus() == 0) { -// troubleCode.setTroublePosition("197"); -// } -// -// // 检查PTC(正温度系数热敏电阻)状态,若为0,则设置故障位置为"198" -// if (msgData.getPtcStatus() == 0) { -// troubleCode.setTroublePosition("198"); -// } -// -// // 检查电动助力转向系统(EPS)状态,若为0,则设置故障位置为"199" -// if (msgData.getEpsStatus() == 0) { -// troubleCode.setTroublePosition("199"); -// } -// -// // 检查防抱死制动系统(ABS)状态,若为0,则设置故障位置为"200" -// if (msgData.getAbsStatus() == 0) { -// troubleCode.setTroublePosition("200"); -// } -// -// // 检查主控制器(MCU)状态,若为0,则设置故障位置为"201" -// if (msgData.getMcuStatus() == 0) { -// troubleCode.setTroublePosition("201"); -// } -// -// // 检查加热状态,若为0,则设置故障位置为"202" -// if (msgData.getHeatingStatus() == 0) { -// troubleCode.setTroublePosition("202"); -// } -// -// // 检查电池状态,若为0,则设置故障位置为"203" -// if (msgData.getBatteryStatus() == 0) { -// troubleCode.setTroublePosition("203"); -// } -// -// // 检查电池绝缘状态,若为0,则设置故障位置为"204" -// if (msgData.getBatteryInsulationStatus() == 0) { -// troubleCode.setTroublePosition("204"); -// } -// -// // 检查直流-直流转换器(DC/DC)状态,若为0,则设置故障位置为"205" -// if (msgData.getDcdcStatus() == 0) { -// troubleCode.setTroublePosition("205"); -// } -// -// // 检查充电机(CHG)状态,若为0,则设置故障位置为"206" -// if (msgData.getChgStatus() == 0) { -// troubleCode.setTroublePosition("206"); -// } -// remoteTroubleService.newFaultData(troubleCode); -// }); -// } -// long end = System.currentTimeMillis(); -// log.info("日志队列:{},接收到的消息:{},消费完成,耗时:{}毫秒","couplet-code-queue", JSONObject.toJSONString(msgData), (end-start)); -// } catch (Exception e) { -// throw new RuntimeException(e); -// } -// } -//} +// private RedisTemplate redisTemplate; + + @Autowired + private RedisService redisService; + @Autowired + private RemoteTroubleService remoteTroubleService; + + @RabbitListener(queuesToDeclare = {@Queue("couplet-code-queue")}) + public void sendLogQueueConsumer(Message message, CoupletMsgData msgData, Channel channel) { + log.info("日志队列:{},接收到的消息:{},开始消费...","couplet-code-queue", JSONObject.toJSONString(msgData)); + long start = System.currentTimeMillis(); + + String messageId = message.getMessageProperties().getMessageId(); + + try { + boolean addToSetIfNotExists = redisService.addToSetIfNotExists("couplet-code-queue", messageId); + if (addToSetIfNotExists) { + //异步保存记录 + CompletableFuture.runAsync(() -> { + CoupletTroubleCode troubleCode = new CoupletTroubleCode(); + troubleCode.setTroubleStartTime(new Date()); + troubleCode.setTroubleVin(msgData.getVin()); + // 随机生成故障码 + String faultCode = MsgUtils.generateGTA(); + troubleCode.setTroubleCode(faultCode); + + switch (msgData.getVehicleStatus()) { + case 0: + troubleCode.setTroublePosition("190"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getChargingStatus()) { + case 0: + troubleCode.setTroublePosition("191"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getOperatingStatus()) { + case 0: + troubleCode.setTroublePosition("192"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getSocStatus()) { + case 0: + troubleCode.setTroublePosition("193"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getChargingEnergyStorageStatus()) { + case 0: + troubleCode.setTroublePosition("194"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getDriveMotorStatus()) { + case 0: + troubleCode.setTroublePosition("195"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getPositionStatus()) { + case 0: + troubleCode.setTroublePosition("196"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getEasStatus()) { + case 0: + troubleCode.setTroublePosition("197"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getPtcStatus()) { + case 0: + troubleCode.setTroublePosition("198"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getEpsStatus()) { + case 0: + troubleCode.setTroublePosition("199"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getAbsStatus()) { + case 0: + troubleCode.setTroublePosition("200"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getMcuStatus()) { + case 0: + troubleCode.setTroublePosition("201"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getHeatingStatus()) { + case 0: + troubleCode.setTroublePosition("202"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getBatteryStatus()) { + case 0: + troubleCode.setTroublePosition("203"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getBatteryInsulationStatus()) { + case 0: + troubleCode.setTroublePosition("204"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getDcdcStatus()) { + case 0: + troubleCode.setTroublePosition("205"); + troubleCode.setProcessingState(0); + break; + default: + switch (msgData.getChgStatus()) { + case 0: + troubleCode.setTroublePosition("206"); + troubleCode.setProcessingState(0); + break; + default: + // do nothing + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + remoteTroubleService.newFaultData(troubleCode); + }); + } + long end = System.currentTimeMillis(); + log.info("日志队列:{},接收到的消息:{},消费完成,耗时:{}毫秒","couplet-code-queue", JSONObject.toJSONString(msgData), (end-start)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/mapper/IncidentMapper.java b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/mapper/IncidentMapper.java index 3f44416..aeb2c81 100644 --- a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/mapper/IncidentMapper.java +++ b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/mapper/IncidentMapper.java @@ -2,6 +2,9 @@ package com.couplet.analyze.msg.mapper; import com.couplet.analyze.msg.domain.CoupletMsgData; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; /** * @Author: LiJiaYao @@ -20,6 +23,6 @@ public interface IncidentMapper { * 查询是否存在该vin */ // CoupletMsgData queryByIncident(RealTimeDataRequest realTimeDataRequest); - CoupletMsgData queryByIncident(String vin); + CoupletMsgData queryByIncident(@Param("vin") String vin, @Param("createTime") Date createTime); } diff --git a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/model/ModelsKafkaMessage.java b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/model/ModelsKafkaMessage.java index da4c02d..1c2c085 100644 --- a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/model/ModelsKafkaMessage.java +++ b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/model/ModelsKafkaMessage.java @@ -1,7 +1,5 @@ package com.couplet.analyze.msg.model; -import com.couplet.analyze.common.contents.AnalyzeEventContents; -import com.couplet.analyze.common.event.AnalyzeEventCache; import com.couplet.analyze.msg.domain.CoupletMsgData; import com.couplet.analyze.msg.service.IncidentService; import com.couplet.common.core.exception.vehicle.VehicleException; @@ -10,6 +8,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.ConsumerRecords; import org.apache.kafka.clients.consumer.KafkaConsumer; +import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -35,12 +34,8 @@ public class ModelsKafkaMessage { private static final String TOPIC_NAME = "online"; private static final String BOOTSTRAP_SERVERS = "39.103.133.136:9092"; - @Autowired - private AnalyzeEventContents analyzeEventContents; @Autowired private AnalyzeEventCache analyzeEventCache; -// @Autowired -// private RabbitTemplate rabbitTemplate; /** * 消费者配置 diff --git a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/BreakdownServiceImpl.java b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/BreakdownServiceImpl.java index 5563610..88e6fa3 100644 --- a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/BreakdownServiceImpl.java +++ b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/BreakdownServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.stereotype.Service; import java.util.Date; import java.util.HashSet; import java.util.Set; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; /** @@ -103,6 +104,7 @@ public class BreakdownServiceImpl extends KeyExpirationEventMessageListener impl for (CoupletMsgData member : members) { Set breakdownIds = redisService.getCacheSet(member.getVin()+":"+key); if (breakdownIds.size()==0){ + CompletableFuture.runAsync(() -> { CoupletTroubleCode troubleCode = new CoupletTroubleCode(); troubleCode.setTroubleStartTime(new Date()); troubleCode.setTroubleVin(member.getVin()); @@ -110,96 +112,149 @@ public class BreakdownServiceImpl extends KeyExpirationEventMessageListener impl String faultCode = MsgUtils.generateGTA(); troubleCode.setTroubleCode(faultCode); - // 检查车辆状态,若为0,则设置故障位置为"190" - if(member.getVehicleStatus() == 0) { - troubleCode.setTroublePosition("190"); - } - - // 检查充电状态,若为0,则设置故障位置为"191" - if (member.getChargingStatus() == 0) { - troubleCode.setTroublePosition("191"); - } - - // 检查运行状态,若为0,则设置故障位置为"192" - if (member.getOperatingStatus() == 0) { - troubleCode.setTroublePosition("192"); - } - - // 检查电池荷电状态(SOC), 若为0,则设置故障位置为"193" - if (member.getSocStatus() == 0) { - troubleCode.setTroublePosition("193"); - } - - // 检查充电能源存储状态,若为0,则设置故障位置为"194" - if (member.getChargingEnergyStorageStatus() == 0) { - troubleCode.setTroublePosition("194"); - } - - // 检查驱动电机状态,若为0,则设置故障位置为"195" - if (member.getDriveMotorStatus() == 0) { - troubleCode.setTroublePosition("195"); - } - - // 检查定位状态,若为0,则设置故障位置为"196" - if (member.getPositionStatus() == 0) { - troubleCode.setTroublePosition("196"); - } - - // 检查电子驻车系统(EAS)状态,若为0,则设置故障位置为"197" - if (member.getEasStatus() == 0) { - troubleCode.setTroublePosition("197"); - } - - // 检查PTC(正温度系数热敏电阻)状态,若为0,则设置故障位置为"198" - if (member.getPtcStatus() == 0) { - troubleCode.setTroublePosition("198"); - } - - // 检查电动助力转向系统(EPS)状态,若为0,则设置故障位置为"199" - if (member.getEpsStatus() == 0) { - troubleCode.setTroublePosition("199"); - } - - // 检查防抱死制动系统(ABS)状态,若为0,则设置故障位置为"200" - if (member.getAbsStatus() == 0) { - troubleCode.setTroublePosition("200"); - } - - // 检查主控制器(MCU)状态,若为0,则设置故障位置为"201" - if (member.getMcuStatus() == 0) { - troubleCode.setTroublePosition("201"); - } - - // 检查加热状态,若为0,则设置故障位置为"202" - if (member.getHeatingStatus() == 0) { - troubleCode.setTroublePosition("202"); - } - - // 检查电池状态,若为0,则设置故障位置为"203" - if (member.getBatteryStatus() == 0) { - troubleCode.setTroublePosition("203"); - } - - // 检查电池绝缘状态,若为0,则设置故障位置为"204" - if (member.getBatteryInsulationStatus() == 0) { - troubleCode.setTroublePosition("204"); - } - - // 检查直流-直流转换器(DC/DC)状态,若为0,则设置故障位置为"205" - if (member.getDcdcStatus() == 0) { - troubleCode.setTroublePosition("205"); - } - - // 检查充电机(CHG)状态,若为0,则设置故障位置为"206" - if (member.getChgStatus() == 0) { - troubleCode.setTroublePosition("206"); - } + switch (member.getVehicleStatus()) { + case 0: + troubleCode.setTroublePosition("190"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getChargingStatus()) { + case 0: + troubleCode.setTroublePosition("191"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getOperatingStatus()) { + case 0: + troubleCode.setTroublePosition("192"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getSocStatus()) { + case 0: + troubleCode.setTroublePosition("193"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getChargingEnergyStorageStatus()) { + case 0: + troubleCode.setTroublePosition("194"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getDriveMotorStatus()) { + case 0: + troubleCode.setTroublePosition("195"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getPositionStatus()) { + case 0: + troubleCode.setTroublePosition("196"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getEasStatus()) { + case 0: + troubleCode.setTroublePosition("197"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getPtcStatus()) { + case 0: + troubleCode.setTroublePosition("198"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getEpsStatus()) { + case 0: + troubleCode.setTroublePosition("199"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getAbsStatus()) { + case 0: + troubleCode.setTroublePosition("200"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getMcuStatus()) { + case 0: + troubleCode.setTroublePosition("201"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getHeatingStatus()) { + case 0: + troubleCode.setTroublePosition("202"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getBatteryStatus()) { + case 0: + troubleCode.setTroublePosition("203"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getBatteryInsulationStatus()) { + case 0: + troubleCode.setTroublePosition("204"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getDcdcStatus()) { + case 0: + troubleCode.setTroublePosition("205"); + troubleCode.setProcessingState(0); + break; + default: + switch (member.getChgStatus()) { + case 0: + troubleCode.setTroublePosition("206"); + troubleCode.setProcessingState(0); + break; + default: + // do nothing + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } remoteTroubleService.newFaultData(troubleCode); + }); redisService.setCacheSet(member.getVin()+":"+key, member.getVin()+":"+member); long expireTime = 30; redisService.expire(member.getVin()+":"+key, expireTime, TimeUnit.MINUTES); } - } } diff --git a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/RealTimeDataServiceImpl.java b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/RealTimeDataServiceImpl.java index 7ff9a1b..d625f8e 100644 --- a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/RealTimeDataServiceImpl.java +++ b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/java/com/couplet/analyze/msg/service/impl/RealTimeDataServiceImpl.java @@ -7,11 +7,14 @@ import com.couplet.analyze.msg.service.impl.realTimeData.RealTimeJudge; import com.couplet.common.core.utils.StringUtils; import com.couplet.common.domain.request.RealTimeDataRequest; import com.couplet.common.redis.service.RedisService; +import com.couplet.remote.RemoteRealTimeService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; +import java.util.Date; + /** * @Author: LiJiaYao * @Date: 2024/4/2 @@ -29,6 +32,8 @@ public class RealTimeDataServiceImpl implements IncidentService { @Autowired private RedisService redisService; + @Autowired + private RemoteRealTimeService remoteRealTimeService; /** * 实时数据事件 @@ -41,11 +46,15 @@ public class RealTimeDataServiceImpl implements IncidentService { log.info("实时数据事件开始....."); RealTimeDataRequest cacheObject = redisService.getCacheObject("vin:" + coupletMsgData.getVin()); - if (StringUtils.isArray(cacheObject)){ - log.info("[{}]有缓存数据,值为:[{}]", coupletMsgData.getVin(), cacheObject); - + + if (RealTimeJudge.addRealTime(cacheObject)) { + log.info("[{}]有缓存数据,值为:[{}],且缓存数据与实时数据一致,开始传输实时数据", coupletMsgData.getVin(), cacheObject); + CoupletMsgData query = incidentMapper.queryByIncident(coupletMsgData.getVin(), new Date()); + redisService.setCacheObject("vin:" + cacheObject.getVin(), query); + } else { + log.info("[{}]有缓存数据,值为:[{}],且缓存数据与实时数据不一致,开始传输实时数据", coupletMsgData.getVin(), cacheObject); } - if (RealTimeJudge.isJudge(coupletMsgData.getVin())){ + if (RealTimeJudge.isJudge(coupletMsgData.getVin())) { log.info("有实时数据,值为:[{}]开始传输实时数据", coupletMsgData.getVin()); } log.info("[{}]开始传输实时数据", coupletMsgData.getVin()); @@ -56,6 +65,7 @@ public class RealTimeDataServiceImpl implements IncidentService { /** * 实时数据事件 + * * @return */ @Override diff --git a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/resources/mapper/incident/SysIncidentMapper.xml b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/resources/mapper/incident/SysIncidentMapper.xml index e53a115..29ccb3e 100644 --- a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/resources/mapper/incident/SysIncidentMapper.xml +++ b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/main/resources/mapper/incident/SysIncidentMapper.xml @@ -72,7 +72,7 @@ diff --git a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/test/java/com/couplet/msg/ParsingMsg.java b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/test/java/com/couplet/msg/ParsingMsg.java index 697f79c..527a27f 100644 --- a/couplet-modules/couplet-analyze/couplet-analyze-msg/src/test/java/com/couplet/msg/ParsingMsg.java +++ b/couplet-modules/couplet-analyze/couplet-analyze-msg/src/test/java/com/couplet/msg/ParsingMsg.java @@ -25,21 +25,21 @@ public class ParsingMsg { String hexStringWithoutSpaces = substring.replaceAll("\\s+", ""); String asciiString = hexToString(hexStringWithoutSpaces); System.out.println("16进制解析后的数据:"+asciiString); - //截取前17位 - String substring1 = asciiString.substring(0, 17); - System.out.println("VIN:"+substring1); - String substring2 = asciiString.substring(17, 30); - System.out.println("时间戳:"+substring2); - String substring3 = asciiString.substring(30, 40); - System.out.println("经度:" +substring3); - String substring4 = asciiString.substring(41, 50); - System.out.println("纬度:"+ substring4); - String substring5 = asciiString.substring(51, 56); - System.out.println("车速:"+ substring5); - String substring6 = asciiString.substring(57, 67); - System.out.println("总里程:"+ substring6); - String substring7 = asciiString.substring(68, 73); - System.out.println("总电压:"+ substring7); +// //截取前17位 +// String substring1 = asciiString.substring(0, 17); +// System.out.println("VIN:"+substring1); +// String substring2 = asciiString.substring(17, 30); +// System.out.println("时间戳:"+substring2); +// String substring3 = asciiString.substring(30, 40); +// System.out.println("经度:" +substring3); +// String substring4 = asciiString.substring(41, 50); +// System.out.println("纬度:"+ substring4); +// String substring5 = asciiString.substring(51, 56); +// System.out.println("车速:"+ substring5); +// String substring6 = asciiString.substring(57, 67); +// System.out.println("总里程:"+ substring6); +// String substring7 = asciiString.substring(68, 73); +// System.out.println("总电压:"+ substring7); String pattern = "(.{17})(.{10})(.{9})(.{8})(.{2})"; Pattern compile = Pattern.compile(pattern); Matcher matcher = compile.matcher(asciiString); diff --git a/couplet-modules/couplet-business/src/main/resources/mapper/business/SysTroubleMapper.xml b/couplet-modules/couplet-business/src/main/resources/mapper/business/SysTroubleMapper.xml index 16b1277..9f9f3e5 100644 --- a/couplet-modules/couplet-business/src/main/resources/mapper/business/SysTroubleMapper.xml +++ b/couplet-modules/couplet-business/src/main/resources/mapper/business/SysTroubleMapper.xml @@ -8,9 +8,9 @@ - + @@ -19,9 +19,9 @@ INSERT INTO `couplet-cloud`.`couplet_trouble_code` - (`trouble_code`,`trouble_vin`,`trouble_position`,`trouble_start_time`) + (`trouble_code`,`trouble_vin`,`trouble_position`,`trouble_start_time`,`processing_state`) VALUES - (#{troubleCode},#{troubleVin}, #{troublePosition},#{troubleStartTime}) + (#{troubleCode},#{troubleVin}, #{troublePosition},#{troubleStartTime},#{processingState}) truncate table couplet_trouble_code