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);
|
}
|
}
|
}
|