package com.fzzy.gateway.controller; import com.fzzy.api.data.GatewayDeviceType; import com.fzzy.gateway.GatewayUtils; import com.fzzy.gateway.api.GatewayRemoteManager; import com.fzzy.gateway.api.GatewaySyncLprService; import com.fzzy.gateway.data.BaseResp; import com.fzzy.gateway.data.BaseReqData; import com.fzzy.gateway.entity.GateWayParam; import com.fzzy.gateway.entity.GatewayDevice; import com.fzzy.gateway.service.GatewayDeviceService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.util.List; import java.util.stream.Collectors; /** * */ @Slf4j @Controller @RequestMapping("/gateway") public class GatewayDeviceController { @Resource private GatewayDeviceService gatewayDeviceService; @Resource private GatewayRemoteManager gatewayRemoteManager; /** * 测试入口 * * @param param * @return */ @PostMapping("/test/deviceTest") public @ResponseBody String deviceTest(@RequestBody GateWayParam param) throws Exception { if (StringUtils.isEmpty(param.getBizType())) { return "ERROR:没有获取到业务类型,执行失败"; } if ("testGrain".equals(param.getBizType())) { return testGrain(param); } if ("ajaxTestKafkaGrain".equals(param.getBizType())) { return ajaxTestKafkaGrain(param); } if ("ajaxTestWeight".equals(param.getBizType())) { return ajaxTestWeight(param); } if ("ajaxTestLpr".equals(param.getBizType())) { return ajaxTestLpr(param); } return "SUCCESS"; } /** * 初始化车牌识别 * * @param param * @return */ @PostMapping("/control/init-lpr") public @ResponseBody String initLpr(@RequestBody GateWayParam param) throws Exception { List list = gatewayDeviceService.listAll(); if (null == list || list.isEmpty()) { return "ERROR:没有获取到设备信息"; } BaseReqData reqData; int i = 1; GatewaySyncLprService syncLprService; for (GatewayDevice device : list) { if (!GatewayDeviceType.TYPE_02.getCode().equals(device.getType())) { continue; } reqData = new BaseReqData(device); reqData.setIndex(i); syncLprService = gatewayRemoteManager.getSyncLprService(device.getSyncProtocol()); if(null == syncLprService) continue; syncLprService.initLpr(reqData); i++; } return "SUCCESS"; } private String testGrain(GateWayParam param) { String deviceId = param.getDeviceId(); GatewayDevice device = GatewayUtils.getCacheByDeviceId(deviceId); BaseReqData reqData = new BaseReqData(); reqData.setDeviceId(device.getDeviceId()); reqData.setProductId(device.getProductId()); reqData.setDeviceName(device.getDeviceName()); reqData.setDevice(device); reqData.setAutoReplay(true); if (!GatewayDeviceType.TYPE_07.getCode().equals(device.getType())) { return "ERROR:当前设备非粮情设备不支持当前操作"; } if (StringUtils.isEmpty(device.getCableRule())) { return "ERROR:当前设备没有配置布线规则,无法执行"; } BaseResp resp = gatewayRemoteManager.getGatewayTestService(device.getPushProtocol()).testGrain(reqData); //自动推送 if (BaseResp.CODE_200 == resp.getCode() && reqData.isAutoReplay()) { reqData.setData(resp.getData()); gatewayRemoteManager.getDeviceReportService(device.getPushProtocol()).reportGrainData(reqData); } return "SUCCESS"; } /** * 粮情推送测试KAFKA方式 * * @param param * @return */ public String ajaxTestKafkaGrain(GateWayParam param) throws Exception { List list = gatewayDeviceService.listAll(); if (null == list || list.isEmpty()) { return "ERROR:为获取到系统中设备配置,取消执行"; } BaseReqData reqData; BaseResp resp; for (GatewayDevice device : list) { reqData = new BaseReqData(); reqData.setDeviceId(param.getDeviceId()); reqData.setDayTime(param.getDayTime()); reqData.setDevice(device); resp = gatewayRemoteManager.getGatewayTestService(device.getPushProtocol()).testGrainKafka(reqData); //自动推送 if (BaseResp.CODE_200 == resp.getCode()) { reqData.setData(resp.getData()); gatewayRemoteManager.getDeviceReportService(device.getPushProtocol()).reportGrainDataByKafka(reqData); } } return "SUCCESS"; } /** * 地磅推送测试 * * @param param * @return */ public String ajaxTestWeight(GateWayParam param) throws Exception { double weight = param.getWeight(); List list = gatewayDeviceService.listAll(); if (list == null || list.size() <= 0) { return "ERROR:没有配置设备信息,执行失败"; } List weights = list.stream().filter(s -> (GatewayDeviceType.TYPE_01.getCode().equals(s.getType()))).collect(Collectors.toList()); if (weights == null || weights.size() <= 0) { return "ERROR:ERROR:没有配置设备信息,执行失败"; } BaseReqData reqData; BaseResp resp; for (GatewayDevice device : weights) { reqData = new BaseReqData(); reqData.setDeviceId(device.getDeviceId()); reqData.setProductId(device.getProductId()); reqData.setDeviceName(device.getDeviceName()); reqData.setDevice(device); reqData.setAutoReplay(true); reqData.setWeight(weight); resp = gatewayRemoteManager.getGatewayTestService(device.getPushProtocol()).testWeight(reqData); //自动推送 if (BaseResp.CODE_200 == resp.getCode() && reqData.isAutoReplay()) { reqData.setData(resp.getData()); gatewayRemoteManager.getDeviceReportService(device.getPushProtocol()).reportWeightData(reqData); } } return "SUCCESS"; } /** * 地磅推送测试 * * @return */ public String ajaxTestLpr(GateWayParam param) throws Exception { String carNumber = param.getCarNumber(); List list = gatewayDeviceService.listAll(); if (list == null || list.size() <= 0) { log.error("ERROR:没有配置设备信息,执行失败"); return "ERROR:没有配置设备信息,执行失败"; } List weights = list.stream().filter(s -> (GatewayDeviceType.TYPE_02.getCode().equals(s.getType()))).collect(Collectors.toList()); if (weights == null || weights.size() <= 0) { log.error("ERROR:没有配置设备信息,执行失败"); return "ERROR:没有配置设备信息,执行失败"; } BaseReqData reqData; BaseResp resp; for (GatewayDevice device : weights) { reqData = new BaseReqData(); reqData.setDeviceId(device.getDeviceId()); reqData.setProductId(device.getProductId()); reqData.setDeviceName(device.getDeviceName()); reqData.setDevice(device); reqData.setAutoReplay(true); reqData.setCarNumber(carNumber); resp = gatewayRemoteManager.getGatewayTestService(device.getPushProtocol()).testLpr(reqData); //自动推送 if (BaseResp.CODE_200 == resp.getCode() && reqData.isAutoReplay()) { reqData.setData(resp.getData()); gatewayRemoteManager.getDeviceReportService(device.getPushProtocol()).reportLprData(reqData); } } return "SUCCESS"; } }