车辆编号映射

This commit is contained in:
attiya 2025-07-07 14:18:19 +08:00
parent fc914f73a4
commit 35de1bd0e1
9 changed files with 51 additions and 37 deletions

View File

@ -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<List<String>> checkEcuSnWithBikeInOperate(@RequestBody EcuSnDto ecuSnDto);
JsonResult<List<FeignEbikeOrderBikeDto>> checkEcuSnWithBikeInOperate(@RequestBody EcuSnDto ecuSnDto);
/**
* 根据车辆id将其设置为骑行中状态

View File

@ -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;
}

View File

@ -891,7 +891,7 @@ public class EbikeBikeInfoController {
@PostMapping("checkEcuSn")
JsonResult<?> checkEcuSnWithBikeInOperate(@RequestBody EcuSnDto ecuSnDto) {
List<String> list = ebikeBikeInfoService.checkEcuSn(ecuSnDto);
List<EbikeOrderBikeDto> list = ebikeBikeInfoService.checkEcuSn(ecuSnDto);
return JsonResult.success(list);
}

View File

@ -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;
}

View File

@ -311,7 +311,7 @@ public interface EbikeBikeInfoService extends IService<EbikeBikeInfo> {
* @param ecuSnDto 列表
* @return 列表
*/
List<String> checkEcuSn(EcuSnDto ecuSnDto);
List<EbikeOrderBikeDto> checkEcuSn(EcuSnDto ecuSnDto);
/**
* 根据运营区id获取运营车辆状态及其位置信息列表

View File

@ -1524,17 +1524,17 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl<EbikeBikeInfoMapper, E
}
@Override
public List<String> checkEcuSn(EcuSnDto ecuSnDto) {
public List<EbikeOrderBikeDto> 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

View File

@ -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;
}
}

View File

@ -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<UserOrdersMapper, EbikeUs
List<RedisPoint> nearbyMembers = redisUtil.findNearbyMembers(bikeDto.getLongitude(), bikeDto.getLatitude(), bikeDto.getRadius() == null ? 3.0 : bikeDto.getRadius());
List<String> list = nearbyMembers.stream().map(RedisPoint::getMember).toList();
//获取运营中的车辆
JsonResult<List<String>> jsonResult = maintenanceFeignClient.checkEcuSnWithBikeInOperate(new EcuSnDto(list));
JsonResult<List<FeignEbikeOrderBikeDto>> jsonResult = maintenanceFeignClient.checkEcuSnWithBikeInOperate(new EcuSnDto(list));
if (jsonResult.getCode() != Code.SUCCESS) {
throw new RuntimeException("车辆筛选错误");
}
List<String> data = jsonResult.getData();
if (data == null || data.isEmpty()) {
Map<String, FeignEbikeOrderBikeDto> map = jsonResult.getData().stream().collect(Collectors.toMap(
FeignEbikeOrderBikeDto::getEcuSn, // key
Function.identity(),
(oldValue, newValue) -> newValue // value
));
List<String> data = jsonResult.getData().stream().map(FeignEbikeOrderBikeDto::getEcuSn).toList();
if (data.isEmpty()) {
return List.of();
}
List<Object> 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();
}

View File

@ -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<TimeSegment> 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<RedisPoint> 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";