|
@@ -18,7 +18,10 @@ package org.jeecg.modules.api;
|
|
|
* ░
|
|
|
*/
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.google.common.base.Strings;
|
|
|
import com.rabbitmq.client.Channel;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.aspectj.lang.ProceedingJoinPoint;
|
|
@@ -57,10 +60,7 @@ import javax.xml.transform.Transformer;
|
|
|
import javax.xml.transform.TransformerFactory;
|
|
|
import javax.xml.transform.dom.DOMSource;
|
|
|
import javax.xml.transform.stream.StreamResult;
|
|
|
-import javax.xml.xpath.XPath;
|
|
|
-import javax.xml.xpath.XPathConstants;
|
|
|
-import javax.xml.xpath.XPathExpression;
|
|
|
-import javax.xml.xpath.XPathFactory;
|
|
|
+import javax.xml.xpath.*;
|
|
|
import java.io.StringReader;
|
|
|
import java.io.StringWriter;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
@@ -71,6 +71,11 @@ import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static org.bouncycastle.crypto.tls.ConnectionEnd.client;
|
|
|
+
|
|
|
+/**
|
|
|
+ * FIXME: 当前版本耦合严重,后期需要再次封装
|
|
|
+ */
|
|
|
@Slf4j
|
|
|
@Profile("prod")
|
|
|
@RabbitComponent(value = "testListener")
|
|
@@ -130,26 +135,38 @@ public class DemoRabbitMqListener3 extends BaseRabbiMqHandler<Object> {
|
|
|
// 航班机位动态信息更新(STLS)
|
|
|
if (STYP.equals( "STLS" )) {
|
|
|
log.info("开始处理【STLS】航班机位动态信息更新消息");
|
|
|
- //航班标识 (航班号)
|
|
|
- String FFID = (String) xpath.evaluate( "/MSG/DFLT/FFID", doc,
|
|
|
- XPathConstants.STRING );
|
|
|
//航班唯一编号
|
|
|
- String FLID = (String) xpath.evaluate( "/MSG/DFLT/FLID", doc,
|
|
|
- XPathConstants.STRING );
|
|
|
+ String FLID = (String) xpath.evaluate( "/MSG/DFLT/FLID", doc, XPathConstants.STRING );
|
|
|
+ // 被删除的航班
|
|
|
+ if (redisUtil.hasKey( "DFDE_" + FLID)) {
|
|
|
+ LambdaQueryWrapper<AdminAircraftPosition> queryWrapper2 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper2.eq( AdminAircraftPosition::getFlightSole, FLID );
|
|
|
+ AdminAircraftPosition one2 = adminAircraftPositionService.getOne( queryWrapper2,
|
|
|
+ false );
|
|
|
+ if (one2 != null) {
|
|
|
+ // 表中有就 清空机位
|
|
|
+ adminAircraftPositionService.dept( one2.getId() );
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ //航班标识 (航班号)
|
|
|
+ String FFID = (String) xpath.evaluate( "/MSG/DFLT/FFID", doc, XPathConstants.STRING );
|
|
|
//判断航班标识的最后一个字符 为A A为进站 D为出站
|
|
|
String lastChar = FFID.substring( FFID.length() - 1 );
|
|
|
//这是过滤掉 D出站的
|
|
|
if (lastChar.equals( "A" )) {
|
|
|
log.info("执行进站逻辑开始");
|
|
|
//机位编号
|
|
|
- String CODE = (String) xpath.evaluate( "/MSG/DFLT/STLS/STND/CODE", doc,
|
|
|
- XPathConstants.STRING );
|
|
|
+ String CODE = (String) xpath.evaluate( "/MSG/DFLT/STLS/STND/CODE", doc, XPathConstants.STRING );
|
|
|
//根据机位编号查询 之后存入各种数据
|
|
|
LambdaQueryWrapper<AdminAircraftPosition> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq( AdminAircraftPosition::getAircraftPositionNum, CODE );
|
|
|
AdminAircraftPosition one = adminAircraftPositionService.getOne( queryWrapper,
|
|
|
false );
|
|
|
if (one != null) {
|
|
|
+ //表中有这个机位
|
|
|
+ //开始换机位处理
|
|
|
//判断是否是换机位的STLS
|
|
|
LambdaQueryWrapper<AdminAircraftPosition> queryWrapper2 = new LambdaQueryWrapper<>();
|
|
|
queryWrapper2.eq( AdminAircraftPosition::getFlightSole, FLID );
|
|
@@ -158,6 +175,7 @@ public class DemoRabbitMqListener3 extends BaseRabbiMqHandler<Object> {
|
|
|
if (one2!=null){
|
|
|
// FLID匹配到的机位号 和 进来的机位号 不是 一个 换机位 清空原机位信息
|
|
|
if (!one2.getAircraftPositionNum().equals( CODE )){
|
|
|
+ //表中有但不是一个机位
|
|
|
//给新匹配到的机位上附上信息
|
|
|
one.setAircraftNum( one2.getAircraftNum() );
|
|
|
one.setType( one2.getType() );
|
|
@@ -166,9 +184,95 @@ public class DemoRabbitMqListener3 extends BaseRabbiMqHandler<Object> {
|
|
|
one.setFlightAfid( one2.getFlightAfid() );
|
|
|
// 清空one2对应的机位
|
|
|
adminAircraftPositionService.dept( one2.getId() );
|
|
|
+ } else {
|
|
|
+ // 是一个机位号
|
|
|
+ // 判断是否空置
|
|
|
+ if ("空置".equals(one.getType())) {
|
|
|
+ // 是空置
|
|
|
+
|
|
|
+ } else {
|
|
|
+ // 不是空置
|
|
|
+ if(!one.getFlightNum().equals( one2.getFlightNum())) {
|
|
|
+ // 不是一个航班
|
|
|
+ // 表中有判断当前是否有机位冲突 否则换机位
|
|
|
+ AdminAircraftPosition adminAircraftPosition = new AdminAircraftPosition();
|
|
|
+ setStlsTime(doc, xpath, adminAircraftPosition);
|
|
|
+ Date estr = one.getEstr();
|
|
|
+ Date eend = one.getEend();
|
|
|
+ Date estr1 = adminAircraftPosition.getEstr();
|
|
|
+ Date eend1 = adminAircraftPosition.getEend();
|
|
|
+ Date date = new Date();
|
|
|
+ if (eend != null && estr1!=null) {
|
|
|
+ if (eend.before(estr1)&&eend.after(date)) {
|
|
|
+ // 表中的结束占用时间在新数据的开始占用时间之前 但超过当前时间
|
|
|
+ // 不更新数据,直接返回
|
|
|
+ return;
|
|
|
+ } else if (eend.before(estr1)&&eend.before(date)) {
|
|
|
+ // 表中的结束占用时间在新数据的开始占用时间之前 但未超过当前时间
|
|
|
+ //换数据
|
|
|
+ AdminAircraftPosition xmldfdl2 = XMLDFDL2( xmlString, FLID);
|
|
|
+ if (xmldfdl2 == null) {
|
|
|
+ if (redisUtil.hasKey("DFIE_"+FLID)) {
|
|
|
+ xmldfdl2 = XMLDFIE((String) redisUtil.get("DFIE_"+FLID));
|
|
|
+ } else {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ one.setAircraftNum(xmldfdl2.getAircraftNum());
|
|
|
+ one.setFlightNum(xmldfdl2.getFlightNum());
|
|
|
+ one.setFlightAfid(xmldfdl2.getFlightAfid());
|
|
|
+ one.setAircraftPositionNum(CODE);
|
|
|
+ }else {
|
|
|
+ //表中的结束占用时间在新数据的开始占用时间之后
|
|
|
+ if (estr != null) {
|
|
|
+ if (estr.after(eend1)) {
|
|
|
+ // 表中的开始时间在新数据的结束时间之后
|
|
|
+ //换数据
|
|
|
+ AdminAircraftPosition xmldfdl2 = XMLDFDL2( xmlString, FLID);
|
|
|
+ if (xmldfdl2 == null) {
|
|
|
+ if (redisUtil.hasKey("DFIE_"+FLID)) {
|
|
|
+ xmldfdl2 = XMLDFIE((String) redisUtil.get("DFIE_"+FLID));
|
|
|
+ } else {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ one.setAircraftNum(xmldfdl2.getAircraftNum());
|
|
|
+ one.setFlightNum(xmldfdl2.getFlightNum());
|
|
|
+ one.setFlightAfid(xmldfdl2.getFlightAfid());
|
|
|
+ one.setAircraftPositionNum(CODE);
|
|
|
+ } else {
|
|
|
+ //在新数据时间范围中 不变
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 没有预计开始占用时间可能第一次设置计划 什么都不做
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 没有预计结束占用时间可能第一次设置计划 什么都不做
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 表中没有
|
|
|
+ //开始是否新增加航班处理
|
|
|
+ //判断是否在新增计划里面
|
|
|
+ if (redisUtil.hasKey("DFIE_"+FLID)) {
|
|
|
+ AdminAircraftPosition item = XMLDFIE((String) redisUtil.get("DFIE_"+FLID));
|
|
|
+ //one.setDropTime( item.getDropTime() );
|
|
|
+ one.setType( "使用中" );
|
|
|
+ one.setAircraftNum(item.getAircraftNum());
|
|
|
+ one.setFlightNum(item.getFlightNum());
|
|
|
+ one.setFlightAfid(item.getFlightAfid());
|
|
|
}
|
|
|
+ //结束是否新增加航班处理
|
|
|
}
|
|
|
+ //结束换机位处理
|
|
|
|
|
|
+ //设置时间
|
|
|
+ setStlsTime(doc, xpath, one);
|
|
|
one.setFlightSole( FLID );
|
|
|
// one.setType( "使用中" );
|
|
|
adminAircraftPositionService.updateById( one );
|
|
@@ -299,6 +403,15 @@ public class DemoRabbitMqListener3 extends BaseRabbiMqHandler<Object> {
|
|
|
String dfdl = (String) redisUtil.get( "DFDL" );
|
|
|
xmldfdl = XMLDFDL( dfdl, FLID );
|
|
|
}
|
|
|
+ //判断是否在新增计划里面
|
|
|
+ if (redisUtil.hasKey("DFIE_"+FLID)) {
|
|
|
+ AdminAircraftPosition item = XMLDFIE((String) redisUtil.get("DFIE_"+FLID));
|
|
|
+ //one.setDropTime( item.getDropTime() );
|
|
|
+ xmldfdl.setType( "使用中" );
|
|
|
+ xmldfdl.setAircraftNum(item.getAircraftNum());
|
|
|
+ xmldfdl.setFlightNum(item.getFlightNum());
|
|
|
+ xmldfdl.setFlightAfid(item.getFlightAfid());
|
|
|
+ }
|
|
|
//变化 判断是否有航班变更
|
|
|
if (redisUtil.hasKey( "CFCE_" + FLID )) {
|
|
|
String CFCE = (String) redisUtil.get( "CFCE_" + FLID );
|
|
@@ -334,6 +447,60 @@ public class DemoRabbitMqListener3 extends BaseRabbiMqHandler<Object> {
|
|
|
log.info("结束处理【CFCE】航班更换飞机消息");
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ // 航班动态增加信息
|
|
|
+ if (STYP.equals( "DFIE" )) {
|
|
|
+ log.info("开始处理【DFIE】航班动态增加信息");
|
|
|
+ //航班唯一编号
|
|
|
+ String FLID = (String) xpath.evaluate( "/MSG/DFLT/FLID", doc, XPathConstants.STRING );
|
|
|
+ //log.info( "CFCE::" + xmlString );
|
|
|
+ //存入缓存
|
|
|
+ redisUtil.set( "DFIE_" + FLID, xmlString, EXPIRATION_TIME );
|
|
|
+ log.info("存入Redis key: CFCE_{}", FLID);
|
|
|
+ log.info("结束处理【DFIE】航班动态增加信息");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 动态航班删除
|
|
|
+ if (STYP.equals( "DFDE" )) {
|
|
|
+ log.info("开始处理【DFDE】动态航班删除");
|
|
|
+ String FLID = (String) xpath.evaluate( "/MSG/DFLT/FLID", doc, XPathConstants.STRING );
|
|
|
+ //log.info( "CFCE::" + xmlString );
|
|
|
+ //存入缓存
|
|
|
+ redisUtil.set( "DFDE_" + FLID, xmlString, EXPIRATION_TIME );
|
|
|
+ log.info("存入Redis key: DFDE_{}", FLID);
|
|
|
+ log.info("结束处理【DFDE】动态航班删除");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 航班号变更
|
|
|
+ if (STYP.equals( "HBTT" )) {
|
|
|
+ log.info("开始处理【HBTT】航班号变更");
|
|
|
+ String FLID = (String) xpath.evaluate( "/MSG/DFLT/FLID", doc, XPathConstants.STRING );
|
|
|
+ // 原来的航班标识
|
|
|
+ String FFID = (String) xpath.evaluate( "/MSG/DFLT/FFID", doc, XPathConstants.STRING );
|
|
|
+ // 变更后航班标识
|
|
|
+ String HBID = (String) xpath.evaluate( "/MSG/DFLT/HBID", doc, XPathConstants.STRING );
|
|
|
+ // 变更后飞机号
|
|
|
+ String NFLN = (String) xpath.evaluate( "/MSG/DFLT/NFLN", doc, XPathConstants.STRING );
|
|
|
+ String[] parts = HBID.split( "-" ); // 分割字符串
|
|
|
+ String an = parts[0] + "-" + parts[1]; // 连接前两个部分 航班号
|
|
|
+ // 旧的航班号
|
|
|
+ String[] FFIDParts = FFID.split( "-" ); // 分割字符串
|
|
|
+ String HBH = FFIDParts[0] + "-" + FFIDParts[1]; // 连接前两个部分 航班号
|
|
|
+ LambdaQueryWrapper<AdminAircraftPosition> wrapper = new LambdaQueryWrapper<AdminAircraftPosition>();
|
|
|
+ wrapper.eq(AdminAircraftPosition::getFlightSole,FLID);
|
|
|
+ wrapper.eq(AdminAircraftPosition::getFlightNum,HBH);
|
|
|
+ AdminAircraftPosition one = adminAircraftPositionService.getOne(wrapper, false);
|
|
|
+ if (one != null) {
|
|
|
+ one.setAircraftNum(NFLN);
|
|
|
+ one.setFlightNum(an);
|
|
|
+ adminAircraftPositionService.updateById(one);
|
|
|
+ }
|
|
|
+ //存入缓存
|
|
|
+ redisUtil.set( "HBTT_" + FLID, xmlString, EXPIRATION_TIME );
|
|
|
+ log.info("存入Redis key: HBTT_{}", FLID);
|
|
|
+ log.info("结束处理【DFDE】动态航班删除");
|
|
|
+ }
|
|
|
+
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
@@ -341,7 +508,43 @@ public class DemoRabbitMqListener3 extends BaseRabbiMqHandler<Object> {
|
|
|
} );
|
|
|
}
|
|
|
|
|
|
+ private void setStlsTime(Document doc, XPath xpath, AdminAircraftPosition one) throws XPathExpressionException {
|
|
|
+ String ESTR = (String) xpath.evaluate( "/MSG/DFLT/STLS/STND/ESTR", doc, XPathConstants.STRING );
|
|
|
+ String EEND = (String) xpath.evaluate( "/MSG/DFLT/STLS/STND/EEND", doc, XPathConstants.STRING );
|
|
|
+ String RSTR = (String) xpath.evaluate( "/MSG/DFLT/STLS/STND/RSTR", doc, XPathConstants.STRING );
|
|
|
+ String REND = (String) xpath.evaluate( "/MSG/DFLT/STLS/STND/REND", doc, XPathConstants.STRING );
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "yyyyMMddHHmmss" );
|
|
|
+ if (!Strings.isNullOrEmpty(ESTR)){
|
|
|
+ LocalDateTime ESTRDateTime = LocalDateTime.parse( ESTR, formatter );
|
|
|
+ //预计开始占用时间
|
|
|
+ Date estrTime = Date.from( ESTRDateTime.atZone( ZoneId.systemDefault() ).toInstant() );
|
|
|
+ one.setEstr(estrTime);
|
|
|
+ }
|
|
|
+ if (!Strings.isNullOrEmpty(EEND)){
|
|
|
+ LocalDateTime EENDDateTime = LocalDateTime.parse( EEND, formatter );
|
|
|
+ //预计结束占用时间
|
|
|
+ Date eendTime = Date.from( EENDDateTime.atZone( ZoneId.systemDefault() ).toInstant() );
|
|
|
+ one.setEend(eendTime);
|
|
|
+ }
|
|
|
+ if (!Strings.isNullOrEmpty(RSTR)){
|
|
|
+ LocalDateTime RSTRDateTime = LocalDateTime.parse( RSTR, formatter );
|
|
|
+ //实际开始占用时间
|
|
|
+ Date rstrTime = Date.from( RSTRDateTime.atZone( ZoneId.systemDefault() ).toInstant() );
|
|
|
+ one.setRstr(rstrTime);
|
|
|
+ }
|
|
|
+ if (!Strings.isNullOrEmpty(REND)){
|
|
|
+ LocalDateTime RENDDateTime = LocalDateTime.parse( REND, formatter );
|
|
|
+ //实际结束占用时间
|
|
|
+ Date rendTime = Date.from( RENDDateTime.atZone( ZoneId.systemDefault() ).toInstant() );
|
|
|
+ one.setRend(rendTime);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
AdminAircraftPosition XMLDFDL2(String DFDL, String FLID2) {
|
|
|
+ if (redisUtil.hasKey( "DFDE_" + FLID2)){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
// 将XML字符串转换为字符流
|
|
|
StringReader sr = new StringReader( DFDL );
|
|
|
// 读取XML文档
|
|
@@ -355,6 +558,7 @@ public class DemoRabbitMqListener3 extends BaseRabbiMqHandler<Object> {
|
|
|
XPathExpression expr = xpath.compile( "//DFLT" );
|
|
|
NodeList nodes = (NodeList) expr.evaluate( doc, XPathConstants.NODESET );
|
|
|
AdminAircraftPosition adminAircraftPosition = new AdminAircraftPosition();
|
|
|
+ String FLID = "";
|
|
|
if (nodes.getLength() >= 1) {
|
|
|
for (int i = 0; i < nodes.getLength(); i++) {
|
|
|
Node node = nodes.item( i );
|
|
@@ -368,7 +572,7 @@ public class DemoRabbitMqListener3 extends BaseRabbiMqHandler<Object> {
|
|
|
//飞机号
|
|
|
String CFNO = (String) xpath.evaluate( "/DFLT/CFNO", doc2, XPathConstants.STRING );
|
|
|
// 航班唯一编号
|
|
|
- String FLID = (String) xpath.evaluate( "/DFLT/FLID", doc2, XPathConstants.STRING );
|
|
|
+ FLID = (String) xpath.evaluate( "/DFLT/FLID", doc2, XPathConstants.STRING );
|
|
|
// 关联航班ID AFID
|
|
|
String AFID = (String) xpath.evaluate( "/DFLT/AFID", doc2, XPathConstants.STRING );
|
|
|
//航班标识
|
|
@@ -378,6 +582,14 @@ public class DemoRabbitMqListener3 extends BaseRabbiMqHandler<Object> {
|
|
|
String HBH = parts[0] + "-" + parts[1]; // 连接前两个部分 航班号
|
|
|
|
|
|
if (FLID.equals( FLID2 )) {
|
|
|
+ //判断是否在新增计划里面
|
|
|
+ if (redisUtil.hasKey("DFIE_"+FLID)) {
|
|
|
+ AdminAircraftPosition item = XMLDFIE((String) redisUtil.get("DFIE_"+FLID));
|
|
|
+ adminAircraftPosition.setAircraftNum(item.getAircraftNum());
|
|
|
+ adminAircraftPosition.setFlightNum(item.getFlightNum());
|
|
|
+ adminAircraftPosition.setFlightAfid(item.getFlightAfid());
|
|
|
+ return adminAircraftPosition;
|
|
|
+ }
|
|
|
adminAircraftPosition.setAircraftNum( CFNO );
|
|
|
adminAircraftPosition.setFlightNum( HBH );
|
|
|
adminAircraftPosition.setFlightAfid( AFID );
|
|
@@ -429,6 +641,43 @@ public class DemoRabbitMqListener3 extends BaseRabbiMqHandler<Object> {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ AdminAircraftPosition XMLDFIE(String DFIE) {
|
|
|
+ // 将XML字符串转换为字符流
|
|
|
+ StringReader sr = new StringReader( DFIE );
|
|
|
+ // 读取XML文档
|
|
|
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
|
|
+ Document doc = null;
|
|
|
+ try {
|
|
|
+ doc = factory.newDocumentBuilder().parse( new InputSource( sr ) );
|
|
|
+ // 创建XPath对象
|
|
|
+ XPathFactory xPathfactory = XPathFactory.newInstance();
|
|
|
+ XPath xpath = xPathfactory.newXPath();
|
|
|
+
|
|
|
+ AdminAircraftPosition adminAircraftPosition = new AdminAircraftPosition();
|
|
|
+ //飞机号
|
|
|
+ String CFNO = (String) xpath.evaluate( "/MSG/DFLT/CFNO", doc, XPathConstants.STRING );
|
|
|
+ // 航班唯一编号
|
|
|
+// String FLID = (String) xpath.evaluate( "/DFLT/FLID", doc2, XPathConstants.STRING );
|
|
|
+// 关联航班ID AFID
|
|
|
+ String AFID = (String) xpath.evaluate( "/MSG/DFLT/AFID", doc, XPathConstants.STRING );
|
|
|
+ //航班标识
|
|
|
+ String FFID = (String) xpath.evaluate( "/MSG/DFLT/FFID", doc, XPathConstants.STRING );
|
|
|
+ String[] parts = FFID.split( "-" ); // 分割字符串
|
|
|
+// 航班号
|
|
|
+ String HBH = parts[0] + "-" + parts[1]; // 连接前两个部分 航班号
|
|
|
+
|
|
|
+
|
|
|
+ adminAircraftPosition.setAircraftNum( CFNO );
|
|
|
+ adminAircraftPosition.setFlightNum( HBH );
|
|
|
+ adminAircraftPosition.setFlightAfid( AFID );
|
|
|
+ return adminAircraftPosition;
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
AdminAircraftPosition XMLDFDL(String DFDL, String FLID2) {
|
|
|
// 将XML字符串转换为字符流
|
|
|
StringReader sr = new StringReader( DFDL );
|
|
@@ -453,21 +702,26 @@ public class DemoRabbitMqListener3 extends BaseRabbiMqHandler<Object> {
|
|
|
//下面就是取多个里面的 具体数值
|
|
|
StringReader sr2 = new StringReader( buf.toString() );
|
|
|
Document doc2 = factory.newDocumentBuilder().parse( new InputSource( sr2 ) );
|
|
|
- //飞机号
|
|
|
- String CFNO = (String) xpath.evaluate( "/DFLT/CFNO", doc2, XPathConstants.STRING );
|
|
|
+
|
|
|
// 航班唯一编号
|
|
|
String FLID = (String) xpath.evaluate( "/DFLT/FLID", doc2, XPathConstants.STRING );
|
|
|
-// 关联航班ID AFID
|
|
|
- String AFID = (String) xpath.evaluate( "/DFLT/AFID", doc2, XPathConstants.STRING );
|
|
|
- //航班标识
|
|
|
- String FFID = (String) xpath.evaluate( "/DFLT/FFID", doc2, XPathConstants.STRING );
|
|
|
- String[] parts = FFID.split( "-" ); // 分割字符串
|
|
|
-// 航班号
|
|
|
- String HBH = parts[0] + "-" + parts[1]; // 连接前两个部分 航班号
|
|
|
+
|
|
|
|
|
|
if (FLID.equals( FLID2 )) {
|
|
|
+ //飞机号
|
|
|
+ String CFNO = (String) xpath.evaluate( "/DFLT/CFNO", doc2, XPathConstants.STRING );
|
|
|
+ // 关联航班ID AFID
|
|
|
+ String AFID = (String) xpath.evaluate( "/DFLT/AFID", doc2, XPathConstants.STRING );
|
|
|
+ //航班标识
|
|
|
+ String FFID = (String) xpath.evaluate( "/DFLT/FFID", doc2, XPathConstants.STRING );
|
|
|
+ String[] parts = FFID.split( "-" ); // 分割字符串
|
|
|
+// 航班号
|
|
|
+ String HBH = parts[0] + "-" + parts[1]; // 连接前两个部分 航班号
|
|
|
+ //飞机号
|
|
|
adminAircraftPosition.setAircraftNum( CFNO );
|
|
|
+ //航班号
|
|
|
adminAircraftPosition.setFlightNum( HBH );
|
|
|
+ //关联航班号
|
|
|
adminAircraftPosition.setFlightAfid( AFID );
|
|
|
return adminAircraftPosition;
|
|
|
}
|