lineNums = new HashMap<>();
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
index c5fa1f5..c8ea1ed 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
@@ -10,13 +10,14 @@
/**
* @ClassName AlarmStrategyContext
- * @Description 上下文
+ * @Description 告警上下文 执行策略验证
* @Author lwh
* @Date 2021/3/5 15:46
* @Version 1.0
*/
public class AlarmStrategyContext {
+
private List strategies = new ArrayList<>();
/**
@@ -38,6 +39,7 @@
* @param strategy
*/
public void addStrategy(BaseAlarmStrategy strategy) {
+ strategy.setContext(this);
strategies.add(strategy);
}
}
diff --git a/casic-service-car/pom.xml b/casic-service-car/pom.xml
index d4c871e..8eb42ae 100644
--- a/casic-service-car/pom.xml
+++ b/casic-service-car/pom.xml
@@ -28,9 +28,33 @@
casic-admin-support
${admin.version}
-
+
+ com.casic
+ casic-car-support
+ 1.0.0
+
+
+ com.casic
+ casic-car-base
+ 1.0.0
+
+
+ com.casic
+ casic-car-position
+ 1.0.0
+
+
+ com.casic
+ casic-data-es
+ ${admin.version}
+
+
+ com.casic
+ casic-data-support
+ ${admin.version}
+
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
index f4638d8..71c4c9e 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
@@ -1,5 +1,10 @@
package com.casic.missiles.modular.system.alarm.dto;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @ClassName RouteInfoDTO
* @Description 车辆信息数据
@@ -7,5 +12,7 @@
* @Date 2021/3/5 16:38
* @Version 1.0
*/
+@Data
public class RouteInfoDTO {
+ private Map lineNums = new HashMap<>();
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
index c5fa1f5..c8ea1ed 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
@@ -10,13 +10,14 @@
/**
* @ClassName AlarmStrategyContext
- * @Description 上下文
+ * @Description 告警上下文 执行策略验证
* @Author lwh
* @Date 2021/3/5 15:46
* @Version 1.0
*/
public class AlarmStrategyContext {
+
private List strategies = new ArrayList<>();
/**
@@ -38,6 +39,7 @@
* @param strategy
*/
public void addStrategy(BaseAlarmStrategy strategy) {
+ strategy.setContext(this);
strategies.add(strategy);
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
index 6903de7..2682c26 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
@@ -1,25 +1,32 @@
package com.casic.missiles.modular.system.alarm.strategy;
import com.casic.missiles.core.base.response.ResponseData;
-import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
import com.casic.missiles.modular.system.alarm.dto.PostionDTO;
import com.casic.missiles.modular.system.alarm.dto.RouteInfoDTO;
+import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
+
+import java.util.HashMap;
+import java.util.Map;
/**
* @ClassName TrajectoryTimeAlarmStrategy
- * @Description 车辆轨迹巡查 作业次数巡查
+ * @Description 车辆轨迹巡查 作业次数巡查(时间间隔出现在线段中某个点附近的次数,同时根据点位)
* @Author lwh
* @Date 2021/3/5 16:37
* @Version 1.0
*/
public class TrajectoryTimeAlarmStrategy extends BaseAlarmStrategy {
+
+
+
/**
* @param data 校验数据
* @return
*/
@Override
public ResponseData processHandler(AlarmProcessDTO data) {
+ //
return null;
}
}
diff --git a/casic-service-car/pom.xml b/casic-service-car/pom.xml
index d4c871e..8eb42ae 100644
--- a/casic-service-car/pom.xml
+++ b/casic-service-car/pom.xml
@@ -28,9 +28,33 @@
casic-admin-support
${admin.version}
-
+
+ com.casic
+ casic-car-support
+ 1.0.0
+
+
+ com.casic
+ casic-car-base
+ 1.0.0
+
+
+ com.casic
+ casic-car-position
+ 1.0.0
+
+
+ com.casic
+ casic-data-es
+ ${admin.version}
+
+
+ com.casic
+ casic-data-support
+ ${admin.version}
+
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
index f4638d8..71c4c9e 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
@@ -1,5 +1,10 @@
package com.casic.missiles.modular.system.alarm.dto;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @ClassName RouteInfoDTO
* @Description 车辆信息数据
@@ -7,5 +12,7 @@
* @Date 2021/3/5 16:38
* @Version 1.0
*/
+@Data
public class RouteInfoDTO {
+ private Map lineNums = new HashMap<>();
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
index c5fa1f5..c8ea1ed 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
@@ -10,13 +10,14 @@
/**
* @ClassName AlarmStrategyContext
- * @Description 上下文
+ * @Description 告警上下文 执行策略验证
* @Author lwh
* @Date 2021/3/5 15:46
* @Version 1.0
*/
public class AlarmStrategyContext {
+
private List strategies = new ArrayList<>();
/**
@@ -38,6 +39,7 @@
* @param strategy
*/
public void addStrategy(BaseAlarmStrategy strategy) {
+ strategy.setContext(this);
strategies.add(strategy);
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
index 6903de7..2682c26 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
@@ -1,25 +1,32 @@
package com.casic.missiles.modular.system.alarm.strategy;
import com.casic.missiles.core.base.response.ResponseData;
-import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
import com.casic.missiles.modular.system.alarm.dto.PostionDTO;
import com.casic.missiles.modular.system.alarm.dto.RouteInfoDTO;
+import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
+
+import java.util.HashMap;
+import java.util.Map;
/**
* @ClassName TrajectoryTimeAlarmStrategy
- * @Description 车辆轨迹巡查 作业次数巡查
+ * @Description 车辆轨迹巡查 作业次数巡查(时间间隔出现在线段中某个点附近的次数,同时根据点位)
* @Author lwh
* @Date 2021/3/5 16:37
* @Version 1.0
*/
public class TrajectoryTimeAlarmStrategy extends BaseAlarmStrategy {
+
+
+
/**
* @param data 校验数据
* @return
*/
@Override
public ResponseData processHandler(AlarmProcessDTO data) {
+ //
return null;
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
index 7d56b9f..3fd22c8 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
@@ -2,13 +2,16 @@
import com.casic.missiles.core.base.response.ResponseData;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
+import com.casic.missiles.modular.system.alarm.strategy.AlarmStrategyContext;
/**
* 基础思路:提供基础校验接口 分状态实现校验
* 路线报警基础报警handler
+ *
* @author lwh
*/
public abstract class BaseAlarmStrategy {
+ private AlarmStrategyContext context;
/**
* 根据告警规则处理告警数据
@@ -17,4 +20,12 @@
* @return 处理结果
*/
public abstract ResponseData processHandler(AlarmProcessDTO
data);
+
+ public AlarmStrategyContext getContext() {
+ return context;
+ }
+
+ public void setContext(AlarmStrategyContext context) {
+ this.context = context;
+ }
}
diff --git a/casic-service-car/pom.xml b/casic-service-car/pom.xml
index d4c871e..8eb42ae 100644
--- a/casic-service-car/pom.xml
+++ b/casic-service-car/pom.xml
@@ -28,9 +28,33 @@
casic-admin-support
${admin.version}
-
+
+ com.casic
+ casic-car-support
+ 1.0.0
+
+
+ com.casic
+ casic-car-base
+ 1.0.0
+
+
+ com.casic
+ casic-car-position
+ 1.0.0
+
+
+ com.casic
+ casic-data-es
+ ${admin.version}
+
+
+ com.casic
+ casic-data-support
+ ${admin.version}
+
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
index f4638d8..71c4c9e 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
@@ -1,5 +1,10 @@
package com.casic.missiles.modular.system.alarm.dto;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @ClassName RouteInfoDTO
* @Description 车辆信息数据
@@ -7,5 +12,7 @@
* @Date 2021/3/5 16:38
* @Version 1.0
*/
+@Data
public class RouteInfoDTO {
+ private Map lineNums = new HashMap<>();
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
index c5fa1f5..c8ea1ed 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
@@ -10,13 +10,14 @@
/**
* @ClassName AlarmStrategyContext
- * @Description 上下文
+ * @Description 告警上下文 执行策略验证
* @Author lwh
* @Date 2021/3/5 15:46
* @Version 1.0
*/
public class AlarmStrategyContext {
+
private List strategies = new ArrayList<>();
/**
@@ -38,6 +39,7 @@
* @param strategy
*/
public void addStrategy(BaseAlarmStrategy strategy) {
+ strategy.setContext(this);
strategies.add(strategy);
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
index 6903de7..2682c26 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
@@ -1,25 +1,32 @@
package com.casic.missiles.modular.system.alarm.strategy;
import com.casic.missiles.core.base.response.ResponseData;
-import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
import com.casic.missiles.modular.system.alarm.dto.PostionDTO;
import com.casic.missiles.modular.system.alarm.dto.RouteInfoDTO;
+import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
+
+import java.util.HashMap;
+import java.util.Map;
/**
* @ClassName TrajectoryTimeAlarmStrategy
- * @Description 车辆轨迹巡查 作业次数巡查
+ * @Description 车辆轨迹巡查 作业次数巡查(时间间隔出现在线段中某个点附近的次数,同时根据点位)
* @Author lwh
* @Date 2021/3/5 16:37
* @Version 1.0
*/
public class TrajectoryTimeAlarmStrategy extends BaseAlarmStrategy {
+
+
+
/**
* @param data 校验数据
* @return
*/
@Override
public ResponseData processHandler(AlarmProcessDTO data) {
+ //
return null;
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
index 7d56b9f..3fd22c8 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
@@ -2,13 +2,16 @@
import com.casic.missiles.core.base.response.ResponseData;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
+import com.casic.missiles.modular.system.alarm.strategy.AlarmStrategyContext;
/**
* 基础思路:提供基础校验接口 分状态实现校验
* 路线报警基础报警handler
+ *
* @author lwh
*/
public abstract class BaseAlarmStrategy {
+ private AlarmStrategyContext context;
/**
* 根据告警规则处理告警数据
@@ -17,4 +20,12 @@
* @return 处理结果
*/
public abstract ResponseData processHandler(AlarmProcessDTO
data);
+
+ public AlarmStrategyContext getContext() {
+ return context;
+ }
+
+ public void setContext(AlarmStrategyContext context) {
+ this.context = context;
+ }
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
new file mode 100644
index 0000000..528593c
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.alarm.strategy.config;
+
+/**
+ * @ClassName AlarmStrategyConfig
+ * @Description 环卫策略配置项
+ * @Author lenovo
+ * @Date 2021/4/23 10:46
+ * @Version 1.0
+ */
+public class AlarmStrategyConfig {
+ /**
+ * 采集点权重 例如:2 则为每两次判定一次 必须为正整数
+ */
+ private String alarmWeight;
+
+ /**
+ * 作业占比阀值 行驶路段数占比最小值(及满足多少占比可作为一次)
+ */
+ private String proportion;
+}
diff --git a/casic-service-car/pom.xml b/casic-service-car/pom.xml
index d4c871e..8eb42ae 100644
--- a/casic-service-car/pom.xml
+++ b/casic-service-car/pom.xml
@@ -28,9 +28,33 @@
casic-admin-support
${admin.version}
-
+
+ com.casic
+ casic-car-support
+ 1.0.0
+
+
+ com.casic
+ casic-car-base
+ 1.0.0
+
+
+ com.casic
+ casic-car-position
+ 1.0.0
+
+
+ com.casic
+ casic-data-es
+ ${admin.version}
+
+
+ com.casic
+ casic-data-support
+ ${admin.version}
+
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
index f4638d8..71c4c9e 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
@@ -1,5 +1,10 @@
package com.casic.missiles.modular.system.alarm.dto;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @ClassName RouteInfoDTO
* @Description 车辆信息数据
@@ -7,5 +12,7 @@
* @Date 2021/3/5 16:38
* @Version 1.0
*/
+@Data
public class RouteInfoDTO {
+ private Map lineNums = new HashMap<>();
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
index c5fa1f5..c8ea1ed 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
@@ -10,13 +10,14 @@
/**
* @ClassName AlarmStrategyContext
- * @Description 上下文
+ * @Description 告警上下文 执行策略验证
* @Author lwh
* @Date 2021/3/5 15:46
* @Version 1.0
*/
public class AlarmStrategyContext {
+
private List strategies = new ArrayList<>();
/**
@@ -38,6 +39,7 @@
* @param strategy
*/
public void addStrategy(BaseAlarmStrategy strategy) {
+ strategy.setContext(this);
strategies.add(strategy);
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
index 6903de7..2682c26 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
@@ -1,25 +1,32 @@
package com.casic.missiles.modular.system.alarm.strategy;
import com.casic.missiles.core.base.response.ResponseData;
-import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
import com.casic.missiles.modular.system.alarm.dto.PostionDTO;
import com.casic.missiles.modular.system.alarm.dto.RouteInfoDTO;
+import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
+
+import java.util.HashMap;
+import java.util.Map;
/**
* @ClassName TrajectoryTimeAlarmStrategy
- * @Description 车辆轨迹巡查 作业次数巡查
+ * @Description 车辆轨迹巡查 作业次数巡查(时间间隔出现在线段中某个点附近的次数,同时根据点位)
* @Author lwh
* @Date 2021/3/5 16:37
* @Version 1.0
*/
public class TrajectoryTimeAlarmStrategy extends BaseAlarmStrategy {
+
+
+
/**
* @param data 校验数据
* @return
*/
@Override
public ResponseData processHandler(AlarmProcessDTO data) {
+ //
return null;
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
index 7d56b9f..3fd22c8 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
@@ -2,13 +2,16 @@
import com.casic.missiles.core.base.response.ResponseData;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
+import com.casic.missiles.modular.system.alarm.strategy.AlarmStrategyContext;
/**
* 基础思路:提供基础校验接口 分状态实现校验
* 路线报警基础报警handler
+ *
* @author lwh
*/
public abstract class BaseAlarmStrategy {
+ private AlarmStrategyContext context;
/**
* 根据告警规则处理告警数据
@@ -17,4 +20,12 @@
* @return 处理结果
*/
public abstract ResponseData processHandler(AlarmProcessDTO
data);
+
+ public AlarmStrategyContext getContext() {
+ return context;
+ }
+
+ public void setContext(AlarmStrategyContext context) {
+ this.context = context;
+ }
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
new file mode 100644
index 0000000..528593c
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.alarm.strategy.config;
+
+/**
+ * @ClassName AlarmStrategyConfig
+ * @Description 环卫策略配置项
+ * @Author lenovo
+ * @Date 2021/4/23 10:46
+ * @Version 1.0
+ */
+public class AlarmStrategyConfig {
+ /**
+ * 采集点权重 例如:2 则为每两次判定一次 必须为正整数
+ */
+ private String alarmWeight;
+
+ /**
+ * 作业占比阀值 行驶路段数占比最小值(及满足多少占比可作为一次)
+ */
+ private String proportion;
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
new file mode 100644
index 0000000..8359d1b
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
@@ -0,0 +1,118 @@
+package com.casic.missiles.modular.system.alarm.util;
+
+import java.util.List;
+
+/**
+ * 点位信息判定工具类
+ */
+public class GPSCalculatorUtil {
+
+ private static double EARTH_RADIUS = 6378137;
+
+ /**
+ * 计算线段p1p2的距离
+ *
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToPoint(Point p1, Point p2) {
+ if (p1.equals(p2)) {
+ return 0.0;
+ }
+ if ((Math.abs(p1.getLng() - p2.getLng()) < 0.0000000001) && (Math.abs(p1.getLat() - p2.getLat()) < 0.0000000001)) {
+ return 0.0;
+ }
+ double c = Math.sin(p1.getLat()) * Math.sin(p2.getLat()) + Math.cos(p1.getLat()) * Math.cos(p2.getLat()) * Math.cos(p1.getLng() - p2.getLng());
+ if (Math.abs(c - 1) < 0.0000000001) {
+ return 0.0;
+ }
+ double distance = EARTH_RADIUS * Math.acos(c) * Math.PI / 180;
+
+ return distance;
+ }
+
+ /**
+ * 计算点p到线段p1p2之间的距离
+ *
+ * @param p
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToLine(Point p, Point p1, Point p2) {
+ double dist = 0;
+ double p1p2;
+ double pp1;
+ double pp2;
+ // 线段的长度
+ p1p2 = calDistancePointToPoint(p1, p2);
+ // (x1,y1)到点的距离
+ pp1 = calDistancePointToPoint(p, p1);
+ // (x2,y2)到点的距离
+ pp2 = calDistancePointToPoint(p, p2);
+
+ if (pp2 * pp2 >= p1p2 * p1p2 + pp1 * pp1) {
+ dist = pp1;
+ return dist;
+ }
+
+ if (pp1 * pp1 >= p1p2 * p1p2 + pp2 * pp2) {
+ dist = pp2;
+ return dist;
+ }
+ // 半周长
+ double hc = (p1p2 + pp1 + pp2) / 2;
+ // 海伦公式求面积
+ double s = Math.sqrt(hc * (hc - p1p2) * (hc - pp1) * (hc - pp2));
+ // 返回点到线的距离(利用三角形面积公式求高)
+ dist = 2 * s / p1p2;
+ return dist;
+ }
+
+ /**
+ * 计算点是否在矩形内
+ *
+ * @param p
+ * @param max
+ * @param min
+ * @return
+ */
+ public static boolean isPointInRect(Point p, Point max, Point min) {
+ if (p.getLng() < min.getLng() || p.getLng() > max.getLng() || p.getLat() < min.getLat() || p.getLat() > max.getLat()) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+
+ /**
+ * 计算点是否在多边形内
+ *
+ * @param p
+ * @param points
+ * @return
+ */
+ public static boolean isPointInPolygon(Point p, List points) {
+ int nvert = points.size();
+ int i = 0;
+ int j = 0;
+ boolean c = false;
+
+ for (i = 0, j = nvert - 1; i < nvert; j = i++) {
+ if (((points.get(i).getLat() > p.getLat()) != (points.get(j).getLat() > p.getLat())) &&
+ (p.getLng() < (points.get(j).getLng() - points.get(i).getLng()) * (p.getLat() - points.get(i).getLat()) / (points.get(j).getLat() - points.get(i).getLat()) + points.get(i).getLng())) {
+ c = !c;
+ }
+ }
+ return c;
+ }
+
+ public static void main(String[] args) {
+ Point p1 = new Point("116.626215", "28.249713");
+ Point p2 = new Point("116.635054", "28.256459");
+ Point p = new Point("116.6306345", "28.253086");
+ System.out.println(calDistancePointToLine(p, p1, p2));
+ }
+}
diff --git a/casic-service-car/pom.xml b/casic-service-car/pom.xml
index d4c871e..8eb42ae 100644
--- a/casic-service-car/pom.xml
+++ b/casic-service-car/pom.xml
@@ -28,9 +28,33 @@
casic-admin-support
${admin.version}
-
+
+ com.casic
+ casic-car-support
+ 1.0.0
+
+
+ com.casic
+ casic-car-base
+ 1.0.0
+
+
+ com.casic
+ casic-car-position
+ 1.0.0
+
+
+ com.casic
+ casic-data-es
+ ${admin.version}
+
+
+ com.casic
+ casic-data-support
+ ${admin.version}
+
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
index f4638d8..71c4c9e 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
@@ -1,5 +1,10 @@
package com.casic.missiles.modular.system.alarm.dto;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @ClassName RouteInfoDTO
* @Description 车辆信息数据
@@ -7,5 +12,7 @@
* @Date 2021/3/5 16:38
* @Version 1.0
*/
+@Data
public class RouteInfoDTO {
+ private Map lineNums = new HashMap<>();
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
index c5fa1f5..c8ea1ed 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
@@ -10,13 +10,14 @@
/**
* @ClassName AlarmStrategyContext
- * @Description 上下文
+ * @Description 告警上下文 执行策略验证
* @Author lwh
* @Date 2021/3/5 15:46
* @Version 1.0
*/
public class AlarmStrategyContext {
+
private List strategies = new ArrayList<>();
/**
@@ -38,6 +39,7 @@
* @param strategy
*/
public void addStrategy(BaseAlarmStrategy strategy) {
+ strategy.setContext(this);
strategies.add(strategy);
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
index 6903de7..2682c26 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
@@ -1,25 +1,32 @@
package com.casic.missiles.modular.system.alarm.strategy;
import com.casic.missiles.core.base.response.ResponseData;
-import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
import com.casic.missiles.modular.system.alarm.dto.PostionDTO;
import com.casic.missiles.modular.system.alarm.dto.RouteInfoDTO;
+import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
+
+import java.util.HashMap;
+import java.util.Map;
/**
* @ClassName TrajectoryTimeAlarmStrategy
- * @Description 车辆轨迹巡查 作业次数巡查
+ * @Description 车辆轨迹巡查 作业次数巡查(时间间隔出现在线段中某个点附近的次数,同时根据点位)
* @Author lwh
* @Date 2021/3/5 16:37
* @Version 1.0
*/
public class TrajectoryTimeAlarmStrategy extends BaseAlarmStrategy {
+
+
+
/**
* @param data 校验数据
* @return
*/
@Override
public ResponseData processHandler(AlarmProcessDTO data) {
+ //
return null;
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
index 7d56b9f..3fd22c8 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
@@ -2,13 +2,16 @@
import com.casic.missiles.core.base.response.ResponseData;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
+import com.casic.missiles.modular.system.alarm.strategy.AlarmStrategyContext;
/**
* 基础思路:提供基础校验接口 分状态实现校验
* 路线报警基础报警handler
+ *
* @author lwh
*/
public abstract class BaseAlarmStrategy {
+ private AlarmStrategyContext context;
/**
* 根据告警规则处理告警数据
@@ -17,4 +20,12 @@
* @return 处理结果
*/
public abstract ResponseData processHandler(AlarmProcessDTO
data);
+
+ public AlarmStrategyContext getContext() {
+ return context;
+ }
+
+ public void setContext(AlarmStrategyContext context) {
+ this.context = context;
+ }
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
new file mode 100644
index 0000000..528593c
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.alarm.strategy.config;
+
+/**
+ * @ClassName AlarmStrategyConfig
+ * @Description 环卫策略配置项
+ * @Author lenovo
+ * @Date 2021/4/23 10:46
+ * @Version 1.0
+ */
+public class AlarmStrategyConfig {
+ /**
+ * 采集点权重 例如:2 则为每两次判定一次 必须为正整数
+ */
+ private String alarmWeight;
+
+ /**
+ * 作业占比阀值 行驶路段数占比最小值(及满足多少占比可作为一次)
+ */
+ private String proportion;
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
new file mode 100644
index 0000000..8359d1b
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
@@ -0,0 +1,118 @@
+package com.casic.missiles.modular.system.alarm.util;
+
+import java.util.List;
+
+/**
+ * 点位信息判定工具类
+ */
+public class GPSCalculatorUtil {
+
+ private static double EARTH_RADIUS = 6378137;
+
+ /**
+ * 计算线段p1p2的距离
+ *
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToPoint(Point p1, Point p2) {
+ if (p1.equals(p2)) {
+ return 0.0;
+ }
+ if ((Math.abs(p1.getLng() - p2.getLng()) < 0.0000000001) && (Math.abs(p1.getLat() - p2.getLat()) < 0.0000000001)) {
+ return 0.0;
+ }
+ double c = Math.sin(p1.getLat()) * Math.sin(p2.getLat()) + Math.cos(p1.getLat()) * Math.cos(p2.getLat()) * Math.cos(p1.getLng() - p2.getLng());
+ if (Math.abs(c - 1) < 0.0000000001) {
+ return 0.0;
+ }
+ double distance = EARTH_RADIUS * Math.acos(c) * Math.PI / 180;
+
+ return distance;
+ }
+
+ /**
+ * 计算点p到线段p1p2之间的距离
+ *
+ * @param p
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToLine(Point p, Point p1, Point p2) {
+ double dist = 0;
+ double p1p2;
+ double pp1;
+ double pp2;
+ // 线段的长度
+ p1p2 = calDistancePointToPoint(p1, p2);
+ // (x1,y1)到点的距离
+ pp1 = calDistancePointToPoint(p, p1);
+ // (x2,y2)到点的距离
+ pp2 = calDistancePointToPoint(p, p2);
+
+ if (pp2 * pp2 >= p1p2 * p1p2 + pp1 * pp1) {
+ dist = pp1;
+ return dist;
+ }
+
+ if (pp1 * pp1 >= p1p2 * p1p2 + pp2 * pp2) {
+ dist = pp2;
+ return dist;
+ }
+ // 半周长
+ double hc = (p1p2 + pp1 + pp2) / 2;
+ // 海伦公式求面积
+ double s = Math.sqrt(hc * (hc - p1p2) * (hc - pp1) * (hc - pp2));
+ // 返回点到线的距离(利用三角形面积公式求高)
+ dist = 2 * s / p1p2;
+ return dist;
+ }
+
+ /**
+ * 计算点是否在矩形内
+ *
+ * @param p
+ * @param max
+ * @param min
+ * @return
+ */
+ public static boolean isPointInRect(Point p, Point max, Point min) {
+ if (p.getLng() < min.getLng() || p.getLng() > max.getLng() || p.getLat() < min.getLat() || p.getLat() > max.getLat()) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+
+ /**
+ * 计算点是否在多边形内
+ *
+ * @param p
+ * @param points
+ * @return
+ */
+ public static boolean isPointInPolygon(Point p, List points) {
+ int nvert = points.size();
+ int i = 0;
+ int j = 0;
+ boolean c = false;
+
+ for (i = 0, j = nvert - 1; i < nvert; j = i++) {
+ if (((points.get(i).getLat() > p.getLat()) != (points.get(j).getLat() > p.getLat())) &&
+ (p.getLng() < (points.get(j).getLng() - points.get(i).getLng()) * (p.getLat() - points.get(i).getLat()) / (points.get(j).getLat() - points.get(i).getLat()) + points.get(i).getLng())) {
+ c = !c;
+ }
+ }
+ return c;
+ }
+
+ public static void main(String[] args) {
+ Point p1 = new Point("116.626215", "28.249713");
+ Point p2 = new Point("116.635054", "28.256459");
+ Point p = new Point("116.6306345", "28.253086");
+ System.out.println(calDistancePointToLine(p, p1, p2));
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java
new file mode 100644
index 0000000..2e8e47e
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.alarm.util;
+
+/**
+ * 点位信息
+ */
+public class Point {
+ private Double lng;
+ private Double lat;
+
+ public Point(String lng, String lat) {
+ this.lng = Double.parseDouble(lng);
+ this.lat = Double.parseDouble(lat);
+ }
+
+ public Double getLng() {
+ return lng;
+ }
+
+ public void setLng(Double lng) {
+ this.lng = lng;
+ }
+
+ public Double getLat() {
+ return lat;
+ }
+
+ public void setLat(Double lat) {
+ this.lat = lat;
+ }
+}
diff --git a/casic-service-car/pom.xml b/casic-service-car/pom.xml
index d4c871e..8eb42ae 100644
--- a/casic-service-car/pom.xml
+++ b/casic-service-car/pom.xml
@@ -28,9 +28,33 @@
casic-admin-support
${admin.version}
-
+
+ com.casic
+ casic-car-support
+ 1.0.0
+
+
+ com.casic
+ casic-car-base
+ 1.0.0
+
+
+ com.casic
+ casic-car-position
+ 1.0.0
+
+
+ com.casic
+ casic-data-es
+ ${admin.version}
+
+
+ com.casic
+ casic-data-support
+ ${admin.version}
+
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
index f4638d8..71c4c9e 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
@@ -1,5 +1,10 @@
package com.casic.missiles.modular.system.alarm.dto;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @ClassName RouteInfoDTO
* @Description 车辆信息数据
@@ -7,5 +12,7 @@
* @Date 2021/3/5 16:38
* @Version 1.0
*/
+@Data
public class RouteInfoDTO {
+ private Map lineNums = new HashMap<>();
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
index c5fa1f5..c8ea1ed 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
@@ -10,13 +10,14 @@
/**
* @ClassName AlarmStrategyContext
- * @Description 上下文
+ * @Description 告警上下文 执行策略验证
* @Author lwh
* @Date 2021/3/5 15:46
* @Version 1.0
*/
public class AlarmStrategyContext {
+
private List strategies = new ArrayList<>();
/**
@@ -38,6 +39,7 @@
* @param strategy
*/
public void addStrategy(BaseAlarmStrategy strategy) {
+ strategy.setContext(this);
strategies.add(strategy);
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
index 6903de7..2682c26 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
@@ -1,25 +1,32 @@
package com.casic.missiles.modular.system.alarm.strategy;
import com.casic.missiles.core.base.response.ResponseData;
-import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
import com.casic.missiles.modular.system.alarm.dto.PostionDTO;
import com.casic.missiles.modular.system.alarm.dto.RouteInfoDTO;
+import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
+
+import java.util.HashMap;
+import java.util.Map;
/**
* @ClassName TrajectoryTimeAlarmStrategy
- * @Description 车辆轨迹巡查 作业次数巡查
+ * @Description 车辆轨迹巡查 作业次数巡查(时间间隔出现在线段中某个点附近的次数,同时根据点位)
* @Author lwh
* @Date 2021/3/5 16:37
* @Version 1.0
*/
public class TrajectoryTimeAlarmStrategy extends BaseAlarmStrategy {
+
+
+
/**
* @param data 校验数据
* @return
*/
@Override
public ResponseData processHandler(AlarmProcessDTO data) {
+ //
return null;
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
index 7d56b9f..3fd22c8 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
@@ -2,13 +2,16 @@
import com.casic.missiles.core.base.response.ResponseData;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
+import com.casic.missiles.modular.system.alarm.strategy.AlarmStrategyContext;
/**
* 基础思路:提供基础校验接口 分状态实现校验
* 路线报警基础报警handler
+ *
* @author lwh
*/
public abstract class BaseAlarmStrategy {
+ private AlarmStrategyContext context;
/**
* 根据告警规则处理告警数据
@@ -17,4 +20,12 @@
* @return 处理结果
*/
public abstract ResponseData processHandler(AlarmProcessDTO
data);
+
+ public AlarmStrategyContext getContext() {
+ return context;
+ }
+
+ public void setContext(AlarmStrategyContext context) {
+ this.context = context;
+ }
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
new file mode 100644
index 0000000..528593c
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.alarm.strategy.config;
+
+/**
+ * @ClassName AlarmStrategyConfig
+ * @Description 环卫策略配置项
+ * @Author lenovo
+ * @Date 2021/4/23 10:46
+ * @Version 1.0
+ */
+public class AlarmStrategyConfig {
+ /**
+ * 采集点权重 例如:2 则为每两次判定一次 必须为正整数
+ */
+ private String alarmWeight;
+
+ /**
+ * 作业占比阀值 行驶路段数占比最小值(及满足多少占比可作为一次)
+ */
+ private String proportion;
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
new file mode 100644
index 0000000..8359d1b
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
@@ -0,0 +1,118 @@
+package com.casic.missiles.modular.system.alarm.util;
+
+import java.util.List;
+
+/**
+ * 点位信息判定工具类
+ */
+public class GPSCalculatorUtil {
+
+ private static double EARTH_RADIUS = 6378137;
+
+ /**
+ * 计算线段p1p2的距离
+ *
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToPoint(Point p1, Point p2) {
+ if (p1.equals(p2)) {
+ return 0.0;
+ }
+ if ((Math.abs(p1.getLng() - p2.getLng()) < 0.0000000001) && (Math.abs(p1.getLat() - p2.getLat()) < 0.0000000001)) {
+ return 0.0;
+ }
+ double c = Math.sin(p1.getLat()) * Math.sin(p2.getLat()) + Math.cos(p1.getLat()) * Math.cos(p2.getLat()) * Math.cos(p1.getLng() - p2.getLng());
+ if (Math.abs(c - 1) < 0.0000000001) {
+ return 0.0;
+ }
+ double distance = EARTH_RADIUS * Math.acos(c) * Math.PI / 180;
+
+ return distance;
+ }
+
+ /**
+ * 计算点p到线段p1p2之间的距离
+ *
+ * @param p
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToLine(Point p, Point p1, Point p2) {
+ double dist = 0;
+ double p1p2;
+ double pp1;
+ double pp2;
+ // 线段的长度
+ p1p2 = calDistancePointToPoint(p1, p2);
+ // (x1,y1)到点的距离
+ pp1 = calDistancePointToPoint(p, p1);
+ // (x2,y2)到点的距离
+ pp2 = calDistancePointToPoint(p, p2);
+
+ if (pp2 * pp2 >= p1p2 * p1p2 + pp1 * pp1) {
+ dist = pp1;
+ return dist;
+ }
+
+ if (pp1 * pp1 >= p1p2 * p1p2 + pp2 * pp2) {
+ dist = pp2;
+ return dist;
+ }
+ // 半周长
+ double hc = (p1p2 + pp1 + pp2) / 2;
+ // 海伦公式求面积
+ double s = Math.sqrt(hc * (hc - p1p2) * (hc - pp1) * (hc - pp2));
+ // 返回点到线的距离(利用三角形面积公式求高)
+ dist = 2 * s / p1p2;
+ return dist;
+ }
+
+ /**
+ * 计算点是否在矩形内
+ *
+ * @param p
+ * @param max
+ * @param min
+ * @return
+ */
+ public static boolean isPointInRect(Point p, Point max, Point min) {
+ if (p.getLng() < min.getLng() || p.getLng() > max.getLng() || p.getLat() < min.getLat() || p.getLat() > max.getLat()) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+
+ /**
+ * 计算点是否在多边形内
+ *
+ * @param p
+ * @param points
+ * @return
+ */
+ public static boolean isPointInPolygon(Point p, List points) {
+ int nvert = points.size();
+ int i = 0;
+ int j = 0;
+ boolean c = false;
+
+ for (i = 0, j = nvert - 1; i < nvert; j = i++) {
+ if (((points.get(i).getLat() > p.getLat()) != (points.get(j).getLat() > p.getLat())) &&
+ (p.getLng() < (points.get(j).getLng() - points.get(i).getLng()) * (p.getLat() - points.get(i).getLat()) / (points.get(j).getLat() - points.get(i).getLat()) + points.get(i).getLng())) {
+ c = !c;
+ }
+ }
+ return c;
+ }
+
+ public static void main(String[] args) {
+ Point p1 = new Point("116.626215", "28.249713");
+ Point p2 = new Point("116.635054", "28.256459");
+ Point p = new Point("116.6306345", "28.253086");
+ System.out.println(calDistancePointToLine(p, p1, p2));
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java
new file mode 100644
index 0000000..2e8e47e
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.alarm.util;
+
+/**
+ * 点位信息
+ */
+public class Point {
+ private Double lng;
+ private Double lat;
+
+ public Point(String lng, String lat) {
+ this.lng = Double.parseDouble(lng);
+ this.lat = Double.parseDouble(lat);
+ }
+
+ public Double getLng() {
+ return lng;
+ }
+
+ public void setLng(Double lng) {
+ this.lng = lng;
+ }
+
+ public Double getLat() {
+ return lat;
+ }
+
+ public void setLat(Double lat) {
+ this.lat = lat;
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java
new file mode 100644
index 0000000..d051c70
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.modular.car.model.BusCarInfo;
+import com.casic.missiles.modular.car.service.IBusCarInfoSupportService;
+import com.casic.missiles.modular.position.dto.CarPositionDto;
+import com.casic.missiles.modular.position.es.BusCarPosition;
+import com.casic.missiles.modular.position.service.IBusCarPositionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName CarPositionController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2021/4/23 13:45
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/carPosition")
+public class CarPositionController {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBusCarInfoSupportService carInfoSupportService;
+ @Autowired
+ private IBusCarPositionService busCarPositionService;
+ /**
+ * 跟踪(查询车辆最新位置)
+ */
+ @RequestMapping("/track")
+ public Object track(Long carId){
+ BusCarInfo carInfo = carInfoSupportService.selectByCarId(carId);
+ BusCarPosition positionInfo = busCarPositionService.selectLastestCarPosition(carId);
+ CarPositionDto carPositionDto = new CarPositionDto();
+ CarPositionDto.convCarInfo(carInfo,carPositionDto);
+ CarPositionDto.convPositionInfo(positionInfo,carPositionDto);
+ carPositionDto.setStatus(busCarPositionService.getCarStatus(positionInfo));
+ return ResponseData.success(carPositionDto);
+ }
+}
diff --git a/casic-service-car/pom.xml b/casic-service-car/pom.xml
index d4c871e..8eb42ae 100644
--- a/casic-service-car/pom.xml
+++ b/casic-service-car/pom.xml
@@ -28,9 +28,33 @@
casic-admin-support
${admin.version}
-
+
+ com.casic
+ casic-car-support
+ 1.0.0
+
+
+ com.casic
+ casic-car-base
+ 1.0.0
+
+
+ com.casic
+ casic-car-position
+ 1.0.0
+
+
+ com.casic
+ casic-data-es
+ ${admin.version}
+
+
+ com.casic
+ casic-data-support
+ ${admin.version}
+
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
index f4638d8..71c4c9e 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
@@ -1,5 +1,10 @@
package com.casic.missiles.modular.system.alarm.dto;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @ClassName RouteInfoDTO
* @Description 车辆信息数据
@@ -7,5 +12,7 @@
* @Date 2021/3/5 16:38
* @Version 1.0
*/
+@Data
public class RouteInfoDTO {
+ private Map lineNums = new HashMap<>();
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
index c5fa1f5..c8ea1ed 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
@@ -10,13 +10,14 @@
/**
* @ClassName AlarmStrategyContext
- * @Description 上下文
+ * @Description 告警上下文 执行策略验证
* @Author lwh
* @Date 2021/3/5 15:46
* @Version 1.0
*/
public class AlarmStrategyContext {
+
private List strategies = new ArrayList<>();
/**
@@ -38,6 +39,7 @@
* @param strategy
*/
public void addStrategy(BaseAlarmStrategy strategy) {
+ strategy.setContext(this);
strategies.add(strategy);
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
index 6903de7..2682c26 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
@@ -1,25 +1,32 @@
package com.casic.missiles.modular.system.alarm.strategy;
import com.casic.missiles.core.base.response.ResponseData;
-import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
import com.casic.missiles.modular.system.alarm.dto.PostionDTO;
import com.casic.missiles.modular.system.alarm.dto.RouteInfoDTO;
+import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
+
+import java.util.HashMap;
+import java.util.Map;
/**
* @ClassName TrajectoryTimeAlarmStrategy
- * @Description 车辆轨迹巡查 作业次数巡查
+ * @Description 车辆轨迹巡查 作业次数巡查(时间间隔出现在线段中某个点附近的次数,同时根据点位)
* @Author lwh
* @Date 2021/3/5 16:37
* @Version 1.0
*/
public class TrajectoryTimeAlarmStrategy extends BaseAlarmStrategy {
+
+
+
/**
* @param data 校验数据
* @return
*/
@Override
public ResponseData processHandler(AlarmProcessDTO data) {
+ //
return null;
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
index 7d56b9f..3fd22c8 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
@@ -2,13 +2,16 @@
import com.casic.missiles.core.base.response.ResponseData;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
+import com.casic.missiles.modular.system.alarm.strategy.AlarmStrategyContext;
/**
* 基础思路:提供基础校验接口 分状态实现校验
* 路线报警基础报警handler
+ *
* @author lwh
*/
public abstract class BaseAlarmStrategy {
+ private AlarmStrategyContext context;
/**
* 根据告警规则处理告警数据
@@ -17,4 +20,12 @@
* @return 处理结果
*/
public abstract ResponseData processHandler(AlarmProcessDTO
data);
+
+ public AlarmStrategyContext getContext() {
+ return context;
+ }
+
+ public void setContext(AlarmStrategyContext context) {
+ this.context = context;
+ }
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
new file mode 100644
index 0000000..528593c
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.alarm.strategy.config;
+
+/**
+ * @ClassName AlarmStrategyConfig
+ * @Description 环卫策略配置项
+ * @Author lenovo
+ * @Date 2021/4/23 10:46
+ * @Version 1.0
+ */
+public class AlarmStrategyConfig {
+ /**
+ * 采集点权重 例如:2 则为每两次判定一次 必须为正整数
+ */
+ private String alarmWeight;
+
+ /**
+ * 作业占比阀值 行驶路段数占比最小值(及满足多少占比可作为一次)
+ */
+ private String proportion;
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
new file mode 100644
index 0000000..8359d1b
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
@@ -0,0 +1,118 @@
+package com.casic.missiles.modular.system.alarm.util;
+
+import java.util.List;
+
+/**
+ * 点位信息判定工具类
+ */
+public class GPSCalculatorUtil {
+
+ private static double EARTH_RADIUS = 6378137;
+
+ /**
+ * 计算线段p1p2的距离
+ *
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToPoint(Point p1, Point p2) {
+ if (p1.equals(p2)) {
+ return 0.0;
+ }
+ if ((Math.abs(p1.getLng() - p2.getLng()) < 0.0000000001) && (Math.abs(p1.getLat() - p2.getLat()) < 0.0000000001)) {
+ return 0.0;
+ }
+ double c = Math.sin(p1.getLat()) * Math.sin(p2.getLat()) + Math.cos(p1.getLat()) * Math.cos(p2.getLat()) * Math.cos(p1.getLng() - p2.getLng());
+ if (Math.abs(c - 1) < 0.0000000001) {
+ return 0.0;
+ }
+ double distance = EARTH_RADIUS * Math.acos(c) * Math.PI / 180;
+
+ return distance;
+ }
+
+ /**
+ * 计算点p到线段p1p2之间的距离
+ *
+ * @param p
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToLine(Point p, Point p1, Point p2) {
+ double dist = 0;
+ double p1p2;
+ double pp1;
+ double pp2;
+ // 线段的长度
+ p1p2 = calDistancePointToPoint(p1, p2);
+ // (x1,y1)到点的距离
+ pp1 = calDistancePointToPoint(p, p1);
+ // (x2,y2)到点的距离
+ pp2 = calDistancePointToPoint(p, p2);
+
+ if (pp2 * pp2 >= p1p2 * p1p2 + pp1 * pp1) {
+ dist = pp1;
+ return dist;
+ }
+
+ if (pp1 * pp1 >= p1p2 * p1p2 + pp2 * pp2) {
+ dist = pp2;
+ return dist;
+ }
+ // 半周长
+ double hc = (p1p2 + pp1 + pp2) / 2;
+ // 海伦公式求面积
+ double s = Math.sqrt(hc * (hc - p1p2) * (hc - pp1) * (hc - pp2));
+ // 返回点到线的距离(利用三角形面积公式求高)
+ dist = 2 * s / p1p2;
+ return dist;
+ }
+
+ /**
+ * 计算点是否在矩形内
+ *
+ * @param p
+ * @param max
+ * @param min
+ * @return
+ */
+ public static boolean isPointInRect(Point p, Point max, Point min) {
+ if (p.getLng() < min.getLng() || p.getLng() > max.getLng() || p.getLat() < min.getLat() || p.getLat() > max.getLat()) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+
+ /**
+ * 计算点是否在多边形内
+ *
+ * @param p
+ * @param points
+ * @return
+ */
+ public static boolean isPointInPolygon(Point p, List points) {
+ int nvert = points.size();
+ int i = 0;
+ int j = 0;
+ boolean c = false;
+
+ for (i = 0, j = nvert - 1; i < nvert; j = i++) {
+ if (((points.get(i).getLat() > p.getLat()) != (points.get(j).getLat() > p.getLat())) &&
+ (p.getLng() < (points.get(j).getLng() - points.get(i).getLng()) * (p.getLat() - points.get(i).getLat()) / (points.get(j).getLat() - points.get(i).getLat()) + points.get(i).getLng())) {
+ c = !c;
+ }
+ }
+ return c;
+ }
+
+ public static void main(String[] args) {
+ Point p1 = new Point("116.626215", "28.249713");
+ Point p2 = new Point("116.635054", "28.256459");
+ Point p = new Point("116.6306345", "28.253086");
+ System.out.println(calDistancePointToLine(p, p1, p2));
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java
new file mode 100644
index 0000000..2e8e47e
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.alarm.util;
+
+/**
+ * 点位信息
+ */
+public class Point {
+ private Double lng;
+ private Double lat;
+
+ public Point(String lng, String lat) {
+ this.lng = Double.parseDouble(lng);
+ this.lat = Double.parseDouble(lat);
+ }
+
+ public Double getLng() {
+ return lng;
+ }
+
+ public void setLng(Double lng) {
+ this.lng = lng;
+ }
+
+ public Double getLat() {
+ return lat;
+ }
+
+ public void setLat(Double lat) {
+ this.lat = lat;
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java
new file mode 100644
index 0000000..d051c70
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.modular.car.model.BusCarInfo;
+import com.casic.missiles.modular.car.service.IBusCarInfoSupportService;
+import com.casic.missiles.modular.position.dto.CarPositionDto;
+import com.casic.missiles.modular.position.es.BusCarPosition;
+import com.casic.missiles.modular.position.service.IBusCarPositionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName CarPositionController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2021/4/23 13:45
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/carPosition")
+public class CarPositionController {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBusCarInfoSupportService carInfoSupportService;
+ @Autowired
+ private IBusCarPositionService busCarPositionService;
+ /**
+ * 跟踪(查询车辆最新位置)
+ */
+ @RequestMapping("/track")
+ public Object track(Long carId){
+ BusCarInfo carInfo = carInfoSupportService.selectByCarId(carId);
+ BusCarPosition positionInfo = busCarPositionService.selectLastestCarPosition(carId);
+ CarPositionDto carPositionDto = new CarPositionDto();
+ CarPositionDto.convCarInfo(carInfo,carPositionDto);
+ CarPositionDto.convPositionInfo(positionInfo,carPositionDto);
+ carPositionDto.setStatus(busCarPositionService.getCarStatus(positionInfo));
+ return ResponseData.success(carPositionDto);
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmRecordSupportServiceImpl.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmRecordSupportServiceImpl.java
new file mode 100644
index 0000000..d1fdc33
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmRecordSupportServiceImpl.java
@@ -0,0 +1,22 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.alarm.model.BusAlarmRecord;
+import com.casic.missiles.modular.alarm.service.IBusAlarmRecordSupportService;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @ClassName BusAlarmRecordSupportServiceImpl
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2021/4/23 14:24
+ * @Version 1.0
+ */
+@Component
+public class BusAlarmRecordSupportServiceImpl implements IBusAlarmRecordSupportService {
+ @Override
+ public List selectAlarm(Long aLong, String s, String s1) {
+ return null;
+ }
+}
diff --git a/casic-service-car/pom.xml b/casic-service-car/pom.xml
index d4c871e..8eb42ae 100644
--- a/casic-service-car/pom.xml
+++ b/casic-service-car/pom.xml
@@ -28,9 +28,33 @@
casic-admin-support
${admin.version}
-
+
+ com.casic
+ casic-car-support
+ 1.0.0
+
+
+ com.casic
+ casic-car-base
+ 1.0.0
+
+
+ com.casic
+ casic-car-position
+ 1.0.0
+
+
+ com.casic
+ casic-data-es
+ ${admin.version}
+
+
+ com.casic
+ casic-data-support
+ ${admin.version}
+
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
index f4638d8..71c4c9e 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
@@ -1,5 +1,10 @@
package com.casic.missiles.modular.system.alarm.dto;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @ClassName RouteInfoDTO
* @Description 车辆信息数据
@@ -7,5 +12,7 @@
* @Date 2021/3/5 16:38
* @Version 1.0
*/
+@Data
public class RouteInfoDTO {
+ private Map lineNums = new HashMap<>();
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
index c5fa1f5..c8ea1ed 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
@@ -10,13 +10,14 @@
/**
* @ClassName AlarmStrategyContext
- * @Description 上下文
+ * @Description 告警上下文 执行策略验证
* @Author lwh
* @Date 2021/3/5 15:46
* @Version 1.0
*/
public class AlarmStrategyContext {
+
private List strategies = new ArrayList<>();
/**
@@ -38,6 +39,7 @@
* @param strategy
*/
public void addStrategy(BaseAlarmStrategy strategy) {
+ strategy.setContext(this);
strategies.add(strategy);
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
index 6903de7..2682c26 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
@@ -1,25 +1,32 @@
package com.casic.missiles.modular.system.alarm.strategy;
import com.casic.missiles.core.base.response.ResponseData;
-import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
import com.casic.missiles.modular.system.alarm.dto.PostionDTO;
import com.casic.missiles.modular.system.alarm.dto.RouteInfoDTO;
+import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
+
+import java.util.HashMap;
+import java.util.Map;
/**
* @ClassName TrajectoryTimeAlarmStrategy
- * @Description 车辆轨迹巡查 作业次数巡查
+ * @Description 车辆轨迹巡查 作业次数巡查(时间间隔出现在线段中某个点附近的次数,同时根据点位)
* @Author lwh
* @Date 2021/3/5 16:37
* @Version 1.0
*/
public class TrajectoryTimeAlarmStrategy extends BaseAlarmStrategy {
+
+
+
/**
* @param data 校验数据
* @return
*/
@Override
public ResponseData processHandler(AlarmProcessDTO data) {
+ //
return null;
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
index 7d56b9f..3fd22c8 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
@@ -2,13 +2,16 @@
import com.casic.missiles.core.base.response.ResponseData;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
+import com.casic.missiles.modular.system.alarm.strategy.AlarmStrategyContext;
/**
* 基础思路:提供基础校验接口 分状态实现校验
* 路线报警基础报警handler
+ *
* @author lwh
*/
public abstract class BaseAlarmStrategy {
+ private AlarmStrategyContext context;
/**
* 根据告警规则处理告警数据
@@ -17,4 +20,12 @@
* @return 处理结果
*/
public abstract ResponseData processHandler(AlarmProcessDTO
data);
+
+ public AlarmStrategyContext getContext() {
+ return context;
+ }
+
+ public void setContext(AlarmStrategyContext context) {
+ this.context = context;
+ }
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
new file mode 100644
index 0000000..528593c
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.alarm.strategy.config;
+
+/**
+ * @ClassName AlarmStrategyConfig
+ * @Description 环卫策略配置项
+ * @Author lenovo
+ * @Date 2021/4/23 10:46
+ * @Version 1.0
+ */
+public class AlarmStrategyConfig {
+ /**
+ * 采集点权重 例如:2 则为每两次判定一次 必须为正整数
+ */
+ private String alarmWeight;
+
+ /**
+ * 作业占比阀值 行驶路段数占比最小值(及满足多少占比可作为一次)
+ */
+ private String proportion;
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
new file mode 100644
index 0000000..8359d1b
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
@@ -0,0 +1,118 @@
+package com.casic.missiles.modular.system.alarm.util;
+
+import java.util.List;
+
+/**
+ * 点位信息判定工具类
+ */
+public class GPSCalculatorUtil {
+
+ private static double EARTH_RADIUS = 6378137;
+
+ /**
+ * 计算线段p1p2的距离
+ *
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToPoint(Point p1, Point p2) {
+ if (p1.equals(p2)) {
+ return 0.0;
+ }
+ if ((Math.abs(p1.getLng() - p2.getLng()) < 0.0000000001) && (Math.abs(p1.getLat() - p2.getLat()) < 0.0000000001)) {
+ return 0.0;
+ }
+ double c = Math.sin(p1.getLat()) * Math.sin(p2.getLat()) + Math.cos(p1.getLat()) * Math.cos(p2.getLat()) * Math.cos(p1.getLng() - p2.getLng());
+ if (Math.abs(c - 1) < 0.0000000001) {
+ return 0.0;
+ }
+ double distance = EARTH_RADIUS * Math.acos(c) * Math.PI / 180;
+
+ return distance;
+ }
+
+ /**
+ * 计算点p到线段p1p2之间的距离
+ *
+ * @param p
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToLine(Point p, Point p1, Point p2) {
+ double dist = 0;
+ double p1p2;
+ double pp1;
+ double pp2;
+ // 线段的长度
+ p1p2 = calDistancePointToPoint(p1, p2);
+ // (x1,y1)到点的距离
+ pp1 = calDistancePointToPoint(p, p1);
+ // (x2,y2)到点的距离
+ pp2 = calDistancePointToPoint(p, p2);
+
+ if (pp2 * pp2 >= p1p2 * p1p2 + pp1 * pp1) {
+ dist = pp1;
+ return dist;
+ }
+
+ if (pp1 * pp1 >= p1p2 * p1p2 + pp2 * pp2) {
+ dist = pp2;
+ return dist;
+ }
+ // 半周长
+ double hc = (p1p2 + pp1 + pp2) / 2;
+ // 海伦公式求面积
+ double s = Math.sqrt(hc * (hc - p1p2) * (hc - pp1) * (hc - pp2));
+ // 返回点到线的距离(利用三角形面积公式求高)
+ dist = 2 * s / p1p2;
+ return dist;
+ }
+
+ /**
+ * 计算点是否在矩形内
+ *
+ * @param p
+ * @param max
+ * @param min
+ * @return
+ */
+ public static boolean isPointInRect(Point p, Point max, Point min) {
+ if (p.getLng() < min.getLng() || p.getLng() > max.getLng() || p.getLat() < min.getLat() || p.getLat() > max.getLat()) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+
+ /**
+ * 计算点是否在多边形内
+ *
+ * @param p
+ * @param points
+ * @return
+ */
+ public static boolean isPointInPolygon(Point p, List points) {
+ int nvert = points.size();
+ int i = 0;
+ int j = 0;
+ boolean c = false;
+
+ for (i = 0, j = nvert - 1; i < nvert; j = i++) {
+ if (((points.get(i).getLat() > p.getLat()) != (points.get(j).getLat() > p.getLat())) &&
+ (p.getLng() < (points.get(j).getLng() - points.get(i).getLng()) * (p.getLat() - points.get(i).getLat()) / (points.get(j).getLat() - points.get(i).getLat()) + points.get(i).getLng())) {
+ c = !c;
+ }
+ }
+ return c;
+ }
+
+ public static void main(String[] args) {
+ Point p1 = new Point("116.626215", "28.249713");
+ Point p2 = new Point("116.635054", "28.256459");
+ Point p = new Point("116.6306345", "28.253086");
+ System.out.println(calDistancePointToLine(p, p1, p2));
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java
new file mode 100644
index 0000000..2e8e47e
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.alarm.util;
+
+/**
+ * 点位信息
+ */
+public class Point {
+ private Double lng;
+ private Double lat;
+
+ public Point(String lng, String lat) {
+ this.lng = Double.parseDouble(lng);
+ this.lat = Double.parseDouble(lat);
+ }
+
+ public Double getLng() {
+ return lng;
+ }
+
+ public void setLng(Double lng) {
+ this.lng = lng;
+ }
+
+ public Double getLat() {
+ return lat;
+ }
+
+ public void setLat(Double lat) {
+ this.lat = lat;
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java
new file mode 100644
index 0000000..d051c70
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.modular.car.model.BusCarInfo;
+import com.casic.missiles.modular.car.service.IBusCarInfoSupportService;
+import com.casic.missiles.modular.position.dto.CarPositionDto;
+import com.casic.missiles.modular.position.es.BusCarPosition;
+import com.casic.missiles.modular.position.service.IBusCarPositionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName CarPositionController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2021/4/23 13:45
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/carPosition")
+public class CarPositionController {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBusCarInfoSupportService carInfoSupportService;
+ @Autowired
+ private IBusCarPositionService busCarPositionService;
+ /**
+ * 跟踪(查询车辆最新位置)
+ */
+ @RequestMapping("/track")
+ public Object track(Long carId){
+ BusCarInfo carInfo = carInfoSupportService.selectByCarId(carId);
+ BusCarPosition positionInfo = busCarPositionService.selectLastestCarPosition(carId);
+ CarPositionDto carPositionDto = new CarPositionDto();
+ CarPositionDto.convCarInfo(carInfo,carPositionDto);
+ CarPositionDto.convPositionInfo(positionInfo,carPositionDto);
+ carPositionDto.setStatus(busCarPositionService.getCarStatus(positionInfo));
+ return ResponseData.success(carPositionDto);
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmRecordSupportServiceImpl.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmRecordSupportServiceImpl.java
new file mode 100644
index 0000000..d1fdc33
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmRecordSupportServiceImpl.java
@@ -0,0 +1,22 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.alarm.model.BusAlarmRecord;
+import com.casic.missiles.modular.alarm.service.IBusAlarmRecordSupportService;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @ClassName BusAlarmRecordSupportServiceImpl
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2021/4/23 14:24
+ * @Version 1.0
+ */
+@Component
+public class BusAlarmRecordSupportServiceImpl implements IBusAlarmRecordSupportService {
+ @Override
+ public List selectAlarm(Long aLong, String s, String s1) {
+ return null;
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmThresholdSupportServiceImpl.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmThresholdSupportServiceImpl.java
new file mode 100644
index 0000000..16f715a
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmThresholdSupportServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.alarm.model.BusAlarmThreshold;
+import com.casic.missiles.modular.alarm.service.IBusAlarmThresholdSupportService;
+import org.springframework.stereotype.Component;
+
+/**
+ * @ClassName BusAlarmThresholdSupportServiceImpl
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2021/4/23 14:10
+ * @Version 1.0
+ */
+@Component
+public class BusAlarmThresholdSupportServiceImpl implements IBusAlarmThresholdSupportService {
+ @Override
+ public BusAlarmThreshold selectByCarId(Long aLong) {
+ return null;
+ }
+}
diff --git a/casic-service-car/pom.xml b/casic-service-car/pom.xml
index d4c871e..8eb42ae 100644
--- a/casic-service-car/pom.xml
+++ b/casic-service-car/pom.xml
@@ -28,9 +28,33 @@
casic-admin-support
${admin.version}
-
+
+ com.casic
+ casic-car-support
+ 1.0.0
+
+
+ com.casic
+ casic-car-base
+ 1.0.0
+
+
+ com.casic
+ casic-car-position
+ 1.0.0
+
+
+ com.casic
+ casic-data-es
+ ${admin.version}
+
+
+ com.casic
+ casic-data-support
+ ${admin.version}
+
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
index f4638d8..71c4c9e 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
@@ -1,5 +1,10 @@
package com.casic.missiles.modular.system.alarm.dto;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @ClassName RouteInfoDTO
* @Description 车辆信息数据
@@ -7,5 +12,7 @@
* @Date 2021/3/5 16:38
* @Version 1.0
*/
+@Data
public class RouteInfoDTO {
+ private Map lineNums = new HashMap<>();
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
index c5fa1f5..c8ea1ed 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
@@ -10,13 +10,14 @@
/**
* @ClassName AlarmStrategyContext
- * @Description 上下文
+ * @Description 告警上下文 执行策略验证
* @Author lwh
* @Date 2021/3/5 15:46
* @Version 1.0
*/
public class AlarmStrategyContext {
+
private List strategies = new ArrayList<>();
/**
@@ -38,6 +39,7 @@
* @param strategy
*/
public void addStrategy(BaseAlarmStrategy strategy) {
+ strategy.setContext(this);
strategies.add(strategy);
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
index 6903de7..2682c26 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
@@ -1,25 +1,32 @@
package com.casic.missiles.modular.system.alarm.strategy;
import com.casic.missiles.core.base.response.ResponseData;
-import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
import com.casic.missiles.modular.system.alarm.dto.PostionDTO;
import com.casic.missiles.modular.system.alarm.dto.RouteInfoDTO;
+import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
+
+import java.util.HashMap;
+import java.util.Map;
/**
* @ClassName TrajectoryTimeAlarmStrategy
- * @Description 车辆轨迹巡查 作业次数巡查
+ * @Description 车辆轨迹巡查 作业次数巡查(时间间隔出现在线段中某个点附近的次数,同时根据点位)
* @Author lwh
* @Date 2021/3/5 16:37
* @Version 1.0
*/
public class TrajectoryTimeAlarmStrategy extends BaseAlarmStrategy {
+
+
+
/**
* @param data 校验数据
* @return
*/
@Override
public ResponseData processHandler(AlarmProcessDTO data) {
+ //
return null;
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
index 7d56b9f..3fd22c8 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
@@ -2,13 +2,16 @@
import com.casic.missiles.core.base.response.ResponseData;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
+import com.casic.missiles.modular.system.alarm.strategy.AlarmStrategyContext;
/**
* 基础思路:提供基础校验接口 分状态实现校验
* 路线报警基础报警handler
+ *
* @author lwh
*/
public abstract class BaseAlarmStrategy {
+ private AlarmStrategyContext context;
/**
* 根据告警规则处理告警数据
@@ -17,4 +20,12 @@
* @return 处理结果
*/
public abstract ResponseData processHandler(AlarmProcessDTO
data);
+
+ public AlarmStrategyContext getContext() {
+ return context;
+ }
+
+ public void setContext(AlarmStrategyContext context) {
+ this.context = context;
+ }
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
new file mode 100644
index 0000000..528593c
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.alarm.strategy.config;
+
+/**
+ * @ClassName AlarmStrategyConfig
+ * @Description 环卫策略配置项
+ * @Author lenovo
+ * @Date 2021/4/23 10:46
+ * @Version 1.0
+ */
+public class AlarmStrategyConfig {
+ /**
+ * 采集点权重 例如:2 则为每两次判定一次 必须为正整数
+ */
+ private String alarmWeight;
+
+ /**
+ * 作业占比阀值 行驶路段数占比最小值(及满足多少占比可作为一次)
+ */
+ private String proportion;
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
new file mode 100644
index 0000000..8359d1b
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
@@ -0,0 +1,118 @@
+package com.casic.missiles.modular.system.alarm.util;
+
+import java.util.List;
+
+/**
+ * 点位信息判定工具类
+ */
+public class GPSCalculatorUtil {
+
+ private static double EARTH_RADIUS = 6378137;
+
+ /**
+ * 计算线段p1p2的距离
+ *
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToPoint(Point p1, Point p2) {
+ if (p1.equals(p2)) {
+ return 0.0;
+ }
+ if ((Math.abs(p1.getLng() - p2.getLng()) < 0.0000000001) && (Math.abs(p1.getLat() - p2.getLat()) < 0.0000000001)) {
+ return 0.0;
+ }
+ double c = Math.sin(p1.getLat()) * Math.sin(p2.getLat()) + Math.cos(p1.getLat()) * Math.cos(p2.getLat()) * Math.cos(p1.getLng() - p2.getLng());
+ if (Math.abs(c - 1) < 0.0000000001) {
+ return 0.0;
+ }
+ double distance = EARTH_RADIUS * Math.acos(c) * Math.PI / 180;
+
+ return distance;
+ }
+
+ /**
+ * 计算点p到线段p1p2之间的距离
+ *
+ * @param p
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToLine(Point p, Point p1, Point p2) {
+ double dist = 0;
+ double p1p2;
+ double pp1;
+ double pp2;
+ // 线段的长度
+ p1p2 = calDistancePointToPoint(p1, p2);
+ // (x1,y1)到点的距离
+ pp1 = calDistancePointToPoint(p, p1);
+ // (x2,y2)到点的距离
+ pp2 = calDistancePointToPoint(p, p2);
+
+ if (pp2 * pp2 >= p1p2 * p1p2 + pp1 * pp1) {
+ dist = pp1;
+ return dist;
+ }
+
+ if (pp1 * pp1 >= p1p2 * p1p2 + pp2 * pp2) {
+ dist = pp2;
+ return dist;
+ }
+ // 半周长
+ double hc = (p1p2 + pp1 + pp2) / 2;
+ // 海伦公式求面积
+ double s = Math.sqrt(hc * (hc - p1p2) * (hc - pp1) * (hc - pp2));
+ // 返回点到线的距离(利用三角形面积公式求高)
+ dist = 2 * s / p1p2;
+ return dist;
+ }
+
+ /**
+ * 计算点是否在矩形内
+ *
+ * @param p
+ * @param max
+ * @param min
+ * @return
+ */
+ public static boolean isPointInRect(Point p, Point max, Point min) {
+ if (p.getLng() < min.getLng() || p.getLng() > max.getLng() || p.getLat() < min.getLat() || p.getLat() > max.getLat()) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+
+ /**
+ * 计算点是否在多边形内
+ *
+ * @param p
+ * @param points
+ * @return
+ */
+ public static boolean isPointInPolygon(Point p, List points) {
+ int nvert = points.size();
+ int i = 0;
+ int j = 0;
+ boolean c = false;
+
+ for (i = 0, j = nvert - 1; i < nvert; j = i++) {
+ if (((points.get(i).getLat() > p.getLat()) != (points.get(j).getLat() > p.getLat())) &&
+ (p.getLng() < (points.get(j).getLng() - points.get(i).getLng()) * (p.getLat() - points.get(i).getLat()) / (points.get(j).getLat() - points.get(i).getLat()) + points.get(i).getLng())) {
+ c = !c;
+ }
+ }
+ return c;
+ }
+
+ public static void main(String[] args) {
+ Point p1 = new Point("116.626215", "28.249713");
+ Point p2 = new Point("116.635054", "28.256459");
+ Point p = new Point("116.6306345", "28.253086");
+ System.out.println(calDistancePointToLine(p, p1, p2));
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java
new file mode 100644
index 0000000..2e8e47e
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.alarm.util;
+
+/**
+ * 点位信息
+ */
+public class Point {
+ private Double lng;
+ private Double lat;
+
+ public Point(String lng, String lat) {
+ this.lng = Double.parseDouble(lng);
+ this.lat = Double.parseDouble(lat);
+ }
+
+ public Double getLng() {
+ return lng;
+ }
+
+ public void setLng(Double lng) {
+ this.lng = lng;
+ }
+
+ public Double getLat() {
+ return lat;
+ }
+
+ public void setLat(Double lat) {
+ this.lat = lat;
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java
new file mode 100644
index 0000000..d051c70
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.modular.car.model.BusCarInfo;
+import com.casic.missiles.modular.car.service.IBusCarInfoSupportService;
+import com.casic.missiles.modular.position.dto.CarPositionDto;
+import com.casic.missiles.modular.position.es.BusCarPosition;
+import com.casic.missiles.modular.position.service.IBusCarPositionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName CarPositionController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2021/4/23 13:45
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/carPosition")
+public class CarPositionController {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBusCarInfoSupportService carInfoSupportService;
+ @Autowired
+ private IBusCarPositionService busCarPositionService;
+ /**
+ * 跟踪(查询车辆最新位置)
+ */
+ @RequestMapping("/track")
+ public Object track(Long carId){
+ BusCarInfo carInfo = carInfoSupportService.selectByCarId(carId);
+ BusCarPosition positionInfo = busCarPositionService.selectLastestCarPosition(carId);
+ CarPositionDto carPositionDto = new CarPositionDto();
+ CarPositionDto.convCarInfo(carInfo,carPositionDto);
+ CarPositionDto.convPositionInfo(positionInfo,carPositionDto);
+ carPositionDto.setStatus(busCarPositionService.getCarStatus(positionInfo));
+ return ResponseData.success(carPositionDto);
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmRecordSupportServiceImpl.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmRecordSupportServiceImpl.java
new file mode 100644
index 0000000..d1fdc33
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmRecordSupportServiceImpl.java
@@ -0,0 +1,22 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.alarm.model.BusAlarmRecord;
+import com.casic.missiles.modular.alarm.service.IBusAlarmRecordSupportService;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @ClassName BusAlarmRecordSupportServiceImpl
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2021/4/23 14:24
+ * @Version 1.0
+ */
+@Component
+public class BusAlarmRecordSupportServiceImpl implements IBusAlarmRecordSupportService {
+ @Override
+ public List selectAlarm(Long aLong, String s, String s1) {
+ return null;
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmThresholdSupportServiceImpl.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmThresholdSupportServiceImpl.java
new file mode 100644
index 0000000..16f715a
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmThresholdSupportServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.alarm.model.BusAlarmThreshold;
+import com.casic.missiles.modular.alarm.service.IBusAlarmThresholdSupportService;
+import org.springframework.stereotype.Component;
+
+/**
+ * @ClassName BusAlarmThresholdSupportServiceImpl
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2021/4/23 14:10
+ * @Version 1.0
+ */
+@Component
+public class BusAlarmThresholdSupportServiceImpl implements IBusAlarmThresholdSupportService {
+ @Override
+ public BusAlarmThreshold selectByCarId(Long aLong) {
+ return null;
+ }
+}
diff --git a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java
index 0005292..d07a135 100644
--- a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java
+++ b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java
@@ -33,7 +33,7 @@
@RequestMapping("/statistic")
public class StatisticsController extends BaseController {
- @Value("${mybatis-plus.configuration-properties.bizDataBaseName}")
+ @Value("${mybatis-plus.configuration-properties.sanitationBaseName}")
private String bizDataBaseName;
@Value("${mybatis-plus.configuration-properties.carDataBaseName}")
private String carDataBaseName;
diff --git a/casic-service-car/pom.xml b/casic-service-car/pom.xml
index d4c871e..8eb42ae 100644
--- a/casic-service-car/pom.xml
+++ b/casic-service-car/pom.xml
@@ -28,9 +28,33 @@
casic-admin-support
${admin.version}
-
+
+ com.casic
+ casic-car-support
+ 1.0.0
+
+
+ com.casic
+ casic-car-base
+ 1.0.0
+
+
+ com.casic
+ casic-car-position
+ 1.0.0
+
+
+ com.casic
+ casic-data-es
+ ${admin.version}
+
+
+ com.casic
+ casic-data-support
+ ${admin.version}
+
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
index f4638d8..71c4c9e 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
@@ -1,5 +1,10 @@
package com.casic.missiles.modular.system.alarm.dto;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @ClassName RouteInfoDTO
* @Description 车辆信息数据
@@ -7,5 +12,7 @@
* @Date 2021/3/5 16:38
* @Version 1.0
*/
+@Data
public class RouteInfoDTO {
+ private Map lineNums = new HashMap<>();
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
index c5fa1f5..c8ea1ed 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
@@ -10,13 +10,14 @@
/**
* @ClassName AlarmStrategyContext
- * @Description 上下文
+ * @Description 告警上下文 执行策略验证
* @Author lwh
* @Date 2021/3/5 15:46
* @Version 1.0
*/
public class AlarmStrategyContext {
+
private List strategies = new ArrayList<>();
/**
@@ -38,6 +39,7 @@
* @param strategy
*/
public void addStrategy(BaseAlarmStrategy strategy) {
+ strategy.setContext(this);
strategies.add(strategy);
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
index 6903de7..2682c26 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
@@ -1,25 +1,32 @@
package com.casic.missiles.modular.system.alarm.strategy;
import com.casic.missiles.core.base.response.ResponseData;
-import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
import com.casic.missiles.modular.system.alarm.dto.PostionDTO;
import com.casic.missiles.modular.system.alarm.dto.RouteInfoDTO;
+import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
+
+import java.util.HashMap;
+import java.util.Map;
/**
* @ClassName TrajectoryTimeAlarmStrategy
- * @Description 车辆轨迹巡查 作业次数巡查
+ * @Description 车辆轨迹巡查 作业次数巡查(时间间隔出现在线段中某个点附近的次数,同时根据点位)
* @Author lwh
* @Date 2021/3/5 16:37
* @Version 1.0
*/
public class TrajectoryTimeAlarmStrategy extends BaseAlarmStrategy {
+
+
+
/**
* @param data 校验数据
* @return
*/
@Override
public ResponseData processHandler(AlarmProcessDTO data) {
+ //
return null;
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
index 7d56b9f..3fd22c8 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
@@ -2,13 +2,16 @@
import com.casic.missiles.core.base.response.ResponseData;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
+import com.casic.missiles.modular.system.alarm.strategy.AlarmStrategyContext;
/**
* 基础思路:提供基础校验接口 分状态实现校验
* 路线报警基础报警handler
+ *
* @author lwh
*/
public abstract class BaseAlarmStrategy {
+ private AlarmStrategyContext context;
/**
* 根据告警规则处理告警数据
@@ -17,4 +20,12 @@
* @return 处理结果
*/
public abstract ResponseData processHandler(AlarmProcessDTO
data);
+
+ public AlarmStrategyContext getContext() {
+ return context;
+ }
+
+ public void setContext(AlarmStrategyContext context) {
+ this.context = context;
+ }
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
new file mode 100644
index 0000000..528593c
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.alarm.strategy.config;
+
+/**
+ * @ClassName AlarmStrategyConfig
+ * @Description 环卫策略配置项
+ * @Author lenovo
+ * @Date 2021/4/23 10:46
+ * @Version 1.0
+ */
+public class AlarmStrategyConfig {
+ /**
+ * 采集点权重 例如:2 则为每两次判定一次 必须为正整数
+ */
+ private String alarmWeight;
+
+ /**
+ * 作业占比阀值 行驶路段数占比最小值(及满足多少占比可作为一次)
+ */
+ private String proportion;
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
new file mode 100644
index 0000000..8359d1b
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
@@ -0,0 +1,118 @@
+package com.casic.missiles.modular.system.alarm.util;
+
+import java.util.List;
+
+/**
+ * 点位信息判定工具类
+ */
+public class GPSCalculatorUtil {
+
+ private static double EARTH_RADIUS = 6378137;
+
+ /**
+ * 计算线段p1p2的距离
+ *
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToPoint(Point p1, Point p2) {
+ if (p1.equals(p2)) {
+ return 0.0;
+ }
+ if ((Math.abs(p1.getLng() - p2.getLng()) < 0.0000000001) && (Math.abs(p1.getLat() - p2.getLat()) < 0.0000000001)) {
+ return 0.0;
+ }
+ double c = Math.sin(p1.getLat()) * Math.sin(p2.getLat()) + Math.cos(p1.getLat()) * Math.cos(p2.getLat()) * Math.cos(p1.getLng() - p2.getLng());
+ if (Math.abs(c - 1) < 0.0000000001) {
+ return 0.0;
+ }
+ double distance = EARTH_RADIUS * Math.acos(c) * Math.PI / 180;
+
+ return distance;
+ }
+
+ /**
+ * 计算点p到线段p1p2之间的距离
+ *
+ * @param p
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToLine(Point p, Point p1, Point p2) {
+ double dist = 0;
+ double p1p2;
+ double pp1;
+ double pp2;
+ // 线段的长度
+ p1p2 = calDistancePointToPoint(p1, p2);
+ // (x1,y1)到点的距离
+ pp1 = calDistancePointToPoint(p, p1);
+ // (x2,y2)到点的距离
+ pp2 = calDistancePointToPoint(p, p2);
+
+ if (pp2 * pp2 >= p1p2 * p1p2 + pp1 * pp1) {
+ dist = pp1;
+ return dist;
+ }
+
+ if (pp1 * pp1 >= p1p2 * p1p2 + pp2 * pp2) {
+ dist = pp2;
+ return dist;
+ }
+ // 半周长
+ double hc = (p1p2 + pp1 + pp2) / 2;
+ // 海伦公式求面积
+ double s = Math.sqrt(hc * (hc - p1p2) * (hc - pp1) * (hc - pp2));
+ // 返回点到线的距离(利用三角形面积公式求高)
+ dist = 2 * s / p1p2;
+ return dist;
+ }
+
+ /**
+ * 计算点是否在矩形内
+ *
+ * @param p
+ * @param max
+ * @param min
+ * @return
+ */
+ public static boolean isPointInRect(Point p, Point max, Point min) {
+ if (p.getLng() < min.getLng() || p.getLng() > max.getLng() || p.getLat() < min.getLat() || p.getLat() > max.getLat()) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+
+ /**
+ * 计算点是否在多边形内
+ *
+ * @param p
+ * @param points
+ * @return
+ */
+ public static boolean isPointInPolygon(Point p, List points) {
+ int nvert = points.size();
+ int i = 0;
+ int j = 0;
+ boolean c = false;
+
+ for (i = 0, j = nvert - 1; i < nvert; j = i++) {
+ if (((points.get(i).getLat() > p.getLat()) != (points.get(j).getLat() > p.getLat())) &&
+ (p.getLng() < (points.get(j).getLng() - points.get(i).getLng()) * (p.getLat() - points.get(i).getLat()) / (points.get(j).getLat() - points.get(i).getLat()) + points.get(i).getLng())) {
+ c = !c;
+ }
+ }
+ return c;
+ }
+
+ public static void main(String[] args) {
+ Point p1 = new Point("116.626215", "28.249713");
+ Point p2 = new Point("116.635054", "28.256459");
+ Point p = new Point("116.6306345", "28.253086");
+ System.out.println(calDistancePointToLine(p, p1, p2));
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java
new file mode 100644
index 0000000..2e8e47e
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.alarm.util;
+
+/**
+ * 点位信息
+ */
+public class Point {
+ private Double lng;
+ private Double lat;
+
+ public Point(String lng, String lat) {
+ this.lng = Double.parseDouble(lng);
+ this.lat = Double.parseDouble(lat);
+ }
+
+ public Double getLng() {
+ return lng;
+ }
+
+ public void setLng(Double lng) {
+ this.lng = lng;
+ }
+
+ public Double getLat() {
+ return lat;
+ }
+
+ public void setLat(Double lat) {
+ this.lat = lat;
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java
new file mode 100644
index 0000000..d051c70
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.modular.car.model.BusCarInfo;
+import com.casic.missiles.modular.car.service.IBusCarInfoSupportService;
+import com.casic.missiles.modular.position.dto.CarPositionDto;
+import com.casic.missiles.modular.position.es.BusCarPosition;
+import com.casic.missiles.modular.position.service.IBusCarPositionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName CarPositionController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2021/4/23 13:45
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/carPosition")
+public class CarPositionController {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBusCarInfoSupportService carInfoSupportService;
+ @Autowired
+ private IBusCarPositionService busCarPositionService;
+ /**
+ * 跟踪(查询车辆最新位置)
+ */
+ @RequestMapping("/track")
+ public Object track(Long carId){
+ BusCarInfo carInfo = carInfoSupportService.selectByCarId(carId);
+ BusCarPosition positionInfo = busCarPositionService.selectLastestCarPosition(carId);
+ CarPositionDto carPositionDto = new CarPositionDto();
+ CarPositionDto.convCarInfo(carInfo,carPositionDto);
+ CarPositionDto.convPositionInfo(positionInfo,carPositionDto);
+ carPositionDto.setStatus(busCarPositionService.getCarStatus(positionInfo));
+ return ResponseData.success(carPositionDto);
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmRecordSupportServiceImpl.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmRecordSupportServiceImpl.java
new file mode 100644
index 0000000..d1fdc33
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmRecordSupportServiceImpl.java
@@ -0,0 +1,22 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.alarm.model.BusAlarmRecord;
+import com.casic.missiles.modular.alarm.service.IBusAlarmRecordSupportService;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @ClassName BusAlarmRecordSupportServiceImpl
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2021/4/23 14:24
+ * @Version 1.0
+ */
+@Component
+public class BusAlarmRecordSupportServiceImpl implements IBusAlarmRecordSupportService {
+ @Override
+ public List selectAlarm(Long aLong, String s, String s1) {
+ return null;
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmThresholdSupportServiceImpl.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmThresholdSupportServiceImpl.java
new file mode 100644
index 0000000..16f715a
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmThresholdSupportServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.alarm.model.BusAlarmThreshold;
+import com.casic.missiles.modular.alarm.service.IBusAlarmThresholdSupportService;
+import org.springframework.stereotype.Component;
+
+/**
+ * @ClassName BusAlarmThresholdSupportServiceImpl
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2021/4/23 14:10
+ * @Version 1.0
+ */
+@Component
+public class BusAlarmThresholdSupportServiceImpl implements IBusAlarmThresholdSupportService {
+ @Override
+ public BusAlarmThreshold selectByCarId(Long aLong) {
+ return null;
+ }
+}
diff --git a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java
index 0005292..d07a135 100644
--- a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java
+++ b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java
@@ -33,7 +33,7 @@
@RequestMapping("/statistic")
public class StatisticsController extends BaseController {
- @Value("${mybatis-plus.configuration-properties.bizDataBaseName}")
+ @Value("${mybatis-plus.configuration-properties.sanitationBaseName}")
private String bizDataBaseName;
@Value("${mybatis-plus.configuration-properties.carDataBaseName}")
private String carDataBaseName;
diff --git a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/system/dao/mapping/JobRecordMapper.xml b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/system/dao/mapping/JobRecordMapper.xml
index b110887..a854ac4 100644
--- a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/system/dao/mapping/JobRecordMapper.xml
+++ b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/system/dao/mapping/JobRecordMapper.xml
@@ -35,7 +35,7 @@
b.CHARGE_PHONE AS chargePersonPhone,
c.ROUTE_NAME as ROUTENAME
FROM
- ${bizDataBaseName}.dcms_car_job_record a
+ ${sanitationBaseName}.dcms_car_job_record a
INNER JOIN ${carDataBaseName}.bus_car_info b ON a.CAR_ID = b.ID
INNER JOIN ${carDataBaseName}.bus_route_info c ON a.ROUTE_ID = c.ID
diff --git a/casic-service-car/pom.xml b/casic-service-car/pom.xml
index d4c871e..8eb42ae 100644
--- a/casic-service-car/pom.xml
+++ b/casic-service-car/pom.xml
@@ -28,9 +28,33 @@
casic-admin-support
${admin.version}
-
+
+ com.casic
+ casic-car-support
+ 1.0.0
+
+
+ com.casic
+ casic-car-base
+ 1.0.0
+
+
+ com.casic
+ casic-car-position
+ 1.0.0
+
+
+ com.casic
+ casic-data-es
+ ${admin.version}
+
+
+ com.casic
+ casic-data-support
+ ${admin.version}
+
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
index f4638d8..71c4c9e 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/dto/RouteInfoDTO.java
@@ -1,5 +1,10 @@
package com.casic.missiles.modular.system.alarm.dto;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @ClassName RouteInfoDTO
* @Description 车辆信息数据
@@ -7,5 +12,7 @@
* @Date 2021/3/5 16:38
* @Version 1.0
*/
+@Data
public class RouteInfoDTO {
+ private Map lineNums = new HashMap<>();
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
index c5fa1f5..c8ea1ed 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/AlarmStrategyContext.java
@@ -10,13 +10,14 @@
/**
* @ClassName AlarmStrategyContext
- * @Description 上下文
+ * @Description 告警上下文 执行策略验证
* @Author lwh
* @Date 2021/3/5 15:46
* @Version 1.0
*/
public class AlarmStrategyContext {
+
private List strategies = new ArrayList<>();
/**
@@ -38,6 +39,7 @@
* @param strategy
*/
public void addStrategy(BaseAlarmStrategy strategy) {
+ strategy.setContext(this);
strategies.add(strategy);
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
index 6903de7..2682c26 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/TrajectoryTimeAlarmStrategy.java
@@ -1,25 +1,32 @@
package com.casic.missiles.modular.system.alarm.strategy;
import com.casic.missiles.core.base.response.ResponseData;
-import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
import com.casic.missiles.modular.system.alarm.dto.PostionDTO;
import com.casic.missiles.modular.system.alarm.dto.RouteInfoDTO;
+import com.casic.missiles.modular.system.alarm.strategy.base.BaseAlarmStrategy;
+
+import java.util.HashMap;
+import java.util.Map;
/**
* @ClassName TrajectoryTimeAlarmStrategy
- * @Description 车辆轨迹巡查 作业次数巡查
+ * @Description 车辆轨迹巡查 作业次数巡查(时间间隔出现在线段中某个点附近的次数,同时根据点位)
* @Author lwh
* @Date 2021/3/5 16:37
* @Version 1.0
*/
public class TrajectoryTimeAlarmStrategy extends BaseAlarmStrategy {
+
+
+
/**
* @param data 校验数据
* @return
*/
@Override
public ResponseData processHandler(AlarmProcessDTO data) {
+ //
return null;
}
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
index 7d56b9f..3fd22c8 100644
--- a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/base/BaseAlarmStrategy.java
@@ -2,13 +2,16 @@
import com.casic.missiles.core.base.response.ResponseData;
import com.casic.missiles.modular.system.alarm.dto.AlarmProcessDTO;
+import com.casic.missiles.modular.system.alarm.strategy.AlarmStrategyContext;
/**
* 基础思路:提供基础校验接口 分状态实现校验
* 路线报警基础报警handler
+ *
* @author lwh
*/
public abstract class BaseAlarmStrategy {
+ private AlarmStrategyContext context;
/**
* 根据告警规则处理告警数据
@@ -17,4 +20,12 @@
* @return 处理结果
*/
public abstract ResponseData processHandler(AlarmProcessDTO
data);
+
+ public AlarmStrategyContext getContext() {
+ return context;
+ }
+
+ public void setContext(AlarmStrategyContext context) {
+ this.context = context;
+ }
}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
new file mode 100644
index 0000000..528593c
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/strategy/config/AlarmStrategyConfig.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.alarm.strategy.config;
+
+/**
+ * @ClassName AlarmStrategyConfig
+ * @Description 环卫策略配置项
+ * @Author lenovo
+ * @Date 2021/4/23 10:46
+ * @Version 1.0
+ */
+public class AlarmStrategyConfig {
+ /**
+ * 采集点权重 例如:2 则为每两次判定一次 必须为正整数
+ */
+ private String alarmWeight;
+
+ /**
+ * 作业占比阀值 行驶路段数占比最小值(及满足多少占比可作为一次)
+ */
+ private String proportion;
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
new file mode 100644
index 0000000..8359d1b
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/GPSCalculatorUtil.java
@@ -0,0 +1,118 @@
+package com.casic.missiles.modular.system.alarm.util;
+
+import java.util.List;
+
+/**
+ * 点位信息判定工具类
+ */
+public class GPSCalculatorUtil {
+
+ private static double EARTH_RADIUS = 6378137;
+
+ /**
+ * 计算线段p1p2的距离
+ *
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToPoint(Point p1, Point p2) {
+ if (p1.equals(p2)) {
+ return 0.0;
+ }
+ if ((Math.abs(p1.getLng() - p2.getLng()) < 0.0000000001) && (Math.abs(p1.getLat() - p2.getLat()) < 0.0000000001)) {
+ return 0.0;
+ }
+ double c = Math.sin(p1.getLat()) * Math.sin(p2.getLat()) + Math.cos(p1.getLat()) * Math.cos(p2.getLat()) * Math.cos(p1.getLng() - p2.getLng());
+ if (Math.abs(c - 1) < 0.0000000001) {
+ return 0.0;
+ }
+ double distance = EARTH_RADIUS * Math.acos(c) * Math.PI / 180;
+
+ return distance;
+ }
+
+ /**
+ * 计算点p到线段p1p2之间的距离
+ *
+ * @param p
+ * @param p1
+ * @param p2
+ * @return
+ */
+ public static double calDistancePointToLine(Point p, Point p1, Point p2) {
+ double dist = 0;
+ double p1p2;
+ double pp1;
+ double pp2;
+ // 线段的长度
+ p1p2 = calDistancePointToPoint(p1, p2);
+ // (x1,y1)到点的距离
+ pp1 = calDistancePointToPoint(p, p1);
+ // (x2,y2)到点的距离
+ pp2 = calDistancePointToPoint(p, p2);
+
+ if (pp2 * pp2 >= p1p2 * p1p2 + pp1 * pp1) {
+ dist = pp1;
+ return dist;
+ }
+
+ if (pp1 * pp1 >= p1p2 * p1p2 + pp2 * pp2) {
+ dist = pp2;
+ return dist;
+ }
+ // 半周长
+ double hc = (p1p2 + pp1 + pp2) / 2;
+ // 海伦公式求面积
+ double s = Math.sqrt(hc * (hc - p1p2) * (hc - pp1) * (hc - pp2));
+ // 返回点到线的距离(利用三角形面积公式求高)
+ dist = 2 * s / p1p2;
+ return dist;
+ }
+
+ /**
+ * 计算点是否在矩形内
+ *
+ * @param p
+ * @param max
+ * @param min
+ * @return
+ */
+ public static boolean isPointInRect(Point p, Point max, Point min) {
+ if (p.getLng() < min.getLng() || p.getLng() > max.getLng() || p.getLat() < min.getLat() || p.getLat() > max.getLat()) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+
+ /**
+ * 计算点是否在多边形内
+ *
+ * @param p
+ * @param points
+ * @return
+ */
+ public static boolean isPointInPolygon(Point p, List points) {
+ int nvert = points.size();
+ int i = 0;
+ int j = 0;
+ boolean c = false;
+
+ for (i = 0, j = nvert - 1; i < nvert; j = i++) {
+ if (((points.get(i).getLat() > p.getLat()) != (points.get(j).getLat() > p.getLat())) &&
+ (p.getLng() < (points.get(j).getLng() - points.get(i).getLng()) * (p.getLat() - points.get(i).getLat()) / (points.get(j).getLat() - points.get(i).getLat()) + points.get(i).getLng())) {
+ c = !c;
+ }
+ }
+ return c;
+ }
+
+ public static void main(String[] args) {
+ Point p1 = new Point("116.626215", "28.249713");
+ Point p2 = new Point("116.635054", "28.256459");
+ Point p = new Point("116.6306345", "28.253086");
+ System.out.println(calDistancePointToLine(p, p1, p2));
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java
new file mode 100644
index 0000000..2e8e47e
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/alarm/util/Point.java
@@ -0,0 +1,30 @@
+package com.casic.missiles.modular.system.alarm.util;
+
+/**
+ * 点位信息
+ */
+public class Point {
+ private Double lng;
+ private Double lat;
+
+ public Point(String lng, String lat) {
+ this.lng = Double.parseDouble(lng);
+ this.lat = Double.parseDouble(lat);
+ }
+
+ public Double getLng() {
+ return lng;
+ }
+
+ public void setLng(Double lng) {
+ this.lng = lng;
+ }
+
+ public Double getLat() {
+ return lat;
+ }
+
+ public void setLat(Double lat) {
+ this.lat = lat;
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java
new file mode 100644
index 0000000..d051c70
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/controller/CarPositionController.java
@@ -0,0 +1,43 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.service.ICommonPermissionService;
+import com.casic.missiles.modular.car.model.BusCarInfo;
+import com.casic.missiles.modular.car.service.IBusCarInfoSupportService;
+import com.casic.missiles.modular.position.dto.CarPositionDto;
+import com.casic.missiles.modular.position.es.BusCarPosition;
+import com.casic.missiles.modular.position.service.IBusCarPositionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName CarPositionController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2021/4/23 13:45
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/carPosition")
+public class CarPositionController {
+ @Autowired
+ private ICommonPermissionService permissionService;
+ @Autowired
+ private IBusCarInfoSupportService carInfoSupportService;
+ @Autowired
+ private IBusCarPositionService busCarPositionService;
+ /**
+ * 跟踪(查询车辆最新位置)
+ */
+ @RequestMapping("/track")
+ public Object track(Long carId){
+ BusCarInfo carInfo = carInfoSupportService.selectByCarId(carId);
+ BusCarPosition positionInfo = busCarPositionService.selectLastestCarPosition(carId);
+ CarPositionDto carPositionDto = new CarPositionDto();
+ CarPositionDto.convCarInfo(carInfo,carPositionDto);
+ CarPositionDto.convPositionInfo(positionInfo,carPositionDto);
+ carPositionDto.setStatus(busCarPositionService.getCarStatus(positionInfo));
+ return ResponseData.success(carPositionDto);
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmRecordSupportServiceImpl.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmRecordSupportServiceImpl.java
new file mode 100644
index 0000000..d1fdc33
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmRecordSupportServiceImpl.java
@@ -0,0 +1,22 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.alarm.model.BusAlarmRecord;
+import com.casic.missiles.modular.alarm.service.IBusAlarmRecordSupportService;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @ClassName BusAlarmRecordSupportServiceImpl
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2021/4/23 14:24
+ * @Version 1.0
+ */
+@Component
+public class BusAlarmRecordSupportServiceImpl implements IBusAlarmRecordSupportService {
+ @Override
+ public List selectAlarm(Long aLong, String s, String s1) {
+ return null;
+ }
+}
diff --git a/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmThresholdSupportServiceImpl.java b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmThresholdSupportServiceImpl.java
new file mode 100644
index 0000000..16f715a
--- /dev/null
+++ b/casic-service-car/src/main/java/com/casic/missiles/modular/system/service/impl/BusAlarmThresholdSupportServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import com.casic.missiles.modular.alarm.model.BusAlarmThreshold;
+import com.casic.missiles.modular.alarm.service.IBusAlarmThresholdSupportService;
+import org.springframework.stereotype.Component;
+
+/**
+ * @ClassName BusAlarmThresholdSupportServiceImpl
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2021/4/23 14:10
+ * @Version 1.0
+ */
+@Component
+public class BusAlarmThresholdSupportServiceImpl implements IBusAlarmThresholdSupportService {
+ @Override
+ public BusAlarmThreshold selectByCarId(Long aLong) {
+ return null;
+ }
+}
diff --git a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java
index 0005292..d07a135 100644
--- a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java
+++ b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/statistics/StatisticsController.java
@@ -33,7 +33,7 @@
@RequestMapping("/statistic")
public class StatisticsController extends BaseController {
- @Value("${mybatis-plus.configuration-properties.bizDataBaseName}")
+ @Value("${mybatis-plus.configuration-properties.sanitationBaseName}")
private String bizDataBaseName;
@Value("${mybatis-plus.configuration-properties.carDataBaseName}")
private String carDataBaseName;
diff --git a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/system/dao/mapping/JobRecordMapper.xml b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/system/dao/mapping/JobRecordMapper.xml
index b110887..a854ac4 100644
--- a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/system/dao/mapping/JobRecordMapper.xml
+++ b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/system/dao/mapping/JobRecordMapper.xml
@@ -35,7 +35,7 @@
b.CHARGE_PHONE AS chargePersonPhone,
c.ROUTE_NAME as ROUTENAME
FROM
- ${bizDataBaseName}.dcms_car_job_record a
+ ${sanitationBaseName}.dcms_car_job_record a
INNER JOIN ${carDataBaseName}.bus_car_info b ON a.CAR_ID = b.ID
INNER JOIN ${carDataBaseName}.bus_route_info c ON a.ROUTE_ID = c.ID
diff --git a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/system/dao/mapping/JobStatisticsDayMapper.xml b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/system/dao/mapping/JobStatisticsDayMapper.xml
index cfe6c60..9c4605e 100644
--- a/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/system/dao/mapping/JobStatisticsDayMapper.xml
+++ b/casic-service-job-monitor/src/main/java/com/casic/missiles/modular/system/dao/mapping/JobStatisticsDayMapper.xml
@@ -21,7 +21,7 @@
count(1) AS count,
date_format( CREATE_TIME, '%Y-%m-%d' ) AS name
FROM
- ${bizDataBaseName}.dcms_toilet_clean_log
+ ${sanitationBaseName}.dcms_toilet_clean_log
${ew.sqlSegment}
@@ -34,7 +34,7 @@
count(1) AS count,
date_format( CREATE_TIME, '%Y-%m' ) AS name
FROM
- ${bizDataBaseName}.dcms_toilet_clean_log
+ ${sanitationBaseName}.dcms_toilet_clean_log
${ew.sqlSegment}
@@ -47,7 +47,7 @@
count(1) AS count,
date_format(a.CURR_DAY, '%Y-%m' ) AS name
FROM
- ${bizDataBaseName}.dcms_car_job_statistics_day a
+ ${sanitationBaseName}.dcms_car_job_statistics_day a
INNER JOIN ${carDataBaseName}.bus_car_info b on a.CAR_ID = b.ID
@@ -61,7 +61,7 @@
count(1) AS count,
date_format( a.CURR_DAY, '%Y-%m-%d' ) AS name
FROM
- ${bizDataBaseName}.dcms_car_job_statistics_day a
+ ${sanitationBaseName}.dcms_car_job_statistics_day a
INNER JOIN ${carDataBaseName}.bus_car_info b on a.CAR_ID = b.ID
@@ -72,7 +72,7 @@