package com.fzzy.protocol.fzzy.analysis; import com.fzzy.api.Constant; import com.fzzy.api.data.ApiCommonDevice; import com.fzzy.protocol.fzzy.data.ReMessage; import com.fzzy.protocol.fzzy.server.ServerUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import javax.annotation.Resource; /** * 协议解析总入口 */ @Slf4j @Component(AnalysisService.BEAN_ID) public class AnalysisService { public static final String BEAN_ID = "fzzy.analysisService"; @Resource private AnalysisSystem analysisSystem; @Resource private AnalysisGrain analysisGrain; /** * 协议解析入口 * * @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.error("控制柜------>>>平台:当前组织编码={},分机ID={},报文信息-={},响应吗返回不正确,无法进行解析," + checkMsg, message.getCompanyId(), message.getIedId(), message.getStrMsg()); return; } //执行的分机信息 ApiCommonDevice commonDevice = Constant.getCommonDeviceCache(message.getSn()); if (null == commonDevice) { log.warn("控制柜------>>>平台:当前组织编码={},分机ID={},系统没有获取到分机信息,报文无法进行解析", message.getCompanyId(), message.getIedId()); return; } //根据接口编号进行解析路由 switch (message.getFunctionId()) { case ServerUtils.FUNCTION_1003: analysisSystem.analysis1003(message, commonDevice); break; case ServerUtils.FUNCTION_1004: analysisSystem.analysis1004(message, commonDevice); break; case ServerUtils.FUNCTION_1005: analysisSystem.analysis1005(message, commonDevice); break; case ServerUtils.FUNCTION_1006: analysisSystem.analysis1006(message, commonDevice); break; case ServerUtils.FUNCTION_1007: analysisSystem.analysis1007(message, commonDevice); break; case ServerUtils.FUNCTION_1008: analysisSystem.analysis1008(message, commonDevice); break; case ServerUtils.FUNCTION_1009: analysisSystem.analysis1009(message, commonDevice); break; case ServerUtils.FUNCTION_1010: analysisSystem.analysis1010(message, commonDevice); break; case ServerUtils.FUNCTION_2101: analysisGrain.analysis2101(message, commonDevice); break; case ServerUtils.FUNCTION_2102: analysisGrain.analysis2102(message, commonDevice); 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; } }