liujie
2026-02-26 b4b7cd341ef554b3832cdb9abf210d48016d42cb
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceAreaServiceImpl.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.api.dto.map.RouteAndFareDto;
import com.xiaopeng.api.dto.operation.LonLatDto;
import com.xiaopeng.api.feignClient.operation.XpElectronicFenceClient;
import com.xiaopeng.api.feignClient.operation.XpSystemSettingClient;
import com.xiaopeng.api.model.map.XpGeoFencingPolygon;
import com.xiaopeng.api.model.operation.XpElectronicFence;
@@ -52,8 +53,7 @@
    @Resource
    private XpElectronicFenceMapper xpElectronicFenceMapper;
    private XpElectronicFenceClient xpElectronicFenceClient;
    @Resource
    private XpSystemSettingClient xpSystemSettingClient;
@@ -81,9 +81,12 @@
        if(fenceIds.isEmpty()){
            return new ArrayList<>();
        }
        List<XpElectronicFence> xpElectronicFences = xpElectronicFenceMapper.selectBatchIds(fenceIds);
        R<List<XpElectronicFence>> xpElectronicFences = xpElectronicFenceClient.selectBatchIds(fenceIds);
        if(xpElectronicFences==null){
            return new ArrayList<>();
        }
        for (XpGeoFencingPolygon polygon : xpGeoFencingPolygons) {
            XpElectronicFence xpElectronicFence = xpElectronicFences.stream().filter(e -> e.getId().toString().equals(polygon.getFenceId())).findFirst().orElse(null);
            XpElectronicFence xpElectronicFence = xpElectronicFences.getData().stream().filter(e -> e.getId().toString().equals(polygon.getFenceId())).findFirst().orElse(null);
            if(xpElectronicFence==null){
                continue;
            }
@@ -199,9 +202,9 @@
                String collect = coordinates.stream().collect(Collectors.joining(";"));
                if (ElectricFenceUtil.areaMonitoring(collect, dto.getLongitude()+","+dto.getLatitude())) {
                    String fenceId = polygon.getFenceId();
                    XpElectronicFence xpElectronicFence = xpElectronicFenceMapper.selectById(fenceId);
                    R<XpElectronicFence> xpElectronicFence = xpElectronicFenceClient.selectById(fenceId);
                    if(xpElectronicFence!=null){
                        String operationStrategy = xpElectronicFence.getOperationStrategy();
                        String operationStrategy = xpElectronicFence.getData().getOperationStrategy();
                        Boolean inOperationTime = isInOperationTime(operationStrategy);
                        if(inOperationTime){
                            vo.setStatus("inside");