From 60c45b2f252808a4974f72d3d08cb87befcb3154 Mon Sep 17 00:00:00 2001 From: attiya <2413103649@qq.com> Date: Fri, 30 May 2025 10:03:55 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=A6=E8=BE=86=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cdzy/common/model/EcuSnDto.java | 19 +++++++++++++++++++ .../feign/clients/MaintenanceFeignClient.java | 10 ++++++++++ .../controller/EbikeBikeInfoController.java | 7 +++++++ .../service/EbikeBikeInfoService.java | 8 ++++++++ .../impl/EbikeBikeInfoServiceImpl.java | 13 +++++++++++++ .../service/impl/UserOrdersServiceImpl.java | 12 +++++++++++- 6 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 ebike-common/src/main/java/com/cdzy/common/model/EcuSnDto.java diff --git a/ebike-common/src/main/java/com/cdzy/common/model/EcuSnDto.java b/ebike-common/src/main/java/com/cdzy/common/model/EcuSnDto.java new file mode 100644 index 00000000..bfda989c --- /dev/null +++ b/ebike-common/src/main/java/com/cdzy/common/model/EcuSnDto.java @@ -0,0 +1,19 @@ +package com.cdzy.common.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author attiya + * @since 2025-03-12 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class EcuSnDto { + + private List list; +} 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 1fd317d9..13da8744 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 @@ -1,5 +1,6 @@ package com.ebike.feign.clients; +import com.cdzy.common.model.EcuSnDto; import com.cdzy.common.model.JsonResult; import com.ebike.feign.component.FeignTokenInterceptor; import com.ebike.feign.config.ExampleFeignConfiguration; @@ -125,4 +126,13 @@ public interface MaintenanceFeignClient { */ @PostMapping("system/location2Address2") JsonResult location2AddressDetails(@RequestBody ReqLocationDto location); + + /** + * 从EcuSn列表筛选出在运营中车辆的EcuSn + * @param ecuSnDto EcuSn列表 + * @return 筛选后结果 + * + */ + @PostMapping("ebikeBikeInfo/checkEcuSn") + JsonResult> checkEcuSnWithBikeInOperate(@RequestBody EcuSnDto ecuSnDto); } 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 6b647aab..076b02ab 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 @@ -1,6 +1,7 @@ package com.cdzy.ebikemaintenance.controller; import com.alibaba.fastjson2.JSONObject; +import com.cdzy.common.model.EcuSnDto; import com.cdzy.common.model.JsonResult; import com.cdzy.common.model.ResGPSDto; import com.cdzy.ebikemaintenance.model.dto.request.*; @@ -872,4 +873,10 @@ public class EbikeBikeInfoController { // 调用服务层方法,获取工单列表数据 return ebikeBikeInfoService.getVehicleDetailsByRegionId(regionId); } + + @PostMapping("checkEcuSn") + JsonResult checkEcuSnWithBikeInOperate(@RequestBody EcuSnDto ecuSnDto){ + List list = ebikeBikeInfoService.checkEcuSn(ecuSnDto); + return JsonResult.success(list); + }; } 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 745f3d1f..14bd66fb 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 @@ -1,5 +1,6 @@ package com.cdzy.ebikemaintenance.service; +import com.cdzy.common.model.EcuSnDto; import com.cdzy.common.model.JsonResult; import com.cdzy.ebikemaintenance.model.dto.request.*; import com.cdzy.ebikemaintenance.model.dto.response.*; @@ -304,4 +305,11 @@ public interface EbikeBikeInfoService extends IService { * @return */ JsonResult getVehicleDetailsByRegionId(String regionId); + + /** + * 筛选EcuSn + * @param ecuSnDto 列表 + * @return 列表 + */ + List checkEcuSn(EcuSnDto ecuSnDto); } 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 9555da8d..8363eb3d 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 @@ -1522,6 +1522,19 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl checkEcuSn(EcuSnDto ecuSnDto) { + if (ecuSnDto.getList() == null || ecuSnDto.getList().isEmpty()){ + return List.of(); + } + QueryWrapper query = QueryWrapper.create() + .select(EBIKE_ECU_INFO.ECU_SN) + .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")); + return ebikeBikeInfoMapper.selectListByQueryAs(query, String.class); + } + private void modifyMaintenanceStatus(String bikeCode) { //是否存在维修中的订单数据 int i = ebikeBikeInfoMapper.selectOrderCount(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 8342fa61..238adbef 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 @@ -2,6 +2,7 @@ package com.cdzy.orders.service.impl; import com.alibaba.fastjson2.JSONObject; import com.cdzy.common.enums.Code; +import com.cdzy.common.model.EcuSnDto; import com.cdzy.common.model.JsonResult; import com.cdzy.common.model.ReqBatchRegionDto; import com.cdzy.common.model.ResGPSDto; @@ -213,7 +214,16 @@ public class UserOrdersServiceImpl extends ServiceImpl bikeList(ReqBikeDto bikeDto) { List nearbyMembers = redisUtil.findNearbyMembers(bikeDto.getLongitude(), bikeDto.getLatitude(), bikeDto.getRadius() == null ? 3.0 : bikeDto.getRadius()); List list = nearbyMembers.stream().map(RedisPoint::getMember).toList(); - List objects = redisUtil.multiGet(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()) { + 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);