package com.ld.igds.protocol.iot.n2.fzzy.analysis; import com.alibaba.fastjson.JSON; import com.ld.igds.constant.Constant; import com.ld.igds.io.constant.ProtocolEnum; import com.ld.igds.models.N2MacConf; import com.ld.igds.n2.service.HMacConfService; import com.ld.igds.protocol.iot.n2.fzzy.analysis.builder.ReMessageBuilder; import com.ld.igds.protocol.iot.n2.fzzy.analysis.message.Content; import com.ld.igds.protocol.iot.n2.fzzy.analysis.message.IoMessage; import com.ld.igds.protocol.iot.n2.fzzy.server.N2FzzyServerEngine; import com.ld.io.api.InvokeResult; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * 协议解析入口 * * @author vince */ @Slf4j @Component(AnalysisService.BEAN_ID) public class AnalysisService { public static final String BEAN_ID = "n2Fzzy.analysisService"; @Autowired private N2FzzyServerEngine serverEngine; @Autowired private HMacConfService macConfService; /** * @param sessionKey ip:port */ public void analysis(String sessionKey, IoMessage message) throws Exception { String[] attr = sessionKey.split(":"); String ip = attr[0]; Integer port = Integer.valueOf(attr[1]); N2MacConf n2MacConf = macConfService.getDataBySn(message.getDeviceId()); if (n2MacConf == null) { log.error("分机----->>>平台:返回信息没有获取到制氮机设备,无法继续解析----{}", sessionKey); return; } if ("0".equals(message.getFunctionId())) { log.info("制氮机心跳" + message.toString()); byte[] msg = (ReMessageBuilder.PREFIX + JSON.toJSONString(message) + ReMessageBuilder.SUFFIX).getBytes("UTF-8"); InvokeResult result = serverEngine.push(ip, port, msg); log.info(result.toString()); } if ("1".equals(message.getFunctionId())) { log.info("制氮机状态 " + message.toString()); Content content = JSON.parseObject(message.getContent(), Content.class); if (content != null) { n2MacConf.setFlow(Double.valueOf(content.getFlow())); n2MacConf.setPurity(Double.valueOf(content.getPurity())); n2MacConf.setPressure(Double.valueOf(content.getPressure())); n2MacConf.setRunStatus("1".equals(content.getIsRun()) ? Constant.YN_Y : Constant.YN_N); n2MacConf.setSn(message.getDeviceId()); n2MacConf.setIp(ip); n2MacConf.setPort(port); n2MacConf.setProtocol(ProtocolEnum.TCP_FZZY_N2_V3.getCode()); macConfService.saveData(n2MacConf); } } if ("2".equals(message.getFunctionId())) { log.info("制氮机开 暂不解析" + message.toString()); } if ("3".equals(message.getFunctionId())) { log.info("制氮机关 -暂不解析" + message.toString()); } //电表 if ("4".equals(message.getFunctionId())) { log.info("制氮机用电 ,暂不解析" + message.toString()); } //更新配置里面的端口号 if(!n2MacConf.getPort().equals(port)){ n2MacConf.setIp(ip); n2MacConf.setPort(port); macConfService.saveData(n2MacConf); } } }