package com.fzzy.protocol.xsyg.service;
|
|
import com.fzzy.api.data.GatewayDeviceProtocol;
|
import com.fzzy.gateway.api.GatewaySyncGranService;
|
import com.fzzy.gateway.data.BaseReqData;
|
import com.fzzy.gateway.data.BaseResp;
|
import com.fzzy.gateway.entity.GatewayDevice;
|
import com.fzzy.protocol.ProtocolUtils;
|
import com.fzzy.protocol.xsyg.client.ClientEngine;
|
import com.ld.io.api.InvokeResult;
|
import io.netty.channel.Channel;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Component;
|
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* 粮情采集入口
|
*/
|
@Slf4j
|
@Component
|
public class XsygGatewayGrainService implements GatewaySyncGranService {
|
|
|
@Override
|
public String getGrainProtocol() {
|
return GatewayDeviceProtocol.GRAIN_XSYK_2023.getCode();
|
}
|
|
|
/**
|
* 仓库命令
|
*/
|
public static Map<String, String> depotGrainCmdMap = new HashMap<>();
|
|
|
static {
|
depotGrainCmdMap.put("KEY_1", "FC6401010009011A10BDDB");
|
depotGrainCmdMap.put("KEY_2", "FC6402020009011A10BDDB");
|
depotGrainCmdMap.put("KEY_3", "FC6403030009011A10BDDB");
|
depotGrainCmdMap.put("KEY_4", "FC6404040009011A10BDDB");
|
depotGrainCmdMap.put("KEY_5", "FC6405050009011A10BDDB");
|
depotGrainCmdMap.put("KEY_6", "FC6406060009011A10BDDB");
|
depotGrainCmdMap.put("KEY_7", "FC6407070009011A10BDDB");
|
depotGrainCmdMap.put("KEY_8", "FC6408080009011A10BDDB");
|
depotGrainCmdMap.put("KEY_9", "FC6409090009011A10BDDB");
|
depotGrainCmdMap.put("KEY_10", "FC640A0A0009011A10BDDB");
|
depotGrainCmdMap.put("KEY_11", "FC640B0B0009011A10BDDB");
|
depotGrainCmdMap.put("KEY_12", "FC640C0C0009011A10BDDB");
|
depotGrainCmdMap.put("KEY_13", "FC640D0D0009011A10BDDB");
|
depotGrainCmdMap.put("KEY_14", "FC640E0E0009011A10BDDB");
|
depotGrainCmdMap.put("KEY_15", "FC640F0F0009011A10BDDB");
|
depotGrainCmdMap.put("KEY_16", "FC6410100009011A10BDDB");
|
depotGrainCmdMap.put("KEY_17", "FC6411110009011A10BDDB");
|
depotGrainCmdMap.put("KEY_18", "FC6412120009011A10BDDB");
|
depotGrainCmdMap.put("KEY_19", "FC6413130009011A10BDDB");
|
depotGrainCmdMap.put("KEY_20", "FC6414140009011A10BDDB");
|
depotGrainCmdMap.put("KEY_21", "FC6415150009011A10BDDB");
|
depotGrainCmdMap.put("KEY_22", "FC6416160009011A10BDDB");
|
depotGrainCmdMap.put("KEY_23", "FC6417170009011A10BDDB");
|
depotGrainCmdMap.put("KEY_24", "FC6418180009011A10BDDB");
|
depotGrainCmdMap.put("KEY_25", "FC6419190009011A10BDDB");
|
depotGrainCmdMap.put("KEY_26", "FC641A1A0009011A10BDDB");
|
}
|
|
/**
|
* FC 64 01 01 00 09 01 1A 10 BD DB
|
* FC 64 02 02 00 09 01 1A 10 BD DB
|
* FC 64 03 03 00 09 01 1A 10 BD DB
|
* FC 64 04 04 00 09 01 1A 10 BD DB
|
* FC 64 05 05 00 09 01 1A 10 BD DB
|
* FC 64 06 06 00 09 01 1A 10 BD DB
|
* FC 64 07 07 00 09 01 1A 10 BD DB
|
* FC 64 08 08 00 09 01 1A 10 BD DB
|
* FC 64 09 09 00 09 01 1A 10 BD DB
|
* FC 64 0A 0A 00 09 01 1A 10 BD DB
|
* FC 64 0B 0B 00 09 01 1A 10 BD DB
|
* FC 64 0C 0C 00 09 01 1A 10 BD DB
|
* FC 64 0D 0D 00 09 01 1A 10 BD DB
|
* FC 64 0E 0E 00 09 01 1A 10 BD DB
|
* FC 64 0F 0F 00 09 01 1A 10 BD DB
|
* FC 64 10 10 00 09 01 1A 10 BD DB
|
* FC 64 11 11 00 09 01 1A 10 BD DB
|
* FC 64 12 12 00 09 01 1A 10 BD DB
|
* FC 64 13 13 00 09 01 1A 10 BD DB
|
* FC 64 14 14 00 09 01 1A 10 BD DB
|
* FC 64 15 15 00 09 01 1A 10 BD DB
|
* FC 64 16 16 00 09 01 1A 10 BD DB
|
* FC 64 17 17 00 09 01 1A 10 BD DB
|
* FC 64 18 18 00 09 01 1A 10 BD DB
|
* FC 64 19 19 00 09 01 1A 10 BD DB
|
* FC 64 1A 1A 00 09 01 1A 10 BD DB
|
*
|
* @param reqData
|
* @return
|
*/
|
@Override
|
public synchronized BaseResp syncGrain(BaseReqData reqData) {
|
|
BaseResp resp = new BaseResp();
|
|
GatewayDevice device = reqData.getDevice();
|
|
if (null == device) {
|
resp.setCode(500);
|
resp.setMsg("系统未获取到下行连接设备信息,无法执行");
|
log.error("----------------系统未获取到下行连接设备信息,无法执行---------");
|
return resp;
|
}
|
try {
|
//Step 请求信息放入内存
|
ProtocolUtils.addSyncReq2Map(device.getDepotIdSys(), reqData);
|
|
String hexStr = buildGrainCmd(device);
|
|
Channel channel = ClientEngine.getChannel();
|
if (null == channel) {
|
ClientEngine clientEngine = new ClientEngine(device.getIp(), device.getPort());
|
clientEngine.start();
|
Thread.sleep(1000);
|
channel = clientEngine.getChannel();
|
}
|
|
InvokeResult message = ClientEngine.send2(hexStr, channel);
|
|
log.error("平台------>>>>主控:发送粮情检测命令-{}---{}", message, hexStr);
|
|
// 封装返回信息
|
if (!InvokeResult.SUCCESS.getCode().equals(message.getCode())) {
|
log.error("平台------>>>>控制柜:发送粮情检测命令-失败{}", message.getMessage());
|
resp.setCode(500);
|
resp.setMsg("平台------>>>>控制柜:发送粮情检测命令-失败:" + message.getMessage());
|
}
|
} catch (
|
Exception e) {
|
log.error("粮情检测异常:{}", e);
|
resp.setCode(500);
|
resp.setMsg("平台------>>>>控制柜:发送粮情检测命令:" + e.getMessage());
|
return resp;
|
}
|
return resp;
|
}
|
|
@Override
|
public BaseResp syncGrainTh(BaseReqData reqData) {
|
|
BaseResp resp = new BaseResp();
|
return resp;
|
}
|
|
/**
|
* 生成粮情采集命令
|
*
|
* @param device
|
* @return
|
*/
|
private String buildGrainCmd(GatewayDevice device) {
|
|
String key = "KEY_" + device.getDepotIdSys();
|
|
return depotGrainCmdMap.get(key);
|
|
}
|
|
@Override
|
public BaseResp syncConf(BaseReqData reqData) {
|
return new BaseResp();
|
}
|
|
@Override
|
public BaseResp writeConf(BaseReqData reqData) {
|
return new BaseResp();
|
}
|
|
@Override
|
public BaseResp initCable(BaseReqData reqData) {
|
return new BaseResp();
|
}
|
|
@Override
|
public BaseResp disconnect(BaseReqData reqData) {
|
return new BaseResp();
|
}
|
|
@Override
|
public BaseResp transparent(BaseReqData reqData) {
|
return new BaseResp();
|
}
|
}
|