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 ca8f78da..3092b119 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 @@ -8,6 +8,7 @@ import com.ebike.feign.model.res.ReqEcuSnDto; import com.ebike.feign.model.res.ReqLocationDto; import com.ebike.feign.model.res.ReqVehicleStatusUpdateDto; import com.ebike.feign.model.rsp.FeignEbikeBikeInfoDto; +import com.ebike.feign.model.rsp.FeignEbikeOrderBikeDto; import com.ebike.feign.model.rsp.RspBikeInfo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; @@ -134,7 +135,7 @@ public interface MaintenanceFeignClient { * */ @PostMapping("ebikeBikeInfo/checkEcuSn") - JsonResult> checkEcuSnWithBikeInOperate(@RequestBody EcuSnDto ecuSnDto); + JsonResult> checkEcuSnWithBikeInOperate(@RequestBody EcuSnDto ecuSnDto); /** * 根据车辆id将其设置为骑行中状态 diff --git a/ebike-feign/src/main/java/com/ebike/feign/model/rsp/FeignEbikeOrderBikeDto.java b/ebike-feign/src/main/java/com/ebike/feign/model/rsp/FeignEbikeOrderBikeDto.java new file mode 100644 index 00000000..a176423e --- /dev/null +++ b/ebike-feign/src/main/java/com/ebike/feign/model/rsp/FeignEbikeOrderBikeDto.java @@ -0,0 +1,13 @@ +package com.ebike.feign.model.rsp; + +import lombok.Data; + +/** + * @author attiya + * @since 2025-07-07 + */ +@Data +public class FeignEbikeOrderBikeDto { + private String ecuSn; + private String bikeCode; +} diff --git a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/controller/EbikeBikeInfoController.java b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/controller/EbikeBikeInfoController.java index 2997f4e0..6d53139f 100644 --- a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/controller/EbikeBikeInfoController.java +++ b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/controller/EbikeBikeInfoController.java @@ -891,7 +891,7 @@ public class EbikeBikeInfoController { @PostMapping("checkEcuSn") JsonResult checkEcuSnWithBikeInOperate(@RequestBody EcuSnDto ecuSnDto) { - List list = ebikeBikeInfoService.checkEcuSn(ecuSnDto); + List list = ebikeBikeInfoService.checkEcuSn(ecuSnDto); return JsonResult.success(list); } diff --git a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/model/dto/response/EbikeOrderBikeDto.java b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/model/dto/response/EbikeOrderBikeDto.java new file mode 100644 index 00000000..8b731f38 --- /dev/null +++ b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/model/dto/response/EbikeOrderBikeDto.java @@ -0,0 +1,13 @@ +package com.cdzy.ebikemaintenance.model.dto.response; + +import lombok.Data; + +/** + * @author attiya + * @since 2025-07-07 + */ +@Data +public class EbikeOrderBikeDto { + private String ecuSn; + private String bikeCode; +} diff --git a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/EbikeBikeInfoService.java b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/EbikeBikeInfoService.java index 6959515e..7a43c531 100644 --- a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/EbikeBikeInfoService.java +++ b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/EbikeBikeInfoService.java @@ -311,7 +311,7 @@ public interface EbikeBikeInfoService extends IService { * @param ecuSnDto 列表 * @return 列表 */ - List checkEcuSn(EcuSnDto ecuSnDto); + List checkEcuSn(EcuSnDto ecuSnDto); /** * 根据运营区id获取运营车辆状态及其位置信息列表 diff --git a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/impl/EbikeBikeInfoServiceImpl.java b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/impl/EbikeBikeInfoServiceImpl.java index 0c9f7c0d..da82bbcb 100644 --- a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/impl/EbikeBikeInfoServiceImpl.java +++ b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/service/impl/EbikeBikeInfoServiceImpl.java @@ -1524,17 +1524,17 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl checkEcuSn(EcuSnDto ecuSnDto) { + public List checkEcuSn(EcuSnDto ecuSnDto) { if (ecuSnDto.getList() == null || ecuSnDto.getList().isEmpty()){ return List.of(); } QueryWrapper query = QueryWrapper.create() - .select(EBIKE_ECU_INFO.ECU_SN) + .select(EBIKE_ECU_INFO.ECU_SN,EBIKE_BIKE_INFO.BIKE_CODE) .leftJoin(EBIKE_ECU_INFO).on(EBIKE_ECU_INFO.ECU_ID.eq(EBIKE_BIKE_INFO.ECU_ID)) .where(EBIKE_ECU_INFO.ECU_SN.in(ecuSnDto.getList())) .where(EBIKE_BIKE_INFO.IS_IN_WAREHOUSE.eq("0")) .where(EBIKE_BIKE_INFO.USAGE_STATUS.eq(2)); - return ebikeBikeInfoMapper.selectListByQueryAs(query, String.class); + return ebikeBikeInfoMapper.selectListByQueryAs(query, EbikeOrderBikeDto.class); } @Override diff --git a/ebike-orders/src/main/java/com/cdzy/orders/model/dto/res/RspBikeDto.java b/ebike-orders/src/main/java/com/cdzy/orders/model/dto/res/RspBikeDto.java index a7c2feb5..d89a3bdb 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/model/dto/res/RspBikeDto.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/model/dto/res/RspBikeDto.java @@ -16,15 +16,15 @@ public class RspBikeDto { private Integer soc; private Double longitude; private Double latitude; - // TODO:判断车辆状态、车辆编号 - private String status = "正常"; - private Float mileage = 35.5F; - private String bikeCode = "1111111111111111111"; + private String status; + private Float mileage; + private String bikeCode; - public RspBikeDto(String ecuSn, Integer soc, Double longitude, Double latitude) { + public RspBikeDto(String ecuSn, Integer soc, Double longitude, Double latitude, String bikeCode) { this.ecuSn = ecuSn; this.soc = soc; this.longitude = longitude; this.latitude = latitude; + this.bikeCode = bikeCode; } } diff --git a/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java b/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java index be38076f..937b25c3 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java @@ -24,10 +24,7 @@ import com.ebike.feign.model.res.ResFeignEbikeSysRcostsetDto; import com.ebike.feign.model.res.ResFeignEbikeSysRcostsetTimePeriodDto; import com.ebike.feign.model.res.ResFeignEbikeSysRcostsetWeekDto; import com.ebike.feign.model.res.ResFeignOrderPaymentDto; -import com.ebike.feign.model.rsp.FeignEbikeBikeInfoDto; -import com.ebike.feign.model.rsp.FeignEbikeEcuInfo; -import com.ebike.feign.model.rsp.FeignEbikeRegionDto; -import com.ebike.feign.model.rsp.FeignEbikeSysRoperateset; +import com.ebike.feign.model.rsp.*; import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.spring.service.impl.ServiceImpl; import jakarta.annotation.Resource; @@ -39,8 +36,11 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.concurrent.CompletableFuture; +import java.util.function.Function; +import java.util.stream.Collectors; import static com.cdzy.orders.enums.TimeDivisionCharging.TIME_SLOT; import static com.cdzy.orders.enums.TimeDivisionCharging.WEEK; @@ -219,19 +219,24 @@ public class UserOrdersServiceImpl extends ServiceImpl nearbyMembers = redisUtil.findNearbyMembers(bikeDto.getLongitude(), bikeDto.getLatitude(), bikeDto.getRadius() == null ? 3.0 : bikeDto.getRadius()); List list = nearbyMembers.stream().map(RedisPoint::getMember).toList(); //获取运营中的车辆 - JsonResult> jsonResult = maintenanceFeignClient.checkEcuSnWithBikeInOperate(new EcuSnDto(list)); + JsonResult> jsonResult = maintenanceFeignClient.checkEcuSnWithBikeInOperate(new EcuSnDto(list)); if (jsonResult.getCode() != Code.SUCCESS) { throw new RuntimeException("车辆筛选错误"); } - List data = jsonResult.getData(); - if (data == null || data.isEmpty()) { + Map map = jsonResult.getData().stream().collect(Collectors.toMap( + FeignEbikeOrderBikeDto::getEcuSn, // key + Function.identity(), + (oldValue, newValue) -> newValue // value + )); + List data = jsonResult.getData().stream().map(FeignEbikeOrderBikeDto::getEcuSn).toList(); + if (data.isEmpty()) { return List.of(); } List objects = redisUtil.multiGet(data); return objects.stream().map(object -> { String jsonString = JSONObject.toJSONString(object); ResGPSDto resGpsDto = JSONObject.parseObject(jsonString, ResGPSDto.class); - return new RspBikeDto(resGpsDto.getEcuSn(), resGpsDto.getSoc(), resGpsDto.getLongitude(), resGpsDto.getLatitude()); + return new RspBikeDto(resGpsDto.getEcuSn(), resGpsDto.getSoc(), resGpsDto.getLongitude(), resGpsDto.getLatitude(),map.get(resGpsDto.getEcuSn()).getBikeCode()); }).toList(); } diff --git a/ebike-orders/src/test/java/com/cdzy/orders/EbikeOrdersApplicationTests.java b/ebike-orders/src/test/java/com/cdzy/orders/EbikeOrdersApplicationTests.java index 4010c953..fbc9126b 100644 --- a/ebike-orders/src/test/java/com/cdzy/orders/EbikeOrdersApplicationTests.java +++ b/ebike-orders/src/test/java/com/cdzy/orders/EbikeOrdersApplicationTests.java @@ -49,25 +49,7 @@ class EbikeOrdersApplicationTests { @Test void contextLoads() { -// LocalTime localTime1 = LocalTime.of(10,22,23); -// LocalTime localTime2 = LocalTime.of(10,22,23); -// boolean result = localTime1.isBefore(localTime2) || localTime1.equals(localTime2); -// System.out.println(result); -// EbikeUserOrders ebikeUserOrders = ordersMapper.selectOneById(267861509802156032L); -// List timeSegments = TimeUtils.splitByDays(ebikeUserOrders.getStartTime(), ebikeUserOrders.getEndTime()); -// timeSegments.forEach(System.out::println); -// System.out.println(crossDay); - double lng = 103.97465469434792; - double lat = 30.63210622402551; -// List nearbyMembers = redisUtil.findNearbyMembers(lng, lat, 5.0); -// nearbyMembers.forEach(System.out::println); -// redisUtil.addLocation(new Point(lng,lat),"2370171016"); -// - String area = redisUtil.isPointInAllOperationWithOperationId(lng, lat); - System.out.println(area); -// boolean pointInOperation = redisUtil.isPointInOperation(lng, lat, 258106438092689409L, 269652483491594240L); -// System.out.println(pointInOperation); } private static final String model_path = "D:/Projects/eBIKE/mybatis-flex/ebike-orders";