diff --git a/ebike-feign/src/main/java/com/ebike/feign/clients/OperationsFeignClient.java b/ebike-feign/src/main/java/com/ebike/feign/clients/OperationsFeignClient.java index 309fefc..aca9865 100644 --- a/ebike-feign/src/main/java/com/ebike/feign/clients/OperationsFeignClient.java +++ b/ebike-feign/src/main/java/com/ebike/feign/clients/OperationsFeignClient.java @@ -14,6 +14,7 @@ import com.ebike.feign.model.vo.FeignEbikeBikeRadiusVo; import com.ebike.feign.model.vo.FeignEbikeRefundReviewVo; import com.ebike.feign.model.vo.FeignEbikeRegionVo; import com.ebike.feign.model.vo.FeignEbikeReportRecordVo; +import com.ebike.feign.model.vo.FeignEbikeSiteVo; import com.ebike.feign.model.vo.FeignInspectionSwapOrderVo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; @@ -157,4 +158,12 @@ public interface OperationsFeignClient { */ @GetMapping("/ebikeEcuInfo/api/findBikeByBikeCode") JsonResult findBikeByBikeCode(@RequestParam("bikeCode") String bikeCode); + + /** + * 根据车辆编号获取该运营区所有站点 + * @param bikeCode 车辆编号 + * @return 所有站点 + */ + @GetMapping("/ebikeBikeInfo/api/getAllSiteByBikeCode") + JsonResult> getAllSiteByBikeCode(@RequestParam("bikeCode") String bikeCode); } diff --git a/ebike-feign/src/main/java/com/ebike/feign/model/vo/FeignEbikeSiteVo.java b/ebike-feign/src/main/java/com/ebike/feign/model/vo/FeignEbikeSiteVo.java index 8f8785b..55f2960 100644 --- a/ebike-feign/src/main/java/com/ebike/feign/model/vo/FeignEbikeSiteVo.java +++ b/ebike-feign/src/main/java/com/ebike/feign/model/vo/FeignEbikeSiteVo.java @@ -8,7 +8,6 @@ import org.locationtech.jts.geom.Polygon; import java.io.Serial; import java.io.Serializable; -import java.time.LocalDateTime; /** * @author yanglei diff --git a/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeInfoController.java b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeInfoController.java index 9c97552..c4338f8 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeInfoController.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeInfoController.java @@ -2,9 +2,18 @@ package com.cdzy.operations.controller; import com.cdzy.common.model.request.PageParam; import com.cdzy.common.model.response.JsonResult; -import com.cdzy.operations.model.dto.*; +import com.cdzy.operations.model.dto.EbikeBikeInfoDto; +import com.cdzy.operations.model.dto.EbikeDto; +import com.cdzy.operations.model.dto.EbikeScanInfoDto; +import com.cdzy.operations.model.dto.EbikeUserBikeInfo; +import com.cdzy.operations.model.dto.EbikeUserLockDto; import com.cdzy.operations.model.entity.EbikeBikeInfo; -import com.cdzy.operations.model.vo.*; +import com.cdzy.operations.model.entity.EbikeSite; +import com.cdzy.operations.model.vo.EbikeBatchLaunchVo; +import com.cdzy.operations.model.vo.EbikeBatchUnLaunchVo; +import com.cdzy.operations.model.vo.EbikeBikeBindVo; +import com.cdzy.operations.model.vo.EbikeBikeRadiusVo; +import com.cdzy.operations.model.vo.EbikeEcuMsgDto; import com.cdzy.operations.service.EbikeBikeInfoService; import com.ebike.feign.model.vo.EbikeLockVo; import com.mybatisflex.core.paginate.Page; @@ -17,7 +26,12 @@ import org.locationtech.jts.geom.GeometryFactory; import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.PrecisionModel; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; import java.util.List; @@ -176,7 +190,7 @@ public class EbikeBikeInfoController { * @return 结果 */ @GetMapping("/changeLocation") - public JsonResult changeLocation(@RequestParam("ecuSn") String ecuSn, @RequestParam("longitude") Double longitude,@RequestParam("latitude") Double latitude) { + public JsonResult changeLocation(@RequestParam("ecuSn") String ecuSn, @RequestParam("longitude") Double longitude, @RequestParam("latitude") Double latitude) { QueryWrapper queryWrapper = QueryWrapper.create() .leftJoin(EBIKE_ECU_INFO).on(EBIKE_ECU_INFO.ECU_ID.eq(EBIKE_BIKE_INFO.ECU_ID)) .where(EBIKE_ECU_INFO.ECU_SN.eq(ecuSn)); @@ -184,11 +198,11 @@ public class EbikeBikeInfoController { if (bikeInfo == null) { log.warn("中控未绑定车辆或不存在,SN={}", ecuSn); return JsonResult.failed(); - }else { + } else { GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(), 4326); Point location = geometryFactory.createPoint(new Coordinate(longitude, latitude)); UpdateChain.of(EbikeBikeInfo.class) - .set(EBIKE_BIKE_INFO.LOCATION,location) + .set(EBIKE_BIKE_INFO.LOCATION, location) .where(EBIKE_BIKE_INFO.BIKE_INFO_ID.eq(bikeInfo.getBikeInfoId())) .update(); log.info("更新车辆位置成功,SN={}", ecuSn); @@ -207,4 +221,16 @@ public class EbikeBikeInfoController { EbikeScanInfoDto info = ebikeBikeInfoService.scanInfo(bikeCode); return JsonResult.success(info); } + + /** + * 根据车辆编号获取所属运营区所有站点 + * + * @param bikeCode 车辆编号 + * @return 所有站点 + */ + @GetMapping("/api/getAllSiteByBikeCode") + public JsonResult getAllSiteByBikeCode(@RequestParam String bikeCode) { + List ebikeSites = ebikeBikeInfoService.getAllSiteByBikeCode(bikeCode); + return JsonResult.success(ebikeSites); + } } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeInfoService.java b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeInfoService.java index 5c2d5b7..bc7e144 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeInfoService.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeInfoService.java @@ -3,6 +3,7 @@ package com.cdzy.operations.service; import com.cdzy.common.model.request.PageParam; import com.cdzy.operations.model.dto.*; import com.cdzy.operations.model.entity.EbikeBikeInfo; +import com.cdzy.operations.model.entity.EbikeSite; import com.cdzy.operations.model.vo.*; import com.ebike.feign.model.vo.EbikeLockVo; import com.mybatisflex.core.paginate.Page; @@ -104,4 +105,11 @@ public interface EbikeBikeInfoService extends IService { * @return 车辆详情 */ EbikeScanInfoDto scanInfo(String bikeCode); + + /** + * 根据车辆编号获取该运营区所有站点 + * @param bikeCode 车辆编号 + * @return 所有站点 + */ + List getAllSiteByBikeCode(String bikeCode); } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeInfoServiceImpl.java b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeInfoServiceImpl.java index 24bb3a3..b21ebdb 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeInfoServiceImpl.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeInfoServiceImpl.java @@ -33,6 +33,7 @@ import com.cdzy.operations.model.entity.EbikeDispatchConfiguration; import com.cdzy.operations.model.entity.EbikeEcuInfo; import com.cdzy.operations.model.entity.EbikeInventoryRecord; import com.cdzy.operations.model.entity.EbikeRegion; +import com.cdzy.operations.model.entity.EbikeSite; import com.cdzy.operations.model.entity.EbikeSpecialBillingConfiguration; import com.cdzy.operations.model.entity.EbikeSpecialDay; import com.cdzy.operations.model.entity.EbikeSpecialTime; @@ -72,6 +73,7 @@ import static com.cdzy.operations.model.entity.table.EbikeBikeQrTableDef.EBIKE_B import static com.cdzy.operations.model.entity.table.EbikeDefaultBillingConfigurationTableDef.EBIKE_DEFAULT_BILLING_CONFIGURATION; import static com.cdzy.operations.model.entity.table.EbikeEcuInfoTableDef.EBIKE_ECU_INFO; import static com.cdzy.operations.model.entity.table.EbikeRegionTableDef.EBIKE_REGION; +import static com.cdzy.operations.model.entity.table.EbikeSiteTableDef.EBIKE_SITE; import static com.cdzy.operations.model.entity.table.EbikeSpecialBillingConfigurationTableDef.EBIKE_SPECIAL_BILLING_CONFIGURATION; import static com.cdzy.operations.model.entity.table.EbikeSpecialDayTableDef.EBIKE_SPECIAL_DAY; import static com.cdzy.operations.model.entity.table.EbikeSpecialTimeTableDef.EBIKE_SPECIAL_TIME; @@ -624,6 +626,23 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl getAllSiteByBikeCode(String bikeCode) { + // 根据车辆编号获取运营区 + QueryWrapper queryWrapper = QueryWrapper.create() + .where(EBIKE_BIKE_INFO.BIKE_CODE.eq(bikeCode)); + EbikeBikeInfo ebikeBikeInfo = this.mapper.selectOneByQuery(queryWrapper); + if (ebikeBikeInfo == null) { + throw new EbikeException("车辆信息不存在"); + } + Long regionId = ebikeBikeInfo.getRegionId(); + // 根据运营区id查询运营区下所有站点 + queryWrapper.clear(); + queryWrapper.select(EBIKE_SITE.ALL_COLUMNS) + .where(EBIKE_SITE.REGION_ID.eq(regionId)); + return siteMapper.selectListByQuery(queryWrapper); + } + static EbikeSpecialDay getEbikeSpecialDay(List ebikeSpecialDays) { LocalDate today = LocalDate.now(); diff --git a/ebike-user/src/main/java/com/cdzy/user/controller/EbikeBikeInfoController.java b/ebike-user/src/main/java/com/cdzy/user/controller/EbikeBikeInfoController.java index 731f58e..af3055d 100644 --- a/ebike-user/src/main/java/com/cdzy/user/controller/EbikeBikeInfoController.java +++ b/ebike-user/src/main/java/com/cdzy/user/controller/EbikeBikeInfoController.java @@ -37,4 +37,18 @@ public class EbikeBikeInfoController { } return JsonResult.success(jsonResult.getData()); } + + /** + * 根据车辆编号获取所属运营区的所有站点 + * @param bikeCode 车辆编号 + * @return 站点列表 + */ + @GetMapping("/getAllSiteByBikeCode") + public JsonResult getAllSiteByBikeCode(@RequestParam("bikeCode") String bikeCode) { + JsonResult jsonResult = operationsFeignClient.getAllSiteByBikeCode(bikeCode); + if (jsonResult.getCode() != Code.SUCCESS) { + throw new EbikeException(jsonResult.getMessage()); + } + return JsonResult.success(jsonResult.getData()); + } }