mirror of
https://gitee.com/san-bing/JChargePointProtocol
synced 2026-08-15 10:07:25 +08:00
拆分protobuf
This commit is contained in:
@@ -39,3 +39,5 @@ public class ProtocolController extends BaseController {
|
||||
return ResponseEntity.ok(ApiResponse.success("查询成功", protocols));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@ import sanbing.jcpp.app.adapter.request.StationUpdateRequest;
|
||||
import sanbing.jcpp.app.adapter.response.ApiResponse;
|
||||
import sanbing.jcpp.app.adapter.response.PageResponse;
|
||||
import sanbing.jcpp.app.adapter.response.StationOption;
|
||||
import sanbing.jcpp.app.adapter.response.StationPileCascaderOption;
|
||||
import sanbing.jcpp.app.dal.entity.Station;
|
||||
import sanbing.jcpp.app.exception.JCPPException;
|
||||
import sanbing.jcpp.app.service.StationService;
|
||||
@@ -105,14 +104,4 @@ public class StationController extends BaseController {
|
||||
List<StationOption> options = stationService.searchStationOptions(keyword, page, size);
|
||||
return ResponseEntity.ok(ApiResponse.success("查询成功", options));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取充电站-充电桩级联选择器数据(用于级联选择组件)
|
||||
*/
|
||||
@GetMapping("/pile-cascader")
|
||||
public ResponseEntity<ApiResponse<List<StationPileCascaderOption>>> getStationPileCascaderOptions(
|
||||
@RequestParam(required = false) String keyword) {
|
||||
List<StationPileCascaderOption> options = stationService.getStationPileCascaderOptions(keyword);
|
||||
return ResponseEntity.ok(ApiResponse.success("查询成功", options));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import sanbing.jcpp.app.service.PileProtocolService;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.*;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@@ -165,3 +165,5 @@ public enum ErrorCode {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -14,9 +14,9 @@ import sanbing.jcpp.app.service.cache.session.PileSessionCacheKey;
|
||||
import sanbing.jcpp.infrastructure.cache.CacheValueWrapper;
|
||||
import sanbing.jcpp.infrastructure.cache.TransactionalCache;
|
||||
import sanbing.jcpp.infrastructure.queue.discovery.ServiceInfoProvider;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.LoginRequest;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.LoginRequest;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.adapter.DownlinkController;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -12,7 +12,7 @@ import sanbing.jcpp.app.adapter.request.GunUpdateRequest;
|
||||
import sanbing.jcpp.app.adapter.response.GunWithStatusResponse;
|
||||
import sanbing.jcpp.app.adapter.response.PageResponse;
|
||||
import sanbing.jcpp.app.dal.entity.Gun;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.GunRunStatus;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.GunRunStatus;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
@@ -7,7 +7,11 @@
|
||||
package sanbing.jcpp.app.service;
|
||||
|
||||
import sanbing.jcpp.infrastructure.queue.Callback;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.*;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.OfflineCardBalanceUpdateRequest;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.OfflineCardSyncRequest;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.OtaRequest;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.SetPricingRequest;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@@ -8,7 +8,7 @@ package sanbing.jcpp.app.service;
|
||||
|
||||
import sanbing.jcpp.app.dal.entity.Pile;
|
||||
import sanbing.jcpp.app.data.PileSession;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -26,9 +26,10 @@ import sanbing.jcpp.infrastructure.util.async.JCPPThreadFactory;
|
||||
import sanbing.jcpp.infrastructure.util.mdc.MDCUtils;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerContextUtil;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerRunnable;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.DownlinkResponseMessage;
|
||||
import sanbing.jcpp.proto.gen.GrpcProto.*;
|
||||
import sanbing.jcpp.proto.gen.ProtocolInterfaceGrpc;
|
||||
import sanbing.jcpp.proto.gen.ProtocolInterfaceGrpc.ProtocolInterfaceStub;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -29,7 +29,7 @@ import sanbing.jcpp.app.data.kv.StringDataEntry;
|
||||
import sanbing.jcpp.app.service.AttributeService;
|
||||
import sanbing.jcpp.app.service.GunService;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.GunRunStatus;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.GunRunStatus;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -26,7 +26,8 @@ import sanbing.jcpp.infrastructure.proto.model.PricingModel.Period;
|
||||
import sanbing.jcpp.infrastructure.queue.Callback;
|
||||
import sanbing.jcpp.infrastructure.util.async.JCPPAsynchron;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.*;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.*;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.*;
|
||||
import sanbing.jcpp.protocol.domain.DownlinkCmdEnum;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@@ -34,9 +35,9 @@ import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.util.*;
|
||||
|
||||
import static sanbing.jcpp.proto.gen.ProtocolProto.PricingModelFlag.*;
|
||||
import static sanbing.jcpp.proto.gen.ProtocolProto.PricingModelRule.PEAK_VALLEY_PRICING;
|
||||
import static sanbing.jcpp.proto.gen.ProtocolProto.PricingModelType.CHARGE;
|
||||
import static sanbing.jcpp.proto.gen.DownlinkProto.PricingModelFlag.*;
|
||||
import static sanbing.jcpp.proto.gen.DownlinkProto.PricingModelRule.PEAK_VALLEY_PRICING;
|
||||
import static sanbing.jcpp.proto.gen.DownlinkProto.PricingModelType.CHARGE;
|
||||
|
||||
/**
|
||||
* @author 九筒
|
||||
|
||||
@@ -25,7 +25,7 @@ import sanbing.jcpp.infrastructure.cache.TransactionalCache;
|
||||
import sanbing.jcpp.infrastructure.queue.common.TopicPartitionInfo;
|
||||
import sanbing.jcpp.infrastructure.queue.discovery.PartitionProvider;
|
||||
import sanbing.jcpp.infrastructure.queue.discovery.ServiceType;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -13,8 +13,8 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
|
||||
import org.springframework.stereotype.Service;
|
||||
import sanbing.jcpp.app.service.DownlinkCallService;
|
||||
import sanbing.jcpp.app.service.grpc.DownlinkGrpcClient;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.RequestMsg;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.GrpcProto.RequestMsg;
|
||||
|
||||
import static sanbing.jcpp.infrastructure.proto.ProtoConverter.toTracerProto;
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ import org.springframework.web.client.RestClientException;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import sanbing.jcpp.app.service.DownlinkCallService;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerContextUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.DownlinkRequestMessage;
|
||||
|
||||
import static sanbing.jcpp.infrastructure.util.trace.TracerContextUtil.*;
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.stats.StatsCounter;
|
||||
import sanbing.jcpp.infrastructure.stats.StatsFactory;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerContextUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.*;
|
||||
|
||||
@@ -33,7 +33,7 @@ import sanbing.jcpp.infrastructure.util.codec.ByteUtil;
|
||||
import sanbing.jcpp.infrastructure.util.mdc.MDCUtils;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerContextUtil;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerRunnable;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -13,7 +13,8 @@ import sanbing.jcpp.infrastructure.proto.model.PricingModel.Period;
|
||||
import sanbing.jcpp.infrastructure.proto.model.PricingModel.TimePeriodItem;
|
||||
import sanbing.jcpp.infrastructure.util.trace.Tracer;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerContextUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.*;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.*;
|
||||
import sanbing.jcpp.proto.gen.GrpcProto.TracerProto;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
package sanbing.jcpp.infrastructure.proto.model;
|
||||
|
||||
import lombok.*;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.PricingModelFlag;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.PricingModelRule;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.PricingModelType;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.PricingModelFlag;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.PricingModelRule;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.PricingModelType;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalTime;
|
||||
|
||||
248
jcpp-infrastructure-proto/src/main/proto/downlink.proto
Normal file
248
jcpp-infrastructure-proto/src/main/proto/downlink.proto
Normal file
@@ -0,0 +1,248 @@
|
||||
/**
|
||||
* 开源代码,仅供学习和交流研究使用,商用请联系三丙
|
||||
* 微信:mohan_88888
|
||||
* 抖音:程序员三丙
|
||||
* 付费课程知识星球:https://t.zsxq.com/aKtXo
|
||||
*/
|
||||
syntax = "proto3";
|
||||
|
||||
package infrastructureProto;
|
||||
|
||||
option java_package = "sanbing.jcpp.proto.gen";
|
||||
option java_outer_classname = "DownlinkProto";
|
||||
|
||||
// 下行请求消息(从服务器到充电桩)
|
||||
message DownlinkRequestMessage {
|
||||
int64 messageIdMSB = 1;
|
||||
int64 messageIdLSB = 2;
|
||||
int64 sessionIdMSB = 3;
|
||||
int64 sessionIdLSB = 4;
|
||||
string protocolName = 6;
|
||||
string pileCode = 7;
|
||||
optional int64 requestIdMSB = 8;
|
||||
optional int64 requestIdLSB = 9;
|
||||
optional bytes requestData = 10;
|
||||
string downlinkCmd = 20;
|
||||
LoginResponse loginResponse = 21;
|
||||
VerifyPricingResponse verifyPricingResponse = 22;
|
||||
QueryPricingResponse queryPricingResponse = 23;
|
||||
SetPricingRequest setPricingRequest = 24;
|
||||
RemoteStartChargingRequest remoteStartChargingRequest = 25;
|
||||
RemoteStopChargingRequest remoteStopChargingRequest = 26;
|
||||
TransactionRecordResponse transactionRecordResponse = 27;
|
||||
RestartPileRequest restartPileRequest = 28;
|
||||
OtaRequest otaRequest = 29;
|
||||
OfflineCardBalanceUpdateRequest offlineCardBalanceUpdateRequest = 30;
|
||||
OfflineCardSyncRequest offlineCardSyncRequest = 31;
|
||||
TimeSyncRequest timeSyncRequest = 32;
|
||||
StartChargeResponse startChargeResponse = 33;
|
||||
}
|
||||
|
||||
// 下行响应消息
|
||||
message DownlinkResponseMessage {
|
||||
bool success = 1;
|
||||
optional string error = 2;
|
||||
}
|
||||
|
||||
// 登录响应
|
||||
message LoginResponse {
|
||||
bool success = 1;
|
||||
string pileCode = 2;
|
||||
}
|
||||
|
||||
// 启动充电响应
|
||||
message StartChargeResponse {
|
||||
string tradeNo = 1; // 交易流水号
|
||||
string pileCode = 2; // 桩编号
|
||||
string gunCode = 3; // 枪编号
|
||||
string logicalCardNo = 4; // 逻辑卡号
|
||||
string limitYuan = 5; // 账户余额
|
||||
bool authSuccess = 6; // 鉴权成功标志
|
||||
string failReason = 7; // 失败原因
|
||||
}
|
||||
|
||||
// 失败原因枚举
|
||||
enum FailReason {
|
||||
SUCCESS = 0; // 成功
|
||||
ACCOUNT_NOT_EXISTS = 1; // 账户不存在
|
||||
ACCOUNT_FROZEN = 2; // 账户冻结
|
||||
INSUFFICIENT_BALANCE = 3; // 账户余额不足
|
||||
CARD_HAS_UNPAID_RECORD = 4; // 该卡存在未结账记录
|
||||
PILE_DISABLED = 5; // 桩停用
|
||||
ACCOUNT_NOT_ALLOWED_ON_PILE = 6; // 该账户不能在此桩上充电
|
||||
PASSWORD_ERROR = 7; // 密码错误
|
||||
INSUFFICIENT_STATION_CAPACITY = 8; // 电站电容不足
|
||||
VIN_CODE_NOT_EXISTS = 9; // 系统中vin码不存在
|
||||
PILE_HAS_UNPAID_RECORD = 10; // 该桩存在未结账记录
|
||||
PILE_NOT_SUPPORT_CARD = 11; // 该桩不支持该卡
|
||||
}
|
||||
|
||||
// 校验计费响应
|
||||
message VerifyPricingResponse {
|
||||
bool success = 1;
|
||||
int64 pricingId = 30;
|
||||
}
|
||||
|
||||
// 查询计费响应
|
||||
message QueryPricingResponse {
|
||||
string pileCode = 4;
|
||||
int64 pricingId = 30;
|
||||
PricingModelProto pricingModel = 1;
|
||||
}
|
||||
|
||||
// 计费模型配置 - 支持三种计费方式
|
||||
message PricingModelProto {
|
||||
PricingModelType type = 3; // 计费类型:充电/放电
|
||||
PricingModelRule rule = 4; // 计费规则:标准/峰谷/时段
|
||||
|
||||
// 计费配置:根据rule字段确定使用哪种配置
|
||||
oneof pricing_config {
|
||||
StandardPricingProto standardPricing = 5; // 标准计费:固定价格
|
||||
PeakValleyPricingProto peakValleyPricing = 6; // 峰谷计价:按尖峰平谷分时段
|
||||
TimePeriodPricingProto timePeriodPricing = 7; // 时段计价:自定义时段价格
|
||||
}
|
||||
}
|
||||
|
||||
// 时段定义
|
||||
message PeriodProto {
|
||||
int32 sn = 1;
|
||||
string begin = 2;
|
||||
string end = 3;
|
||||
PricingModelFlag flag = 4;
|
||||
}
|
||||
|
||||
// 标识价格
|
||||
message FlagPriceProto {
|
||||
PricingModelFlag flag = 1;
|
||||
string elec = 2;
|
||||
string serv = 3;
|
||||
}
|
||||
|
||||
// 标准计费配置 - 全天统一价格
|
||||
message StandardPricingProto {
|
||||
string elecPrice = 1; // 电费价格(元/度)
|
||||
string servPrice = 2; // 服务费价格(元/度)
|
||||
}
|
||||
|
||||
// 峰谷计价配置 - 按电网峰谷政策分时计费
|
||||
message PeakValleyPricingProto {
|
||||
map<int32, FlagPriceProto> flagPrice = 1; // 各时段价格映射表
|
||||
repeated PeriodProto period = 2; // 时段划分配置
|
||||
}
|
||||
|
||||
// 时段计价配置 - 运营商自定义时段计费
|
||||
message TimePeriodPricingProto {
|
||||
repeated TimePeriodItemProto periods = 1; // 自定义时段列表
|
||||
}
|
||||
|
||||
// 时段计价单个时段定义
|
||||
message TimePeriodItemProto {
|
||||
int32 periodNo = 1; // 时段编号(从1开始)
|
||||
string startTime = 2; // 开始时间(HH:mm:ss格式)
|
||||
string endTime = 3; // 结束时间(HH:mm:ss格式)
|
||||
string elecPrice = 4; // 该时段电费(元/度)
|
||||
string servPrice = 5; // 该时段服务费(元/度)
|
||||
optional string description = 6; // 时段名称(如"早高峰")
|
||||
}
|
||||
|
||||
// 计费模型类型
|
||||
enum PricingModelType {
|
||||
CHARGE = 0; // 充电费率模型
|
||||
DISCHARGE = 1; // 放电费率模型
|
||||
}
|
||||
|
||||
// 计费模型规则
|
||||
enum PricingModelRule {
|
||||
STANDARD = 0; // 标准计费:全天统一价格
|
||||
PEAK_VALLEY_PRICING = 1; // 峰谷计费:按电网峰谷政策
|
||||
TIME_PERIOD_PRICING = 2; // 时段计费:运营商自定义
|
||||
}
|
||||
|
||||
// 计费模型标识
|
||||
enum PricingModelFlag {
|
||||
TOP = 0; // 尖峰
|
||||
PEAK = 1; // 峰
|
||||
FLAT = 2; // 平
|
||||
VALLEY = 3; // 谷
|
||||
DEEP = 4; // 深谷
|
||||
}
|
||||
|
||||
// 设置计费请求
|
||||
message SetPricingRequest {
|
||||
string pileCode = 4;
|
||||
int64 pricingId = 30;
|
||||
PricingModelProto pricingModel = 1;
|
||||
}
|
||||
|
||||
// 远程启动充电请求
|
||||
message RemoteStartChargingRequest {
|
||||
string pileCode = 4;
|
||||
string gunCode = 5;
|
||||
string tradeNo = 6;
|
||||
string limitYuan = 7;
|
||||
optional string logicalCardNo = 8; // 逻辑卡号
|
||||
optional string physicalCardNo = 9; // 物理卡号
|
||||
optional string parallelNo = 10; // 并充序号
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
// 远程停止充电请求
|
||||
message RemoteStopChargingRequest {
|
||||
string pileCode = 4;
|
||||
string gunCode = 5;
|
||||
}
|
||||
|
||||
// 交易记录响应
|
||||
message TransactionRecordResponse {
|
||||
string tradeNo = 6;
|
||||
bool success = 7;
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
// 重启充电桩请求
|
||||
message RestartPileRequest {
|
||||
string pileCode = 4;
|
||||
int32 type = 7;
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
// OTA升级请求
|
||||
message OtaRequest {
|
||||
string pileCode = 1; // 桩编号
|
||||
int32 pileModel = 2; // 桩型号
|
||||
int32 pilePower = 3; // 桩功率
|
||||
string address = 4; // 升级服务器地址
|
||||
int32 port = 5; // 升级服务器端口
|
||||
string username = 6; // 用户名
|
||||
string password = 7; // 密码
|
||||
string filePath = 8; // 文件路径
|
||||
int32 executionControl = 9; // 执行控制
|
||||
int32 downloadTimeout = 10; // 下载超时时间
|
||||
}
|
||||
|
||||
// 离线卡余额更新请求
|
||||
message OfflineCardBalanceUpdateRequest {
|
||||
string pileCode = 1; // 充电桩编码
|
||||
string gunCode = 2; // 枪编号
|
||||
string cardNo = 3; // 物理卡号
|
||||
string limitYuan = 4; // 余额
|
||||
}
|
||||
|
||||
// 离线卡同步请求
|
||||
message OfflineCardSyncRequest {
|
||||
string pileCode = 1; // 充电桩编码
|
||||
int32 total = 2; // 下发卡个数
|
||||
repeated CardInfo cardInfo = 3; // 卡号集合
|
||||
}
|
||||
|
||||
// 卡信息
|
||||
message CardInfo {
|
||||
string cardNo = 1; // 物理卡号
|
||||
string logicCardNo = 2; // 逻辑卡号
|
||||
}
|
||||
|
||||
// 时间同步请求
|
||||
message TimeSyncRequest {
|
||||
string pileCode = 1;
|
||||
string time = 2;
|
||||
}
|
||||
58
jcpp-infrastructure-proto/src/main/proto/grpc.proto
Normal file
58
jcpp-infrastructure-proto/src/main/proto/grpc.proto
Normal file
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
* 开源代码,仅供学习和交流研究使用,商用请联系三丙
|
||||
* 微信:mohan_88888
|
||||
* 抖音:程序员三丙
|
||||
* 付费课程知识星球:https://t.zsxq.com/aKtXo
|
||||
*/
|
||||
syntax = "proto3";
|
||||
|
||||
package infrastructureProto;
|
||||
|
||||
import "downlink.proto";
|
||||
|
||||
option java_package = "sanbing.jcpp.proto.gen";
|
||||
option java_outer_classname = "GrpcProto";
|
||||
|
||||
// gRPC 服务定义
|
||||
service ProtocolInterface {
|
||||
rpc onDownlink(stream RequestMsg) returns (stream ResponseMsg) {}
|
||||
}
|
||||
|
||||
// gRPC 请求消息
|
||||
message RequestMsg {
|
||||
int64 ts = 1;
|
||||
TracerProto tracer = 2;
|
||||
ConnectRequestMsg connectRequestMsg = 10;
|
||||
DownlinkRequestMessage downlinkRequestMessage = 11;
|
||||
}
|
||||
|
||||
// gRPC 响应消息
|
||||
message ResponseMsg {
|
||||
TracerProto tracer = 2;
|
||||
ConnectResponseMsg connectResponseMsg = 12;
|
||||
DownlinkResponseMessage downlinkResponseMsg = 13;
|
||||
}
|
||||
|
||||
// 连接请求消息
|
||||
message ConnectRequestMsg {
|
||||
string nodeId = 1;
|
||||
}
|
||||
|
||||
// 连接响应消息
|
||||
message ConnectResponseMsg {
|
||||
ConnectResponseCode responseCode = 1;
|
||||
string errorMsg = 2;
|
||||
}
|
||||
|
||||
// 连接响应状态码
|
||||
enum ConnectResponseCode {
|
||||
ACCEPTED = 0;
|
||||
REFUSE = 1;
|
||||
}
|
||||
|
||||
// 追踪信息
|
||||
message TracerProto {
|
||||
string id = 1;
|
||||
string origin = 2;
|
||||
int64 ts = 3;
|
||||
}
|
||||
@@ -9,45 +9,9 @@ syntax = "proto3";
|
||||
package infrastructureProto;
|
||||
|
||||
option java_package = "sanbing.jcpp.proto.gen";
|
||||
option java_outer_classname = "ProtocolProto";
|
||||
|
||||
service ProtocolInterface {
|
||||
rpc onDownlink(stream RequestMsg) returns (stream ResponseMsg) {}
|
||||
}
|
||||
|
||||
message RequestMsg {
|
||||
int64 ts = 1;
|
||||
TracerProto tracer = 2;
|
||||
ConnectRequestMsg connectRequestMsg = 10;
|
||||
DownlinkRequestMessage downlinkRequestMessage = 11;
|
||||
}
|
||||
|
||||
message ResponseMsg {
|
||||
TracerProto tracer = 2;
|
||||
ConnectResponseMsg connectResponseMsg = 12;
|
||||
DownlinkResponseMessage downlinkResponseMsg = 13;
|
||||
}
|
||||
|
||||
message ConnectResponseMsg {
|
||||
ConnectResponseCode responseCode = 1;
|
||||
string errorMsg = 2;
|
||||
}
|
||||
|
||||
message ConnectRequestMsg {
|
||||
string nodeId = 1;
|
||||
}
|
||||
|
||||
enum ConnectResponseCode {
|
||||
ACCEPTED = 0;
|
||||
REFUSE = 1;
|
||||
}
|
||||
|
||||
message TracerProto {
|
||||
string id = 1;
|
||||
string origin = 2;
|
||||
int64 ts = 3;
|
||||
}
|
||||
option java_outer_classname = "UplinkProto";
|
||||
|
||||
// 上行队列消息(从充电桩到服务器)
|
||||
message UplinkQueueMessage {
|
||||
int64 messageIdMSB = 1;
|
||||
int64 messageIdLSB = 2;
|
||||
@@ -83,43 +47,14 @@ message UplinkQueueMessage {
|
||||
StartChargeRequest startChargeRequest = 44;
|
||||
}
|
||||
|
||||
message DownlinkRequestMessage {
|
||||
int64 messageIdMSB = 1;
|
||||
int64 messageIdLSB = 2;
|
||||
int64 sessionIdMSB = 3;
|
||||
int64 sessionIdLSB = 4;
|
||||
string protocolName = 6;
|
||||
string pileCode = 7;
|
||||
optional int64 requestIdMSB = 8;
|
||||
optional int64 requestIdLSB = 9;
|
||||
optional bytes requestData = 10;
|
||||
string downlinkCmd = 20;
|
||||
LoginResponse loginResponse = 21;
|
||||
VerifyPricingResponse verifyPricingResponse = 22;
|
||||
QueryPricingResponse queryPricingResponse = 23;
|
||||
SetPricingRequest setPricingRequest = 24;
|
||||
RemoteStartChargingRequest remoteStartChargingRequest = 25;
|
||||
RemoteStopChargingRequest remoteStopChargingRequest = 26;
|
||||
TransactionRecordResponse transactionRecordResponse = 27;
|
||||
RestartPileRequest restartPileRequest = 28;
|
||||
OtaRequest otaRequest = 29;
|
||||
OfflineCardBalanceUpdateRequest offlineCardBalanceUpdateRequest = 30;
|
||||
OfflineCardSyncRequest offlineCardSyncRequest = 31;
|
||||
TimeSyncRequest timeSyncRequest = 32;
|
||||
StartChargeResponse startChargeResponse = 33;
|
||||
}
|
||||
|
||||
message DownlinkResponseMessage {
|
||||
bool success = 1;
|
||||
optional string error = 2;
|
||||
}
|
||||
|
||||
// 会话关闭事件
|
||||
message SessionCloseEventProto {
|
||||
string pileCode = 2; // 充电桩编码
|
||||
SessionCloseReason reason = 3; // 会话关闭原因
|
||||
optional string additionalInfo = 20; // 附加信息
|
||||
}
|
||||
|
||||
// 会话关闭原因枚举
|
||||
enum SessionCloseReason {
|
||||
SESSION_CLOSE_UNKNOWN = 0; // 未知原因
|
||||
SESSION_CLOSE_DESTRUCTION = 1; // 自然销毁(空闲超时)
|
||||
@@ -127,6 +62,7 @@ enum SessionCloseReason {
|
||||
SESSION_CLOSE_MANUALLY = 3; // 手动关闭
|
||||
}
|
||||
|
||||
// 登录请求
|
||||
message LoginRequest {
|
||||
string pileCode = 2;
|
||||
string credential = 3;
|
||||
@@ -138,6 +74,7 @@ message LoginRequest {
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
// 启动充电请求
|
||||
message StartChargeRequest {
|
||||
int64 ts = 1;
|
||||
string pileCode = 2; // 桩编号
|
||||
@@ -150,36 +87,7 @@ message StartChargeRequest {
|
||||
optional string additionalInfo = 20; // 附加信息
|
||||
}
|
||||
|
||||
message StartChargeResponse {
|
||||
string tradeNo = 1; // 交易流水号
|
||||
string pileCode = 2; // 桩编号
|
||||
string gunCode = 3; // 枪编号
|
||||
string logicalCardNo = 4; // 逻辑卡号
|
||||
string limitYuan = 5; // 账户余额
|
||||
bool authSuccess = 6; // 鉴权成功标志
|
||||
string failReason = 7; // 失败原因
|
||||
}
|
||||
|
||||
enum FailReason {
|
||||
SUCCESS = 0; // 成功
|
||||
ACCOUNT_NOT_EXISTS = 1; // 账户不存在
|
||||
ACCOUNT_FROZEN = 2; // 账户冻结
|
||||
INSUFFICIENT_BALANCE = 3; // 账户余额不足
|
||||
CARD_HAS_UNPAID_RECORD = 4; // 该卡存在未结账记录
|
||||
PILE_DISABLED = 5; // 桩停用
|
||||
ACCOUNT_NOT_ALLOWED_ON_PILE = 6; // 该账户不能在此桩上充电
|
||||
PASSWORD_ERROR = 7; // 密码错误
|
||||
INSUFFICIENT_STATION_CAPACITY = 8; // 电站电容不足
|
||||
VIN_CODE_NOT_EXISTS = 9; // 系统中vin码不存在
|
||||
PILE_HAS_UNPAID_RECORD = 10; // 该桩存在未结账记录
|
||||
PILE_NOT_SUPPORT_CARD = 11; // 该桩不支持该卡
|
||||
}
|
||||
|
||||
message LoginResponse {
|
||||
bool success = 1;
|
||||
string pileCode = 2;
|
||||
}
|
||||
|
||||
// 心跳请求
|
||||
message HeartBeatRequest {
|
||||
string pileCode = 3;
|
||||
string remoteAddress = 4;
|
||||
@@ -190,6 +98,7 @@ message HeartBeatRequest {
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
// 校验计费请求
|
||||
message VerifyPricingRequest {
|
||||
string pileCode = 4;
|
||||
int64 pricingId = 30;
|
||||
@@ -197,94 +106,13 @@ message VerifyPricingRequest {
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
message VerifyPricingResponse {
|
||||
bool success = 1;
|
||||
int64 pricingId = 30;
|
||||
}
|
||||
|
||||
// 查询计费请求
|
||||
message QueryPricingRequest {
|
||||
string pileCode = 4;
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
message QueryPricingResponse {
|
||||
string pileCode = 4;
|
||||
int64 pricingId = 30;
|
||||
PricingModelProto pricingModel = 1;
|
||||
}
|
||||
|
||||
// 计费模型配置 - 支持三种计费方式
|
||||
message PricingModelProto {
|
||||
PricingModelType type = 3; // 计费类型:充电/放电
|
||||
PricingModelRule rule = 4; // 计费规则:标准/峰谷/时段
|
||||
|
||||
// 计费配置:根据rule字段确定使用哪种配置
|
||||
oneof pricing_config {
|
||||
StandardPricingProto standardPricing = 5; // 标准计费:固定价格
|
||||
PeakValleyPricingProto peakValleyPricing = 6; // 峰谷计价:按尖峰平谷分时段
|
||||
TimePeriodPricingProto timePeriodPricing = 7; // 时段计价:自定义时段价格
|
||||
}
|
||||
}
|
||||
|
||||
message PeriodProto {
|
||||
int32 sn = 1;
|
||||
string begin = 2;
|
||||
string end = 3;
|
||||
PricingModelFlag flag = 4;
|
||||
}
|
||||
|
||||
message FlagPriceProto {
|
||||
PricingModelFlag flag = 1;
|
||||
string elec = 2;
|
||||
string serv = 3;
|
||||
}
|
||||
|
||||
// 标准计费配置 - 全天统一价格
|
||||
message StandardPricingProto {
|
||||
string elecPrice = 1; // 电费价格(元/度)
|
||||
string servPrice = 2; // 服务费价格(元/度)
|
||||
}
|
||||
|
||||
// 峰谷计价配置 - 按电网峰谷政策分时计费
|
||||
message PeakValleyPricingProto {
|
||||
map<int32, FlagPriceProto> flagPrice = 1; // 各时段价格映射表
|
||||
repeated PeriodProto period = 2; // 时段划分配置
|
||||
}
|
||||
|
||||
// 时段计价配置 - 运营商自定义时段计费
|
||||
message TimePeriodPricingProto {
|
||||
repeated TimePeriodItemProto periods = 1; // 自定义时段列表
|
||||
}
|
||||
|
||||
// 时段计价单个时段定义
|
||||
message TimePeriodItemProto {
|
||||
int32 periodNo = 1; // 时段编号(从1开始)
|
||||
string startTime = 2; // 开始时间(HH:mm:ss格式)
|
||||
string endTime = 3; // 结束时间(HH:mm:ss格式)
|
||||
string elecPrice = 4; // 该时段电费(元/度)
|
||||
string servPrice = 5; // 该时段服务费(元/度)
|
||||
optional string description = 6; // 时段名称(如"早高峰")
|
||||
}
|
||||
|
||||
enum PricingModelType {
|
||||
CHARGE = 0; // 充电费率模型
|
||||
DISCHARGE = 1; // 放电费率模型
|
||||
}
|
||||
|
||||
enum PricingModelRule {
|
||||
STANDARD = 0; // 标准计费:全天统一价格
|
||||
PEAK_VALLEY_PRICING = 1; // 峰谷计费:按电网峰谷政策
|
||||
TIME_PERIOD_PRICING = 2; // 时段计费:运营商自定义
|
||||
}
|
||||
|
||||
enum PricingModelFlag {
|
||||
TOP = 0; // 尖峰
|
||||
PEAK = 1; // 峰
|
||||
FLAT = 2; // 平
|
||||
VALLEY = 3; // 谷
|
||||
DEEP = 4; // 深谷
|
||||
}
|
||||
|
||||
// 枪运行状态枚举
|
||||
enum GunRunStatus {
|
||||
IDLE = 0; // 空闲
|
||||
INSERTED = 1; // 已插枪
|
||||
@@ -298,6 +126,7 @@ enum GunRunStatus {
|
||||
UNKNOWN = 9; // 未知
|
||||
}
|
||||
|
||||
// 枪运行状态消息
|
||||
message GunRunStatusProto {
|
||||
string pileCode = 4;
|
||||
string gunCode = 5;
|
||||
@@ -306,6 +135,7 @@ message GunRunStatusProto {
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
// 充电进度消息
|
||||
message ChargingProgressProto {
|
||||
string pileCode = 4;
|
||||
string gunCode = 5;
|
||||
@@ -319,35 +149,14 @@ message ChargingProgressProto {
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
message SetPricingRequest {
|
||||
string pileCode = 4;
|
||||
int64 pricingId = 30;
|
||||
PricingModelProto pricingModel = 1;
|
||||
}
|
||||
|
||||
// 设置计费响应
|
||||
message SetPricingResponse {
|
||||
bool success = 1;
|
||||
string pileCode = 4;
|
||||
int64 pricingId = 30;
|
||||
}
|
||||
|
||||
message RemoteStartChargingRequest {
|
||||
string pileCode = 4;
|
||||
string gunCode = 5;
|
||||
string tradeNo = 6;
|
||||
string limitYuan = 7;
|
||||
optional string logicalCardNo = 8; // 逻辑卡号
|
||||
optional string physicalCardNo = 9; // 物理卡号
|
||||
optional string parallelNo = 10; // 并充序号
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
message RestartPileRequest {
|
||||
string pileCode = 4;
|
||||
int32 type = 7;
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
// 远程启动充电响应
|
||||
message RemoteStartChargingResponse {
|
||||
string pileCode = 4;
|
||||
string gunCode = 5;
|
||||
@@ -356,16 +165,14 @@ message RemoteStartChargingResponse {
|
||||
string failReason = 8;
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
// 重启充电桩响应
|
||||
message RestartPileResponse {
|
||||
string pileCode = 4;
|
||||
bool success = 7;
|
||||
}
|
||||
|
||||
message RemoteStopChargingRequest {
|
||||
string pileCode = 4;
|
||||
string gunCode = 5;
|
||||
}
|
||||
|
||||
// 远程停止充电响应
|
||||
message RemoteStopChargingResponse {
|
||||
string pileCode = 4;
|
||||
string gunCode = 5;
|
||||
@@ -374,11 +181,13 @@ message RemoteStopChargingResponse {
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
// 明细类型枚举
|
||||
enum DetailType {
|
||||
PEAK_VALLEY = 0; // 峰谷电量明细
|
||||
TIME_PERIOD = 1; // 时段电量明细
|
||||
}
|
||||
|
||||
// 峰谷电量明细
|
||||
message PeakValleyDetail {
|
||||
string topEnergyKWh = 1; // 尖峰电量
|
||||
string topAmountYuan = 2; // 尖峰电费
|
||||
@@ -392,6 +201,7 @@ message PeakValleyDetail {
|
||||
string deepAmountYuan = 10; // 深谷电费
|
||||
}
|
||||
|
||||
// 时段电量明细
|
||||
message TimePeriodDetail {
|
||||
message PeriodItem {
|
||||
int32 periodNo = 1; // 时段序号,从1开始
|
||||
@@ -403,12 +213,14 @@ message TimePeriodDetail {
|
||||
repeated PeriodItem periods = 1; // 时段列表
|
||||
}
|
||||
|
||||
// 交易明细
|
||||
message TransactionDetail {
|
||||
DetailType type = 1; // 明细类型
|
||||
optional PeakValleyDetail peakValley = 2; // 峰谷电量明细
|
||||
optional TimePeriodDetail timePeriod = 3; // 时段电量明细
|
||||
}
|
||||
|
||||
// 交易记录请求
|
||||
message TransactionRecordRequest {
|
||||
string pileCode = 4; // 充电桩编码
|
||||
string gunCode = 5; // 枪编号
|
||||
@@ -424,6 +236,7 @@ message TransactionRecordRequest {
|
||||
optional string additionalInfo = 20; // 附加信息
|
||||
}
|
||||
|
||||
// BMS充电错误消息
|
||||
message BmsChargingErrorProto {
|
||||
string pileCode = 4;
|
||||
string gunCode = 5;
|
||||
@@ -431,12 +244,7 @@ message BmsChargingErrorProto {
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
message TransactionRecordResponse {
|
||||
string tradeNo = 6;
|
||||
bool success = 7;
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
// BMS参数配置上报
|
||||
message BmsParamConfigReportProto {
|
||||
string pileCode = 2; // 桩编码
|
||||
string gunCode = 3; // 枪编码
|
||||
@@ -454,6 +262,7 @@ message BmsParamConfigReportProto {
|
||||
string pileMinOutputCurrent = 15; // 电桩最小输出电流 (A)
|
||||
}
|
||||
|
||||
// BMS充电信息
|
||||
message BmsChargingInfoProto {
|
||||
string pileCode = 4;
|
||||
string gunCode = 5;
|
||||
@@ -461,26 +270,7 @@ message BmsChargingInfoProto {
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
message OtaRequest {
|
||||
string pileCode = 1; // 桩编号
|
||||
int32 pileModel = 2; // 桩型号
|
||||
int32 pilePower = 3; // 桩功率
|
||||
string address = 4; // 升级服务器地址
|
||||
int32 port = 5; // 升级服务器端口
|
||||
string username = 6; // 用户名
|
||||
string password = 7; // 密码
|
||||
string filePath = 8; // 文件路径
|
||||
int32 executionControl = 9; // 执行控制
|
||||
int32 downloadTimeout = 10; // 下载超时时间
|
||||
|
||||
}
|
||||
|
||||
message OtaResponse {
|
||||
string pileCode = 1; // 桩编号
|
||||
bool success = 2;
|
||||
optional string errorMsg = 3;
|
||||
}
|
||||
|
||||
// BMS中止充电
|
||||
message BmsAbortProto {
|
||||
string pileCode = 4;
|
||||
string gunCode = 5;
|
||||
@@ -488,6 +278,7 @@ message BmsAbortProto {
|
||||
optional string additionalInfo = 20;
|
||||
}
|
||||
|
||||
// BMS握手信息
|
||||
message BmsHandshakeProto {
|
||||
string pileCode = 2; // 桩编码
|
||||
string gunCode = 3; // 枪编码
|
||||
@@ -508,6 +299,14 @@ message BmsHandshakeProto {
|
||||
optional string additionalInfo = 20; // 附加信息
|
||||
}
|
||||
|
||||
// OTA响应
|
||||
message OtaResponse {
|
||||
string pileCode = 1; // 桩编号
|
||||
bool success = 2;
|
||||
optional string errorMsg = 3;
|
||||
}
|
||||
|
||||
// 地锁状态上报
|
||||
message GroundLockStatusProto {
|
||||
string pileCode = 2; // 桩编号
|
||||
string gunCode = 3; // 枪号
|
||||
@@ -519,13 +318,7 @@ message GroundLockStatusProto {
|
||||
optional string additionalInfo = 20; // 附加信息
|
||||
}
|
||||
|
||||
message OfflineCardBalanceUpdateRequest {
|
||||
string pileCode = 1; // 充电桩编码
|
||||
string gunCode = 2; // 枪编号
|
||||
string cardNo = 3; // 物理卡号
|
||||
string limitYuan = 4; // 余额
|
||||
}
|
||||
|
||||
// 离线卡余额更新响应
|
||||
message OfflineCardBalanceUpdateResponse {
|
||||
string pileCode = 1; // 充电桩编码
|
||||
string cardNo = 2; // 物理卡号
|
||||
@@ -533,34 +326,20 @@ message OfflineCardBalanceUpdateResponse {
|
||||
optional string errorMsg = 4;
|
||||
}
|
||||
|
||||
message OfflineCardSyncRequest {
|
||||
string pileCode = 1; // 充电桩编码
|
||||
int32 total = 2; // 下发卡个数
|
||||
repeated CardInfo cardInfo = 3; // 卡号集合
|
||||
}
|
||||
|
||||
message CardInfo {
|
||||
string cardNo = 1; // 物理卡号
|
||||
string logicCardNo = 2; // 逻辑卡号
|
||||
}
|
||||
|
||||
|
||||
// 离线卡同步响应
|
||||
message OfflineCardSyncResponse {
|
||||
string pileCode = 1; // 充电桩编码
|
||||
bool success = 3;
|
||||
optional string errorMsg = 4;
|
||||
}
|
||||
|
||||
message TimeSyncRequest {
|
||||
string pileCode = 1;
|
||||
string time = 2;
|
||||
}
|
||||
|
||||
// 时间同步响应
|
||||
message TimeSyncResponse {
|
||||
string pileCode = 1;
|
||||
string time = 2;
|
||||
}
|
||||
|
||||
// BMS需求充电机输出
|
||||
message BmsDemandChargerOutputProto {
|
||||
string pileCode = 4;
|
||||
string gunCode = 5;
|
||||
@@ -10,7 +10,7 @@ package sanbing.jcpp.infrastructure.queue.provider;
|
||||
import sanbing.jcpp.infrastructure.queue.ProtoQueueMsg;
|
||||
import sanbing.jcpp.infrastructure.queue.QueueConsumer;
|
||||
import sanbing.jcpp.infrastructure.queue.QueueProducer;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
|
||||
public interface AppQueueFactory {
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ import sanbing.jcpp.infrastructure.queue.memory.InMemoryQueueConsumer;
|
||||
import sanbing.jcpp.infrastructure.queue.memory.InMemoryQueueProducer;
|
||||
import sanbing.jcpp.infrastructure.queue.memory.InMemoryStorage;
|
||||
import sanbing.jcpp.infrastructure.queue.settings.QueueAppSettings;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
|
||||
@@ -17,7 +17,7 @@ import sanbing.jcpp.infrastructure.queue.QueueProducer;
|
||||
import sanbing.jcpp.infrastructure.queue.discovery.ServiceInfoProvider;
|
||||
import sanbing.jcpp.infrastructure.queue.kafka.*;
|
||||
import sanbing.jcpp.infrastructure.queue.settings.QueueAppSettings;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
|
||||
@Component
|
||||
@ConditionalOnExpression("'${queue.type:null}'=='kafka'")
|
||||
|
||||
@@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.context.request.async.DeferredResult;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.protocol.domain.ProtocolSession;
|
||||
import sanbing.jcpp.protocol.provider.ProtocolSessionRegistryProvider;
|
||||
|
||||
|
||||
@@ -24,8 +24,9 @@ import org.springframework.stereotype.Service;
|
||||
import sanbing.jcpp.infrastructure.util.mdc.MDCUtils;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerContextUtil;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerRunnable;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.GrpcProto.*;
|
||||
import sanbing.jcpp.proto.gen.ProtocolInterfaceGrpc.ProtocolInterfaceImplBase;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.*;
|
||||
import sanbing.jcpp.protocol.domain.ProtocolSession;
|
||||
import sanbing.jcpp.protocol.provider.ProtocolSessionRegistryProvider;
|
||||
|
||||
|
||||
@@ -11,8 +11,10 @@ import com.github.benmanes.caffeine.cache.Caffeine;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.SessionCloseEventProto;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.SessionCloseReason;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.forwarder.Forwarder;
|
||||
|
||||
import java.io.Closeable;
|
||||
@@ -66,10 +68,10 @@ public abstract class ProtocolSession implements Closeable {
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
close(ProtocolProto.SessionCloseReason.SESSION_CLOSE_DESTRUCTION);
|
||||
close(SessionCloseReason.SESSION_CLOSE_DESTRUCTION);
|
||||
}
|
||||
|
||||
public void close(ProtocolProto.SessionCloseReason reason) {
|
||||
public void close(SessionCloseReason reason) {
|
||||
log.info("[{}] Protocol会话关闭,原因: {}", this, reason);
|
||||
|
||||
scheduledFutures.values().forEach(scheduledFuture -> scheduledFuture.cancel(true));
|
||||
@@ -79,13 +81,13 @@ public abstract class ProtocolSession implements Closeable {
|
||||
if (forwarder != null && !pileCodeSet.isEmpty()) {
|
||||
|
||||
for (String pileCode : pileCodeSet) {
|
||||
ProtocolProto.SessionCloseEventProto sessionCloseEvent = ProtocolProto.SessionCloseEventProto.newBuilder()
|
||||
SessionCloseEventProto sessionCloseEvent = SessionCloseEventProto.newBuilder()
|
||||
.setPileCode(pileCode)
|
||||
.setReason(reason)
|
||||
.setAdditionalInfo("Session closed: " + reason)
|
||||
.build();
|
||||
|
||||
ProtocolProto.UplinkQueueMessage uplinkQueueMessage = ProtocolProto.UplinkQueueMessage.newBuilder()
|
||||
UplinkQueueMessage uplinkQueueMessage = UplinkQueueMessage.newBuilder()
|
||||
.setMessageIdMSB(UUID.randomUUID().getMostSignificantBits())
|
||||
.setMessageIdLSB(UUID.randomUUID().getLeastSignificantBits())
|
||||
.setSessionIdMSB(id.getMostSignificantBits())
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*/
|
||||
package sanbing.jcpp.protocol.domain;
|
||||
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.DownlinkRequestMessage;
|
||||
|
||||
/**
|
||||
* @author 九筒
|
||||
|
||||
@@ -22,7 +22,7 @@ import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.infrastructure.util.mdc.MDCUtils;
|
||||
import sanbing.jcpp.infrastructure.util.trace.Tracer;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerContextUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
@@ -30,7 +30,7 @@ import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.infrastructure.util.mdc.MDCUtils;
|
||||
import sanbing.jcpp.infrastructure.util.trace.Tracer;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerContextUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.cfg.ForwarderCfg;
|
||||
import sanbing.jcpp.protocol.cfg.KafkaCfg;
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import sanbing.jcpp.infrastructure.queue.discovery.PartitionProvider;
|
||||
import sanbing.jcpp.infrastructure.queue.discovery.ServiceInfoProvider;
|
||||
import sanbing.jcpp.infrastructure.queue.provider.AppQueueFactory;
|
||||
import sanbing.jcpp.infrastructure.stats.StatsFactory;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.cfg.ForwarderCfg;
|
||||
import sanbing.jcpp.protocol.cfg.MemoryCfg;
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@ import sanbing.jcpp.infrastructure.stats.MessagesStats;
|
||||
import sanbing.jcpp.infrastructure.util.exception.DownlinkException;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerContextUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.SessionCloseReason;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.SessionCloseReason;
|
||||
import sanbing.jcpp.protocol.ProtocolMessageProcessor;
|
||||
import sanbing.jcpp.protocol.domain.ListenerToHandlerMsg;
|
||||
import sanbing.jcpp.protocol.domain.ProtocolUplinkMsg;
|
||||
|
||||
@@ -11,9 +11,8 @@ import io.netty.channel.ChannelHandlerContext;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.SessionCloseReason;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.SessionCloseReason;
|
||||
import sanbing.jcpp.protocol.domain.ProtocolSession;
|
||||
import sanbing.jcpp.protocol.listener.tcp.enums.SequenceNumberLength;
|
||||
|
||||
@@ -83,7 +82,7 @@ public class TcpSession extends ProtocolSession {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close(ProtocolProto.SessionCloseReason reason) {
|
||||
public void close(SessionCloseReason reason) {
|
||||
super.close(reason);
|
||||
|
||||
ctx.flush();
|
||||
|
||||
@@ -16,7 +16,7 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import sanbing.jcpp.infrastructure.util.async.JCPPThreadFactory;
|
||||
import sanbing.jcpp.infrastructure.util.config.ThreadPoolConfiguration;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.SessionCloseReason;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.SessionCloseReason;
|
||||
import sanbing.jcpp.protocol.domain.ProtocolSession;
|
||||
import sanbing.jcpp.protocol.provider.ProtocolSessionRegistryProvider;
|
||||
|
||||
|
||||
@@ -22,8 +22,8 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.infrastructure.util.property.PropertyUtils;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.RemoteStartChargingRequest;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.RemoteStartChargingRequest;
|
||||
import sanbing.jcpp.protocol.AbstractProtocolTestBase;
|
||||
import sanbing.jcpp.protocol.domain.DownlinkCmdEnum;
|
||||
import sanbing.jcpp.protocol.domain.ProtocolSession;
|
||||
|
||||
@@ -9,7 +9,7 @@ package sanbing.jcpp.protocol.lvneng;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.DownlinkRequestMessage;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -13,7 +13,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.JCPPPair;
|
||||
import sanbing.jcpp.infrastructure.util.codec.ByteUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.ProtocolMessageProcessor;
|
||||
import sanbing.jcpp.protocol.domain.DownlinkCmdEnum;
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.google.protobuf.ByteString;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerContextUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
|
||||
@@ -12,8 +12,8 @@ import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.HeartBeatRequest;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.HeartBeatRequest;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -14,7 +14,7 @@ import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.infrastructure.util.mdc.MDCUtils;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerContextUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.LoginResponse;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.LoginResponse;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
@@ -28,7 +28,7 @@ import java.util.Arrays;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static sanbing.jcpp.infrastructure.util.config.ThreadPoolConfiguration.PROTOCOL_SESSION_SCHEDULED;
|
||||
import static sanbing.jcpp.proto.gen.ProtocolProto.SessionCloseReason.SESSION_CLOSE_MANUALLY;
|
||||
import static sanbing.jcpp.proto.gen.UplinkProto.SessionCloseReason.SESSION_CLOSE_MANUALLY;
|
||||
import static sanbing.jcpp.protocol.domain.DownlinkCmdEnum.LOGIN_ACK;
|
||||
import static sanbing.jcpp.protocol.domain.DownlinkCmdEnum.SYNC_TIME_REQUEST;
|
||||
import static sanbing.jcpp.protocol.listener.tcp.TcpSession.SCHEDULE_KEY_AUTO_SYNC_TIME;
|
||||
|
||||
@@ -13,8 +13,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.LoginRequest;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.LoginRequest;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -13,10 +13,10 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.ChargingProgressProto;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.GunRunStatus;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.GunRunStatusProto;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.ChargingProgressProto;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.GunRunStatus;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.GunRunStatusProto;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -10,7 +10,7 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.TransactionRecordResponse;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.TransactionRecordResponse;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -13,8 +13,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.*;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.TimePeriodDetail.PeriodItem;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.*;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.TimePeriodDetail.PeriodItem;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -11,7 +11,7 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.PeriodProto;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.PeriodProto;
|
||||
import sanbing.jcpp.protocol.domain.DownlinkCmdEnum;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
import sanbing.jcpp.protocol.listener.tcp.enums.SequenceNumberLength;
|
||||
|
||||
@@ -9,7 +9,7 @@ package sanbing.jcpp.protocol.yunkuaichong;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.DownlinkRequestMessage;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -13,7 +13,7 @@ import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.JCPPPair;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.DownlinkRequestMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.ProtocolMessageProcessor;
|
||||
import sanbing.jcpp.protocol.domain.DownlinkCmdEnum;
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.google.protobuf.ByteString;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerContextUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.BmsAbortProto;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.BmsAbortProto;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -12,8 +12,8 @@ import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.BmsChargingErrorProto;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.BmsChargingErrorProto;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -12,8 +12,8 @@ import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.BmsChargingInfoProto;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.BmsChargingInfoProto;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -13,8 +13,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerContextUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.BmsDemandChargerOutputProto;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.BmsDemandChargerOutputProto;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -13,8 +13,8 @@ import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.BmsHandshakeProto;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.BmsHandshakeProto;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -10,8 +10,8 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.BmsParamConfigReportProto;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.BmsParamConfigReportProto;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -12,8 +12,8 @@ import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.HeartBeatRequest;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.HeartBeatRequest;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -10,8 +10,8 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.GroundLockStatusProto;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.GroundLockStatusProto;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -14,7 +14,7 @@ import sanbing.jcpp.infrastructure.util.codec.CP56Time2aUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.infrastructure.util.mdc.MDCUtils;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerContextUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.LoginResponse;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.LoginResponse;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
@@ -28,7 +28,7 @@ import java.util.Arrays;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static sanbing.jcpp.infrastructure.util.config.ThreadPoolConfiguration.PROTOCOL_SESSION_SCHEDULED;
|
||||
import static sanbing.jcpp.proto.gen.ProtocolProto.SessionCloseReason.SESSION_CLOSE_MANUALLY;
|
||||
import static sanbing.jcpp.proto.gen.UplinkProto.SessionCloseReason.SESSION_CLOSE_MANUALLY;
|
||||
import static sanbing.jcpp.protocol.domain.DownlinkCmdEnum.LOGIN_ACK;
|
||||
import static sanbing.jcpp.protocol.domain.DownlinkCmdEnum.SYNC_TIME_REQUEST;
|
||||
import static sanbing.jcpp.protocol.listener.tcp.TcpSession.SCHEDULE_KEY_AUTO_SYNC_TIME;
|
||||
|
||||
@@ -12,8 +12,8 @@ import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.LoginRequest;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.LoginRequest;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -10,7 +10,7 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.OfflineCardBalanceUpdateRequest;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.OfflineCardBalanceUpdateRequest;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -11,8 +11,8 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.OfflineCardBalanceUpdateResponse;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.OfflineCardBalanceUpdateResponse;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -10,7 +10,7 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.OfflineCardSyncRequest;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.OfflineCardSyncRequest;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -11,8 +11,8 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.OfflineCardSyncResponse;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.OfflineCardSyncResponse;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -9,7 +9,7 @@ package sanbing.jcpp.protocol.yunkuaichong.v150.cmd;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.OtaRequest;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.OtaRequest;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -10,8 +10,8 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.OtaResponse;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.OtaResponse;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -9,7 +9,7 @@ package sanbing.jcpp.protocol.yunkuaichong.v150.cmd;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.*;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.*;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
@@ -21,7 +21,7 @@ import java.time.LocalTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static sanbing.jcpp.proto.gen.ProtocolProto.PricingModelFlag.*;
|
||||
import static sanbing.jcpp.proto.gen.DownlinkProto.PricingModelFlag.*;
|
||||
import static sanbing.jcpp.protocol.domain.DownlinkCmdEnum.QUERY_PRICING_ACK;
|
||||
import static sanbing.jcpp.protocol.yunkuaichong.YunKuaiChongProtocolConstants.ProtocolNames.*;
|
||||
|
||||
|
||||
@@ -12,8 +12,8 @@ import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.QueryPricingRequest;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.QueryPricingRequest;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -13,10 +13,10 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.ChargingProgressProto;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.GunRunStatus;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.GunRunStatusProto;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.ChargingProgressProto;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.GunRunStatus;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.GunRunStatusProto;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -9,7 +9,7 @@ package sanbing.jcpp.protocol.yunkuaichong.v150.cmd;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.RemoteStartChargingRequest;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.RemoteStartChargingRequest;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -12,8 +12,8 @@ import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.RemoteStartChargingResponse;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.RemoteStartChargingResponse;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -9,7 +9,7 @@ package sanbing.jcpp.protocol.yunkuaichong.v150.cmd;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.RemoteStopChargingRequest;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.RemoteStopChargingRequest;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -12,8 +12,8 @@ import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.RemoteStopChargingResponse;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.RemoteStopChargingResponse;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -10,8 +10,8 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.RestartPileResponse;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.RestartPileResponse;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -9,7 +9,7 @@ package sanbing.jcpp.protocol.yunkuaichong.v150.cmd;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.RestartPileRequest;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.RestartPileRequest;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -10,8 +10,8 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.SetPricingResponse;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.SetPricingResponse;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -9,7 +9,7 @@ package sanbing.jcpp.protocol.yunkuaichong.v150.cmd;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.*;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.*;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
@@ -22,7 +22,7 @@ import java.time.LocalTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static sanbing.jcpp.proto.gen.ProtocolProto.PricingModelFlag.*;
|
||||
import static sanbing.jcpp.proto.gen.DownlinkProto.PricingModelFlag.*;
|
||||
import static sanbing.jcpp.protocol.domain.DownlinkCmdEnum.SET_PRICING;
|
||||
import static sanbing.jcpp.protocol.yunkuaichong.YunKuaiChongProtocolConstants.ProtocolNames.*;
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
@@ -43,7 +43,7 @@ public class YunKuaiChongV150StartChargeAckDLCmd extends YunKuaiChongDownlinkCmd
|
||||
return;
|
||||
}
|
||||
|
||||
ProtocolProto.StartChargeResponse startChargeResponse = yunKuaiChongDwonlinkMessage.getMsg().getStartChargeResponse();
|
||||
DownlinkProto.StartChargeResponse startChargeResponse = yunKuaiChongDwonlinkMessage.getMsg().getStartChargeResponse();
|
||||
String tradeNo = startChargeResponse.getTradeNo();
|
||||
String pileCode = startChargeResponse.getPileCode();
|
||||
String gunCode = startChargeResponse.getGunCode();
|
||||
|
||||
@@ -15,15 +15,14 @@ import org.springframework.util.DigestUtils;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.infrastructure.util.trace.TracerContextUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
import sanbing.jcpp.protocol.yunkuaichong.YunKuaiChongUplinkCmdExe;
|
||||
import sanbing.jcpp.protocol.yunkuaichong.YunKuaiChongUplinkMessage;
|
||||
import sanbing.jcpp.protocol.yunkuaichong.enums.YunKuaiChongStartTypeEnum;
|
||||
import sanbing.jcpp.protocol.yunkuaichong.enums.YunKuaiChongPasswordRequiredEnum;
|
||||
|
||||
import sanbing.jcpp.protocol.yunkuaichong.enums.YunKuaiChongStartTypeEnum;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
@@ -83,7 +82,7 @@ public class YunKuaiChongV150StartChargeULCmd extends YunKuaiChongUplinkCmdExe {
|
||||
String carVinCode = reverseVinCode(new String(carVinCodeBytes, StandardCharsets.US_ASCII));
|
||||
|
||||
// 转发到后端
|
||||
ProtocolProto.StartChargeRequest startChargingRequest = ProtocolProto.StartChargeRequest.newBuilder()
|
||||
UplinkProto.StartChargeRequest startChargingRequest = UplinkProto.StartChargeRequest.newBuilder()
|
||||
.setTs(ts)
|
||||
.setPileCode(pileCode)
|
||||
.setGunCode(gunCode)
|
||||
@@ -95,7 +94,7 @@ public class YunKuaiChongV150StartChargeULCmd extends YunKuaiChongUplinkCmdExe {
|
||||
.setAdditionalInfo(additionalInfo.toString())
|
||||
.build();
|
||||
|
||||
ProtocolProto.UplinkQueueMessage uplinkQueueMessage = uplinkMessageBuilder(startChargingRequest.getPileCode(), tcpSession, yunKuaiChongUplinkMessage)
|
||||
UplinkProto.UplinkQueueMessage uplinkQueueMessage = uplinkMessageBuilder(startChargingRequest.getPileCode(), tcpSession, yunKuaiChongUplinkMessage)
|
||||
.setStartChargeRequest(startChargingRequest)
|
||||
.build();
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.CP56Time2aUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.TimeSyncRequest;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.TimeSyncRequest;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -12,8 +12,8 @@ import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.codec.CP56Time2aUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.TimeSyncResponse;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.TimeSyncResponse;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -10,7 +10,7 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.TransactionRecordResponse;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.TransactionRecordResponse;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -13,7 +13,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.codec.CP56Time2aUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.*;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.*;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -10,7 +10,7 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.VerifyPricingResponse;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto.VerifyPricingResponse;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -13,8 +13,8 @@ import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.VerifyPricingRequest;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.VerifyPricingRequest;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -10,7 +10,7 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto;
|
||||
import sanbing.jcpp.proto.gen.DownlinkProto;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
@@ -45,7 +45,7 @@ public class YunKuaiChongV160RemoteParallelStartDLCmd extends YunKuaiChongDownli
|
||||
return;
|
||||
}
|
||||
|
||||
ProtocolProto.RemoteStartChargingRequest remoteStartChargingRequest = yunKuaiChongDwonlinkMessage.getMsg().getRemoteStartChargingRequest();
|
||||
DownlinkProto.RemoteStartChargingRequest remoteStartChargingRequest = yunKuaiChongDwonlinkMessage.getMsg().getRemoteStartChargingRequest();
|
||||
String pileCode = remoteStartChargingRequest.getPileCode();
|
||||
String gunCode = remoteStartChargingRequest.getGunCode();
|
||||
String tradeNo = remoteStartChargingRequest.getTradeNo();
|
||||
|
||||
@@ -12,8 +12,8 @@ import io.netty.buffer.Unpooled;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.RemoteStartChargingResponse;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.RemoteStartChargingResponse;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.UplinkQueueMessage;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -14,7 +14,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import sanbing.jcpp.infrastructure.util.codec.BCDUtil;
|
||||
import sanbing.jcpp.infrastructure.util.codec.CP56Time2aUtil;
|
||||
import sanbing.jcpp.infrastructure.util.jackson.JacksonUtil;
|
||||
import sanbing.jcpp.proto.gen.ProtocolProto.*;
|
||||
import sanbing.jcpp.proto.gen.UplinkProto.*;
|
||||
import sanbing.jcpp.protocol.ProtocolContext;
|
||||
import sanbing.jcpp.protocol.annotation.ProtocolCmd;
|
||||
import sanbing.jcpp.protocol.listener.tcp.TcpSession;
|
||||
|
||||
@@ -8,7 +8,6 @@ import React, {useEffect, useMemo, useState} from 'react';
|
||||
import {
|
||||
Button,
|
||||
Card,
|
||||
Cascader,
|
||||
Checkbox,
|
||||
Col,
|
||||
Dropdown,
|
||||
@@ -41,7 +40,6 @@ const GunManagement: React.FC = () => {
|
||||
const [form] = Form.useForm();
|
||||
const [stationOptions, setStationOptions] = useState<StationOption[]>([]);
|
||||
const [pileOptions, setPileOptions] = useState<PileOption[]>([]);
|
||||
const [cascaderOptions, setCascaderOptions] = useState<any[]>([]);
|
||||
const [modalVisible, setModalVisible] = useState(false);
|
||||
const [modalLoading, setModalLoading] = useState(false);
|
||||
const [isEdit, setIsEdit] = useState(false);
|
||||
@@ -238,6 +236,9 @@ const GunManagement: React.FC = () => {
|
||||
<Button type="link" size="small" onClick={() => handleEdit(record)}>
|
||||
编辑
|
||||
</Button>
|
||||
<Button type="link" size="small" onClick={() => handleView(record)}>
|
||||
查看
|
||||
</Button>
|
||||
<Popconfirm
|
||||
title="确认删除充电枪"
|
||||
description={
|
||||
@@ -428,16 +429,6 @@ const GunManagement: React.FC = () => {
|
||||
}
|
||||
};
|
||||
|
||||
// 加载级联选择器数据
|
||||
const loadCascaderOptions = async () => {
|
||||
try {
|
||||
const response = await stationService.getStationPileCascaderOptions();
|
||||
setCascaderOptions(Array.isArray(response) ? response : []);
|
||||
} catch (error: any) {
|
||||
console.error('加载级联选择器数据失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
// 监听搜索参数变化
|
||||
useEffect(() => {
|
||||
loadData();
|
||||
@@ -448,7 +439,6 @@ const GunManagement: React.FC = () => {
|
||||
useEffect(() => {
|
||||
loadStationOptions();
|
||||
loadPileOptions();
|
||||
loadCascaderOptions();
|
||||
}, []);
|
||||
|
||||
// 处理表格变化
|
||||
@@ -506,23 +496,25 @@ const GunManagement: React.FC = () => {
|
||||
setModalVisible(true);
|
||||
form.setFieldsValue({
|
||||
...record,
|
||||
gunNo: record.gunNo,
|
||||
stationPile: [record.stationId, record.pileId] // 设置级联选择器的值
|
||||
gunNo: record.gunNo.toString()
|
||||
});
|
||||
};
|
||||
|
||||
// 处理查看
|
||||
const handleView = (record: Gun) => {
|
||||
showMessage.info('查看功能待实现');
|
||||
};
|
||||
|
||||
// 生成充电枪编码
|
||||
const handleGenerateGunCode = () => {
|
||||
const stationPile = form.getFieldValue('stationPile');
|
||||
const pileId = form.getFieldValue('pileId');
|
||||
const gunNo = form.getFieldValue('gunNo');
|
||||
|
||||
if (!stationPile || stationPile.length !== 2 || !gunNo) {
|
||||
showMessage.warning('请先选择充电站和充电桩,并填写枪号');
|
||||
if (!pileId || !gunNo) {
|
||||
showMessage.warning('请先选择充电桩和填写枪号');
|
||||
return;
|
||||
}
|
||||
|
||||
const pileId = stationPile[1];
|
||||
const selectedPile = pileOptions.find(p => p.id === pileId);
|
||||
if (selectedPile) {
|
||||
const code = generateGunCode(selectedPile.pileCode, gunNo);
|
||||
@@ -538,37 +530,23 @@ const GunManagement: React.FC = () => {
|
||||
|
||||
if (isEdit && currentRecord) {
|
||||
// 编辑充电枪
|
||||
// 从级联选择器值中获取充电站ID和充电桩ID
|
||||
const cascaderValue = values.stationPile;
|
||||
if (!cascaderValue || cascaderValue.length !== 2) {
|
||||
showMessage.error('请选择充电站和充电桩');
|
||||
return;
|
||||
}
|
||||
|
||||
const updateData: GunUpdateRequest = {
|
||||
gunName: values.gunName,
|
||||
gunNo: values.gunNo,
|
||||
gunCode: values.gunCode,
|
||||
stationId: cascaderValue[0], // 充电站ID
|
||||
pileId: cascaderValue[1] // 充电桩ID
|
||||
stationId: values.stationId,
|
||||
pileId: values.pileId
|
||||
};
|
||||
await gunService.updateGun(currentRecord.id, updateData);
|
||||
showMessage.success('充电枪更新成功');
|
||||
} else {
|
||||
// 新建充电枪
|
||||
// 从级联选择器值中获取充电站ID和充电桩ID
|
||||
const cascaderValue = values.stationPile;
|
||||
if (!cascaderValue || cascaderValue.length !== 2) {
|
||||
showMessage.error('请选择充电站和充电桩');
|
||||
return;
|
||||
}
|
||||
|
||||
const createData: GunCreateRequest = {
|
||||
gunName: values.gunName,
|
||||
gunNo: values.gunNo,
|
||||
gunCode: values.gunCode,
|
||||
stationId: cascaderValue[0], // 充电站ID
|
||||
pileId: cascaderValue[1] // 充电桩ID
|
||||
stationId: values.stationId,
|
||||
pileId: values.pileId
|
||||
};
|
||||
await gunService.createGun(createData);
|
||||
showMessage.success('充电枪创建成功');
|
||||
@@ -900,25 +878,52 @@ const GunManagement: React.FC = () => {
|
||||
<Input placeholder="请输入充电枪名称" />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
label="所属充电站/充电桩"
|
||||
name="stationPile"
|
||||
rules={[{ required: true, message: '请选择充电站和充电桩' }]}
|
||||
>
|
||||
<Cascader
|
||||
options={cascaderOptions}
|
||||
placeholder="请选择充电站和充电桩"
|
||||
showSearch={{
|
||||
filter: (inputValue, path) =>
|
||||
path.some(option =>
|
||||
option.label.toLowerCase().includes(inputValue.toLowerCase())
|
||||
)
|
||||
}}
|
||||
disabled={false}
|
||||
changeOnSelect={false}
|
||||
expandTrigger="hover"
|
||||
/>
|
||||
</Form.Item>
|
||||
<Row gutter={16}>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="所属充电站"
|
||||
name="stationId"
|
||||
rules={[{ required: true, message: '请选择充电站' }]}
|
||||
>
|
||||
<Select
|
||||
placeholder="请选择充电站"
|
||||
showSearch
|
||||
allowClear
|
||||
filterOption={(input, option) =>
|
||||
(option?.children as unknown as string)?.toLowerCase().includes(input.toLowerCase())
|
||||
}
|
||||
>
|
||||
{stationOptions.map(station => (
|
||||
<Select.Option key={station.id} value={station.id}>
|
||||
{station.label}
|
||||
</Select.Option>
|
||||
))}
|
||||
</Select>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="所属充电桩"
|
||||
name="pileId"
|
||||
rules={[{ required: true, message: '请选择充电桩' }]}
|
||||
>
|
||||
<Select
|
||||
placeholder="请选择充电桩"
|
||||
showSearch
|
||||
allowClear
|
||||
filterOption={(input, option) =>
|
||||
(option?.children as unknown as string)?.toLowerCase().includes(input.toLowerCase())
|
||||
}
|
||||
>
|
||||
{pileOptions.map(pile => (
|
||||
<Select.Option key={pile.id} value={pile.id}>
|
||||
{pile.label}
|
||||
</Select.Option>
|
||||
))}
|
||||
</Select>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
|
||||
<Row gutter={16}>
|
||||
<Col span={12}>
|
||||
@@ -938,13 +943,13 @@ const GunManagement: React.FC = () => {
|
||||
>
|
||||
<Input
|
||||
placeholder="请输入充电枪编码"
|
||||
disabled={false}
|
||||
disabled={isEdit}
|
||||
suffix={
|
||||
<Button
|
||||
type="link"
|
||||
size="small"
|
||||
onClick={handleGenerateGunCode}
|
||||
disabled={false}
|
||||
disabled={isEdit}
|
||||
style={{
|
||||
height: '24px',
|
||||
lineHeight: '24px',
|
||||
|
||||
Reference in New Issue
Block a user