根据车辆编号获取所属运营区所有站点

This commit is contained in:
yanglei 2026-02-09 16:40:49 +08:00
parent 3559b0200a
commit 6dbec55d47
6 changed files with 82 additions and 7 deletions

View File

@ -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<List<FeignEbikeSiteVo>> getAllSiteByBikeCode(@RequestParam("bikeCode") String bikeCode);
}

View File

@ -8,7 +8,6 @@ import org.locationtech.jts.geom.Polygon;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author yanglei

View File

@ -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<EbikeSite> ebikeSites = ebikeBikeInfoService.getAllSiteByBikeCode(bikeCode);
return JsonResult.success(ebikeSites);
}
}

View File

@ -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<EbikeBikeInfo> {
* @return 车辆详情
*/
EbikeScanInfoDto scanInfo(String bikeCode);
/**
* 根据车辆编号获取该运营区所有站点
* @param bikeCode 车辆编号
* @return 所有站点
*/
List<EbikeSite> getAllSiteByBikeCode(String bikeCode);
}

View File

@ -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<EbikeBikeInfoMapper, E
return ebikeScanInfoDto;
}
@Override
public List<EbikeSite> 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<EbikeSpecialDay> ebikeSpecialDays) {
LocalDate today = LocalDate.now();

View File

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