From 297e64789d01866faaeabd484cbf656a51a60632 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 13 三月 2026 17:17:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java | 37 +++++++++++++++++++++++++++++--------
1 files changed, 29 insertions(+), 8 deletions(-)
diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java
index 2c1b998..21b89c5 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java
@@ -4,11 +4,13 @@
import com.xiaopeng.api.dto.operation.PointAddDto;
import com.xiaopeng.api.dto.operation.PointUpdateDto;
import com.xiaopeng.api.dto.operation.XpPointEnableDisableDto;
+import com.xiaopeng.api.model.operation.XpCruisePlanPoint;
import com.xiaopeng.api.model.operation.XpElectronicFence;
import com.xiaopeng.api.model.operation.XpElectronicFenceArea;
import com.xiaopeng.api.model.operation.XpPoint;
import com.xiaopeng.api.query.operation.PointListQuery;
import com.xiaopeng.api.query.operation.PointPageListListQuery;
+import com.xiaopeng.map.constant.I18nKeyConstant;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.utils.WebUtils;
@@ -16,12 +18,14 @@
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.api.dto.map.XpPointExportExcelQuery;
import com.xiaopeng.map.exportExcel.XpPointExportExcel;
+import com.xiaopeng.map.mapper.XpCruisePlanPointMapper;
import com.xiaopeng.map.mangodb.service.XpGeoFencingPolygonService;
import com.xiaopeng.map.service.XpElectronicFenceAreaService;
import com.xiaopeng.map.service.XpElectronicFenceService;
import com.xiaopeng.map.service.XpPointService;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -67,6 +71,8 @@
private XpElectronicFenceService xpElectronicFenceService;
@Resource
private XpGeoFencingPolygonService xpGeoFencingPolygonService;
+ @Resource
+ private XpCruisePlanPointMapper xpCruisePlanPointMapper;
@ApiOperation(value = "获取所有运营中的区域", response = XpElectronicFenceArea.class)
@@ -154,9 +160,9 @@
@PostMapping("/add")
@ResponseBody
@ApiOperation(value = "新增点位")
- public R<XpPoint> add(@Validated @RequestBody PointAddDto pointAddDto) {
- if (!xpGeoFencingPolygonService.isInFence(pointAddDto.getPointLon(), pointAddDto.getPointLat(), pointAddDto.getFenceId(), "prohibited_area")) {
- return R.fail("in_prohibited_area");
+ public R<?> add(@Validated @RequestBody PointAddDto pointAddDto) {
+ if (xpGeoFencingPolygonService.isInFence(pointAddDto.getPointLon(), pointAddDto.getPointLat(), pointAddDto.getFenceId(), "prohibited_area")) {
+ return R.ok("in_prohibited_area");
}
return R.ok(xpPointService.addPointWithGeneratedNumber(pointAddDto));
}
@@ -168,7 +174,22 @@
@ResponseBody
@ApiOperation(value = "删除点位")
public R deletePoint(@RequestParam("ids") String ids) {
- xpPointService.removeBatchByIds(Arrays.stream(ids.split(",")).map(Long::parseLong).collect(Collectors.toList()));
+ List<Long> pointIds = Arrays.stream(ids.split(","))
+ .map(String::trim)
+ .filter(s -> !s.isEmpty())
+ .map(Long::parseLong)
+ .distinct()
+ .collect(Collectors.toList());
+ if (pointIds.isEmpty()) {
+ return R.ok();
+ }
+ Long relatedCount = xpCruisePlanPointMapper.selectCount(
+ new LambdaQueryWrapper<XpCruisePlanPoint>().in(XpCruisePlanPoint::getPointId, pointIds)
+ );
+ if (relatedCount != null && relatedCount > 0) {
+ throw new ServiceException("操作失败,该点位有关联的巡游点位", I18nKeyConstant.POINT_DELETE_HAS_CRUISE_PLAN_POINT);
+ }
+ xpPointService.removeBatchByIds(pointIds);
return R.ok();
}
@@ -184,14 +205,14 @@
if (!xpPoint.getElectronicAreaId().equals(pointAddDto.getElectronicAreaId())) {
BeanUtils.copyProperties(pointAddDto, xpPoint);
- if (!xpGeoFencingPolygonService.isInFence(pointAddDto.getPointLon(), pointAddDto.getPointLat(), pointAddDto.getFenceId(), "prohibited_area")) {
- return R.fail("in_prohibited_area");
+ if (xpGeoFencingPolygonService.isInFence(pointAddDto.getPointLon(), pointAddDto.getPointLat(), pointAddDto.getFenceId(), "prohibited_area")) {
+ return R.ok("in_prohibited_area");
}
xpPointService.updateById(xpPoint);
} else {
- if (!xpGeoFencingPolygonService.isInFence(pointAddDto.getPointLon(), pointAddDto.getPointLat(), pointAddDto.getFenceId(), "prohibited_area")) {
- return R.fail("in_prohibited_area");
+ if (xpGeoFencingPolygonService.isInFence(pointAddDto.getPointLon(), pointAddDto.getPointLat(), pointAddDto.getFenceId(), "prohibited_area")) {
+ return R.ok("in_prohibited_area");
}
//先删除原有的数据,因为会存在点位的从属区域变化的情况,所以先删除原有的数据后添加新的数据重新分片到新的库中
--
Gitblit v1.7.1