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" />