xuhy
2026-04-23 1a787ef055b0928a4dad02fc81e737e21965f70d
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);