打开电池仓锁

This commit is contained in:
attiya 2025-10-31 10:23:00 +08:00
parent 38aa18053e
commit c1142f711d
6 changed files with 48 additions and 1 deletions

View File

@ -15,4 +15,9 @@ public interface CommandType {
* GPS * GPS
*/ */
String GPS = "GPS"; String GPS = "GPS";
/**
* 打开电池所3s复位
*/
String OPEN_BATTERY_LOCK = "OPEN_BATTERY_LOCK";
} }

View File

@ -24,6 +24,13 @@ public interface CommandService{
*/ */
boolean gps(EbikeEcuInfo ebikeEcuInfo); boolean gps(EbikeEcuInfo ebikeEcuInfo);
/**
* 打开电池仓锁
* @param ebikeEcuInfo 中控信息
* @return 执行结果
*/
boolean openBatteryLock(EbikeEcuInfo ebikeEcuInfo);
/** /**
* 回调事件 * 回调事件
* @param taskId 任务ID * @param taskId 任务ID

View File

@ -57,6 +57,13 @@ public interface EbikeEcuInfoService extends IService<EbikeEcuInfo> {
*/ */
boolean gps(EbikeEcuInfo ebikeEcuInfo); boolean gps(EbikeEcuInfo ebikeEcuInfo);
/**
* 打开电池仓锁命令
* @param ebikeEcuInfo 中控信息
* @return 结果
*/
boolean openBatteryLock(EbikeEcuInfo ebikeEcuInfo);
/** /**
* 校验参数 * 校验参数
* @param ecuSn 中控SN码 * @param ecuSn 中控SN码

View File

@ -68,6 +68,23 @@ public class CommandServiceImpl implements CommandService {
} }
} }
@Override
public boolean openBatteryLock(EbikeEcuInfo ebikeEcuInfo) {
String taskId = createTaskId();
switch (ebikeEcuInfo.getEcuBrand()){
case EcuBrand.GUANG_HE_TONG:
String command = null;
try {
command = CommandUtil.guang_he_tong(ebikeEcuInfo.getEcuSn(),taskId, CommandType.OPEN_BATTERY_LOCK);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
return submitTaskAndWait(topic, taskId,command);
default :
throw new EbikeException("该品牌中控暂未接入");
}
}
@Override @Override
public void onComplete(String taskId, boolean success) { public void onComplete(String taskId, boolean success) {
completeRequest(taskId,success); completeRequest(taskId,success);

View File

@ -131,6 +131,11 @@ public class EbikeEcuInfoServiceImpl extends ServiceImpl<EbikeEcuInfoMapper, Ebi
return commandService.gps(ebikeEcuInfo); return commandService.gps(ebikeEcuInfo);
} }
@Override
public boolean openBatteryLock(EbikeEcuInfo ebikeEcuInfo) {
return commandService.openBatteryLock(ebikeEcuInfo);
}
@Override @Override
public boolean checkSnOrBikeCode(String ecuSn, String bikeCode) { public boolean checkSnOrBikeCode(String ecuSn, String bikeCode) {
try { try {
@ -149,7 +154,7 @@ public class EbikeEcuInfoServiceImpl extends ServiceImpl<EbikeEcuInfoMapper, Ebi
@Override @Override
public boolean executeCommand(String ecuSn, String bikeCode, String commandCode) { public boolean executeCommand(String ecuSn, String bikeCode, String commandCode) {
check(ecuSn, bikeCode); check(ecuSn, bikeCode);
EbikeEcuInfo ebikeEcuInfo = null; EbikeEcuInfo ebikeEcuInfo;
if (StringUtil.hasText(ecuSn)) { if (StringUtil.hasText(ecuSn)) {
ebikeEcuInfo = checkEcuSn(ecuSn); ebikeEcuInfo = checkEcuSn(ecuSn);
} else { } else {
@ -158,6 +163,7 @@ public class EbikeEcuInfoServiceImpl extends ServiceImpl<EbikeEcuInfoMapper, Ebi
return switch (commandCode) { return switch (commandCode) {
case CommandType.FIND_BIKE -> findBike(ebikeEcuInfo); case CommandType.FIND_BIKE -> findBike(ebikeEcuInfo);
case CommandType.GPS -> gps(ebikeEcuInfo); case CommandType.GPS -> gps(ebikeEcuInfo);
case CommandType.OPEN_BATTERY_LOCK -> openBatteryLock(ebikeEcuInfo);
default -> throw new EbikeException("该命令不存在/未接入"); default -> throw new EbikeException("该命令不存在/未接入");
}; };
} }

View File

@ -32,6 +32,11 @@ public class CommandUtil {
ObjectNode objectNode_34 = mapper.readValue(command_34,ObjectNode.class); ObjectNode objectNode_34 = mapper.readValue(command_34,ObjectNode.class);
jsonNode.put("command",objectNode_34.toString()); jsonNode.put("command",objectNode_34.toString());
break; break;
case CommandType.OPEN_BATTERY_LOCK:
String command_29 = "{\"c\":29,\"tid\":\""+ taskId+"\"}";
ObjectNode objectNode_29 = mapper.readValue(command_29,ObjectNode.class);
jsonNode.put("command",objectNode_29.toString());
break;
default : default :
throw new EbikeException("该命令暂未接入"); throw new EbikeException("该命令暂未接入");
} }