From eea986df8cd5fb359e87c09eade4f060050de880 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 12 三月 2026 20:48:05 +0800
Subject: [PATCH] 修改bug
---
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 100 insertions(+), 0 deletions(-)
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
index d3b1b0d..41c376d 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
@@ -225,7 +225,57 @@
public List<XpHistoryStartPointsVo> getHistoryStartPoints(HistoryStartPointsDto historyStartPointsDto) {
List<XpPoint> xpPoints = this.baseMapper.selectBatchIds(historyStartPointsDto.getPointIds());
ArrayList<XpHistoryStartPointsVo> resultList = new ArrayList<>(10);
+
+ LocalTime now = LocalTime.now();
+ List<Long> areaIds = xpPoints.stream().map(XpPoint::getElectronicAreaId).collect(Collectors.toList());
+ List<XpElectronicFenceArea> xpElectronicFenceAreas = xpElectronicFenceAreaService.listByIds(areaIds);
+ List<Long> fenceIds = xpElectronicFenceAreas.stream().map(XpElectronicFenceArea::getElectronicId).collect(Collectors.toList());
+
+ List<XpElectronicFence> xpElectronicFences = new ArrayList<>();
+ if (CollUtil.isNotEmpty(fenceIds)) {
+ xpElectronicFences = xpElectronicFenceService.listByIds(fenceIds);
+ }
+
+
+
for (XpPoint xpPoint : xpPoints) {
+ if(xpPoint.getOperationStatus()!=2){
+ continue;
+ }
+
+ Integer operationType = xpPoint.getOperationType();
+ if(1 == operationType){
+ //与运营区同步
+ XpElectronicFenceArea xpElectronicFenceArea = xpElectronicFenceAreas.stream().filter(s -> s.getId().equals(xpPoint.getElectronicAreaId())).findFirst().orElse(null);
+ if(null == xpElectronicFenceArea){
+ // 不在运营段
+ continue;
+ }
+ XpElectronicFence xpElectronicFence = xpElectronicFences.stream().filter(s -> s.getId().equals(xpElectronicFenceArea.getElectronicId())).findFirst().orElse(null);
+ if(null == xpElectronicFence){
+ // 不在运营段
+ continue;
+ }
+ //失效类型 1=永不失效 2=定时失效
+ Integer failureType = xpElectronicFence.getFailureType();
+ //永不失效,但是还未到开始时间
+ if(1 == failureType && LocalDateTime.now().isBefore(xpElectronicFence.getEffectTime())){
+ continue;
+ }else if(2 == failureType && (LocalDateTime.now().isBefore(xpElectronicFence.getEffectTime()) || LocalDateTime.now().isAfter(xpElectronicFence.getFailureTime()))){
+ //定时失效,但是当前时间不在时间范围内
+ continue;
+ }
+ }else{
+ //自定义时间段
+ // 判断是否在时间段内
+ boolean intime = getInTime(now, xpPoint.getEffectivePeriod(), xpPoint.getEffectiveTimePeriod());
+ if (!intime) {
+ // 不在运营段
+ continue;
+ }
+ }
+
+
XpHistoryStartPointsVo xpHistoryStartPointsVo = new XpHistoryStartPointsVo();
xpHistoryStartPointsVo.setOperationStatus(xpPoint.getOperationStatus());
xpHistoryStartPointsVo.setName(xpPoint.getPointName());
@@ -248,7 +298,57 @@
public List<XpHistoryEndPointsVo> getHistoryEndPoints(HistoryEndPointsDto historyEndPointsDto) {
List<XpPoint> xpPoints = this.baseMapper.selectBatchIds(historyEndPointsDto.getPointIds());
ArrayList<XpHistoryEndPointsVo> resultList = new ArrayList<>(10);
+
+ LocalTime now = LocalTime.now();
+ List<Long> areaIds = xpPoints.stream().map(XpPoint::getElectronicAreaId).collect(Collectors.toList());
+ List<XpElectronicFenceArea> xpElectronicFenceAreas = xpElectronicFenceAreaService.listByIds(areaIds);
+ List<Long> fenceIds = xpElectronicFenceAreas.stream().map(XpElectronicFenceArea::getElectronicId).collect(Collectors.toList());
+
+ List<XpElectronicFence> xpElectronicFences = new ArrayList<>();
+ if (CollUtil.isNotEmpty(fenceIds)) {
+ xpElectronicFences = xpElectronicFenceService.listByIds(fenceIds);
+ }
+
+
+
+
for (XpPoint xpPoint : xpPoints) {
+
+ if(xpPoint.getOperationStatus()!=2){
+ continue;
+ }
+
+ Integer operationType = xpPoint.getOperationType();
+ if(1 == operationType){
+ //与运营区同步
+ XpElectronicFenceArea xpElectronicFenceArea = xpElectronicFenceAreas.stream().filter(s -> s.getId().equals(xpPoint.getElectronicAreaId())).findFirst().orElse(null);
+ if(null == xpElectronicFenceArea){
+ // 不在运营段
+ continue;
+ }
+ XpElectronicFence xpElectronicFence = xpElectronicFences.stream().filter(s -> s.getId().equals(xpElectronicFenceArea.getElectronicId())).findFirst().orElse(null);
+ if(null == xpElectronicFence){
+ // 不在运营段
+ continue;
+ }
+ //失效类型 1=永不失效 2=定时失效
+ Integer failureType = xpElectronicFence.getFailureType();
+ //永不失效,但是还未到开始时间
+ if(1 == failureType && LocalDateTime.now().isBefore(xpElectronicFence.getEffectTime())){
+ continue;
+ }else if(2 == failureType && (LocalDateTime.now().isBefore(xpElectronicFence.getEffectTime()) || LocalDateTime.now().isAfter(xpElectronicFence.getFailureTime()))){
+ //定时失效,但是当前时间不在时间范围内
+ continue;
+ }
+ }else{
+ //自定义时间段
+ // 判断是否在时间段内
+ boolean intime = getInTime(now, xpPoint.getEffectivePeriod(), xpPoint.getEffectiveTimePeriod());
+ if (!intime) {
+ // 不在运营段
+ continue;
+ }
+ }
XpHistoryEndPointsVo xpHistoryEndPointsVo = new XpHistoryEndPointsVo();
xpHistoryEndPointsVo.setOperationStatus(xpPoint.getOperationStatus());
xpHistoryEndPointsVo.setName(xpPoint.getPointName());
--
Gitblit v1.7.1