From 1a08cca193f17ea0d6ab28fc842cc70a9b1bf305d6422bae0e18bfdb3a8e5127 Mon Sep 17 00:00:00 2001 From: yanglei Date: Fri, 27 Feb 2026 10:31:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E5=81=9C=E8=BD=A6=E4=B8=8E?= =?UTF-8?q?=E4=B8=B4=E6=97=B6=E5=81=9C=E8=BD=A6=E7=BB=A7=E7=BB=AD=E9=AA=91?= =?UTF-8?q?=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EbikeBikeInfoController.java | 24 +++++++++++++ .../cdzy/operations/enums/CommandType.java | 10 ++++++ .../operations/service/CommandService.java | 14 ++++++++ .../service/EbikeBikeInfoService.java | 12 +++++++ .../service/EbikeEcuInfoService.java | 14 ++++++++ .../service/impl/CommandServiceImpl.java | 34 +++++++++++++++++++ .../impl/EbikeBikeInfoServiceImpl.java | 30 ++++++++++++++++ .../service/impl/EbikeEcuInfoServiceImpl.java | 13 +++++++ .../cdzy/operations/utils/CommandUtil.java | 11 ++++++ 9 files changed, 162 insertions(+) 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 c4338f8..44c8fd2 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 @@ -233,4 +233,28 @@ public class EbikeBikeInfoController { List ebikeSites = ebikeBikeInfoService.getAllSiteByBikeCode(bikeCode); return JsonResult.success(ebikeSites); } + + /** + * 用户临时停车 + * + * @return 结果 + */ + @GetMapping("/api/tempLock") + public JsonResult tempLock(@RequestParam("bikeCode") String bikeCode) { + ebikeBikeInfoService.tempLock(bikeCode); + return JsonResult.success(); + } + + + /** + * 用户临时停车继续骑行 + * + * @return 结果 + */ + @GetMapping("/api/tempLockResume") + public JsonResult tempLockResume(@RequestParam("bikeCode") String bikeCode) { + ebikeBikeInfoService.tempLockResume(bikeCode); + return JsonResult.success(); + } + } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/enums/CommandType.java b/ebike-operations/src/main/java/com/cdzy/operations/enums/CommandType.java index 7dfd9b2..8584a28 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/enums/CommandType.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/enums/CommandType.java @@ -55,4 +55,14 @@ public interface CommandType { * 更新语音播报 */ String UPGRADE_AUDIO = "UPGRADE_AUDIO"; + + /** + * 临时停车 + */ + String TEMP_LOCK = "TEMP_LOCK"; + + /** + * 临时停车继续骑行 + */ + String TEMP_LOCK_RESUME = "TEMP_LOCK_RESUME"; } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/CommandService.java b/ebike-operations/src/main/java/com/cdzy/operations/service/CommandService.java index 3850834..bc3542b 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/CommandService.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/CommandService.java @@ -89,4 +89,18 @@ public interface CommandService{ * @return 执行结果 */ boolean upgradeAudio(EbikeEcuInfo ebikeEcuInfo, String url, Integer idx,Boolean fullUpgrade); + + /** + * 临时停车 + * @param ebikeEcuInfo 中控信息 + * @return 执行结果 + */ + boolean tempLock(EbikeEcuInfo ebikeEcuInfo); + + /** + * 临时停车继续骑行 + * @param ebikeEcuInfo 中控信息 + * @return 执行结果 + */ + boolean tempLockResume(EbikeEcuInfo ebikeEcuInfo); } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeInfoService.java b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeInfoService.java index bc7e144..6b2ee39 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeInfoService.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeInfoService.java @@ -112,4 +112,16 @@ public interface EbikeBikeInfoService extends IService { * @return 所有站点 */ List getAllSiteByBikeCode(String bikeCode); + + /** + * 临时停车 + * @param bikeCode 车辆编号 + */ + void tempLock(String bikeCode); + + /** + * 临时停车继续骑行 + * @param bikeCode 车辆编号 + */ + void tempLockResume(String bikeCode); } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeEcuInfoService.java b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeEcuInfoService.java index cc67ee3..193e19f 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeEcuInfoService.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeEcuInfoService.java @@ -152,4 +152,18 @@ public interface EbikeEcuInfoService extends IService { * @param bikeCode 车辆编号 */ boolean findBikeByBikeCode(String bikeCode); + + /** + * 临时停车 + * @param ebikeEcuInfo 中控信息 + * @return 操作结果 + */ + boolean tempLock(EbikeEcuInfo ebikeEcuInfo); + + /** + * 临时停车继续骑行 + * @param ebikeEcuInfo 中控信息 + * @return 操作结果 + */ + boolean tempLockResume(EbikeEcuInfo ebikeEcuInfo); } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/CommandServiceImpl.java b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/CommandServiceImpl.java index d3722b5..335aa78 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/CommandServiceImpl.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/CommandServiceImpl.java @@ -212,6 +212,40 @@ public class CommandServiceImpl implements CommandService { } } + @Override + public boolean tempLock(EbikeEcuInfo ebikeEcuInfo) { + String taskId = createTaskId(); + switch (ebikeEcuInfo.getEcuBrand()) { + case EcuBrand.GUANG_HE_TONG: + String command; + try { + command = CommandUtil.guang_he_tong(ebikeEcuInfo.getEcuSn(), taskId, CommandType.TEMP_LOCK,null,null,false); + } catch (Exception e) { + throw new RuntimeException(e); + } + return submitTaskAndWait(topic, taskId, command); + default: + throw new EbikeException("该品牌中控暂未接入"); + } + } + + @Override + public boolean tempLockResume(EbikeEcuInfo ebikeEcuInfo) { + String taskId = createTaskId(); + switch (ebikeEcuInfo.getEcuBrand()) { + case EcuBrand.GUANG_HE_TONG: + String command; + try { + command = CommandUtil.guang_he_tong(ebikeEcuInfo.getEcuSn(), taskId, CommandType.TEMP_LOCK_RESUME,null,null,false); + } catch (Exception e) { + throw new RuntimeException(e); + } + return submitTaskAndWait(topic, taskId, command); + default: + throw new EbikeException("该品牌中控暂未接入"); + } + } + /** * 提交异步任务并等待布尔结果 diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeInfoServiceImpl.java b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeInfoServiceImpl.java index b21ebdb..25733fd 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeInfoServiceImpl.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeInfoServiceImpl.java @@ -643,6 +643,36 @@ public class EbikeBikeInfoServiceImpl extends ServiceImpl ebikeSpecialDays) { LocalDate today = LocalDate.now(); diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeEcuInfoServiceImpl.java b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeEcuInfoServiceImpl.java index cee895d..a42180f 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeEcuInfoServiceImpl.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeEcuInfoServiceImpl.java @@ -237,6 +237,17 @@ public class EbikeEcuInfoServiceImpl extends ServiceImpl openHelmet(ebikeEcuInfo); case CommandType.POWER_OFF -> powerOff(ebikeEcuInfo); case CommandType.UPGRADE -> upgradeFile(ebikeEcuInfo, url, false); + case CommandType.TEMP_LOCK -> tempLock(ebikeEcuInfo); + case CommandType.TEMP_LOCK_RESUME -> tempLockResume(ebikeEcuInfo); default -> throw new EbikeException("该命令不存在/未接入"); }; } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/utils/CommandUtil.java b/ebike-operations/src/main/java/com/cdzy/operations/utils/CommandUtil.java index 5c9135f..06807b1 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/utils/CommandUtil.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/utils/CommandUtil.java @@ -83,6 +83,17 @@ public class CommandUtil { ObjectNode objectNode_30 = mapper.readValue(command_30, ObjectNode.class); jsonNode.put("command", objectNode_30.toString()); break; + case CommandType.TEMP_LOCK: + String command_84 = "{\"c\":84,\"tid\":\"" + taskId + "\",\"param\":{\"idx\":8}}"; + ObjectNode objectNode_84 = mapper.readValue(command_84, ObjectNode.class); + jsonNode.put("command", objectNode_84.toString()); + break; + case CommandType.TEMP_LOCK_RESUME: + String command_85 = "{\"c\":85,\"tid\":\"" + taskId + "\",\"param\":{\"idx\":8}}"; + ObjectNode objectNode_85 = mapper.readValue(command_85, ObjectNode.class); + jsonNode.put("command", objectNode_85.toString()); + break; + default: throw new EbikeException("该命令暂未接入"); }