# DPA002 碼頭 APP 單據查詢
## 功能代碼:DPA002
- 單據總覽
- 單據詳情
## 參考資料
miro: [https://miro.com/app/board/uXjVP0Zs9wQ=/?moveToWidget=3458764542789055117&cot=14](https://miro.com/app/board/uXjVP0Zs9wQ=/?moveToWidget=3458764542789055117&cot=14)
## API 規格
| 編號 | API | Method | 說明 |
| ---- | -------------------------------------------- | ------ | ------------------------------------ |
| 1 | /shuri/api/v1/DPA002/init | GET | 畫面初始 API (包含各個 `optionList`) |
| 2 | /shuri/api/v1/DPA002/query | POST | 查詢單據清單 |
| 3 | /shuri/api/v1/DPA002/query/{reservationCode} | GET | 查詢單據詳情 |
## 1. GET /shuri/api/v1/DPA002/init
> 回傳畫面上呈現所需要的一些 `optionList`, 開發過程有覺得需要但沒列在上面的再提出來。
### Request
`N/A`
### Response
- 碼頭選單 (dockOptionList)
- value: dockNum
- label: customDockName
- 碼頭出入庫類型 (acceptedDockCategoryOptionList)
- value: `"1"` or `"2"`
- label: 入庫 or 出庫
- 單據狀態選單 (dockOrderStatusOptionList)
- value: `"1"` or `"2"` etc.
- label: 已建立 or 倉庫報到 etc.
- 供應商清單 (supplierOptionList)
- value: comNum
- label: comName (dmA010 or coA010 跟 PM 確認)
- 承運商清單 (carrierOptionList)
- value: comNum
- label: comName (dmA010 or coA010 跟 PM 確認)
- 單據類型 (orderTypeOptionList)
- value: `"1"`
- label: 預約單 or 現場單 or 專用碼頭單
## 2. POST /shuri/api/v1/DPA002/query
> 查詢單據清單
詳細查詢規則參考 miro,這邊就不列出來了,如果規則有不清楚的地方在 miro 上留言詢問 PM。
### Request
#### 參數說明
| 參數 | 型態 | 說明 | 範例 |
| -------------------- | ------ | ------------------------------ | ------------ |
| acceptedDockCategory | string | 碼頭出入庫類型 (單選) (非必填) | `"1"` |
| dockNumSet | list | 碼頭 (多選) (非必填) | `1`, `2` |
| dockOrderStatusSet | list | 單據狀態 (多選) (非必填) | `"1"`, `"2"` |
| supplierComNumSet | list | 供應商 (多選) (非必填) | `1`, `2` |
| carrierComNumSet | list | 承運商 (多選) (非必填) | `1`, `2` |
> 上面的 list 是跟前端說他是陣列,後端資料要用 Set 接哦。
#### Request 範例
```json
{
"acceptedDockCategory": "1",
"dockNumSet": [1, 2],
"dockOrderStatusSet": ["1", "2"]
}
```
### Response
#### 參數說明
| 參數 | 型態 | 說明 | 範例 |
| ------------------ | ------ | ------------------------------- | ------------ |
| time | string | 單據時間群組 | `"1"` |
| orders | obj | 單據資訊物件 | `1`, `2` |
| reservationCode | string | 單號 | `"1"`, `"2"` |
| beginAt | string | 單據開始時間 | `1`, `2` |
| endAt | string | 單據結束時間 | `1`, `2` |
| orderUsageCategory | string | 單據出入庫類型 | `1`, `2` |
| orderType | string | 單據類型 (現場 or 預約 or 專用) | `1`, `2` |
| customDockName | string | 碼頭顯示名稱 | `1`, `2` |
| dockOrderStatus | string | 單據狀態 | `1`, `2` |
> 暫定用這個格式回傳,我有在 miro 留 comment 等 PM 確認。
#### Response 範例
```json
{
"result": [
{
"time": "2023-01-05 09:00:00",
"orders": [
{
"reservationCode": "2301030000001",
"beginAt": "09:00",
"endAt": "09:30",
"orderUsageCategory": "1",
"orderType": "1",
"customDockName": "1號碼頭",
"dockOrderStatus": "3"
}
]
},
{
"time": "2023-01-10 09:00:00",
"orders": [
{
"reservationCode": "2301030000001",
"beginAt": "09:00",
"endAt": "09:30",
"orderUsageCategory": "1",
"orderType": "1",
"customDockName": "1號碼頭",
"dockOrderStatus": "3"
}
]
}
],
"status": "ok"
}
```
## 3. GET /shuri/api/v1/DPA002/query/{reservationCode}
> 查詢單據詳情
查詢規則參考 miro,同上。
### Request
#### 參數說明
| 參數 | 型態 | 說明 | 範例 |
| --------------- | ------ | ---- | ---------------- |
| reservationCode | string | 單號 | `"230208000001"` |
### Response
#### 參數說明
| 參數 | 型態 | 說明 | 範例 |
| -------------------- | ------ | ---------------- | -------------------- |
| reservationCode | string | 單號 | `"2302050000001"` |
| orderUsageCategory | string | 單據出入庫類型 | `"1"` |
| orderType | string | 單據類型 | `"1"` |
| dockOrderStatus | string | 單據目前狀態 | `"1"` |
| statusTimeline | list | 單據狀態歷程清單 | `N/A` |
| sequence | number | 發生順序 | `1` |
| dockOrderStatus | string | 單據狀態 | `"1"` |
| statusTime | string | 狀態變化時間 | `"2023-08-09 02:20"` |
| ownerComName | string | 貨主公司名稱 | `"家樂福"` |
| supplierComName | string | 供應商公司名稱 | `"義美食品"` |
| carrierComName | string | 承運商公司名稱 | `"新竹物流"` |
| driverName | string | 司機姓名 | `"賈苡秉"` |
| licensePlateNo | string | 車牌號碼 | `"ETH2323"` |
| beginAt | string | 單據時段開始 | `"2023-09-01 09:30"` |
| endAt | string | 單據時段結束 | `"2023-09-01 10:00"` |
| expectedUsagePeriod | number | 單據預約時長 | `60` |
| actualUsagePeriod | number | 實際碼頭使用時長 | `67` |
| dockCheckInTimestamp | string | 碼頭報到時間 | `"2022-09-01 09:48"` |
| expecteDock | string | 預約碼頭 | `"1號碼頭"` |
| actualDock | string | 實際碼頭 | `"3號碼頭"` |
#### Response 範例
```json
{
"result": {
"reservationCode": "2301030000001",
"orderUsageCategory": "1",
"orderType": "1",
"dockOrderStatus": "3",
"statusTimeline": [
{
"sequence": 1,
"dockOrderStatus": "1",
"statusTime": "2022-08-29 20:23"
},
{
"sequence": 2,
"dockOrderStatus": "2",
"statusTime": "2022-09-01 09:18"
},
{
"sequence": 3,
"dockOrderStatus": "3",
"statusTime": "2022-09-01 09:48"
}
],
"ownerComName": "家樂福",
"supplierComName": "義美食品",
"carrierComName": "新竹物流",
"driverName": "賈苡秉",
"licensePlateNo": "ETH2323",
"beginAt": "2023-09-01 09:30",
"endAt": "2023-09-01 10:00",
"expectedUsagePeriod": 60,
"actualUsagePeriod": 67,
"dockCheckInTimestamp": "2022-09-01 09:48",
"expecteDock": "1號碼頭",
"actualDock": "3號碼頭"
},
"status": "ok"
}
```