package com.fzzy.gateway.controller;
|
|
import com.alibaba.fastjson2.JSONObject;
|
import com.bstek.dorado.annotation.Expose;
|
import com.fzzy.api.data.GatewayDeviceType;
|
import com.fzzy.api.utils.DateUtil;
|
import com.fzzy.async.fzzy40.Fzzy40CommonService;
|
import com.fzzy.async.fzzy40.entity.Fz40Grain;
|
import com.fzzy.gateway.GatewayUtils;
|
import com.fzzy.gateway.api.GatewayDeviceReportService;
|
import com.fzzy.gateway.api.GatewayRemoteManager;
|
import com.fzzy.gateway.data.BaseResp;
|
import com.fzzy.gateway.data.BaseReqData;
|
import com.fzzy.gateway.entity.GateWayTestParam;
|
import com.fzzy.gateway.entity.GatewayDevice;
|
import com.fzzy.gateway.hx2023.ScConstant;
|
import com.fzzy.gateway.hx2023.data.*;
|
import com.fzzy.gateway.service.GatewayDeviceService;
|
import com.fzzy.mqtt.MqttGatewayService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.time.DateFormatUtils;
|
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/test")
|
public class GatewayDeviceTestController {
|
|
@Resource
|
private GatewayDeviceService gatewayDeviceService;
|
|
@Resource
|
private GatewayRemoteManager gatewayRemoteManager;
|
|
|
/**
|
* 测试入口
|
*
|
* @param param
|
* @return
|
*/
|
@PostMapping("/deviceTest")
|
public @ResponseBody
|
String deviceTest(@RequestBody GateWayTestParam 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";
|
}
|
|
private String testGrain(GateWayTestParam 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(GateWayTestParam 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(GateWayTestParam param) throws Exception {
|
|
double weight = param.getWeight();
|
String deviceId = param.getDeviceId();
|
|
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(GateWayTestParam 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";
|
}
|
}
|