QDAirPortBackend0122/命令.md

30 KiB
Raw Permalink Blame History

命令

#编译
mvn -pl qaup-admin -am clean package -DskipTests
#测试本地
java "-Dfile.encoding=GBK" -jar "qaup-admin\target\qaup-admin.jar" --spring.profiles.active=dev,druid

有:系统里已经有“航空器滑行路由”能力,并会推送给前端

• 路由来源:通过外部“机场滑行/路径规划”接口获取DataCollectorDao#getArrivalRoute() / getDepartureRoute(),调用 /runwayPathPlanningController/... 返回 taxiway 路由 GeoJSON。 • 触发方式:当前主要是收到航班进/出港通知ARR/AXOT后触发查询不是靠“进入范围”/围栏触发。 • AdxpFlightServiceWebSocketClient 解析到 ARR/AXOT 后会调用 DataProcessingService.ARR()/AXOT() 去拉路由并处理。 • 推送前端:发布 AircraftRouteUpdateEvent由 AircraftRouteUpdateEventListener 通过 WebSocket 广播,消息 type = "aircraftRouteUpdate",带 routeCodes + routeGeometry(WKT) 等字段。 • 落库RoutePersistenceService 会把路由保存到 transport_routes并写 object_route_assignment 关联航班号。

docker exec -it 3ba259ca788a sh -lc "curl -s http://localhost:8086/api/adxp/messages | head" docker exec -it redis redis-cli HGET flight:CA1234 actualPushback docker exec -it redis redis-cli HGET flight:CA1234 pushbackTimeMs

docker exec -it qaup-app sh -lc ' echo "ADXP=$ADXP_HOST:$ADXP_PORT"; curl -sv "http://$ADXP_HOST:$ADXP_PORT/actuator/health" 2>&1 | head -n 20; echo "----"; curl -sv "http://$ADXP_HOST:$ADXP_PORT/api/adxp/status" 2>&1 | head -n 40; echo "----"; curl -sv "http://$ADXP_HOST:$ADXP_PORT/api/adxp/messages" 2>&1 | head -n 60; '

docker logs qaup-app | grep -n "ADXP" | tail -n 200

docker logs qaup-app | grep -n "flight-notifications" | tail -n 200

确定adapter没问题

tail -n 20000 /home/project_20250804/qaup/adxp-adapter/logs/adapter-logs.log | grep -E "事件的类型是|ADXP_NAOMS_O_CDM_AXOT" | tail -n 200

docker logs qaup-app | grep -E "通过WebSocket接收到|AXOT|BizKey|ActualPushback" | tail -n 200

docker exec -it qaup-app sh -lc ' while true; do r=$(curl -s "http://$ADXP_HOST:$ADXP_PORT/api/adxp/messages"); echo "$r" | grep -q "ADXP_NAOMS_O_CDM_AXOT" && echo "FOUND AXOT" && echo "$r" && break; echo "$(date +%T) no-axot"; sleep 1; done '

docker exec -it qaup-app sh -lc 'grep -nE "已连接到ADXP适配器WebSocket服务|正在连接到ADXP适配器WebSocket服务|数据中台航班 SDK 配置不完整|接收到 [0-9]+ 条航班通知|通过WebSocket接收到|新增航班通知缓存|合并航班通知缓存|数据无效|未知的服务代码|解析消息失败" /logs/sys-info.log /logs/sys-error.log 2>/dev/null | tail -n 200'

tail -n 200000 /home/project_20250804/qaup/adxp-adapter/logs/adapter-logs.log
| grep -E "事件的类型是ADXP_NAOMS_O_(CDM_AXOT|DYN_ARR|CDM_RUNWAY|DYN_DFIE|DYN_DFDE|DYN_TISFLIGHT|DYN_CRAFTSEAT)"
| tail -n 200

tail -n 200000 /home/project_20250804/qaup/adxp-adapter/logs/adapter-logs.log
| grep -E "ERROR|异常|断开|close|重连|reconnect|失败|fail|timeout"
| tail -n 200

docker exec -it qaup-app sh -lc 'grep -nE "连接到ADXP适配器WebSocket服务|已连接到ADXP适配器WebSocket服务|数据中台航班 SDK 配置不完整|接收到 .* 条航班通知|通过WebSocket接收到 .* 条航班进出港通知|数据中台航班 SDK 未启用|未获取到航班进出港通知数据|航班进出港通知数据无效" /logs/sys-info.log /logs/sys-error.log 2>/dev/null | tail -n 200'

docker exec -it qaup-app sh -lc 'grep -nE "接收到 [0-9]+ 条航班通知|通过WebSocket接收到|新增航班通知缓存|合并航班通知缓存|发布航班进出港通知WebSocket事件" /logs/sys-info.log /logs/sys-error.log 2>/dev/null | tail -n 200'

(() => {
  const url = "ws://10.64.58.228:8080/collision";
  const ws = new WebSocket(url);
  window.__qaupWs = ws;
  ws.onopen = () => console.log("open", url);
  ws.onerror = (e) => console.log("error", e);
  ws.onclose = (e) => console.log("close", e.code, e.reason);
  ws.onmessage = (e) => {
    const s = typeof e.data === "string" ? e.data : "";
    if (s.includes('"FLIGHT_NOTIFICATION"') || s.includes('"aircraftRouteUpdate"')) {
      console.log("MATCH", s);
    }
  };
})();

docker exec -it qaup-app sh -lc 'grep -nE "航班通知触发路由查询|成功获取航班路由参数|查询进港路由|查询出港路由|成功获取.*路由数据|发布航空器路由更新事件|发布航空器路由更新事件失败|航空器路由更新事件已通过WebSocket推送|未能获取有效的航班路由参数|未获取到路由数据" /logs/sys-info.log /logs/sys-error.log 2>/dev/null | tail -n 300'

docker exec -it qaup-app sh -lc 'grep -nE "CZ3519|航班通知触发路由查询|成功获取航班路由参数|未能获取有效的航班路由参数|查询进港路由|查询出港路由|成功获取.*路由数据|未获取到路由数据|发布航空器路由更新事件|发布航空器路由更新事件失败|航空器路由更新事件已通过WebSocket推送" /logs/sys-info.log /logs/sys-error.log 2>/dev/null | tail -n 400'

docker exec -it qaup-app sh -lc 'grep -nE "CZ3519|未能获取有效的航班路由参数|成功获取航班路由参数|查询进港路由|查询出港路由|成功获取.*路由数据|未获取到路由数据|发布航空器路由更新事件|发布航空器路由更新事件失败|航空器路由更新事件已通过WebSocket推送|航班路由已获取过" /logs/sys-info.log /logs/sys-error.log 2>/dev/null | tail -n 400'

docker exec -it qaup-app sh -lc 'grep -nE "成功获取航班路由参数|未能获取有效的航班路由参数|查询进港路由|查询出港路由|成功获取.*路由数据|发布航空器路由更新事件|航空器路由更新事件已通过WebSocket推送" /logs/sys-info.log /logs/sys-error.log 2>/dev/null | tail -n 300' docker logs -f qaup-app | grep "路由"

docker exec -it qaup-app sh -lc '
raw="QW9797-D-20260206204000";
norm="${raw%%-*}";
echo "raw=$raw norm=$norm";

grep -nE "航班通知触发路由查询|路由Redis参数未齐全|路由接口返回为空|获取(进港|出港)路由数据请求失败|成功获取(进港|出港)路由数据|路由查询与下发成功|发布航空器路由更新事件(失败)?|航空器路由更新事件已通过WebSocket推送|开始保存航空器路由到数据库|成功保存航空器路由到数据库|保存航空器路由到数据库失败|航班路由已获取过" \
  /logs/sys-info.log /logs/sys-error.log 2>/dev/null \
| grep -E "(${raw}|${norm})" \
| tail -n 300
'



docker exec -it qaup-app sh -lc '
# 1) 找到启动命令里用的 jar常见路径仅供示例实际以 ps 输出为准)
ps -ef | grep java | grep -v grep

# 2) 把上面 java 命令里的 jar 路径复制出来替换 JAR=...
JAR=/app.jar

# 3) 在 jar 里搜索“缺少跑道”这句旧文案(如果还能搜到,基本就是旧包)
grep -a "缺少跑道" "$JAR" | head -n 5 || true

# 4) 在 jar 里搜索我改后的新文案(例如 缺少outRunway / 缺少inRunway
grep -a "缺少outRunway" "$JAR" | head -n 5 || true
grep -a "缺少inRunway" "$JAR" | head -n 5 || true
'
docker exec -it qaup-app sh -lc 'sha256sum /app.jar'
docker exec -it qaup-app rm /app.jar
docker cp qaup-app.jar qaup-app:/app.jar
docker restart qaup-app
curl -s -X POST http://10.64.58.228:8086/api/adxp/reconnect
docker logs -f qaup-app | grep "路由"

docker logs -f qaup-app | grep -E "航班通知触发路由查询|tryQueryAndPublishRouteFromRedis|路由Redis参数未齐全|新增待重试路由查询|路由重试失败|路由查询与下发成功|发布航空器路由更新事件|处理航空器路由更新事件|aircraftRouteUpdate"

docker exec -it qaup-app sh -lc 'javap -classpath /app.jar com.qaup.collision.datacollector.dao.DataCollectorDao | grep -n parseAircraftRouteBody || echo NO_parseAircraftRouteBody' docker exec -it qaup-app sh -lc 'javap -classpath /app.jar -private com.qaup.collision.datacollector.service.AuthService | grep -n tokenCache || echo NO_tokenCache'



root@root:/home/project_20250804/qaup# TOKEN=$(curl -sS -X POST "http://10.32.38.3:8099/login?username=dianxin&password=dianxin@123" \
  | sed -n 's/.*"data"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')

# OUT只传 outRunway + startSeat
curl -sS -D - -H "Authorization: $TOKEN" \
"http://10.32.38.3:8099/runwayPathPlanningController/findDepTaxiwayByRunwayAndContactCrossAndSeat?outRunway=34&startSeat=108" \
| head -n 120
HTTP/1.1 400
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 06 Feb 2026 13:11:15 GMT
Connection: close

root@root:/home/project_20250804/qaup# TOKEN=$(curl -sS -X POST "http://10.32.38.3:8099/login?username=dianxin&password=dianxin@123" \url -sS -X POST "http://10.32.38.3:8099/login?username=dianxin&password=dianxin@123" \
  | sed -n 's/.*"data"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')

# IN只传 inRunway + contactCross + seat
curl -sS -D - -H "Authorization: $TOKEN" \
"http://10.32.38.3:8099/runwayPathPlanningController/findArrTaxiwayByRunwayAndContactCrossAndSeat?inRunway=35&contactCross=F1&seat=138" \
| head -n 120
HTTP/1.1 400
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 06 Feb 2026 13:12:02 GMT
Connection: close

{"status":400,"msg":"Required String parameter 'outRunway' is not present","data":null}root@root:/home/project_20250804/qaup#




TOKEN=$(curl -sS -X POST "http://10.32.38.3:8099/login?username=dianxin&password=dianxin@123" \
  | sed -n 's/.*"data"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')

# AinRunway 为空(会空体)
curl -sS -i -H "Authorization: $TOKEN" \
"http://10.32.38.3:8099/runwayPathPlanningController/findDepTaxiwayByRunwayAndContactCrossAndSeat?inRunway=&outRunway=34&startSeat=165"

# BinRunway 有值(应返回 JSON
curl -sS -i -H "Authorization: $TOKEN" \
"http://10.32.38.3:8099/runwayPathPlanningController/findDepTaxiwayByRunwayAndContactCrossAndSeat?inRunway=35&outRunway=34&startSeat=165"


root@root:~# TOKEN=$(curl -sS -X POST "http://10.32.38.3:8099/login?username=dianxin&password=dianxin@123" \
  | sed -n 's/.*"data"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')
echo "TOKEN=$TOKEN"
TOKEN=Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NzA0NzAzNzksInVzZXJuYW1lIjoiZGlhbnhpbiJ9.28AlOc_FIOTlq-gQyCIZccvJ77SIj9SpZTwft8_QO3M
root@root:~# curl -sS -i -H "Authorization: $TOKEN" \
"http://10.32.38.3:8099/runwayPathPlanningController/findDepTaxiwayByRunwayAndContactCrossAndSeat?inRunway=&outRunway=34&startSeat=165"
HTTP/1.1 200
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 0
Date: Fri, 06 Feb 2026 13:19:53 GMT

root@root:~# curl -sS -i -H "Authorization: $TOKEN" \
"http://10.32.38.3:8099/runwayPathPlanningController/findDepTaxiwayByRunwayAndContactCrossAndSeat?inRunway=35&outRunway=34&startSeat=165"
HTTP/1.1 200
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 06 Feb 2026 13:20:07 GMT

{"type":"OUT","status":"COMPLETE","codes":"165,F6,E,K1","geometry":null,"geoPath":{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050725127929156E7,4025016.291037335],[4.050719290471537E7,4025199.20219628],[4.050719270874638E7,4025199.816246393]]},"properties":{"code":"E"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050748116962414E7,4025469.703529501],[4.05074979933054E7,4025488.192558861],[4.05075125872243E7,4025504.2311054054]]},"properties":{"code":"F6"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.05074246385629E7,4025407.576552962],[4.050743271111251E7,4025416.448190767],[4.050745290306342E7,4025438.638909177]]},"properties":{"code":"F6"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050735203651394E7,4025327.78774847],[4.050735208167705E7,4025327.842539575],[4.050737617807948E7,4025354.319047242],[4.050739636994468E7,4025376.509671472]]},"properties":{"code":"F6"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050721884982213E7,4025249.470063929],[4.050724229779302E7,4025256.953294908],[4.050725675204703E7,4025262.271443918],[4.050726276604679E7,4025264.484172908],[4.050728250037725E7,4025273.770424166],[4.050728527683149E7,4025275.386363579]]},"properties":{"code":"F6"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050748763844896E7,4025497.614737691],[4.050748562772207E7,4025499.29000884],[4.050748347863713E7,4025500.783658592],[4.050748120755E7,4025502.084319383],[4.050747883174503E7,4025503.182092399],[4.050747636930351E7,4025504.068622925],[4.050747384575138E7,4025504.7787715]]},"properties":{"code":"165"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050755341493501E7,4025437.762839396],[4.050755267530195E7,4025438.435852589],[4.050755045640565E7,4025440.454889537],[4.050752018227805E7,4025468.002180588]]},"properties":{"code":"165"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050721884982213E7,4025249.470063929],[4.050721557490152E7,4025248.265123449],[4.050721241746041E7,4025246.779339884],[4.050720940152883E7,4025245.024020945],[4.050720655005983E7,4025243.012525668],[4.050720388475481E7,4025240.760162748],[4.050720142589837E7,4025238.284074025],[4.050719919220388E7,4025235.603104031],[4.050719720067109E7,4025232.737656565],[4.050719546645679E7,4025229.709539413],[4.05071940027594E7,4025226.541798375],[4.050719282071851E7,4025223.258541874],[4.05071919293302E7,4025219.884757472],[4.050719133537845E7,4025216.446121709],[4.05071910433836E7,4025212.968804676],[4.050719105556791E7,4025209.479270857],[4.050719137183864E7,4025206.004077711],[4.050719198978879E7,4025202.569673557],[4.050719270874638E7,4025199.816246393]]},"properties":{"code":""}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050805943409429E7,4024261.77885819],[4.050860721469813E7,4024436.598641041]]},"properties":{"code":"K1"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050753083878539E7,4024140.318065187],[4.050753219434276E7,4024136.633778098],[4.050753386584848E7,4024133.081655501],[4.05075358405814E7,4024129.688731194],[4.050753810351257E7,4024126.48082738],[4.050754063741975E7,4024123.482358144],[4.050754342301836E7,4024120.716143647],[4.050754643910833E7,4024118.203236453],[4.050754966273537E7,4024115.962761301],[4.050755306936574E7,4024114.011769562],[4.050755663307294E7,4024112.365109459],[4.0507560326735E7,4024111.035313071],[4.050756412224091E7,4024110.032500952],[4.050756799070459E7,4024109.364305105],[4.05075719026847E7,4024109.035810907],[4.050757582840868E7,4024109.049518396],[4.050757973799943E7,4024109.405323249],[4.050758360170261E7,4024110.100517578],[4.050758739011307E7,4024111.129810532]]},"properties":{"code":""}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050768694328369E7,4024142.90140585],[4.050777363551838E7,4024170.568536703]]},"properties":{"code":"K1"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050797274185959E7,4024234.111727338],[4.050801598298332E7,4024247.911784893]]},"properties":{"code":"K1"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050860721469813E7,4024436.598641041],[4.050869390693281E7,4024464.265771887]]},"properties":{"code":"K1"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050885919377588E7,4024517.015741149],[4.050894588601057E7,4024544.682872001]]},"properties":{"code":"K1"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050905115515271E7,4024578.27867375],[4.050905544213134E7,4024579.646828572]]},"properties":{"code":"K1"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050914213436604E7,4024607.313959424],[4.050914523051728E7,4024608.302071239]]},"properties":{"code":"K1"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050735203651394E7,4025327.78774847],[4.050735119763997E7,4025326.86583577]]},"properties":{"code":"F6"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050737806158195E7,4024619.030839834],[4.050727560203166E7,4024940.078054441]]},"properties":{"code":"E"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050753083878539E7,4024140.318065187],[4.050740238431432E7,4024542.817881098]]},"properties":{"code":"E"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050745290306342E7,4025438.638909177],[4.050746097762904E7,4025447.512762542],[4.050748116962414E7,4025469.703529501]]},"properties":{"code":"F6"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050739636994468E7,4025376.509671472],[4.050740444459597E7,4025385.383618986],[4.05074246385629E7,4025407.576552962]]},"properties":{"code":"F6"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050728527683149E7,4025275.386363579],[4.050728619714092E7,4025275.921997931],[4.050729923445571E7,4025283.567170995]]},"properties":{"code":"F6"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050758739011307E7,4024111.129810532],[4.050758786644404E7,4024111.281827736],[4.050768694328369E7,4024142.90140585]]},"properties":{"code":"K1"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050777363551838E7,4024170.568536703],[4.050797274185959E7,4024234.111727338]]},"properties":{"code":"K1"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050801598298332E7,4024247.911784893],[4.050805943409429E7,4024261.77885819]]},"properties":{"code":"K1"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.05075125872243E7,4025504.2311054054],[4.050751503282968E7,4025506.918797179],[4.050751814755022E7,4025510.417400318]]},"properties":{"code":"F6"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050923930588185E7,4024638.325468728],[4.050922363459327E7,4024633.324102767],[4.050919167278586E7,4024623.123748479],[4.050914832666852E7,4024609.290183055]]},"properties":{"code":"K1"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050751814755022E7,4025510.417400318],[4.05075165083987E7,4025508.370804927],[4.05075156594737E7,4025507.149358111],[4.050751501474968E7,4025506.221718934],[4.050751371408955E7,4025503.950630728],[4.050751261631713E7,4025501.574824661],[4.050751172978711E7,4025499.112382051],[4.050751106124654E7,4025496.582043574],[4.050751061578342E7,4025494.003066634],[4.050751039678796E7,4025491.395078802],[4.050751040592688E7,4025488.77792844],[4.050751064313062E7,4025486.171533643],[4.05075111065939E7,4025483.59573065],[4.050751179278951E7,4025481.070122875],[4.050751269649507E7,4025478.61393172],[4.050751381083285E7,4025476.245850282],[4.050751512732205E7,4025473.983901091],[4.05075166359434E7,4025471.845298945],[4.050751832521537E7,4025469.846319899],[4.050752018227805E7,4025468.002180588]]},"properties":{"code":""}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050869390693281E7,4024464.265771887],[4.050885919377588E7,4024517.015741149]]},"properties":{"code":"K1"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050894588601057E7,4024544.682872001],[4.050905115515271E7,4024578.27867375]]},"properties":{"code":"K1"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050905544213134E7,4024579.646828572],[4.050909878824869E7,4024593.480393996],[4.050914213436604E7,4024607.313959424]]},"properties":{"code":"K1"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050914523051728E7,4024608.302071239],[4.050914832666852E7,4024609.290183055]]},"properties":{"code":"K1"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050735119763997E7,4025326.86583577],[4.050733582978723E7,4025311.39028127],[4.05073201119621E7,4025298.107656442],[4.05073191716309E7,4025297.313013016],[4.050730241032708E7,4025285.489183442],[4.050730238791439E7,4025285.465824347],[4.05073022503873E7,4025285.322489934],[4.050730181388554E7,4025285.068439142],[4.050730132505871E7,4025284.783934349],[4.050729923445571E7,4025283.567170995]]},"properties":{"code":"F6"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.050727560203166E7,4024940.078054441],[4.050726344066161E7,4024978.184545887],[4.050725127929156E7,4025016.291037335]]},"properties":{"code":"E"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[4.docker exec -it qaup-redis redis-cli --raw HMGET flight:GS6512 inRunway outRunway seat startSeatde":"E"}}]}}root@root:~# docker exec -it qaup-redis redis-cli --raw HMGET flight:GS6512 inRunway outRunway seat startSeat

"34"
"165"

root@root:~# docker exec -it qaup-redis redis-cli --raw HGETALL flight:GS6512
flightNumber
"GS6512"
type
"D"
time
"20260206215500"
seat
"165"
outRunway
"34"
TOKEN=$(curl -sS -X POST "http://10.32.38.3:8099/login?username=dianxin&password=dianxin@123" \
  | sed -n 's/.*"data"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')

curl -sS -D - -H "Authorization: $TOKEN" \
"http://10.32.38.3:8099/runwayPathPlanningController/findArrTaxiwayByRunwayAndContactCrossAndSeat?inRunway=35&outRunway=34&contactCross=F1&seat=138" \
| head -n 120

curl -sS -i -H "Authorization: $TOKEN" \
"http://10.32.38.3:8099/runwayPathPlanningController/findDepTaxiwayByRunwayAndContactCrossAndSeat?inRunway=35&outRunway=35&startSeat=165"

#重启流程
root@root:~# cd /home/project_20250804/qaup/
root@root:/home/project_20250804/qaup# ls
adxp-adapter  Dockerfile  mock.sh                       qaup-app-bak0120.jar  qaup-app.jar_back20251121  qaup-app.jar_back20260124   qaup-app.jar_bak20251021  qaup-app.jar_bak20251211  tools
app.env       emqx        mock_traffic_light_client.py  qaup-app.jar          qaup-app.jar_back20260122  qaup-app.jar_back202601241  qaup-app.jar_bak20251022  qaup-app.jar_bak20260205  unhumanVechile
build.sh      logs        qaup-admin.jar                qaup-app.jar0         qaup-app.jar_back20260123  qaup-app.jar_back202601242  qaup-app.jar_bak20251113  qaup-app.jar_bal20250925  websocket
root@root:/home/project_20250804/qaup# rm qaup-app.jar
root@root:/home/project_20250804/qaup# mv qaup-admin.jar qaup-app.jar
root@root:/home/project_20250804/qaup# ls
adxp-adapter  Dockerfile  mock.sh                       qaup-app.jar               qaup-app.jar_back20260122  qaup-app.jar_back202601241  qaup-app.jar_bak20251022  qaup-app.jar_bak20260205  unhumanVechile
app.env       emqx        mock_traffic_light_client.py  qaup-app.jar0              qaup-app.jar_back20260123  qaup-app.jar_back202601242  qaup-app.jar_bak20251113  qaup-app.jar_bal20250925  websocket
build.sh      logs        qaup-app-bak0120.jar          qaup-app.jar_back20251121  qaup-app.jar_back20260124  qaup-app.jar_bak20251021    qaup-app.jar_bak20251211  tools
root@root:/home/project_20250804/qaup# docker exec -it qaup-app sh -lc 'sha256sum /app.jar'
0cd2cc99809e04ca618a0f179bd06fd258876a0d401c9630619da20d8ce3d4c1  /app.jar
root@root:/home/project_20250804/qaup# sha256sum qaup-app.jar
0856bcf6da8d231b1035e3105d86f690dd0ec61ead921bee6d6ad5595f1cd7e7  qaup-app.jar
root@root:/home/project_20250804/qaup# docker exec -it qaup-app rm /app.jar
root@root:/home/project_20250804/qaup# docker cp qaup-app.jar qaup-app:/app.jar
root@root:/home/project_20250804/qaup# docker restart qaup-app
qaup-app
root@root:/home/project_20250804/qaup# curl -s -X POST http://10.64.58.228:8086/api/adxp/reconnect
{"connected":true,"success":true,"message":"重连成功"}root@root:/home/project_20250804/qaup#
root@root:/home/project_20250804/qaup#
root@root:/home/project_20250804/qaup#

docker exec -i qaup-redis redis-cli HMGET "flightBiz:" inRunway outRunway inRunwayTs outRunwayTs

for F in MU9692; do BIZ=$(docker exec -i "qaup-redis" redis-cli HGET "flight:$F" activeBizKey | tr -d '\r' | sed 's/^"//;s/"$//') FR=$(docker exec -i "qaup-redis" redis-cli HMGET "flight:$F" startSeat seat | tr '\n' ' ') BR="" if [ -n "$BIZ" ]; then BR=$(docker exec -i "qaup-redis" redis-cli HMGET "flightBiz:$BIZ" startSeat seat | tr '\n' ' ') fi echo "$F | biz=$BIZ | flight=[$FR] | biz=[$BR]" done

grep -oE 'TISFLIGHT' ./adxp-adapter/logs/adapter-logs.log | sort | uniq -c | sort -nr

TOKEN=$(echo "$LOGIN_RESP" | sed -n 's/.*"data":"\([^"]*\)".*/\1/p')
# B. 连续观察 QDA9846无 jq 版本)
for i in $(seq 1 20); do
  TS=$(date '+%H:%M:%S')
  RESP=$(curl -sS -H "Authorization: $TOKEN" "http://10.32.38.3:8090/openApi/getCurrentFlightPositions")
  LINE=$(echo "$RESP" | tr '{' '\n' | grep '"flightNo":"FGCX253"' | head -n1)
  if [ -z "$LINE" ]; then
    echo "[$TS] NO_HIT"
  else
    echo "[$TS] $LINE"
  fi
  sleep 1
done

root@root:/home/project_20250804/qaup# for i in $(seq 1 20); do   TS=$(date '+%H:%M:%S');   RESP=$(curl -sS -H "Authorization: $TOKEN" "http://10.32.38.3:8090/openApi/getCurrentFlightPositions");   LINE=$(echo "$RESP" | tr '{' '\n' | grep '"flightNo":"FGCX253"' | head -n1);   if [ -z "$LINE" ]; then     echo "[$TS] NO_HIT";   else     echo "[$TS] $LINE";   fi;   sleep 1; done
[05:59:44] "flightNo":"FGCX253","longitude":120.09361,"latitude":36.35046,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[05:59:45] "flightNo":"FGCX253","longitude":120.09361,"latitude":36.35046,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[05:59:46] "flightNo":"FGCX253","longitude":120.09361,"latitude":36.35046,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[05:59:47] "flightNo":"FGCX253","longitude":120.09361,"latitude":36.35044,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[05:59:48] "flightNo":"FGCX253","longitude":120.09361,"latitude":36.35044,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[05:59:49] "flightNo":"FGCX253","longitude":120.09361,"latitude":36.35044,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[05:59:51] "flightNo":"FGCX253","longitude":120.09361,"latitude":36.35044,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[05:59:52] "flightNo":"FGCX253","longitude":120.09361,"latitude":36.35044,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[05:59:53] "flightNo":"FGCX253","longitude":120.09361,"latitude":36.35044,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[05:59:54] "flightNo":"FGCX253","longitude":120.09361,"latitude":36.35044,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[05:59:55] "flightNo":"FGCX253","longitude":120.09361,"latitude":36.35045,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[05:59:56] "flightNo":"FGCX253","longitude":120.09361,"latitude":36.35045,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[05:59:57] "flightNo":"FGCX253","longitude":120.09361,"latitude":36.35045,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[05:59:58] "flightNo":"FGCX253","longitude":120.09361,"latitude":36.35045,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[05:59:59] "flightNo":"FGCX253","longitude":120.09372,"latitude":36.35048,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[06:00:00] "flightNo":"FGCX253","longitude":120.09372,"latitude":36.35048,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[06:00:01] "flightNo":"FGCX253","longitude":120.09372,"latitude":36.35048,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[06:00:02] "flightNo":"FGCX253","longitude":120.09396,"latitude":36.35043,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[06:00:03] "flightNo":"FGCX253","longitude":120.094,"latitude":36.35036,"time":1770760653475,"altitude":0.0,"trackNumber":0},
[06:00:04] "flightNo":"FGCX253","longitude":120.09401,"latitude":36.3503,"time":1770760653475,"altitude":0.0,"trackNumber":0},


18:19:48.319 [ScheduledTask-4] INFO c.q.c.d.s.DataProcessingService - [tryQueryAndPublishRouteFromRedis,1240] - 路由接口返回为空,稍后重试: flightNo=CA4293, routeType=IN, source=RETRY(FLIGHT_NOTIFICATION), inRunway=17, outRunway=17, contactCross=K1, seat=150, startSeat=null

curl -sS -D - -H "Authorization: $TOKEN"
"http://10.32.38.3:8099/runwayPathPlanningController/findArrTaxiwayByRunwayAndContactCrossAndSeat?inRunway=35&outRunway=35&contactCross=F1&seat=138"
| head -n 120

18:53:52.400 [ScheduledTask-4] WARN c.q.c.d.d.DataCollectorDao - [getArrivalRoute,299] - 获取进港路由数据失败: 返回体为空或无法解析, inRunway=17, outRunway=17, contactCross=K1, seat=143, url=http://10.32.38.3:8099/runwayPathPlanningController/findArrTaxiwayByRunwayAndContactCrossAndSeat?inRunway=17&outRunway=17&contactCross=K1&seat=143, bodySummary= 18:53:52.400 [ScheduledTask-4] INFO c.q.c.d.s.DataProcessingService - [tryQueryAndPublishRouteFromRedis,1240] - 路由接口返回为空,稍后重试: flightNo=SC4772, routeType=IN, source=RETRY(FLIGHT_NOTIFICATION), inRunway=17, outRunway=17, contactCross=K1, seat=143, startSeat=null ^C root@root:/home/project_20250804/qaup# curl -sS -D - -H "Authorization: $TOKEN" "http://10.32.38.3:8099/runwayPathPlanningController/findArrTaxiwayByRunwayAndContactCrossAndSeat?inRunway=17&outRunway=17&contactCross=K1&seat=110" | head -n 120 HTTP/1.1 200 X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Content-Length: 0 Date: Sat, 28 Feb 2026 10:56:18 GMT

root@root:/home/project_20250804/qaup# echo $TOKEN Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NzIzNjA0NTYsInVzZXJuYW1lIjoiZGlhbnhpbiJ9.kTPxkoFR64eJT7eZOZWSN_ed-qvWbMFqr2WlGofBE60 root@root:/home/project_20250804/qaup#

docker logs --since 5m qaup-app 2>&1 | grep '处理航空器数据并更新缓存' | grep -E '([A-Z]{1,3})?4963\b'