diff --git a/mqttx_53f082e9-tcp111229331941883/.lck b/mqttx_53f082e9-tcp111229331941883/.lck
new file mode 100644
index 0000000..e69de29
diff --git a/zhilian-auth/src/main/resources/bootstrap.yml b/zhilian-auth/src/main/resources/bootstrap.yml
index 94f1a14..f0725a8 100644
--- a/zhilian-auth/src/main/resources/bootstrap.yml
+++ b/zhilian-auth/src/main/resources/bootstrap.yml
@@ -15,9 +15,11 @@ spring:
discovery:
# 服务注册地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
config:
# 配置中心地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
# 配置文件格式
file-extension: yml
# 共享配置
diff --git a/zhilian-common/pom.xml b/zhilian-common/pom.xml
index c126378..c85d8ec 100644
--- a/zhilian-common/pom.xml
+++ b/zhilian-common/pom.xml
@@ -20,6 +20,7 @@
zhilian-common-system
zhilian-common-resolver
zhilian-common-business
+ zhilian-common-event
zhilian-common
diff --git a/zhilian-common/zhilian-common-event/pom.xml b/zhilian-common/zhilian-common-event/pom.xml
new file mode 100644
index 0000000..25d92a9
--- /dev/null
+++ b/zhilian-common/zhilian-common-event/pom.xml
@@ -0,0 +1,27 @@
+
+
+ 4.0.0
+
+ com.zhilian
+ zhilian-common
+ 3.6.3
+
+
+ zhilian-common-event
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+ com.zhilian
+ zhilian-common-redis
+
+
+
+
diff --git a/zhilian-common/zhilian-common-event/src/main/java/com/zhilian/common/event/VehicleEventCache.java b/zhilian-common/zhilian-common-event/src/main/java/com/zhilian/common/event/VehicleEventCache.java
new file mode 100644
index 0000000..7653ab5
--- /dev/null
+++ b/zhilian-common/zhilian-common-event/src/main/java/com/zhilian/common/event/VehicleEventCache.java
@@ -0,0 +1,18 @@
+package com.zhilian.common.event;
+
+import com.zhilian.common.redis.service.RedisService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class VehicleEventCache {
+ @Autowired
+ private RedisService redisService;
+
+ public String encode(String vin){
+ return "event:arr"+vin;
+
+ }
+
+ public void addEvent(String vin ,String eventName){
+ redisService.setCacheSet(encode(vin),eventName);
+ }
+}
diff --git a/zhilian-common/zhilian-common-event/src/main/java/com/zhilian/common/event/VehicleEventConstants.java b/zhilian-common/zhilian-common-event/src/main/java/com/zhilian/common/event/VehicleEventConstants.java
new file mode 100644
index 0000000..f7d42b0
--- /dev/null
+++ b/zhilian-common/zhilian-common-event/src/main/java/com/zhilian/common/event/VehicleEventConstants.java
@@ -0,0 +1,4 @@
+package com.zhilian.common.event;
+
+public interface VehicleEventConstants {
+}
diff --git a/zhilian-common/zhilian-common-event/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/zhilian-common/zhilian-common-event/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..dfb1b95
--- /dev/null
+++ b/zhilian-common/zhilian-common-event/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.zhilian.common.event.VehicleEventCache
diff --git a/zhilian-common/zhilian-common-redis/src/main/java/com/zhilian/common/redis/service/RedisService.java b/zhilian-common/zhilian-common-redis/src/main/java/com/zhilian/common/redis/service/RedisService.java
index 397c440..1b21a4e 100644
--- a/zhilian-common/zhilian-common-redis/src/main/java/com/zhilian/common/redis/service/RedisService.java
+++ b/zhilian-common/zhilian-common-redis/src/main/java/com/zhilian/common/redis/service/RedisService.java
@@ -154,6 +154,19 @@ public class RedisService {
return setOperation;
}
+ /**
+ * 缓存Set
+ *
+ * @param key 缓存键值
+ * @param setValue 缓存的数据
+ * @return 缓存数据的对象
+ */
+ public BoundSetOperations setCacheSet(final String key, final T setValue) {
+ BoundSetOperations setOperation = redisTemplate.boundSetOps(key);
+ setOperation.add(setValue);
+ return setOperation;
+ }
+
/**
* 获得缓存的set
*
diff --git a/zhilian-common/zhilian-common-resolver/src/main/java/com/zhilian/common/resolver/domain/ErrorCar.java b/zhilian-common/zhilian-common-resolver/src/main/java/com/zhilian/common/resolver/domain/ErrorCar.java
new file mode 100644
index 0000000..2a7fa82
--- /dev/null
+++ b/zhilian-common/zhilian-common-resolver/src/main/java/com/zhilian/common/resolver/domain/ErrorCar.java
@@ -0,0 +1,23 @@
+package com.zhilian.common.resolver.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @ClassName ErrorCar
+ * @Description 描述
+ * @Author Can.J
+ * @Date 2024/4/8 12:50
+ */
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class ErrorCar {
+
+ private Long id;
+ private String vin;
+ private String code;
+ private int level;
+
+}
diff --git a/zhilian-gateway/src/main/resources/bootstrap.yml b/zhilian-gateway/src/main/resources/bootstrap.yml
index b426d9a..a670f31 100644
--- a/zhilian-gateway/src/main/resources/bootstrap.yml
+++ b/zhilian-gateway/src/main/resources/bootstrap.yml
@@ -15,9 +15,11 @@ spring:
discovery:
# 服务注册地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
config:
# 配置中心地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
# 配置文件格式
file-extension: yml
# 共享配置
@@ -38,3 +40,4 @@ spring:
groupId: DEFAULT_GROUP
data-type: json
rule-type: gw-flow
+
diff --git a/zhilian-modules/zhilian-business/src/main/resources/bootstrap.yml b/zhilian-modules/zhilian-business/src/main/resources/bootstrap.yml
index 2339518..1105c2a 100644
--- a/zhilian-modules/zhilian-business/src/main/resources/bootstrap.yml
+++ b/zhilian-modules/zhilian-business/src/main/resources/bootstrap.yml
@@ -15,9 +15,11 @@ spring:
discovery:
# 服务注册地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
config:
# 配置中心地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
# 配置文件格式
file-extension: yml
# 共享配置
diff --git a/zhilian-modules/zhilian-file/src/main/resources/bootstrap.yml b/zhilian-modules/zhilian-file/src/main/resources/bootstrap.yml
index 415c871..9522161 100644
--- a/zhilian-modules/zhilian-file/src/main/resources/bootstrap.yml
+++ b/zhilian-modules/zhilian-file/src/main/resources/bootstrap.yml
@@ -15,9 +15,11 @@ spring:
discovery:
# 服务注册地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
config:
# 配置中心地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
# 配置文件格式
file-extension: yml
# 共享配置
diff --git a/zhilian-modules/zhilian-gen/src/main/resources/bootstrap.yml b/zhilian-modules/zhilian-gen/src/main/resources/bootstrap.yml
index e6ae61a..b9c8fb0 100644
--- a/zhilian-modules/zhilian-gen/src/main/resources/bootstrap.yml
+++ b/zhilian-modules/zhilian-gen/src/main/resources/bootstrap.yml
@@ -15,9 +15,11 @@ spring:
discovery:
# 服务注册地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
config:
# 配置中心地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
# 配置文件格式
file-extension: yml
# 共享配置
diff --git a/zhilian-modules/zhilian-job/src/main/resources/bootstrap.yml b/zhilian-modules/zhilian-job/src/main/resources/bootstrap.yml
index 1833882..510d6bb 100644
--- a/zhilian-modules/zhilian-job/src/main/resources/bootstrap.yml
+++ b/zhilian-modules/zhilian-job/src/main/resources/bootstrap.yml
@@ -15,9 +15,11 @@ spring:
discovery:
# 服务注册地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
config:
# 配置中心地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
# 配置文件格式
file-extension: yml
# 共享配置
diff --git a/zhilian-modules/zhilian-manager/src/main/resources/bootstrap.yml b/zhilian-modules/zhilian-manager/src/main/resources/bootstrap.yml
index 28c6815..9fc2b73 100644
--- a/zhilian-modules/zhilian-manager/src/main/resources/bootstrap.yml
+++ b/zhilian-modules/zhilian-manager/src/main/resources/bootstrap.yml
@@ -15,9 +15,11 @@ spring:
discovery:
# 服务注册地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
config:
# 配置中心地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
# 配置文件格式
file-extension: yml
# 共享配置
diff --git a/zhilian-modules/zhilian-online/src/main/resources/bootstrap.yml b/zhilian-modules/zhilian-online/src/main/resources/bootstrap.yml
index b1662f9..452f88f 100644
--- a/zhilian-modules/zhilian-online/src/main/resources/bootstrap.yml
+++ b/zhilian-modules/zhilian-online/src/main/resources/bootstrap.yml
@@ -15,9 +15,11 @@ spring:
discovery:
# 服务注册地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
config:
# 配置中心地址
server-addr: 10.10.25.2:8848
+ namespace: 9d9e22dc-ff70-42c5-adac-fa69e6d62dbe
# 配置文件格式
file-extension: yml
# 共享配置
diff --git a/zhilian-modules/zhilian-resolver/pom.xml b/zhilian-modules/zhilian-resolver/pom.xml
index e7872c7..c470151 100644
--- a/zhilian-modules/zhilian-resolver/pom.xml
+++ b/zhilian-modules/zhilian-resolver/pom.xml
@@ -117,6 +117,10 @@
org.eclipse.paho
org.eclipse.paho.client.mqttv3
+
+ com.zhilian
+ zhilian-common-business
+
diff --git a/zhilian-modules/zhilian-resolver/src/main/java/com/zhilian/resolver/ZhiLianResolverApplication.java b/zhilian-modules/zhilian-resolver/src/main/java/com/zhilian/resolver/ZhiLianResolverApplication.java
new file mode 100644
index 0000000..f01ea12
--- /dev/null
+++ b/zhilian-modules/zhilian-resolver/src/main/java/com/zhilian/resolver/ZhiLianResolverApplication.java
@@ -0,0 +1,19 @@
+package com.zhilian.resolver;
+
+import com.zhilian.common.security.annotation.EnableMyFeignClients;
+import com.zhilian.common.swagger.annotation.EnableCustomSwagger2;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+@EnableCustomSwagger2
+@EnableScheduling
+@EnableMyFeignClients
+@MapperScan({"com.zhilian.resolver.mapper", "com.zhilian.resolver.resolverReport"})
+@SpringBootApplication
+public class ZhiLianResolverApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(ZhiLianResolverApplication.class, args);
+ }
+}
diff --git a/zhilian-modules/zhilian-resolver/src/main/java/com/zhilian/resolver/service/impl/eventGeofence/GeofenceEventServiceImpl.java b/zhilian-modules/zhilian-resolver/src/main/java/com/zhilian/resolver/service/impl/eventGeofence/GeofenceEventServiceImpl.java
index 83df6b8..f90dc91 100644
--- a/zhilian-modules/zhilian-resolver/src/main/java/com/zhilian/resolver/service/impl/eventGeofence/GeofenceEventServiceImpl.java
+++ b/zhilian-modules/zhilian-resolver/src/main/java/com/zhilian/resolver/service/impl/eventGeofence/GeofenceEventServiceImpl.java
@@ -1,10 +1,18 @@
package com.zhilian.resolver.service.impl.eventGeofence;
+import com.zhilian.business.domain.Fence;
+import com.zhilian.business.domain.vo.FenceVo;
import com.zhilian.common.resolver.domain.ResolverReportData;
import com.zhilian.resolver.service.ResolverEventService;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.Arrays;
+import java.util.List;
+
+import static java.lang.Double.parseDouble;
+
/**
* @ClassName GeofenceEventServiceImpl
* @Description 电子围栏事件
@@ -14,14 +22,68 @@ import org.springframework.stereotype.Service;
@Slf4j
@Service("geofence")
public class GeofenceEventServiceImpl implements ResolverEventService {
+// @Autowired
+// private FenceMapper fenceMapper;
@Override
public void execute(ResolverReportData resolverReportData) {
+ log.info("电子围挡执行");
+ String vin = resolverReportData.getVin();
+ log.info("vin :"+vin);
+ //经度
+ double pointLng = parseDouble(resolverReportData.getLongitude());
+ //维度
+ double pointLat = parseDouble(resolverReportData.getLatitude());
+ FenceVo fenceVo = new FenceVo();
+// List list=fenceMapper.fenceList(fenceVo);
+//
+// for (Fence fence : list) {
+// if (fence.getVin().equals(vin)){
+// String[] split = fence.getFenceMessage().split(";");
+//
+// boolean withinFence = isWithinFence(pointLat, pointLng, Arrays.asList(split));
+//
+// if(withinFence){
+// log.info("在围栏内");
+// }else {
+// log.error("不在围栏内");
+// }
+// }
+// }
+ log.info("电子围挡结束");
}
@Override
public String getEventName() {
return "geofence";
}
+
+ public boolean isWithinFence(double pointLat, double pointLng, List split){
+ if(split.size()<4){
+ throw new IllegalArgumentException("不符合条件");
+ }
+
+ double[] longitudes = new double[4];
+ double[] latitudes = new double[4];
+
+ for (int i = 0; i < 4; i++) {
+ String[] coordinates = split.get(i).split(",");
+ latitudes[i] = parseDouble(coordinates[0]);
+ longitudes[i] = parseDouble(coordinates[1]);
+ }
+
+ return isPointInRectangle(pointLat,pointLat,latitudes,longitudes);
+ }
+
+ private boolean isPointInRectangle(double pointLat, double pointLng, double[] latitudes, double[] longitudes) {
+ // 根据矩形顶点顺序确定最小和最大纬度、经度
+ double minLatitude = Arrays.stream(latitudes).min().orElseThrow();
+ double maxLatitude = Arrays.stream(latitudes).max().orElseThrow();
+ double minLongitude = Arrays.stream(longitudes).min().orElseThrow();
+ double maxLongitude = Arrays.stream(longitudes).max().orElseThrow();
+
+ return pointLat >= minLatitude && pointLat <= maxLatitude &&
+ pointLng >= minLongitude && pointLng <= maxLongitude;
+ }
}
diff --git a/zhilian-modules/zhilian-resolver/src/main/java/com/zhilian/resolver/service/impl/eventMalfunction/MalfunctionEventServiceImpl.java b/zhilian-modules/zhilian-resolver/src/main/java/com/zhilian/resolver/service/impl/eventMalfunction/MalfunctionEventServiceImpl.java
index 08ff2cf..d776606 100644
--- a/zhilian-modules/zhilian-resolver/src/main/java/com/zhilian/resolver/service/impl/eventMalfunction/MalfunctionEventServiceImpl.java
+++ b/zhilian-modules/zhilian-resolver/src/main/java/com/zhilian/resolver/service/impl/eventMalfunction/MalfunctionEventServiceImpl.java
@@ -1,5 +1,8 @@
package com.zhilian.resolver.service.impl.eventMalfunction;
+import com.alibaba.fastjson.JSON;
+import com.zhilian.common.redis.service.RedisService;
+import com.zhilian.common.resolver.domain.ErrorCar;
import com.zhilian.common.resolver.domain.ResolverReportData;
import com.zhilian.common.resolver.domain.SysUserEnhancedServices;
import com.zhilian.resolver.mapper.UserMapper;
@@ -9,6 +12,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.concurrent.TimeUnit;
+
/**
* @ClassName MalfunctionEventServiceImpl
* @Description 故障事件服务
@@ -18,6 +23,8 @@ import org.springframework.stereotype.Service;
@Slf4j
@Service("malfunction")
public class MalfunctionEventServiceImpl implements ResolverEventService {
+ @Autowired
+ private RedisService redisService;
/**
* 获取用信息 模拟故障
@@ -34,16 +41,108 @@ public class MalfunctionEventServiceImpl implements ResolverEventService {
@Override
public void execute(ResolverReportData vehicleData) {
log.info("故障事件开始执行");
-
- //模拟故障 获取用户信息
- for (SysUserEnhancedServices userEnhancedService : userMapper.getUserEnhancedServices()) {
- if(userEnhancedService.getEnhancedServicesId()==3 && userEnhancedService.getUseId()==102){
if(isAnyFieldZero(vehicleData)){
resolverReportInfoService.saveDataToDatabaseByMalfunction(vehicleData);
- }
- }
- }
+
+ ErrorCar errorCar = new ErrorCar();
+ errorCar.setVin(vehicleData.getVin());
+ // * 车辆状态 1:正常 0:故障
+ if(vehicleData.getVehicleStatus()==0){
+ errorCar.setCode("GZ001");
+ errorCar.setLevel(1);
+ }
+
+ // * 充电状态 1:正常 0:故障
+ // private int chargingStatus;
+ if(vehicleData.getChargingStatus()==0){
+ errorCar.setCode("GZ001");
+ errorCar.setLevel(1);
+ }
+
+ // * 运行状态 1:正常 0:故障
+ if(vehicleData.getOperatingStatus()==0){
+ errorCar.setCode("GZ002");
+ errorCar.setLevel(3);
+ }
+
+ // * SOC 状态 1:正常 0:故障
+ if(vehicleData.getSocStatus()==0){
+ errorCar.setCode("GZ003");
+ errorCar.setLevel(3);
+ }
+ //
+ // /**
+ // * 可充电储能装置工作状态 1:正常 0:故障
+ // */
+ // private int chargingEnergyStorageStatus;
+ //
+ // /**
+ // * 驱动电机状态 1:正常 0:故障
+ // */
+ // private int driveMotorStatus;
+ //
+ // /**
+ // * 定位是否有效 1:有效 0:无效
+ // */
+ // private int positionStatus;
+ //
+ // /**
+ // * EAS(汽车防盗系统)状态 1:正常 0:故障
+ // */
+ // private int easStatus;
+ //
+ // /**
+ // * PTC(电动加热器)状态 1:正常 0:故障
+ // */
+ // private int ptcStatus;
+ //
+ // /**
+ // * EPS(电动助力系统)状态 1:正常 0:故障
+ // */
+ // private int epsStatus;
+ //
+ // /**
+ // * ABS(防抱死)状态 1:正常 0:故障
+ // */
+ // private int absStatus;
+ //
+ // /**
+ // * MCU(电机/逆变器)状态 1:正常 0:故障
+ // */
+ // private int mcuStatus;
+ //
+ // /**
+ // * 动力电池加热状态 1:正常 0:故障
+ // */
+ // private int heatingStatus;
+ //
+ // /**
+ // * 动力电池当前状态 1:正常 0:故障
+ // */
+ // private int batteryStatus;
+ //
+ // /**
+ // * 动力电池保温状态 1:正常 0:故障
+ // */
+ // private int batteryInsulationStatus;
+ //
+ // /**
+ // * DCDC(电力交换系统) 状态 1:正常 0:故障
+ // */
+ // private int dcdcStatus;
+ //
+ // /**
+ // * CHG(充电机)状态 1:正常 0:故障
+ // */
+ // private int chgStatus;
+ String key = "breakdown";
+ String value = JSON.toJSONString(errorCar);
+ redisService.setCacheObject(key,value);
+ long expireTime = 30;
+ redisService.expire(key, expireTime, TimeUnit.MINUTES);
+
+ }
log.info("故障事件结束");
@@ -67,6 +166,7 @@ public class MalfunctionEventServiceImpl implements ResolverEventService {
resolverReportData.getBatteryInsulationStatus() == 0 ||
resolverReportData.getDcdcStatus() == 0 ||
resolverReportData.getChgStatus() == 0;
+
}
@Override
public String getEventName() {
diff --git a/zhilian-modules/zhilian-resolver/src/main/java/com/zhilian/resolver/service/impl/eventStorage/StorageEventServiceImpl.java b/zhilian-modules/zhilian-resolver/src/main/java/com/zhilian/resolver/service/impl/eventStorage/StorageEventServiceImpl.java
index 747753a..5053449 100644
--- a/zhilian-modules/zhilian-resolver/src/main/java/com/zhilian/resolver/service/impl/eventStorage/StorageEventServiceImpl.java
+++ b/zhilian-modules/zhilian-resolver/src/main/java/com/zhilian/resolver/service/impl/eventStorage/StorageEventServiceImpl.java
@@ -25,16 +25,7 @@ public class StorageEventServiceImpl implements ResolverEventService {
@Override
public void execute(ResolverReportData vehicleData) {
log.info("开始存储");
-
- //模拟 用户userid 100 事件1(存储事件)
- for (SysUserEnhancedServices userEnhancedService : userMapper.getUserEnhancedServices()) {
- //userId 事件编号 客户
- //100 1 客户100-增值服务 存储事件
- if(userEnhancedService.getEnhancedServicesId()==1 && userEnhancedService.getUseId()==100){
resolverReportInfoService.saveDataToDatabase(vehicleData);
- }
- }
-
log.info("结束存储");
}