package com.fzzy.protocol.wujia.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.wujia.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 WujiaGatewayGrainService implements GatewaySyncGranService { @Override public String getGrainProtocol() { return GatewayDeviceProtocol.GRAIN_WUJIA_2023.getCode(); } /** * 仓库命令 */ public static Map depotGrainCmdMap = new HashMap<>(); static { depotGrainCmdMap.put("KEY_1", "FC01010103140301EBBDDB"); depotGrainCmdMap.put("KEY_2", "FC01020403180302EBBDDB"); depotGrainCmdMap.put("KEY_3", "FC02030103180401EBBDDB"); depotGrainCmdMap.put("KEY_4", "FC03040103180401EBBDDB"); depotGrainCmdMap.put("KEY_5", "FC03050403180402EBBDDB"); depotGrainCmdMap.put("KEY_6", "FC04060102100301EBBDDB"); depotGrainCmdMap.put("KEY_7", "FC04070303140302EBBDDB"); depotGrainCmdMap.put("KEY_8", "FC04080603140303EBBDDB"); depotGrainCmdMap.put("KEY_9", "FC050901042A0401EBBDDB"); depotGrainCmdMap.put("KEY_10", "FC060A0103240401EBBDDB"); depotGrainCmdMap.put("KEY_11", "FC060B04042A0402EBBDDB"); } /** * FC 64 01 01 00 09 01 1A 10 BD DB * FC 01 01 01 03 14 03 01 EB BD DB * * 1仓: FC 01 01 01 03 14 03 01 00 BD DB * 2仓: FC 01 02 04 03 18 03 02 00 BD DB * 3仓: FC 02 03 01 03 18 04 01 00 BD DB * 4仓: FC 03 04 01 03 18 04 01 00 BD DB * 5仓: FC 03 05 04 03 18 04 02 00 BD DB * 6仓: FC 04 06 01 02 10 03 01 00 BD DB * 7仓: FC 04 07 03 03 14 03 02 00 BD DB * 8仓: FC 04 08 06 03 14 03 03 00 BD DB * 9仓: FC 05 09 01 04 2A 04 01 00 BD DB * 10仓:FC 05 0A 01 03 24 04 01 00 BD DB * 11仓:FC 06 0B 04 04 2A 04 02 00 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(); } }