| package com.zy.acs.gateway.utils; | 
|   | 
| import com.zy.acs.common.domain.AgvProtocol; | 
| import com.zy.acs.common.domain.protocol.IMessageBody; | 
| import com.zy.acs.gateway.constant.ProtocolPojoType; | 
| import com.zy.acs.gateway.constant.ProtocolType; | 
| import com.zy.acs.gateway.domain.AgvPackage; | 
| import org.slf4j.Logger; | 
| import org.slf4j.LoggerFactory; | 
|   | 
| /** | 
|  * Created by vincent on 2019-04-03 | 
|  */ | 
| public class ProtocolUtils { | 
|   | 
|     private static final Logger log = LoggerFactory.getLogger(ProtocolUtils.class); | 
|   | 
|     // 下行协议报文组装 | 
|     public static AgvPackage installDownProtocol(AgvProtocol protocol){ | 
|   | 
|   | 
|         ProtocolPojoType protocolPojo = ProtocolPojoType.query(protocol.getMessageBody().getClass()); | 
|   | 
|         assert protocolPojo !=   null; | 
|   | 
|         AgvPackage ackPackage = AgvPackage.valueOfEmpty(); | 
|         ackPackage.getHeader() | 
|                 .setStartSymbol((byte)0xEE) | 
|                 .setContentLength(0) | 
|                 .setUniqueNo(protocol.getAgvNo()) | 
|                 .setTimestamp(protocol.getTimestamp()) | 
|                 .setProtocolType(protocolPojo.protocolType) | 
|         ; | 
|   | 
|         ackPackage.getBody().setMessageBody(protocol.getMessageBody()); | 
|   | 
|         return ackPackage; | 
|   | 
|     } | 
|   | 
|     // 下行协议报文组装 | 
|     public static AgvPackage installDownProtocol(String uniqueNo, ProtocolType protocolType){ | 
|   | 
|   | 
|         AgvPackage ackPackage = AgvPackage.valueOfEmpty(); | 
|         ackPackage.getHeader() | 
|                 .setStartSymbol((byte)0xEE) | 
|                 .setContentLength(0) | 
|                 .setUniqueNo(uniqueNo) | 
|                 .setTimestamp((int)System.currentTimeMillis()/1000) | 
|                 .setProtocolType(protocolType) | 
|         ; | 
|   | 
|         ProtocolPojoType protocolPojo = ProtocolPojoType.query(protocolType); | 
|   | 
|   | 
|         assert protocolPojo != null; | 
|   | 
|   | 
|         IMessageBody iMessageBody = null; | 
|   | 
|         try { | 
|   | 
|             iMessageBody = protocolPojo.clazz.newInstance(); | 
|         } catch (ReflectiveOperationException reflectiveOperationException) { | 
|   | 
|   | 
|             log.error("MessageBodyHandler ReflectiveOperationException", reflectiveOperationException); | 
|   | 
|             log.error("java反射创建实例失败:{}", protocolPojo.clazz.getName()); | 
|   | 
|             return null; | 
|         } | 
|   | 
|   | 
|   | 
|         ackPackage.getBody().setMessageBody(iMessageBody); | 
|   | 
|   | 
|   | 
|         return ackPackage; | 
|     } | 
|   | 
|   | 
|   | 
| } |