From a45334f310fd05bd1336acae562608fc45849a7b Mon Sep 17 00:00:00 2001 From: qiushui <=> Date: Thu, 13 Oct 2022 09:52:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E5=8D=8F=E8=AE=AE?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/ClientTestController.java | 4 +- .../web/service/client/ECTransmission.java | 8 +-- .../service/client/NettyConnectHandler.java | 64 +++++++++++++++++++ .../web/service/client/TMTransmission.java | 6 +- .../web/service/putian/PTDecoder.java | 4 +- 5 files changed, 75 insertions(+), 11 deletions(-) create mode 100644 web/src/main/java/com/zhehekeji/web/service/client/NettyConnectHandler.java diff --git a/web/src/main/java/com/zhehekeji/web/controller/ClientTestController.java b/web/src/main/java/com/zhehekeji/web/controller/ClientTestController.java index c1d218d..1becaec 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/ClientTestController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/ClientTestController.java @@ -38,7 +38,7 @@ public class ClientTestController { public Result startEmptyCheck(@ApiParam("巷道标识")@RequestParam String SRMNumber,@ApiParam("盘点批次ID") @RequestParam String taskId, @ApiParam("检测第几行")@RequestParam Integer row, @ApiParam("开始列")@RequestParam Integer startColumn,@ApiParam("结束列")@RequestParam Integer endColumn){ emptyCheckService.emptyCheckStart(SRMNumber,taskId,row,startColumn,endColumn); - String msg = ECTransmission.toEmptyCheckStartString(SRMNumber); + String msg = ECTransmission.toEmptyCheckStartString(SRMNumber,taskId,row,startColumn,endColumn); ClientChanel.write(msg,SRMNumber); return Result.success(msg); } @@ -47,7 +47,7 @@ public class ClientTestController { @GetMapping("/emptyCheck/stop") public Result stopEmptyCheck(@ApiParam("巷道标识")@RequestParam String SRMNumber,@ApiParam("盘点批次ID") @RequestParam String taskId, @ApiParam("检测第几行")@RequestParam Integer row, @ApiParam("开始列")@RequestParam Integer startColumn,@ApiParam("结束列")@RequestParam Integer endColumn){ - String msg = ECTransmission.toEmptyCheckEndString(SRMNumber); + String msg = ECTransmission.toEmptyCheckEndString(SRMNumber,taskId,row,startColumn,endColumn); ClientChanel.write(msg,SRMNumber); //获取空货位的结果信息 // 返回给普天 diff --git a/web/src/main/java/com/zhehekeji/web/service/client/ECTransmission.java b/web/src/main/java/com/zhehekeji/web/service/client/ECTransmission.java index 7ee449d..b4bbe99 100644 --- a/web/src/main/java/com/zhehekeji/web/service/client/ECTransmission.java +++ b/web/src/main/java/com/zhehekeji/web/service/client/ECTransmission.java @@ -67,9 +67,9 @@ public class ECTransmission { * 空托盘检测开始信息 * @return */ - public static String toEmptyCheckStartString(String SRMNumber){ + public static String toEmptyCheckStartString(String SRMNumber,String taskId,Integer row,Integer startColumn,Integer endColumn){ StringBuffer sb = new StringBuffer(HEADER); - sb.append(Split).append(SRMNumber).append(Split).append("START"); + sb.append(Split).append(SRMNumber).append(Split).append(taskId).append(Split).append(row).append(Split).append(startColumn).append(Split).append(endColumn).append("START"); return sb.toString(); } @@ -77,9 +77,9 @@ public class ECTransmission { * 空托盘检测 结束信号 * @return */ - public static String toEmptyCheckEndString(String SRMNumber){ + public static String toEmptyCheckEndString(String SRMNumber,String taskId,Integer row,Integer startColumn,Integer endColumn){ StringBuffer sb = new StringBuffer(HEADER); - sb.append(Split).append(SRMNumber).append(Split).append("END"); + sb.append(Split).append(SRMNumber).append(Split).append(taskId).append(Split).append(row).append(Split).append(startColumn).append(Split).append(endColumn).append("END"); return sb.toString(); } } diff --git a/web/src/main/java/com/zhehekeji/web/service/client/NettyConnectHandler.java b/web/src/main/java/com/zhehekeji/web/service/client/NettyConnectHandler.java new file mode 100644 index 0000000..4c6ac8f --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/service/client/NettyConnectHandler.java @@ -0,0 +1,64 @@ +package com.zhehekeji.web.service.client; + +import com.zhehekeji.web.service.StreetConn; +import com.zhehekeji.web.service.ksec.KsecInfo; +import com.zhehekeji.web.service.ksec.KsecNettyClient; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelInboundHandlerAdapter; +import io.netty.handler.timeout.IdleStateEvent; +import lombok.extern.slf4j.Slf4j; + +/** + * 与PLC心跳 处理 + * + * @author Administrator + * + */ +@Slf4j +public class NettyConnectHandler extends ChannelInboundHandlerAdapter { + /** 客户端请求的心跳命令 */ + private KsecInfo heart; + + + private KsecNettyClient nettyClient; + + public NettyConnectHandler(KsecInfo ksecInfo, KsecNettyClient nettyClient){ + + this.heart = ksecInfo; + this.nettyClient = nettyClient; + } + + /** + * 建立连接时 + */ + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + log.info("upPc connected "); + StreetConn.conn(1); + ctx.fireChannelActive(); + } + + /** + * 关闭连接时 + */ + @Override + public void channelInactive(ChannelHandlerContext ctx) throws Exception { + log.info("upPc closed"); + } + + /** + * 心跳请求处理,每4秒发送一次心跳请求; + * + */ + @Override + public void userEventTriggered(ChannelHandlerContext ctx, Object obj) throws Exception { + if (obj instanceof IdleStateEvent) { + log.debug("upPc send heart"); + ctx.channel().writeAndFlush(heart); + IdleStateEvent event = (IdleStateEvent) obj; + } + + } + + +} diff --git a/web/src/main/java/com/zhehekeji/web/service/client/TMTransmission.java b/web/src/main/java/com/zhehekeji/web/service/client/TMTransmission.java index 0bfaabe..67cc752 100644 --- a/web/src/main/java/com/zhehekeji/web/service/client/TMTransmission.java +++ b/web/src/main/java/com/zhehekeji/web/service/client/TMTransmission.java @@ -58,7 +58,7 @@ public class TMTransmission { StringBuffer sb = new StringBuffer(header); sb.append(Split).append(SRMNumber).append(Split).append(taskNo).append(Split) .append(goodsLocation).append(Split).append(trayNo).append(Split).append(code) - .append(Split).append(count).append(Split).append(count).append(Split).append(visualTest); + .append(Split).append(count).append(Split).append(visualTest); return sb.toString(); } @@ -91,12 +91,12 @@ public class TMTransmission { } } - }else { + }else if(strings.length == 3){ //是盘点数据采集完成的信号 collectOver = true; SRMNumber = strings[1]; taskNo = strings[2]; - goodsLocation = strings[3]; + //goodsLocation = strings[3]; } } diff --git a/web/src/main/java/com/zhehekeji/web/service/putian/PTDecoder.java b/web/src/main/java/com/zhehekeji/web/service/putian/PTDecoder.java index 5f4e043..f3bcead 100644 --- a/web/src/main/java/com/zhehekeji/web/service/putian/PTDecoder.java +++ b/web/src/main/java/com/zhehekeji/web/service/putian/PTDecoder.java @@ -48,13 +48,13 @@ public class PTDecoder extends LineBasedFrameDecoder { PTEmptyCheckContent checkContent = PTEmptyCheckContent.EmptyCheck(ptData.getContent()); emptyCheckService.emptyCheckStart(checkContent.getSRMNUmber(), checkContent.getTaskNo(), checkContent.getRow(),checkContent.getStartColumn(),checkContent.getEndColumn()); - String startEmptyCheckStr = ECTransmission.toEmptyCheckStartString(checkContent.getSRMNUmber()); + String startEmptyCheckStr = ECTransmission.toEmptyCheckStartString(checkContent.getSRMNUmber(),checkContent.getTaskNo(),checkContent.getRow(),checkContent.getStartColumn(),checkContent.getEndColumn()); //通知客户端开始检测 ClientChanel.write(startEmptyCheckStr,checkContent.getSRMNUmber()); }else if(ptData.getType().equals(PTData.EMPTY_CHECK_02)){ log.info("空货位检测结束"); PTEmptyCheckContent checkContent = PTEmptyCheckContent.EmptyCheck(ptData.getContent()); - String endEmptyCheckStr = ECTransmission.toEmptyCheckEndString(checkContent.getSRMNUmber()); + String endEmptyCheckStr = ECTransmission.toEmptyCheckEndString(checkContent.getSRMNUmber(),checkContent.getTaskNo(),checkContent.getRow(),checkContent.getStartColumn(),checkContent.getEndColumn()); //通知客户端结束检测 ClientChanel.write(endEmptyCheckStr,checkContent.getSRMNUmber()); //等待3s把空货位盘点的结果发给普天