From 265e2ba6c75ce20257c26c346ce3c843d45c1356 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 04 三月 2026 18:04:22 +0800
Subject: [PATCH] 修改点位编辑的处理逻辑

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 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 128e085..5572217 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
@@ -261,7 +261,49 @@
         }
 
         LocalTime now = LocalTime.now();
+        List<Long> areaIds = list.stream().map(XpPointsListVo::getElectronicAreaId).collect(Collectors.toList());
+        List<XpElectronicFenceArea> xpElectronicFenceAreas = xpElectronicFenceAreaService.listByIds(areaIds);
+        List<Long> fenceIds = xpElectronicFenceAreas.stream().map(XpElectronicFenceArea::getElectronicId).collect(Collectors.toList());
+        List<XpElectronicFence> xpElectronicFences = xpElectronicFenceService.listByIds(fenceIds);
         for (XpPointsListVo xpPointsListVo : list) {
+            Integer operationType = xpPointsListVo.getOperationType();
+            if(1 == operationType){
+                //与运营区同步
+                XpElectronicFenceArea xpElectronicFenceArea = xpElectronicFenceAreas.stream().filter(s -> s.getId().equals(xpPointsListVo.getElectronicAreaId())).findFirst().orElse(null);
+                if(null == xpElectronicFenceArea){
+                    // 不在运营段
+                    xpPointsListVo.setState(0);
+                }
+                XpElectronicFence xpElectronicFence = xpElectronicFences.stream().filter(s -> s.getId().equals(xpElectronicFenceArea.getElectronicId())).findFirst().orElse(null);
+                if(null == xpElectronicFence){
+                    // 不在运营段
+                    xpPointsListVo.setState(0);
+                }
+                //失效类型 1=永不失效 2=定时失效
+                Integer failureType = xpElectronicFence.getFailureType();
+                //永不失效,但是还未到开始时间
+                if(1 == failureType && LocalDateTime.now().isBefore(xpElectronicFence.getEffectTime())){
+                    // 不在运营段
+                    xpPointsListVo.setState(0);
+                }
+                //定时失效,但是当前时间不在时间范围内
+                if(LocalDateTime.now().isBefore(xpElectronicFence.getEffectTime()) || LocalDateTime.now().isAfter(xpElectronicFence.getFailureTime())){
+                    // 不在运营段
+                    xpPointsListVo.setState(0);
+                }
+            }else{
+                //自定义时间段
+                // 判断是否在时间段内
+                boolean intime = getInTime(now, xpPointsListVo.getEffectivePeriod(), xpPointsListVo.getEffectiveTimePeriod());
+                if (!intime) {
+                    // 不在运营段
+                    xpPointsListVo.setState(0);
+                }
+            }
+
+
+
+
             boolean inTime = getInTime(now, xpPointsListVo.getEffectivePeriod(), xpPointsListVo.getEffectiveTimePeriod());
             if (!inTime) {
                 // 不在运营段

--
Gitblit v1.7.1