diff --git a/ebike-feign/src/main/java/com/ebike/feign/clients/MaintenanceFeignClient.java b/ebike-feign/src/main/java/com/ebike/feign/clients/MaintenanceFeignClient.java index db449481..32296df6 100644 --- a/ebike-feign/src/main/java/com/ebike/feign/clients/MaintenanceFeignClient.java +++ b/ebike-feign/src/main/java/com/ebike/feign/clients/MaintenanceFeignClient.java @@ -99,4 +99,12 @@ public interface MaintenanceFeignClient { */ @GetMapping("ebikeBikeInfo/updateVehicleStatus") JsonResult updateVehicleStatus(@RequestBody ReqVehicleStatusUpdateDto request); + + /** + * 根据运营区id获取所有车辆 + * + * @return 结果 + */ + @GetMapping("ebikeBikeInfo/getVehicleDetailsByRegionId") + JsonResult> getVehicleDetailsByRegionId(@RequestParam(name = "regionId") String regionId); } diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeOperationRegionServiceImpl.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeOperationRegionServiceImpl.java index ba35dd6f..556f79c7 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeOperationRegionServiceImpl.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeOperationRegionServiceImpl.java @@ -1,7 +1,7 @@ package com.cdzy.ebikeoperate.service.impl; import cn.dev33.satoken.stp.StpUtil; -import com.alibaba.fastjson2.JSONObject; +import com.cdzy.common.enums.Code; import com.cdzy.common.model.JsonResult; import com.cdzy.common.model.PageParam; import com.cdzy.common.model.ResGPSDto; @@ -15,7 +15,10 @@ import com.cdzy.ebikeoperate.model.dto.request.ReqAuthorizeOperationDto; import com.cdzy.ebikeoperate.model.dto.request.ReqBatchRegionDto; import com.cdzy.ebikeoperate.model.dto.request.ReqEbikeOperationRegionDto; import com.cdzy.ebikeoperate.model.dto.request.ReqEbikePointDto; -import com.cdzy.ebikeoperate.model.dto.response.*; +import com.cdzy.ebikeoperate.model.dto.response.EbikeOperationRegionPageDto; +import com.cdzy.ebikeoperate.model.dto.response.ResEbikeOperationRegionDto; +import com.cdzy.ebikeoperate.model.dto.response.ResOperationRegionInfo; +import com.cdzy.ebikeoperate.model.dto.response.ZoneDto; import com.cdzy.ebikeoperate.model.pojo.EbikeAdministrationZone; import com.cdzy.ebikeoperate.model.pojo.EbikeOperationRegion; import com.cdzy.ebikeoperate.model.pojo.EbikePoint; @@ -24,7 +27,6 @@ import com.cdzy.ebikeoperate.service.EbikeOperationRegionService; import com.cdzy.ebikeoperate.utils.RedisUtil; import com.ebike.feign.clients.MaintenanceFeignClient; import com.ebike.feign.clients.StaffFeignClient; -import com.ebike.feign.model.res.ReqEcuSnDto; import com.ebike.feign.model.rsp.RspBikeInfo; import com.ebike.feign.model.rsp.StaffFeign; import com.mybatisflex.core.paginate.Page; @@ -34,7 +36,6 @@ import com.mybatisflex.spring.service.impl.ServiceImpl; import jakarta.annotation.Resource; import org.locationtech.jts.geom.Coordinate; import org.springframework.beans.BeanUtils; -import org.springframework.data.geo.Point; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; @@ -95,7 +96,7 @@ public class EbikeOperationRegionServiceImpl extends ServiceImpl pageOperationRegion(PageParam pageParam, String simpleName, String regionName, Integer inOperation) { QueryWrapper queryWrapper = QueryWrapper.create() - .select(EBIKE_OPERATION_REGION.ALL_COLUMNS,EBIKE_ADMINISTRATION_ZONE.NAME.as(ResOperationRegionInfo::getZoneName),EBIKE_REGION_LEVEL.LEVEL_NAME) + .select(EBIKE_OPERATION_REGION.ALL_COLUMNS, EBIKE_ADMINISTRATION_ZONE.NAME.as(ResOperationRegionInfo::getZoneName), EBIKE_REGION_LEVEL.LEVEL_NAME) .leftJoin(EBIKE_REGION_LEVEL).on(EBIKE_REGION_LEVEL.LEVEL_VALUE.eq(EBIKE_OPERATION_REGION.OPERATION_LEVEL)) .leftJoin(EBIKE_ADMINISTRATION_ZONE).on(EBIKE_ADMINISTRATION_ZONE.ID.eq(EBIKE_OPERATION_REGION.ZONE_ID)) .where(EBIKE_REGION_LEVEL.LEVEL_TYPE.eq(RegionLevelType.OPERATION)) @@ -108,7 +109,7 @@ public class EbikeOperationRegionServiceImpl extends ServiceImpl ebikeOperationRegions = this.mapper.selectListByIds(delRegionDto.getIds()); ebikeOperationRegions.forEach(region -> - delPoints(region.getOrgId(), region.getOperationRegionId()) + delPoints(region.getOrgId(), region.getOperationRegionId()) ); this.mapper.deleteBatchByIds(delRegionDto.getIds()); } @@ -182,35 +183,23 @@ public class EbikeOperationRegionServiceImpl extends ServiceImpl getOperationBike(String regionId) { - QueryWrapper queryWrapper = QueryWrapper.create() - .where(EBIKE_POINT.REGION_ID.eq(regionId)); - List ebikePoints = pointMapper.selectListByQuery(queryWrapper); - List list = ebikePoints.stream().filter(Objects::nonNull).map(point -> new Point(point.getLongitude(), point.getLatitude())).toList(); - List redisPoints = redisUtil.searchBikeByPolygon(list); - if (redisPoints == null || redisPoints.isEmpty()) { - return List.of(); - } - Map map = new HashMap<>(); - for (RedisPoint redisPoint : redisPoints) { - map.put(redisPoint.getMember(), redisPoint); - } - List strings = redisPoints.stream().map(RedisPoint::getMember).toList(); - ReqEcuSnDto ecuSnDto = new ReqEcuSnDto(strings); - JsonResult> result = maintenanceFeignClient.getBikeByEcuSn(ecuSnDto); - if (result.getCode() != 200) { + JsonResult> bikeInfoJsonResult = maintenanceFeignClient.getVehicleDetailsByRegionId(regionId); + if (bikeInfoJsonResult.getCode() != Code.SUCCESS) { throw new RuntimeException("获取车辆信息失败"); } -// List ecuSns = new ArrayList<>(); -// List objects = redisUtil.multiGet(ecuSns); -// List resGPSDtos = objects.stream().map(object -> { -// return (ResGPSDto) object; -// }).toList(); + List bikeInfos = bikeInfoJsonResult.getData(); + List ecuSns = bikeInfos.stream().map(RspBikeInfo::getEcuSn).distinct().toList(); + List objects = redisUtil.multiGet(ecuSns); + Map map = new HashMap<>(); + objects.forEach(object -> { + ResGPSDto gpsDto = (ResGPSDto) object; + map.put(gpsDto.getEcuSn(), gpsDto); + }); - List bikeInfos = result.getData(); bikeInfos.forEach(rspBikeInfo -> { - RedisPoint redisPoint = map.get(rspBikeInfo.getEcuSn()); - rspBikeInfo.setLongitude(redisPoint.getPoint().getX()); - rspBikeInfo.setLatitude(redisPoint.getPoint().getY()); + ResGPSDto gpsDto = map.get(rspBikeInfo.getEcuSn()); + rspBikeInfo.setLongitude(gpsDto.getLongitude()); + rspBikeInfo.setLatitude(gpsDto.getLatitude()); }); return bikeInfos; }