1.添加通过围栏查询场站的接口
2.围栏详情新增 点位、场站数量统计
3.班次实体类增加 字段
16个文件已修改
158 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpShift.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpPoint.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/PointListQuery.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/XpStationQuery.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/ElectronicFenceDetailVo.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpStationManagementController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mapper/XpElectronicFenceAreaMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mapper/XpStationMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mapper/XpTestElectronicFenceAreaMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/XpPointService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpTestElectronicFenceServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/resources/mapper/XpPointMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/resources/mapper/XpStationMapper.xml 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/resources/mapper/XpTestElectronicFenceAreaMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpShift.java
@@ -55,4 +55,19 @@
    private String restEndTime;
    @ApiModelProperty(value = "上班最早打卡时间")
    private String maxStartTime;
    @ApiModelProperty(value = "上班最晚打卡时间")
    private String minStartTime;
    @ApiModelProperty(value = "下班最早结束时间")
    private String maxEndTime;
    @ApiModelProperty(value = "下班最晚结束时间")
    private String minEndTime;
    @ApiModelProperty(value = "是否跨天")
    private Boolean crossDay;
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpPoint.java
@@ -131,4 +131,8 @@
    @TableField("station_sort_no")
    private Integer stationSortNo;
    @ApiModelProperty(value = "点位上下车 1仅上车点/ 2 仅下车/ 3上下车均可")
    private Integer pointOnOff;
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/PointListQuery.java
@@ -10,6 +10,10 @@
@Data
@ApiModel(value = "点位管理列表查询query")
public class PointListQuery extends BasePage {
    @ApiModelProperty(value = "电子围栏区域id")
    private List<Long> electronicAreaIds;
    @ApiModelProperty(value = "查询参数(名称、poi、唯一ID)")
    private String queryParams;
    @ApiModelProperty(value = "运营状态 1=待启用 2=启用中 3=已停用 4=已失效")
xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/XpStationQuery.java
@@ -12,6 +12,9 @@
    @ApiModelProperty(value = "ids")
    private List<Long> ids;
    @ApiModelProperty(value = "所属电子围栏id")
    private Long electronicId;
    @ApiModelProperty(value = "城市编码")
    private String cityCode;
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/ElectronicFenceDetailVo.java
@@ -14,4 +14,24 @@
    @ApiModelProperty("电子围栏区域列表")
    private List<XpElectronicFenceArea> electronicFenceAreas;
    @ApiModelProperty("点位数量")
    private Numbers pointsNumbers;
    @ApiModelProperty("场站数量")
    private Numbers stationNumbers;
    @Data
    public static class Numbers {
        @ApiModelProperty("总数")
        public   Integer totalNum =0;
        @ApiModelProperty("草稿")
        public   Integer draft =0;
        @ApiModelProperty("启动中")
        public   Integer startingUp =0;
        @ApiModelProperty("待启动")
        public   Integer pendingLaunch =0;
        @ApiModelProperty("已停用")
        public   Integer disabled =0;
        @ApiModelProperty("已失效")
        public   Integer expired =0;
    }
}
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
@@ -7,21 +7,17 @@
import com.xiaopeng.api.dto.operation.ElectronicFenceAreaUpdateStatusDto;
import com.xiaopeng.api.dto.operation.ElectronicFenceOperationStrategyValidateDto;
import com.xiaopeng.api.dto.operation.ElectronicFenceUpdateDto;
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.model.operation.XpRegion;
import com.xiaopeng.api.model.operation.*;
import com.xiaopeng.api.query.operation.ElectronicPageListQuery;
import com.xiaopeng.api.query.operation.PointListQuery;
import com.xiaopeng.api.query.operation.XpStationQuery;
import com.xiaopeng.api.vo.operation.ElectronicFenceDetailVo;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.utils.bean.BeanUtils;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.map.constant.I18nKeyConstant;
import com.xiaopeng.map.service.XpElectronicFenceAreaService;
import com.xiaopeng.map.service.XpElectronicFenceService;
import com.xiaopeng.map.service.XpPointService;
import com.xiaopeng.map.service.XpRegionService;
import com.xiaopeng.map.service.*;
import com.xiaopeng.map.utils.OperationStrategyIndex;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -75,6 +71,9 @@
    @Autowired
    private XpPointService xpPointService;
    @Resource
    private XpStationService xpStationService;
    /**
     * 查询省市管理
     */
@@ -157,6 +156,63 @@
        List<XpElectronicFenceArea> electronicFenceAreaList = xpElectronicFenceAreaService.lambdaQuery().eq(XpElectronicFenceArea::getElectronicId, id)
                .list();
        res.setElectronicFenceAreas(electronicFenceAreaList);
        //点位的总数
        if(!electronicFenceAreaList.isEmpty()){
            PointListQuery query1 = new PointListQuery();
            query1.setElectronicAreaIds(electronicFenceAreaList.stream().map(XpElectronicFenceArea::getId).collect(Collectors.toList()));
            List<XpPoint> pointList = xpPointService.findList(query1);
            ElectronicFenceDetailVo.Numbers pointsNumbers = new ElectronicFenceDetailVo.Numbers();
            if(CollUtil.isNotEmpty(pointList)){
                for (XpPoint xpPoint : pointList) {
                    if (xpPoint.getOperationStatus() == 1) {
                        pointsNumbers.setPendingLaunch(pointsNumbers.getPendingLaunch() + 1);
                    } else if (xpPoint.getOperationStatus() == 2) {
                        pointsNumbers.setStartingUp(pointsNumbers.getStartingUp() + 1);
                    }
                    else if (xpPoint.getOperationStatus() == 3) {
                        pointsNumbers.setExpired(pointsNumbers.getExpired() + 1);
                    }
                    else if (xpPoint.getOperationStatus() == 4) {
                        pointsNumbers.setDisabled(pointsNumbers.getDisabled() + 1);
                    }
                }
                pointsNumbers.setTotalNum(pointList.size());
            }
            res.setPointsNumbers(pointsNumbers);
        }
        //场站总数
        XpStationQuery query2 = new XpStationQuery();
        query2.setElectronicId(id);
        List<XpStation> stationList = xpStationService.findList(query2);
        ElectronicFenceDetailVo.Numbers stationNumbers = new ElectronicFenceDetailVo.Numbers();
        if(CollUtil.isNotEmpty(stationList)){
            //status 场站状态 0=草稿 1=待启用 2=启用中 3=已停用 4=失效
            for (XpStation xpStation : stationList) {
                switch (xpStation.getStatus()) {
                    case 0:
                        stationNumbers.setDraft(stationNumbers.getDraft() + 1);
                        break;
                    case 1:
                        stationNumbers.setPendingLaunch(stationNumbers.getPendingLaunch() + 1);
                        break;
                    case 2:
                        stationNumbers.setStartingUp(stationNumbers.getStartingUp() + 1);
                        break;
                    case 3:
                        stationNumbers.setDisabled(stationNumbers.getDisabled() + 1);
                        break;
                    case 4:
                        stationNumbers.setExpired(stationNumbers.getExpired() + 1);
                        break;
                }
            }
            stationNumbers.setTotalNum(stationList.size());
        }
        res.setStationNumbers(stationNumbers);
        return R.ok(res);
    }
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpStationManagementController.java
@@ -54,13 +54,21 @@
    @ApiOperation(value = "场站管理已经启动列表", tags = {"管理后台-运营-场站管理"})
    @GetMapping("/findListEnable")
    public R<List<XpStation>> findListEnable(@RequestParam String cityCode) {
    public R<List<XpStation>> findListByCityCode(@RequestParam String cityCode) {
        XpStationQuery query = new XpStationQuery();
        query.setCityCode(cityCode);
        return R.ok( xpStationService.findList(query));
    }
    @ApiOperation(value = "场站管理列表", tags = {"管理后台-运营-场站管理"})
    @PostMapping("/findList")
    public R<List<XpStation>> findList(@RequestBody XpStationQuery query) {
        List<XpStation> list = xpStationService.findList(query);
        return R.ok(list);
    }
    @ApiOperation(value = "场站管理分页列表", tags = {"管理后台-运营-场站管理"})
    @PostMapping("/pageList")
    public R<PageInfo<XpStation>> pageList(@RequestBody XpStationQuery query) {
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mapper/XpElectronicFenceAreaMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xiaopeng.api.model.operation.XpElectronicFenceArea;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
@@ -12,6 +13,7 @@
 * @author liu
 * @since 2026-02-03
 */
@Mapper
public interface XpElectronicFenceAreaMapper extends BaseMapper<XpElectronicFenceArea> {
}
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mapper/XpStationMapper.java
@@ -4,6 +4,7 @@
import com.xiaopeng.api.model.operation.XpStation;
import com.xiaopeng.api.query.operation.XpStationQuery;
import com.xiaopeng.common.core.web.page.PageInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -16,6 +17,7 @@
 * @author mitao
 * @since 2026-04-12
 */
@Mapper
public interface XpStationMapper extends BaseMapper<XpStation> {
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mapper/XpTestElectronicFenceAreaMapper.java
@@ -2,8 +2,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xiaopeng.api.model.operation.XpElectronicFenceArea;
import com.xiaopeng.api.model.operation.XpTestElectronicFenceArea;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
@@ -13,6 +13,7 @@
 * @author liu
 * @since 2026-02-03
 */
@Mapper
public interface XpTestElectronicFenceAreaMapper extends BaseMapper<XpTestElectronicFenceArea> {
}
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/XpPointService.java
@@ -72,6 +72,8 @@
    boolean getInTime(LocalTime now,  Integer effectivePeriod, String effectiveTimePeriod);
    List<XpPoint> pointMap(PointMapQuery query);
    List<XpPoint> findList(PointListQuery query);
    List<XpPoint> listAll(PointListQuery query);
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java
@@ -62,7 +62,6 @@
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
@@ -370,6 +369,10 @@
        List<XpPoint> list = this.baseMapper.pointMap(query);
        return list;
    }
    @Override
    public List<XpPoint> findList(PointListQuery query) {
        return this.baseMapper.listAll(query);
    }
    @Override
    public List<XpPoint> listAll(PointListQuery query) {
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpTestElectronicFenceServiceImpl.java
@@ -68,7 +68,7 @@
    @Resource
    private PolygonOverlapService polygonOverlapService;
    @Resource
    @Autowired
    private XpTestElectronicFenceAreaMapper xpElectronicFenceAreaMapper;
    @Autowired
    private MongoTemplate mongoTemplate;
xp-robotaxi-map-boot/src/main/resources/mapper/XpPointMapper.xml
@@ -72,6 +72,14 @@
        select t1.*
        from xp_point t1
        where t1.is_deleted = 0
        <if test="query.electronicAreaIds != null and query.electronicAreaIds.size() > 0">
            and t1.electronic_area_id in
            <foreach collection="query.electronicAreaIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
        <if test="query.cityCode != null and query.cityCode != ''">
            and t1.city_code = #{query.cityCode}
        </if>
xp-robotaxi-map-boot/src/main/resources/mapper/XpStationMapper.xml
@@ -19,6 +19,10 @@
                #{id}
            </foreach>
        </if>
        <if test="query.electronicId != null">
            and a.electronic_id = #{query.electronicId}
        </if>
        <if test="query.cityCode != null and query.cityCode != ''">
            and a.city_code = #{query.cityCode}
        </if>
xp-robotaxi-map-boot/src/main/resources/mapper/XpTestElectronicFenceAreaMapper.xml
@@ -11,7 +11,7 @@
        <result column="area_description" property="areaDescription" />
        <result column="area_status" property="areaStatus" />
        <result column="fence_points" property="fencePoints" />
        <result column="is_deleted" property="isDeleted" />
        <result column="is_deleted" property="deleted" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
        <result column="create_by" property="createBy" />