package com.fzzy.protocol.fzzy.server; import com.alibaba.fastjson.JSON; import com.fzzy.api.utils.SpringUtil; import com.fzzy.protocol.fzzy.analysis.AnalysisService; import com.fzzy.protocol.fzzy.data.ReMessage; import com.ld.io.api.IoMsgConsumer; import com.ld.io.api.IoSession; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; /** * 接收终端返回回来的信息。 * * @author Andy */ @Slf4j public class MsgConsumer implements IoMsgConsumer { private AnalysisService analysisService; private static final String CHARSET = "UTF-8"; @Override public void consume(IoSession session, byte[] bytes) { ReMessage reMessage = null; try { String message = new String(bytes, CHARSET); message = message.substring(ServerUtils.MSG_BEGIN.length()); reMessage = JSON.parseObject(message, ReMessage.class); if (StringUtils.isEmpty(reMessage.getSn()) || StringUtils.isEmpty(reMessage.getIedId()) || StringUtils.isEmpty(reMessage.getFunctionId())) { log.error("控制柜------>>>>平台:报文信息不完整,不做解析-IP={},port={},msg={}", session.getAddress(), session.getPort(), message); return; } reMessage.setIp(session.getAddress()); reMessage.setPort(session.getPort()); reMessage.setStrMsg(message); session.setCompanyId("0000"); log.debug("控制柜到---->>>>平台,暂未解析信息:IP={},PORT={},message={}", reMessage.getIp(), reMessage.getPort(), message); //调用解析接口开始解析 if (null == analysisService) { analysisService = (AnalysisService) SpringUtil.getBean(AnalysisService.BEAN_ID); } analysisService.analysis(reMessage); } catch (Exception e) { log.error("控制柜------>>>>平台:收到报文解析异常:{}", e.getMessage()); e.printStackTrace(); } } }