|
|
@ -90,27 +90,27 @@ public class MessageHandler { |
|
|
*/ |
|
|
*/ |
|
|
public Message parseMessage(String content) { |
|
|
public Message parseMessage(String content) { |
|
|
// 验证内容长度
|
|
|
// 验证内容长度
|
|
|
if (content.length() < GatewayServerProperties.sequenceLength + GatewayServerProperties.modeLength) { |
|
|
if (content.length() < GatewayProperties.sequenceLength + GatewayProperties.modeLength) { |
|
|
throw new IllegalArgumentException("消息内容长度不足"); |
|
|
throw new IllegalArgumentException("消息内容长度不足"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 提取序列号
|
|
|
// 提取序列号
|
|
|
String sequence = content.substring(0, GatewayServerProperties.sequenceLength); |
|
|
String sequence = content.substring(0, GatewayProperties.sequenceLength); |
|
|
if (!sequence.matches("\\d{" + GatewayServerProperties.sequenceLength + "}")) { |
|
|
if (!sequence.matches("\\d{" + GatewayProperties.sequenceLength + "}")) { |
|
|
throw new IllegalArgumentException("序列号必须为" + GatewayServerProperties.sequenceLength+ "位数字"); |
|
|
throw new IllegalArgumentException("序列号必须为" + GatewayProperties.sequenceLength+ "位数字"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 提取模式标识
|
|
|
// 提取模式标识
|
|
|
String mode = content.substring(GatewayServerProperties.sequenceLength, |
|
|
String mode = content.substring(GatewayProperties.sequenceLength, |
|
|
GatewayServerProperties.sequenceLength + GatewayServerProperties.modeLength); |
|
|
GatewayProperties.sequenceLength + GatewayProperties.modeLength); |
|
|
// if (!isValidMode(mode)) {
|
|
|
// if (!isValidMode(mode)) {
|
|
|
// throw new IllegalArgumentException("无效的模式标识: " + mode);
|
|
|
// throw new IllegalArgumentException("无效的模式标识: " + mode);
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
|
|
|
// 提取数据部分(如果有)
|
|
|
// 提取数据部分(如果有)
|
|
|
String data = null; |
|
|
String data = null; |
|
|
if (content.length() > GatewayServerProperties.sequenceLength + GatewayServerProperties.modeLength) { |
|
|
if (content.length() > GatewayProperties.sequenceLength + GatewayProperties.modeLength) { |
|
|
data = content.substring(GatewayServerProperties.sequenceLength + GatewayServerProperties.modeLength); |
|
|
data = content.substring(GatewayProperties.sequenceLength + GatewayProperties.modeLength); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 创建并返回消息对象
|
|
|
// 创建并返回消息对象
|
|
|
@ -128,8 +128,8 @@ public class MessageHandler { |
|
|
* @return 是否有效 |
|
|
* @return 是否有效 |
|
|
*/ |
|
|
*/ |
|
|
private boolean isValidMode(String mode) { |
|
|
private boolean isValidMode(String mode) { |
|
|
return GatewayServerProperties.modeUnsent.equals(mode) || |
|
|
return GatewayProperties.modeUnsent.equals(mode) || |
|
|
GatewayServerProperties.modeSystemStart.equals(mode); |
|
|
GatewayProperties.modeSystemStart.equals(mode); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
@ -138,7 +138,7 @@ public class MessageHandler { |
|
|
* @return 错误响应消息 |
|
|
* @return 错误响应消息 |
|
|
*/ |
|
|
*/ |
|
|
public String createErrorMessage(String sequence) { |
|
|
public String createErrorMessage(String sequence) { |
|
|
return formatResponse(sequence, GatewayServerProperties.responseNg); |
|
|
return formatResponse(sequence, GatewayProperties.responseNg); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
@ -151,19 +151,19 @@ public class MessageHandler { |
|
|
StringBuilder sb = new StringBuilder(); |
|
|
StringBuilder sb = new StringBuilder(); |
|
|
|
|
|
|
|
|
// 添加STX
|
|
|
// 添加STX
|
|
|
sb.append(GatewayServerProperties.stx); |
|
|
sb.append(GatewayProperties.stx); |
|
|
|
|
|
|
|
|
// 添加序列号
|
|
|
// 添加序列号
|
|
|
sb.append(sequence); |
|
|
sb.append(sequence); |
|
|
|
|
|
|
|
|
//响应模式
|
|
|
//响应模式
|
|
|
sb.append(GatewayServerProperties.responseMode); |
|
|
sb.append(GatewayProperties.responseMode); |
|
|
|
|
|
|
|
|
// 添加响应代码
|
|
|
// 添加响应代码
|
|
|
sb.append(responseCode); |
|
|
sb.append(responseCode); |
|
|
|
|
|
|
|
|
// 添加ETX
|
|
|
// 添加ETX
|
|
|
sb.append(GatewayServerProperties.etx); |
|
|
sb.append(GatewayProperties.etx); |
|
|
|
|
|
|
|
|
return sb.toString(); |
|
|
return sb.toString(); |
|
|
} |
|
|
} |
|
|
@ -192,7 +192,7 @@ public class MessageHandler { |
|
|
public String handleSystemStartMessage(Message message, ChannelHandlerContext ctx) { |
|
|
public String handleSystemStartMessage(Message message, ChannelHandlerContext ctx) { |
|
|
logger.warn("客户端[{}]发送系统开始指示,序列号: {}", ctx.channel().remoteAddress(), message.getSequence()); |
|
|
logger.warn("客户端[{}]发送系统开始指示,序列号: {}", ctx.channel().remoteAddress(), message.getSequence()); |
|
|
// 创建成功响应
|
|
|
// 创建成功响应
|
|
|
return formatResponse(message.getSequence(), GatewayServerProperties.responseOk); |
|
|
return formatResponse(message.getSequence(), GatewayProperties.responseOk); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
@ -210,7 +210,7 @@ public class MessageHandler { |
|
|
// 例如:保存到数据库、转发到其他服务等
|
|
|
// 例如:保存到数据库、转发到其他服务等
|
|
|
|
|
|
|
|
|
// 假设数据处理成功
|
|
|
// 假设数据处理成功
|
|
|
return formatResponse(message.getSequence(), GatewayServerProperties.responseOk); |
|
|
return formatResponse(message.getSequence(), GatewayProperties.responseOk); |
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
logger.error("处理客户端[{}]正常数据时发生错误", ctx.channel().remoteAddress(), e); |
|
|
logger.error("处理客户端[{}]正常数据时发生错误", ctx.channel().remoteAddress(), e); |
|
|
return createErrorMessage(message.getSequence()); |
|
|
return createErrorMessage(message.getSequence()); |
|
|
@ -226,7 +226,7 @@ public class MessageHandler { |
|
|
// 处理未发送数据(通常需要特殊处理以避免重复处理)
|
|
|
// 处理未发送数据(通常需要特殊处理以避免重复处理)
|
|
|
// 例如:检查数据是否已经存在,如果不存在则处理,否则直接返回成功
|
|
|
// 例如:检查数据是否已经存在,如果不存在则处理,否则直接返回成功
|
|
|
|
|
|
|
|
|
return formatResponse(message.getSequence(), GatewayServerProperties.responseOk); |
|
|
return formatResponse(message.getSequence(), GatewayProperties.responseOk); |
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
logger.error("处理客户端[{}]未发送数据时发生错误", ctx.channel().remoteAddress(), e); |
|
|
logger.error("处理客户端[{}]未发送数据时发生错误", ctx.channel().remoteAddress(), e); |
|
|
return createErrorMessage(message.getSequence()); |
|
|
return createErrorMessage(message.getSequence()); |
|
|
@ -244,7 +244,7 @@ public class MessageHandler { |
|
|
// 处理未发送数据(通常需要特殊处理以避免重复处理)
|
|
|
// 处理未发送数据(通常需要特殊处理以避免重复处理)
|
|
|
// 例如:检查数据是否已经存在,如果不存在则处理,否则直接返回成功
|
|
|
// 例如:检查数据是否已经存在,如果不存在则处理,否则直接返回成功
|
|
|
|
|
|
|
|
|
return formatResponse(message.getSequence(), GatewayServerProperties.responseOk); |
|
|
return formatResponse(message.getSequence(), GatewayProperties.responseOk); |
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
logger.error("处理客户端[{}]未发送数据时发生错误", ctx.channel().remoteAddress(), e); |
|
|
logger.error("处理客户端[{}]未发送数据时发生错误", ctx.channel().remoteAddress(), e); |
|
|
return createErrorMessage(message.getSequence()); |
|
|
return createErrorMessage(message.getSequence()); |
|
|
|