同步获取响应数据

This commit is contained in:
Guoqs
2024-08-01 18:03:21 +08:00
parent eb40bd5798
commit 64028f04f3
20 changed files with 99 additions and 63 deletions

View File

@@ -1,4 +1,4 @@
package com.jsowell.netty.rpc;
package com.jsowell.common.protocol;
import lombok.Data;

View File

@@ -1,4 +1,8 @@
package com.jsowell.netty.rpc;
package com.jsowell.common.protocol;
import com.jsowell.common.protocol.Message;
import com.jsowell.common.protocol.RpcRequest;
import com.jsowell.common.protocol.RpcResponse;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

View File

@@ -1,5 +1,6 @@
package com.jsowell.netty.rpc;
package com.jsowell.common.protocol;
import com.jsowell.common.protocol.Message;
import lombok.Data;
import lombok.ToString;
@@ -7,7 +8,7 @@ import java.util.UUID;
@Data
@ToString
public class RpcRequest extends Message{
public class RpcRequest extends Message {
private String id;

View File

@@ -1,11 +1,12 @@
package com.jsowell.netty.rpc;
package com.jsowell.common.protocol;
import com.jsowell.common.protocol.Message;
import lombok.Data;
import lombok.ToString;
@Data
@ToString
public class RpcResponse extends Message{
public class RpcResponse extends Message {
private String id;

View File

@@ -1,4 +1,4 @@
package com.jsowell.pile.rpc;
package com.jsowell.common.protocol;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;

View File

@@ -0,0 +1,17 @@
package com.jsowell.common.util;
import com.jsowell.common.protocol.SyncPromise;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@Slf4j
public class RpcUtil {
private final static Map<String, SyncPromise> syncPromiseMap = new ConcurrentHashMap<>();
public static Map<String, SyncPromise> getSyncPromiseMap() {
return syncPromiseMap;
}
}

View File

@@ -1,14 +1,13 @@
package com.jsowell.netty.server.yunkuaichong;
import com.alibaba.fastjson2.JSON;
import com.google.common.collect.Lists;
import com.jsowell.common.core.domain.ykc.YKCFrameTypeCode;
import com.jsowell.common.enums.ykc.PileChannelEntity;
import com.jsowell.common.util.BytesUtil;
import com.jsowell.common.util.StringUtils;
import com.jsowell.common.util.YKCUtils;
import com.jsowell.pile.rpc.RpcUtil;
import com.jsowell.pile.rpc.SyncPromise;
import com.jsowell.common.util.RpcUtil;
import com.jsowell.common.protocol.SyncPromise;
import com.jsowell.netty.service.yunkuaichong.YKCBusinessService;
import io.netty.buffer.ByteBuf;
import io.netty.channel.*;

View File

@@ -1,4 +1,4 @@
package com.jsowell.netty.rpc;
package com.jsowell.pile.rpc;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;

View File

@@ -1,5 +1,7 @@
package com.jsowell.netty.rpc;
package com.jsowell.pile.rpc;
import com.jsowell.common.protocol.Message;
import com.jsowell.common.protocol.MessageConstant;
import com.jsowell.common.util.bean.SerializationUtil;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;

View File

@@ -1,5 +1,6 @@
package com.jsowell.netty.rpc;
package com.jsowell.pile.rpc;
import com.jsowell.common.protocol.Message;
import com.jsowell.common.util.bean.SerializationUtil;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;

View File

@@ -1,4 +1,4 @@
package com.jsowell.netty.rpc;
package com.jsowell.pile.rpc;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.*;

View File

@@ -1,5 +1,7 @@
package com.jsowell.netty.rpc;
package com.jsowell.pile.rpc;
import com.jsowell.common.protocol.RpcRequest;
import com.jsowell.common.protocol.RpcResponse;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.DefaultEventLoopGroup;
import io.netty.channel.EventLoopGroup;

View File

@@ -1,7 +1,8 @@
package com.jsowell.netty.rpc;
package com.jsowell.pile.rpc;
import com.jsowell.pile.rpc.RpcUtil;
import com.jsowell.pile.rpc.SyncPromise;
import com.jsowell.common.protocol.RpcResponse;
import com.jsowell.common.protocol.SyncPromise;
import com.jsowell.common.util.RpcUtil;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;

View File

@@ -1,4 +1,4 @@
package com.jsowell.netty.rpc;
package com.jsowell.pile.rpc;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.*;

View File

@@ -1,36 +0,0 @@
package com.jsowell.pile.rpc;
import com.google.common.collect.Lists;
import com.google.common.primitives.Bytes;
import com.jsowell.common.core.domain.ykc.YKCFrameTypeCode;
import com.jsowell.common.enums.ykc.PileChannelEntity;
import com.jsowell.common.util.BytesUtil;
import com.jsowell.common.util.CRC16Util;
import com.jsowell.common.util.YKCUtils;
import com.jsowell.pile.rpc.SyncPromise;
import com.jsowell.pile.service.PileMsgRecordService;
import io.netty.buffer.ByteBuf;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandlerContext;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@Slf4j
public class RpcUtil {
private final static Map<String, SyncPromise> syncPromiseMap = new ConcurrentHashMap<>();
public static Map<String, SyncPromise> getSyncPromiseMap() {
return syncPromiseMap;
}
}

View File

@@ -1,4 +1,4 @@
package com.jsowell.netty.rpc;
package com.jsowell.pile.rpc;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;

View File

@@ -1,8 +1,6 @@
package com.jsowell.netty.rpc;
package com.jsowell.pile.rpc;
import com.jsowell.pile.rpc.RpcUtil;
import java.util.concurrent.TimeUnit;
import com.jsowell.common.protocol.RpcRequest;
public class TestRpcClient {
public static void main(String[] args) throws Exception{

View File

@@ -1,4 +1,4 @@
package com.jsowell.netty.rpc;
package com.jsowell.pile.rpc;
public class TestRpcServer {
public static void main(String[] args) {

View File

@@ -2,9 +2,12 @@ package com.jsowell.pile.service;
import com.google.common.collect.Lists;
import com.jsowell.common.constant.CacheConstants;
import com.jsowell.common.core.domain.ykc.YKCDataProtocol;
import com.jsowell.common.core.redis.RedisCache;
import com.jsowell.common.enums.ykc.ChargingFailedReasonEnum;
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.BytesUtil;
import com.jsowell.common.util.StringUtils;
import com.jsowell.pile.domain.PileBillingTemplate;
import com.jsowell.pile.domain.PileFirmwareInfo;
@@ -296,6 +299,49 @@ public class PileRemoteService {
// 解析结果
if (Objects.isNull(bytes)) {
result = "0";
} else {
YKCDataProtocol ykcDataProtocol = new YKCDataProtocol(bytes);
byte[] msgBody = ykcDataProtocol.getMsgBody();
int startIndex = 0;
int length = 16;
// 交易流水号
byte[] transactionCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length);
String transactionCode = BytesUtil.bcd2Str(transactionCodeByteArr);
// 桩编码
startIndex += length;
length = 7;
byte[] pileSnByteArr = BytesUtil.copyBytes(msgBody, startIndex, length);
String pileSn = BytesUtil.bcd2Str(pileSnByteArr);
// 枪口号
startIndex += length;
length = 1;
byte[] connectorCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length);
String connectorCode = BytesUtil.bcd2Str(connectorCodeByteArr);
// 启动结果 0x00失败 0x01成功
startIndex += length;
length = 1;
byte[] resultCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length);
String resultCode = BytesUtil.bcd2Str(resultCodeByteArr);
if (StringUtils.equals(resultCode, "00")) {
result = "0";
} else {
result = "1";
}
// 失败原因
startIndex += length;
length = 1;
byte[] failedReasonByteArr = BytesUtil.copyBytes(msgBody, startIndex, length);
String failedReason = BytesUtil.bcd2Str(failedReasonByteArr);
String failedReasonMsg = ChargingFailedReasonEnum.getMsgByCode(Integer.parseInt(failedReason, 16));
log.info("0x59预约充电响应sync, 交易流水号:{}, 桩SN:{}, 枪口号:{}, 结果:{}, 失败原因:{}",
transactionCode, pileSn, connectorCode, resultCode, failedReasonMsg);
}
return result;

View File

@@ -10,8 +10,8 @@ import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.*;
import com.jsowell.common.util.Cp56Time2a.Cp56Time2aUtil;
import com.jsowell.pile.domain.ykcCommond.*;
import com.jsowell.pile.rpc.RpcUtil;
import com.jsowell.pile.rpc.SyncPromise;
import com.jsowell.common.util.RpcUtil;
import com.jsowell.common.protocol.SyncPromise;
import com.jsowell.pile.service.*;
import com.jsowell.pile.vo.web.BillingTemplateVO;
import com.jsowell.pile.vo.web.PileModelInfoVO;