@ -10,6 +10,7 @@ import io.netty.handler.codec.DelimiterBasedFrameDecoder;
import lombok.extern.slf4j.Slf4j ;
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
import org.springframework.util.StringUtils ;
import java.nio.charset.Charset ;
@ -31,13 +32,15 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
@Override
protected Object decode ( ChannelHandlerContext ctx , ByteBuf in ) throws Exception {
in = ( ByteBuf ) super . decode ( ctx , in ) ;
if ( in = = null ) {
log . info ( "no data" ) ;
return null ;
}
String body = in . toString ( Charset . forName ( "UTF-8" ) ) ;
if ( body . startsWith ( "<" ) ) {
// 去掉首尾标识符
body = body . substring ( 1 , body . length ( ) ) ;
KsecInfo ksecInfo = JSONObject . parseObject ( body , KsecInfo . class ) ;
tcpLogger . info ( "info:{}" , body ) ;
log . info ( "receieve info:{}" , ksecInfo ) ;
KsecDataInfo dataInfo = ksecInfo . getData ( ) ;
PlcCmdInfo plcCmdInfo = null ;
String srmNumber = null ;
@ -50,14 +53,19 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
if ( "A" . equals ( ksecInfo . getType ( ) ) ) {
//心跳
log . debug ( "receieve heart " ) ;
} else if ( "B" . equals ( ksecInfo . getType ( ) ) ) {
tcpLogger . info ( "info:{}" , body ) ;
//任务
if ( "B1" . equals ( cmdName ) ) {
plcService . gyrateCamera ( plcCmdInfo , "C5" ) ;
plcService . orderStart ( plcCmdInfo ) ;
} else if ( "B2" . equals ( cmdName ) ) {
plcService . gyrateCamera ( plcCmdInfo , "C5" ) ;
plcService . orderStop ( plcCmdInfo ) ;
}
} else if ( "C" . equals ( ksecInfo . getType ( ) ) ) {
tcpLogger . info ( "info:{}" , body ) ;
//动作
String code = dataInfo . getCmdName ( ) ;
log . info ( "action code,{},orderInfo:{}" , code , plcCmdInfo . toString ( ) ) ;
@ -71,11 +79,16 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
log . info ( "other C code :{}" , code ) ;
}
} else if ( "D" . equals ( ksecInfo . getType ( ) ) ) {
tcpLogger . info ( "info:{}" , body ) ;
String code = dataInfo . getCmdName ( ) ;
if ( code . equals ( "D1" ) ) {
log . info ( "plcId:{},warn start" , plcCmdInfo . getPlcId ( ) ) ;
//根据告警code转动camera
plcService . warnAction ( plcCmdInfo , dataInfo . getWarnCode ( ) ) ;
String warnCode = dataInfo . getWarnCode ( ) ;
if ( ! StringUtils . isEmpty ( warnCode ) ) {
String warnCode0 = "D1-" + warnCode . split ( "," ) [ 0 ] ;
plcService . warnAction ( plcCmdInfo , warnCode0 ) ;
}
plcService . warnStart ( plcCmdInfo . getPlcId ( ) , dataInfo . getWarnCode ( ) ) ;
} else if ( code . equals ( "D2" ) ) {
log . info ( "plcId:{},warn stop" , plcCmdInfo . getPlcId ( ) ) ;
@ -84,6 +97,7 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
log . info ( "other D code :{}" , code ) ;
}
} else if ( "E" . equals ( ksecInfo . getType ( ) ) ) {
tcpLogger . info ( "info:{}" , body ) ;
//盘点
//找到该货位的最后一张照片与现在的照片比照
plcService . recordStock ( plcCmdInfo , dataInfo . getCode ( ) , 0 , 0 ) ;