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;
|
@Autowired
|
private AnalysisWeather analysisWeather;
|
/**
|
* @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;
|
case 160:
|
analysisWeather.analysis(message, ser);
|
break;
|
default:
|
log.error("控制柜命令码解析失败!");
|
break;
|
}
|
}catch (Exception e){
|
log.error("控制柜解析失败出错:" + e.getMessage(),e);
|
}
|
}
|
|
}
|