<?xml version="1.0" encoding="UTF-8"?>
<root>
<interfaceDevice code="interfaceDeviceData">
<subsystem code="deviceData" ip="http://127.0.0.1:8080/" url="tms/tmsDevice/add"></subsystem>
</interfaceDevice>
</root>
@Override
public List<InterfaceRouteEntity> getInterfaceDevice() {
List<InterfaceRouteEntity> routeList = new ArrayList<>();
try {
String xmlConfigPath = xmlConfig + "tmsxmlconfig/InterfaceDevice.xml";
File xmlFile = new File(xmlConfigPath);
if (!xmlFile.exists()) {
xmlFilesUntils.copyDir("static/config/InterfaceDevice.xml", xmlConfigPath);
}
String value = "";
//读取XML文件,获得document对象
SAXReader reader = new SAXReader();
Document document = reader.read(new File(xmlConfigPath));
//获得某个节点的属性对象
Element rootElem = document.getRootElement();
//首先要知道自己要操作的节点。
List<Element> pList = rootElem.elements("interfaceDevice");
for (Element itme : pList) {
List<Element> contactList = itme.elements("subsystem");
for (Element e : contactList) {
InterfaceRouteEntity routeModel = new InterfaceRouteEntity();
Attribute urlAttr = e.attribute("url");
Attribute ipAttr = e.attribute("ip");
Attribute idAttr = e.attribute("code");
Attribute pIdAttr = itme.attribute("code");
routeModel.setUrl(ipAttr.getValue() + urlAttr.getValue());
routeModel.setCode(idAttr.getValue());
routeModel.setPCode(pIdAttr.getValue());
routeList.add(routeModel);
System.out.println("接口=====================" + routeModel);
}
}
return routeList;
} catch (Exception ex) {
LogUtils.error("读取转发路由失败!" + ex.getMessage());
throw new RuntimeException("读取转发路由失败");
}
}
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class InterfaceRouteEntity {
@ApiModelProperty(value="url",name="路径")
private String url;
@ApiModelProperty(value="code",name="对应的标识")
private String code;
@ApiModelProperty(value="pCode",name="父级对应的标识")
private String pCode;
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;
@Component
public class ReadConfigurationFile {
@Autowired
private TmsDataReceptionService recordIdentAlarmInterfaceService;
public static List<InterfaceRouteEntity> forwardDeviceList = new ArrayList<>();
@PostConstruct
public void init() {
try {
forwardDeviceList = recordIdentAlarmInterfaceService.getInterfaceDevice();
}
catch(Exception ex)
{
LogUtils.error("读取转地址失败!" + ex.getMessage());
throw ex;
}
}
}
@ApiOperation(value = "测试V1接口")
@RequestMapping(value = "/forward", method = RequestMethod.POST)
public RetMsgModel forwardDevice(@RequestBody String data){
RetMsgModel model = new RetMsgModel();
try {
if (data != null) {
String code="interfaceDeviceData";
List<InterfaceRouteEntity> interfaceRouteEntity= ReadConfigurationFile.forwardDeviceList.stream().filter(a->a.getPCode().equals(code)).collect(Collectors.toList());
/*调用后台转发方法转发数据*/
Boolean bl = tmsDataReceptionService.forwardDevice(data, interfaceRouteEntity);
if (bl==true)
{
model.setStatus(0);
model.setMsg("数据转发已处理");
}else
{
model.setStatus(1);
model.setMsg("数据转发失败");
}
} else {
model.setStatus(1);
model.setMsg("对象转字典结果为null,请检查数据体");
}
return model;
}catch (Exception ex)
{
LogUtils.error("数据转发异常 :" + ex.getMessage());
model.setStatus(1);
model.setMsg("数据转发异常");
return model;
}
}
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class RetMsgModel {
/**状态码*/
@ApiModelProperty(value="Status",name="状态码")
private int Status;
/**返回消息*/
@ApiModelProperty(value="Msg",name="返回消息")
private String Msg;
/**驱动需要TMS返回的其他数据信息*/
@ApiModelProperty(value="Data",name="数据体")
private Object Data;
}