From 4ecf545f43b6a2fff7d3e426a86411e620253221 Mon Sep 17 00:00:00 2001
From: yyy <1083599556@qq.com>
Date: 星期四, 23 四月 2026 22:29:05 +0800
Subject: [PATCH] 1.发送微信订阅通知 完成40% 2.通过围栏查询 场站 3.围栏详情查询 点位、场站信息 (总数量、启动中、待启动、已停用、已失效) 4.班次 需要增加一个是否跨天 5.修改接口, /map/base/v1/mini-program/cities/list 增加参数 type 1=围栏 2场站 添加场站是否收藏的字段 6.点位情况上报 详情增加上报人的角色

---
 xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java |   48 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 46 insertions(+), 2 deletions(-)

diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
index f8e4103..b41749d 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
@@ -2,6 +2,11 @@
 
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.xiaopeng.api.dto.operation.ElectronicFenceAddDto;
 import com.xiaopeng.api.dto.operation.ElectronicFenceAreaUpdateStatusDto;
@@ -32,6 +37,7 @@
 import javax.annotation.Resource;
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.Collection;
 import java.util.Collections;
@@ -199,8 +205,46 @@
                     case 1:
                         stationNumbers.setPendingLaunch(stationNumbers.getPendingLaunch() + 1);
                         break;
-                    case 2:
-                        stationNumbers.setStartingUp(stationNumbers.getStartingUp() + 1);
+                    case 2: //启动中 判断 待启动的状态 ,当前时间在 运营时间 内是启动中,否则是 待启动
+
+                        LocalDateTime now = LocalDateTime.now();
+
+                        if(xpStation.getOperationType() ==1){//运营类型 1=与运营区同步 2=自定义时间段
+                            LocalDateTime startTime = electronicFence.getEffectTime();//生效时间
+                            LocalDateTime endTime = electronicFence.getFailureTime();//失效时间
+                            if(electronicFence.getFailureType() ==1) {// 失效类型 1=永不失效 2=定时失效
+                                endTime = LocalDateTime.now().plusYears(1);
+                            }
+                            if(!now.isBefore(startTime) && !now.isAfter(endTime)){
+                                stationNumbers.setStartingUp(stationNumbers.getStartingUp() + 1);
+                            }else{
+                                stationNumbers.setPendingLaunch(stationNumbers.getPendingLaunch() + 1);
+                            }
+                        }else {
+                            //数据结构 [{"endTime": "18:00", "startTime": "05:00"}]
+                            JSONArray jsonArray = JSONObject.parseArray(xpStation.getEffectiveTimePeriod());
+
+                            boolean flag = false;
+                            for (Object object : jsonArray) {
+                                JSONObject jsonObject = (JSONObject) object;
+                                String startTimeStr = jsonObject.getString("startTime");
+                                String endTimeStr = jsonObject.getString("endTime");
+                                startTimeStr = LocalDate.now() +" "+ startTimeStr+":00";
+                                endTimeStr = LocalDate.now() + " " + endTimeStr + ":00";
+                                LocalDateTime startTime = LocalDateTimeUtil.parse(startTimeStr, DatePattern.NORM_DATETIME_PATTERN);
+                                LocalDateTime endTime = LocalDateTimeUtil.parse(endTimeStr, DatePattern.NORM_DATETIME_PATTERN);
+                                if(!now.isBefore(startTime) && !now.isAfter(endTime)){
+                                    flag = true;
+                                }else{
+                                    stationNumbers.setPendingLaunch(stationNumbers.getPendingLaunch() + 1);
+                                }
+                            }
+                            if (flag){
+                                stationNumbers.setStartingUp(stationNumbers.getStartingUp() + 1);
+                            }else{
+                                stationNumbers.setPendingLaunch(stationNumbers.getPendingLaunch() + 1);
+                            }
+                        }
                         break;
                     case 3:
                         stationNumbers.setDisabled(stationNumbers.getDisabled() + 1);

--
Gitblit v1.7.1