mirror of
https://gitee.com/san-bing/JChargePointProtocol
synced 2026-05-05 02:19:56 +08:00
!33 新增云快充启动充电的逻辑卡号和物理卡号,和双枪并充序号以及双枪并充的测试接口
* 新增云快充启动充电的逻辑卡号和物理卡号,和双枪并充序号以及双枪并充的测试接口 * CMD路由优化 * Merge remote-tracking branch 'gitee/master' into Feat_Lvneng_module_optimize * cmd路由优化 * cmd路由优化 * 绿能模块优化 * 新增云快充1.7 0x3D * 添加停止充电的TestController
This commit is contained in:
@@ -8,6 +8,7 @@ package sanbing.jcpp.app.adapter;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.apache.commons.lang3.RandomStringUtils;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@@ -32,7 +33,26 @@ public class TestController {
|
||||
@GetMapping("/api/startCharge")
|
||||
public ResponseEntity<String> startCharge() {
|
||||
|
||||
pileProtocolService.startCharge("20231212000010", "01", new BigDecimal("50"), "12345678901234567890");
|
||||
String orderNo = "ORD" + RandomStringUtils.secure().nextNumeric(20);
|
||||
String logicalCardNo = RandomStringUtils.secure().nextNumeric(12);
|
||||
String physicalCardNo = RandomStringUtils.secure().nextNumeric(12);
|
||||
|
||||
pileProtocolService.startCharge("20231212000010", "01", new BigDecimal("50"), orderNo,
|
||||
logicalCardNo, physicalCardNo, null);
|
||||
|
||||
return ResponseEntity.ok("success");
|
||||
}
|
||||
|
||||
@GetMapping("/api/parallelStartCharge")
|
||||
public ResponseEntity<String> parallelStartCharge() {
|
||||
|
||||
String orderNo = "PAR" + RandomStringUtils.secure().nextNumeric(20);
|
||||
String logicalCardNo = RandomStringUtils.secure().nextNumeric(12);
|
||||
String physicalCardNo = RandomStringUtils.secure().nextNumeric(12);
|
||||
String parallelNo = RandomStringUtils.secure().nextNumeric(6);
|
||||
|
||||
pileProtocolService.startCharge("20231212000010", "01", new BigDecimal("100"),
|
||||
orderNo, logicalCardNo, physicalCardNo, parallelNo);
|
||||
|
||||
return ResponseEntity.ok("success");
|
||||
}
|
||||
|
||||
@@ -74,9 +74,11 @@ public interface PileProtocolService {
|
||||
void onTransactionRecordRequest(UplinkQueueMessage uplinkQueueMessage, Callback callback);
|
||||
|
||||
/**
|
||||
* 启动充电
|
||||
* 启动充电(支持卡号和并充序号)
|
||||
* 当 parallelNo 不为空时,自动使用并充启机命令
|
||||
*/
|
||||
void startCharge(String pileCode, String gunCode, BigDecimal limitYuan, String orderNo);
|
||||
void startCharge(String pileCode, String gunCode, BigDecimal limitYuan, String orderNo,
|
||||
String logicalCardNo, String physicalCardNo, String parallelNo);
|
||||
|
||||
/**
|
||||
* 停止充电
|
||||
@@ -163,8 +165,15 @@ public interface PileProtocolService {
|
||||
* 离线卡数据同步应答
|
||||
*/
|
||||
void onOfflineCardSyncResponse(UplinkQueueMessage uplinkQueueMessage, Callback callback);
|
||||
|
||||
/**
|
||||
* 实时同步桩时间
|
||||
*/
|
||||
void timeSync(String pileCode, LocalDateTime time);
|
||||
|
||||
void onTimeSync(UplinkQueueMessage uplinkQueueMessage, Callback callback);
|
||||
/**
|
||||
* 实时同步桩时间应答
|
||||
*/
|
||||
void onTimeSyncResponse(UplinkQueueMessage uplinkQueueMessage, Callback callback);
|
||||
|
||||
}
|
||||
@@ -281,24 +281,42 @@ public class DefaultPileProtocolService implements PileProtocolService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startCharge(String pileCode, String gunCode, BigDecimal limitYuan, String orderNo) {
|
||||
public void startCharge(String pileCode, String gunCode, BigDecimal limitYuan, String orderNo,
|
||||
String logicalCardNo, String physicalCardNo, String parallelNo) {
|
||||
|
||||
UUID messageId = UUID.randomUUID();
|
||||
UUID requestId = UUID.randomUUID();
|
||||
|
||||
RemoteStartChargingRequest.Builder requestBuilder = RemoteStartChargingRequest.newBuilder()
|
||||
.setPileCode(pileCode)
|
||||
.setGunCode(gunCode)
|
||||
.setLimitYuan(limitYuan.toPlainString())
|
||||
.setTradeNo(orderNo);
|
||||
|
||||
// 添加可选字段
|
||||
if (logicalCardNo != null) {
|
||||
requestBuilder.setLogicalCardNo(logicalCardNo);
|
||||
}
|
||||
if (physicalCardNo != null) {
|
||||
requestBuilder.setPhysicalCardNo(physicalCardNo);
|
||||
}
|
||||
if (parallelNo != null) {
|
||||
requestBuilder.setParallelNo(parallelNo);
|
||||
}
|
||||
|
||||
// 根据是否有并充序号自动选择命令类型
|
||||
DownlinkCmdEnum downlinkCmd = (parallelNo != null && !parallelNo.trim().isEmpty())
|
||||
? DownlinkCmdEnum.REMOTE_PARALLEL_START_CHARGING
|
||||
: DownlinkCmdEnum.REMOTE_START_CHARGING;
|
||||
|
||||
DownlinkRequestMessage.Builder downlinkRequestMessageBuilder = DownlinkRequestMessage.newBuilder()
|
||||
.setMessageIdMSB(messageId.getMostSignificantBits())
|
||||
.setMessageIdLSB(messageId.getLeastSignificantBits())
|
||||
.setPileCode(pileCode)
|
||||
.setRequestIdMSB(requestId.getMostSignificantBits())
|
||||
.setRequestIdLSB(requestId.getLeastSignificantBits())
|
||||
.setDownlinkCmd(DownlinkCmdEnum.REMOTE_START_CHARGING.name())
|
||||
.setRemoteStartChargingRequest(RemoteStartChargingRequest.newBuilder()
|
||||
.setPileCode(pileCode)
|
||||
.setGunCode(gunCode)
|
||||
.setLimitYuan(limitYuan.toPlainString())
|
||||
.setTradeNo(orderNo)
|
||||
.build());
|
||||
.setDownlinkCmd(downlinkCmd.name())
|
||||
.setRemoteStartChargingRequest(requestBuilder.build());
|
||||
|
||||
downlinkCallService.sendDownlinkMessage(downlinkRequestMessageBuilder, pileCode);
|
||||
}
|
||||
@@ -476,7 +494,7 @@ public class DefaultPileProtocolService implements PileProtocolService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimeSync(UplinkQueueMessage uplinkQueueMessage, Callback callback) {
|
||||
public void onTimeSyncResponse(UplinkQueueMessage uplinkQueueMessage, Callback callback) {
|
||||
log.info("对时设置应答 {}", uplinkQueueMessage);
|
||||
TimeSyncResponse timeSyncResponse = uplinkQueueMessage.getTimeSyncResponse();
|
||||
String pileCode = timeSyncResponse.getPileCode();
|
||||
|
||||
@@ -234,7 +234,7 @@ public class ProtocolUplinkConsumerService extends AbstractConsumerService imple
|
||||
|
||||
} else if (uplinkQueueMsg.hasTimeSyncResponse()) {
|
||||
|
||||
pileProtocolService.onTimeSync(uplinkQueueMsg, callback);
|
||||
pileProtocolService.onTimeSyncResponse(uplinkQueueMsg, callback);
|
||||
|
||||
} else {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user