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<GatewayDevice> list = gatewayDeviceService.listAll();
|
|
if (null == list || list.isEmpty()) {
|
return "ERROR:没有获取到设备信息";
|
}
|
|
BaseReqData reqData;
|
int i = 0;
|
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<GatewayDevice> 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<GatewayDevice> list = gatewayDeviceService.listAll();
|
if (list == null || list.size() <= 0) {
|
return "ERROR:没有配置设备信息,执行失败";
|
}
|
|
List<GatewayDevice> 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<GatewayDevice> list = gatewayDeviceService.listAll();
|
if (list == null || list.size() <= 0) {
|
log.error("ERROR:没有配置设备信息,执行失败");
|
return "ERROR:没有配置设备信息,执行失败";
|
}
|
List<GatewayDevice> 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";
|
}
|
}
|