package com.gzlh.bus; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.gzlh.config.ModuleEnum; import com.gzlh.config.SystemObject; import com.gzlh.device.led.utils.LedOptions; import com.gzlh.device.plc.event.PLCEvent; import com.gzlh.entity.CommandBO; import com.gzlh.entity.ReqBO; import com.gzlh.utils.DeviceCache; import com.gzlh.utils.WordHandlerUtils; import lombok.extern.slf4j.Slf4j; @Slf4j public class SubmitThread implements Runnable{ @Override public void run() { String api = SysConfig.managerSetting.getServerUrl() + "/open/submit"; ReqBO reqBO=EventDataManager.getCacheData(); String bodyParams = JSONUtil.toJsonStr(reqBO); if (StrUtil.isEmpty(bodyParams) || ChannelCacheManager.checkExit(reqBO.getCarNo()) ||!ChannelCacheManager.stateEnable(SysConfig.channelSetting.getChannelCode())) { return; } ChannelCacheManager.addCache(reqBO.getCarNo()); log.info("Req:{}", bodyParams); EventBus eventBus = SpringUtil.getBean(EventBus.class); try (HttpResponse response = HttpUtil.createPost(api).body(WordHandlerUtils.AESEncrypt(bodyParams)).execute()) { log.info("提交通道数据-返回结果:{}", response.body()); if (response.getStatus() == 200) { String body = response.body(); JSONObject jsonObject = JSONUtil.parseObj(body); // 返回数据解密 String data = WordHandlerUtils.AESDecrypt(jsonObject.get("data").toString()); log.info("data:{}", data); CommandBO commandBO = JSONUtil.toBean(data, CommandBO.class); LedOptions options = new LedOptions().setLine("04").setShowType("00"); if (jsonObject.getInt("code") == 200) { log.info("抬杆放行============"); eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.RAILING_RISE); options.setColor("02"); if (ModuleEnum.LED_MODULE.getModuleEn().equalsIgnoreCase(commandBO.getCommand().getModule())) { SystemObject.ledFactory.handler(SysConfig.serialSetting.getLed().getBrand()) .sendMsg(commandBO.getCommand().getExtra(), options); } } else { options.setColor("01"); if (ModuleEnum.LED_MODULE.getModuleEn().equalsIgnoreCase(commandBO.getCommand().getModule())) { SystemObject.ledFactory.handler(SysConfig.serialSetting.getLed().getBrand()) .sendMsg(commandBO.getCommand().getExtra(), options); } else { eventBus.startEvent(commandBO.getCommand().getModule() + "." + commandBO.getCommand().getCommand()); } if (SysConfig.channelSetting.getChannelType() == 1) { eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.CHECK_ADMIN_FAILED); } } } else { eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.SUBMIT_TIMEOUT); } } // 重置记录的设备触发时间 DeviceCache.resetTimeMap(); } }