故障报警更新
parent
3a493b2510
commit
0111e33f7d
|
@ -10,75 +10,75 @@ public enum BreakConstant {
|
||||||
/**
|
/**
|
||||||
* 车辆状态
|
* 车辆状态
|
||||||
*/
|
*/
|
||||||
GET001("GTX001","vehicleStatus",0),
|
GTX001("GTX001","车辆状态预警",0),
|
||||||
/**
|
/**
|
||||||
* 充点状态
|
* 充电状态
|
||||||
*/
|
*/
|
||||||
GTX002("GTX002","chargingStatus",0),
|
GTX002("GTX002","充电状态预警",0),
|
||||||
/**
|
/**
|
||||||
* 运行状态
|
* 运行状态
|
||||||
*/
|
*/
|
||||||
GTX003("GTX003","operatingStatus",0),
|
GTX003("GTX003","运行状态预警",0),
|
||||||
/**
|
/**
|
||||||
* SOC
|
* SOC
|
||||||
*/
|
*/
|
||||||
GTX004("GTX004","socStatus",0),
|
GTX004("GTX004","SOC预警",0),
|
||||||
/**
|
/**
|
||||||
* 可充电储能装置工作状态
|
* 可充电储能装置工作状态
|
||||||
*/
|
*/
|
||||||
GTX005("GTX005","chargingEnergyStorageStatus",0),
|
GTX005("GTX005","可充电储能装置工作状态预警",0),
|
||||||
/**
|
/**
|
||||||
* 驱动电机状态
|
* 驱动电机状态
|
||||||
*/
|
*/
|
||||||
GTX006("GTX006","driveMotorStatus",0),
|
GTX006("GTX006","驱动电机状态预警",0),
|
||||||
/**
|
/**
|
||||||
* 定位是否有效
|
* 定位是否有效
|
||||||
*/
|
*/
|
||||||
GTX007("GTX007","positionStatus",0),
|
GTX007("GTX007","定位是否有效预警",0),
|
||||||
/**
|
/**
|
||||||
* EPS工作状态
|
* EPS工作状态
|
||||||
*/
|
*/
|
||||||
GTO0001("GTO001","epsStatus",0),
|
GTO0001("GTO001","EPS工作状态预警",0),
|
||||||
/**
|
/**
|
||||||
* EAS工作状态
|
* EAS工作状态
|
||||||
*/
|
*/
|
||||||
GTO0002("GTO002","easStatus",0),
|
GTO0002("GTO002","EAS工作状态预警",0),
|
||||||
/**
|
/**
|
||||||
* PTC工作状态
|
* PTC工作状态
|
||||||
*/
|
*/
|
||||||
GTO003("GTO003","ptcStatus",0),
|
GTO003("GTO003","PTC工作状态预警",0),
|
||||||
/**
|
/**
|
||||||
* DCDC工作状态
|
* DCDC工作状态
|
||||||
*/
|
*/
|
||||||
GTO004("GTO004","dcdcStatus",0),
|
GTO004("GTO004","DCDC工作状态预警",0),
|
||||||
/**
|
/**
|
||||||
* EPS工作状态
|
* EPS工作状态
|
||||||
*/
|
*/
|
||||||
GTO005("GTO005","epsStatus",0),
|
GTO005("GTO005","EPS工作状态预警",0),
|
||||||
/**
|
/**
|
||||||
* CHG工作状态
|
* CHG工作状态
|
||||||
*/
|
*/
|
||||||
GTO006("GTO006","chgStatus",0),
|
GTO006("GTO006","CHG工作状态预警",0),
|
||||||
/**
|
/**
|
||||||
* ABS工作状态
|
* ABS工作状态
|
||||||
*/
|
*/
|
||||||
GTO007("GTO007","absStatus",0),
|
GTO007("GTO007","ABS工作状态预警",0),
|
||||||
/**
|
/**
|
||||||
* MCU工作状态
|
* MCU工作状态
|
||||||
*/
|
*/
|
||||||
GTO008("GTO008","mcuStatus",0),
|
GTO008("GTO008","MCU工作状态预警",0),
|
||||||
/**
|
/**
|
||||||
* 动力电池加热状态
|
* 动力电池加热状态
|
||||||
*/
|
*/
|
||||||
GTB001("GTB001","heatingStatus",0),
|
GTB001("GTB001","动力电池加热状态预警",0),
|
||||||
/**
|
/**
|
||||||
* 动力电池当前状态
|
* 动力电池当前状态
|
||||||
*/
|
*/
|
||||||
GTB002("GTB002","batteryStatus",0),
|
GTB002("GTB002","动力电池当前状态预警",0),
|
||||||
/**
|
/**
|
||||||
* 动力电池保温状态
|
* 动力电池保温状态
|
||||||
*/
|
*/
|
||||||
GTB003("GTB003","batteryInsulationStatus",0);
|
GTB003("GTB003","动力电池保温状态预警",0);
|
||||||
private String key;
|
private String key;
|
||||||
private String value;
|
private String value;
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
package com.god.data.service.impl;
|
package com.god.data.service.impl;
|
||||||
|
|
||||||
import com.god.common.redis.service.RedisService;
|
import com.god.common.redis.service.RedisService;
|
||||||
|
import com.god.data.common.domain.BreakConstant;
|
||||||
import com.god.data.common.domain.CarMessage;
|
import com.god.data.common.domain.CarMessage;
|
||||||
import com.god.data.service.EventService;
|
import com.god.data.service.EventService;
|
||||||
|
import com.god.data.strategy.FaultCodeStrategy;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
@ -20,6 +22,13 @@ import java.util.List;
|
||||||
@Service(value = "FaultAlarm")
|
@Service(value = "FaultAlarm")
|
||||||
@Log4j2
|
@Log4j2
|
||||||
public class FaultAlarmEvent implements EventService {
|
public class FaultAlarmEvent implements EventService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 注册码策略
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private FaultCodeStrategy faultCodeStrategy;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RedisService redisService;
|
private RedisService redisService;
|
||||||
|
|
||||||
|
@ -35,73 +44,21 @@ public class FaultAlarmEvent implements EventService {
|
||||||
@Override
|
@Override
|
||||||
public void execute(CarMessage carMessage) {
|
public void execute(CarMessage carMessage) {
|
||||||
log.info("故障报警事件执行");
|
log.info("故障报警事件执行");
|
||||||
HashMap<String, List<String>> stringListHashMap = new HashMap<>();
|
|
||||||
|
|
||||||
//创建集合存故障码
|
//创建集合存故障码
|
||||||
ArrayList<String> strings = new ArrayList<>();
|
ArrayList<String> strings = new ArrayList<>();
|
||||||
//判断车辆目前的报错故障,添加对应的故障码
|
faultCodeStrategy.addFaultCodeIfNecessary(carMessage,strings);
|
||||||
if (carMessage.getVehicleStatus()==1){
|
|
||||||
strings.add("GTX001");
|
|
||||||
}
|
|
||||||
if (carMessage.getChargingStatus()==1){
|
|
||||||
strings.add("GTX002");
|
|
||||||
}
|
|
||||||
if (carMessage.getOperatingStatus()==1){
|
|
||||||
strings.add("GTX003");
|
|
||||||
}
|
|
||||||
if (carMessage.getSocStatus()==1){
|
|
||||||
strings.add("GTX004");
|
|
||||||
}
|
|
||||||
if (carMessage.getChargingEnergyStorageStatus()==1){
|
|
||||||
strings.add("GTX005");
|
|
||||||
}
|
|
||||||
if (carMessage.getDriveMotorStatus()==1){
|
|
||||||
strings.add("GTX006");
|
|
||||||
}
|
|
||||||
if (carMessage.getPositionStatus()==1){
|
|
||||||
strings.add("GTX007");
|
|
||||||
}
|
|
||||||
if (carMessage.getEasStatus()==1){
|
|
||||||
strings.add("GTO002");
|
|
||||||
}
|
|
||||||
if (carMessage.getPtcStatus()==1){
|
|
||||||
strings.add("GTO003");
|
|
||||||
}
|
|
||||||
if (carMessage.getEpsStatus()==1){
|
|
||||||
strings.add("GTO005");
|
|
||||||
}
|
|
||||||
if (carMessage.getAbsStatus()==1){
|
|
||||||
strings.add("GTO007");
|
|
||||||
}
|
|
||||||
if (carMessage.getMcuStatus()==1){
|
|
||||||
strings.add("GTO008");
|
|
||||||
}
|
|
||||||
if (carMessage.getHeatingStatus()==1){
|
|
||||||
strings.add("GTB001");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (carMessage.getBatteryStatus()==1){
|
|
||||||
strings.add("GTB002");
|
|
||||||
}
|
|
||||||
if (carMessage.getBatteryInsulationStatus()==1){
|
|
||||||
strings.add("GTB003");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (carMessage.getDcdcStatus()==1){
|
|
||||||
strings.add("GTO004");
|
|
||||||
}
|
|
||||||
if (carMessage.getChgStatus()==1){
|
|
||||||
strings.add("GTO006");
|
|
||||||
}
|
|
||||||
|
|
||||||
//把对应的故障码集合存入rabbitmq
|
//把对应的故障码集合存入rabbitmq
|
||||||
if (strings.size()>0){
|
if (!strings.isEmpty()){
|
||||||
|
strings.forEach(obj -> {
|
||||||
|
BreakConstant breakConstant = BreakConstant.valueOf(obj);
|
||||||
|
String value = breakConstant.value();
|
||||||
|
});
|
||||||
rabbitTemplate.convertAndSend("god.car.fault.alarm",strings);
|
rabbitTemplate.convertAndSend("god.car.fault.alarm",strings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void remove(String event) {
|
public void remove(String event) {
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ public class RealTimeTrajectoryEvent implements EventService {
|
||||||
/**
|
/**
|
||||||
* 实时轨迹标识
|
* 实时轨迹标识
|
||||||
*/
|
*/
|
||||||
public static final String LOCUS = "locus";
|
public static final String ALL_LOCUS_INFO = "all_locus_info";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加时间
|
* 添加时间
|
||||||
|
@ -59,11 +59,10 @@ public class RealTimeTrajectoryEvent implements EventService {
|
||||||
bigDecimals.add(carMessage.getLongitude());
|
bigDecimals.add(carMessage.getLongitude());
|
||||||
bigDecimals.add(carMessage.getLatitude());
|
bigDecimals.add(carMessage.getLatitude());
|
||||||
//预防redis空值 避免查询不存在的key返回导致无法操作
|
//预防redis空值 避免查询不存在的key返回导致无法操作
|
||||||
if (redisService.hasKey(LOCUS + carMessage.getVin())){//vin轨迹的键存在
|
if (redisService.hasKey(ALL_LOCUS_INFO)){//vin轨迹的键存在
|
||||||
//获取键 对应的 值
|
//获取键 对应的 值
|
||||||
Map<String, Object> cacheMap = redisService.getCacheMap(LOCUS + carMessage.getVin());
|
Map<String, Object> cacheMap = redisService.getCacheMap(ALL_LOCUS_INFO);
|
||||||
//前端需要格式 [ [..] , [..] ] 所以需要再次新建一个集合来存之前的集合
|
//前端需要格式 [ [..] , [..] ] 所以需要再次新建一个集合来存之前的集合
|
||||||
|
|
||||||
ArrayList<ArrayList<BigDecimal>> orDefault = (ArrayList<ArrayList<BigDecimal>>) cacheMap.getOrDefault(carMessage.getVin(), new ArrayList<ArrayList<BigDecimal>>());
|
ArrayList<ArrayList<BigDecimal>> orDefault = (ArrayList<ArrayList<BigDecimal>>) cacheMap.getOrDefault(carMessage.getVin(), new ArrayList<ArrayList<BigDecimal>>());
|
||||||
addLocusRedisInfo(cacheMap,
|
addLocusRedisInfo(cacheMap,
|
||||||
orDefault,
|
orDefault,
|
||||||
|
@ -91,7 +90,7 @@ public class RealTimeTrajectoryEvent implements EventService {
|
||||||
String vin) {
|
String vin) {
|
||||||
lists.add(list);
|
lists.add(list);
|
||||||
map.put(vin,lists);
|
map.put(vin,lists);
|
||||||
redisService.setCacheMap(LOCUS + vin,map);
|
redisService.setCacheMap(ALL_LOCUS_INFO,map);
|
||||||
log.info("实时轨迹事件执行");
|
log.info("实时轨迹事件执行");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.god.data.strategy;
|
||||||
|
|
||||||
|
import com.god.data.common.domain.CarMessage;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description:
|
||||||
|
*
|
||||||
|
* @Author: sun-cool-boy
|
||||||
|
* @Date: 2023/12/4
|
||||||
|
* @info: 故障码策略模式
|
||||||
|
*/
|
||||||
|
public interface FaultCodeStrategy {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 故障码具体实现
|
||||||
|
* @param carMessage
|
||||||
|
* @param faultCodes
|
||||||
|
*/
|
||||||
|
void addFaultCodeIfNecessary(CarMessage carMessage, ArrayList<String> faultCodes);
|
||||||
|
}
|
|
@ -0,0 +1,75 @@
|
||||||
|
package com.god.data.strategy.impl;
|
||||||
|
|
||||||
|
import com.god.data.common.domain.CarMessage;
|
||||||
|
import com.god.data.strategy.FaultCodeStrategy;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description:
|
||||||
|
*
|
||||||
|
* @Author: sun-cool-boy
|
||||||
|
* @Date: 2023/12/4
|
||||||
|
* @info: 故障码策略实现类
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class FaultCodeStrategyImpl implements FaultCodeStrategy {
|
||||||
|
@Override
|
||||||
|
public void addFaultCodeIfNecessary(CarMessage carMessage, ArrayList<String> strings) {
|
||||||
|
//判断车辆目前的报错故障,添加对应的故障码
|
||||||
|
if (carMessage.getVehicleStatus()==1){
|
||||||
|
strings.add("GTX001");
|
||||||
|
}
|
||||||
|
if (carMessage.getChargingStatus()==1){
|
||||||
|
strings.add("GTX002");
|
||||||
|
}
|
||||||
|
if (carMessage.getOperatingStatus()==1){
|
||||||
|
strings.add("GTX003");
|
||||||
|
}
|
||||||
|
if (carMessage.getSocStatus()==1){
|
||||||
|
strings.add("GTX004");
|
||||||
|
}
|
||||||
|
if (carMessage.getChargingEnergyStorageStatus()==1){
|
||||||
|
strings.add("GTX005");
|
||||||
|
}
|
||||||
|
if (carMessage.getDriveMotorStatus()==1){
|
||||||
|
strings.add("GTX006");
|
||||||
|
}
|
||||||
|
if (carMessage.getPositionStatus()==1){
|
||||||
|
strings.add("GTX007");
|
||||||
|
}
|
||||||
|
if (carMessage.getEasStatus()==1){
|
||||||
|
strings.add("GTO002");
|
||||||
|
}
|
||||||
|
if (carMessage.getPtcStatus()==1){
|
||||||
|
strings.add("GTO003");
|
||||||
|
}
|
||||||
|
if (carMessage.getEpsStatus()==1){
|
||||||
|
strings.add("GTO005");
|
||||||
|
}
|
||||||
|
if (carMessage.getAbsStatus()==1){
|
||||||
|
strings.add("GTO007");
|
||||||
|
}
|
||||||
|
if (carMessage.getMcuStatus()==1){
|
||||||
|
strings.add("GTO008");
|
||||||
|
}
|
||||||
|
if (carMessage.getHeatingStatus()==1){
|
||||||
|
strings.add("GTB001");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (carMessage.getBatteryStatus()==1){
|
||||||
|
strings.add("GTB002");
|
||||||
|
}
|
||||||
|
if (carMessage.getBatteryInsulationStatus()==1){
|
||||||
|
strings.add("GTB003");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (carMessage.getDcdcStatus()==1){
|
||||||
|
strings.add("GTO004");
|
||||||
|
}
|
||||||
|
if (carMessage.getChgStatus()==1){
|
||||||
|
strings.add("GTO006");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -26,10 +26,7 @@ public class SJZTest {
|
||||||
* 实时轨迹存储
|
* 实时轨迹存储
|
||||||
*/
|
*/
|
||||||
public static final String ALL_LOCUS_INFO = "all_locus_info";
|
public static final String ALL_LOCUS_INFO = "all_locus_info";
|
||||||
/**
|
|
||||||
* 实时轨迹标识
|
|
||||||
*/
|
|
||||||
public static final String LOCUS = "locus";
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RedisService redisService;
|
private RedisService redisService;
|
||||||
|
@ -99,6 +96,59 @@ public class SJZTest {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test3(){
|
||||||
|
CarMessage one = CarMessage.builder()
|
||||||
|
.vin("vin123")
|
||||||
|
.longitude(BigDecimal.valueOf(22.4512439))
|
||||||
|
.latitude(BigDecimal.valueOf(23.49785))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
CarMessage two = CarMessage.builder()
|
||||||
|
.vin("vin123")
|
||||||
|
.longitude(BigDecimal.valueOf(44.91230))
|
||||||
|
.latitude(BigDecimal.valueOf(55.45456))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
CarMessage three = CarMessage.builder()
|
||||||
|
.vin("vin123")
|
||||||
|
.longitude(BigDecimal.valueOf(100.41235))
|
||||||
|
.latitude(BigDecimal.valueOf(100.41235))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
ArrayList<CarMessage> list = new ArrayList<>();
|
||||||
|
list.add(one);
|
||||||
|
list.add(two);
|
||||||
|
list.add(three);
|
||||||
|
for (CarMessage carMessage : list) {
|
||||||
|
//新建一个用于存经纬度的集合 保存精度和维度
|
||||||
|
ArrayList<BigDecimal> bigDecimals = new ArrayList<>();
|
||||||
|
bigDecimals.add(carMessage.getLongitude());
|
||||||
|
bigDecimals.add(carMessage.getLatitude());
|
||||||
|
if (redisService.hasKey(ALL_LOCUS_INFO)){//vin轨迹的键存在
|
||||||
|
//获取键 对应的 值
|
||||||
|
Map<String, Object> cacheMap = redisService.getCacheMap(ALL_LOCUS_INFO);
|
||||||
|
//前端需要格式 [ [..] , [..] ] 所以需要再次新建一个集合来存之前的集合
|
||||||
|
ArrayList<ArrayList<BigDecimal>> orDefault = (ArrayList<ArrayList<BigDecimal>>) cacheMap.getOrDefault(carMessage.getVin(), new ArrayList<ArrayList<BigDecimal>>());
|
||||||
|
addLocusRedisInfo(cacheMap,
|
||||||
|
orDefault,
|
||||||
|
bigDecimals,
|
||||||
|
carMessage.getVin());
|
||||||
|
}else {
|
||||||
|
//代表当前vin没有实时轨迹相关数据 直接新建集合存储即可
|
||||||
|
addLocusRedisInfo(new HashMap<>(),
|
||||||
|
new ArrayList<>(),
|
||||||
|
bigDecimals,
|
||||||
|
carMessage.getVin());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void addLocusRedisInfo(Map<String, Object> map,
|
private void addLocusRedisInfo(Map<String, Object> map,
|
||||||
ArrayList<ArrayList<BigDecimal>> lists,
|
ArrayList<ArrayList<BigDecimal>> lists,
|
||||||
ArrayList<BigDecimal> list,
|
ArrayList<BigDecimal> list,
|
||||||
|
|
Loading…
Reference in New Issue