package com.ld.igds.protocol.bhzn.verb.analysis; import com.ld.igds.common.CoreCommonService; import com.ld.igds.common.CoreSerService; import com.ld.igds.common.dto.THDto; import com.ld.igds.constant.BizType; import com.ld.igds.constant.Constant; import com.ld.igds.grain.GrainUtil; import com.ld.igds.grain.dto.GrainItemInfo; import com.ld.igds.io.notify.NotifyGrainInvoker; import com.ld.igds.models.DepotConf; import com.ld.igds.models.DeviceSer; import com.ld.igds.models.DicSysConf; import com.ld.igds.models.Grain; import com.ld.igds.order.ExeOrderService; import com.ld.igds.protocol.bhzn.verb.dto.IoMessage; import com.ld.igds.warn.WarnUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.*; /** * 协议解析 * * @author vince */ @Slf4j @Component(AnalysisService.BEAN_ID) public class AnalysisService { public static final String BEAN_ID = "bhznVerb.analysisService"; @Autowired private CoreSerService coreSerService; @Autowired private CoreCommonService commonService; @Autowired private NotifyGrainInvoker notifyGrainInvoker; @Autowired private GrainUtil grainUtil; @Autowired private WarnUtils warnUtils; @Autowired private ExeOrderService exeOrderService; @Autowired private AnalysisDevice analysisDevice; @Autowired private AnalysisGas analysisGas; @Autowired private AnalysisES analysisEs; /** * @param message */ public void analysis(IoMessage message) { try{ DeviceSer ser = coreSerService.getCacheSerBySn(message.getCompanyId(), message.getSn()); if (null == ser) { log.warn("控制柜------>>>平台:当前组织编码={},分机ID={},系统没有获取到分机信息,报文无法进行解析", message.getCompanyId(), message.getSn()); return; }else{ ser.setIp(message.getIp()); ser.setPort(message.getPort()); ser.setStatus(Constant.YN_Y); coreSerService.updateByData(ser); } //根据接口编号进行解析路由 switch (message.getCmd()) { case 247: analysisDevice.analysis(message, ser); break; case 209: analysisGas.analysis(message, ser); break; case 240: analysisEs.analysis(message, ser); break; default: log.error("控制柜命令码解析失败!"); break; } }catch (Exception e){ log.error("控制柜解析失败出错:" + e.getMessage(),e); } } }