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 a5a6e0e..e9ff134 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 @@ -40,7 +40,7 @@ public interface OperationsFeignClient { * @return 结果 */ @GetMapping("/ebikeBikeInfo/api/openLock") - JsonResult openLock(@RequestParam("bikeCode")String bikeCode); + JsonResult openLock(@RequestParam("bikeCode") String bikeCode); /** * 用户关锁 @@ -56,7 +56,7 @@ public interface OperationsFeignClient { * @return 结果 */ @GetMapping("/ebikeBikeInfo/api/bikeInfo") - JsonResult bikeInfo(@RequestParam("bikeCode")String bikeCode); + JsonResult bikeInfo(@RequestParam("bikeCode") String bikeCode); /** * 根据EcuSn生成换电工单 @@ -64,7 +64,7 @@ public interface OperationsFeignClient { * @return 结果 */ @GetMapping("/ebikeBikeOrder/batterySwapOrder") - JsonResult batterySwapOrder(@RequestParam("ecuSn")String ecuSn); + JsonResult batterySwapOrder(@RequestParam("ecuSn") String ecuSn); /** @@ -84,4 +84,15 @@ public interface OperationsFeignClient { @PostMapping("ebikeTracking/save") JsonResult saveEbikeTracking(@RequestBody EbikeTracking ebikeTracking); + + /** + * 保存车辆最新位置 + * @param ecuSn 中控编号 + * @param longitude 经度 + * @param latitude 纬度 + * @return 保存结果 + */ + @GetMapping("/changeLocation") + JsonResult changeLocation(@RequestParam("ecuSn") String ecuSn, @RequestParam("longitude") Double longitude, @RequestParam("latitude") Double latitude); + } 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 6ed61a8..0d23580 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 @@ -7,22 +7,30 @@ import com.cdzy.operations.model.dto.EbikeBikeInfoDto; import com.cdzy.operations.model.dto.EbikeDto; 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.service.EbikeBikeInfoService; import com.ebike.feign.model.vo.EbikeLockVo; import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.core.query.QueryWrapper; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.postgresql.geometric.PGpoint; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; +import static com.cdzy.operations.model.entity.table.EbikeBikeInfoTableDef.EBIKE_BIKE_INFO; +import static com.cdzy.operations.model.entity.table.EbikeEcuInfoTableDef.EBIKE_ECU_INFO; + /** * 车辆基本信息 控制层。 * * @author attiya * @since 2025-10-17 */ +@Slf4j @Validated @RestController @RequestMapping("/ebikeBikeInfo") @@ -152,7 +160,7 @@ public class EbikeBikeInfoController { /** * 根据中控编号获取设备信息 * - * @param ecuSn 中控编号 + * @param ecuSn 中控编号 * @return 结果 */ @GetMapping("/getEcuMsg") @@ -160,4 +168,26 @@ public class EbikeBikeInfoController { ResGPSDto ecuMsg = ebikeBikeInfoService.getEcuMsg(ecuSn); return JsonResult.success(ecuMsg); } + + /** + * 保存车辆最新位置 + * + * @param ecuSn 中控编号 + * @return 结果 + */ + @GetMapping("/changeLocation") + 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)); + EbikeBikeInfo bikeInfo = ebikeBikeInfoService.getOne(queryWrapper); + if (bikeInfo == null) { + log.warn("中控未绑定车辆或不存在,SN={}", ecuSn); + return JsonResult.failed(); + }else { + bikeInfo.setLocation(new PGpoint(longitude,latitude)); + ebikeBikeInfoService.updateById(bikeInfo); + } + return JsonResult.success(); + } } diff --git a/ebike-report/src/main/java/com/cdzy/report/component/ReoprtHandler.java b/ebike-report/src/main/java/com/cdzy/report/component/ReoprtHandler.java index dff2415..8d25f97 100644 --- a/ebike-report/src/main/java/com/cdzy/report/component/ReoprtHandler.java +++ b/ebike-report/src/main/java/com/cdzy/report/component/ReoprtHandler.java @@ -89,8 +89,8 @@ public class ReoprtHandler { EbikeTracking ebikeTracking = new EbikeTracking(deviceId, doubles[1], doubles[0]); operateFeignClient.saveEbikeTracking(ebikeTracking); //车辆静止,直接落库 - if (isMoving == '0'){ - + if (isMoving == '0') { + operateFeignClient.changeLocation(deviceId,doubles[0], doubles[1]); } }