EVA Web 與 Android 協定
===
## 串接格式
```
mobile.postMessage(param)
```
### api
request
```
{
tag: 'api',
rqmethod:...,
rqurl:...,
rqcontent:{} or {requestData: {...}}
}
```
response
```
{
returnCode:...,
returnMsg:...,
returnData:...
}
```
### geolocation
request
```
{tag: 'geolocation'}
```
response
```
{
latitude:...,
longitude:...
}
```
### getauthtoken
request
```
{tag: 'getauthtoken'}
```
response (token string)
```
eyJUeXAiOiJKV1QiLCJBbGciOiJIUzI1NiJ9.eyJKdGkiOiJiOGQ2NzI0Zi0yZTMxLTQwYTctOWZmNy0yMzYxZTg4YTQ4NGEiLCJFeHAiOiIyMDE5LzA4LzE1IDE0OjA1OjM1IiwiVWlkIjoiIn0=.tguj59TlFe/34P81OMfKaXb4pUpNUXVYwoFUD3mfRw0=
```
### getdefaultuser
request
```
{tag: 'getdefaultuser'}
```
response
```
[{
FUserID:...,
LoginID:...,
LoginDate:...
}]
```
### correcttime
request
```
{tag: 'correcttime'}
```
不需 response,但 APP 會跳系統校時視窗
### versionupdate
request
```
{tag: 'versionupdate'}
```
不需 response,但 APP 會跳版本版新後重啟頁面
### syncdata
request
```
{
tag: 'syncdata',
page: ...
* }
```
response
```
{
returnCode:...,
returnMsg:...,
returnData:...
}
```
### uploadstatus
request
```
{
tag: 'uploadstatus'
}
```
response (未上傳的ResultSheetId)
```
{
resultSheetID:['xxx','xxx']
}
```
## 串接流程整理
### 3.1.0 eCheck System Login
#### 畫面初始
##### 取得場站資料 -> 取得登入快選使用者 -> 取得目前經緯度
> api (rqurl:'/Login/GetEva001')
> -> [getdefaultuser](#getdefaultuser)
> -> [geolocation](#geolocation)
#### 登入動作
##### 登入 -> 版本更新
> api (rqurl:'/Login/GetEvaLogin')
> -> [versionupdate](#versionupdate)
```
isInWebView && res.versionUpdate === 'Y'
```
##### 登入 -> 資料更新
> api (rqurl:'/Login/GetEvaLogin')
> -> [syncdata (page:'login')](#syncdata)
```
isInWebView && res.dataUpdate === 'Y'
```
### 3.2.0 Flight Schedule
#### 載入 Flight Schedule 頁面資料
###### 取得表單型態 -> 取得飛機班表對應的Sheets
> api (rqurl:'/GetOther/GetSheetType')
> -> api (rqurl:'/GetResult/GetStartChecking')
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/GetOther/GetSheetType')| TableName:SheetType |
request
```
{}
```
response
```
{
returnCode: …,
returnMsg: …,
returnData:
[{
sheetTypeID: …,
description: …,
status: …
}]
}
```
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/GetResult/GetStartChecking')| TableName:XXX、XXX|
request
```
{
"requestData": {
"station": "...",
"manual": "S"
}
}
```
response
```
{
"returnCode": "...",
"returnMsg": "...",
"sequence": "...",
"returnData": [
{
"flightKey": "777",
"actDate": "Jun/27/2019 00:00:00",
"carrierCode": "BR",
"flightNo": "3456",
"aircraftNo": "B18340",
"departure": "TPE",
"arrival": "TPE",
"serialNo": "1",
"companyID": "EVA",
"fleetID": "777",
"foreign": "H",
"fisAircraftType": "A32",
"serviceType": "P",
"licenseAircraftTypeID": "A32",
"etd": "Aug/20/2019 02:55:58",
"etdLocal": "Aug/20/2019 02:55:58",
"resultSheet": [
{
"resultSheetID": "RBR777157190611183060222",
"sheetTypeID": "3",
"manual": "S",
"checkSheetID": "SEVA77712193005083047039",
"sheetVersion": 2,
"sheetStatus": "0",
"accepted": "Y",
"accepter": "893652",
"acceptedTimeZone": null,
"acceptedDatetimeUTC": "",
"startDateTime": "Jul/01/2019 17:32:30",
"endDataTime": "Jul/01/2019 17:32:37"
},
{
"resultSheetID": "RBR777157190611183060201",
"sheetTypeID": "2",
"manual": "S",
"checkSheetID": "SEVA77712193005083047039",
"sheetVersion": 3,
"sheetStatus": "3",
"accepted": "Y",
"accepter": null,
"acceptedTimeZone": -480,
"acceptedDatetimeUTC": "Jan/01/0001 00:00:00",
"startDateTime": "Jan/01/0001 00:00:00",
"endDataTime": "Jan/01/0001 00:00:00"
}
]
}
]
}
```
#### 同步頁面資料
###### 上傳結果表單檔案資料 -> 取得結果表單檔案資料 -> [載入 Flight Schedule 頁面資料 ](#%E8%BC%89%E5%85%A5-Flight-Schedule-%E9%A0%81%E9%9D%A2%E8%B3%87%E6%96%99)
> api (rqurl:'/Put/PutResultSheet')
> -> api (rqurl:'/GetResult/GetResultSheet')
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/GetOther/PutResultSheet')| TableName:XXX、XXX|
request
```
{}
```
response
```
{
returnCode: …,
returnMsg: …
}
```
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/GetResult/GetResultSheet')| TableName:XXX、XXX|
request
```
{
"requestData": {
"station": "TPE",
// 目前航班所有的 ResultSheetID List
"currectResultSheetID": ['XXX','XXX'],
// 需要同步的 ResultSheetID List
"syncResultSheetID": ['XXX', 'XXX']
}
}
```
response
```
{
"returnCode": "...",
"returnMsg": "...",
"sequence": "...",
"returnData": []
}
```
### 3.3.0 Manual report
#### 載入 Manual report 頁面資料
###### 取得表單型態 -> 取得 Manual Report
> api (rqurl:'/GetOther/GetSheetType')
> -> api (rqurl:'/GetResult/GetMauualreport')
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/GetOther/GetSheetType')| TableName:SheetType |
request
```
{}
```
response
```
{
returnCode: …,
returnMsg: …,
returnData:
[{
sheetTypeID: …,
description: …,
status: …
}]
}
```
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/GetOther/GetMauualreport')| TableName:XXX、XXX|
request
```
{
"requestData": {
"station": "...",
"manual": "M"
}
}
```
response
```
{
"returnCode": "...",
"returnMsg": "...",
"sequence": "...",
"returnData": [
{
"resultSheetID": "20190731AB1234B16784_TPENRT3M",
"actDate": "Aug/02/2019 00:00:00",
"carrierCode": "AB",
"flightNo": "234",
"aircraftNo": "B16784",
"departure": "TPE",
"arrival": "NRT",
"serialNo": "1",
"sheetTypeID": "3",
"manual": "M",
"fisAircraftType": "77M",
"serviceType": "P",
"checkSheetID": "0",
"licenseAircraftTypeID": "777",
"sheetVersion": 0,
"etd": "Aug/21/2019 01:57:01",
"etdLocal": "Aug/21/2019 01:57:01",
"sheetStatus": "0",
"accepted": "N",
"accepter": null,
"acceptedTimeZone": -480,
"acceptedDatetimeLocal": null,
"acceptedDatetimeUTC": "",
"startDateTime": "",
"endDataTime": ""
}
]
}
```
#### 同步頁面資料
###### 上傳結果表單檔案資料 -> 取得結果表單檔案資料 -> [載入 Manual report 頁面資料 ](#%E8%BC%89%E5%85%A5-Manual-report-%E9%A0%81%E9%9D%A2%E8%B3%87%E6%96%99)
> api (rqurl:'/Put/PutResultSheet')
> -> api (rqurl:'/GetResult/GetResultSheet')
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/GetOther/PutResultSheet')| TableName:XXX、XXX|
request
```
{}
```
response
```
{
returnCode: …,
returnMsg: …
}
```
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/GetResult/GetResultSheet')| TableName:XXX、XXX|
request
```
{
"requestData": {
"station": "TPE",
// 目前航班所有的 ResultSheetID List
"currectResultSheetID": ['XXX','XXX'],
// 需要同步的 ResultSheetID List
"syncResultSheetID": ['XXX', 'XXX']
}
}
```
response
```
{
"returnCode": "...",
"returnMsg": "...",
"sequence": "...",
"returnData": []
}
```
### 3.3.1 Manual report / Empty Sheet
載入頁面資料時及建立資料時,直接呼叫API,不透過APP
導頁至 Manual report 時 要帶 queryParam['inAppReload'] = true
則 回到 Manual report 會先做 同步頁面資料
### 3.4.0 Checked
#### 載入 Checked 頁面資料
###### 取得表單型態 -> 取得上傳表單 -> 取得目前上傳狀態清單
> api (rqurl:'/GetOther/GetSheetType')
> -> api (rqurl:'/GetResult/GetChecked')
> -> [uploadstatus](#uploadstatus)
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/GetOther/GetSheetType')| TableName:SheetType |
request
```
{}
```
response
```
{
returnCode: …,
returnMsg: …,
returnData:
[{
sheetTypeID: …,
description: …,
status: …
}]
}
```
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/GetOther/GetChecked')| TableName:XXX、XXX|
request
```
{
"requestData": {
"station": "..."
}
}
```
response
```
{
"returnCode": "...",
"returnMsg": "...",
"sequence": "...",
"returnData": [
{
"resultSheetID": "20190816BR3333B16782_TPETPE1M",
"flightKey": null,
"actDate": "Aug/16/2019 00:00:00",
"carrierCode": "BR",
"flightNo": "3333",
"aircraftNo": "B16782",
"departure": "TPE",
"arrival": "TPE",
"serialNo": "1",
"sheetTypeID": "1",
"manual": "M",
"fisAircraftType": "77M",
"serviceType": "P",
"checkSheetID": "SEVA777121194916034914790",
"licenseAircraftTypeID": "777",
"sheetVersion": 21,
"etd": "Aug/21/2019 02:59:20",
"etdLocal": "Aug/21/2019 02:59:20",
"sheetStatus": "2",
"accepted": "N",
"accepter": null,
"acceptedTimeZone": -480,
"acceptedDatetimeUTC": "",
"startDateTime": "",
"endDataTime": "",
"employeeID1": null,
"employeeID2": null,
"employeeID3": null,
"modifier": null,
"modifyDateTimeUTC": null
}
]
}
```
#### 上傳 Checked 資料
###### 上傳結果表單檔案資料 -> 取得結果表單檔案資料 -> [載入 Checked 頁面資料 ](#%E8%BC%89%E5%85%A5-Checked-%E9%A0%81%E9%9D%A2%E8%B3%87%E6%96%990)
> api (rqurl:'/Put/PutResultSheet')
> -> api (rqurl:'/GetResult/GetResultSheet')
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/GetOther/PutResultSheet')| TableName:XXX、XXX|
request
```
{}
```
response
```
{
returnCode: …,
returnMsg: …
}
```
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/GetResult/GetResultSheet')| TableName:XXX、XXX|
request
```
{
"requestData": {
"station": "TPE",
// 目前航班所有的 ResultSheetID List
"currectResultSheetID": ['XXX','XXX'],
// 需要同步的 ResultSheetID List
"syncResultSheetID": ['XXX', 'XXX']
}
}
```
response
```
{
"returnCode": "...",
"returnMsg": "...",
"sequence": "...",
"returnData": []
}
```
### 3.5.0 Check Sheet
#### 載入 Check Sheet 頁面資料
###### 取得使用者證照對應檔 -> 取得表單內容
> api (rqurl:'/SyncData/GetSyncData')
> -> api (rqurl:'/GetResult/GetSheetContent')
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/SyncData/GetSyncData')| TableName:UserLicense |
request
```
{
"requestData": {
"tableName": "UserLicense"
}
}
```
response
```
{
"returnCode": "...",
"returnMsg": "...",
"sequence": "...",
"returnData": [
{
"fUserID": "1233",
"licenseAircraftTypeID": "2019",
"licenseCompanyID": "Mitake2"
}
]
}
```
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/GetResult/GetSheetContent')| TableName:XXX |
request
```
{
"requestData": {
"checkSheetID": "XXX",
"resultSheetID": "XXXX"
}
}
```
response (需增加Uploaded欄位)
```
{
"returnCode": "...",
"returnMsg": "...",
"sequence": "...",
"returnData": {
"resultSheetID": "20190816BR3333B16782_TPETPE1M",
"checkSheetID": "SEVA777121194916034914790",
"carrierCode": "BR",
"flightNo": "3333",
"aircraftNo": "B16782",
"departure": "TPE",
"arrival": "TPE",
"serialNo": "1",
"sheetTypeID": "1",
"manual": "M",
"serviceType": "P",
"licenseAircraftTypeID": "777",
"sheetVersion": 21,
"sheetStatus": "2",
"accepted": "N",
"accepter": null,
"acceptedTimeZone": -480,
"startDateTime": "",
"endDataTime": "",
"employeeID1": null,
"employeeID2": null,
"employeeID3": null,
// ↓↓↓ 需增加Uploaded欄位 ↓↓↓
"uploaded": "Y or N",
// ↑↑↑ 需增加Uploaded欄位 ↑↑↑
"category": [
{
"categoryID": "EVA7771191404081415125",
"categoryNameE": "COLD WEATHER CHECK",
"categoryIndex": 3,
"question": [
{
"questionID": "QEVA777121190816143834838",
"questionIndex": 0,
"questionFormat": 0,
"questionJson": "...",
"forCargoPassenger": "A",
"bypass": "N",
"resultQuestion": "123420190816181209578",
"answerJson": "...",
"checkOrPass": "C",
"signerID": "1234",
"signerName": "6666",
"creator": "1234",
"createDateTimeUTC": "Aug/16/2019 10:12:09",
// ↓↓↓ 需增加Uploaded欄位 ↓↓↓
"uploaded": "Y or N"
// ↑↑↑ 需增加Uploaded欄位 ↑↑↑
}
]
}
]
}
}
```
#### 寫入問題資料
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/Put/PutSheetContent')| TableName:XXX |
request
```
{
"requestData": {
"answerJson": "...",
"categoryID": "EVA7771191404081415125",
"categoryIndex": 3,
"categoryNameE": "COLD WEATHER CHECK",
"checkOrPass": "C",
"checkSheetID": "SEVA777121194916034914790",
"createDateTimeUTC": "Aug/21/2019 09:17:14",
"creator": "1234",
"forCargoPassenger": "A",
"questionFormat": 0,
"questionID": "QEVA777121190816143834838",
"questionIndex": 0,
"questionJson": "...",
"resultQuestion": "123420190821171714708",
"resultSheetID": "20190816BR3333B16782_TPETPE1M",
"signerID": "1234",
"signerName": "6666"
}
}
```
response
```
{
"returnCode": "...",
"returnMsg": "...",
"sequence": "...",
"returnData": []
}
```
### 3.6.0 Check Sheet Performed
#### 表單Accept
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/Put/PutAccept')| TableName:XXX |
request
```
{
"requestData": {
resultSheetID: "...",
sheetStatus: '3',
accepted: 'Y',
acceptedTimeZone: "...",
acceptedDatetimeUTC: "...",
startDateTime: "...",
endDataTime: "...",
employeeID1: "...",
employeeID2: "...",
employeeID3: "..."
}
}
```
response
```
{
"returnCode": "...",
"returnMsg": "...",
"sequence": "...",
"returnData": []
}
```
#### 表單 Upload & Reload
###### 上傳結果表單檔案資料 -> 取得單獨Reload結果表單檔案資料 -> [載入 Checked 頁面資料 ](#%E8%BC%89%E5%85%A5-Check-Sheet-%E9%A0%81%E9%9D%A2%E8%B3%87%E6%96%99)
> api (rqurl:'/Put/PutResultSheet')
> -> api (rqurl:'/GetResult/GetReloadOneResultSheet')
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/GetOther/PutResultSheet')| TableName:XXX、XXX|
request
```
{}
```
response
```
{
returnCode: …,
returnMsg: …
}
```
| WEB REQUEST | IN-APP |
| - | - |
| api (rqurl:'/GetResult/GetReloadOneResultSheet')| TableName:XXX|
request
```
{
"requestData": {
"resultSheetID": 'XXX'
}
}
```
response
```
{
"returnCode": "...",
"returnMsg": "...",
"sequence": "...",
"returnData": []
}
```