package com.ld.igds.protocol.fzzy.analysis;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import com.ld.igds.common.CoreSerService;
|
import com.ld.igds.constant.BizType;
|
import com.ld.igds.io.notify.NotifyWebInvoker;
|
import com.ld.igds.io.constant.OrderRespEnum;
|
import com.ld.igds.models.DeviceSer;
|
import com.ld.igds.protocol.fzzy.ServerUtils;
|
import com.ld.igds.protocol.fzzy.dto.ReMessage;
|
|
|
/**
|
* 协议解析总入口
|
*/
|
@Slf4j
|
@Component(AnalysisService.BEAN_ID)
|
public class AnalysisService {
|
|
public static final String BEAN_ID = "fzzy.analysisService";
|
|
@Autowired
|
private CoreSerService coreSerService;
|
@Autowired
|
private AnalysisGrain analysisGrain;
|
@Autowired
|
private AnalysisDevice analysisDevice;
|
@Autowired
|
private AnalysisGas analysisGas;
|
@Autowired
|
private AnalysisEs analysisEs;
|
@Autowired
|
private AnalysisSystem analysisSystem;
|
@Autowired
|
private AnalysisPest analysisPest;
|
@Autowired
|
private AnalysisN2 analysisN2;
|
@Autowired
|
private AnalysisTemp analysisTemp;
|
@Autowired
|
private AnalysisIot analysisIot;
|
@Autowired
|
private NotifyWebInvoker notifyWebInvoker;
|
|
/**
|
* 协议解析入口
|
*
|
* @param message 返回信息
|
*/
|
public void analysis(ReMessage message) {
|
try {
|
if (null == message) return;
|
|
//登录解析
|
if (ServerUtils.FUNCTION_1001.equals(message.getFunctionId())) {
|
analysisSystem.analysis1001(message);
|
return;
|
}
|
|
String checkMsg = checkMsg(message);
|
if (null != checkMsg) {
|
log.warn("控制柜------>>>平台:当前组织编码={},分机ID={},报文信息-={},响应吗返回不正确,无法进行解析," + checkMsg, message.getCompanyId(), message.getIedId(), message.getStrMsg());
|
notifyWebInvoker.notifyWeb(message.getCompanyId(), OrderRespEnum.MSG_ERROR, BizType.SYS, checkMsg);
|
return;
|
}
|
|
DeviceSer ser = coreSerService.getCacheSer(message.getCompanyId(), message.getIedId());
|
if (null == ser) {
|
log.warn("控制柜------>>>平台:当前组织编码={},分机ID={},系统没有获取到分机信息,报文无法进行解析", message.getCompanyId(), message.getIedId());
|
return;
|
}
|
|
|
//根据接口编号进行解析路由
|
switch (message.getFunctionId()) {
|
case ServerUtils.FUNCTION_1003:
|
analysisSystem.analysis1003(message, ser);
|
break;
|
case ServerUtils.FUNCTION_1004:
|
analysisSystem.analysis1004(message, ser);
|
break;
|
case ServerUtils.FUNCTION_1005:
|
analysisSystem.analysis1005(message, ser);
|
break;
|
case ServerUtils.FUNCTION_1006:
|
analysisSystem.analysis1006(message, ser);
|
break;
|
case ServerUtils.FUNCTION_1007:
|
analysisSystem.analysis1007(message, ser);
|
break;
|
case ServerUtils.FUNCTION_1008:
|
analysisSystem.analysis1008(message, ser);
|
break;
|
case ServerUtils.FUNCTION_1009:
|
analysisSystem.analysis1009(message, ser);
|
break;
|
case ServerUtils.FUNCTION_1010:
|
analysisSystem.analysis1010(message, ser);
|
break;
|
|
case ServerUtils.FUNCTION_2101:
|
analysisGrain.analysis2101(message, ser);
|
break;
|
case ServerUtils.FUNCTION_2102:
|
analysisGrain.analysis2102(message, ser);
|
break;
|
|
case ServerUtils.FUNCTION_2201:
|
analysisPest.analysis2201(message, ser);
|
break;
|
case ServerUtils.FUNCTION_2202:
|
analysisPest.analysis2202(message, ser);
|
break;
|
case ServerUtils.FUNCTION_2203:
|
analysisPest.analysis2203(message, ser);
|
break;
|
case ServerUtils.FUNCTION_2204:
|
analysisPest.analysis2204(message, ser);
|
break;
|
|
case ServerUtils.FUNCTION_2301:
|
analysisGas.analysis2301(message, ser);
|
break;
|
case ServerUtils.FUNCTION_2302:
|
analysisGas.analysis2302(message, ser);
|
break;
|
|
case ServerUtils.FUNCTION_2303:
|
analysisGas.analysis2303(message, ser);
|
break;
|
case ServerUtils.FUNCTION_2304:
|
analysisGas.analysis2304(message, ser);
|
break;
|
|
case ServerUtils.FUNCTION_3101:
|
analysisDevice.analysis3101(message, ser);
|
break;
|
case ServerUtils.FUNCTION_3102:
|
analysisDevice.analysis3102(message, ser);
|
break;
|
case ServerUtils.FUNCTION_3103:
|
analysisDevice.analysis3103(message, ser);
|
break;
|
|
case ServerUtils.FUNCTION_3201:
|
analysisDevice.analysis3201(message, ser);
|
break;
|
|
case ServerUtils.FUNCTION_3301:
|
analysisN2.analysis3301(message, ser);
|
break;
|
case ServerUtils.FUNCTION_3302:
|
analysisN2.analysis3302(message, ser);
|
break;
|
case ServerUtils.FUNCTION_3303:
|
analysisN2.analysis3303(message, ser);
|
break;
|
case ServerUtils.FUNCTION_3304:
|
analysisN2.analysis3304(message, ser);
|
break;
|
|
case ServerUtils.FUNCTION_4001:
|
analysisEs.analysis4001(message, ser);
|
break;
|
|
case ServerUtils.FUNCTION_5001:
|
analysisTemp.analysis5001(message, ser);
|
break;
|
|
case ServerUtils.FUNCTION_5002:
|
analysisTemp.analysis5002(message, ser);
|
break;
|
|
case ServerUtils.FUNCTION_6001:
|
analysisIot.analysis6001(message, ser);
|
break;
|
|
default:
|
break;
|
}
|
} catch (Exception e) {
|
log.error("控制柜----->>>>平台:解析返回报文出现异常:" + e);
|
e.printStackTrace();
|
}
|
}
|
|
public String checkMsg(ReMessage message) {
|
if (StringUtils.isEmpty(message.getRespCode())) return null;
|
|
if (ServerUtils.RESP_0000.equals(message.getRespCode())) return null;
|
|
if (ServerUtils.RESP_1000.equals(message.getRespCode())) return "控制柜编号错误";
|
if (ServerUtils.RESP_1001.equals(message.getRespCode())) return "终端设备不在线";
|
if (ServerUtils.RESP_1010.equals(message.getRespCode())) return "控制柜授权到期";
|
if (ServerUtils.RESP_1011.equals(message.getRespCode())) return "授权码无效";
|
if (ServerUtils.RESP_1012.equals(message.getRespCode())) return "授权码已被使用";
|
if (ServerUtils.RESP_1013.equals(message.getRespCode())) return "授权码已过期";
|
if (ServerUtils.RESP_2000.equals(message.getRespCode())) return "签名验证失败";
|
if (ServerUtils.RESP_3000.equals(message.getRespCode())) return "通风模式不支持";
|
if (ServerUtils.RESP_4000.equals(message.getRespCode())) return "气调模式不支持";
|
if (ServerUtils.RESP_5000.equals(message.getRespCode())) return "控制柜当前为手动模式,拒绝远程操作";
|
if (ServerUtils.RESP_6000.equals(message.getRespCode())) return "采集执行失败";
|
if (ServerUtils.RESP_6001.equals(message.getRespCode())) return "粮情采集执行中";
|
if (ServerUtils.RESP_6002.equals(message.getRespCode())) return "气体采集执行中";
|
if (ServerUtils.RESP_6003.equals(message.getRespCode())) return "虫害采集执行中";
|
if (ServerUtils.RESP_9999.equals(message.getRespCode())) return "未知错误";
|
return null;
|
}
|
}
|