Compare commits
101
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ce4eb4e8a2 | ||
|
|
3b86a6d779 | ||
|
|
c920d954ef | ||
|
|
f7a871e3e4 | ||
|
|
c13bf96cb9 | ||
|
|
4c9878c338 | ||
|
|
d08ed2f2ca | ||
|
|
2d7b6e4381 | ||
|
|
25db631ff7 | ||
|
|
ca4e7086e9 | ||
|
|
7ae91eb276 | ||
|
|
1fdd978084 | ||
|
|
341b7635c7 | ||
|
|
afd3bbaa3d | ||
|
|
2c8c26490a | ||
|
|
bf693fab6b | ||
|
|
d689112656 | ||
|
|
99d206eb00 | ||
|
|
a41c271a67 | ||
|
|
a84a9b730e | ||
|
|
ae1a809357 | ||
|
|
51c0d77fd4 | ||
|
|
86e05a77e6 | ||
|
|
6e9f4b7932 | ||
|
|
cbc316b34d | ||
|
|
b71380de31 | ||
|
|
e42d358e71 | ||
|
|
06de9b1c93 | ||
|
|
fb98b1a8ee | ||
|
|
8526697b08 | ||
|
|
b702ed9f45 | ||
|
|
d4dc4f875a | ||
|
|
d782b2cd24 | ||
|
|
3b137f8946 | ||
|
|
a1f1d93902 | ||
|
|
0eb58f9dd1 | ||
|
|
9b333df720 | ||
|
|
46507e41c6 | ||
|
|
c06e788b0f | ||
|
|
6c4ee2bfde | ||
|
|
a1cd47dabd | ||
|
|
ea3aae6093 | ||
|
|
c545a77190 | ||
|
|
3cb4a5676a | ||
|
|
b4b00ae3dd | ||
|
|
29b562ebf5 | ||
|
|
43494cbfa3 | ||
|
|
d4b72594ab | ||
|
|
15ab355dc2 | ||
|
|
c6471d06ff | ||
|
|
05302490fb | ||
|
|
8e36bd90ef | ||
|
|
0ac2b849c3 | ||
|
|
84864c2ecf | ||
|
|
d1b4cc9c0f | ||
|
|
331f750871 | ||
|
|
25aae44918 | ||
|
|
4b5b639adc | ||
|
|
71111bf21b | ||
|
|
369613a2e7 | ||
|
|
12a5093b41 | ||
|
|
721d92ac7b | ||
|
|
6e1d90aafe | ||
|
|
3a252dfc70 | ||
|
|
83049ed9e5 | ||
|
|
46ae8ab1c6 | ||
|
|
47dc9e8bf6 | ||
|
|
c4c1bddeec | ||
|
|
24f5ccf7ff | ||
|
|
885cac13a4 | ||
|
|
2c970f252d | ||
|
|
373f1b2c18 | ||
|
|
c0fbe2698b | ||
|
|
a973be2103 | ||
|
|
040f3bbd93 | ||
|
|
0d75e311d0 | ||
|
|
1202cafadf | ||
|
|
d11abb78ac | ||
|
|
261cdc87cb | ||
|
|
7e37770f26 | ||
|
|
74bf0e73c5 | ||
|
|
023b28e31f | ||
|
|
f6605a1ab0 | ||
|
|
c1aaaf207a | ||
|
|
3b5454fb99 | ||
|
|
bac7e0b214 | ||
|
|
1e15a2838a | ||
|
|
b4b3ae452c | ||
|
|
c4a7c2a22d | ||
|
|
2ec5414b39 | ||
|
|
7fd7699f6e | ||
|
|
fddae546a0 | ||
|
|
e94271706c | ||
|
|
4f9433c39a | ||
|
|
6b6d217774 | ||
|
|
ed99ecba1c | ||
|
|
315a510969 | ||
|
|
2c0f55d9b7 | ||
|
|
a24a223a35 | ||
|
|
3a9ee57e53 | ||
|
|
c1ddb658bd |
@@ -25,7 +25,7 @@
|
|||||||
### 后端任务最小读取集
|
### 后端任务最小读取集
|
||||||
|
|
||||||
- 单服务 Controller/Service/Mapper 任务:本文件、目标服务 `AGENTS.md`、目标类及其直接调用点。
|
- 单服务 Controller/Service/Mapper 任务:本文件、目标服务 `AGENTS.md`、目标类及其直接调用点。
|
||||||
- 跨服务 API/事件任务:在上述基础上增加直接调用方、被调用方和对应 Gateway/OpenAPI;不因业务关键词自动加载整个业务专题。
|
- 跨服务 API/事件任务:在上述基础上增加直接调用方、被调用方及受影响的 OpenAPI/事件契约;公开路径、访问域或入口鉴权变化才增加 Gateway,内部调用和事件不经公网 Gateway。不因业务关键词自动加载整个业务专题。
|
||||||
- 只有状态、权限、数据库或验收边界无法从上述入口确定时,才读取 `docs/业务快速索引.md`、专题 README 或完整契约。
|
- 只有状态、权限、数据库或验收边界无法从上述入口确定时,才读取 `docs/业务快速索引.md`、专题 README 或完整契约。
|
||||||
- 读取预算遵循工作区根指引:超过约 250 行或 8000 字符时先读职责、硬边界和验证章节,再检索任务命中段;不得仅因行数少而全文加载长业务表。聚合构建或架构任务才读取相关 `README.md`、`pom.xml` 和目录结构文档,已知单模块任务不增加概览文档。
|
- 读取预算遵循工作区根指引:超过约 250 行或 8000 字符时先读职责、硬边界和验证章节,再检索任务命中段;不得仅因行数少而全文加载长业务表。聚合构建或架构任务才读取相关 `README.md`、`pom.xml` 和目录结构文档,已知单模块任务不增加概览文档。
|
||||||
|
|
||||||
@@ -78,6 +78,7 @@
|
|||||||
| 国内船节点向海外接柜门禁事件 | `firstleg/`、`common-event-contract/`、`lastleg-service/` |
|
| 国内船节点向海外接柜门禁事件 | `firstleg/`、`common-event-contract/`、`lastleg-service/` |
|
||||||
| 海外仓库目录、海外库位、海外托盘、资源锁 | 国内仓库目录归 `warehouse/`,海外资源归 `warehouse-overseas-service/` |
|
| 海外仓库目录、海外库位、海外托盘、资源锁 | 国内仓库目录归 `warehouse/`,海外资源归 `warehouse-overseas-service/` |
|
||||||
| Lastleg 内部模块化与依赖基线 | `lastleg-service/` |
|
| Lastleg 内部模块化与依赖基线 | `lastleg-service/` |
|
||||||
|
| 车辆、司机证照、车次、外接预订、车队报价、出车记录 | `lastleg-service/fleet/`;先读 `lastleg-service/AGENTS.md` 对应入口,客户排车关联再沿 `dispatch/fleet/` 实际调用 |
|
||||||
| PDF 标签、审计、业务事件直投 | `print/`、`audit-service/`、`common-event-contract/` |
|
| PDF 标签、审计、业务事件直投 | `print/`、`audit-service/`、`common-event-contract/` |
|
||||||
|
|
||||||
## 公共模块快速索引
|
## 公共模块快速索引
|
||||||
@@ -105,7 +106,7 @@
|
|||||||
|
|
||||||
## 契约、数据库与验证入口
|
## 契约、数据库与验证入口
|
||||||
|
|
||||||
- 对外 Controller/API 新增、改名或删除时,同时核对调用端、区域 Gateway、OpenAPI 和权限;提交前运行 `node --test scripts/gateway-route-contract.test.mjs`,自动发现生产 Controller 并校验网关目标服务与内部路径隔离。失败不得提交或标记完成;网关配置变化必须列入部署清单,不以业务服务单测代替入口检查。
|
- 对外 Controller/API 新增、改名或删除时,同时核对调用端、统一 Gateway、OpenAPI 和权限;提交前运行 `node --test scripts/gateway-route-contract.test.mjs`,自动发现生产 Controller 并校验网关目标服务与内部路径隔离。失败不得提交或标记完成;网关配置变化必须列入部署清单,不以业务服务单测代替入口检查。
|
||||||
|
|
||||||
- 跨服务修改先检查调用方 `client/`、被调用方 Controller/DTO、`src/main/resources/openapi/` 和双方契约测试;禁止共享领域 Entity。
|
- 跨服务修改先检查调用方 `client/`、被调用方 Controller/DTO、`src/main/resources/openapi/` 和双方契约测试;禁止共享领域 Entity。
|
||||||
- 修改 Java 方法、构造器、Controller、Client、DTO 或 Mapper 参数签名时,先用 `rg` 定向查找符号及旧参数形态,并同步更新 `src/main/`、`src/test/`、Mock、Fixture、契约测试和脚本中的全部调用点。新增可选参数也必须补齐旧测试调用,不能因生产调用已更新就视为完成。
|
- 修改 Java 方法、构造器、Controller、Client、DTO 或 Mapper 参数签名时,先用 `rg` 定向查找符号及旧参数形态,并同步更新 `src/main/`、`src/test/`、Mock、Fixture、契约测试和脚本中的全部调用点。新增可选参数也必须补齐旧测试调用,不能因生产调用已更新就视为完成。
|
||||||
@@ -140,7 +141,7 @@
|
|||||||
|
|
||||||
- 订单与客户:`../docs/订单与客户/README.md`、`../docs/订单与客户/订单与客户头程订单闭环设计.md`
|
- 订单与客户:`../docs/订单与客户/README.md`、`../docs/订单与客户/订单与客户头程订单闭环设计.md`
|
||||||
- 入库测量与计费:`../docs/入库测量与计费/README.md`;流程细节按 `../docs/头程到尾程/README.md` 指向的当前阶段文档读取,需求确认和联调报告仅在历史追溯或验收证据任务中读取
|
- 入库测量与计费:`../docs/入库测量与计费/README.md`;流程细节按 `../docs/头程到尾程/README.md` 指向的当前阶段文档读取,需求确认和联调报告仅在历史追溯或验收证据任务中读取
|
||||||
- 国内货柜履约:`../docs/国内货柜履约/README.md`、`../docs/国内货柜履约/报关资料与船期价格接入梳理.md`;开发规划、开工门禁、需求确认和验收材料已归档,只有历史追溯或验收证据任务才读取
|
- 国内货柜履约:`../docs/国内货柜履约/README.md`,报关规则变化再查 `../docs/国内货柜履约/报关资料与船期价格接入梳理.md`。规划、确认与验收材料按归档位置及文档角色判断,当前入口指定的有效规则仍按需核对,历史材料只用于追溯或证据任务
|
||||||
- 海外仓业务:`../docs/海外仓业务/README.md`;统一入口 `gateway/`,尾程与入仓库存 `lastleg-service/`,海外仓储资源 `warehouse-overseas-service/`
|
- 海外仓业务:`../docs/海外仓业务/README.md`;统一入口 `gateway/`,尾程与入仓库存 `lastleg-service/`,海外仓储资源 `warehouse-overseas-service/`
|
||||||
- 海外仓全流程:以正式 Controller、前端路由、权限、SQL 与跨区事件契约为范围依据;海外接柜、入仓、库存、库内服务、排车、出库、派送、一件代发、异常退回和客户回访进入 `lastleg-service/`,国内 SKU/箱唛及暂扣协同进入 `order/`、`firstleg/`、`common-event-contract/`
|
- 海外仓全流程:以正式 Controller、前端路由、权限、SQL 与跨区事件契约为范围依据;海外接柜、入仓、库存、库内服务、排车、出库、派送、一件代发、异常退回和客户回访进入 `lastleg-service/`,国内 SKU/箱唛及暂扣协同进入 `order/`、`firstleg/`、`common-event-contract/`
|
||||||
- 财务:`../docs/财务管理/README.md` 中已确认的范围、对象、状态和接口约束
|
- 财务:`../docs/财务管理/README.md` 中已确认的范围、对象、状态和接口约束
|
||||||
|
|||||||
Vendored
+5
-2
@@ -161,7 +161,7 @@ pipeline {
|
|||||||
choice(name: 'ENVIRONMENT', choices: environmentChoicesForJob(env.JOB_BASE_NAME), description: '部署环境')
|
choice(name: 'ENVIRONMENT', choices: environmentChoicesForJob(env.JOB_BASE_NAME), description: '部署环境')
|
||||||
booleanParam(name: 'DEPLOY', defaultValue: false, description: '各服务构建成功后是否独立部署')
|
booleanParam(name: 'DEPLOY', defaultValue: false, description: '各服务构建成功后是否独立部署')
|
||||||
booleanParam(name: 'SKIP_TESTS', defaultValue: false, description: '是否跳过测试执行(仍编译测试源码)')
|
booleanParam(name: 'SKIP_TESTS', defaultValue: false, description: '是否跳过测试执行(仍编译测试源码)')
|
||||||
string(name: 'IMAGE_REPOSITORY', defaultValue: 'registry.example.com/team/baiyue-firstleg', description: '共享镜像仓库地址')
|
string(name: 'IMAGE_REPOSITORY', defaultValue: '', description: '必须填写已核实的共享镜像仓库地址 host[:port]/owner/image')
|
||||||
string(name: 'DOCKER_BASE_IMAGE', defaultValue: 'eclipse-temurin:17-jre-alpine', description: 'Java 17 基础镜像')
|
string(name: 'DOCKER_BASE_IMAGE', defaultValue: 'eclipse-temurin:17-jre-alpine', description: 'Java 17 基础镜像')
|
||||||
choice(name: 'DOWNSTREAM_JOB_PREFIX', choices: downstreamJobPrefixChoicesForJob(env.JOB_BASE_NAME), description: '由当前总控 Job 固定的单服务 Job 前缀')
|
choice(name: 'DOWNSTREAM_JOB_PREFIX', choices: downstreamJobPrefixChoicesForJob(env.JOB_BASE_NAME), description: '由当前总控 Job 固定的单服务 Job 前缀')
|
||||||
}
|
}
|
||||||
@@ -190,9 +190,12 @@ pipeline {
|
|||||||
|
|
||||||
|
|
||||||
String requestedRepository = params.IMAGE_REPOSITORY?.trim()
|
String requestedRepository = params.IMAGE_REPOSITORY?.trim()
|
||||||
if (!requestedRepository || requestedRepository == 'registry.example.com/your-group/baiyue-firstleg') {
|
if (!requestedRepository) {
|
||||||
error('必须填写真实镜像仓库地址')
|
error('必须填写真实镜像仓库地址')
|
||||||
}
|
}
|
||||||
|
if (requestedRepository.tokenize('/')[0] ==~ /(?i)(?:[a-z0-9-]+\.)*example\.(?:com|net|org)(?::[0-9]+)?/) {
|
||||||
|
error('IMAGE_REPOSITORY 不能使用 example 示例域名,请填写已核实的镜像仓库地址')
|
||||||
|
}
|
||||||
if (requestedRepository.contains('://') || !requestedRepository.contains('/')) {
|
if (requestedRepository.contains('://') || !requestedRepository.contains('/')) {
|
||||||
error('IMAGE_REPOSITORY 格式错误:请填写 host[:port]/owner/image,不要包含 http:// 或 https://')
|
error('IMAGE_REPOSITORY 格式错误:请填写 host[:port]/owner/image,不要包含 http:// 或 https://')
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-1
@@ -49,7 +49,7 @@ pipeline {
|
|||||||
booleanParam(name: 'ALLOW_SAME_CONTRACT_ROLLBACK', defaultValue: false, description: '仅确认相同协议与Schema时允许回滚;架构切换保持关闭')
|
booleanParam(name: 'ALLOW_SAME_CONTRACT_ROLLBACK', defaultValue: false, description: '仅确认相同协议与Schema时允许回滚;架构切换保持关闭')
|
||||||
booleanParam(name: 'DEPLOY', defaultValue: false, description: '构建成功后是否部署本服务')
|
booleanParam(name: 'DEPLOY', defaultValue: false, description: '构建成功后是否部署本服务')
|
||||||
booleanParam(name: 'SKIP_TESTS', defaultValue: false, description: '是否跳过测试')
|
booleanParam(name: 'SKIP_TESTS', defaultValue: false, description: '是否跳过测试')
|
||||||
string(name: 'IMAGE_REPOSITORY', defaultValue: 'registry.example.com/team/baiyue-firstleg', description: '共享镜像仓库基础路径,不包含服务名和标签')
|
string(name: 'IMAGE_REPOSITORY', defaultValue: '', description: '必须填写已核实的共享镜像仓库基础路径,不包含服务名和标签')
|
||||||
string(name: 'DOCKER_BASE_IMAGE', defaultValue: 'eclipse-temurin:17-jre-alpine', description: 'Java 17 基础镜像')
|
string(name: 'DOCKER_BASE_IMAGE', defaultValue: 'eclipse-temurin:17-jre-alpine', description: 'Java 17 基础镜像')
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,6 +101,9 @@ pipeline {
|
|||||||
if (!imageRepository || imageRepository.contains('://')) {
|
if (!imageRepository || imageRepository.contains('://')) {
|
||||||
error('IMAGE_REPOSITORY 不能为空且不能包含协议前缀')
|
error('IMAGE_REPOSITORY 不能为空且不能包含协议前缀')
|
||||||
}
|
}
|
||||||
|
if (imageRepository.tokenize('/')[0] ==~ /(?i)(?:[a-z0-9-]+\.)*example\.(?:com|net|org)(?::[0-9]+)?/) {
|
||||||
|
error('IMAGE_REPOSITORY 不能使用 example 示例域名,请填写已核实的镜像仓库地址')
|
||||||
|
}
|
||||||
if (!imageRepository.contains('/')) {
|
if (!imageRepository.contains('/')) {
|
||||||
error('IMAGE_REPOSITORY 必须使用 host[:port]/owner/image 格式')
|
error('IMAGE_REPOSITORY 必须使用 host[:port]/owner/image 格式')
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -56,6 +56,7 @@ public record BusinessFeeSourceChangedV1(
|
|||||||
String reviewStatus,
|
String reviewStatus,
|
||||||
String publicationStatus,
|
String publicationStatus,
|
||||||
String sourceStatus,
|
String sourceStatus,
|
||||||
String sourceHash
|
String sourceHash,
|
||||||
|
WalletSettlementReference walletSettlement
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -15,7 +15,9 @@ public record WalletCommandCompletedV1(
|
|||||||
BigDecimal amount,
|
BigDecimal amount,
|
||||||
String errorCode,
|
String errorCode,
|
||||||
String errorMessage,
|
String errorMessage,
|
||||||
Instant completedAt
|
Instant completedAt,
|
||||||
|
String walletHoldId,
|
||||||
|
String walletLedgerId
|
||||||
) {
|
) {
|
||||||
public static final int VERSION = 1;
|
public static final int VERSION = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-2
@@ -3,7 +3,13 @@ package com.baiyue.common.event;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
||||||
/** 海外业务向国内 Finance 发起的客户资金冻结、结算或释放指令。 */
|
/**
|
||||||
|
* 海外业务向 Finance 发起的客户资金指令。
|
||||||
|
* FREEZE 的 amount 为预留金额;SETTLE 全额结算;RELEASE 释放原冻结。
|
||||||
|
* SETTLE_ACTUAL 的 amount 为最终正额 CNY 实扣,原子补差或释放余款,原冻结金额保留。
|
||||||
|
* 实际零元使用 RELEASE,不发送零元结算。结算和释放按原业务冻结身份关联。
|
||||||
|
* REFUND 使用独立业务退款号并携带 originalLedgerId,关联原成功消费,不创建充值。
|
||||||
|
*/
|
||||||
public record WalletCommandRequestedV1(
|
public record WalletCommandRequestedV1(
|
||||||
String operation,
|
String operation,
|
||||||
long customerId,
|
long customerId,
|
||||||
@@ -12,7 +18,8 @@ public record WalletCommandRequestedV1(
|
|||||||
BigDecimal amount,
|
BigDecimal amount,
|
||||||
String remark,
|
String remark,
|
||||||
String idempotencyKey,
|
String idempotencyKey,
|
||||||
Instant requestedAt
|
Instant requestedAt,
|
||||||
|
String originalLedgerId
|
||||||
) {
|
) {
|
||||||
public static final int VERSION = 1;
|
public static final int VERSION = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
package com.baiyue.common.event;
|
||||||
|
|
||||||
|
/** Finance-issued identity of a successful consumption, carried by its immutable fee source. */
|
||||||
|
public record WalletSettlementReference(String commandEventId, String holdId, String ledgerId) { }
|
||||||
@@ -123,4 +123,76 @@ baiyue:
|
|||||||
max-rows: 200000
|
max-rows: 200000
|
||||||
max-attempts: 3
|
max-attempts: 3
|
||||||
batch-size: 500
|
batch-size: 500
|
||||||
|
LAST_MILE_ORDER_LIST:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/LAST_MILE_ORDER_LIST/batches
|
||||||
|
required-permission: platform:overseas-warehouse:last-mile-order:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
|
OVERSEAS_INVENTORY_BALANCE:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/OVERSEAS_INVENTORY_BALANCE/batches
|
||||||
|
required-permission: platform:overseas-warehouse:inventory:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
|
OVERSEAS_INVENTORY_LEDGER:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/OVERSEAS_INVENTORY_LEDGER/batches
|
||||||
|
required-permission: platform:overseas-warehouse:inventory:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
|
OVERSEAS_QUOTE_LIST:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/OVERSEAS_QUOTE_LIST/batches
|
||||||
|
required-permission: platform:overseas-master-data:quote:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
|
MONTHLY_EXCHANGE_RATE_LIST:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/MONTHLY_EXCHANGE_RATE_LIST/batches
|
||||||
|
required-permission: platform:overseas-master-data:exchange-rate:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
|
VEHICLE_LIST:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/VEHICLE_LIST/batches
|
||||||
|
required-permission: platform:overseas-master-data:vehicle:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
|
FLEET_QUOTE_LIST:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/FLEET_QUOTE_LIST/batches
|
||||||
|
required-permission: platform:fleet:quote:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
|
TRIP_OPERATIONS_LIST:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/TRIP_OPERATIONS_LIST/batches
|
||||||
|
required-permission: platform:fleet:operations:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
baiyue.clients.finance.url: ${FINANCE_SERVICE_URL:}
|
baiyue.clients.finance.url: ${FINANCE_SERVICE_URL:}
|
||||||
|
|||||||
@@ -218,6 +218,12 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
<<: *common-environment
|
<<: *common-environment
|
||||||
SERVER_PORT: 9210
|
SERVER_PORT: 9210
|
||||||
|
LINGXING_WMS_ENABLED: ${LINGXING_WMS_ENABLED:-false}
|
||||||
|
LINGXING_COLLECTION_MODE: ${SELFOP_COLLECTION_MODE:-OFF}
|
||||||
|
LINGXING_ENVIRONMENT_LABEL: ${DEPLOY_ENV:-test}
|
||||||
|
LINGXING_SOURCE_ACCOUNT: ${SELFOP_SOURCE_ACCOUNT:-lingxing-primary}
|
||||||
|
LINGXING_OMS_APP_KEY: ${LINGXING_OMS_APP_KEY:-}
|
||||||
|
LINGXING_OMS_APP_SECRET: ${LINGXING_OMS_APP_SECRET:-}
|
||||||
BAIDU_OCR_ENABLED: ${BAIDU_OCR_ENABLED:-false}
|
BAIDU_OCR_ENABLED: ${BAIDU_OCR_ENABLED:-false}
|
||||||
BAIDU_OCR_API_KEY: ${BAIDU_OCR_API_KEY:-}
|
BAIDU_OCR_API_KEY: ${BAIDU_OCR_API_KEY:-}
|
||||||
BAIDU_OCR_SECRET_KEY: ${BAIDU_OCR_SECRET_KEY:-}
|
BAIDU_OCR_SECRET_KEY: ${BAIDU_OCR_SECRET_KEY:-}
|
||||||
@@ -282,6 +288,12 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
<<: *common-environment
|
<<: *common-environment
|
||||||
SERVER_PORT: 9303
|
SERVER_PORT: 9303
|
||||||
|
SELFOP_EXECUTION_ENABLED: ${SELFOP_EXECUTION_ENABLED:-false}
|
||||||
|
SELFOP_COLLECTION_MODE: ${SELFOP_COLLECTION_MODE:-OFF}
|
||||||
|
SELFOP_SOURCE_ACCOUNT: ${SELFOP_SOURCE_ACCOUNT:-lingxing-primary}
|
||||||
|
SELFOP_DAILY_REQUEST_BUDGET: ${SELFOP_DAILY_REQUEST_BUDGET:-0}
|
||||||
|
SELFOP_MIN_REQUEST_INTERVAL_MS: ${SELFOP_MIN_REQUEST_INTERVAL_MS:-5000}
|
||||||
|
SELFOP_SALES_PUBLICATION_ENABLED: ${SELFOP_SALES_PUBLICATION_ENABLED:-false}
|
||||||
EVENT_CONNECT_TIMEOUT_MS: ${EVENT_CONNECT_TIMEOUT_MS:-3000}
|
EVENT_CONNECT_TIMEOUT_MS: ${EVENT_CONNECT_TIMEOUT_MS:-3000}
|
||||||
EVENT_READ_TIMEOUT_MS: ${EVENT_READ_TIMEOUT_MS:-15000}
|
EVENT_READ_TIMEOUT_MS: ${EVENT_READ_TIMEOUT_MS:-15000}
|
||||||
EVENT_LEASE_SECONDS: ${EVENT_LEASE_SECONDS:-60}
|
EVENT_LEASE_SECONDS: ${EVENT_LEASE_SECONDS:-60}
|
||||||
|
|||||||
Vendored
+11
@@ -21,6 +21,17 @@ IMAGE_TAG=
|
|||||||
FILE_UPLOADS_HOST_DIR=/data/firstleg/uploads
|
FILE_UPLOADS_HOST_DIR=/data/firstleg/uploads
|
||||||
CORS_ALLOWED_ORIGINS=
|
CORS_ALLOWED_ORIGINS=
|
||||||
INTERNAL_SERVICE_TOKEN=
|
INTERNAL_SERVICE_TOKEN=
|
||||||
|
# 领星唯一账号;凭据仅注入 integration-service。
|
||||||
|
LINGXING_OMS_APP_KEY=
|
||||||
|
LINGXING_OMS_APP_SECRET=
|
||||||
|
LINGXING_WMS_ENABLED=false
|
||||||
|
SELFOP_COLLECTION_MODE=OFF
|
||||||
|
SELFOP_SOURCE_ACCOUNT=lingxing-primary
|
||||||
|
# 未核准额度使用0,真实出口拒绝请求;有效模式仍需显式的独占交接证明与截止时间。
|
||||||
|
SELFOP_DAILY_REQUEST_BUDGET=0
|
||||||
|
SELFOP_MIN_REQUEST_INTERVAL_MS=5000
|
||||||
|
SELFOP_EXECUTION_ENABLED=false
|
||||||
|
SELFOP_SALES_PUBLICATION_ENABLED=false
|
||||||
REDIS_PASSWORD=
|
REDIS_PASSWORD=
|
||||||
AUTH_DB_URL=jdbc:mysql://host.docker.internal:3306/baiyue_auth?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
|
AUTH_DB_URL=jdbc:mysql://host.docker.internal:3306/baiyue_auth?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
|
||||||
AUTH_DB_USERNAME=
|
AUTH_DB_USERNAME=
|
||||||
|
|||||||
+25
-3
@@ -1,11 +1,33 @@
|
|||||||
# 单测试环境数据库空库初始化
|
# 单测试环境数据库空库初始化
|
||||||
|
|
||||||
|
`migrations/overseas/baiyue_lastleg/V23__align_return_movement_collation.sql` 将退货进销存 UNION 涉及的八张表、22 个文本字段及表默认规则显式统一为 `utf8mb4_unicode_ci`,同步 Lastleg 两份源基线与海外统一空库基线。执行前核对字段长度、默认值、可空性及目标规则下唯一索引无冲突;只修改规则,不回填或删除数据,不重放空库基线。DDL 非事务,失败时停止并复查实际已完成项;可按最终定义重跑。脚本存在不表示测试库已执行,执行后用原始计数/分页查询验证,无需发布查询转换代码。
|
||||||
|
|
||||||
|
`migrations/overseas/baiyue_lastleg/V22__selfop_warehouse_daily_sales.sql` 新增自营仓库每日汇总表及销量版本 `warehouse_daily_ready` 标记。与匹配 Lastleg 一起发布;汇总随 SKU 日事实批次原子构建,完整性验证后方可发布。已有未构建汇总的销量版本须重新构建发布,不回填旧版本、不回退旧查询;空版本同样必须有就绪证据。源基线与海外空库基线同步。
|
||||||
|
|
||||||
|
`migrations/overseas/baiyue_lastleg/V21__procurement_fee_confirmation_origin.sql` 增加采购费用核定入口,区分业务节点与财务操作,用于独立新增费用、替代核定及其重试权限。同步源基线和海外统一空库基线;不回填测试存量,不表示已执行。
|
||||||
|
|
||||||
|
`migrations/overseas/baiyue_lastleg/V20__procurement_exception_control.sql` 增加采购事实更正/阻断说明、异常关闭及逐来源最终去向三表。服务端保持原收货和发运记录,关闭不产生库存、退款或退货运输;需与采购详情聚合和节点阻断校验的匹配版本发布。源基线和海外统一基线同步,本文件存在不表示已执行。
|
||||||
|
|
||||||
|
`migrations/overseas/baiyue_lastleg/V19__procurement_fee_correction.sql` 保存费用链修正目标、原汇率及确认前净实扣,并关联逐笔正差额/退款费用。同步进入 Lastleg 源基线与海外统一空库基线,不新增资金账本,不重算或回填旧消费;只有匹配版本能够发送本次费用链请求。本文件存在不代表已执行。
|
||||||
|
|
||||||
|
采购实物与运输结构分别见 `migrations/overseas/baiyue_lastleg/V17__procurement_physical_facts.sql` 和 `V18__procurement_transport_facts.sql`:V17 保存分次实收、差异、装箱及两段整批交寄七表;V18 保存面单版本、逐箱贴单、预估核对和一对一换包装四表,并补齐采购附件的 LABEL/PURCHASE/BUDGET/EXCEPTION 分类约束。源基线及海外统一空库基线同步,节点权限统一维护于采购 V5 权限脚本。File 同时发布对应文件类型约束;不补写历史收货、装箱或发运事实,不代表已执行或已验收。
|
||||||
|
|
||||||
|
采购购买节点结构使用 `migrations/overseas/baiyue_lastleg/V16__procurement_purchase_facts.sql`,新增单批履约事实、节点幂等审计及预算授权历史三表。独立购买/取消权限使用 `migrations/cn/baiyue_iam/V5__procurement_node_permissions.sql`,源种子为 IAM `procurement-permissions.sql`,同步进入国内统一空库基线;只给现有平台管理员角色默认授权,不新增岗位。上述结构与权限必须随采购节点匹配版本发布,不补造旧订单购买事实,不代表已执行或已验收。
|
||||||
|
|
||||||
|
`migrations/overseas/baiyue_lastleg/V15__procurement_fee_versions.sql` 为采购费用增加用途、确认版本、原币汇率、原冻结及实际流水引用,并建立 `ll_procurement_wallet_attempt` 保存每次资金请求及最终结果。零元费用可以落核定事实但不生成资金命令;字段和约束与源基线、海外统一空库基线同步。执行前核对新增列、索引和表均未存在,先发布准备完整匹配版本;不回填旧费用、不释放或重扣测试存量。该脚本仅完成费用结构,后续履约表按相应变更单独核对。
|
||||||
|
|
||||||
|
`migrations/overseas/baiyue_lastleg/V14__procurement_wallet_reference.sql` 为采购已实扣费用来源新增 `wallet_settlement` JSON 引用,保存 Finance 原资金命令、冻结及消费流水身份。源基线与海外统一空库基线同步维护;指定测试环境执行前核对列不存在,不回填历史费用,不重新收费。需与 Finance 资金回执、费用关联及 Lastleg 采购生产端的匹配版本一起发布;本文件存在不表示已经执行。
|
||||||
|
|
||||||
|
`reset-test-fba-appointments.sql` 仅用于明确授权的 TEST 预约模型重建:删除并按当前基线重建 `ll_inbound_fba_appointment`、`ll_inbound_fba_appointment_item`,并首次创建 `ll_fba_appointment_command` 保存同事务幂等结果与历史。执行任何DROP前必须确认命令表尚不存在;若已存在,先核对上次执行结果,本脚本不清空命令历史、不支持盲目重试。它会丢弃旧预约及关联明细,但不修改订单、入仓计划、库存和排车。调用者必须核对测试连接及两张表的具体重置授权;不得作为自动启动脚本或用于生产。主单区分计划日期/时段、系统单号、外部确认号和确认UTC/IANA时区;明细按稳定货源占用,不再依赖入仓计划明细。结构必须与匹配Lastleg和Admin一同发布,失败立即停止,不回填旧数据。权限从IAM种子核对;文件存在不表示已执行。
|
||||||
|
|
||||||
`migrations/overseas/baiyue_lastleg/V13__widen_inbound_plan_creation_mode.sql` 仅将 `ll_inbound_plan.creation_mode` 从旧统一基线的 `VARCHAR(16)` 扩至模块基线已有的 `VARCHAR(32)`,容纳实际来货审核写入的 `WAREHOUSE_TRANSFER`(18字符)。保留 `utf8mb4_unicode_ci`、非空及 `AUTO` 默认值;不更新已有计划或状态。执行前核对目标库该列的长度、排序规则、可空性和默认值,已符合最终定义则核对后跳过;执行结果不确定时先只读复查,不盲目重试。统一空库基线同步最终定义,不重放模块历史初始化脚本。
|
`migrations/overseas/baiyue_lastleg/V13__widen_inbound_plan_creation_mode.sql` 仅将 `ll_inbound_plan.creation_mode` 从旧统一基线的 `VARCHAR(16)` 扩至模块基线已有的 `VARCHAR(32)`,容纳实际来货审核写入的 `WAREHOUSE_TRANSFER`(18字符)。保留 `utf8mb4_unicode_ci`、非空及 `AUTO` 默认值;不更新已有计划或状态。执行前核对目标库该列的长度、排序规则、可空性和默认值,已符合最终定义则核对后跳过;执行结果不确定时先只读复查,不盲目重试。统一空库基线同步最终定义,不重放模块历史初始化脚本。
|
||||||
|
|
||||||
`migrations/overseas/baiyue_lastleg/V12__preserve_unknown_pool_order_fields.sql` 仅放开散板打盘需求及两类本土订单柜型三列为空、默认空,供未提供这些事实的拼车商业订单使用;普通订单输入校验仍由原服务端请求合同执行。对应源及统一空库基线同步最终定义,不回填已生成订单或把托盘数量解释成打盘服务需求。
|
`migrations/overseas/baiyue_lastleg/V12__preserve_unknown_pool_order_fields.sql` 仅放开散板打盘需求及两类本土订单柜型三列为空、默认空,供未提供这些事实的拼车商业订单使用;普通订单输入校验仍由原服务端请求合同执行。对应源及统一空库基线同步最终定义,不回填已生成订单或把托盘数量解释成打盘服务需求。
|
||||||
|
|
||||||
内部拼车需求池的当前结构在 Lastleg 源基线和海外统一空库基线同步维护,独立五项权限在 IAM 源种子和国内统一基线维护。已存在基础表的指定环境结构补齐使用 `migrations/overseas/baiyue_lastleg/V10__fleet_capacity_pool.sql` 与 `migrations/cn/baiyue_iam/V4__fleet_capacity_offer_permissions.sql`;执行前确认三张新表、六个新增字段均未存在,并单独核对目标环境。随后 `V11__align_capacity_pool_collation.sql` 将预订与商业桥的客户关联字段显式统一为 `utf8mb4_unicode_ci`,与原订单域一致,避免依赖MySQL实例默认排序规则导致JOIN失败。它们不回填、删除或重置业务数据,不能重放整个空库基线。候选文件存在不表示已经执行。
|
内部拼车需求池的当前结构在 Lastleg 源基线和海外统一空库基线同步维护,独立五项权限在 IAM 源种子和国内统一基线维护。已存在基础表的指定环境结构补齐使用 `migrations/overseas/baiyue_lastleg/V10__fleet_capacity_pool.sql` 与 `migrations/cn/baiyue_iam/V4__fleet_capacity_offer_permissions.sql`;执行前确认三张新表、六个新增字段均未存在,并单独核对目标环境。随后 `V11__align_capacity_pool_collation.sql` 将预订与商业桥的客户关联字段显式统一为 `utf8mb4_unicode_ci`,与原订单域一致,避免依赖MySQL实例默认排序规则导致JOIN失败。它们不回填、删除或重置业务数据,不能重放整个空库基线。候选文件存在不表示已经执行。
|
||||||
|
|
||||||
|
平台自营领星统计十张 `ll_selfop_*` 表直接同步 Lastleg 源基线及海外统一空库基线;时间使用 UTC 存储及已确认北京时间业务日,数量使用 DECIMAL 保留 PCS 精度,维持独立发布版本。包含账号共享预算/冷却、验证根用途与硬预算、TEST BUSINESS 根会话持久预算、稳定任务号、阶段进度/心跳和旧版替代时间;任务的 `business_root_task_id` 标记共享根,只有根保存 `business_budget_json`,生产任务不使用该测试预算。库存 run 包含每日代表日期、选择规则及账号/仓库/日期唯一约束,代表库存与 profile 不适用销量副本淘汰。IAM 权限源为 `iam/src/main/resources/db/selfoperated-analytics-permissions.sql`,自营业务下经营总览、销量分析、库存分析、数据采集的菜单资源与独立读写权限同步国内统一基线,仅平台管理员默认授权。执行和部署状态只维护于工作区测试环境主契约;真实采集模式默认 OFF。
|
||||||
|
|
||||||
## 唯一入口与区域边界
|
## 唯一入口与区域边界
|
||||||
|
|
||||||
两个统一 SQL 文件仍只用于空库初始化,名称中的“增量”不表示可向已有业务库重放。已有生产库的受控结构补齐单独放在 `migrations/`,只允许明确审阅过的增量变更;不提供存量数据回填、清理或兼容入口。
|
两个统一 SQL 文件仍只用于空库初始化,名称中的“增量”不表示可向已有业务库重放。已有生产库的受控结构补齐单独放在 `migrations/`,只允许明确审阅过的增量变更;不提供存量数据回填、清理或兼容入口。
|
||||||
@@ -13,7 +35,7 @@
|
|||||||
| 区域 | 完整入口 | 服务 schema | 表数 |
|
| 区域 | 完整入口 | 服务 schema | 表数 |
|
||||||
|---|---|---|---:|
|
|---|---|---|---:|
|
||||||
| 国内 | `头程数据库统一增量-MySQL8.sql` | `baiyue_auth`、`baiyue_iam`、`baiyue_order`、`baiyue_warehouse`、`baiyue_firstleg`、`baiyue_file`、`baiyue_audit`、`baiyue_finance` | 226 |
|
| 国内 | `头程数据库统一增量-MySQL8.sql` | `baiyue_auth`、`baiyue_iam`、`baiyue_order`、`baiyue_warehouse`、`baiyue_firstleg`、`baiyue_file`、`baiyue_audit`、`baiyue_finance` | 226 |
|
||||||
| 海外 | `海外区域统一增量-MySQL8.sql` | `baiyue_lastleg`、`baiyue_lastlag_warehouse` | 157 |
|
| 海外 | `海外区域统一增量-MySQL8.sql` | `baiyue_lastleg`、`baiyue_lastlag_warehouse` | 195 |
|
||||||
|
|
||||||
- 所有服务位于同一测试环境;两份文件只分组组织服务 schema,不代表两个部署区域。`baiyue_lastlag_warehouse` 保留当前正式的 `lastlag` 拼写。
|
- 所有服务位于同一测试环境;两份文件只分组组织服务 schema,不代表两个部署区域。`baiyue_lastlag_warehouse` 保留当前正式的 `lastlag` 拼写。
|
||||||
- 两份文件必须在同一测试数据库实例中完成初始化;业务服务仍只访问本服务 schema,经内部接口访问 IAM/Warehouse。已移除事件桥两个 schema 的创建,不对已有数据库执行 DROP。
|
- 两份文件必须在同一测试数据库实例中完成初始化;业务服务仍只访问本服务 schema,经内部接口访问 IAM/Warehouse。已移除事件桥两个 schema 的创建,不对已有数据库执行 DROP。
|
||||||
@@ -35,7 +57,7 @@
|
|||||||
5. DDL 隐式提交,不可整体回滚。失败后停止并保留错误;经另行授权准备空库后从头执行,不针对半初始化库追加迁移或从失败行续跑。
|
5. DDL 隐式提交,不可整体回滚。失败后停止并保留错误;经另行授权准备空库后从头执行,不针对半初始化库追加迁移或从失败行续跑。
|
||||||
6. Firstleg 测量项与拆分项互为外键:建空表期间暂设会话 `foreign_key_checks=0`,随后立即恢复 `1`,再插入种子。失败时关闭连接。两边外键完整保留在 CREATE TABLE 内。
|
6. Firstleg 测量项与拆分项互为外键:建空表期间暂设会话 `foreign_key_checks=0`,随后立即恢复 `1`,再插入种子。失败时关闭连接。两边外键完整保留在 CREATE TABLE 内。
|
||||||
|
|
||||||
成功时只在最末输出一行 `initialization_status=PASS`,并带 `region=CN/OVERSEAS`、`initialized_tables=226/157`。必须同时确认客户端退出码 0;忽略错误后出现的 PASS 不算成功。
|
成功时只在最末输出一行 `initialization_status=PASS`,并带 `region=CN/OVERSEAS`、`initialized_tables=226/194`。必须同时确认客户端退出码 0;忽略错误后出现的 PASS 不算成功。
|
||||||
|
|
||||||
## 平台管理员密码
|
## 平台管理员密码
|
||||||
|
|
||||||
@@ -51,7 +73,7 @@
|
|||||||
|
|
||||||
| 所属库 | 保留内容 | 不包含 |
|
| 所属库 | 保留内容 | 不包含 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| Auth / IAM | 平台主体、唯一平台管理员、8 个系统角色及企业管理员模板、417 个权限、598 条角色权限、7 个数据范围、客户编号起点;无人工完成订单权限 | 测试客户、固定客户账号、额外扩权 |
|
| Auth / IAM | 平台主体、唯一平台管理员、8 个系统角色及企业管理员模板、419 个权限、600 条角色权限、7 个数据范围、客户编号起点;无人工完成订单权限 | 测试客户、固定客户账号、额外扩权 |
|
||||||
| Warehouse | 既有公共仓目录 318 条及地址;义乌、东莞、洛杉矶、纽约 4 个作业仓收货能力 | 示例供应商、快递、往来单位、托盘、库位、预占、库存 |
|
| Warehouse | 既有公共仓目录 318 条及地址;义乌、东莞、洛杉矶、纽约 4 个作业仓收货能力 | 示例供应商、快递、往来单位、托盘、库位、预占、库存 |
|
||||||
| Firstleg | 112 个费用项目、15 个渠道目录、7 个始发地别名、4 个公共仓映射 | 客户报价、订单、入库、实测或履约记录 |
|
| Firstleg | 112 个费用项目、15 个渠道目录、7 个始发地别名、4 个公共仓映射 | 客户报价、订单、入库、实测或履约记录 |
|
||||||
| File / Finance | 导出互斥键 `GLOBAL_CREATE`、默认平台财务主体 | 文件任务、资金、账单或交易流水 |
|
| File / Finance | 导出互斥键 `GLOBAL_CREATE`、默认平台财务主体 | 文件任务、资金、账单或交易流水 |
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
-- 采购节点动作独立授权;不新建岗位,不以通用编辑权限代替购买与取消。
|
||||||
|
INSERT INTO iam_permission(id,tenant_id,app_code,permission_type,parent_id,permission_code,permission_name,route_path,http_method,sort_no,status,built_in,deleted)
|
||||||
|
VALUES
|
||||||
|
(5117103,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:buy','采购购买及货款核定',NULL,'POST',803,'ACTIVE',1,0),
|
||||||
|
(5117104,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:cancel','购买前取消采购订单',NULL,'POST',804,'ACTIVE',1,0),
|
||||||
|
(5117105,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:receive-overseas','采购海外收货',NULL,'POST',805,'ACTIVE',1,0),
|
||||||
|
(5117106,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:receive-domestic','采购国内收货',NULL,'POST',806,'ACTIVE',1,0),
|
||||||
|
(5117107,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:pack','采购装箱与确认',NULL,'POST',807,'ACTIVE',1,0),
|
||||||
|
(5117108,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:manage','采购差异处置与事实更正',NULL,'POST',808,'ACTIVE',1,0),
|
||||||
|
(5117109,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:label','采购面单维护',NULL,'POST',809,'ACTIVE',1,0),
|
||||||
|
(5117110,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:charge','采购国内核费',NULL,'POST',810,'ACTIVE',1,0),
|
||||||
|
(5117111,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:finance-adjust','采购财务调整',NULL,'POST',811,'ACTIVE',1,0),
|
||||||
|
(5117112,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:estimate','采购预估运费核对',NULL,'POST',812,'ACTIVE',1,0),
|
||||||
|
(5117113,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:apply-label','采购逐箱贴单',NULL,'POST',813,'ACTIVE',1,0),
|
||||||
|
(5117114,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:ship-overseas','采购海外整批交寄',NULL,'POST',814,'ACTIVE',1,0),
|
||||||
|
(5117115,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:ship-customer','采购国内寄客户',NULL,'POST',815,'ACTIVE',1,0)
|
||||||
|
ON DUPLICATE KEY UPDATE permission_name=VALUES(permission_name),status='ACTIVE',deleted=0;
|
||||||
|
INSERT IGNORE INTO iam_role_permission(tenant_id,role_id,permission_id,created_at)
|
||||||
|
SELECT 0,r.id,p.id,NOW(3) FROM iam_role r JOIN iam_permission p
|
||||||
|
ON p.tenant_id=0 AND p.app_code='PLATFORM' AND p.permission_code IN
|
||||||
|
('platform:overseas-business:purchase:buy','platform:overseas-business:purchase:cancel',
|
||||||
|
'platform:overseas-business:purchase:receive-overseas','platform:overseas-business:purchase:receive-domestic',
|
||||||
|
'platform:overseas-business:purchase:pack','platform:overseas-business:purchase:manage',
|
||||||
|
'platform:overseas-business:purchase:label','platform:overseas-business:purchase:charge','platform:overseas-business:purchase:finance-adjust',
|
||||||
|
'platform:overseas-business:purchase:estimate','platform:overseas-business:purchase:apply-label',
|
||||||
|
'platform:overseas-business:purchase:ship-overseas','platform:overseas-business:purchase:ship-customer')
|
||||||
|
WHERE r.tenant_id=0 AND r.app_code='PLATFORM' AND UPPER(r.role_code) IN('PLATFORM_ADMIN','PLATFORM_CUSTOM_ADMIN')
|
||||||
|
AND r.status='ACTIVE' AND r.deleted=0;
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
-- 采购实扣费用来源关联;仅补充结构,不回填历史费用,不修改资金或业务记录。
|
||||||
|
-- 执行前核对指定测试环境、baiyue_lastleg schema 与该列尚不存在。
|
||||||
|
ALTER TABLE ll_finance_fee_source
|
||||||
|
ADD COLUMN wallet_settlement JSON NULL COMMENT '已实扣应收的Finance资金命令、冻结和消费流水引用'
|
||||||
|
AFTER payment_voucher_file_ids;
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
-- 采购费用确认版本及资金尝试。仅变更结构,不回填、重扣或清理测试存量。
|
||||||
|
ALTER TABLE ll_overseas_procurement_fee
|
||||||
|
ADD COLUMN purpose VARCHAR(32) NULL COMMENT '费用业务用途;由履约节点确定',
|
||||||
|
ADD COLUMN fee_version INT NULL COMMENT '同用途费用确认版本',
|
||||||
|
ADD COLUMN active TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否当前有效版本',
|
||||||
|
ADD COLUMN determination VARCHAR(24) NULL COMMENT 'POSITIVE正额、ZERO零元、NOT_APPLICABLE不适用',
|
||||||
|
ADD COLUMN original_currency CHAR(3) NULL COMMENT '核定原币CNY或USD',
|
||||||
|
ADD COLUMN original_amount DECIMAL(20,2) NULL COMMENT '核定原币金额',
|
||||||
|
ADD COLUMN exchange_rate DECIMAL(20,6) NULL COMMENT '已确认汇率快照',
|
||||||
|
ADD COLUMN exchange_rate_month CHAR(7) NULL COMMENT '已确认汇率所属月份',
|
||||||
|
ADD COLUMN business_date DATE NULL COMMENT '实际费用业务日期',
|
||||||
|
ADD COLUMN wallet_business_id BIGINT NULL COMMENT '资金冻结对应采购费用记录',
|
||||||
|
ADD COLUMN wallet_business_no VARCHAR(128) NULL COMMENT '资金冻结业务号;实际国际运费引用原预估',
|
||||||
|
ADD COLUMN wallet_hold_id VARCHAR(64) NULL COMMENT 'Finance冻结引用',
|
||||||
|
ADD COLUMN wallet_ledger_id VARCHAR(64) NULL COMMENT 'Finance实际处理流水引用',
|
||||||
|
ADD COLUMN settled_command_event_id VARCHAR(64) NULL COMMENT '成功实扣或退款的资金命令事件',
|
||||||
|
ADD COLUMN source_fee_id BIGINT NULL COMMENT '已实扣费用来源ID',
|
||||||
|
ADD COLUMN parent_fee_id BIGINT NULL COMMENT '原费用或预估引用',
|
||||||
|
ADD COLUMN request_hash CHAR(64) NULL COMMENT '确认请求摘要',
|
||||||
|
MODIFY COLUMN voucher_file_id BIGINT NULL COMMENT '凭证文件ID;零元可空',
|
||||||
|
MODIFY COLUMN voucher_file_name VARCHAR(255) NULL COMMENT '凭证文件名;零元可空',
|
||||||
|
DROP CHECK chk_ll_procurement_fee_amount,
|
||||||
|
ADD CONSTRAINT chk_ll_procurement_fee_amount CHECK(amount>=0),
|
||||||
|
ADD UNIQUE KEY uk_ll_procurement_fee_version(order_id,purpose,fee_item_code,fee_version);
|
||||||
|
|
||||||
|
CREATE TABLE ll_procurement_wallet_attempt (
|
||||||
|
id BIGINT NOT NULL COMMENT '请求尝试ID',
|
||||||
|
order_id BIGINT NOT NULL COMMENT '采购订单ID',
|
||||||
|
customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
||||||
|
fee_id BIGINT NOT NULL COMMENT '不可变费用版本ID',
|
||||||
|
attempt_no BIGINT NOT NULL COMMENT '费用版本内请求序号',
|
||||||
|
operation VARCHAR(32) NOT NULL COMMENT '资金操作:FREEZE冻结、SETTLE结算、SETTLE_ACTUAL实际结算、RELEASE释放、REFUND退款',
|
||||||
|
business_no VARCHAR(128) NOT NULL COMMENT 'Finance资金业务号',
|
||||||
|
amount DECIMAL(20,2) NULL COMMENT '请求金额;全额结算或释放可空',
|
||||||
|
command_event_id VARCHAR(64) NOT NULL COMMENT '资金指令事件唯一引用',
|
||||||
|
status VARCHAR(16) NOT NULL COMMENT '资金请求结果:PENDING未决、SUCCEEDED成功、FAILED明确失败',
|
||||||
|
result_hash CHAR(64) NULL COMMENT '原业务回执摘要',
|
||||||
|
wallet_hold_id VARCHAR(64) NULL COMMENT 'Finance冻结引用',
|
||||||
|
wallet_ledger_id VARCHAR(64) NULL COMMENT 'Finance处理流水引用',
|
||||||
|
error_code VARCHAR(64) NULL COMMENT '业务失败码',
|
||||||
|
error_message VARCHAR(500) NULL COMMENT '内部失败诊断,不直接对客展示',
|
||||||
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '请求时间',
|
||||||
|
completed_at DATETIME(3) NULL COMMENT '最终结果时间',
|
||||||
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_attempt_event(command_event_id),
|
||||||
|
UNIQUE KEY uk_procurement_attempt_number(fee_id,attempt_no),
|
||||||
|
KEY idx_procurement_attempt_order(customer_id,order_id,status),
|
||||||
|
CONSTRAINT chk_procurement_attempt_status CHECK(status IN('PENDING','SUCCEEDED','FAILED'))
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购费用资金命令尝试与不可变结果';
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
-- 采购节点事实与操作幂等;不补写历史订单的购买、授权或收货事实。
|
||||||
|
CREATE TABLE ll_procurement_flow (
|
||||||
|
order_id BIGINT NOT NULL COMMENT '采购订单ID,一单一个履约批次',
|
||||||
|
customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
||||||
|
purchased_at DATETIME(3) NULL COMMENT '真实购买时间',
|
||||||
|
purchased_product_name VARCHAR(255) NULL COMMENT '实际购买商品',
|
||||||
|
purchased_specification VARCHAR(500) NULL COMMENT '实际购买规格',
|
||||||
|
purchased_quantity BIGINT NULL COMMENT '实际购买件数',
|
||||||
|
purchase_amount DECIMAL(20,2) NULL COMMENT '供应商实付原币金额',
|
||||||
|
purchase_currency CHAR(3) NULL COMMENT '供应商实付原币CNY或USD',
|
||||||
|
purchase_voucher_id BIGINT NULL COMMENT '购买凭证引用',
|
||||||
|
purchase_issue VARCHAR(500) NULL COMMENT '购买未核定或异常说明',
|
||||||
|
purchase_confirmed_at DATETIME(3) NULL COMMENT '货款核定时间,不代表扣费成功',
|
||||||
|
actual_warehouse_id BIGINT NULL COMMENT '首次实际收货冻结的仓库ID',
|
||||||
|
actual_warehouse_code VARCHAR(128) NULL COMMENT '实际收货仓编码快照',
|
||||||
|
actual_warehouse_name VARCHAR(255) NULL COMMENT '实际收货仓名称快照',
|
||||||
|
overseas_received_at DATETIME(3) NULL COMMENT '海外整批收货完成时间',
|
||||||
|
packing_version INT NULL COMMENT '当前确认装箱清单版本',
|
||||||
|
overseas_shipped_at DATETIME(3) NULL COMMENT '国际段整批实际交寄时间',
|
||||||
|
domestic_received_at DATETIME(3) NULL COMMENT '国内整批收货完成时间',
|
||||||
|
charges_confirmed_at DATETIME(3) NULL COMMENT '国内整单费用核定时间',
|
||||||
|
customer_shipped_at DATETIME(3) NULL COMMENT '国内寄客户实际交寄时间',
|
||||||
|
domestic_receiver_name VARCHAR(128) NULL COMMENT '国际段国内收件人',
|
||||||
|
domestic_receiver_phone VARCHAR(64) NULL COMMENT '国际段国内收件电话',
|
||||||
|
domestic_receiver_address VARCHAR(1000) NULL COMMENT '国际段国内接收地址',
|
||||||
|
cancelled_at DATETIME(3) NULL COMMENT '购买前取消时间',
|
||||||
|
closed_at DATETIME(3) NULL COMMENT '异常关闭时间',
|
||||||
|
control_reason VARCHAR(1000) NULL COMMENT '取消或关闭原因',
|
||||||
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||||
|
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
|
||||||
|
PRIMARY KEY(order_id), KEY idx_procurement_flow_customer(customer_id,order_id),
|
||||||
|
CONSTRAINT chk_procurement_purchase_quantity CHECK(purchased_quantity IS NULL OR purchased_quantity>0),
|
||||||
|
CONSTRAINT chk_procurement_purchase_amount CHECK(purchase_amount IS NULL OR purchase_amount>=0)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购单一批次履约事实';
|
||||||
|
|
||||||
|
CREATE TABLE ll_procurement_command (
|
||||||
|
id BIGINT NOT NULL COMMENT '操作记录ID', order_id BIGINT NOT NULL COMMENT '采购订单ID',
|
||||||
|
customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键', action VARCHAR(48) NOT NULL COMMENT '采购节点动作',
|
||||||
|
idempotency_key VARCHAR(128) NOT NULL COMMENT '操作幂等键', request_hash CHAR(64) NOT NULL COMMENT '请求摘要',
|
||||||
|
operator_id VARCHAR(128) NOT NULL COMMENT '执行人', reason VARCHAR(1000) NOT NULL COMMENT '操作依据',
|
||||||
|
detail_json JSON NOT NULL COMMENT '内部操作及更正依据快照,不直接对客展示',
|
||||||
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '执行时间',
|
||||||
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_command(order_id,action,idempotency_key),
|
||||||
|
KEY idx_procurement_command_customer(customer_id,order_id,created_at)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购节点幂等与不可变审计';
|
||||||
|
|
||||||
|
CREATE TABLE ll_procurement_budget_authorization (
|
||||||
|
id BIGINT NOT NULL COMMENT '预算授权ID', order_id BIGINT NOT NULL COMMENT '采购订单ID',
|
||||||
|
customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
||||||
|
previous_amount DECIMAL(20,2) NULL COMMENT '原货款预算总上限;未授权保持空', previous_currency CHAR(3) NOT NULL COMMENT '原预算币种',
|
||||||
|
authorized_amount DECIMAL(20,2) NOT NULL COMMENT '客户授权的新货款总上限', currency CHAR(3) NOT NULL COMMENT '客户授权币种',
|
||||||
|
voucher_file_id BIGINT NOT NULL COMMENT '客户确认书面或聊天凭证', reason VARCHAR(1000) NOT NULL COMMENT '授权依据',
|
||||||
|
reviewed_by VARCHAR(128) NOT NULL COMMENT '核验人员', reviewed_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '核验时间',
|
||||||
|
PRIMARY KEY(id), KEY idx_procurement_budget_order(customer_id,order_id,id),
|
||||||
|
CONSTRAINT chk_procurement_budget_amount CHECK(authorized_amount>=0 AND previous_amount>=0),
|
||||||
|
CONSTRAINT chk_procurement_budget_currency CHECK(currency IN('CNY','USD') AND previous_currency IN('CNY','USD'))
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购货款预算授权核验历史';
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
-- 采购实收、差异、装箱和两段整批发运事实。不产生WMS库存流水,不回填历史采购数量。
|
||||||
|
CREATE TABLE ll_procurement_receipt (
|
||||||
|
id BIGINT NOT NULL COMMENT '实收明细ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
||||||
|
receipt_no VARCHAR(64) NOT NULL COMMENT '采购收货业务编号', leg VARCHAR(16) NOT NULL COMMENT 'OVERSEAS海外或DOMESTIC国内',
|
||||||
|
source_carton_id BIGINT NULL COMMENT '国内实收关联原国际交寄箱,海外为空', warehouse_id BIGINT NULL COMMENT '海外实际收货仓',
|
||||||
|
good_quantity BIGINT NOT NULL COMMENT '可发合格件数', damaged_quantity BIGINT NOT NULL COMMENT '破损待处置件数', extra_quantity BIGINT NOT NULL COMMENT '多到件数,不增加可发数量',
|
||||||
|
received_at DATETIME(3) NOT NULL COMMENT '实际收货时间', active TINYINT(1) NOT NULL DEFAULT 1 COMMENT '当前有效实收事实',
|
||||||
|
supersedes_id BIGINT NULL COMMENT '受控更正所替代的原实收记录', created_by VARCHAR(128) NOT NULL COMMENT '登记人员',
|
||||||
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '登记时间',
|
||||||
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_receipt_no(receipt_no), KEY idx_procurement_receipt_source(order_id,leg,source_carton_id,active),
|
||||||
|
CONSTRAINT chk_procurement_receipt_quantity CHECK(good_quantity>=0 AND damaged_quantity>=0 AND extra_quantity>=0 AND good_quantity+damaged_quantity+extra_quantity>0),
|
||||||
|
CONSTRAINT chk_procurement_receipt_leg CHECK((leg='OVERSEAS' AND source_carton_id IS NULL) OR (leg='DOMESTIC' AND source_carton_id IS NOT NULL))
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购分次实收与受控更正事实';
|
||||||
|
|
||||||
|
CREATE TABLE ll_procurement_disposition (
|
||||||
|
id BIGINT NOT NULL COMMENT '差异处理ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
||||||
|
leg VARCHAR(16) NOT NULL COMMENT 'OVERSEAS海外或DOMESTIC国内', source_carton_id BIGINT NULL COMMENT '国内原交寄箱来源',
|
||||||
|
receipt_id BIGINT NULL COMMENT '破损或多货对应实收记录,短少为空', kind VARCHAR(24) NOT NULL COMMENT 'SHORTAGE短少、DAMAGED破损、EXTRA多货',
|
||||||
|
quantity BIGINT NOT NULL COMMENT '已批准处置件数', decision VARCHAR(32) NOT NULL COMMENT 'ACCEPT_SHORTAGE确认短少、DISPOSE_DAMAGED拒收或处置、RETURN_EXTRA退回多货',
|
||||||
|
active TINYINT(1) NOT NULL DEFAULT 1 COMMENT '当前有效处置;撤销只改变有效性并保留原事实',
|
||||||
|
voucher_file_id BIGINT NOT NULL COMMENT '本单客户确认或实际处置凭证', reason VARCHAR(1000) NOT NULL COMMENT '处置依据',
|
||||||
|
created_by VARCHAR(128) NOT NULL COMMENT '采购管理人员', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '确认时间',
|
||||||
|
PRIMARY KEY(id), KEY idx_procurement_disposition_source(order_id,leg,source_carton_id,receipt_id,kind),
|
||||||
|
CONSTRAINT chk_procurement_disposition_quantity CHECK(quantity>0)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购单内差异处置,不自动退款';
|
||||||
|
|
||||||
|
CREATE TABLE ll_procurement_manifest (
|
||||||
|
id BIGINT NOT NULL COMMENT '装箱清单ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
||||||
|
version INT NOT NULL COMMENT '订单内装箱版本', status VARCHAR(16) NOT NULL COMMENT 'DRAFT草稿、CONFIRMED已确认、SUPERSEDED已替代',
|
||||||
|
confirmed_at DATETIME(3) NULL COMMENT '确认时间', created_by VARCHAR(128) NOT NULL COMMENT '制单人',
|
||||||
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '版本保存时间',
|
||||||
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_manifest_version(order_id,version),
|
||||||
|
CONSTRAINT chk_procurement_manifest_status CHECK(status IN('DRAFT','CONFIRMED','SUPERSEDED'))
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购装箱清单不可变版本';
|
||||||
|
|
||||||
|
CREATE TABLE ll_procurement_carton (
|
||||||
|
id BIGINT NOT NULL COMMENT '版本内箱记录ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', manifest_id BIGINT NOT NULL COMMENT '装箱清单版本',
|
||||||
|
carton_no VARCHAR(64) NOT NULL COMMENT '采购订单内业务箱号', length_cm DECIMAL(12,2) NOT NULL COMMENT '外箱长厘米',
|
||||||
|
width_cm DECIMAL(12,2) NOT NULL COMMENT '外箱宽厘米', height_cm DECIMAL(12,2) NOT NULL COMMENT '外箱高厘米',
|
||||||
|
gross_weight_kg DECIMAL(12,3) NOT NULL COMMENT '封箱毛重千克', quantity BIGINT NOT NULL COMMENT '本箱合格商品总件数',
|
||||||
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_carton_version(manifest_id,carton_no), KEY idx_procurement_carton_order(order_id,manifest_id),
|
||||||
|
CONSTRAINT chk_procurement_carton_measurement CHECK(length_cm>0 AND width_cm>0 AND height_cm>0 AND gross_weight_kg>0 AND quantity>0)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购版本化逐箱实测与件数';
|
||||||
|
|
||||||
|
CREATE TABLE ll_procurement_carton_source (
|
||||||
|
carton_id BIGINT NOT NULL COMMENT '版本内箱ID', receipt_id BIGINT NOT NULL COMMENT '海外实收明细来源', quantity BIGINT NOT NULL COMMENT '从该实收装入本箱的件数',
|
||||||
|
PRIMARY KEY(carton_id,receipt_id), KEY idx_procurement_carton_receipt(receipt_id), CONSTRAINT chk_procurement_carton_source_quantity CHECK(quantity>0)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购箱内货物的实收来源与数量';
|
||||||
|
|
||||||
|
CREATE TABLE ll_procurement_shipment (
|
||||||
|
id BIGINT NOT NULL COMMENT '采购交寄ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
||||||
|
shipment_no VARCHAR(64) NOT NULL COMMENT '交寄业务编号', leg VARCHAR(16) NOT NULL COMMENT 'OVERSEAS国际交寄或DOMESTIC寄客户',
|
||||||
|
manifest_id BIGINT NOT NULL COMMENT '原海外装箱清单版本', shipped_at DATETIME(3) NOT NULL COMMENT '整批真实交承运方时间',
|
||||||
|
address_snapshot JSON NOT NULL COMMENT '本段交寄时的收寄姓名电话地址快照', created_by VARCHAR(128) NOT NULL COMMENT '交寄确认人',
|
||||||
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '确认时间',
|
||||||
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_shipment_leg(order_id,leg), UNIQUE KEY uk_procurement_shipment_no(shipment_no),
|
||||||
|
CONSTRAINT chk_procurement_shipment_leg CHECK(leg IN('OVERSEAS','DOMESTIC'))
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购两段各一次整批真实交寄';
|
||||||
|
|
||||||
|
CREATE TABLE ll_procurement_shipment_item (
|
||||||
|
shipment_id BIGINT NOT NULL COMMENT '采购交寄ID', carton_id BIGINT NOT NULL COMMENT '原海外装箱版本内箱ID', quantity BIGINT NOT NULL COMMENT '本次实际交寄件数',
|
||||||
|
carrier VARCHAR(128) NOT NULL COMMENT '承运商快照', tracking_no VARCHAR(128) NOT NULL COMMENT '运单号快照',
|
||||||
|
label_snapshot JSON NOT NULL COMMENT '当次箱规、面单及货物来源快照',
|
||||||
|
PRIMARY KEY(shipment_id,carton_id), CONSTRAINT chk_procurement_shipment_item_quantity CHECK(quantity>0)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购整批交寄逐箱事实';
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
-- 采购面单、逐箱贴单、预估核对与国内一对一换包装;不重建历史发运事实。
|
||||||
|
CREATE TABLE ll_procurement_label_set (
|
||||||
|
id BIGINT NOT NULL COMMENT '面单批版本ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
||||||
|
leg VARCHAR(16) NOT NULL COMMENT 'OVERSEAS国际段或DOMESTIC寄客户段', version INT NOT NULL COMMENT '订单段内面单版本',
|
||||||
|
manifest_id BIGINT NOT NULL COMMENT '原海外确认装箱版本', cargo_hash CHAR(64) NOT NULL COMMENT '箱规及有效货物来源摘要',
|
||||||
|
sender_snapshot JSON NOT NULL COMMENT '寄件人姓名电话地址快照', receiver_snapshot JSON NOT NULL COMMENT '收件人姓名电话地址快照',
|
||||||
|
created_by VARCHAR(128) NOT NULL COMMENT '制单操作人', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '上传确认时间',
|
||||||
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_label_version(order_id,leg,version),
|
||||||
|
CONSTRAINT chk_procurement_label_leg CHECK(leg IN('OVERSEAS','DOMESTIC'))
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购两段面单不可变版本和地址快照';
|
||||||
|
|
||||||
|
CREATE TABLE ll_procurement_label_item (
|
||||||
|
label_set_id BIGINT NOT NULL COMMENT '面单批版本ID', carton_id BIGINT NOT NULL COMMENT '原海外清单箱ID',
|
||||||
|
file_id BIGINT NOT NULL COMMENT '本采购订单面单文件', page_no INT NOT NULL COMMENT '该箱对应文件页码,从1开始',
|
||||||
|
carrier VARCHAR(128) NOT NULL COMMENT '承运商', tracking_no VARCHAR(128) NOT NULL COMMENT '箱主或子运单号',
|
||||||
|
applied_at DATETIME(3) NULL COMMENT '真实贴单时间', applied_by VARCHAR(128) NULL COMMENT '贴单确认人',
|
||||||
|
PRIMARY KEY(label_set_id,carton_id), CONSTRAINT chk_procurement_label_page CHECK(page_no>0)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购逐箱文件页关联及贴单事实';
|
||||||
|
|
||||||
|
CREATE TABLE ll_procurement_estimate_review (
|
||||||
|
id BIGINT NOT NULL COMMENT '预估核对ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', label_set_id BIGINT NOT NULL COMMENT '已核对国际面单版本',
|
||||||
|
fee_id BIGINT NOT NULL COMMENT '唯一有效预估费用版本', reviewed_by VARCHAR(128) NOT NULL COMMENT '核价人员',
|
||||||
|
reviewed_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '核对时间',
|
||||||
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_estimate_review(label_set_id,fee_id)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='面单清单与预估冻结的显式核对关联';
|
||||||
|
|
||||||
|
CREATE TABLE ll_procurement_repack (
|
||||||
|
id BIGINT NOT NULL COMMENT '换包装版本ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', carton_id BIGINT NOT NULL COMMENT '原国际交寄箱ID,保持一对一来源',
|
||||||
|
length_cm DECIMAL(12,2) NOT NULL COMMENT '新外箱长厘米', width_cm DECIMAL(12,2) NOT NULL COMMENT '新外箱宽厘米',
|
||||||
|
height_cm DECIMAL(12,2) NOT NULL COMMENT '新外箱高厘米', gross_weight_kg DECIMAL(12,3) NOT NULL COMMENT '新封箱毛重千克',
|
||||||
|
voucher_file_id BIGINT NOT NULL COMMENT '本单换包装证据', reason VARCHAR(1000) NOT NULL COMMENT '换包装依据',
|
||||||
|
created_by VARCHAR(128) NOT NULL COMMENT '国内作业人员', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '登记时间',
|
||||||
|
PRIMARY KEY(id), KEY idx_procurement_repack_carton(order_id,carton_id,id),
|
||||||
|
CONSTRAINT chk_procurement_repack_measurement CHECK(length_cm>0 AND width_cm>0 AND height_cm>0 AND gross_weight_kg>0)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购国内原箱一对一换包装不可变历史';
|
||||||
|
|
||||||
|
ALTER TABLE ll_overseas_procurement_file
|
||||||
|
DROP CHECK chk_ll_procurement_file_category,
|
||||||
|
MODIFY COLUMN category VARCHAR(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'RECEIPT实收、VOUCHER费用、LABEL面单、PURCHASE采购、BUDGET预算、EXCEPTION异常凭证',
|
||||||
|
ADD CONSTRAINT chk_ll_procurement_file_category CHECK(category IN ('RECEIPT','VOUCHER','LABEL','PURCHASE','BUDGET','EXCEPTION'));
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
-- 费用链目标更正快照与关联;资金流水仍唯一归Finance,不回填旧费用。
|
||||||
|
CREATE TABLE ll_procurement_fee_correction (
|
||||||
|
id BIGINT NOT NULL COMMENT '费用链更正ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
||||||
|
correction_no VARCHAR(64) NOT NULL COMMENT '财务更正业务号', root_fee_id BIGINT NOT NULL COMMENT '原实际费用链根',
|
||||||
|
idempotency_key VARCHAR(128) NOT NULL COMMENT '本单更正请求幂等键', request_hash CHAR(64) NOT NULL COMMENT '更正目标及凭证请求摘要',
|
||||||
|
target_original_amount DECIMAL(20,2) NOT NULL COMMENT '本次正确原币总额', original_currency CHAR(3) NOT NULL COMMENT '沿用原费用币种',
|
||||||
|
exchange_rate DECIMAL(20,6) NOT NULL COMMENT '沿用原费用汇率快照', exchange_rate_month CHAR(7) NOT NULL COMMENT '原汇率月份,不取本次操作月份',
|
||||||
|
target_amount DECIMAL(20,2) NOT NULL COMMENT '正确总额折算CNY', previous_net_amount DECIMAL(20,2) NOT NULL COMMENT '确认前整链净实扣CNY',
|
||||||
|
difference_amount DECIMAL(20,2) NOT NULL COMMENT 'CNY正差额追加、负差额退款、零差额仅留核对记录',
|
||||||
|
voucher_file_id BIGINT NOT NULL COMMENT '本订单财务更正凭证', reason VARCHAR(500) NOT NULL COMMENT '更正依据',
|
||||||
|
created_by VARCHAR(128) NOT NULL COMMENT '授权财务操作人', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '确认时间',
|
||||||
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_correction_no(correction_no), UNIQUE KEY uk_procurement_correction_request(order_id,idempotency_key),
|
||||||
|
KEY idx_procurement_correction_root(order_id,root_fee_id,id),
|
||||||
|
CONSTRAINT chk_procurement_correction_amount CHECK(target_original_amount>=0 AND target_amount>=0 AND previous_net_amount>=0 AND exchange_rate>0)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购费用链更正目标与原汇率快照';
|
||||||
|
|
||||||
|
CREATE TABLE ll_procurement_fee_correction_item (
|
||||||
|
correction_id BIGINT NOT NULL COMMENT '本次费用链更正ID', fee_id BIGINT NOT NULL COMMENT '本次产生的独立正差额或退款费用ID',
|
||||||
|
PRIMARY KEY(correction_id,fee_id), UNIQUE KEY uk_procurement_correction_fee(fee_id)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购费用目标更正与逐笔资金事实关联';
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
-- 单采购订单内的更正说明、阻断异常与关闭证据。不生成WMS库存或退货运输任务。
|
||||||
|
CREATE TABLE ll_procurement_control_note (
|
||||||
|
id BIGINT NOT NULL COMMENT '采购更正说明ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
||||||
|
note_no VARCHAR(64) NOT NULL COMMENT '更正说明业务号', target_type VARCHAR(24) NOT NULL COMMENT '购买、仓库、实收或交寄事实类型',
|
||||||
|
target_id BIGINT NULL COMMENT '本单事实对象引用,购买为空', blocking TINYINT(1) NOT NULL COMMENT '是否阻断后续计划履约',
|
||||||
|
voucher_file_id BIGINT NOT NULL COMMENT '本单内部事实更正凭证', reason VARCHAR(1000) NOT NULL COMMENT '内部更正说明',
|
||||||
|
client_summary VARCHAR(500) NULL COMMENT '人工确认的对客摘要,不复制内部原始内容',
|
||||||
|
original_value_json JSON NULL COMMENT '服务端记录的原事实快照', corrected_value_json JSON NULL COMMENT '服务端记录的更正事实快照',
|
||||||
|
created_by VARCHAR(128) NOT NULL COMMENT '采购管理操作人', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '登记时间',
|
||||||
|
resolved_by VARCHAR(128) NULL COMMENT '处理确认人', resolved_at DATETIME(3) NULL COMMENT '阻断解除时间',
|
||||||
|
resolution_reason VARCHAR(1000) NULL COMMENT '内部处理结果', resolution_voucher_id BIGINT NULL COMMENT '本单处理凭证',
|
||||||
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_note_no(note_no), KEY idx_procurement_note_block(order_id,blocking,resolved_at)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购不可覆盖事实的更正说明及阻断异常';
|
||||||
|
|
||||||
|
CREATE TABLE ll_procurement_closure (
|
||||||
|
id BIGINT NOT NULL COMMENT '采购异常关闭ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
||||||
|
closure_no VARCHAR(64) NOT NULL COMMENT '异常关闭业务号', customer_voucher_file_id BIGINT NOT NULL COMMENT '客户同意停止履约凭证',
|
||||||
|
financial_conclusion VARCHAR(1000) NOT NULL COMMENT '已知费用及后续无需收费的处理结论,不改变资金事实',
|
||||||
|
reason VARCHAR(1000) NOT NULL COMMENT '内部关闭原因', client_summary VARCHAR(500) NOT NULL COMMENT '人工确认的对客关闭摘要',
|
||||||
|
created_by VARCHAR(128) NOT NULL COMMENT '采购管理确认人', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '关闭确认时间',
|
||||||
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_closure_order(order_id), UNIQUE KEY uk_procurement_closure_no(closure_no)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购实物资金收口后的异常关闭事实';
|
||||||
|
|
||||||
|
CREATE TABLE ll_procurement_closure_item (
|
||||||
|
id BIGINT NOT NULL COMMENT '关闭货物处置ID', closure_id BIGINT NOT NULL COMMENT '采购关闭ID',
|
||||||
|
source_kind VARCHAR(32) NOT NULL COMMENT '购买未达、在途未达、合格、破损或多货来源', source_id BIGINT NULL COMMENT '原实收或国际交寄箱,购买未达为空',
|
||||||
|
quantity BIGINT NOT NULL COMMENT '本来源最终明确去向件数', decision VARCHAR(40) NOT NULL COMMENT '供应商保管、退还、报失、客户授权保管或处置',
|
||||||
|
destination VARCHAR(500) NOT NULL COMMENT '实际去向及接收方说明', voucher_file_id BIGINT NOT NULL COMMENT '本单实物处置证明',
|
||||||
|
PRIMARY KEY(id), KEY idx_procurement_closure_source(closure_id,source_kind,source_id),
|
||||||
|
CONSTRAINT chk_procurement_closure_quantity CHECK(quantity>0)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='异常关闭逐来源剩余货物最终去向,不产生新发运';
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
-- 采购费用核定入口。仅结构变更,不回填旧财务事实,不重试或补扣测试存量。
|
||||||
|
ALTER TABLE ll_overseas_procurement_fee
|
||||||
|
ADD COLUMN confirmation_origin VARCHAR(16) NOT NULL DEFAULT 'BUSINESS' COMMENT '核定入口:BUSINESS业务节点、FINANCIAL财务操作',
|
||||||
|
ADD CONSTRAINT chk_procurement_confirmation_origin CHECK(confirmation_origin IN('BUSINESS','FINANCIAL'));
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS ll_selfop_warehouse_daily_sales (
|
||||||
|
sales_run_id BIGINT NOT NULL COMMENT '完整销量计算版本标识',
|
||||||
|
source_account VARCHAR(64) NOT NULL COMMENT '受控来源账号别名,不保存密钥',
|
||||||
|
warehouse_code VARCHAR(64) NOT NULL COMMENT '来源仓库原始编码',
|
||||||
|
business_date DATE NOT NULL COMMENT '已核准业务日',
|
||||||
|
observed_quantity DECIMAL(38,6) NULL COMMENT '该日PCS非负有效出库量之和,无有效行时为空',
|
||||||
|
invalid_row_count BIGINT NOT NULL COMMENT '该日数量为空或负数或单位非PCS的日事实行数',
|
||||||
|
source_row_count BIGINT NOT NULL COMMENT '该日参与仓库汇总的SKU日事实总行数',
|
||||||
|
created_at DATETIME(3) NOT NULL COMMENT 'UTC创建时间',
|
||||||
|
updated_at DATETIME(3) NOT NULL COMMENT 'UTC更新时间',
|
||||||
|
PRIMARY KEY (sales_run_id,source_account,warehouse_code,business_date),
|
||||||
|
CONSTRAINT chk_selfop_warehouse_daily_sales CHECK (source_row_count > 0 AND invalid_row_count >= 0 AND invalid_row_count <= source_row_count AND (observed_quantity IS NULL OR observed_quantity >= 0))
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='完整销量版本按仓按日汇总,随SKU日事实批次原子构建';
|
||||||
|
|
||||||
|
SET @selfop_warehouse_daily_ready_ddl = IF(
|
||||||
|
EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_selfop_sync_run' AND column_name='warehouse_daily_ready'),
|
||||||
|
'SELECT 1',
|
||||||
|
'ALTER TABLE ll_selfop_sync_run ADD COLUMN warehouse_daily_ready TINYINT NOT NULL DEFAULT 0 COMMENT ''仓库日汇总已完整构建并校验,含完整空版本''');
|
||||||
|
PREPARE selfop_warehouse_daily_ready_stmt FROM @selfop_warehouse_daily_ready_ddl;
|
||||||
|
EXECUTE selfop_warehouse_daily_ready_stmt;
|
||||||
|
DEALLOCATE PREPARE selfop_warehouse_daily_ready_stmt;
|
||||||
+44
@@ -0,0 +1,44 @@
|
|||||||
|
-- Region: OVERSEAS
|
||||||
|
-- Schema: baiyue_lastleg
|
||||||
|
-- Purpose: 统一退货进销存 UNION 文本列排序规则,去除查询转换需求
|
||||||
|
-- Preconditions: 八张退货表已存在;核对字段长度、可空性、默认值及唯一索引无目标规则冲突
|
||||||
|
-- Postconditions: 指定文本字段及表默认规则统一为 utf8mb4_unicode_ci;不修改数量、状态或业务标识
|
||||||
|
-- 不重放空库基线;本文件可重复执行。DDL 非事务,失败停止并核对后续执行范围。
|
||||||
|
ALTER TABLE ll_return_order
|
||||||
|
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||||
|
MODIFY COLUMN customer_id VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID和隔离键',
|
||||||
|
MODIFY COLUMN overseas_warehouse_id VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作海外仓ID';
|
||||||
|
ALTER TABLE ll_return_order_item
|
||||||
|
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||||
|
MODIFY COLUMN sku_code VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SKU编码',
|
||||||
|
MODIFY COLUMN product_name_zh VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '中文品名';
|
||||||
|
ALTER TABLE ll_return_receipt
|
||||||
|
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||||
|
MODIFY COLUMN receipt_no VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '签收单号';
|
||||||
|
ALTER TABLE ll_return_receipt_item
|
||||||
|
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||||
|
MODIFY COLUMN sku_code VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SKU编码';
|
||||||
|
ALTER TABLE ll_return_inventory_carton
|
||||||
|
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||||
|
MODIFY COLUMN customer_id VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID和隔离键',
|
||||||
|
MODIFY COLUMN overseas_warehouse_id VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '海外仓ID',
|
||||||
|
MODIFY COLUMN carton_mark VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '退货箱号和箱唛编码';
|
||||||
|
ALTER TABLE ll_return_inventory_carton_item
|
||||||
|
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||||
|
MODIFY COLUMN sku_code VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'SKU编码',
|
||||||
|
MODIFY COLUMN product_name_zh VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '中文品名';
|
||||||
|
ALTER TABLE ll_return_inventory_outbound_movement
|
||||||
|
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||||
|
MODIFY COLUMN customer_id VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '库存所属客户ID和隔离键',
|
||||||
|
MODIFY COLUMN overseas_warehouse_id VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '实际出库海外仓ID',
|
||||||
|
MODIFY COLUMN sku_code VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本次出库SKU编码快照',
|
||||||
|
MODIFY COLUMN product_name_zh VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '中文品名快照',
|
||||||
|
MODIFY COLUMN outbound_no VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '本次退货出库业务单号';
|
||||||
|
ALTER TABLE ll_return_sku_conversion
|
||||||
|
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||||
|
MODIFY COLUMN customer_id VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户隔离键',
|
||||||
|
MODIFY COLUMN overseas_warehouse_id VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作海外仓ID',
|
||||||
|
MODIFY COLUMN old_sku_code VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '换标前SKU',
|
||||||
|
MODIFY COLUMN new_sku_code VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '换标后SKU',
|
||||||
|
MODIFY COLUMN product_name_zh VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '中文品名快照',
|
||||||
|
MODIFY COLUMN relabel_no VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '换标单号';
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
-- TEST ONLY. Rebuild the explicitly authorized appointment header and item tables.
|
||||||
|
-- The new command-history table MUST NOT already exist; check this before executing any DROP.
|
||||||
|
-- If it exists, stop and inspect the prior outcome. Do not clear command history or blindly retry.
|
||||||
|
-- Requires explicit approval; never run against production or as automatic startup SQL.
|
||||||
|
-- Caller must verify the TEST connection before executing.
|
||||||
|
USE baiyue_lastleg;
|
||||||
|
DROP TABLE ll_inbound_fba_appointment_item;
|
||||||
|
DROP TABLE ll_inbound_fba_appointment;
|
||||||
|
CREATE TABLE ll_inbound_fba_appointment (
|
||||||
|
id BIGINT NOT NULL COMMENT '主键ID',
|
||||||
|
appointment_no VARCHAR(64) NOT NULL COMMENT '系统预约业务单号,不是外部约号',
|
||||||
|
confirmation_no VARCHAR(128) NULL COMMENT '收货方正式外部确认号',
|
||||||
|
planned_date DATE NULL COMMENT '计划当地日期,可只有日期而无时段',
|
||||||
|
planned_at DATETIME(3) NULL COMMENT '计划开始当地时间,待定可空',
|
||||||
|
planned_end_at DATETIME(3) NULL COMMENT '计划结束当地时间',
|
||||||
|
appointment_at DATETIME(3) NULL COMMENT '对方确认开始当地时间',
|
||||||
|
appointment_end_at DATETIME(3) NULL COMMENT '对方确认结束当地时间',
|
||||||
|
appointment_start_utc DATETIME(3) NULL COMMENT '确认开始UTC时间点',
|
||||||
|
appointment_end_utc DATETIME(3) NULL COMMENT '确认结束UTC时间点',
|
||||||
|
timezone VARCHAR(64) NULL COMMENT '目的仓权威IANA时区,未维护不得确认',
|
||||||
|
origin_warehouse_id VARCHAR(64) NOT NULL COMMENT '实际起运仓',
|
||||||
|
version INT NOT NULL DEFAULT 0 COMMENT '并发版本',
|
||||||
|
appointment_status VARCHAR(32) NOT NULL DEFAULT 'PENDING' COMMENT 'PENDING安排/SUCCESS对方确认/FAILED/CANCELLED',
|
||||||
|
appointment_remark VARCHAR(1000) NULL COMMENT '备注或取消原因',
|
||||||
|
fba_warehouse_code VARCHAR(128) NOT NULL COMMENT 'FBA目的仓编码',
|
||||||
|
selected_count INT NOT NULL DEFAULT 0 COMMENT '真实货源票数',
|
||||||
|
created_by VARCHAR(128) NOT NULL COMMENT '登录操作人',
|
||||||
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建UTC时间',
|
||||||
|
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '更新UTC时间',
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
UNIQUE KEY uk_ll_fba_appointment_no (appointment_no),
|
||||||
|
UNIQUE KEY uk_ll_fba_external_confirmation (fba_warehouse_code,confirmation_no),
|
||||||
|
KEY idx_ll_fba_appointment_list (appointment_at,appointment_status,fba_warehouse_code),
|
||||||
|
KEY idx_ll_fba_appointment_planned (planned_at,appointment_status)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='FBA预约安排与正式确认唯一主记录';
|
||||||
|
|
||||||
|
CREATE TABLE ll_inbound_fba_appointment_item (
|
||||||
|
id BIGINT NOT NULL COMMENT '记录主键',
|
||||||
|
appointment_id BIGINT NOT NULL COMMENT '预约主记录标识',
|
||||||
|
source_key VARCHAR(160) NOT NULL COMMENT '稳定ORDER或BOOKING货源键',
|
||||||
|
source_version VARCHAR(160) NULL COMMENT '保存时核实的来源版本',
|
||||||
|
customer_id VARCHAR(128) NOT NULL COMMENT '本票所属客户',
|
||||||
|
order_id BIGINT NULL COMMENT '尚未形成尾程订单时为空',
|
||||||
|
inbound_code VARCHAR(128) NULL COMMENT '真实入仓码,不伪造',
|
||||||
|
fba_warehouse_code VARCHAR(128) NOT NULL COMMENT '目的FBA仓编码',
|
||||||
|
package_count INT NULL COMMENT '所选整票预报箱数,未知保持空',
|
||||||
|
active TINYINT(1) NOT NULL DEFAULT 1 COMMENT '取消或失败后释放货源占用',
|
||||||
|
active_source_key VARCHAR(160) GENERATED ALWAYS AS (CASE WHEN active=1 THEN source_key ELSE NULL END) STORED COMMENT '有效货源唯一占用键',
|
||||||
|
active_order_id BIGINT GENERATED ALWAYS AS (CASE WHEN active=1 THEN order_id ELSE NULL END) STORED COMMENT '有效订单唯一占用键',
|
||||||
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建UTC时间',
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
UNIQUE KEY uk_ll_fba_item_source (appointment_id,source_key),
|
||||||
|
UNIQUE KEY uk_ll_fba_active_source (active_source_key),
|
||||||
|
UNIQUE KEY uk_ll_fba_active_order (active_order_id),
|
||||||
|
KEY idx_ll_fba_item_source_lookup (source_key,customer_id),
|
||||||
|
KEY idx_ll_fba_item_customer_order (customer_id,order_id)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='入仓前后共用的预约真实货源';
|
||||||
|
|
||||||
|
CREATE TABLE ll_fba_appointment_command (
|
||||||
|
command_key VARCHAR(128) NOT NULL COMMENT '持久化幂等键',
|
||||||
|
request_hash CHAR(64) NOT NULL COMMENT '操作、操作者和请求摘要',
|
||||||
|
operation VARCHAR(96) NOT NULL COMMENT '操作类型及目标业务号',
|
||||||
|
operator_id VARCHAR(128) NOT NULL COMMENT '登录操作人',
|
||||||
|
appointment_no VARCHAR(64) NULL COMMENT '系统预约业务单号',
|
||||||
|
response_json LONGTEXT NULL COMMENT '原命令返回快照,与业务写入同事务',
|
||||||
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建UTC时间',
|
||||||
|
PRIMARY KEY(command_key),
|
||||||
|
KEY idx_ll_fba_command_appointment(appointment_no,created_at)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='预约命令与变更历史';
|
||||||
+361
-306
@@ -466,6 +466,8 @@ CREATE TABLE sys_audit_outbox (
|
|||||||
|
|
||||||
-- 服务 schema:baiyue_order
|
-- 服务 schema:baiyue_order
|
||||||
CREATE DATABASE IF NOT EXISTS baiyue_order DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
|
CREATE DATABASE IF NOT EXISTS baiyue_order DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
|
||||||
|
|
||||||
|
|
||||||
USE baiyue_order;
|
USE baiyue_order;
|
||||||
|
|
||||||
CREATE TABLE ord_customer_address (
|
CREATE TABLE ord_customer_address (
|
||||||
@@ -1130,7 +1132,7 @@ CREATE TABLE wh_warehouse (
|
|||||||
warehouse_name varchar(120) NOT NULL COMMENT '仓库名称',
|
warehouse_name varchar(120) NOT NULL COMMENT '仓库名称',
|
||||||
warehouse_type varchar(32) NOT NULL DEFAULT 'DOMESTIC' COMMENT '公共仓库类型:DOMESTIC国内仓、FBA亚马逊仓、OVERSEAS普通海外仓、OVERSEAS_PARTNER海外合作仓',
|
warehouse_type varchar(32) NOT NULL DEFAULT 'DOMESTIC' COMMENT '公共仓库类型:DOMESTIC国内仓、FBA亚马逊仓、OVERSEAS普通海外仓、OVERSEAS_PARTNER海外合作仓',
|
||||||
country_code char(2) NOT NULL COMMENT '所在国家二字码',
|
country_code char(2) NOT NULL COMMENT '所在国家二字码',
|
||||||
timezone varchar(64) NOT NULL COMMENT '仓库所在地UTC偏移量',
|
timezone varchar(64) NOT NULL COMMENT '仓库所在地IANA时区,待核实为空',
|
||||||
contact_name varchar(64) DEFAULT NULL COMMENT '仓库联系人',
|
contact_name varchar(64) DEFAULT NULL COMMENT '仓库联系人',
|
||||||
contact_phone varchar(32) DEFAULT NULL COMMENT '联系电话',
|
contact_phone varchar(32) DEFAULT NULL COMMENT '联系电话',
|
||||||
contact_email varchar(128) DEFAULT NULL COMMENT '联系邮箱',
|
contact_email varchar(128) DEFAULT NULL COMMENT '联系邮箱',
|
||||||
@@ -1420,7 +1422,6 @@ CREATE TABLE fl_consumed_event (
|
|||||||
|
|
||||||
CREATE TABLE fl_container_booking (
|
CREATE TABLE fl_container_booking (
|
||||||
id bigint unsigned NOT NULL COMMENT '货柜预订ID(雪花ID)',
|
id bigint unsigned NOT NULL COMMENT '货柜预订ID(雪花ID)',
|
||||||
booking_no varchar(40) NOT NULL COMMENT '平台唯一货柜预订单号',
|
|
||||||
container_no varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '真实集装箱号权威快照;同一订舱内唯一,不同提单允许复用;确认前允许修订',
|
container_no varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '真实集装箱号权威快照;同一订舱内唯一,不同提单允许复用;确认前允许修订',
|
||||||
cabinet_no varchar(64) NOT NULL COMMENT '平台唯一内部柜号',
|
cabinet_no varchar(64) NOT NULL COMMENT '平台唯一内部柜号',
|
||||||
source_type varchar(24) NOT NULL DEFAULT 'SIMULATION' COMMENT '记录来源:SIMULATION内部模拟柜、OCEAN_BOOKING订舱真实柜',
|
source_type varchar(24) NOT NULL DEFAULT 'SIMULATION' COMMENT '记录来源:SIMULATION内部模拟柜、OCEAN_BOOKING订舱真实柜',
|
||||||
@@ -1475,7 +1476,6 @@ CREATE TABLE fl_container_booking (
|
|||||||
updated_at datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '货柜资料最后更新时间',
|
updated_at datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '货柜资料最后更新时间',
|
||||||
version int unsigned NOT NULL DEFAULT '0' COMMENT '乐观锁版本号',
|
version int unsigned NOT NULL DEFAULT '0' COMMENT '乐观锁版本号',
|
||||||
PRIMARY KEY (id),
|
PRIMARY KEY (id),
|
||||||
UNIQUE KEY uk_container_booking_no (booking_no),
|
|
||||||
UNIQUE KEY uk_container_booking_cabinet (cabinet_no),
|
UNIQUE KEY uk_container_booking_cabinet (cabinet_no),
|
||||||
UNIQUE KEY uk_container_booking_ocean_container (ocean_booking_id,container_no),
|
UNIQUE KEY uk_container_booking_ocean_container (ocean_booking_id,container_no),
|
||||||
KEY idx_container_booking_container_no (container_no,updated_at,id),
|
KEY idx_container_booking_container_no (container_no,updated_at,id),
|
||||||
@@ -5335,7 +5335,7 @@ CREATE TRIGGER trg_container_booking_before_update BEFORE UPDATE ON fl_container
|
|||||||
SELECT MAX(plan_status) INTO current_plan_status
|
SELECT MAX(plan_status) INTO current_plan_status
|
||||||
FROM baiyue_firstleg.fl_loading_plan WHERE container_booking_id = OLD.id;
|
FROM baiyue_firstleg.fl_loading_plan WHERE container_booking_id = OLD.id;
|
||||||
IF current_plan_status IN ('LOADING', 'COMPLETED') AND (
|
IF current_plan_status IN ('LOADING', 'COMPLETED') AND (
|
||||||
NOT (OLD.id <=> NEW.id) OR NOT (OLD.booking_no <=> NEW.booking_no)
|
NOT (OLD.id <=> NEW.id)
|
||||||
OR NOT (OLD.cabinet_no <=> NEW.cabinet_no)
|
OR NOT (OLD.cabinet_no <=> NEW.cabinet_no)
|
||||||
OR NOT (OLD.channel_group_code <=> NEW.channel_group_code)
|
OR NOT (OLD.channel_group_code <=> NEW.channel_group_code)
|
||||||
OR NOT (OLD.channel_code <=> NEW.channel_code) OR NOT (OLD.channel_name <=> NEW.channel_name)
|
OR NOT (OLD.channel_code <=> NEW.channel_code) OR NOT (OLD.channel_name <=> NEW.channel_name)
|
||||||
@@ -6706,6 +6706,12 @@ INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at)
|
|||||||
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at) VALUES (4000001,5107001,0,CURRENT_TIMESTAMP(3));
|
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at) VALUES (4000001,5107001,0,CURRENT_TIMESTAMP(3));
|
||||||
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at) VALUES (4000001,5107002,0,CURRENT_TIMESTAMP(3));
|
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at) VALUES (4000001,5107002,0,CURRENT_TIMESTAMP(3));
|
||||||
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at) VALUES (4000001,5107003,0,CURRENT_TIMESTAMP(3));
|
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at) VALUES (4000001,5107003,0,CURRENT_TIMESTAMP(3));
|
||||||
|
INSERT INTO iam_permission (id, tenant_id, app_code, permission_type, parent_id, permission_code, permission_name, route_path, http_method, sort_no, status, built_in, created_at, updated_at, deleted) VALUES (5107280,0,'PLATFORM','MENU',0,'platform:appointment:list','预约列表','/appointment-calendar','GET',740,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0);
|
||||||
|
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at) VALUES (4000001,5107280,0,CURRENT_TIMESTAMP(3));
|
||||||
|
INSERT INTO iam_permission (id, tenant_id, app_code, permission_type, parent_id, permission_code, permission_name, route_path, http_method, sort_no, status, built_in, created_at, updated_at, deleted) VALUES (5107281,0,'PLATFORM','BUTTON',5107280,'platform:appointment:delete','删除预约',NULL,'DELETE',741,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0);
|
||||||
|
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at) VALUES (4000001,5107281,0,CURRENT_TIMESTAMP(3));
|
||||||
|
INSERT INTO iam_permission (id, tenant_id, app_code, permission_type, parent_id, permission_code, permission_name, route_path, http_method, sort_no, status, built_in, created_at, updated_at, deleted) VALUES (5107282,0,'PLATFORM','BUTTON',5107280,'platform:appointment:followup','记录预约跟进',NULL,'POST',742,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0);
|
||||||
|
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at) VALUES (4000001,5107282,0,CURRENT_TIMESTAMP(3));
|
||||||
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at) VALUES (4000001,5107010,0,CURRENT_TIMESTAMP(3));
|
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at) VALUES (4000001,5107010,0,CURRENT_TIMESTAMP(3));
|
||||||
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at) VALUES (4000001,5107011,0,CURRENT_TIMESTAMP(3));
|
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at) VALUES (4000001,5107011,0,CURRENT_TIMESTAMP(3));
|
||||||
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at) VALUES (4000001,5107012,0,CURRENT_TIMESTAMP(3));
|
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id, created_at) VALUES (4000001,5107012,0,CURRENT_TIMESTAMP(3));
|
||||||
@@ -7135,324 +7141,324 @@ INSERT INTO wh_service_capability (id, tenant_id, warehouse_id, capability_code,
|
|||||||
INSERT INTO wh_service_capability (id, tenant_id, warehouse_id, capability_code, capability_name, enabled, cutoff_time, description, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000400004,0,193000000000200004,'RECEIVING','海外收货',1,'16:00:00','纽约仓海外接柜入仓收货能力',NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_service_capability (id, tenant_id, warehouse_id, capability_code, capability_name, enabled, cutoff_time, description, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000400004,0,193000000000200004,'RECEIVING','海外收货',1,'16:00:00','纽约仓海外接柜入仓收货能力',NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
|
|
||||||
-- 系统基线 wh_warehouse:318 行。
|
-- 系统基线 wh_warehouse:318 行。
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000001,0,'ABE2',NULL,'ABE2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000001,0,'ABE2',NULL,'ABE2','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000002,0,'ABE3',NULL,'ABE3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000002,0,'ABE3',NULL,'ABE3','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000003,0,'ABE4','126','ABE4','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000003,0,'ABE4','126','ABE4','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000004,0,'ABE5',NULL,'ABE5','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000004,0,'ABE5',NULL,'ABE5','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000005,0,'ABE8','39','ABE8','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000005,0,'ABE8','39','ABE8','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000006,0,'ABQ2','76','ABQ2','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000006,0,'ABQ2','76','ABQ2','FBA','US','America/Denver',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000007,0,'ACY2','101','ACY2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000007,0,'ACY2','101','ACY2','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000008,0,'AFW1',NULL,'AFW1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000008,0,'AFW1',NULL,'AFW1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000009,0,'AFW5','181','AFW5','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000009,0,'AFW5','181','AFW5','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000010,0,'AKR1','153','AKR1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000010,0,'AKR1','153','AKR1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000011,0,'ALB1','102','ALB1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000011,0,'ALB1','102','ALB1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000012,0,'AMA1','132','AMA1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000012,0,'AMA1','132','AMA1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000013,0,'ATL2N','157','ATL2N','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000013,0,'ATL2N','157','ATL2N','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000014,0,'ATL3',NULL,'ATL3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000014,0,'ATL3',NULL,'ATL3','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000015,0,'ATL6',NULL,'ATL6','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000015,0,'ATL6',NULL,'ATL6','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000016,0,'AVP1','70','AVP1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000016,0,'AVP1','70','AVP1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000017,0,'AVP3',NULL,'AVP3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000017,0,'AVP3',NULL,'AVP3','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000018,0,'BDL1',NULL,'BDL1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000018,0,'BDL1',NULL,'BDL1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000019,0,'BFI1',NULL,'BFI1','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000019,0,'BFI1',NULL,'BFI1','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000020,0,'BFI3','34','BFI3','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000020,0,'BFI3','34','BFI3','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000021,0,'BFI7',NULL,'BFI7','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000021,0,'BFI7',NULL,'BFI7','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000022,0,'BJC1','186','BJC1','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000022,0,'BJC1','186','BJC1','FBA','US','America/Denver',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000023,0,'BNA1',NULL,'BNA1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000023,0,'BNA1',NULL,'BNA1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000024,0,'BNA2','37','BNA2','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000024,0,'BNA2','37','BNA2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000025,0,'BNA3',NULL,'BNA3','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000025,0,'BNA3',NULL,'BNA3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000026,0,'BNA4',NULL,'BNA4','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000026,0,'BNA4',NULL,'BNA4','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000027,0,'BNA6','99','BNA6','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000027,0,'BNA6','99','BNA6','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000028,0,'BOS1',NULL,'BOS1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000028,0,'BOS1',NULL,'BOS1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000029,0,'BOS2',NULL,'BOS2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000029,0,'BOS2',NULL,'BOS2','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000030,0,'BOS7','103','BOS7','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000030,0,'BOS7','103','BOS7','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000031,0,'BWI1',NULL,'BWI1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000031,0,'BWI1',NULL,'BWI1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000032,0,'BWI2',NULL,'BWI2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000032,0,'BWI2',NULL,'BWI2','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000033,0,'BWI4','150','BWI4','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000033,0,'BWI4','150','BWI4','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000034,0,'CAE1',NULL,'CAE1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000034,0,'CAE1',NULL,'CAE1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000035,0,'CHA1',NULL,'CHA1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000035,0,'CHA1',NULL,'CHA1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000036,0,'CHA2','66','CHA2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000036,0,'CHA2','66','CHA2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000037,0,'CHO1','120','CHO1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000037,0,'CHO1','120','CHO1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000038,0,'CLT2','59','CLT2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000038,0,'CLT2','59','CLT2','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000039,0,'CLT3','104','CLT3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000039,0,'CLT3','104','CLT3','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000040,0,'CMH2','123','CMH2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000040,0,'CMH2','123','CMH2','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000041,0,'CMH3','32','CMH3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000041,0,'CMH3','32','CMH3','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000042,0,'CVG1',NULL,'CVG1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000042,0,'CVG1',NULL,'CVG1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000043,0,'CVG2',NULL,'CVG2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000043,0,'CVG2',NULL,'CVG2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000044,0,'CVG3',NULL,'CVG3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000044,0,'CVG3',NULL,'CVG3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000045,0,'CVG5',NULL,'CVG5','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000045,0,'CVG5',NULL,'CVG5','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000046,0,'DCA6','135','DCA6','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000046,0,'DCA6','135','DCA6','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000047,0,'DEN2','107','DEN2','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000047,0,'DEN2','107','DEN2','FBA','US','America/Denver',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000048,0,'DEN8','73','DEN8','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000048,0,'DEN8','73','DEN8','FBA','US','America/Denver',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000049,0,'DET1','118','DET1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000049,0,'DET1','118','DET1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000050,0,'DET2','136','DET2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000050,0,'DET2','136','DET2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000051,0,'DFW5S',NULL,'DFW5S','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000051,0,'DFW5S',NULL,'DFW5S','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000052,0,'DFW6','105','DFW6','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000052,0,'DFW6','105','DFW6','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000053,0,'DFW8',NULL,'DFW8','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000053,0,'DFW8',NULL,'DFW8','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000054,0,'EWR4',NULL,'EWR4','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000054,0,'EWR4',NULL,'EWR4','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000055,0,'EWR5',NULL,'EWR5','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000055,0,'EWR5',NULL,'EWR5','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000056,0,'EWR7',NULL,'EWR7','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000056,0,'EWR7',NULL,'EWR7','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000057,0,'EWR9',NULL,'EWR9','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000057,0,'EWR9',NULL,'EWR9','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000058,0,'FAT2','43','FAT2','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000058,0,'FAT2','43','FAT2','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000059,0,'FOE1','117','FOE1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000059,0,'FOE1','117','FOE1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000060,0,'FTW1','24','FTW1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000060,0,'FTW1','24','FTW1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000061,0,'FTW2',NULL,'FTW2','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000061,0,'FTW2',NULL,'FTW2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000062,0,'FTW3',NULL,'FTW3','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000062,0,'FTW3',NULL,'FTW3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000063,0,'FTW5','48','FTW5','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000063,0,'FTW5','48','FTW5','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000064,0,'FWA4','58','FWA4','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000064,0,'FWA4','58','FWA4','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000065,0,'GEG2','108','GEG2','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000065,0,'GEG2','108','GEG2','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000066,0,'GEU2','97','GEU2','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000066,0,'GEU2','97','GEU2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000067,0,'GEU3','81','GEU3','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000067,0,'GEU3','81','GEU3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000068,0,'GEU5','100','GEU5','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000068,0,'GEU5','100','GEU5','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000069,0,'GSO1','131','GSO1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000069,0,'GSO1','131','GSO1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000070,0,'GSP1','90','GSP1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000070,0,'GSP1','90','GSP1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000071,0,'GYR2','7','GYR2','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000071,0,'GYR2','7','GYR2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000072,0,'GYR3','8','GYR3','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000072,0,'GYR3','8','GYR3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000073,0,'HGR6','130','HGR6','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000073,0,'HGR6','130','HGR6','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000074,0,'HIA1','148','HIA1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000074,0,'HIA1','148','HIA1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000075,0,'HLI2','137','HLI2','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000075,0,'HLI2','137','HLI2','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000076,0,'HOU1',NULL,'HOU1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000076,0,'HOU1',NULL,'HOU1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000077,0,'HOU2',NULL,'HOU2','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000077,0,'HOU2',NULL,'HOU2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000078,0,'HOU3',NULL,'HOU3','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000078,0,'HOU3',NULL,'HOU3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000079,0,'HOU8','49','HOU8','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000079,0,'HOU8','49','HOU8','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000080,0,'HSV1','80','HSV1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000080,0,'HSV1','80','HSV1','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000081,0,'HSV2',NULL,'HSV2','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000081,0,'HSV2',NULL,'HSV2','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000082,0,'IAH3','57','IAH3','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000082,0,'IAH3','57','IAH3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000083,0,'IAZ1','179','IAZ1','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000083,0,'IAZ1','179','IAZ1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000084,0,'ICT2','109','ICT2','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000084,0,'ICT2','109','ICT2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000085,0,'IGA3','197','IGA3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000085,0,'IGA3','197','IGA3','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000086,0,'IGQ2','110','IGQ2','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000086,0,'IGQ2','110','IGQ2','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000087,0,'ILG1','35','ILG1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000087,0,'ILG1','35','ILG1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000088,0,'IMO1','178','IMO1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000088,0,'IMO1','178','IMO1','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000089,0,'IMS1','189','IMS1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000089,0,'IMS1','189','IMS1','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000090,0,'INC1','190','INC1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000090,0,'INC1','190','INC1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000091,0,'IND2','127','IND2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000091,0,'IND2','127','IND2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000092,0,'IND4',NULL,'IND4','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000092,0,'IND4',NULL,'IND4','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000093,0,'IND5','140','IND5','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000093,0,'IND5','140','IND5','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000094,0,'IND6',NULL,'IND6','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000094,0,'IND6',NULL,'IND6','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000095,0,'IND9','17','IND9','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000095,0,'IND9','17','IND9','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000096,0,'ITX3','187','ITX3','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000096,0,'ITX3','187','ITX3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000097,0,'IUSF','169','IUSF','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000097,0,'IUSF','169','IUSF','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000098,0,'IUSJ','98','IUSJ','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000098,0,'IUSJ','98','IUSJ','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000099,0,'IUSP','83','IUSP','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000099,0,'IUSP','83','IUSP','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000100,0,'IUSQ','95','IUSQ','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000100,0,'IUSQ','95','IUSQ','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000101,0,'IUSR','158','IUSR','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000101,0,'IUSR','158','IUSR','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000102,0,'IUST','149','IUST','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000102,0,'IUST','149','IUST','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000103,0,'IUSW','156','IUSW','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000103,0,'IUSW','156','IUSW','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000104,0,'IUTE','170','IUTE','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000104,0,'IUTE','170','IUTE','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000105,0,'IUTJ','177','IUTJ','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000105,0,'IUTJ','177','IUTJ','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000106,0,'IUTL','188','IUTL','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000106,0,'IUTL','188','IUTL','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000107,0,'IWA6','191','IWA6','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000107,0,'IWA6','191','IWA6','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000108,0,'JOT1','93','JOT1','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000108,0,'JOT1','93','JOT1','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000109,0,'JVL1','125','JVL1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000109,0,'JVL1','125','JVL1','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000110,0,'KRB4',NULL,'KRB4','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000110,0,'KRB4',NULL,'KRB4','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000111,0,'KY1','60','KY1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000111,0,'KY1','60','KY1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000112,0,'LAN2','96','LAN2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000112,0,'LAN2','96','LAN2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000113,0,'LAS1','5','LAS1','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000113,0,'LAS1','5','LAS1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000114,0,'LAS2',NULL,'LAS2','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000114,0,'LAS2',NULL,'LAS2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000115,0,'LAS6','50','LAS6','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000115,0,'LAS6','50','LAS6','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000116,0,'LAX2T','19','LAX2T','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000116,0,'LAX2T','19','LAX2T','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000117,0,'LAX9','3','LAX9','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000117,0,'LAX9','3','LAX9','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000118,0,'LBE1','112','LBE1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000118,0,'LBE1','112','LBE1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000119,0,'LEX1',NULL,'LEX1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000119,0,'LEX1',NULL,'LEX1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000120,0,'LEX2',NULL,'LEX2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000120,0,'LEX2',NULL,'LEX2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000121,0,'LFT1','31','LFT1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000121,0,'LFT1','31','LFT1','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000122,0,'LGB3',NULL,'LGB3','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000122,0,'LGB3',NULL,'LGB3','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000123,0,'LGB4','45','LGB4','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000123,0,'LGB4','45','LGB4','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000124,0,'LGB6','26','LGB6','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000124,0,'LGB6','26','LGB6','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000125,0,'LGB8','2','LGB8','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000125,0,'LGB8','2','LGB8','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000126,0,'LIT2','159','LIT2','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000126,0,'LIT2','159','LIT2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000127,0,'MCC1','161','MCC1','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000127,0,'MCC1','161','MCC1','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000128,0,'MCE1','65','MCE1','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000128,0,'MCE1','65','MCE1','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000129,0,'MCI1',NULL,'MCI1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000129,0,'MCI1',NULL,'MCI1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000130,0,'MCI4','176','MCI4','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000130,0,'MCI4','176','MCI4','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000131,0,'MCO2','106','MCO2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000131,0,'MCO2','106','MCO2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000132,0,'MDT1','121','MDT1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000132,0,'MDT1','121','MDT1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000133,0,'MDT4','144','MDT4','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000133,0,'MDT4','144','MDT4','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000134,0,'MDW2','46','MDW2','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000134,0,'MDW2','46','MDW2','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000135,0,'MDW6','143','MDW6','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000135,0,'MDW6','143','MDW6','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000136,0,'MDW7',NULL,'MDW7','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000136,0,'MDW7',NULL,'MDW7','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000137,0,'MDW8',NULL,'MDW8','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000137,0,'MDW8',NULL,'MDW8','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000138,0,'MDW9','36','MDW9','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000138,0,'MDW9','36','MDW9','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000139,0,'MEM1','85','MEM1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000139,0,'MEM1','85','MEM1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000140,0,'MEM6','51','MEM6','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000140,0,'MEM6','51','MEM6','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000141,0,'MGE3','133','MGE3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000141,0,'MGE3','133','MGE3','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000142,0,'MIT2','82','MIT2','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000142,0,'MIT2','82','MIT2','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000143,0,'MKC4','67','MKC4','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000143,0,'MKC4','67','MKC4','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000144,0,'MKC6',NULL,'MKC6','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000144,0,'MKC6',NULL,'MKC6','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000145,0,'MKE1',NULL,'MKE1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000145,0,'MKE1',NULL,'MKE1','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000146,0,'MQJ1','88','MQJ1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000146,0,'MQJ1','88','MQJ1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000147,0,'MSP1',NULL,'MSP1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000147,0,'MSP1',NULL,'MSP1','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000148,0,'NJ3','175','NJ3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000148,0,'NJ3','175','NJ3','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000149,0,'OAK3','41','OAK3','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000149,0,'OAK3','41','OAK3','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000150,0,'OAK4',NULL,'OAK4','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000150,0,'OAK4',NULL,'OAK4','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000151,0,'OKC2','33','OKC2','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000151,0,'OKC2','33','OKC2','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000152,0,'OLM1','172','OLM1','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000152,0,'OLM1','172','OLM1','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000153,0,'ONT2',NULL,'ONT2','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000153,0,'ONT2',NULL,'ONT2','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000154,0,'ONT6',NULL,'ONT6','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000154,0,'ONT6',NULL,'ONT6','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000155,0,'ONT8','1','ONT8','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000155,0,'ONT8','1','ONT8','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000156,0,'ONT9','25','ONT9','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000156,0,'ONT9','25','ONT9','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000157,0,'ORD2','21','ORD2','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000157,0,'ORD2','21','ORD2','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000158,0,'ORD6',NULL,'ORD6','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000158,0,'ORD6',NULL,'ORD6','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000159,0,'ORF2','38','ORF2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000159,0,'ORF2','38','ORF2','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000160,0,'PBI3','113','PBI3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000160,0,'PBI3','113','PBI3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000161,0,'PDX7','68','PDX7','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000161,0,'PDX7','68','PDX7','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000162,0,'PHL1',NULL,'PHL1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000162,0,'PHL1',NULL,'PHL1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000163,0,'PHL3',NULL,'PHL3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000163,0,'PHL3',NULL,'PHL3','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000164,0,'PHL4','52','PHL4','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000164,0,'PHL4','52','PHL4','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000165,0,'PHL5',NULL,'PHL5','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000165,0,'PHL5',NULL,'PHL5','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000166,0,'PHL5S','171','PHL5S','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000166,0,'PHL5S','171','PHL5S','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000167,0,'PHL6','69','PHL6','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000167,0,'PHL6','69','PHL6','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000168,0,'PHL7',NULL,'PHL7','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000168,0,'PHL7',NULL,'PHL7','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000169,0,'PHL8',NULL,'PHL8','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000169,0,'PHL8',NULL,'PHL8','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000170,0,'PHX3',NULL,'PHX3','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000170,0,'PHX3',NULL,'PHX3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000171,0,'PHX5','72','PHX5','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000171,0,'PHX5','72','PHX5','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000172,0,'PHX6',NULL,'PHX6','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000172,0,'PHX6',NULL,'PHX6','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000173,0,'PHX7','74','PHX7','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000173,0,'PHX7','74','PHX7','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000174,0,'PIT1',NULL,'PIT1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000174,0,'PIT1',NULL,'PIT1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000175,0,'PIT2','78','PIT2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000175,0,'PIT2','78','PIT2','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000176,0,'POC1','128','POC1','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000176,0,'POC1','128','POC1','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000177,0,'POC2','151','POC2','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000177,0,'POC2','151','POC2','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000178,0,'POC3','129','POC3','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000178,0,'POC3','129','POC3','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000179,0,'PPO4','122','PPO4','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000179,0,'PPO4','122','PPO4','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000180,0,'PSC2','75','PSC2','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000180,0,'PSC2','75','PSC2','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000181,0,'PSP3','162','PSP3','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000181,0,'PSP3','162','PSP3','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000182,0,'QXY5','92','QXY5','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000182,0,'QXY5','92','QXY5','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000183,0,'QXY8','154','QXY8','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000183,0,'QXY8','154','QXY8','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000184,0,'QZZ7','184','QZZ7','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000184,0,'QZZ7','184','QZZ7','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000185,0,'RDU2','56','RDU2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000185,0,'RDU2','56','RDU2','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000186,0,'RDU4','145','RDU4','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000186,0,'RDU4','145','RDU4','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000187,0,'RFD2','71','RFD2','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000187,0,'RFD2','71','RFD2','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000188,0,'RFD4','174','RFD4','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000188,0,'RFD4','174','RFD4','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000189,0,'RIC1','142','RIC1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000189,0,'RIC1','142','RIC1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000190,0,'RIC2',NULL,'RIC2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000190,0,'RIC2',NULL,'RIC2','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000191,0,'RMN3','84','RMN3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000191,0,'RMN3','84','RMN3','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000192,0,'RNO1',NULL,'RNO1','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000192,0,'RNO1',NULL,'RNO1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000193,0,'RNO2',NULL,'RNO2','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000193,0,'RNO2',NULL,'RNO2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000194,0,'RNO4',NULL,'RNO4','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000194,0,'RNO4',NULL,'RNO4','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000195,0,'RYY2','94','RYY2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000195,0,'RYY2','94','RYY2','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000196,0,'SAT1','23','SAT1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000196,0,'SAT1','23','SAT1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000197,0,'SAT4','61','SAT4','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000197,0,'SAT4','61','SAT4','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000198,0,'SAT6','183','SAT6','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000198,0,'SAT6','183','SAT6','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000199,0,'SAV3','124','SAV3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000199,0,'SAV3','124','SAV3','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000200,0,'SBD1','4','SBD1','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000200,0,'SBD1','4','SBD1','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000201,0,'SBD2','15','SBD2','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000201,0,'SBD2','15','SBD2','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000202,0,'SCK1','20','SCK1','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000202,0,'SCK1','20','SCK1','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000203,0,'SCK3','54','SCK3','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000203,0,'SCK3','54','SCK3','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000204,0,'SCK4','10','SCK4','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000204,0,'SCK4','10','SCK4','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000205,0,'SCK8','141','SCK8','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000205,0,'SCK8','141','SCK8','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000206,0,'SDF1',NULL,'SDF1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000206,0,'SDF1',NULL,'SDF1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000207,0,'SDF2',NULL,'SDF2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000207,0,'SDF2',NULL,'SDF2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000208,0,'SDF4',NULL,'SDF4','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000208,0,'SDF4',NULL,'SDF4','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000209,0,'SDF6',NULL,'SDF6','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000209,0,'SDF6',NULL,'SDF6','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000210,0,'SDF7',NULL,'SDF7','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000210,0,'SDF7',NULL,'SDF7','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000211,0,'SDF8',NULL,'SDF8','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000211,0,'SDF8',NULL,'SDF8','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000212,0,'SDF9',NULL,'SDF9','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000212,0,'SDF9',NULL,'SDF9','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000213,0,'SEA6',NULL,'SEA6','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000213,0,'SEA6',NULL,'SEA6','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000214,0,'SEA8',NULL,'SEA8','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000214,0,'SEA8',NULL,'SEA8','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000215,0,'SJC7','30','SJC7','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000215,0,'SJC7','30','SJC7','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000216,0,'SLC2','86','SLC2','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000216,0,'SLC2','86','SLC2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000217,0,'SLC3','185','SLC3','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000217,0,'SLC3','185','SLC3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000218,0,'SMF3','9','SMF3','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000218,0,'SMF3','9','SMF3','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000219,0,'SMF6','28','SMF6','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000219,0,'SMF6','28','SMF6','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000220,0,'SNA4','18','SNA4','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000220,0,'SNA4','18','SNA4','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000221,0,'STL3','152','STL3','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000221,0,'STL3','152','STL3','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000222,0,'STL4','115','STL4','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000222,0,'STL4','115','STL4','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000223,0,'SWF1','134','SWF1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000223,0,'SWF1','134','SWF1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000224,0,'SWF2','62','SWF2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000224,0,'SWF2','62','SWF2','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000225,0,'TCY1','139','TCY1','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000225,0,'TCY1','139','TCY1','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000226,0,'TCY2','138','TCY2','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000226,0,'TCY2','138','TCY2','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000227,0,'TEB3','47','TEB3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000227,0,'TEB3','47','TEB3','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000228,0,'TEB4','55','TEB4','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000228,0,'TEB4','55','TEB4','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000229,0,'TEB6','114','TEB6','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000229,0,'TEB6','114','TEB6','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000230,0,'TEB9','40','TEB9','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000230,0,'TEB9','40','TEB9','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000231,0,'TMB8','116','TMB8','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000231,0,'TMB8','116','TMB8','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000232,0,'TOL3','173','TOL3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000232,0,'TOL3','173','TOL3','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000233,0,'TPA1',NULL,'TPA1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000233,0,'TPA1',NULL,'TPA1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000234,0,'TPA2','22','TPA2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000234,0,'TPA2','22','TPA2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000235,0,'TPA3','146','TPA3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000235,0,'TPA3','146','TPA3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000236,0,'TUL1',NULL,'TUL1','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000236,0,'TUL1',NULL,'TUL1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000237,0,'VGT2','6','VGT2','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000237,0,'VGT2','6','VGT2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000238,0,'VUBA',NULL,'VUBA','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000238,0,'VUBA',NULL,'VUBA','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000239,0,'VUGA',NULL,'VUGA','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000239,0,'VUGA',NULL,'VUGA','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000240,0,'WBW2','119','WBW2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000240,0,'WBW2','119','WBW2','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000241,0,'XAV3','180','XAV3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000241,0,'XAV3','180','XAV3','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000242,0,'XEW5','163','XEW5','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000242,0,'XEW5','163','XEW5','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000243,0,'XIN5','182','XIN5','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000243,0,'XIN5','182','XIN5','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000244,0,'XLX1','160','XLX1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000244,0,'XLX1','160','XLX1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000245,0,'XLX6','166','XLX6','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000245,0,'XLX6','166','XLX6','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000246,0,'XLX7','27','XLX7','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000246,0,'XLX7','27','XLX7','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000247,0,'XPB2','165','XPB2','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000247,0,'XPB2','165','XPB2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000248,0,'XRI3','167','XRI3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000248,0,'XRI3','167','XRI3','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000249,0,'XUSB',NULL,'XUSB','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000249,0,'XUSB',NULL,'XUSB','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000250,0,'XUSC',NULL,'XUSC','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000250,0,'XUSC',NULL,'XUSC','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000251,0,'XUSD',NULL,'XUSD','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000251,0,'XUSD',NULL,'XUSD','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000252,0,'XUSE',NULL,'XUSE','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000252,0,'XUSE',NULL,'XUSE','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000253,0,'ABE8-309',NULL,'ABE8-309','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000253,0,'ABE8-309',NULL,'ABE8-309','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000254,0,'ABE8-401',NULL,'ABE8-401','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000254,0,'ABE8-401',NULL,'ABE8-401','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000255,0,'ABQ2-UPS',NULL,'ABQ2-UPS','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000255,0,'ABQ2-UPS',NULL,'ABQ2-UPS','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000256,0,'ATL1','200','ATL1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000256,0,'ATL1','200','ATL1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000257,0,'ATL1-WALMART',NULL,'ATL1-WALMART','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000257,0,'ATL1-WALMART',NULL,'ATL1-WALMART','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000258,0,'AZA4','16','AZA4','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000258,0,'AZA4','16','AZA4','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000259,0,'CEG2','79','CEG2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000259,0,'CEG2','79','CEG2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000260,0,'CMH1-11999',NULL,'CMH1-11999','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000260,0,'CMH1-11999',NULL,'CMH1-11999','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000261,0,'FEDEX','12','FEDEX','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000261,0,'FEDEX','12','FEDEX','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000262,0,'HEA2','77','HEA2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000262,0,'HEA2','77','HEA2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000263,0,'HOU7','63','HOU7','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000263,0,'HOU7','63','HOU7','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000264,0,'IAK3','44','IAK3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000264,0,'IAK3','44','IAK3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000265,0,'IMI1','199','IMI1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000265,0,'IMI1','199','IMI1','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000266,0,'IND1-AMAZON',NULL,'IND1-AMAZON','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000266,0,'IND1-AMAZON',NULL,'IND1-AMAZON','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000267,0,'IND1-WALMART',NULL,'IND1-WALMART','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000267,0,'IND1-WALMART',NULL,'IND1-WALMART','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000268,0,'IND2-AMAZON',NULL,'IND2-AMAZON','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000268,0,'IND2-AMAZON',NULL,'IND2-AMAZON','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000269,0,'IND2-WALMART',NULL,'IND2-WALMART','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000269,0,'IND2-WALMART',NULL,'IND2-WALMART','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000270,0,'IND3','198','IND3','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000270,0,'IND3','198','IND3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000271,0,'IND3-亚马逊',NULL,'IND3-亚马逊','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000271,0,'IND3-亚马逊',NULL,'IND3-亚马逊','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000272,0,'IND3-沃尔玛',NULL,'IND3-沃尔玛','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000272,0,'IND3-沃尔玛',NULL,'IND3-沃尔玛','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000273,0,'IPA1','194','IPA1','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000273,0,'IPA1','194','IPA1','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000274,0,'IUSP-AWD','83','IUSP-AWD','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000274,0,'IUSP-AWD','83','IUSP-AWD','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000275,0,'JAX3','111','JAX3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000275,0,'JAX3','111','JAX3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000276,0,'JAX3-32210','111','JAX3-32210','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000276,0,'JAX3-32210','111','JAX3-32210','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000277,0,'JAX3-32221',NULL,'JAX3-32221','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000277,0,'JAX3-32221',NULL,'JAX3-32221','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000278,0,'LAN2-48917',NULL,'LAN2-48917','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000278,0,'LAN2-48917',NULL,'LAN2-48917','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000279,0,'LAX1','192','LAX1','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000279,0,'LAX1','192','LAX1','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000280,0,'LAX1-WALMART',NULL,'LAX1-WALMART','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000280,0,'LAX1-WALMART',NULL,'LAX1-WALMART','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000281,0,'LAX2T-WALMART',NULL,'LAX2T-WALMART','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000281,0,'LAX2T-WALMART',NULL,'LAX2T-WALMART','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000282,0,'LBE1-UPS',NULL,'LBE1-UPS','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000282,0,'LBE1-UPS',NULL,'LBE1-UPS','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000283,0,'MCO1-WALMART',NULL,'MCO1-WALMART','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000283,0,'MCO1-WALMART',NULL,'MCO1-WALMART','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000284,0,'MDW2-60433-3280',NULL,'MDW2-60433-3280','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000284,0,'MDW2-60433-3280',NULL,'MDW2-60433-3280','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000285,0,'MEM1S-WALMART',NULL,'MEM1S-WALMART','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000285,0,'MEM1S-WALMART',NULL,'MEM1S-WALMART','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000286,0,'MIA1-33054',NULL,'MIA1-33054','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000286,0,'MIA1-33054',NULL,'MIA1-33054','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000287,0,'MIA1-33182',NULL,'MIA1-33182','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000287,0,'MIA1-33182',NULL,'MIA1-33182','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000288,0,'MQY2','193','MQY2','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000288,0,'MQY2','193','MQY2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000289,0,'NJ3-WALMART',NULL,'NJ3-WALMART','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000289,0,'NJ3-WALMART',NULL,'NJ3-WALMART','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000290,0,'NJ3T','195','NJ3T','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000290,0,'NJ3T','195','NJ3T','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000291,0,'ORD1S-WALMART',NULL,'ORD1S-WALMART','FBA','US','UTC-6',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000291,0,'ORD1S-WALMART',NULL,'ORD1S-WALMART','FBA','US','America/Chicago',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000292,0,'ORF2-FEDEX',NULL,'ORF2-FEDEX','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000292,0,'ORF2-FEDEX',NULL,'ORF2-FEDEX','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000293,0,'ORF2-UPS',NULL,'ORF2-UPS','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000293,0,'ORF2-UPS',NULL,'ORF2-UPS','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000294,0,'PHL5S-WALMART',NULL,'PHL5S-WALMART','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000294,0,'PHL5S-WALMART',NULL,'PHL5S-WALMART','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000295,0,'PSC2-UPS',NULL,'PSC2-UPS','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000295,0,'PSC2-UPS',NULL,'PSC2-UPS','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000296,0,'SLC1N','196','SLC1N','FBA','US','UTC-7',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000296,0,'SLC1N','196','SLC1N','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000297,0,'SMF1-AMAZON',NULL,'SMF1-AMAZON','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000297,0,'SMF1-AMAZON',NULL,'SMF1-AMAZON','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000298,0,'SMF1-WALMART',NULL,'SMF1-WALMART','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000298,0,'SMF1-WALMART',NULL,'SMF1-WALMART','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000299,0,'SMF7','53','SMF7','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000299,0,'SMF7','53','SMF7','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000300,0,'STL6','64','STL6','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000300,0,'STL6','64','STL6','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000301,0,'SWF2-10710',NULL,'SWF2-10710','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000301,0,'SWF2-10710',NULL,'SWF2-10710','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000302,0,'SWF2-12533',NULL,'SWF2-12533','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000302,0,'SWF2-12533',NULL,'SWF2-12533','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000303,0,'TMB8-UPS',NULL,'TMB8-UPS','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000303,0,'TMB8-UPS',NULL,'TMB8-UPS','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000304,0,'UPS','11','UPS','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000304,0,'UPS','11','UPS','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000305,0,'VGT2-FEDEX',NULL,'VGT2-FEDEX','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000305,0,'VGT2-FEDEX',NULL,'VGT2-FEDEX','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000306,0,'VGT2-UPS',NULL,'VGT2-UPS','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000306,0,'VGT2-UPS',NULL,'VGT2-UPS','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000307,0,'XBN3','91','XBN3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000307,0,'XBN3','91','XBN3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000308,0,'XCH2','87','XCH2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000308,0,'XCH2','87','XCH2','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000309,0,'XMI3','89','XMI3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000309,0,'XMI3','89','XMI3','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000310,0,'洛杉矶仓一件代发','CADF','洛杉矶仓一件代发','FBA','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000310,0,'洛杉矶仓一件代发','CADF','洛杉矶仓一件代发','FBA','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000311,0,'海外仓打托','13','海外仓打托','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000311,0,'海外仓打托','13','海外仓打托','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000312,0,'私人仓','14','私人仓','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000312,0,'私人仓','14','私人仓','FBA','US','',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000313,0,'纽约仓',NULL,'纽约仓','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000313,0,'纽约仓',NULL,'纽约仓','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000314,0,'纽约仓一件代发','NJDF','纽约仓一件代发','FBA','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000000314,0,'纽约仓一件代发','NJDF','纽约仓一件代发','FBA','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000200001,0,'CN-YIWU-01',NULL,'义乌仓','DOMESTIC','CN','UTC+8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000200001,0,'CN-YIWU-01',NULL,'义乌仓','DOMESTIC','CN','Asia/Shanghai',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000200002,0,'CN-DONGGUAN-01',NULL,'东莞仓','DOMESTIC','CN','UTC+8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000200002,0,'CN-DONGGUAN-01',NULL,'东莞仓','DOMESTIC','CN','Asia/Shanghai',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000200003,0,'US-LAX-01',NULL,'洛杉矶仓','OVERSEAS','US','UTC-8',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000200003,0,'US-LAX-01',NULL,'洛杉矶仓','OVERSEAS','US','America/Los_Angeles',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000200004,0,'US-NYC-01',NULL,'纽约仓','OVERSEAS','US','UTC-5',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse (id, tenant_id, warehouse_code, internal_code, warehouse_name, warehouse_type, country_code, timezone, contact_name, contact_phone, contact_email, status, remark, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000200004,0,'US-NYC-01',NULL,'纽约仓','OVERSEAS','US','America/New_York',NULL,NULL,NULL,'ACTIVE',NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
|
|
||||||
-- 系统基线 wh_warehouse_address:318 行。
|
-- 系统基线 wh_warehouse_address:318 行。
|
||||||
INSERT INTO wh_warehouse_address (id, tenant_id, warehouse_id, address_type, country_code, state_province, city, district, postal_code, address_line1, address_line2, latitude, longitude, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000100001,0,193000000000000001,'OPERATING','US','PA','Breinigsville',NULL,'18031','705 Boulder Drive',NULL,NULL,NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
INSERT INTO wh_warehouse_address (id, tenant_id, warehouse_id, address_type, country_code, state_province, city, district, postal_code, address_line1, address_line2, latitude, longitude, created_by, created_at, updated_by, updated_at, deleted, version) VALUES (193000000000100001,0,193000000000000001,'OPERATING','US','PA','Breinigsville',NULL,'18031','705 Boulder Drive',NULL,NULL,NULL,NULL,CURRENT_TIMESTAMP(3),NULL,CURRENT_TIMESTAMP(3),0,0);
|
||||||
@@ -8278,4 +8284,53 @@ CREATE TABLE event_delivery_attempt (
|
|||||||
KEY idx_delivery_attempt_outcome (outcome,started_at)
|
KEY idx_delivery_attempt_outcome (outcome,started_at)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='本服务业务事件逐次投递审计';
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='本服务业务事件逐次投递审计';
|
||||||
|
|
||||||
|
USE baiyue_iam;
|
||||||
|
-- 采购节点动作独立授权;不新建岗位,不以通用编辑权限代替购买与取消。
|
||||||
|
INSERT INTO iam_permission(id,tenant_id,app_code,permission_type,parent_id,permission_code,permission_name,route_path,http_method,sort_no,status,built_in,deleted)
|
||||||
|
VALUES
|
||||||
|
(5117103,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:buy','采购购买及货款核定',NULL,'POST',803,'ACTIVE',1,0),
|
||||||
|
(5117104,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:cancel','购买前取消采购订单',NULL,'POST',804,'ACTIVE',1,0),
|
||||||
|
(5117105,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:receive-overseas','采购海外收货',NULL,'POST',805,'ACTIVE',1,0),
|
||||||
|
(5117106,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:receive-domestic','采购国内收货',NULL,'POST',806,'ACTIVE',1,0),
|
||||||
|
(5117107,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:pack','采购装箱与确认',NULL,'POST',807,'ACTIVE',1,0),
|
||||||
|
(5117108,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:manage','采购差异处置与事实更正',NULL,'POST',808,'ACTIVE',1,0),
|
||||||
|
(5117109,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:label','采购面单维护',NULL,'POST',809,'ACTIVE',1,0),
|
||||||
|
(5117110,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:charge','采购国内核费',NULL,'POST',810,'ACTIVE',1,0),
|
||||||
|
(5117111,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:finance-adjust','采购财务调整',NULL,'POST',811,'ACTIVE',1,0),
|
||||||
|
(5117112,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:estimate','采购预估运费核对',NULL,'POST',812,'ACTIVE',1,0),
|
||||||
|
(5117113,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:apply-label','采购逐箱贴单',NULL,'POST',813,'ACTIVE',1,0),
|
||||||
|
(5117114,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:ship-overseas','采购海外整批交寄',NULL,'POST',814,'ACTIVE',1,0),
|
||||||
|
(5117115,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:ship-customer','采购国内寄客户',NULL,'POST',815,'ACTIVE',1,0);
|
||||||
|
INSERT INTO iam_role_permission(tenant_id,role_id,permission_id,created_at)
|
||||||
|
SELECT 0,r.id,p.id,NOW(3) FROM iam_role r JOIN iam_permission p
|
||||||
|
ON p.tenant_id=0 AND p.app_code='PLATFORM' AND p.permission_code IN
|
||||||
|
('platform:overseas-business:purchase:buy','platform:overseas-business:purchase:cancel',
|
||||||
|
'platform:overseas-business:purchase:receive-overseas','platform:overseas-business:purchase:receive-domestic',
|
||||||
|
'platform:overseas-business:purchase:pack','platform:overseas-business:purchase:manage',
|
||||||
|
'platform:overseas-business:purchase:label','platform:overseas-business:purchase:charge','platform:overseas-business:purchase:finance-adjust',
|
||||||
|
'platform:overseas-business:purchase:estimate','platform:overseas-business:purchase:apply-label',
|
||||||
|
'platform:overseas-business:purchase:ship-overseas','platform:overseas-business:purchase:ship-customer')
|
||||||
|
WHERE r.tenant_id=0 AND r.app_code='PLATFORM' AND UPPER(r.role_code) IN('PLATFORM_ADMIN','PLATFORM_CUSTOM_ADMIN')
|
||||||
|
AND r.status='ACTIVE' AND r.deleted=0;
|
||||||
|
|
||||||
|
-- 自营业务菜单资源用于菜单管理;四个页面和所有只读接口统一由 list 授权,采集写权限独立。
|
||||||
|
USE baiyue_iam;
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
INSERT INTO iam_permission (id,tenant_id,app_code,permission_type,parent_id,permission_code,permission_name,route_path,http_method,sort_no,status,built_in,created_at,updated_at,deleted) VALUES
|
||||||
|
(5118100,0,'PLATFORM','MENU',0,'platform:self-operated:menu','自营业务',NULL,NULL,1100,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0),
|
||||||
|
(5118140,0,'PLATFORM','MENU',5118100,'platform:self-operated:overview:menu','经营总览','/self-operated/overview','GET',5,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0),
|
||||||
|
(5118110,0,'PLATFORM','MENU',5118100,'platform:self-operated:sales:menu','销量分析','/self-operated/sales','GET',10,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0),
|
||||||
|
(5118120,0,'PLATFORM','MENU',5118100,'platform:self-operated:inventory:menu','库存分析','/self-operated/inventory','GET',20,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0),
|
||||||
|
(5118130,0,'PLATFORM','MENU',5118100,'platform:self-operated:collection:menu','数据采集','/self-operated/collection','GET',30,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0),
|
||||||
|
(5118000,0,'PLATFORM','API',5118100,'platform:self-operated-analytics:list','读取平台自营出库销量与库存分析','/api/platform/v1/last-leg/self-operated-analytics','GET',40,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0),
|
||||||
|
(5118001,0,'PLATFORM','API',5118130,'platform:self-operated-analytics:sync','平台自营采集重试与重采集','/api/platform/v1/last-leg/self-operated-analytics/sync-tasks','POST',10,'ACTIVE',1,CURRENT_TIMESTAMP(3),CURRENT_TIMESTAMP(3),0);
|
||||||
|
INSERT INTO iam_role_permission (role_id,permission_id,tenant_id,created_at) VALUES
|
||||||
|
(4000001,5118000,0,CURRENT_TIMESTAMP(3)),
|
||||||
|
(4000001,5118001,0,CURRENT_TIMESTAMP(3)),
|
||||||
|
(4000001,5118100,0,CURRENT_TIMESTAMP(3)),
|
||||||
|
(4000001,5118140,0,CURRENT_TIMESTAMP(3)),
|
||||||
|
(4000001,5118110,0,CURRENT_TIMESTAMP(3)),
|
||||||
|
(4000001,5118120,0,CURRENT_TIMESTAMP(3)),
|
||||||
|
(4000001,5118130,0,CURRENT_TIMESTAMP(3));
|
||||||
|
|
||||||
SELECT 'PASS' AS initialization_status, 'CN' AS region, 226 AS initialized_tables;
|
SELECT 'PASS' AS initialization_status, 'CN' AS region, 226 AS initialized_tables;
|
||||||
|
|||||||
+803
-685
File diff suppressed because it is too large
Load Diff
@@ -56,3 +56,5 @@
|
|||||||
| PDF 标签、审计、跨区双向事件 | `print/`、`audit-service/`、`event-bridge-service/` | 事件模型先读 `common-event-contract/AGENTS.md`;国内真实生产验收 `firstleg/.../TaillegRealProducerAcceptanceTest.java`、海外真实消费验收 `lastleg-service/.../TaillegRealConsumerAcceptanceTest.java`;可靠投递与 CN/OVERSEAS 目标路由读 `event-bridge-service/AGENTS.md` |
|
| PDF 标签、审计、跨区双向事件 | `print/`、`audit-service/`、`event-bridge-service/` | 事件模型先读 `common-event-contract/AGENTS.md`;国内真实生产验收 `firstleg/.../TaillegRealProducerAcceptanceTest.java`、海外真实消费验收 `lastleg-service/.../TaillegRealConsumerAcceptanceTest.java`;可靠投递与 CN/OVERSEAS 目标路由读 `event-bridge-service/AGENTS.md` |
|
||||||
|
|
||||||
散货托盘码与跨区传递:`firstleg/` 的 `LoadingPalletLabelService.java` 生成冻结标签并调用 Print 输出 PDF,`LoadingCompletedOutboxService.java` 传递装柜快照;`lastleg-service/` 通过 `LastlegSourcePalletMapper.java` 保存来源托盘,`InboundPlanService.java` 和 `ContainerInboundPlanConversionCoordinator.java` 消费。标签与资源预留的细节继续读对应服务指引。
|
散货托盘码与跨区传递:`firstleg/` 的 `LoadingPalletLabelService.java` 生成冻结标签并调用 Print 输出 PDF,`LoadingCompletedOutboxService.java` 传递装柜快照;`lastleg-service/` 通过 `LastlegSourcePalletMapper.java` 保存来源托盘,`InboundPlanService.java` 和 `ContainerInboundPlanConversionCoordinator.java` 消费。标签与资源预留的细节继续读对应服务指引。
|
||||||
|
|
||||||
|
平台自营销量、产品库存与采集:正式入口为 ../docs/自营业务/README.md;适配从 integration-service/AGENTS.md 进入,持久化、指标和平台运行查询从 lastleg-service/AGENTS.md 进入 selfoperated/analytics/,权限源为 iam/src/main/resources/db/selfoperated-analytics-permissions.sql。Admin 从 ../apps/admin-web/src/modules/self-operated/AGENTS.md 进入;与客户物流订单和仓储作业库存分开。
|
||||||
|
|||||||
@@ -21,13 +21,14 @@ public class ExportProviderClient {
|
|||||||
@Resource private WarehouseExportProviderClient warehouse;
|
@Resource private WarehouseExportProviderClient warehouse;
|
||||||
@Resource private FirstlegExportProviderClient firstleg;
|
@Resource private FirstlegExportProviderClient firstleg;
|
||||||
@Resource private FinanceExportProviderClient finance;
|
@Resource private FinanceExportProviderClient finance;
|
||||||
|
@Resource private LastlegExportProviderClient lastleg;
|
||||||
@Resource
|
@Resource
|
||||||
private MeterRegistry meters;
|
private MeterRegistry meters;
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
void initializeClients() {
|
void initializeClients() {
|
||||||
this.clients = Map.of("iam-service", iam, "order-service", order,
|
this.clients = Map.of("iam-service", iam, "order-service", order,
|
||||||
"warehouse-service", warehouse, "firstleg-service", firstleg,
|
"warehouse-service", warehouse, "firstleg-service", firstleg,
|
||||||
"finance-service", finance);
|
"finance-service", finance, "lastleg-service", lastleg);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ApiResponse<ExportBatchResponse> batch(String internalToken, String exportType,
|
public ApiResponse<ExportBatchResponse> batch(String internalToken, String exportType,
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.baiyue.file.client;
|
||||||
|
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
|
||||||
|
@FeignClient(name="lastleg-service", contextId="lastlegExportProviderClient",
|
||||||
|
url="${baiyue.clients.lastleg.url:}", configuration=ExportProviderFeignConfiguration.class)
|
||||||
|
interface LastlegExportProviderClient extends ExportProviderFeignClient { }
|
||||||
@@ -11,7 +11,7 @@ import java.util.regex.Pattern;
|
|||||||
@Component
|
@Component
|
||||||
@ConfigurationProperties(prefix = "baiyue.file.export")
|
@ConfigurationProperties(prefix = "baiyue.file.export")
|
||||||
public class ExportDefinitionRegistry {
|
public class ExportDefinitionRegistry {
|
||||||
private static final Set<String> SERVICES = Set.of("iam-service", "order-service", "warehouse-service", "firstleg-service", "finance-service");
|
private static final Set<String> SERVICES = Set.of("iam-service", "order-service", "warehouse-service", "firstleg-service", "finance-service", "lastleg-service");
|
||||||
private static final Pattern TYPE = Pattern.compile("[A-Z0-9_]+");
|
private static final Pattern TYPE = Pattern.compile("[A-Z0-9_]+");
|
||||||
private static final Pattern PATH = Pattern.compile("/internal/exports/v1/([A-Z0-9_]+)/batches");
|
private static final Pattern PATH = Pattern.compile("/internal/exports/v1/([A-Z0-9_]+)/batches");
|
||||||
private static final Pattern PERMISSION = Pattern.compile("[a-z]+(?::[a-z-]+){2,}");
|
private static final Pattern PERMISSION = Pattern.compile("[a-z]+(?::[a-z-]+){2,}");
|
||||||
|
|||||||
@@ -22,6 +22,10 @@ enum BusinessFileCategory {
|
|||||||
INBOUND_HOLD_EVIDENCE(true, FormatPolicy.STANDARD, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
INBOUND_HOLD_EVIDENCE(true, FormatPolicy.STANDARD, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
||||||
OVERSEAS_PROCUREMENT_RECEIPT(true, FormatPolicy.STANDARD, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
OVERSEAS_PROCUREMENT_RECEIPT(true, FormatPolicy.STANDARD, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
||||||
OVERSEAS_PROCUREMENT_VOUCHER(true, FormatPolicy.STANDARD, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
OVERSEAS_PROCUREMENT_VOUCHER(true, FormatPolicy.STANDARD, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
||||||
|
OVERSEAS_PROCUREMENT_LABEL(true, FormatPolicy.PDF_IMAGE, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
||||||
|
OVERSEAS_PROCUREMENT_PURCHASE(true, FormatPolicy.PDF_IMAGE, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
||||||
|
OVERSEAS_PROCUREMENT_BUDGET(true, FormatPolicy.PDF_IMAGE, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
||||||
|
OVERSEAS_PROCUREMENT_EXCEPTION(true, FormatPolicy.PDF_IMAGE, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
||||||
CONTAINER_CLEARANCE_DOCUMENT(false, FormatPolicy.STANDARD, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
CONTAINER_CLEARANCE_DOCUMENT(false, FormatPolicy.STANDARD, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
||||||
LOADING_CUSTOMS_DECLARATION(false, FormatPolicy.STANDARD, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
LOADING_CUSTOMS_DECLARATION(false, FormatPolicy.STANDARD, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
||||||
CONTAINER_DELIVERY_ORDER(false, FormatPolicy.STANDARD, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
CONTAINER_DELIVERY_ORDER(false, FormatPolicy.STANDARD, Limits.STANDARD, BusinessIdPolicy.POSITIVE_LONG),
|
||||||
|
|||||||
@@ -46,7 +46,11 @@ public class ExportTaskService {
|
|||||||
}
|
}
|
||||||
validateParameters(type, request.parameters());
|
validateParameters(type, request.parameters());
|
||||||
validateTypeParameters(type, request.parameters());
|
validateTypeParameters(type, request.parameters());
|
||||||
String parametersJson = parametersJson(request.parameters());
|
Map<String, Object> parameters = new TreeMap<>(request.parameters() == null ? Map.of() : request.parameters());
|
||||||
|
if ("TRIP_OPERATIONS_LIST".equals(type)) {
|
||||||
|
parameters.put("costVisible", user.permissions().contains("platform:fleet:trip:list"));
|
||||||
|
}
|
||||||
|
String parametersJson = parametersJson(parameters);
|
||||||
long id = IdWorker.getId();
|
long id = IdWorker.getId();
|
||||||
LocalDateTime now = LocalDateTime.now();
|
LocalDateTime now = LocalDateTime.now();
|
||||||
FileExportTask task = new FileExportTask();
|
FileExportTask task = new FileExportTask();
|
||||||
@@ -92,6 +96,7 @@ public class ExportTaskService {
|
|||||||
|
|
||||||
public DownloadResource download(AuthenticatedUser user, long id) {
|
public DownloadResource download(AuthenticatedUser user, long id) {
|
||||||
FileExportTask task = ownedTask(user, id);
|
FileExportTask task = ownedTask(user, id);
|
||||||
|
requireExportCostAccess(user, task);
|
||||||
if (!"SUCCEEDED".equals(task.getStatus())) {
|
if (!"SUCCEEDED".equals(task.getStatus())) {
|
||||||
throw new BizException(ResultCode.CONFLICT, "导出任务尚未完成或文件已过期");
|
throw new BizException(ResultCode.CONFLICT, "导出任务尚未完成或文件已过期");
|
||||||
}
|
}
|
||||||
@@ -103,6 +108,7 @@ public class ExportTaskService {
|
|||||||
|
|
||||||
public ExportTaskResponse retry(AuthenticatedUser user, long id) {
|
public ExportTaskResponse retry(AuthenticatedUser user, long id) {
|
||||||
FileExportTask task = ownedTask(user, id);
|
FileExportTask task = ownedTask(user, id);
|
||||||
|
requireExportCostAccess(user, task);
|
||||||
var definition = registry.require(task.getExportType());
|
var definition = registry.require(task.getExportType());
|
||||||
if (!definition.isEnabled()) throw new BizException(ResultCode.CONFLICT, "该导出类型已停用");
|
if (!definition.isEnabled()) throw new BizException(ResultCode.CONFLICT, "该导出类型已停用");
|
||||||
String permission = definition.getRequiredPermission();
|
String permission = definition.getRequiredPermission();
|
||||||
@@ -128,6 +134,18 @@ public class ExportTaskService {
|
|||||||
return response(repository.find(id));
|
return response(repository.find(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void requireExportCostAccess(AuthenticatedUser user, FileExportTask task) {
|
||||||
|
if (!"TRIP_OPERATIONS_LIST".equals(task.getExportType())) return;
|
||||||
|
try {
|
||||||
|
if (objectMapper.readTree(task.getParametersJson()).path("costVisible").asBoolean(false)
|
||||||
|
&& !user.permissions().contains("platform:fleet:trip:list")) {
|
||||||
|
throw new BizException(ResultCode.FORBIDDEN, "缺少出车成本读取权限,请重新创建不含成本的导出任务");
|
||||||
|
}
|
||||||
|
} catch (JsonProcessingException exception) {
|
||||||
|
throw new BizException(ResultCode.CONFLICT, "导出筛选快照无效,请重新创建任务");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private FileExportTask ownedTask(AuthenticatedUser user, long id) {
|
private FileExportTask ownedTask(AuthenticatedUser user, long id) {
|
||||||
requirePlatform(user);
|
requirePlatform(user);
|
||||||
FileExportTask task = repository.find(id);
|
FileExportTask task = repository.find(id);
|
||||||
|
|||||||
@@ -35,6 +35,9 @@ spring:
|
|||||||
firstlegExportProviderClient:
|
firstlegExportProviderClient:
|
||||||
connect-timeout: 3000
|
connect-timeout: 3000
|
||||||
read-timeout: 15000
|
read-timeout: 15000
|
||||||
|
lastlegExportProviderClient:
|
||||||
|
connect-timeout: 3000
|
||||||
|
read-timeout: 15000
|
||||||
financeExportProviderClient:
|
financeExportProviderClient:
|
||||||
connect-timeout: 3000
|
connect-timeout: 3000
|
||||||
read-timeout: 15000
|
read-timeout: 15000
|
||||||
@@ -203,4 +206,76 @@ baiyue:
|
|||||||
max-rows: 200000
|
max-rows: 200000
|
||||||
max-attempts: 3
|
max-attempts: 3
|
||||||
batch-size: 500
|
batch-size: 500
|
||||||
|
LAST_MILE_ORDER_LIST:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/LAST_MILE_ORDER_LIST/batches
|
||||||
|
required-permission: platform:overseas-warehouse:last-mile-order:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
|
OVERSEAS_INVENTORY_BALANCE:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/OVERSEAS_INVENTORY_BALANCE/batches
|
||||||
|
required-permission: platform:overseas-warehouse:inventory:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
|
OVERSEAS_INVENTORY_LEDGER:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/OVERSEAS_INVENTORY_LEDGER/batches
|
||||||
|
required-permission: platform:overseas-warehouse:inventory:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
|
OVERSEAS_QUOTE_LIST:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/OVERSEAS_QUOTE_LIST/batches
|
||||||
|
required-permission: platform:overseas-master-data:quote:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
|
MONTHLY_EXCHANGE_RATE_LIST:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/MONTHLY_EXCHANGE_RATE_LIST/batches
|
||||||
|
required-permission: platform:overseas-master-data:exchange-rate:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
|
VEHICLE_LIST:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/VEHICLE_LIST/batches
|
||||||
|
required-permission: platform:overseas-master-data:vehicle:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
|
FLEET_QUOTE_LIST:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/FLEET_QUOTE_LIST/batches
|
||||||
|
required-permission: platform:fleet:quote:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
|
TRIP_OPERATIONS_LIST:
|
||||||
|
provider-service: lastleg-service
|
||||||
|
provider-path: /internal/exports/v1/TRIP_OPERATIONS_LIST/batches
|
||||||
|
required-permission: platform:fleet:operations:export
|
||||||
|
app-scope: PLATFORM
|
||||||
|
enabled: true
|
||||||
|
max-rows: 200000
|
||||||
|
max-attempts: 3
|
||||||
|
batch-size: 200
|
||||||
management.endpoints.web.exposure.include: health,info,prometheus
|
management.endpoints.web.exposure.include: health,info,prometheus
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ class ExportProviderClientTest {
|
|||||||
@MockBean private WarehouseExportProviderClient warehouse;
|
@MockBean private WarehouseExportProviderClient warehouse;
|
||||||
@MockBean private FirstlegExportProviderClient firstleg;
|
@MockBean private FirstlegExportProviderClient firstleg;
|
||||||
@MockBean private FinanceExportProviderClient finance;
|
@MockBean private FinanceExportProviderClient finance;
|
||||||
|
@MockBean private LastlegExportProviderClient lastleg;
|
||||||
@Resource private ExportProviderClient client;
|
@Resource private ExportProviderClient client;
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
@@ -48,6 +49,16 @@ class ExportProviderClientTest {
|
|||||||
verifyNoInteractions(iam,warehouse,firstleg,finance);
|
verifyNoInteractions(iam,warehouse,firstleg,finance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test void routesLastlegExportsThroughTheBoundedInternalClient() {
|
||||||
|
var response=ApiResponse.success(new ExportBatchResponse(1,"hash","snapshot",java.util.List.of(),java.util.List.of(),null,false,0L));
|
||||||
|
when(lastleg.batch(anyString(),anyString(),any())).thenReturn(response);
|
||||||
|
var definition=new ExportDefinitionRegistry.Definition();definition.setProviderService("lastleg-service");
|
||||||
|
var request=new ExportBatchRequest("9","0","PLATFORM","7",1,Map.of(),null,null,200);
|
||||||
|
assertSame(response,client.batch("token","LAST_MILE_ORDER_LIST",definition,request));
|
||||||
|
verify(lastleg).batch("token","LAST_MILE_ORDER_LIST",request);
|
||||||
|
verifyNoInteractions(iam,order,warehouse,firstleg,finance);
|
||||||
|
}
|
||||||
|
|
||||||
@Test void routesFinanceExportsToFinanceService() {
|
@Test void routesFinanceExportsToFinanceService() {
|
||||||
var response=ApiResponse.success(new ExportBatchResponse(1,"hash","snapshot",java.util.List.of(),java.util.List.of(),null,false,0L));
|
var response=ApiResponse.success(new ExportBatchResponse(1,"hash","snapshot",java.util.List.of(),java.util.List.of(),null,false,0L));
|
||||||
when(finance.batch(anyString(),anyString(),any())).thenReturn(response);
|
when(finance.batch(anyString(),anyString(),any())).thenReturn(response);
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package com.baiyue.file.config;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.yaml.snakeyaml.Yaml;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.Map;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
class LastlegExportDefinitionContractTest {
|
||||||
|
@Test void localAndNacosDefinitionsKeepTheSameBoundedProviderAndPermissions() throws Exception {
|
||||||
|
Map<?, ?> local = definitions(Path.of("src/main/resources/application.yml"));
|
||||||
|
Map<?, ?> nacos = definitions(Path.of("../config/nacos/test/file-service.yml"));
|
||||||
|
Map<String, String> expected = Map.ofEntries(
|
||||||
|
Map.entry("LAST_MILE_ORDER_LIST", "platform:overseas-warehouse:last-mile-order:export"),
|
||||||
|
Map.entry("OVERSEAS_INVENTORY_BALANCE", "platform:overseas-warehouse:inventory:export"),
|
||||||
|
Map.entry("OVERSEAS_INVENTORY_LEDGER", "platform:overseas-warehouse:inventory:export"),
|
||||||
|
Map.entry("OVERSEAS_QUOTE_LIST", "platform:overseas-master-data:quote:export"),
|
||||||
|
Map.entry("MONTHLY_EXCHANGE_RATE_LIST", "platform:overseas-master-data:exchange-rate:export"),
|
||||||
|
Map.entry("VEHICLE_LIST", "platform:overseas-master-data:vehicle:export"),
|
||||||
|
Map.entry("FLEET_QUOTE_LIST", "platform:fleet:quote:export"),
|
||||||
|
Map.entry("TRIP_OPERATIONS_LIST", "platform:fleet:operations:export"));
|
||||||
|
for (var entry : expected.entrySet()) {
|
||||||
|
var definition = (Map<?, ?>) local.get(entry.getKey());
|
||||||
|
assertNotNull(definition, entry.getKey());
|
||||||
|
assertEquals(definition, nacos.get(entry.getKey()));
|
||||||
|
assertEquals("lastleg-service", definition.get("provider-service"));
|
||||||
|
assertEquals("/internal/exports/v1/" + entry.getKey() + "/batches", definition.get("provider-path"));
|
||||||
|
assertEquals(entry.getValue(), definition.get("required-permission"));
|
||||||
|
assertEquals("PLATFORM", definition.get("app-scope"));
|
||||||
|
assertEquals(200, definition.get("batch-size"));
|
||||||
|
var controlled = new ExportDefinitionRegistry.Definition();
|
||||||
|
controlled.setProviderService("lastleg-service");
|
||||||
|
controlled.setProviderPath(String.valueOf(definition.get("provider-path")));
|
||||||
|
controlled.setRequiredPermission(entry.getValue());
|
||||||
|
controlled.setAppScope("PLATFORM");
|
||||||
|
var registry = new ExportDefinitionRegistry();
|
||||||
|
assertDoesNotThrow(() -> registry.setDefinitions(Map.of(entry.getKey(), controlled)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<?, ?> definitions(Path path) throws Exception {
|
||||||
|
Object value = new Yaml().load(Files.readString(path));
|
||||||
|
for (String key : new String[]{"baiyue", "file", "export", "definitions"}) value = ((Map<?, ?>) value).get(key);
|
||||||
|
return (Map<?, ?>) value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -28,6 +28,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
|||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.doAnswer;
|
import static org.mockito.Mockito.doAnswer;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.verifyNoInteractions;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@SpringJUnitConfig(classes = {ExportTaskService.class, ExportTaskServiceTest.TestConfig.class})
|
@SpringJUnitConfig(classes = {ExportTaskService.class, ExportTaskServiceTest.TestConfig.class})
|
||||||
@@ -55,6 +56,32 @@ class ExportTaskServiceTest {
|
|||||||
assertEquals(ResultCode.FORBIDDEN, denied.getResultCode());
|
assertEquals(ResultCode.FORBIDDEN, denied.getResultCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void operationExportDerivesCostVisibilityFromAuthenticatedPermissions() {
|
||||||
|
var definition = definition();
|
||||||
|
definition.setRequiredPermission("platform:fleet:operations:export");
|
||||||
|
when(registry.require("TRIP_OPERATIONS_LIST")).thenReturn(definition);
|
||||||
|
when(states.createConstrained(any(FileExportTask.class))).thenAnswer(invocation ->
|
||||||
|
new ExportStateService.CreationResult(invocation.getArgument(0), true));
|
||||||
|
service.create(user(1L, Set.of("platform:fleet:operations:export")),
|
||||||
|
new CreateExportTaskRequest("TRIP_OPERATIONS_LIST", "XLSX", "出车记录", Map.of("costVisible", true)));
|
||||||
|
var captured = org.mockito.ArgumentCaptor.forClass(FileExportTask.class);
|
||||||
|
verify(states).createConstrained(captured.capture());
|
||||||
|
assertTrue(captured.getValue().getParametersJson().contains("\"costVisible\":false"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void costPermissionCannotBeBypassedByDownloadAllOrRetry() {
|
||||||
|
FileExportTask task = new FileExportTask();
|
||||||
|
task.setId(9L); task.setTenantId(0L); task.setAppCode("PLATFORM"); task.setRequestedBy(2L);
|
||||||
|
task.setExportType("TRIP_OPERATIONS_LIST"); task.setParametersJson("{\"costVisible\":true}");
|
||||||
|
when(repository.find(9L)).thenReturn(task);
|
||||||
|
var reader = user(1L, Set.of("platform:download:all", "platform:fleet:operations:export"));
|
||||||
|
assertEquals(ResultCode.FORBIDDEN, assertThrows(BizException.class, () -> service.download(reader,9L)).getResultCode());
|
||||||
|
assertEquals(ResultCode.FORBIDDEN, assertThrows(BizException.class, () -> service.retry(reader,9L)).getResultCode());
|
||||||
|
verifyNoInteractions(storage);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void refusesAnotherUsersTaskUnlessDownloadAllIsGranted() {
|
void refusesAnotherUsersTaskUnlessDownloadAllIsGranted() {
|
||||||
when(registry.require("CUSTOMER_LIST")).thenReturn(definition());
|
when(registry.require("CUSTOMER_LIST")).thenReturn(definition());
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package com.baiyue.file.service;
|
||||||
|
|
||||||
|
import com.baiyue.common.core.exception.BizException;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.io.TempDir;
|
||||||
|
import org.springframework.mock.web.MockMultipartFile;
|
||||||
|
import org.springframework.test.util.ReflectionTestUtils;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.List;
|
||||||
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
class ProcurementFilePolicyTest {
|
||||||
|
@TempDir Path root;
|
||||||
|
@Test void procurementLabelAndPrivateProofUsePdfImagesAndPositiveCustomerOwnership() {
|
||||||
|
var storage=new BusinessFileStorage();ReflectionTestUtils.setField(storage,"configuredRoot",root);storage.initializeRoot();
|
||||||
|
for(var category:List.of(BusinessFileCategory.OVERSEAS_PROCUREMENT_LABEL,BusinessFileCategory.OVERSEAS_PROCUREMENT_PURCHASE,
|
||||||
|
BusinessFileCategory.OVERSEAS_PROCUREMENT_BUDGET,BusinessFileCategory.OVERSEAS_PROCUREMENT_EXCEPTION)) {
|
||||||
|
category.validateOwner(9);
|
||||||
|
assertThatThrownBy(()->category.validateOwner(0)).isInstanceOf(BizException.class);
|
||||||
|
assertThatThrownBy(()->category.storageBusinessId("0")).isInstanceOf(BizException.class);
|
||||||
|
byte[] pdf="%PDF-1.4\nprocurement test".getBytes(java.nio.charset.StandardCharsets.UTF_8);
|
||||||
|
var saved=storage.store(9,"11",new MockMultipartFile("file","label.pdf","application/pdf",pdf),category);
|
||||||
|
assertThat(storage.read(saved.objectKey())).isEqualTo(pdf);
|
||||||
|
assertThatThrownBy(()->storage.store(9,"11",new MockMultipartFile("file","fake.pdf","application/pdf","<html>fake</html>".getBytes()),category)).isInstanceOf(BizException.class);
|
||||||
|
assertThatThrownBy(()->storage.store(9,"11",new MockMultipartFile("file","notes.txt","text/plain","notes".getBytes()),category)).isInstanceOf(BizException.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Test void labelOverTenMibIsRejectedBeforeReadingBody()throws Exception {
|
||||||
|
var storage=new BusinessFileStorage();ReflectionTestUtils.setField(storage,"configuredRoot",root);storage.initializeRoot();
|
||||||
|
MultipartFile file=mock(MultipartFile.class);when(file.isEmpty()).thenReturn(false);when(file.getSize()).thenReturn(10L*1024*1024+1);
|
||||||
|
assertThatThrownBy(()->storage.store(9,"11",file,BusinessFileCategory.OVERSEAS_PROCUREMENT_LABEL)).isInstanceOf(BizException.class);
|
||||||
|
verify(file,never()).getBytes();verify(file,never()).getInputStream();
|
||||||
|
}
|
||||||
|
}
|
||||||
+43
-2
@@ -130,6 +130,14 @@ public class BusinessFeeSourceEventService {
|
|||||||
}
|
}
|
||||||
positive(value.sourceFeeId(), "sourceFeeId");
|
positive(value.sourceFeeId(), "sourceFeeId");
|
||||||
positive(value.customerId(), "customerId");
|
positive(value.customerId(), "customerId");
|
||||||
|
if (value.walletSettlement() != null) {
|
||||||
|
if (!"RECEIVABLE".equals(value.direction())) throw error("FIN-EVT-012", "钱包消费只能关联应收费用");
|
||||||
|
positive(value.walletSettlement().holdId(), "walletSettlement.holdId");
|
||||||
|
positive(value.walletSettlement().ledgerId(), "walletSettlement.ledgerId");
|
||||||
|
if (blank(value.walletSettlement().commandEventId())) throw error("FIN-EVT-012", "缺少原资金命令引用");
|
||||||
|
} else if ("OVERSEAS_PROCUREMENT_FEE".equals(value.sourceType()) && "RECEIVABLE".equals(value.direction())) {
|
||||||
|
throw error("FIN-EVT-012", "采购应收必须引用成功实扣资金,不能进入待收费池");
|
||||||
|
}
|
||||||
if ("OVERSEAS_CONTAINER_FEE".equals(value.sourceType())) {
|
if ("OVERSEAS_CONTAINER_FEE".equals(value.sourceType())) {
|
||||||
if (!"LASTLEG".equals(value.sourceSystem()) || !"OVERSEAS_CONTAINER".equals(value.businessType()))
|
if (!"LASTLEG".equals(value.sourceSystem()) || !"OVERSEAS_CONTAINER".equals(value.businessType()))
|
||||||
throw error("FIN-EVT-012", "海外柜费来源不一致");
|
throw error("FIN-EVT-012", "海外柜费来源不一致");
|
||||||
@@ -160,7 +168,7 @@ public class BusinessFeeSourceEventService {
|
|||||||
value.paymentReferenceNo(), value.paymentVoucherFileIds(), value.businessDate(), value.currency(),
|
value.paymentReferenceNo(), value.paymentVoucherFileIds(), value.businessDate(), value.currency(),
|
||||||
value.totalAmount(), value.originalCurrency(), value.originalAmount(), value.exchangeRate(),
|
value.totalAmount(), value.originalCurrency(), value.originalAmount(), value.exchangeRate(),
|
||||||
value.exchangeRateMonth(), value.chargeableQuantity(), value.quantityUnit(), value.unitPrice(),
|
value.exchangeRateMonth(), value.chargeableQuantity(), value.quantityUnit(), value.unitPrice(),
|
||||||
value.periodStart(), value.periodEnd(), value.reviewStatus(), "PUBLISHED", "ACTIVE", null);
|
value.periodStart(), value.periodEnd(), value.reviewStatus(), "PUBLISHED", "ACTIVE", null, value.walletSettlement());
|
||||||
String expected = EventPayloadHash.sha256(EventPayloadCanonicalizer.canonicalize(objectMapper.valueToTree(unsigned)));
|
String expected = EventPayloadHash.sha256(EventPayloadCanonicalizer.canonicalize(objectMapper.valueToTree(unsigned)));
|
||||||
if (!expected.equals(value.sourceHash())) throw error("FIN-EVT-004", "费用来源快照哈希不一致");
|
if (!expected.equals(value.sourceHash())) throw error("FIN-EVT-004", "费用来源快照哈希不一致");
|
||||||
}
|
}
|
||||||
@@ -189,7 +197,40 @@ public class BusinessFeeSourceEventService {
|
|||||||
|
|
||||||
private void linkSettledWalletHold(long feeSourceId, BusinessFeeSourceChangedV1 source) {
|
private void linkSettledWalletHold(long feeSourceId, BusinessFeeSourceChangedV1 source) {
|
||||||
if (!"RECEIVABLE".equals(source.direction())) return;
|
if (!"RECEIVABLE".equals(source.direction())) return;
|
||||||
jdbc.update("UPDATE fin_fee_source f JOIN fin_wallet_hold h ON h.customer_id=f.customer_id AND h.business_type=f.business_type AND h.business_no=f.business_no SET f.wallet_hold_id=h.id,f.status='SETTLED' WHERE f.id=? AND f.status='AVAILABLE' AND h.status='SETTLED' AND h.amount=f.amount",
|
if (source.walletSettlement() != null) {
|
||||||
|
var reference = source.walletSettlement();
|
||||||
|
long customerId = positive(source.customerId(), "customerId");
|
||||||
|
long holdId = positive(reference.holdId(), "holdId");
|
||||||
|
long ledgerId = positive(reference.ledgerId(), "ledgerId");
|
||||||
|
List<Map<String, Object>> rows = jdbc.queryForList(
|
||||||
|
"SELECT l.amount,c.result_json FROM fin_wallet_hold h JOIN fin_wallet_ledger l ON l.id=h.action_ledger_id AND l.customer_id=h.customer_id JOIN fin_wallet_command_inbox c ON c.event_id=? AND c.status='SUCCEEDED' WHERE h.id=? AND l.id=? AND h.customer_id=? AND h.business_type=? AND h.business_no=? AND h.status='SETTLED' AND l.change_type='CONSUMPTION' FOR UPDATE",
|
||||||
|
reference.commandEventId(), holdId, ledgerId, customerId, source.businessType(), source.businessNo());
|
||||||
|
if (rows.size() != 1 || !(rows.get(0).get("amount") instanceof java.math.BigDecimal amount)
|
||||||
|
|| amount.negate().compareTo(source.totalAmount()) != 0) {
|
||||||
|
throw error("FIN-EVT-017", "费用来源与成功扣款的客户、业务或金额不匹配");
|
||||||
|
}
|
||||||
|
com.fasterxml.jackson.databind.JsonNode result;
|
||||||
|
try { result = objectMapper.readTree(String.valueOf(rows.get(0).get("result_json"))); }
|
||||||
|
catch (JsonProcessingException exception) { throw error("FIN-EVT-017", "原资金结果无法核对"); }
|
||||||
|
if (!"SUCCEEDED".equals(result.path("result").asText())
|
||||||
|
|| !Set.of("SETTLE", "SETTLE_ACTUAL").contains(result.path("operation").asText())
|
||||||
|
|| !reference.commandEventId().equals(result.path("commandEventId").asText())
|
||||||
|
|| !reference.holdId().equals(result.path("walletHoldId").asText())
|
||||||
|
|| !reference.ledgerId().equals(result.path("walletLedgerId").asText())
|
||||||
|
|| result.path("customerId").asLong() != customerId
|
||||||
|
|| !source.businessType().equals(result.path("businessType").asText())
|
||||||
|
|| !source.businessNo().equals(result.path("businessNo").asText())
|
||||||
|
|| result.path("amount").decimalValue().compareTo(source.totalAmount()) != 0) {
|
||||||
|
throw error("FIN-EVT-017", "费用来源引用的资金结果不匹配");
|
||||||
|
}
|
||||||
|
List<Long> used = jdbc.queryForList("SELECT id FROM fin_fee_source WHERE wallet_hold_id=? AND id<>? FOR UPDATE",
|
||||||
|
Long.class, holdId, feeSourceId);
|
||||||
|
if (!used.isEmpty()) throw error("FIN-EVT-017", "同一成功扣款已关联其他费用来源");
|
||||||
|
jdbc.update("UPDATE fin_fee_source SET wallet_hold_id=?,status='SETTLED' WHERE id=? AND customer_id=? AND status='AVAILABLE'",
|
||||||
|
holdId, feeSourceId, customerId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
jdbc.update("UPDATE fin_fee_source f JOIN fin_wallet_hold h ON h.customer_id=f.customer_id AND h.business_type=f.business_type AND h.business_no=f.business_no JOIN fin_wallet_ledger l ON l.id=h.action_ledger_id AND l.customer_id=h.customer_id AND l.change_type='CONSUMPTION' SET f.wallet_hold_id=h.id,f.status='SETTLED' WHERE f.id=? AND f.status='AVAILABLE' AND h.status='SETTLED' AND f.amount=-l.amount",
|
||||||
feeSourceId);
|
feeSourceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -300,6 +300,113 @@ public class FinanceWalletService {
|
|||||||
return completeHold(customerId, businessType, businessNo, idempotencyKey, request, false);
|
return completeHold(customerId, businessType, businessNo, idempotencyKey, request, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Settles one estimate without releasing its protection before checking any shortfall. */
|
||||||
|
@Transactional
|
||||||
|
public WalletHold settleActual(long customerId, String rawBusinessType, String rawBusinessNo,
|
||||||
|
String idempotencyKey, BigDecimal actualAmount, String remark) {
|
||||||
|
requirePositive(customerId, "客户");
|
||||||
|
BigDecimal amount = money(actualAmount);
|
||||||
|
String businessType = businessType(rawBusinessType);
|
||||||
|
String businessNo = businessNo(rawBusinessNo);
|
||||||
|
String operation = "WALLET_HOLD_SETTLE_ACTUAL";
|
||||||
|
String requestHash = hash(Map.of("customerId", customerId, "businessType", businessType,
|
||||||
|
"businessNo", businessNo, "amount", amount, "remark", String.valueOf(remark)));
|
||||||
|
Long replay = reserve(customerId, 0, operation, idempotencyKey, requestHash);
|
||||||
|
if (replay != null) return requiredHold(replay, customerId);
|
||||||
|
WalletAccount before = accountForUpdate(customerId);
|
||||||
|
WalletHold hold = findHold(customerId, businessType, businessNo, true);
|
||||||
|
if (hold == null) throw error("FIN-WALLET-HOLD-404", "资金冻结记录不存在");
|
||||||
|
if (!"FROZEN".equals(hold.status())) throw error("FIN-WALLET-HOLD-409", "资金冻结记录已处理");
|
||||||
|
WalletAccount after = settleActualAccount(before, hold, amount);
|
||||||
|
updateAccount(customerId, after, before.version(), 0);
|
||||||
|
WalletLedgerEntry ledger = insertLedger(customerId, "CONSUMPTION", amount.negate(), after,
|
||||||
|
businessType, businessNo, LocalDate.now(), null, businessNo, 0, "业务系统", remark);
|
||||||
|
// The hold retains the original estimate; its action ledger records the actual charge.
|
||||||
|
int updated = jdbc.update("UPDATE fin_wallet_hold SET status='SETTLED',action_ledger_id=?,completed_at=CURRENT_TIMESTAMP(3) WHERE id=? AND status='FROZEN'",
|
||||||
|
ledger.ledgerId(), hold.holdId());
|
||||||
|
if (updated != 1) throw error("FIN-WALLET-HOLD-409", "资金冻结记录已处理");
|
||||||
|
audit(customerId, "WALLET_HOLD", hold.holdId(), "SETTLE_ACTUAL", remark, before, after, 0, "业务系统");
|
||||||
|
complete(customerId, 0, operation, idempotencyKey, hold.holdId());
|
||||||
|
return requiredHold(hold.holdId(), customerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Refunds a successful consumption; recharge allocation rules apply without creating a recharge. */
|
||||||
|
@Transactional
|
||||||
|
public WalletLedgerEntry refundConsumption(long customerId, long originalLedgerId, String refundNo,
|
||||||
|
String idempotencyKey, BigDecimal refundAmount,
|
||||||
|
long operatorId, String operatorName, String remark) {
|
||||||
|
requirePositive(customerId, "客户");
|
||||||
|
requirePositive(originalLedgerId, "原扣款流水");
|
||||||
|
String reference = businessNo(refundNo);
|
||||||
|
BigDecimal amount = money(refundAmount);
|
||||||
|
if (!StringUtils.hasText(remark)) throw bad("退款原因不能为空");
|
||||||
|
String requestHash = hash(Map.of("customerId", customerId, "originalLedgerId", originalLedgerId,
|
||||||
|
"refundNo", reference, "amount", amount, "remark", remark));
|
||||||
|
Long replay = reserve(customerId, 0, "WALLET_BUSINESS_REFUND", idempotencyKey, requestHash);
|
||||||
|
if (replay != null) return requiredLedger(replay, customerId);
|
||||||
|
WalletAccount before = accountForUpdate(customerId);
|
||||||
|
List<WalletLedgerEntry> originals = jdbc.query(
|
||||||
|
"SELECT * FROM fin_wallet_ledger WHERE id=? AND customer_id=? FOR UPDATE",
|
||||||
|
(rs, n) -> ledgerRow(rs), originalLedgerId, customerId);
|
||||||
|
if (originals.isEmpty()) throw error("FIN-WALLET-404", "原扣款流水不存在");
|
||||||
|
WalletLedgerEntry original = originals.get(0);
|
||||||
|
if (!"CONSUMPTION".equals(original.changeType()) || original.amount().signum() >= 0) {
|
||||||
|
throw bad("仅可对成功业务扣款发起关联退款");
|
||||||
|
}
|
||||||
|
List<WalletLedgerEntry> existing = jdbc.query(
|
||||||
|
"SELECT * FROM fin_wallet_ledger WHERE customer_id=? AND source_type='BUSINESS_REFUND' AND source_no=? FOR UPDATE",
|
||||||
|
(rs, n) -> ledgerRow(rs), customerId, reference);
|
||||||
|
if (!existing.isEmpty()) {
|
||||||
|
WalletLedgerEntry refunded = existing.get(0);
|
||||||
|
if (refunded.amount().compareTo(amount) != 0 || !original.businessNo().equals(refunded.referenceNo())) {
|
||||||
|
throw error("FIN-IDEMPOTENCY-CONFLICT", "同一退款单对应的原扣款或金额不一致");
|
||||||
|
}
|
||||||
|
complete(customerId, 0, "WALLET_BUSINESS_REFUND", idempotencyKey, refunded.ledgerId());
|
||||||
|
return refunded;
|
||||||
|
}
|
||||||
|
// Locking reads see refunds committed while this transaction waited for the account lock,
|
||||||
|
// even under MySQL REPEATABLE READ after the idempotency lookup established a snapshot.
|
||||||
|
BigDecimal refunded = jdbc.queryForList(
|
||||||
|
"SELECT amount FROM fin_wallet_ledger WHERE customer_id=? AND source_type='BUSINESS_REFUND' AND reference_no=? FOR UPDATE",
|
||||||
|
BigDecimal.class, customerId, original.businessNo()).stream().reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
if (refunded.add(amount).compareTo(original.amount().negate()) > 0) {
|
||||||
|
throw error("FIN-WALLET-REFUND-EXCEEDED", "退款金额超过原扣款剩余可退金额");
|
||||||
|
}
|
||||||
|
WalletAccount after = rechargeAccount(before, amount);
|
||||||
|
updateAccount(customerId, after, before.version(), operatorId);
|
||||||
|
WalletLedgerEntry result = insertLedger(customerId, "REFUND", amount, after,
|
||||||
|
"BUSINESS_REFUND", reference, LocalDate.now(), null, original.businessNo(),
|
||||||
|
operatorId, operatorName, remark);
|
||||||
|
audit(customerId, "WALLET_LEDGER", originalLedgerId, "REFUND", remark, before, after, operatorId, operatorName);
|
||||||
|
complete(customerId, 0, "WALLET_BUSINESS_REFUND", idempotencyKey, result.ledgerId());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
WalletAccount settleActualAccount(WalletAccount before, WalletHold hold, BigDecimal actualAmount) {
|
||||||
|
BigDecimal amount = money(actualAmount);
|
||||||
|
BigDecimal extra = amount.subtract(hold.amount()).max(BigDecimal.ZERO);
|
||||||
|
if (extra.signum() > 0 && before.availableBalance().compareTo(extra) < 0) {
|
||||||
|
throw error("FIN-WALLET-INSUFFICIENT", "实际费用补差所需的可用余额和授信额度不足");
|
||||||
|
}
|
||||||
|
BigDecimal actual = before.actualBalance();
|
||||||
|
BigDecimal creditUsed = before.creditUsed();
|
||||||
|
if (before.creditActive()) {
|
||||||
|
BigDecimal reservedCharge = amount.min(hold.amount());
|
||||||
|
BigDecimal cashCharge = reservedCharge.min(hold.actualFrozenAmount());
|
||||||
|
BigDecimal freeCash = actual.subtract(before.frozenBalance().subtract(before.creditFrozen()))
|
||||||
|
.max(BigDecimal.ZERO);
|
||||||
|
cashCharge = cashCharge.add(extra.min(freeCash));
|
||||||
|
actual = actual.subtract(cashCharge);
|
||||||
|
creditUsed = creditUsed.add(amount.subtract(cashCharge));
|
||||||
|
} else {
|
||||||
|
// Previously reserved credit still settles after expiry, without granting new credit.
|
||||||
|
actual = actual.subtract(amount);
|
||||||
|
}
|
||||||
|
return accountState(actual, before.frozenBalance().subtract(hold.amount()), before.creditLimit(),
|
||||||
|
creditUsed, before.creditFrozen().subtract(hold.creditFrozenAmount()),
|
||||||
|
before.creditExpiresOn(), before.version());
|
||||||
|
}
|
||||||
|
|
||||||
private WalletHold completeHold(long customerId, String rawBusinessType, String rawBusinessNo,
|
private WalletHold completeHold(long customerId, String rawBusinessType, String rawBusinessNo,
|
||||||
String idempotencyKey, WalletHoldActionRequest request, boolean settle) {
|
String idempotencyKey, WalletHoldActionRequest request, boolean settle) {
|
||||||
requirePositive(customerId, "客户");
|
requirePositive(customerId, "客户");
|
||||||
|
|||||||
@@ -29,9 +29,10 @@ import java.util.Set;
|
|||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class WalletCommandEventService {
|
public class WalletCommandEventService {
|
||||||
private static final Set<String> OPERATIONS = Set.of("FREEZE", "SETTLE", "RELEASE");
|
private static final Set<String> OPERATIONS = Set.of("FREEZE", "SETTLE", "SETTLE_ACTUAL", "RELEASE", "REFUND");
|
||||||
private static final Set<String> FINAL_REJECTIONS = Set.of(
|
private static final Set<String> FINAL_REJECTIONS = Set.of(
|
||||||
"FIN-WALLET-INSUFFICIENT", "FIN-WALLET-HOLD-409", "FIN-IDEMPOTENCY-CONFLICT", "FIN-REQ-400");
|
"FIN-WALLET-INSUFFICIENT", "FIN-WALLET-HOLD-409", "FIN-IDEMPOTENCY-CONFLICT", "FIN-REQ-400",
|
||||||
|
"FIN-WALLET-REFUND-EXCEEDED", "FIN-WALLET-404");
|
||||||
private final JdbcTemplate jdbc;
|
private final JdbcTemplate jdbc;
|
||||||
private final ObjectMapper objectMapper;
|
private final ObjectMapper objectMapper;
|
||||||
private final FinanceWalletService walletService;
|
private final FinanceWalletService walletService;
|
||||||
@@ -56,10 +57,9 @@ public class WalletCommandEventService {
|
|||||||
if (resultExists(envelope.eventId())) return DeliveryAck.of(envelope, DeliveryAck.Outcome.DUPLICATE);
|
if (resultExists(envelope.eventId())) return DeliveryAck.of(envelope, DeliveryAck.Outcome.DUPLICATE);
|
||||||
// Wallet methods join this transaction: money, the Inbox outcome and
|
// Wallet methods join this transaction: money, the Inbox outcome and
|
||||||
// the result Outbox commit together, or all roll back.
|
// the result Outbox commit together, or all roll back.
|
||||||
WalletHold hold = execute(command);
|
ExecutionResult execution = execute(command);
|
||||||
if (hold == null) throw new IllegalStateException("资金操作未返回处理结果");
|
|
||||||
finalizeResult(envelope, completed(envelope.eventId(), command, "SUCCEEDED",
|
finalizeResult(envelope, completed(envelope.eventId(), command, "SUCCEEDED",
|
||||||
hold.status(), hold.amount(), null, null));
|
execution.status(), execution.amount(), null, null, execution.holdId(), execution.ledgerId()));
|
||||||
return DeliveryAck.of(envelope, DeliveryAck.Outcome.APPLIED);
|
return DeliveryAck.of(envelope, DeliveryAck.Outcome.APPLIED);
|
||||||
});
|
});
|
||||||
} catch (FinanceEventException exception) {
|
} catch (FinanceEventException exception) {
|
||||||
@@ -70,7 +70,7 @@ public class WalletCommandEventService {
|
|||||||
requireLockedIdentity(envelope);
|
requireLockedIdentity(envelope);
|
||||||
if (resultExists(envelope.eventId())) return DeliveryAck.of(envelope, DeliveryAck.Outcome.DUPLICATE);
|
if (resultExists(envelope.eventId())) return DeliveryAck.of(envelope, DeliveryAck.Outcome.DUPLICATE);
|
||||||
finalizeResult(envelope, completed(envelope.eventId(), command, "FAILED",
|
finalizeResult(envelope, completed(envelope.eventId(), command, "FAILED",
|
||||||
null, command.amount(), exception.code(), exception.getMessage()));
|
null, command.amount(), exception.code(), exception.getMessage(), null, null));
|
||||||
return DeliveryAck.of(envelope, DeliveryAck.Outcome.APPLIED);
|
return DeliveryAck.of(envelope, DeliveryAck.Outcome.APPLIED);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -86,21 +86,33 @@ public class WalletCommandEventService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private WalletHold execute(WalletCommandRequestedV1 command) {
|
private record ExecutionResult(String status, BigDecimal amount, String holdId, String ledgerId) { }
|
||||||
|
|
||||||
|
private ExecutionResult execute(WalletCommandRequestedV1 command) {
|
||||||
|
if ("REFUND".equals(command.operation())) {
|
||||||
|
var refund = walletService.refundConsumption(command.customerId(), Long.parseLong(command.originalLedgerId()),
|
||||||
|
command.businessNo(), command.idempotencyKey(), command.amount(), 0, "业务系统", command.remark());
|
||||||
|
return new ExecutionResult("REFUNDED", refund.amount(), null, String.valueOf(refund.ledgerId()));
|
||||||
|
}
|
||||||
WalletHold hold = switch (command.operation()) {
|
WalletHold hold = switch (command.operation()) {
|
||||||
case "FREEZE" -> walletService.freeze(command.customerId(), command.idempotencyKey(),
|
case "FREEZE" -> walletService.freeze(command.customerId(), command.idempotencyKey(),
|
||||||
new WalletFreezeRequest(command.amount(), command.businessType(), command.businessNo(), command.remark()));
|
new WalletFreezeRequest(command.amount(), command.businessType(), command.businessNo(), command.remark()));
|
||||||
case "SETTLE" -> walletService.settle(command.customerId(), command.businessType(), command.businessNo(),
|
case "SETTLE" -> walletService.settle(command.customerId(), command.businessType(), command.businessNo(),
|
||||||
command.idempotencyKey(), new WalletHoldActionRequest(command.remark()));
|
command.idempotencyKey(), new WalletHoldActionRequest(command.remark()));
|
||||||
|
case "SETTLE_ACTUAL" -> walletService.settleActual(command.customerId(), command.businessType(), command.businessNo(),
|
||||||
|
command.idempotencyKey(), command.amount(), command.remark());
|
||||||
case "RELEASE" -> walletService.release(command.customerId(), command.businessType(), command.businessNo(),
|
case "RELEASE" -> walletService.release(command.customerId(), command.businessType(), command.businessNo(),
|
||||||
command.idempotencyKey(), new WalletHoldActionRequest(command.remark()));
|
command.idempotencyKey(), new WalletHoldActionRequest(command.remark()));
|
||||||
default -> throw new FinanceEventException("FIN-EVT-001", "资金指令操作无效");
|
default -> throw new FinanceEventException("FIN-EVT-001", "资金指令操作无效");
|
||||||
};
|
};
|
||||||
if ("SETTLE".equals(command.operation())) {
|
if (hold == null) throw new IllegalStateException("资金操作未返回处理结果");
|
||||||
jdbc.update("UPDATE fin_fee_source f JOIN fin_wallet_hold h ON h.customer_id=f.customer_id AND h.business_type=f.business_type AND h.business_no=f.business_no SET f.wallet_hold_id=h.id,f.status='SETTLED' WHERE h.id=? AND f.direction='RECEIVABLE' AND f.status='AVAILABLE' AND f.amount=h.amount",
|
if (Set.of("SETTLE", "SETTLE_ACTUAL").contains(command.operation())) {
|
||||||
|
jdbc.update("UPDATE fin_fee_source f JOIN fin_wallet_hold h ON h.customer_id=f.customer_id AND h.business_type=f.business_type AND h.business_no=f.business_no JOIN fin_wallet_ledger l ON l.id=h.action_ledger_id AND l.customer_id=h.customer_id AND l.change_type='CONSUMPTION' SET f.wallet_hold_id=h.id,f.status='SETTLED' WHERE h.id=? AND f.direction='RECEIVABLE' AND f.status='AVAILABLE' AND f.amount=-l.amount",
|
||||||
hold.holdId());
|
hold.holdId());
|
||||||
}
|
}
|
||||||
return hold;
|
Long ledgerId = "FREEZE".equals(command.operation()) ? hold.freezeLedgerId() : hold.actionLedgerId();
|
||||||
|
return new ExecutionResult(hold.status(), "SETTLE_ACTUAL".equals(command.operation()) ? command.amount() : hold.amount(),
|
||||||
|
String.valueOf(hold.holdId()), ledgerId == null ? null : String.valueOf(ledgerId));
|
||||||
}
|
}
|
||||||
|
|
||||||
private WalletCommandRequestedV1 validate(EventEnvelope envelope) {
|
private WalletCommandRequestedV1 validate(EventEnvelope envelope) {
|
||||||
@@ -118,14 +130,22 @@ public class WalletCommandEventService {
|
|||||||
String operation = value.operation() == null ? "" : value.operation().trim().toUpperCase(Locale.ROOT);
|
String operation = value.operation() == null ? "" : value.operation().trim().toUpperCase(Locale.ROOT);
|
||||||
if (!OPERATIONS.contains(operation) || value.customerId() <= 0 || blank(value.businessType())
|
if (!OPERATIONS.contains(operation) || value.customerId() <= 0 || blank(value.businessType())
|
||||||
|| blank(value.businessNo()) || blank(value.idempotencyKey())
|
|| blank(value.businessNo()) || blank(value.idempotencyKey())
|
||||||
|| ("FREEZE".equals(operation) && (value.amount() == null || value.amount().signum() <= 0))) {
|
|| (Set.of("FREEZE", "SETTLE_ACTUAL", "REFUND").contains(operation)
|
||||||
|
&& (value.amount() == null || value.amount().signum() <= 0 || value.amount().scale() > 2))) {
|
||||||
throw new FinanceEventException("FIN-EVT-001", "资金指令字段无效");
|
throw new FinanceEventException("FIN-EVT-001", "资金指令字段无效");
|
||||||
}
|
}
|
||||||
|
if ("REFUND".equals(operation)) {
|
||||||
|
if (blank(value.originalLedgerId()) || Long.parseLong(value.originalLedgerId()) <= 0 || blank(value.remark())) {
|
||||||
|
throw new FinanceEventException("FIN-EVT-001", "退款必须关联原扣款并填写原因");
|
||||||
|
}
|
||||||
|
} else if (value.originalLedgerId() != null) {
|
||||||
|
throw new FinanceEventException("FIN-EVT-001", "非退款指令不能指定原扣款");
|
||||||
|
}
|
||||||
if (!String.valueOf(value.customerId()).equals(envelope.tenantId())) {
|
if (!String.valueOf(value.customerId()).equals(envelope.tenantId())) {
|
||||||
throw new FinanceEventException("FIN-EVT-007", "资金指令客户归属不一致");
|
throw new FinanceEventException("FIN-EVT-007", "资金指令客户归属不一致");
|
||||||
}
|
}
|
||||||
return new WalletCommandRequestedV1(operation, value.customerId(), value.businessType(), value.businessNo(),
|
return new WalletCommandRequestedV1(operation, value.customerId(), value.businessType(), value.businessNo(),
|
||||||
value.amount(), value.remark(), value.idempotencyKey(), value.requestedAt());
|
value.amount(), value.remark(), value.idempotencyKey(), value.requestedAt(), value.originalLedgerId());
|
||||||
} catch (FinanceEventException exception) { throw exception; }
|
} catch (FinanceEventException exception) { throw exception; }
|
||||||
catch (Exception exception) { throw new FinanceEventException("FIN-EVT-001", "资金指令载荷无法解析"); }
|
catch (Exception exception) { throw new FinanceEventException("FIN-EVT-001", "资金指令载荷无法解析"); }
|
||||||
}
|
}
|
||||||
@@ -159,9 +179,10 @@ public class WalletCommandEventService {
|
|||||||
return count != null && count > 0;
|
return count != null && count > 0;
|
||||||
}
|
}
|
||||||
private WalletCommandCompletedV1 completed(String eventId, WalletCommandRequestedV1 command, String result,
|
private WalletCommandCompletedV1 completed(String eventId, WalletCommandRequestedV1 command, String result,
|
||||||
String holdStatus, BigDecimal amount, String errorCode, String errorMessage) {
|
String holdStatus, BigDecimal amount, String errorCode, String errorMessage,
|
||||||
|
String holdId, String ledgerId) {
|
||||||
return new WalletCommandCompletedV1(eventId, command.operation(), command.customerId(), command.businessType(),
|
return new WalletCommandCompletedV1(eventId, command.operation(), command.customerId(), command.businessType(),
|
||||||
command.businessNo(), result, holdStatus, amount, errorCode, errorMessage, Instant.now());
|
command.businessNo(), result, holdStatus, amount, errorCode, errorMessage, Instant.now(), holdId, ledgerId);
|
||||||
}
|
}
|
||||||
private String json(Object value) {
|
private String json(Object value) {
|
||||||
try { return objectMapper.writeValueAsString(value); }
|
try { return objectMapper.writeValueAsString(value); }
|
||||||
|
|||||||
@@ -45,11 +45,11 @@ class BusinessFeeSourceEventServiceTest {
|
|||||||
when(jdbc.queryForList(startsWith("SELECT payload_hash,status,result_resource_id"),
|
when(jdbc.queryForList(startsWith("SELECT payload_hash,status,result_resource_id"),
|
||||||
eq("LASTLEG"), eq(event.eventId()))).thenReturn(List.of());
|
eq("LASTLEG"), eq(event.eventId()))).thenReturn(List.of());
|
||||||
when(jdbc.queryForList(startsWith("SELECT id,source_hash,status FROM fin_fee_source"),
|
when(jdbc.queryForList(startsWith("SELECT id,source_hash,status FROM fin_fee_source"),
|
||||||
eq("LASTLEG"), eq("OVERSEAS_PROCUREMENT_FEE"), eq(701L), eq(1))).thenReturn(List.of());
|
eq("LASTLEG"), eq("OVERSEAS_WAREHOUSE_FEE"), eq(701L), eq(1))).thenReturn(List.of());
|
||||||
when(jdbc.queryForObject(startsWith("SELECT COUNT(*) FROM fin_fee_source f WHERE f.source_system=?"),
|
when(jdbc.queryForObject(startsWith("SELECT COUNT(*) FROM fin_fee_source f WHERE f.source_system=?"),
|
||||||
eq(Integer.class), eq("LASTLEG"), eq("OVERSEAS_PROCUREMENT_FEE"), eq(701L))).thenReturn(0);
|
eq(Integer.class), eq("LASTLEG"), eq("OVERSEAS_WAREHOUSE_FEE"), eq(701L))).thenReturn(0);
|
||||||
when(jdbc.queryForObject(startsWith("SELECT id FROM fin_fee_source"), eq(Long.class),
|
when(jdbc.queryForObject(startsWith("SELECT id FROM fin_fee_source"), eq(Long.class),
|
||||||
eq("LASTLEG"), eq("OVERSEAS_PROCUREMENT_FEE"), eq(701L), eq(1))).thenReturn(901L);
|
eq("LASTLEG"), eq("OVERSEAS_WAREHOUSE_FEE"), eq(701L), eq(1))).thenReturn(901L);
|
||||||
|
|
||||||
assertThat(service.consume(event).eventId()).isEqualTo(event.eventId());
|
assertThat(service.consume(event).eventId()).isEqualTo(event.eventId());
|
||||||
|
|
||||||
@@ -65,21 +65,21 @@ class BusinessFeeSourceEventServiceTest {
|
|||||||
|
|
||||||
private EventEnvelope eventWithoutInbound() {
|
private EventEnvelope eventWithoutInbound() {
|
||||||
BusinessFeeSourceChangedV1 unsigned = new BusinessFeeSourceChangedV1(null, "LASTLEG",
|
BusinessFeeSourceChangedV1 unsigned = new BusinessFeeSourceChangedV1(null, "LASTLEG",
|
||||||
"OVERSEAS_PROCUREMENT_FEE", "701", 1, "10001", "客户A", "PO-US-001",
|
"OVERSEAS_WAREHOUSE_FEE", "701", 1, "10001", "客户A", "PO-US-001",
|
||||||
"OVERSEAS_PROCUREMENT", "801", "PO-US-001", null, null, null, null, null,
|
"WAREHOUSE_SERVICE", "801", "PO-US-001", null, null, null, null, null,
|
||||||
null, "91", "PROCUREMENT_SERVICE", "采购服务费", "RECEIVABLE", null, null,
|
null, "91", "PROCUREMENT_SERVICE", "采购服务费", "RECEIVABLE", null, null,
|
||||||
null, null, null, null, null, List.of(), LocalDate.of(2026, 9, 2), "CNY",
|
null, null, null, null, null, List.of(), LocalDate.of(2026, 9, 2), "CNY",
|
||||||
new BigDecimal("120.00"), "CNY", new BigDecimal("120.00"), BigDecimal.ONE,
|
new BigDecimal("120.00"), "CNY", new BigDecimal("120.00"), BigDecimal.ONE,
|
||||||
"2026-09", null, null, null, null, null, "APPROVED", "PUBLISHED", "ACTIVE", null);
|
"2026-09", null, null, null, null, null, "APPROVED", "PUBLISHED", "ACTIVE", null, null);
|
||||||
String sourceHash = EventPayloadHash.sha256(
|
String sourceHash = EventPayloadHash.sha256(
|
||||||
EventPayloadCanonicalizer.canonicalize(json.valueToTree(unsigned)));
|
EventPayloadCanonicalizer.canonicalize(json.valueToTree(unsigned)));
|
||||||
BusinessFeeSourceChangedV1 payload = new BusinessFeeSourceChangedV1("PUBLISHED", "LASTLEG",
|
BusinessFeeSourceChangedV1 payload = new BusinessFeeSourceChangedV1("PUBLISHED", "LASTLEG",
|
||||||
"OVERSEAS_PROCUREMENT_FEE", "701", 1, "10001", "客户A", "PO-US-001",
|
"OVERSEAS_WAREHOUSE_FEE", "701", 1, "10001", "客户A", "PO-US-001",
|
||||||
"OVERSEAS_PROCUREMENT", "801", "PO-US-001", null, null, null, null, null,
|
"WAREHOUSE_SERVICE", "801", "PO-US-001", null, null, null, null, null,
|
||||||
null, "91", "PROCUREMENT_SERVICE", "采购服务费", "RECEIVABLE", null, null,
|
null, "91", "PROCUREMENT_SERVICE", "采购服务费", "RECEIVABLE", null, null,
|
||||||
null, null, null, null, null, List.of(), LocalDate.of(2026, 9, 2), "CNY",
|
null, null, null, null, null, List.of(), LocalDate.of(2026, 9, 2), "CNY",
|
||||||
new BigDecimal("120.00"), "CNY", new BigDecimal("120.00"), BigDecimal.ONE,
|
new BigDecimal("120.00"), "CNY", new BigDecimal("120.00"), BigDecimal.ONE,
|
||||||
"2026-09", null, null, null, null, null, "APPROVED", "PUBLISHED", "ACTIVE", sourceHash);
|
"2026-09", null, null, null, null, null, "APPROVED", "PUBLISHED", "ACTIVE", sourceHash, null);
|
||||||
JsonNode node = json.valueToTree(payload);
|
JsonNode node = json.valueToTree(payload);
|
||||||
String payloadHash = EventPayloadHash.sha256(EventPayloadCanonicalizer.canonicalize(node));
|
String payloadHash = EventPayloadHash.sha256(EventPayloadCanonicalizer.canonicalize(node));
|
||||||
return new EventEnvelope("123e4567-e89b-12d3-a456-426614174701",
|
return new EventEnvelope("123e4567-e89b-12d3-a456-426614174701",
|
||||||
@@ -237,4 +237,53 @@ class BusinessFeeSourceEventServiceTest {
|
|||||||
verify(jdbc, never()).update(startsWith("INSERT INTO fin_cost"), any(Object[].class));
|
verify(jdbc, never()).update(startsWith("INSERT INTO fin_cost"), any(Object[].class));
|
||||||
verify(jdbc, never()).update(startsWith("UPDATE fin_cost"), any(Object[].class));
|
verify(jdbc, never()).update(startsWith("UPDATE fin_cost"), any(Object[].class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void procurementWithoutConsumptionReferenceNeverEntersReceivablePool() {
|
||||||
|
EventEnvelope event = procurementEvent(false);
|
||||||
|
assertThatThrownBy(() -> service.consume(event)).hasMessageContaining("必须引用成功实扣");
|
||||||
|
noFinancialWrites();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void settledProcurementUsesVerifiedActualConsumptionAndNeverOriginalEstimate() {
|
||||||
|
EventEnvelope event = procurementEvent(true);
|
||||||
|
when(jdbc.queryForObject(startsWith("SELECT id FROM fin_fee_source"), eq(Long.class),
|
||||||
|
eq("LASTLEG"), eq("OVERSEAS_PROCUREMENT_FEE"), eq(701L), eq(1))).thenReturn(901L);
|
||||||
|
when(jdbc.queryForList(startsWith("SELECT l.amount,c.result_json"), eq("command-1"), eq(9L), eq(72L),
|
||||||
|
eq(10001L), eq("PROCUREMENT_FEE"), eq("PO-US-001"))).thenReturn(List.of(Map.of(
|
||||||
|
"amount", new BigDecimal("-120.00"), "result_json", """
|
||||||
|
{"result":"SUCCEEDED","operation":"SETTLE_ACTUAL","commandEventId":"command-1",
|
||||||
|
"walletHoldId":"9","walletLedgerId":"72","customerId":10001,
|
||||||
|
"businessType":"PROCUREMENT_FEE","businessNo":"PO-US-001","amount":120.00}
|
||||||
|
""")));
|
||||||
|
service.consume(event);
|
||||||
|
verify(jdbc).update(startsWith("UPDATE fin_fee_source SET wallet_hold_id="), eq(9L), eq(901L), eq(10001L));
|
||||||
|
verify(jdbc, never()).update(startsWith("UPDATE fin_fee_source f JOIN fin_wallet_hold"), any(Object[].class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void incorrectOrCrossCustomerConsumptionIsRejectedInsteadOfBecomingAvailable() {
|
||||||
|
EventEnvelope event = procurementEvent(true);
|
||||||
|
when(jdbc.queryForObject(startsWith("SELECT id FROM fin_fee_source"), eq(Long.class),
|
||||||
|
eq("LASTLEG"), eq("OVERSEAS_PROCUREMENT_FEE"), eq(701L), eq(1))).thenReturn(901L);
|
||||||
|
assertThatThrownBy(() -> service.consume(event)).hasMessageContaining("不匹配");
|
||||||
|
verify(jdbc, never()).update(startsWith("UPDATE fin_fee_source SET wallet_hold_id="), any(Object[].class));
|
||||||
|
}
|
||||||
|
|
||||||
|
private EventEnvelope procurementEvent(boolean reference) {
|
||||||
|
EventEnvelope base = eventWithoutInbound();
|
||||||
|
ObjectNode payload = (ObjectNode) base.payload().deepCopy();
|
||||||
|
payload.put("sourceType", "OVERSEAS_PROCUREMENT_FEE");
|
||||||
|
payload.put("businessType", "PROCUREMENT_FEE");
|
||||||
|
if (reference) {
|
||||||
|
payload.putObject("walletSettlement").put("commandEventId", "command-1").put("holdId", "9").put("ledgerId", "72");
|
||||||
|
}
|
||||||
|
payload.putNull("action"); payload.putNull("sourceHash");
|
||||||
|
payload.put("sourceHash", EventPayloadHash.sha256(EventPayloadCanonicalizer.canonicalize(payload)));
|
||||||
|
payload.put("action", "PUBLISHED");
|
||||||
|
return new EventEnvelope(base.eventId(), base.eventType(), base.eventVersion(), base.occurredAt(), base.tenantId(),
|
||||||
|
base.aggregateType(), base.aggregateId(), base.aggregateVersion(), null, base.traceId(), base.correlationId(), null,
|
||||||
|
payload, EventPayloadHash.sha256(EventPayloadCanonicalizer.canonicalize(payload)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,6 +101,38 @@ class WalletCommandEventServiceTest {
|
|||||||
verify(jdbc, never()).update(startsWith("INSERT INTO fin_wallet_event_outbox"), any(Object[].class));
|
verify(jdbc, never()).update(startsWith("INSERT INTO fin_wallet_event_outbox"), any(Object[].class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void actualSettlementReportsActualChargeInsteadOfOriginalEstimate() throws Exception {
|
||||||
|
EventEnvelope event = envelope("SETTLE_ACTUAL", 31L, new BigDecimal("60.00"));
|
||||||
|
when(jdbc.queryForList(startsWith("SELECT payload_hash"), eq(String.class), eq(event.eventId())))
|
||||||
|
.thenReturn(List.of(event.payloadHash()));
|
||||||
|
when(jdbc.queryForObject(startsWith("SELECT COUNT(*)"), eq(Integer.class), anyString())).thenReturn(0);
|
||||||
|
when(wallet.settleActual(eq(31L), eq("OVERSEAS_PROCUREMENT_FEE"), eq("PO-1"),
|
||||||
|
eq("freeze-procurement-1"), argThat((BigDecimal amount) -> amount.compareTo(new BigDecimal("60.00")) == 0), any())).thenReturn(
|
||||||
|
new WalletHold(9L, 31L, "OVERSEAS_PROCUREMENT_FEE", "PO-1", new BigDecimal("100.00"),
|
||||||
|
new BigDecimal("100.00"), BigDecimal.ZERO, "SETTLED", 71L, 72L, null, null, null));
|
||||||
|
service.consume(event);
|
||||||
|
var resultJson = org.mockito.ArgumentCaptor.forClass(String.class);
|
||||||
|
verify(jdbc).update(startsWith("UPDATE fin_wallet_command_inbox SET status="), eq("SUCCEEDED"),
|
||||||
|
resultJson.capture(), eq(event.eventId()));
|
||||||
|
JsonNode result = mapper.readTree(resultJson.getValue());
|
||||||
|
assertThat(result.path("amount").decimalValue()).isEqualByComparingTo("60.00");
|
||||||
|
assertThat(result.path("holdStatus").asText()).isEqualTo("SETTLED");
|
||||||
|
assertThat(result.path("walletHoldId").asText()).isEqualTo("9");
|
||||||
|
assertThat(result.path("walletLedgerId").asText()).isEqualTo("72");
|
||||||
|
verify(jdbc).update(contains("f.amount=-l.amount"), eq(9L));
|
||||||
|
verify(wallet, never()).release(anyLong(), anyString(), anyString(), anyString(), any());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void actualSettlementRejectsZeroAndMissingAmountsBeforeOpeningTransaction() {
|
||||||
|
for (BigDecimal amount : new BigDecimal[]{null, BigDecimal.ZERO, new BigDecimal("0.001")}) {
|
||||||
|
assertThatThrownBy(() -> service.consume(envelope("SETTLE_ACTUAL", 31L, amount)))
|
||||||
|
.isInstanceOf(FinanceEventException.class);
|
||||||
|
}
|
||||||
|
verifyNoInteractions(jdbc, wallet, transactions);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void losingInboxInsertMustRecheckThePersistedHash() {
|
void losingInboxInsertMustRecheckThePersistedHash() {
|
||||||
EventEnvelope event = envelope("FREEZE", 31L, new BigDecimal("10.00"));
|
EventEnvelope event = envelope("FREEZE", 31L, new BigDecimal("10.00"));
|
||||||
@@ -133,9 +165,44 @@ class WalletCommandEventServiceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private EventEnvelope envelope(String operation, long customerId, BigDecimal amount) {
|
private EventEnvelope envelope(String operation, long customerId, BigDecimal amount) {
|
||||||
|
return envelope(operation, customerId, amount, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void refundRequiresOriginalConsumptionBeforeAnyWalletCall() {
|
||||||
|
assertThatThrownBy(() -> service.consume(envelope("REFUND", 31L, BigDecimal.TEN)))
|
||||||
|
.isInstanceOf(FinanceEventException.class);
|
||||||
|
verifyNoInteractions(jdbc, wallet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void refundHasItsOwnLedgerReferenceAndNeverPretendsToSettleAHold() throws Exception {
|
||||||
|
EventEnvelope event = envelope("REFUND", 31L, BigDecimal.TEN, "72");
|
||||||
|
when(jdbc.queryForList(startsWith("SELECT payload_hash"), eq(String.class), eq(event.eventId())))
|
||||||
|
.thenReturn(List.of(event.payloadHash()));
|
||||||
|
when(jdbc.queryForObject(startsWith("SELECT COUNT(*)"), eq(Integer.class), anyString())).thenReturn(0);
|
||||||
|
var refunded = new com.baiyue.finance.dto.FinanceWalletDtos.WalletLedgerEntry(73L, "AC-TEST", "REFUND",
|
||||||
|
BigDecimal.TEN, BigDecimal.TEN, BigDecimal.ZERO, BigDecimal.TEN, BigDecimal.ZERO, BigDecimal.ZERO,
|
||||||
|
BigDecimal.ZERO, null, "BUSINESS_REFUND", "PO-1", java.time.LocalDate.now(), null,
|
||||||
|
"AC-ORIGINAL", "业务系统", "采购快递费", null);
|
||||||
|
when(wallet.refundConsumption(eq(31L), eq(72L), eq("PO-1"), eq("freeze-procurement-1"),
|
||||||
|
any(), eq(0L), anyString(), anyString())).thenReturn(refunded);
|
||||||
|
service.consume(event);
|
||||||
|
var capture = org.mockito.ArgumentCaptor.forClass(String.class);
|
||||||
|
verify(jdbc).update(startsWith("UPDATE fin_wallet_command_inbox SET status="), eq("SUCCEEDED"),
|
||||||
|
capture.capture(), eq(event.eventId()));
|
||||||
|
JsonNode result = mapper.readTree(capture.getValue());
|
||||||
|
assertThat(result.path("walletLedgerId").asText()).isEqualTo("73");
|
||||||
|
assertThat(result.path("walletHoldId").isNull()).isTrue();
|
||||||
|
assertThat(result.path("holdStatus").asText()).isEqualTo("REFUNDED");
|
||||||
|
verify(wallet, never()).settle(anyLong(), anyString(), anyString(), anyString(), any());
|
||||||
|
verify(jdbc, never()).update(startsWith("UPDATE fin_fee_source"), any(Object[].class));
|
||||||
|
}
|
||||||
|
|
||||||
|
private EventEnvelope envelope(String operation, long customerId, BigDecimal amount, String originalLedgerId) {
|
||||||
WalletCommandRequestedV1 command = new WalletCommandRequestedV1(operation, customerId,
|
WalletCommandRequestedV1 command = new WalletCommandRequestedV1(operation, customerId,
|
||||||
"OVERSEAS_PROCUREMENT_FEE", "PO-1", amount, "采购快递费",
|
"OVERSEAS_PROCUREMENT_FEE", "PO-1", amount, "采购快递费",
|
||||||
"freeze-procurement-1", Instant.parse("2026-09-05T01:00:00Z"));
|
"freeze-procurement-1", Instant.parse("2026-09-05T01:00:00Z"), originalLedgerId);
|
||||||
JsonNode payload = mapper.valueToTree(command);
|
JsonNode payload = mapper.valueToTree(command);
|
||||||
return new EventEnvelope(UUID.randomUUID().toString(), EventTypes.WALLET_COMMAND_REQUESTED,
|
return new EventEnvelope(UUID.randomUUID().toString(), EventTypes.WALLET_COMMAND_REQUESTED,
|
||||||
WalletCommandRequestedV1.VERSION, Instant.parse("2026-09-05T01:00:00Z"), String.valueOf(customerId), "WALLET_HOLD", "PO-1", 1,
|
WalletCommandRequestedV1.VERSION, Instant.parse("2026-09-05T01:00:00Z"), String.valueOf(customerId), "WALLET_HOLD", "PO-1", 1,
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ class WalletCommandTransactionTest {
|
|||||||
|
|
||||||
private EventEnvelope event(String id, String amount) {
|
private EventEnvelope event(String id, String amount) {
|
||||||
var command = new WalletCommandRequestedV1("FREEZE", 31L, "OVERSEAS_PROCUREMENT_FEE", "PO-1",
|
var command = new WalletCommandRequestedV1("FREEZE", 31L, "OVERSEAS_PROCUREMENT_FEE", "PO-1",
|
||||||
new BigDecimal(amount), "fee", "freeze-1", Instant.parse("2026-09-05T01:00:00Z"));
|
new BigDecimal(amount), "fee", "freeze-1", Instant.parse("2026-09-05T01:00:00Z"), null);
|
||||||
var payload = mapper.valueToTree(command);
|
var payload = mapper.valueToTree(command);
|
||||||
return new EventEnvelope(id, EventTypes.WALLET_COMMAND_REQUESTED, WalletCommandRequestedV1.VERSION,
|
return new EventEnvelope(id, EventTypes.WALLET_COMMAND_REQUESTED, WalletCommandRequestedV1.VERSION,
|
||||||
Instant.now(), "31", "WALLET_HOLD", "PO-1", 1,
|
Instant.now(), "31", "WALLET_HOLD", "PO-1", 1,
|
||||||
|
|||||||
@@ -0,0 +1,91 @@
|
|||||||
|
package com.baiyue.finance.service;
|
||||||
|
|
||||||
|
import com.baiyue.finance.client.FinanceFileClient;
|
||||||
|
import com.baiyue.finance.dto.FinanceWalletDtos.WalletAccount;
|
||||||
|
import com.baiyue.finance.dto.FinanceWalletDtos.WalletHold;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
|
class ProcurementActualSettlementTest {
|
||||||
|
private final FinanceWalletService service = new FinanceWalletService(mock(JdbcTemplate.class),
|
||||||
|
new ObjectMapper().findAndRegisterModules(), mock(FinanceFileClient.class),
|
||||||
|
mock(FinanceDocumentNumberGenerator.class), "token", "", "test", "test");
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void smallerActualChargeReleasesRemainderAndKeepsOtherReservations() {
|
||||||
|
WalletAccount before = account("200", "150", "0", "0", "0", null);
|
||||||
|
WalletAccount after = service.settleActualAccount(before, hold("100", "100", "0"), n("60"));
|
||||||
|
assertThat(after.actualBalance()).isEqualByComparingTo("140");
|
||||||
|
assertThat(after.frozenBalance()).isEqualByComparingTo("50");
|
||||||
|
assertThat(after.availableBalance()).isEqualByComparingTo("90");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void excessUsesAvailableCashThenActiveCreditWithoutTouchingOtherHolds() {
|
||||||
|
WalletAccount before = account("120", "130", "100", "0", "30", LocalDate.now().plusDays(1));
|
||||||
|
WalletAccount after = service.settleActualAccount(before, hold("100", "70", "30"), n("150"));
|
||||||
|
assertThat(after.actualBalance()).isEqualByComparingTo("30");
|
||||||
|
assertThat(after.creditUsed()).isEqualByComparingTo("60");
|
||||||
|
assertThat(after.frozenBalance()).isEqualByComparingTo("30");
|
||||||
|
assertThat(after.creditFrozen()).isZero();
|
||||||
|
assertThat(after.availableBalance()).isEqualByComparingTo("40");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void insufficientExcessRejectsWithoutChangingOriginalAccount() {
|
||||||
|
WalletAccount before = account("120", "100", "0", "0", "0", null);
|
||||||
|
assertThatThrownBy(() -> service.settleActualAccount(before, hold("100", "100", "0"), n("120.01")))
|
||||||
|
.isInstanceOf(FinanceEventException.class)
|
||||||
|
.extracting(e -> ((FinanceEventException) e).code()).isEqualTo("FIN-WALLET-INSUFFICIENT");
|
||||||
|
assertThat(before.actualBalance()).isEqualByComparingTo("120");
|
||||||
|
assertThat(before.frozenBalance()).isEqualByComparingTo("100");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void partialChargeUsesReservedCashBeforeCredit() {
|
||||||
|
WalletAccount before = account("70", "100", "100", "0", "30", LocalDate.now().plusDays(1));
|
||||||
|
WalletAccount after = service.settleActualAccount(before, hold("100", "70", "30"), n("60"));
|
||||||
|
assertThat(after.actualBalance()).isEqualByComparingTo("10");
|
||||||
|
assertThat(after.creditUsed()).isZero();
|
||||||
|
assertThat(after.creditFrozen()).isZero();
|
||||||
|
assertThat(after.frozenBalance()).isZero();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void expiredCreditAllowsOriginalReservationButNeverNewCredit() {
|
||||||
|
WalletAccount before = account("20", "100", "100", "0", "80", LocalDate.now().minusDays(1));
|
||||||
|
WalletAccount after = service.settleActualAccount(before, hold("100", "20", "80"), n("100"));
|
||||||
|
assertThat(after.actualBalance()).isEqualByComparingTo("-80");
|
||||||
|
assertThat(after.creditUsed()).isZero();
|
||||||
|
assertThat(after.frozenBalance()).isZero();
|
||||||
|
assertThatThrownBy(() -> service.settleActualAccount(before, hold("100", "20", "80"), n("100.01")))
|
||||||
|
.isInstanceOf(FinanceEventException.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void invalidActualAmountMustUseReleaseOrCorrectPrecision() {
|
||||||
|
WalletAccount before = account("200", "100", "0", "0", "0", null);
|
||||||
|
for (String value : new String[]{"0", "-1", "0.001"}) {
|
||||||
|
assertThatThrownBy(() -> service.settleActualAccount(before, hold("100", "100", "0"), n(value)))
|
||||||
|
.isInstanceOf(FinanceEventException.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private WalletAccount account(String actual, String frozen, String limit, String used, String creditFrozen, LocalDate expiry) {
|
||||||
|
return service.accountState(n(actual), n(frozen), n(limit), n(used), n(creditFrozen), expiry, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private WalletHold hold(String amount, String cash, String credit) {
|
||||||
|
return new WalletHold(1L, 9L, "PROCUREMENT_FEE", "PF-TEST", n(amount), n(cash), n(credit),
|
||||||
|
"FROZEN", 1L, null, null, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static BigDecimal n(String value) { return new BigDecimal(value); }
|
||||||
|
}
|
||||||
+200
@@ -0,0 +1,200 @@
|
|||||||
|
package com.baiyue.finance.service;
|
||||||
|
|
||||||
|
import com.baiyue.finance.client.FinanceFileClient;
|
||||||
|
import com.baiyue.finance.dto.FinanceWalletDtos.WalletHold;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import org.h2.jdbcx.JdbcDataSource;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.dao.TransientDataAccessResourceException;
|
||||||
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
|
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
||||||
|
import org.springframework.transaction.support.TransactionTemplate;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.*;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
import static org.mockito.ArgumentMatchers.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
/** Executes the real wallet service against transactional JDBC; no mocked money mutations. */
|
||||||
|
class ProcurementSettlementTransactionTest {
|
||||||
|
private JdbcTemplate jdbc;
|
||||||
|
private TransactionTemplate tx;
|
||||||
|
private FinanceWalletService wallet;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setup() {
|
||||||
|
JdbcDataSource source = new JdbcDataSource();
|
||||||
|
source.setURL("jdbc:h2:mem:" + UUID.randomUUID() + ";MODE=MySQL;DATABASE_TO_LOWER=TRUE;DB_CLOSE_DELAY=-1;LOCK_TIMEOUT=5000");
|
||||||
|
jdbc = spy(new JdbcTemplate(source));
|
||||||
|
tx = new TransactionTemplate(new DataSourceTransactionManager(source));
|
||||||
|
jdbc.execute("CREATE TABLE fin_wallet_account(customer_id BIGINT PRIMARY KEY,currency_code VARCHAR(3),actual_balance DECIMAL(18,2),frozen_balance DECIMAL(18,2),available_balance DECIMAL(18,2),credit_limit DECIMAL(18,2),credit_used DECIMAL(18,2),credit_frozen DECIMAL(18,2),credit_expires_on DATE,version INT,created_by BIGINT,updated_by BIGINT,updated_at TIMESTAMP)");
|
||||||
|
jdbc.execute("CREATE TABLE fin_wallet_hold(id BIGINT AUTO_INCREMENT PRIMARY KEY,customer_id BIGINT,business_type VARCHAR(32),business_no VARCHAR(128),amount DECIMAL(18,2),actual_frozen_amount DECIMAL(18,2),credit_frozen_amount DECIMAL(18,2),status VARCHAR(32),freeze_ledger_id BIGINT,action_ledger_id BIGINT,created_at TIMESTAMP,completed_at TIMESTAMP,remark VARCHAR(500),UNIQUE(customer_id,business_type,business_no))");
|
||||||
|
jdbc.execute("CREATE TABLE fin_idempotency_record(tenant_id BIGINT,operator_id BIGINT,operation VARCHAR(64),idempotency_key VARCHAR(128),request_hash VARCHAR(128),status VARCHAR(32),result_resource_id BIGINT,error_code VARCHAR(128),UNIQUE(tenant_id,operator_id,operation,idempotency_key))");
|
||||||
|
jdbc.execute("CREATE TABLE fin_wallet_ledger(id BIGINT AUTO_INCREMENT PRIMARY KEY,customer_id BIGINT,business_no VARCHAR(128),change_type VARCHAR(32),amount DECIMAL(18,2),actual_balance_after DECIMAL(18,2),frozen_balance_after DECIMAL(18,2),available_balance_after DECIMAL(18,2),credit_limit_after DECIMAL(18,2),credit_used_after DECIMAL(18,2),available_credit_after DECIMAL(18,2),credit_expires_on_after DATE,source_type VARCHAR(32),source_no VARCHAR(128),occurred_date DATE,payment_method VARCHAR(32),reference_no VARCHAR(128),operator_id BIGINT,operator_name VARCHAR(128),remark VARCHAR(500),created_at TIMESTAMP)");
|
||||||
|
jdbc.execute("CREATE TABLE fin_audit_log(tenant_id BIGINT,resource_type VARCHAR(64),resource_id BIGINT,action VARCHAR(64),reason VARCHAR(500),before_data TEXT,after_data TEXT,operator_id BIGINT,operator_name_snapshot VARCHAR(128),request_id VARCHAR(128),trace_id VARCHAR(128))");
|
||||||
|
jdbc.update("INSERT INTO fin_wallet_account VALUES(9,'CNY',200,100,100,0,0,0,NULL,0,0,0,CURRENT_TIMESTAMP)");
|
||||||
|
jdbc.update("INSERT INTO fin_wallet_hold(id,customer_id,business_type,business_no,amount,actual_frozen_amount,credit_frozen_amount,status) VALUES(1,9,'PROCUREMENT_FEE','PF-1',100,100,0,'FROZEN')");
|
||||||
|
FinanceDocumentNumberGenerator numbers = mock(FinanceDocumentNumberGenerator.class);
|
||||||
|
AtomicInteger sequence = new AtomicInteger();
|
||||||
|
when(numbers.next("AC")).thenAnswer(i -> "AC-TEST-" + sequence.incrementAndGet());
|
||||||
|
wallet = new FinanceWalletService(jdbc, new ObjectMapper().findAndRegisterModules(),
|
||||||
|
mock(FinanceFileClient.class), numbers, "token", "", "test", "test");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void partialSettlementKeepsEstimateAndRecordsActualExactlyOnce() {
|
||||||
|
WalletHold first = settle("request-1", "60");
|
||||||
|
WalletHold replay = settle("request-1", "60");
|
||||||
|
assertThat(replay.actionLedgerId()).isEqualTo(first.actionLedgerId());
|
||||||
|
assertThat(first.amount()).isEqualByComparingTo("100");
|
||||||
|
assertThat(first.account().actualBalance()).isEqualByComparingTo("140");
|
||||||
|
assertThat(first.account().frozenBalance()).isZero();
|
||||||
|
assertThat(jdbc.queryForObject("SELECT amount FROM fin_wallet_ledger", BigDecimal.class)).isEqualByComparingTo("-60");
|
||||||
|
assertThatThrownBy(() -> settle("different-request", "60")).isInstanceOf(FinanceEventException.class);
|
||||||
|
assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM fin_wallet_ledger", Integer.class)).isEqualTo(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void sameKeyWithDifferentAmountCannotChangeCharge() {
|
||||||
|
settle("request-1", "60");
|
||||||
|
assertThatThrownBy(() -> settle("request-1", "70")).isInstanceOf(FinanceEventException.class)
|
||||||
|
.extracting(e -> ((FinanceEventException) e).code()).isEqualTo("FIN-IDEMPOTENCY-CONFLICT");
|
||||||
|
assertThat(wallet.account(9).actualBalance()).isEqualByComparingTo("140");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void insufficientDifferenceLeavesOriginalHoldAndAccountUntouched() {
|
||||||
|
assertThatThrownBy(() -> settle("request-1", "201")).isInstanceOf(FinanceEventException.class);
|
||||||
|
assertUntouched();
|
||||||
|
assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM fin_idempotency_record", Integer.class)).isZero();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void auditFailureRollsBackDebitLedgerHoldAndIdempotencyReservation() {
|
||||||
|
doThrow(new TransientDataAccessResourceException("audit storage unavailable"))
|
||||||
|
.when(jdbc).update(startsWith("INSERT INTO fin_audit_log"), any(Object[].class));
|
||||||
|
assertThatThrownBy(() -> settle("request-1", "150"))
|
||||||
|
.isInstanceOf(TransientDataAccessResourceException.class);
|
||||||
|
assertUntouched();
|
||||||
|
assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM fin_idempotency_record", Integer.class)).isZero();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void concurrentDifferentRequestsCannotSettleTheSameGoodsTwice() throws Exception {
|
||||||
|
ExecutorService executor = Executors.newFixedThreadPool(2);
|
||||||
|
CountDownLatch start = new CountDownLatch(1);
|
||||||
|
try {
|
||||||
|
Future<Boolean> one = executor.submit(() -> attempt(start, "one"));
|
||||||
|
Future<Boolean> two = executor.submit(() -> attempt(start, "two"));
|
||||||
|
start.countDown();
|
||||||
|
assertThat((one.get(10, TimeUnit.SECONDS) ? 1 : 0) + (two.get(10, TimeUnit.SECONDS) ? 1 : 0)).isEqualTo(1);
|
||||||
|
assertThat(wallet.account(9).actualBalance()).isEqualByComparingTo("50");
|
||||||
|
assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM fin_wallet_ledger", Integer.class)).isEqualTo(1);
|
||||||
|
} finally {
|
||||||
|
executor.shutdownNow();
|
||||||
|
assertThat(executor.awaitTermination(5, TimeUnit.SECONDS)).isTrue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean attempt(CountDownLatch start, String key) throws InterruptedException {
|
||||||
|
if (!start.await(5, TimeUnit.SECONDS)) throw new AssertionError("start timeout");
|
||||||
|
try { settle(key, "150"); return true; }
|
||||||
|
catch (FinanceEventException expected) {
|
||||||
|
assertThat(expected.code()).isEqualTo("FIN-WALLET-HOLD-409");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void refundsAreBoundedByOriginalConsumptionAndCannotReplayWithNewKey() {
|
||||||
|
WalletHold settled = settle("settle", "60");
|
||||||
|
var refund = tx.execute(s -> wallet.refundConsumption(9, settled.actionLedgerId(), "RF-1", "refund-1",
|
||||||
|
new BigDecimal("40"), 7, "finance", "confirmed correction"));
|
||||||
|
var replay = tx.execute(s -> wallet.refundConsumption(9, settled.actionLedgerId(), "RF-1", "new-key",
|
||||||
|
new BigDecimal("40"), 7, "finance", "confirmed correction"));
|
||||||
|
assertThat(replay.ledgerId()).isEqualTo(refund.ledgerId());
|
||||||
|
assertThat(wallet.account(9).actualBalance()).isEqualByComparingTo("180");
|
||||||
|
assertThatThrownBy(() -> tx.execute(s -> wallet.refundConsumption(9, settled.actionLedgerId(), "RF-2", "refund-2",
|
||||||
|
new BigDecimal("20.01"), 7, "finance", "too much")))
|
||||||
|
.isInstanceOf(FinanceEventException.class)
|
||||||
|
.extracting(e -> ((FinanceEventException) e).code()).isEqualTo("FIN-WALLET-REFUND-EXCEEDED");
|
||||||
|
tx.execute(s -> wallet.refundConsumption(9, settled.actionLedgerId(), "RF-2", "refund-2",
|
||||||
|
new BigDecimal("20"), 7, "finance", "remaining refund"));
|
||||||
|
assertThat(wallet.account(9).actualBalance()).isEqualByComparingTo("200");
|
||||||
|
assertThat(jdbc.queryForObject("SELECT status FROM fin_wallet_hold", String.class)).isEqualTo("SETTLED");
|
||||||
|
assertThat(jdbc.queryForObject("SELECT SUM(amount) FROM fin_wallet_ledger WHERE source_type='BUSINESS_REFUND'", BigDecimal.class))
|
||||||
|
.isEqualByComparingTo("60");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void refundCannotReferenceAnotherCustomerOrAnUnsettledReservation() {
|
||||||
|
WalletHold settled = settle("settle", "60");
|
||||||
|
assertThatThrownBy(() -> tx.execute(s -> wallet.refundConsumption(10, settled.actionLedgerId(), "RF-1", "refund-1",
|
||||||
|
BigDecimal.ONE, 7, "finance", "wrong customer"))).isInstanceOf(FinanceEventException.class);
|
||||||
|
assertThatThrownBy(() -> tx.execute(s -> wallet.refundConsumption(9, settled.actionLedgerId(), "RF-1", "refund-1",
|
||||||
|
BigDecimal.ZERO, 7, "finance", "zero refund"))).isInstanceOf(FinanceEventException.class);
|
||||||
|
assertThat(wallet.account(9).actualBalance()).isEqualByComparingTo("140");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void refundFailureRollsBackBalanceAndCanRetryOriginalRequest() {
|
||||||
|
WalletHold settled = settle("settle", "60");
|
||||||
|
doThrow(new TransientDataAccessResourceException("audit unavailable"))
|
||||||
|
.when(jdbc).update(startsWith("INSERT INTO fin_audit_log"), any(Object[].class));
|
||||||
|
assertThatThrownBy(() -> tx.execute(s -> wallet.refundConsumption(9, settled.actionLedgerId(), "RF-1", "refund-1",
|
||||||
|
new BigDecimal("20"), 7, "finance", "correction"))).isInstanceOf(TransientDataAccessResourceException.class);
|
||||||
|
assertThat(wallet.account(9).actualBalance()).isEqualByComparingTo("140");
|
||||||
|
assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM fin_wallet_ledger WHERE change_type='REFUND'", Integer.class)).isZero();
|
||||||
|
doCallRealMethod().when(jdbc).update(startsWith("INSERT INTO fin_audit_log"), any(Object[].class));
|
||||||
|
tx.execute(s -> wallet.refundConsumption(9, settled.actionLedgerId(), "RF-1", "refund-1",
|
||||||
|
new BigDecimal("20"), 7, "finance", "correction"));
|
||||||
|
assertThat(wallet.account(9).actualBalance()).isEqualByComparingTo("160");
|
||||||
|
}
|
||||||
|
|
||||||
|
private WalletHold settle(String key, String amount) {
|
||||||
|
return tx.execute(s -> wallet.settleActual(9, "PROCUREMENT_FEE", "PF-1", key, new BigDecimal(amount), "actual freight"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void concurrentRefundsCannotExceedTheOriginalConsumption() throws Exception {
|
||||||
|
WalletHold original = settle("settle", "60");
|
||||||
|
ExecutorService executor = Executors.newFixedThreadPool(2);
|
||||||
|
CountDownLatch start = new CountDownLatch(1);
|
||||||
|
try {
|
||||||
|
Future<Boolean> one = executor.submit(() -> refundAttempt(start, original.actionLedgerId(), "RF-A"));
|
||||||
|
Future<Boolean> two = executor.submit(() -> refundAttempt(start, original.actionLedgerId(), "RF-B"));
|
||||||
|
start.countDown();
|
||||||
|
assertThat((one.get(10, TimeUnit.SECONDS) ? 1 : 0) + (two.get(10, TimeUnit.SECONDS) ? 1 : 0)).isEqualTo(1);
|
||||||
|
assertThat(wallet.account(9).actualBalance()).isEqualByComparingTo("180");
|
||||||
|
assertThat(jdbc.queryForObject("SELECT SUM(amount) FROM fin_wallet_ledger WHERE change_type='REFUND'", BigDecimal.class))
|
||||||
|
.isEqualByComparingTo("40");
|
||||||
|
} finally {
|
||||||
|
executor.shutdownNow();
|
||||||
|
assertThat(executor.awaitTermination(5, TimeUnit.SECONDS)).isTrue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean refundAttempt(CountDownLatch start, long originalId, String number) throws InterruptedException {
|
||||||
|
if (!start.await(5, TimeUnit.SECONDS)) throw new AssertionError("start timeout");
|
||||||
|
try {
|
||||||
|
tx.execute(s -> wallet.refundConsumption(9, originalId, number, number, new BigDecimal("40"),
|
||||||
|
7, "finance", "correction"));
|
||||||
|
return true;
|
||||||
|
} catch (FinanceEventException expected) {
|
||||||
|
assertThat(expected.code()).isEqualTo("FIN-WALLET-REFUND-EXCEEDED");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertUntouched() {
|
||||||
|
assertThat(wallet.account(9).actualBalance()).isEqualByComparingTo("200");
|
||||||
|
assertThat(wallet.account(9).frozenBalance()).isEqualByComparingTo("100");
|
||||||
|
assertThat(jdbc.queryForObject("SELECT status FROM fin_wallet_hold", String.class)).isEqualTo("FROZEN");
|
||||||
|
assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM fin_wallet_ledger", Integer.class)).isZero();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,6 +9,10 @@
|
|||||||
|
|
||||||
## 模块入口
|
## 模块入口
|
||||||
|
|
||||||
|
预约日历到港只读:`portschedule/controller/PlatformPortScheduleController.java` 的 `/arrival-calendar`,沿 `PortScheduleService`、`PortScheduleMapper` 查询有效柜次及实际到港节点;合同 `src/main/resources/openapi/arrival-calendar-v1.yaml`,权限 `platform:appointment:list`。不在日历维护第二套船节点。
|
||||||
|
|
||||||
|
表内 `controller/`、`service/`、`mapper/`、`loading/` 等业务包路径相对 `src/main/java/com/baiyue/firstleg/`;`src/`、`docs/`、`scripts/` 和 `../` 开头路径相对本服务目录。裸文件名沿同一条目最近业务包定位,必要时在该包用 `rg --files` 查找,不从全仓猜路径。
|
||||||
|
|
||||||
事件人工重试:`controller/EventOperationsController.java` 提供内部 `/internal/firstleg/event-operations/{entryId}` 查询及 `/retry` 写入,只允许装柜完成与船节点事件;独立 `EVENT_OPERATIONS_TOKEN` 保护。原事件不可修改,DEAD→PENDING 与 `event_delivery_retry_audit` 同事务提交,脚本见根 `scripts/event-outbox-operations.mjs`。
|
事件人工重试:`controller/EventOperationsController.java` 提供内部 `/internal/firstleg/event-operations/{entryId}` 查询及 `/retry` 写入,只允许装柜完成与船节点事件;独立 `EVENT_OPERATIONS_TOKEN` 保护。原事件不可修改,DEAD→PENDING 与 `event_delivery_retry_audit` 同事务提交,脚本见根 `scripts/event-outbox-operations.mjs`。
|
||||||
|
|
||||||
柜次号与散货托盘码:`service/FirstlegDocumentNumberGenerator.java` 为新柜生成全局连续且不按日期重置的 `D0001`、`D0002` 柜次号;`service/LoadingPalletLabelService.java`、`mapper/LoadingPalletLabelMapper.java`、`controller/PlatformLoadingListController.java` 负责散货托盘码,契约为 `src/main/resources/openapi/loading-lists-v1.yaml` 的 `/pallet-labels/prepare` 与 `/pallet-labels/print`。仅在计划 `LOADING/COMPLETED` 且真实柜号有效时,为非一件代发的 FBA 明细按平台柜次号、FBA 地址内部编号、三位序号生成冻结标签;托盘码不依赖可跨提单复用的真实柜号,内部编号从 Warehouse 启用主数据读取,缺失或同柜重复时拒绝生成。重复生成须核对已有标签与明细一致,冲突直接拒绝。全部或按仓指定张数打印统一调用 Print `/internal/print/v1/pdfs/fba-pallet-labels`,模板 `FBA_PALLET_A4_LANDSCAPE_V1` 每托一页 297×210 mm,顶部为 SCK8 等 FBA 仓码,条码和底部文字为完整托盘号,与海外补打共用版式;装柜完成通过 `LoadingCompletedOutboxService.java` 传递来源托盘。
|
柜次号与散货托盘码:`service/FirstlegDocumentNumberGenerator.java` 为新柜生成全局连续且不按日期重置的 `D0001`、`D0002` 柜次号;`service/LoadingPalletLabelService.java`、`mapper/LoadingPalletLabelMapper.java`、`controller/PlatformLoadingListController.java` 负责散货托盘码,契约为 `src/main/resources/openapi/loading-lists-v1.yaml` 的 `/pallet-labels/prepare` 与 `/pallet-labels/print`。仅在计划 `LOADING/COMPLETED` 且真实柜号有效时,为非一件代发的 FBA 明细按平台柜次号、FBA 地址内部编号、三位序号生成冻结标签;托盘码不依赖可跨提单复用的真实柜号,内部编号从 Warehouse 启用主数据读取,缺失或同柜重复时拒绝生成。重复生成须核对已有标签与明细一致,冲突直接拒绝。全部或按仓指定张数打印统一调用 Print `/internal/print/v1/pdfs/fba-pallet-labels`,模板 `FBA_PALLET_A4_LANDSCAPE_V1` 每托一页 297×210 mm,顶部为 SCK8 等 FBA 仓码,条码和底部文字为完整托盘号,与海外补打共用版式;装柜完成通过 `LoadingCompletedOutboxService.java` 传递来源托盘。
|
||||||
|
|||||||
@@ -12,6 +12,11 @@ import java.util.List;
|
|||||||
@FeignClient(name = "warehouse-service", contextId = "firstlegWarehouseMasterDataClient",
|
@FeignClient(name = "warehouse-service", contextId = "firstlegWarehouseMasterDataClient",
|
||||||
url = "${baiyue.clients.warehouse.url:}", path = "/internal/warehouses")
|
url = "${baiyue.clients.warehouse.url:}", path = "/internal/warehouses")
|
||||||
public interface WarehouseMasterDataClient {
|
public interface WarehouseMasterDataClient {
|
||||||
|
@GetMapping("/order-catalog")
|
||||||
|
ApiResponse<List<CatalogWarehouse>> catalog(@RequestHeader("X-Internal-Service-Token") String token);
|
||||||
|
|
||||||
|
record CatalogWarehouse(Long id, String warehouseCode, String warehouseName, String warehouseType, String countryCode) { }
|
||||||
|
|
||||||
@GetMapping("/{tenantId}/{warehouseId}/active")
|
@GetMapping("/{tenantId}/{warehouseId}/active")
|
||||||
ApiResponse<Detail> active(@RequestHeader("X-Internal-Service-Token") String token,
|
ApiResponse<Detail> active(@RequestHeader("X-Internal-Service-Token") String token,
|
||||||
@PathVariable long tenantId,
|
@PathVariable long tenantId,
|
||||||
|
|||||||
+6
@@ -26,6 +26,12 @@ import java.util.List;
|
|||||||
public class MerchantContainerCustomsController {
|
public class MerchantContainerCustomsController {
|
||||||
@Resource private ContainerCustomsService service;
|
@Resource private ContainerCustomsService service;
|
||||||
|
|
||||||
|
@GetMapping("/pending-summary")
|
||||||
|
@PreAuthorize("hasAuthority('merchant:order:view')")
|
||||||
|
public ApiResponse<PendingSummary> pendingSummary(@AuthenticationPrincipal AuthenticatedUser user) {
|
||||||
|
return ApiResponse.success(service.merchantPendingSummary(FirstlegScopeGuard.merchant(user)));
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/orders/{orderId}")
|
@GetMapping("/orders/{orderId}")
|
||||||
@PreAuthorize("hasAuthority('merchant:order:view')")
|
@PreAuthorize("hasAuthority('merchant:order:view')")
|
||||||
public ApiResponse<ContainerView> order(@AuthenticationPrincipal AuthenticatedUser user,
|
public ApiResponse<ContainerView> order(@AuthenticationPrincipal AuthenticatedUser user,
|
||||||
|
|||||||
+1
@@ -74,4 +74,5 @@ public final class ContainerCustomsDtos {
|
|||||||
@Size(max = 1000) String resolution) {}
|
@Size(max = 1000) String resolution) {}
|
||||||
|
|
||||||
public record Download(String fileName, String contentType, byte[] content) {}
|
public record Download(String fileName, String contentType, byte[] content) {}
|
||||||
|
public record PendingSummary(long pendingCount) {}
|
||||||
}
|
}
|
||||||
|
|||||||
+36
@@ -87,6 +87,42 @@ public interface ContainerCustomsMapper {
|
|||||||
""")
|
""")
|
||||||
Long completedPlanForOrder(@Param("tenantId") long tenantId, @Param("orderId") long orderId);
|
Long completedPlanForOrder(@Param("tenantId") long tenantId, @Param("orderId") long orderId);
|
||||||
|
|
||||||
|
/** One customer action badge per actual loaded cabinet, including receipt confirmation. */
|
||||||
|
@Select("""
|
||||||
|
SELECT COUNT(DISTINCT p.container_booking_id)
|
||||||
|
FROM fl_loading_plan p
|
||||||
|
JOIN fl_container_booking b ON b.id=p.container_booking_id AND b.record_status='ACTIVE'
|
||||||
|
JOIN fl_loading_plan_item item ON item.loading_plan_id=p.id AND item.deleted=0
|
||||||
|
JOIN fl_inbound_order i ON i.id=item.inbound_id AND i.tenant_id=item.account_id AND i.deleted=0
|
||||||
|
LEFT JOIN fl_customs_container c ON c.loading_plan_id=p.id
|
||||||
|
WHERE p.plan_status='COMPLETED' AND i.tenant_id=#{tenantId} AND i.tax_mode='TAX_REFUND'
|
||||||
|
AND
|
||||||
|
""" + ACTUAL_ITEM_SCOPE + """
|
||||||
|
AND p.id=(
|
||||||
|
SELECT latest.id FROM fl_loading_plan latest
|
||||||
|
JOIN fl_loading_plan_item item ON item.loading_plan_id=latest.id AND item.deleted=0
|
||||||
|
JOIN fl_inbound_order own ON own.id=item.inbound_id AND own.tenant_id=item.account_id AND own.deleted=0
|
||||||
|
WHERE latest.plan_status='COMPLETED' AND own.tenant_id=i.tenant_id AND own.order_id=i.order_id
|
||||||
|
AND own.tax_mode='TAX_REFUND' AND
|
||||||
|
""" + ACTUAL_ITEM_SCOPE + """
|
||||||
|
ORDER BY COALESCE(latest.confirmed_at,latest.updated_at) DESC,latest.id DESC LIMIT 1
|
||||||
|
)
|
||||||
|
AND (
|
||||||
|
((c.id IS NULL OR c.status IN ('WAITING_CUSTOMER_DOCUMENTS','READY_TO_START')) AND NOT EXISTS (
|
||||||
|
SELECT 1 FROM fl_customs_customer_document_inbound scope
|
||||||
|
JOIN fl_customs_customer_document d ON d.id=scope.document_id AND d.status='ACTIVE'
|
||||||
|
WHERE d.customs_container_id=c.id AND d.tenant_id=i.tenant_id
|
||||||
|
AND scope.tenant_id=i.tenant_id AND scope.inbound_id=i.id))
|
||||||
|
OR (c.status='DECLARING' AND EXISTS (
|
||||||
|
SELECT 1 FROM fl_customs_customer_document d
|
||||||
|
JOIN fl_customs_customer_document_inbound scope ON scope.document_id=d.id AND scope.tenant_id=d.tenant_id
|
||||||
|
JOIN fl_customs_completion_document receipt ON receipt.source_document_id=d.id
|
||||||
|
WHERE d.customs_container_id=c.id AND d.tenant_id=i.tenant_id AND d.status='ACTIVE'
|
||||||
|
AND d.frozen_at IS NOT NULL AND scope.inbound_id=i.id AND receipt.customer_confirm_status='PENDING'))
|
||||||
|
)
|
||||||
|
""")
|
||||||
|
long merchantPendingCount(@Param("tenantId") long tenantId);
|
||||||
|
|
||||||
@Insert("""
|
@Insert("""
|
||||||
INSERT INTO fl_customs_container
|
INSERT INTO fl_customs_container
|
||||||
(id,loading_plan_id,container_booking_id,status,created_at,updated_at,version)
|
(id,loading_plan_id,container_booking_id,status,created_at,updated_at,version)
|
||||||
|
|||||||
+5
@@ -44,6 +44,11 @@ public class ContainerCustomsService {
|
|||||||
@Resource private ApplicationEventPublisher events;
|
@Resource private ApplicationEventPublisher events;
|
||||||
@Value("${baiyue.security.internal-service-token}") private String internalToken;
|
@Value("${baiyue.security.internal-service-token}") private String internalToken;
|
||||||
|
|
||||||
|
@Transactional(readOnly = true)
|
||||||
|
public PendingSummary merchantPendingSummary(long tenantId) {
|
||||||
|
return new PendingSummary(mapper.merchantPendingCount(tenantId));
|
||||||
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public ContainerView platformView(long planId) {
|
public ContainerView platformView(long planId) {
|
||||||
List<InboundRow> rows = actualPlanRows(planId);
|
List<InboundRow> rows = actualPlanRows(planId);
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ public final class ContainerOverviewDtos {
|
|||||||
public record Overview(ContainerBookingEntityView container, Long loadingPlanId, PdaSummary pda,
|
public record Overview(ContainerBookingEntityView container, Long loadingPlanId, PdaSummary pda,
|
||||||
List<Document> documents, ExceptionState exception, List<ExceptionHistory> exceptionHistory,
|
List<Document> documents, ExceptionState exception, List<ExceptionHistory> exceptionHistory,
|
||||||
List<TimelineEntry> timeline) {}
|
List<TimelineEntry> timeline) {}
|
||||||
public record ContainerBookingEntityView(Long id, String bookingNo, String cabinetNo, String containerNo,
|
public record ContainerBookingEntityView(Long id, String cabinetNo, String containerNo,
|
||||||
String status, Long warehouseId, String warehouseName, String voyageNo, String vesselName,
|
String status, Long warehouseId, String warehouseName, String voyageNo, String vesselName,
|
||||||
String billOfLadingNo, Long shippingCompanyId, String shippingCompanyName,
|
String billOfLadingNo, Long shippingCompanyId, String shippingCompanyName,
|
||||||
String departurePortCode, String departurePortName, String destinationPortCode,
|
String departurePortCode, String departurePortName, String destinationPortCode,
|
||||||
|
|||||||
@@ -13,5 +13,8 @@ public final class MerchantWorkbenchFilters {
|
|||||||
@Pattern(regexp = "WAIT_MEASURE|WAIT_PALLETIZE|WAIT_SPLIT|LOADING|LOADED|DELIVERED") String mainStatus) {}
|
@Pattern(regexp = "WAIT_MEASURE|WAIT_PALLETIZE|WAIT_SPLIT|LOADING|LOADED|DELIVERED") String mainStatus) {}
|
||||||
|
|
||||||
public record Response(List<Long> matchingStatusOrderIds, List<Long> feeOrderIds,
|
public record Response(List<Long> matchingStatusOrderIds, List<Long> feeOrderIds,
|
||||||
List<Long> customsOrderIds) {}
|
List<Long> customsOrderIds, List<Progress> progress) {}
|
||||||
|
|
||||||
|
public record Progress(long orderId, String stage, boolean partial) {}
|
||||||
|
public record Fragment(long orderId, int stage) {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ public final class SmartLoadingDtos { private SmartLoadingDtos(){}
|
|||||||
if (size == 0) size = 20;
|
if (size == 0) size = 20;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public record WorkbenchContainer(Long bookingId, String bookingNo, String cabinetNo, String containerNo,
|
public record WorkbenchContainer(Long bookingId, String cabinetNo, String containerNo,
|
||||||
Long warehouseId, String warehouseName, String channelGroupCode, String channelCode, String channelName, String containerType,
|
Long warehouseId, String warehouseName, String channelGroupCode, String channelCode, String channelName, String containerType,
|
||||||
BigDecimal capacityCbm, BigDecimal maxWeightKg,
|
BigDecimal capacityCbm, BigDecimal maxWeightKg,
|
||||||
Long planId, String planNo, String planStatus, Integer version) {}
|
Long planId, String planNo, String planStatus, Integer version) {}
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ import java.time.LocalDateTime;
|
|||||||
@TableName("fl_container_booking")
|
@TableName("fl_container_booking")
|
||||||
public class ContainerBookingEntity {
|
public class ContainerBookingEntity {
|
||||||
@TableId(type = IdType.ASSIGN_ID) private Long id;
|
@TableId(type = IdType.ASSIGN_ID) private Long id;
|
||||||
private String bookingNo;
|
|
||||||
private String containerNo;
|
private String containerNo;
|
||||||
private String cabinetNo;
|
private String cabinetNo;
|
||||||
private String sourceType;
|
private String sourceType;
|
||||||
|
|||||||
@@ -63,4 +63,29 @@ public interface MerchantWorkbenchFilterMapper {
|
|||||||
ORDER BY i.order_id
|
ORDER BY i.order_id
|
||||||
""")
|
""")
|
||||||
List<Long> pendingCustoms(@Param("tenantId") long tenantId);
|
List<Long> pendingCustoms(@Param("tenantId") long tenantId);
|
||||||
|
/** Only physically loaded fragments can expose container milestones to the customer. */
|
||||||
|
@Select("""
|
||||||
|
SELECT o.order_id, CASE WHEN owned.container_booking_id IS NULL THEN 0
|
||||||
|
WHEN EXISTS (SELECT 1 FROM fl_carrier_schedule_node_fact n
|
||||||
|
WHERE n.container_booking_id=owned.container_booking_id
|
||||||
|
AND n.standard_node='PICKUP_READY' AND n.actual_at IS NOT NULL) THEN 3
|
||||||
|
WHEN EXISTS (SELECT 1 FROM fl_customs_container c
|
||||||
|
WHERE c.loading_plan_id=owned.loading_plan_id AND c.status='COMPLETED') THEN 2
|
||||||
|
ELSE 1 END AS stage
|
||||||
|
FROM fl_inbound_order o
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT i.inbound_id, i.account_id, p.id AS loading_plan_id, p.container_booking_id
|
||||||
|
FROM fl_loading_plan_item i
|
||||||
|
JOIN fl_loading_plan p ON p.id=i.loading_plan_id AND p.plan_status='COMPLETED'
|
||||||
|
JOIN fl_loading_pick_task t ON t.loading_plan_id=p.id AND t.task_status='COMPLETED'
|
||||||
|
JOIN fl_loading_pick_item picked ON picked.pick_task_id=t.id AND picked.loading_plan_item_id=i.id
|
||||||
|
JOIN fl_container_booking b ON b.id=p.container_booking_id AND b.record_status='ACTIVE'
|
||||||
|
WHERE i.account_id=#{tenantId} AND i.deleted=0
|
||||||
|
AND picked.item_status IN ('PICKED','PARTIAL') AND picked.picked_package_count>0
|
||||||
|
) owned ON owned.inbound_id=o.id AND owned.account_id=o.tenant_id
|
||||||
|
WHERE o.tenant_id=#{tenantId} AND o.deleted=0 AND o.order_id IS NOT NULL
|
||||||
|
AND o.process_status <> 'CANCELLED'
|
||||||
|
ORDER BY o.order_id
|
||||||
|
""")
|
||||||
|
List<com.baiyue.firstleg.dto.MerchantWorkbenchFilters.Fragment> progressFragments(@Param("tenantId") long tenantId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -335,7 +335,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ba
|
|||||||
|
|
||||||
@Select("""
|
@Select("""
|
||||||
<script>
|
<script>
|
||||||
SELECT b.id bookingId,b.booking_no bookingNo,b.cabinet_no cabinetNo,b.container_no containerNo,
|
SELECT b.id bookingId,b.cabinet_no cabinetNo,b.container_no containerNo,
|
||||||
b.warehouse_id warehouseId,b.warehouse_name warehouseName,b.channel_group_code channelGroupCode,b.channel_code channelCode,
|
b.warehouse_id warehouseId,b.warehouse_name warehouseName,b.channel_group_code channelGroupCode,b.channel_code channelCode,
|
||||||
b.channel_name channelName,b.container_type containerType,b.capacity_cbm capacityCbm,
|
b.channel_name channelName,b.container_type containerType,b.capacity_cbm capacityCbm,
|
||||||
b.max_weight_kg maxWeightKg,p.id planId,p.plan_no planNo,
|
b.max_weight_kg maxWeightKg,p.id planId,p.plan_no planNo,
|
||||||
|
|||||||
+28
@@ -0,0 +1,28 @@
|
|||||||
|
package com.baiyue.firstleg.portschedule.controller;
|
||||||
|
|
||||||
|
import com.baiyue.common.core.api.ApiResponse;
|
||||||
|
import com.baiyue.firstleg.portschedule.service.AppointmentForecastService;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.server.ResponseStatusException;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/internal/firstleg/appointment-forecasts")
|
||||||
|
public class InternalAppointmentForecastController {
|
||||||
|
public record Request(List<Long> containerBookingIds) { }
|
||||||
|
private final AppointmentForecastService service;
|
||||||
|
private final String token;
|
||||||
|
public InternalAppointmentForecastController(AppointmentForecastService service,
|
||||||
|
@Value("${baiyue.security.internal-service-token:}") String token){this.service=service;this.token=token;}
|
||||||
|
@PostMapping("/batch")
|
||||||
|
public ApiResponse<List<AppointmentForecastService.Forecast>> batch(
|
||||||
|
@RequestHeader(value="X-Internal-Service-Token",required=false) String supplied,@RequestBody Request request) {
|
||||||
|
if(token==null || token.isBlank() || supplied==null || !MessageDigest.isEqual(token.getBytes(StandardCharsets.UTF_8),supplied.getBytes(StandardCharsets.UTF_8)))
|
||||||
|
throw new ResponseStatusException(HttpStatus.UNAUTHORIZED,"内部身份无效");
|
||||||
|
return ApiResponse.success(service.batch(request==null?null:request.containerBookingIds()));
|
||||||
|
}
|
||||||
|
}
|
||||||
+12
@@ -37,6 +37,18 @@ import java.util.List;
|
|||||||
public class PlatformPortScheduleController {
|
public class PlatformPortScheduleController {
|
||||||
@Resource private PortScheduleService service;
|
@Resource private PortScheduleService service;
|
||||||
|
|
||||||
|
@GetMapping("/arrival-calendar")
|
||||||
|
@PreAuthorize("hasAuthority('platform:appointment:list')")
|
||||||
|
public ApiResponse<List<com.baiyue.firstleg.portschedule.dto.ArrivalCalendarEntry>> arrivalCalendar(
|
||||||
|
@AuthenticationPrincipal AuthenticatedUser user,
|
||||||
|
@org.springframework.web.bind.annotation.RequestParam
|
||||||
|
@org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) java.time.LocalDate from,
|
||||||
|
@org.springframework.web.bind.annotation.RequestParam
|
||||||
|
@org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) java.time.LocalDate to) {
|
||||||
|
FirstlegScopeGuard.platform(user);
|
||||||
|
return ApiResponse.success(service.arrivalCalendar(from, to));
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
@PreAuthorize("hasAuthority('platform:firstleg:port-schedule:list')")
|
@PreAuthorize("hasAuthority('platform:firstleg:port-schedule:list')")
|
||||||
public ApiResponse<PageResult<ScheduleView>> page(@AuthenticationPrincipal AuthenticatedUser user,
|
public ApiResponse<PageResult<ScheduleView>> page(@AuthenticationPrincipal AuthenticatedUser user,
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.baiyue.firstleg.portschedule.dto;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
public record ArrivalCalendarEntry(Long containerBookingId, String cabinetNo, String containerNo,
|
||||||
|
String vesselName, String voyageNo, String destinationPortName, String destinationWarehouseCode,
|
||||||
|
LocalDateTime arrivalAt, String arrivalType) {}
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
package com.baiyue.firstleg.portschedule.mapper;
|
||||||
|
|
||||||
|
import org.apache.ibatis.annotations.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface AppointmentForecastMapper {
|
||||||
|
record Fact(Long containerBookingId,Long factId,String providerCode,String sourceReference,
|
||||||
|
LocalDateTime observedAt,LocalDateTime estimatedAt,LocalDateTime actualAt) { }
|
||||||
|
@Select("""
|
||||||
|
<script>
|
||||||
|
SELECT container_booking_id,fact_id,provider_code,source_reference,observed_at,estimated_at,actual_at
|
||||||
|
FROM (
|
||||||
|
SELECT f.container_booking_id,f.id AS fact_id,f.provider_code,f.source_reference,
|
||||||
|
f.observed_at,f.estimated_at,f.actual_at,
|
||||||
|
ROW_NUMBER() OVER (PARTITION BY f.container_booking_id ORDER BY f.observed_at DESC,f.id DESC) AS position
|
||||||
|
FROM fl_carrier_schedule_node_fact f JOIN fl_container_booking c ON c.id=f.container_booking_id
|
||||||
|
WHERE c.record_status='ACTIVE' AND f.standard_node='ARRIVED_DESTINATION_PORT'
|
||||||
|
AND f.container_booking_id IN
|
||||||
|
<foreach collection='ids' item='id' open='(' separator=',' close=')'>#{id}</foreach>
|
||||||
|
) ranked WHERE position<=2 ORDER BY container_booking_id,position
|
||||||
|
</script>
|
||||||
|
""")
|
||||||
|
List<Fact> latest(@Param("ids") List<Long> containerIds);
|
||||||
|
}
|
||||||
+20
@@ -11,6 +11,26 @@ import org.apache.ibatis.annotations.Update;
|
|||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface PortScheduleMapper extends BaseMapper<PortScheduleEntity> {
|
public interface PortScheduleMapper extends BaseMapper<PortScheduleEntity> {
|
||||||
|
@Select("""
|
||||||
|
SELECT c.id containerBookingId,c.cabinet_no cabinetNo,c.container_no containerNo,
|
||||||
|
c.vessel_name vesselName,c.voyage_no voyageNo,c.destination_port_name destinationPortName,
|
||||||
|
c.destination_warehouse_code destinationWarehouseCode,
|
||||||
|
COALESCE(n.actual_at,c.actual_port_arrival_at,c.estimated_port_arrival_at) arrivalAt,
|
||||||
|
CASE WHEN COALESCE(n.actual_at,c.actual_port_arrival_at) IS NOT NULL THEN 'ACTUAL' ELSE 'ESTIMATED' END arrivalType
|
||||||
|
FROM fl_container_booking c
|
||||||
|
LEFT JOIN fl_carrier_schedule_node_fact n ON n.container_booking_id=c.id
|
||||||
|
AND n.standard_node='ARRIVED_DESTINATION_PORT' AND n.actual_at IS NOT NULL
|
||||||
|
AND n.id=(SELECT n2.id FROM fl_carrier_schedule_node_fact n2
|
||||||
|
WHERE n2.container_booking_id=c.id AND n2.standard_node='ARRIVED_DESTINATION_PORT'
|
||||||
|
AND n2.actual_at IS NOT NULL ORDER BY n2.observed_at DESC,n2.id DESC LIMIT 1)
|
||||||
|
WHERE c.record_status='ACTIVE'
|
||||||
|
AND COALESCE(n.actual_at,c.actual_port_arrival_at,c.estimated_port_arrival_at)>=#{from}
|
||||||
|
AND COALESCE(n.actual_at,c.actual_port_arrival_at,c.estimated_port_arrival_at)<#{to}
|
||||||
|
ORDER BY arrivalAt,c.id
|
||||||
|
""")
|
||||||
|
java.util.List<com.baiyue.firstleg.portschedule.dto.ArrivalCalendarEntry> arrivalCalendar(
|
||||||
|
@Param("from") java.time.LocalDateTime from, @Param("to") java.time.LocalDateTime to);
|
||||||
|
|
||||||
@Select("""
|
@Select("""
|
||||||
<script>
|
<script>
|
||||||
SELECT * FROM fl_port_schedule
|
SELECT * FROM fl_port_schedule
|
||||||
|
|||||||
+4
@@ -35,6 +35,10 @@ public class PortScheduleRepository {
|
|||||||
return PageResult.from(schedules.selectPage(new Page<>(query.page(), query.size()), query));
|
return PageResult.from(schedules.selectPage(new Page<>(query.page(), query.size()), query));
|
||||||
}
|
}
|
||||||
public PortScheduleEntity find(long id) { return schedules.selectById(id); }
|
public PortScheduleEntity find(long id) { return schedules.selectById(id); }
|
||||||
|
public List<com.baiyue.firstleg.portschedule.dto.ArrivalCalendarEntry> arrivalCalendar(
|
||||||
|
java.time.LocalDateTime from, java.time.LocalDateTime to) {
|
||||||
|
return schedules.arrivalCalendar(from, to);
|
||||||
|
}
|
||||||
public PortScheduleEntity latestForDispatch(long customerId, long oceanBookingId, long containerBookingId) {
|
public PortScheduleEntity latestForDispatch(long customerId, long oceanBookingId, long containerBookingId) {
|
||||||
return schedules.latestForDispatch(customerId, oceanBookingId, containerBookingId);
|
return schedules.latestForDispatch(customerId, oceanBookingId, containerBookingId);
|
||||||
}
|
}
|
||||||
|
|||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
package com.baiyue.firstleg.portschedule.service;
|
||||||
|
|
||||||
|
import com.baiyue.firstleg.portschedule.mapper.AppointmentForecastMapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.web.server.ResponseStatusException;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/** Forecast facts are read from their owning service, never inferred from an order snapshot. */
|
||||||
|
@Service
|
||||||
|
public class AppointmentForecastService {
|
||||||
|
public record Forecast(Long containerBookingId,AppointmentForecastMapper.Fact latest,
|
||||||
|
AppointmentForecastMapper.Fact previous,String timeBasis) { }
|
||||||
|
private final AppointmentForecastMapper mapper;
|
||||||
|
public AppointmentForecastService(AppointmentForecastMapper mapper){this.mapper=mapper;}
|
||||||
|
public List<Forecast> batch(List<Long> ids) {
|
||||||
|
if(ids==null || ids.isEmpty() || ids.size()>200 || ids.stream().anyMatch(id->id==null || id<=0)
|
||||||
|
|| new HashSet<>(ids).size()!=ids.size()) throw new ResponseStatusException(HttpStatus.BAD_REQUEST,"每批须提供1至200个不重复的柜次");
|
||||||
|
var facts=mapper.latest(ids).stream().collect(Collectors.groupingBy(AppointmentForecastMapper.Fact::containerBookingId));
|
||||||
|
return ids.stream().map(id->{
|
||||||
|
var rows=facts.getOrDefault(id,List.of());
|
||||||
|
return new Forecast(id,rows.isEmpty()?null:rows.get(0),rows.size()<2?null:rows.get(1),"SOURCE_LOCAL_UNSPECIFIED");
|
||||||
|
}).toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
+9
@@ -48,6 +48,15 @@ public class PortScheduleService {
|
|||||||
return detail(required(id));
|
return detail(required(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public java.util.List<com.baiyue.firstleg.portschedule.dto.ArrivalCalendarEntry> arrivalCalendar(
|
||||||
|
java.time.LocalDate from, java.time.LocalDate to) {
|
||||||
|
if (from == null || to == null || !to.isAfter(from)
|
||||||
|
|| java.time.temporal.ChronoUnit.DAYS.between(from, to) > 42) {
|
||||||
|
throw badRequest("日历查询范围必须为1至42天");
|
||||||
|
}
|
||||||
|
return repository.arrivalCalendar(from.atStartOfDay(), to.atStartOfDay());
|
||||||
|
}
|
||||||
|
|
||||||
public java.util.List<PortScheduleHistoryEntity> history(long id) {
|
public java.util.List<PortScheduleHistoryEntity> history(long id) {
|
||||||
required(id);
|
required(id);
|
||||||
return repository.histories(id);
|
return repository.histories(id);
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public class ContainerOverviewService {
|
|||||||
.toList();
|
.toList();
|
||||||
PdaSummary pda = task == null ? null : pda(task);
|
PdaSummary pda = task == null ? null : pda(task);
|
||||||
List<TimelineEntry> timeline = timeline(id, task == null ? null : task.id(), exceptionHistory);
|
List<TimelineEntry> timeline = timeline(id, task == null ? null : task.id(), exceptionHistory);
|
||||||
return new Overview(new ContainerBookingEntityView(booking.getId(), booking.getBookingNo(),
|
return new Overview(new ContainerBookingEntityView(booking.getId(),
|
||||||
booking.getCabinetNo(), booking.getContainerNo(), booking.getPlanStatus(), booking.getWarehouseId(),
|
booking.getCabinetNo(), booking.getContainerNo(), booking.getPlanStatus(), booking.getWarehouseId(),
|
||||||
booking.getWarehouseName(), booking.getVoyageNo(), booking.getVesselName(), booking.getBillOfLadingNo(),
|
booking.getWarehouseName(), booking.getVoyageNo(), booking.getVesselName(), booking.getBillOfLadingNo(),
|
||||||
booking.getShippingCompanyId(), booking.getShippingCompanyName(), booking.getDeparturePortCode(),
|
booking.getShippingCompanyId(), booking.getShippingCompanyName(), booking.getDeparturePortCode(),
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ public class ContainerService {
|
|||||||
.map(ChannelRow::getChannelCode).anyMatch(channelGroup.channelCodes()::contains);
|
.map(ChannelRow::getChannelCode).anyMatch(channelGroup.channelCodes()::contains);
|
||||||
if (!activeGroup) throw conflict("所选物流渠道分组在当前仓库已失效,请重新选择");
|
if (!activeGroup) throw conflict("所选物流渠道分组在当前仓库已失效,请重新选择");
|
||||||
ContainerBookingEntity value = new ContainerBookingEntity(); value.setId(IdWorker.getId());
|
ContainerBookingEntity value = new ContainerBookingEntity(); value.setId(IdWorker.getId());
|
||||||
value.setBookingNo(documentNumbers.next("CB")); value.setCabinetNo(documentNumbers.nextCabinetNo());
|
value.setCabinetNo(documentNumbers.nextCabinetNo());
|
||||||
value.setSourceType("SIMULATION"); value.setRecordStatus("ACTIVE");
|
value.setSourceType("SIMULATION"); value.setRecordStatus("ACTIVE");
|
||||||
value.setChannelGroupCode(channelGroup.code()); value.setChannelCode(null); value.setChannelName(null);
|
value.setChannelGroupCode(channelGroup.code()); value.setChannelCode(null); value.setChannelName(null);
|
||||||
value.setWarehouseId(warehouse.id()); value.setWarehouseName(warehouse.warehouseName());
|
value.setWarehouseId(warehouse.id()); value.setWarehouseName(warehouse.warehouseName());
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@ import java.util.Set;
|
|||||||
public class FirstlegDocumentNumberGenerator {
|
public class FirstlegDocumentNumberGenerator {
|
||||||
private static final ZoneId BUSINESS_ZONE = ZoneId.of("Asia/Shanghai");
|
private static final ZoneId BUSINESS_ZONE = ZoneId.of("Asia/Shanghai");
|
||||||
private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyMMdd", Locale.ROOT);
|
private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyMMdd", Locale.ROOT);
|
||||||
private static final Set<String> SUPPORTED_PREFIXES = Set.of("OB", "TA", "CB", "LP", "DP");
|
private static final Set<String> SUPPORTED_PREFIXES = Set.of("OB", "TA", "LP", "DP");
|
||||||
private static final long MAX_DAILY_SEQUENCE = 9_999L;
|
private static final long MAX_DAILY_SEQUENCE = 9_999L;
|
||||||
|
|
||||||
private final JdbcTemplate jdbc;
|
private final JdbcTemplate jdbc;
|
||||||
|
|||||||
+13
-1
@@ -10,10 +10,22 @@ public class MerchantWorkbenchFilterService {
|
|||||||
@Resource private MerchantWorkbenchFilterMapper mapper;
|
@Resource private MerchantWorkbenchFilterMapper mapper;
|
||||||
@Resource private UnifiedInboundQueryService unified;
|
@Resource private UnifiedInboundQueryService unified;
|
||||||
|
|
||||||
|
@org.springframework.transaction.annotation.Transactional(readOnly=true)
|
||||||
public MerchantWorkbenchFilters.Response read(MerchantWorkbenchFilters.Request request) {
|
public MerchantWorkbenchFilters.Response read(MerchantWorkbenchFilters.Request request) {
|
||||||
return new MerchantWorkbenchFilters.Response(
|
return new MerchantWorkbenchFilters.Response(
|
||||||
request.mainStatus() == null ? null : mapper.byProcessStatuses(request.tenantId(),
|
request.mainStatus() == null ? null : mapper.byProcessStatuses(request.tenantId(),
|
||||||
unified.internalStatuses(request.mainStatus())),
|
unified.internalStatuses(request.mainStatus())),
|
||||||
mapper.pendingFees(request.tenantId()), mapper.pendingCustoms(request.tenantId()));
|
mapper.pendingFees(request.tenantId()), mapper.pendingCustoms(request.tenantId()),
|
||||||
|
progress(mapper.progressFragments(request.tenantId())));
|
||||||
|
}
|
||||||
|
|
||||||
|
static java.util.List<MerchantWorkbenchFilters.Progress> progress(java.util.List<MerchantWorkbenchFilters.Fragment> facts) {
|
||||||
|
var grouped = facts.stream().collect(java.util.stream.Collectors.groupingBy(MerchantWorkbenchFilters.Fragment::orderId));
|
||||||
|
return grouped.entrySet().stream().sorted(java.util.Map.Entry.comparingByKey()).map(entry -> {
|
||||||
|
int max = entry.getValue().stream().mapToInt(MerchantWorkbenchFilters.Fragment::stage).max().orElse(0);
|
||||||
|
boolean partial = entry.getValue().stream().anyMatch(fragment -> fragment.stage() < max);
|
||||||
|
return new MerchantWorkbenchFilters.Progress(entry.getKey(),
|
||||||
|
switch(max) { case 1 -> "loaded"; case 2 -> "declared"; case 3 -> "cleared"; default -> "none"; }, partial);
|
||||||
|
}).filter(fact -> !"none".equals(fact.stage())).toList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+11
@@ -41,6 +41,17 @@ import java.util.List;
|
|||||||
@RequestMapping("/api/platform/v1/terminal-drayages")
|
@RequestMapping("/api/platform/v1/terminal-drayages")
|
||||||
public class PlatformTerminalDrayageController {
|
public class PlatformTerminalDrayageController {
|
||||||
@Resource private TerminalDrayageMailService mails;
|
@Resource private TerminalDrayageMailService mails;
|
||||||
|
@Resource private com.baiyue.firstleg.terminaldrayage.service.TerminalDrayageCalendarService calendar;
|
||||||
|
|
||||||
|
@GetMapping("/calendar")
|
||||||
|
@PreAuthorize("hasAuthority('platform:appointment:list') and hasAuthority('platform:firstleg:terminal-drayage:list')")
|
||||||
|
public ApiResponse<com.baiyue.firstleg.terminaldrayage.service.TerminalDrayageCalendarService.Calendar> calendar(
|
||||||
|
@AuthenticationPrincipal AuthenticatedUser user,
|
||||||
|
@RequestParam @org.springframework.format.annotation.DateTimeFormat(iso=org.springframework.format.annotation.DateTimeFormat.ISO.DATE) java.time.LocalDate from,
|
||||||
|
@RequestParam @org.springframework.format.annotation.DateTimeFormat(iso=org.springframework.format.annotation.DateTimeFormat.ISO.DATE) java.time.LocalDate to) {
|
||||||
|
FirstlegScopeGuard.platform(user);
|
||||||
|
return ApiResponse.success(calendar.calendar(from,to));
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/{containerBookingId}/pickup-email")
|
@PostMapping("/{containerBookingId}/pickup-email")
|
||||||
@PreAuthorize("hasAuthority('platform:firstleg:terminal-drayage:fleet:edit')")
|
@PreAuthorize("hasAuthority('platform:firstleg:terminal-drayage:fleet:edit')")
|
||||||
|
|||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
package com.baiyue.firstleg.terminaldrayage.dto;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/** Original pickup appointment wall time; the source does not establish a port time zone. */
|
||||||
|
public record PickupCalendarEntry(Long containerBookingId, String cabinetNo, String containerNo,
|
||||||
|
String destinationPortName, String destinationWarehouseCode, String fleetSupplierName,
|
||||||
|
LocalDateTime pickupAppointmentAt, LocalDateTime actualPickupAt) { }
|
||||||
+13
@@ -14,6 +14,19 @@ import java.util.List;
|
|||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface TerminalDrayageMapper extends BaseMapper<TerminalDrayageEntity> {
|
public interface TerminalDrayageMapper extends BaseMapper<TerminalDrayageEntity> {
|
||||||
|
@Select("""
|
||||||
|
SELECT c.id containerBookingId,c.cabinet_no cabinetNo,c.container_no containerNo,
|
||||||
|
c.destination_port_name destinationPortName,c.destination_warehouse_code destinationWarehouseCode,
|
||||||
|
t.fleet_supplier_name fleetSupplierName,t.pickup_appointment_at pickupAppointmentAt,NULL actualPickupAt
|
||||||
|
FROM fl_terminal_drayage t JOIN fl_container_booking c ON c.id=t.container_booking_id
|
||||||
|
WHERE c.record_status='ACTIVE' AND t.pickup_appointment_at>=#{from} AND t.pickup_appointment_at<#{to}
|
||||||
|
AND EXISTS(SELECT 1 FROM fl_outbound_dispatch d WHERE d.container_booking_id=c.id
|
||||||
|
AND d.confirmed_at IS NOT NULL AND d.reversed_at IS NULL AND d.status='WAITING_FOR_LOADING')
|
||||||
|
ORDER BY t.pickup_appointment_at,c.id LIMIT #{limit}
|
||||||
|
""")
|
||||||
|
List<com.baiyue.firstleg.terminaldrayage.dto.PickupCalendarEntry> calendar(
|
||||||
|
@Param("from") LocalDateTime from,@Param("to") LocalDateTime to,@Param("limit") int limit);
|
||||||
|
|
||||||
@Select("""
|
@Select("""
|
||||||
SELECT b.id AS containerBookingId,b.container_no AS containerNo,b.ocean_booking_id AS oceanBookingId,
|
SELECT b.id AS containerBookingId,b.container_no AS containerNo,b.ocean_booking_id AS oceanBookingId,
|
||||||
b.record_status AS recordStatus,b.unloading_completed_at AS unloadingCompletedAt
|
b.record_status AS recordStatus,b.unloading_completed_at AS unloadingCompletedAt
|
||||||
|
|||||||
+57
@@ -0,0 +1,57 @@
|
|||||||
|
package com.baiyue.firstleg.terminaldrayage.service;
|
||||||
|
|
||||||
|
import com.baiyue.firstleg.client.WarehouseMasterDataClient;
|
||||||
|
import com.baiyue.firstleg.terminaldrayage.dto.PickupCalendarEntry;
|
||||||
|
import com.baiyue.firstleg.terminaldrayage.mapper.TerminalDrayageMapper;
|
||||||
|
import com.baiyue.firstleg.portschedule.service.CarrierScheduleQueryService;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.web.server.ResponseStatusException;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class TerminalDrayageCalendarService {
|
||||||
|
private final TerminalDrayageMapper mapper;
|
||||||
|
private final WarehouseMasterDataClient warehouses;
|
||||||
|
private final String token;
|
||||||
|
private final CarrierScheduleQueryService shipping;
|
||||||
|
public TerminalDrayageCalendarService(TerminalDrayageMapper mapper,WarehouseMasterDataClient warehouses,
|
||||||
|
CarrierScheduleQueryService shipping,
|
||||||
|
@Value("${baiyue.security.internal-service-token}") String token) {this.mapper=mapper;this.warehouses=warehouses;this.shipping=shipping;this.token=token;}
|
||||||
|
public record Calendar(List<PickupCalendarEntry> records,boolean truncated,int unclassifiedCount,
|
||||||
|
String scopeBasis,String timeBasis) { }
|
||||||
|
public Calendar calendar(LocalDate from,LocalDate to) {
|
||||||
|
if(from==null || to==null || !to.isAfter(from) || ChronoUnit.DAYS.between(from,to)>42)
|
||||||
|
throw new ResponseStatusException(HttpStatus.BAD_REQUEST,"日历查询范围必须为1至42天");
|
||||||
|
var rows=mapper.calendar(from.atStartOfDay(),to.atStartOfDay(),1001);
|
||||||
|
if(rows.isEmpty()) return result(List.of(),false,0);
|
||||||
|
final Map<String,String> countries=new HashMap<>();
|
||||||
|
try {
|
||||||
|
var response=warehouses.catalog(token);
|
||||||
|
if(response==null || !response.successful() || response.data()==null) throw new IllegalStateException();
|
||||||
|
for(var warehouse:response.data()) if(warehouse!=null && warehouse.warehouseCode()!=null && warehouse.countryCode()!=null)
|
||||||
|
countries.put(warehouse.warehouseCode(),warehouse.countryCode());
|
||||||
|
} catch(RuntimeException error) {throw new ResponseStatusException(HttpStatus.SERVICE_UNAVAILABLE,"提柜目的仓范围暂不可核实",error);}
|
||||||
|
var records=new ArrayList<PickupCalendarEntry>();int unknown=0;
|
||||||
|
for(var row:rows.stream().limit(1000).toList()) {
|
||||||
|
var country=countries.get(row.destinationWarehouseCode());
|
||||||
|
if(country==null || country.isBlank()) unknown++;
|
||||||
|
else if("US".equals(country)) records.add(row);
|
||||||
|
}
|
||||||
|
var actual=new HashMap<Long,java.time.LocalDateTime>();
|
||||||
|
var ids=records.stream().map(PickupCalendarEntry::containerBookingId).distinct().toList();
|
||||||
|
for(int start=0;start<ids.size();start+=200) {
|
||||||
|
for(var fact:shipping.containerActualFacts(ids.subList(start,Math.min(start+200,ids.size()))))
|
||||||
|
if(fact.pickedUpAt()!=null) actual.put(fact.containerBookingId(),fact.pickedUpAt());
|
||||||
|
}
|
||||||
|
var enriched=records.stream().map(row->new PickupCalendarEntry(row.containerBookingId(),row.cabinetNo(),row.containerNo(),
|
||||||
|
row.destinationPortName(),row.destinationWarehouseCode(),row.fleetSupplierName(),row.pickupAppointmentAt(),actual.get(row.containerBookingId()))).toList();
|
||||||
|
return result(enriched,rows.size()>1000,unknown);
|
||||||
|
}
|
||||||
|
private Calendar result(List<PickupCalendarEntry> records,boolean truncated,int unknown) {
|
||||||
|
return new Calendar(List.copyOf(records),truncated,unknown,"US_DESTINATION_WAREHOUSE","SOURCE_LOCAL_UNSPECIFIED");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -94,7 +94,7 @@ BEGIN
|
|||||||
SELECT MAX(plan_status) INTO current_plan_status
|
SELECT MAX(plan_status) INTO current_plan_status
|
||||||
FROM fl_loading_plan WHERE container_booking_id = OLD.id;
|
FROM fl_loading_plan WHERE container_booking_id = OLD.id;
|
||||||
IF current_plan_status IN ('LOADING', 'COMPLETED') AND (
|
IF current_plan_status IN ('LOADING', 'COMPLETED') AND (
|
||||||
NOT (OLD.id <=> NEW.id) OR NOT (OLD.booking_no <=> NEW.booking_no)
|
NOT (OLD.id <=> NEW.id)
|
||||||
OR NOT (OLD.cabinet_no <=> NEW.cabinet_no)
|
OR NOT (OLD.cabinet_no <=> NEW.cabinet_no)
|
||||||
OR NOT (OLD.channel_group_code <=> NEW.channel_group_code)
|
OR NOT (OLD.channel_group_code <=> NEW.channel_group_code)
|
||||||
OR NOT (OLD.channel_code <=> NEW.channel_code) OR NOT (OLD.channel_name <=> NEW.channel_name)
|
OR NOT (OLD.channel_code <=> NEW.channel_code) OR NOT (OLD.channel_name <=> NEW.channel_name)
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ CREATE TABLE IF NOT EXISTS fl_document_sequence (
|
|||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS fl_container_booking (
|
CREATE TABLE IF NOT EXISTS fl_container_booking (
|
||||||
id BIGINT UNSIGNED NOT NULL COMMENT '货柜预订ID(雪花ID)',
|
id BIGINT UNSIGNED NOT NULL COMMENT '货柜预订ID(雪花ID)',
|
||||||
booking_no VARCHAR(40) NOT NULL COMMENT '平台唯一货柜预订单号',
|
|
||||||
container_no VARCHAR(64) NULL COMMENT '国内柜次真实集装箱号权威快照;ISO 6346标准格式;同一订舱内唯一,不同提单允许复用;订舱关联可选写入、提柜后可原子补录、预装纠错命令可修改',
|
container_no VARCHAR(64) NULL COMMENT '国内柜次真实集装箱号权威快照;ISO 6346标准格式;同一订舱内唯一,不同提单允许复用;订舱关联可选写入、提柜后可原子补录、预装纠错命令可修改',
|
||||||
cabinet_no VARCHAR(64) NOT NULL COMMENT '平台唯一内部柜号',
|
cabinet_no VARCHAR(64) NOT NULL COMMENT '平台唯一内部柜号',
|
||||||
source_type VARCHAR(24) NOT NULL DEFAULT 'SIMULATION' COMMENT '记录来源:SIMULATION内部模拟柜、OCEAN_BOOKING订舱真实柜',
|
source_type VARCHAR(24) NOT NULL DEFAULT 'SIMULATION' COMMENT '记录来源:SIMULATION内部模拟柜、OCEAN_BOOKING订舱真实柜',
|
||||||
@@ -90,7 +89,6 @@ CREATE TABLE IF NOT EXISTS fl_container_booking (
|
|||||||
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '货柜资料最后更新时间',
|
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '货柜资料最后更新时间',
|
||||||
version INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
version INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
||||||
PRIMARY KEY (id),
|
PRIMARY KEY (id),
|
||||||
UNIQUE KEY uk_container_booking_no (booking_no),
|
|
||||||
UNIQUE KEY uk_container_booking_cabinet (cabinet_no),
|
UNIQUE KEY uk_container_booking_cabinet (cabinet_no),
|
||||||
UNIQUE KEY uk_container_booking_ocean_container (ocean_booking_id,container_no),
|
UNIQUE KEY uk_container_booking_ocean_container (ocean_booking_id,container_no),
|
||||||
KEY idx_container_booking_container_no (container_no,updated_at,id),
|
KEY idx_container_booking_container_no (container_no,updated_at,id),
|
||||||
@@ -895,7 +893,7 @@ BEGIN
|
|||||||
SELECT MAX(plan_status) INTO current_plan_status
|
SELECT MAX(plan_status) INTO current_plan_status
|
||||||
FROM fl_loading_plan WHERE container_booking_id = OLD.id;
|
FROM fl_loading_plan WHERE container_booking_id = OLD.id;
|
||||||
IF current_plan_status IN ('LOADING', 'COMPLETED') AND (
|
IF current_plan_status IN ('LOADING', 'COMPLETED') AND (
|
||||||
NOT (OLD.id <=> NEW.id) OR NOT (OLD.booking_no <=> NEW.booking_no)
|
NOT (OLD.id <=> NEW.id)
|
||||||
OR NOT (OLD.cabinet_no <=> NEW.cabinet_no)
|
OR NOT (OLD.cabinet_no <=> NEW.cabinet_no)
|
||||||
OR NOT (OLD.channel_code <=> NEW.channel_code)
|
OR NOT (OLD.channel_code <=> NEW.channel_code)
|
||||||
OR NOT (OLD.channel_name <=> NEW.channel_name)
|
OR NOT (OLD.channel_name <=> NEW.channel_name)
|
||||||
@@ -1542,9 +1540,9 @@ BEGIN
|
|||||||
END IF;
|
END IF;
|
||||||
IF (SELECT COUNT(*) FROM information_schema.columns
|
IF (SELECT COUNT(*) FROM information_schema.columns
|
||||||
WHERE table_schema = 'baiyue_firstleg' AND table_name = 'fl_container_booking'
|
WHERE table_schema = 'baiyue_firstleg' AND table_name = 'fl_container_booking'
|
||||||
AND column_name IN ('booking_no', 'cabinet_no', 'warehouse_id', 'bill_of_lading_no',
|
AND column_name IN ('cabinet_no', 'warehouse_id', 'bill_of_lading_no',
|
||||||
'vessel_name', 'voyage_no', 'container_type', 'capacity_cbm',
|
'vessel_name', 'voyage_no', 'container_type', 'capacity_cbm',
|
||||||
'max_weight_kg', 'terminal_trucking_company_id', 'terminal_trucking_company')) <> 11 THEN
|
'max_weight_kg', 'terminal_trucking_company_id', 'terminal_trucking_company')) <> 10 THEN
|
||||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '智能装柜迁移失败:货柜原型字段缺失';
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '智能装柜迁移失败:货柜原型字段缺失';
|
||||||
END IF;
|
END IF;
|
||||||
IF (SELECT COUNT(*) FROM information_schema.columns
|
IF (SELECT COUNT(*) FROM information_schema.columns
|
||||||
|
|||||||
@@ -0,0 +1,54 @@
|
|||||||
|
openapi: 3.0.3
|
||||||
|
info:
|
||||||
|
title: 预约筹划船期事实内部查询
|
||||||
|
version: 1.0.0
|
||||||
|
paths:
|
||||||
|
/internal/firstleg/appointment-forecasts/batch:
|
||||||
|
post:
|
||||||
|
operationId: readAppointmentForecastFacts
|
||||||
|
summary: 批量读取有效柜次最新两个到港船节点观察
|
||||||
|
description: 仅内部服务令牌,不开放公网。最多200个不重复柜次,一次批量读取;按照观察时间及事实ID降序。最新观察没有预计时间时保持空,不沿用旧ETA;实际到港单独返回。缺失或非有效柜次返回空latest/previous。原来源时间没有可靠时区,明确SOURCE_LOCAL_UNSPECIFIED,不转成UTC或伪造备妥时间。
|
||||||
|
security: [{internalToken: []}]
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
required: [containerBookingIds]
|
||||||
|
properties:
|
||||||
|
containerBookingIds: {type: array, minItems: 1, maxItems: 200, uniqueItems: true, items: {type: integer, format: int64, minimum: 1}}
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: ApiResponse;每个请求柜次恰好一行,按请求顺序
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
code: {type: string}
|
||||||
|
data:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
containerBookingId: {type: string}
|
||||||
|
timeBasis: {type: string, enum: [SOURCE_LOCAL_UNSPECIFIED]}
|
||||||
|
latest: {$ref: '#/components/schemas/Fact'}
|
||||||
|
previous: {$ref: '#/components/schemas/Fact'}
|
||||||
|
'401': {description: 内部身份缺失、错误或服务端未配置}
|
||||||
|
components:
|
||||||
|
securitySchemes:
|
||||||
|
internalToken: {type: apiKey, in: header, name: X-Internal-Service-Token}
|
||||||
|
schemas:
|
||||||
|
Fact:
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
containerBookingId: {type: string}
|
||||||
|
factId: {type: string, description: 技术关联标识,不展示为业务编号}
|
||||||
|
providerCode: {type: string, nullable: true}
|
||||||
|
sourceReference: {type: string, nullable: true}
|
||||||
|
observedAt: {type: string, nullable: true, description: 来源观察时间}
|
||||||
|
estimatedAt: {type: string, nullable: true, description: 来源当地预计到港时间,时区未核实}
|
||||||
|
actualAt: {type: string, nullable: true, description: 来源实际到港时间,与预测分开}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
openapi: 3.0.3
|
||||||
|
info:
|
||||||
|
title: 预约日历到港信息
|
||||||
|
version: 1.0.0
|
||||||
|
security:
|
||||||
|
- bearerAuth: []
|
||||||
|
paths:
|
||||||
|
/api/platform/v1/port-schedules/arrival-calendar:
|
||||||
|
get:
|
||||||
|
summary: 查询日期范围内货柜到港信息
|
||||||
|
description: '仅平台,权限platform:appointment:list。按有效柜次返回一条记录;实际到港优先取最新已观测实际船节点,其次柜次实际到港,再取预计到港。未提供日期的柜次不伪造日期。区间左闭右开,最多42天。'
|
||||||
|
parameters:
|
||||||
|
- {name: from, in: query, required: true, schema: {type: string, format: date}}
|
||||||
|
- {name: to, in: query, required: true, schema: {type: string, format: date}}
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: 业务响应,成功code为字符串200。
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
code: {type: string}
|
||||||
|
message: {type: string}
|
||||||
|
data:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
containerBookingId: {type: string}
|
||||||
|
cabinetNo: {type: string}
|
||||||
|
containerNo: {type: string, nullable: true}
|
||||||
|
vesselName: {type: string, nullable: true}
|
||||||
|
voyageNo: {type: string, nullable: true}
|
||||||
|
destinationPortName: {type: string, nullable: true}
|
||||||
|
destinationWarehouseCode: {type: string, nullable: true}
|
||||||
|
arrivalAt: {type: string}
|
||||||
|
arrivalType: {type: string, enum: [ACTUAL, ESTIMATED]}
|
||||||
|
'403': {description: 无权限或非平台身份}
|
||||||
|
components:
|
||||||
|
securitySchemes:
|
||||||
|
bearerAuth: {type: http, scheme: bearer, bearerFormat: JWT}
|
||||||
@@ -1,6 +1,28 @@
|
|||||||
openapi: 3.0.3
|
openapi: 3.0.3
|
||||||
info: {title: Firstleg Container Customs API, version: 2.0.0}
|
info: {title: Firstleg Container Customs API, version: 2.0.0}
|
||||||
paths:
|
paths:
|
||||||
|
/api/merchant/v1/customs/pending-summary:
|
||||||
|
get:
|
||||||
|
summary: 当前客户报关资料待处理柜次数量
|
||||||
|
description: >-
|
||||||
|
权限merchant:order:view,客户范围仅来自认证上下文。只读COUNT,不创建报关记录。
|
||||||
|
最新实际已装柜的退税货物尚未被本客户有效资料覆盖,或DECLARING阶段本客户冻结资料的当前回执为PENDING,均计入。
|
||||||
|
同柜多票、多份资料只计一次;已打回等待平台重做、已确认、已完成及其他客户的待办不计入。
|
||||||
|
x-permission: merchant:order:view
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: ApiResponse,code为200时才成功;失败不能解释为零待办
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
code: {type: string}
|
||||||
|
data:
|
||||||
|
type: object
|
||||||
|
required: [pendingCount]
|
||||||
|
properties:
|
||||||
|
pendingCount: {type: string, pattern: '^[0-9]+$'}
|
||||||
/api/platform/v1/customs/loading-plans/{planId}:
|
/api/platform/v1/customs/loading-plans/{planId}:
|
||||||
get:
|
get:
|
||||||
summary: 查询整柜报关状态、缺资料票及文件映射
|
summary: 查询整柜报关状态、缺资料票及文件映射
|
||||||
|
|||||||
@@ -378,11 +378,22 @@ paths:
|
|||||||
code: {type: string}
|
code: {type: string}
|
||||||
data:
|
data:
|
||||||
type: object
|
type: object
|
||||||
required: [feeOrderIds, customsOrderIds]
|
required: [feeOrderIds, customsOrderIds, progress]
|
||||||
properties:
|
properties:
|
||||||
matchingStatusOrderIds: {type: array, nullable: true, items: {type: integer, format: int64}}
|
matchingStatusOrderIds: {type: array, nullable: true, items: {type: integer, format: int64}}
|
||||||
feeOrderIds: {type: array, items: {type: integer, format: int64}}
|
feeOrderIds: {type: array, items: {type: integer, format: int64}}
|
||||||
customsOrderIds: {type: array, items: {type: integer, format: int64}}
|
customsOrderIds: {type: array, items: {type: integer, format: int64}}
|
||||||
|
progress:
|
||||||
|
type: array
|
||||||
|
description: 实际装载片段投影;报关要求COMPLETED,目的港清关要求PICKUP_READY实际时间,缺失节点不推测。
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
required: [orderId, stage, partial]
|
||||||
|
properties:
|
||||||
|
orderId: {type: integer, format: int64}
|
||||||
|
stage: {type: string, enum: [loaded, declared, cleared]}
|
||||||
|
partial: {type: boolean}
|
||||||
|
|
||||||
/internal/firstleg/v1/inbounds/unified-orders/query:
|
/internal/firstleg/v1/inbounds/unified-orders/query:
|
||||||
post:
|
post:
|
||||||
summary: 按统一订单条件分页查询履约摘要(Order 内部)
|
summary: 按统一订单条件分页查询履约摘要(Order 内部)
|
||||||
@@ -2312,13 +2323,12 @@ components:
|
|||||||
allowedActions: {type: array, items: {type: string, enum: [SELECT_FLEET, SCHEDULE_PICKUP, RECORD_EMPTY_RETURN, SEND_PICKUP_EMAIL]}}
|
allowedActions: {type: array, items: {type: string, enum: [SELECT_FLEET, SCHEDULE_PICKUP, RECORD_EMPTY_RETURN, SEND_PICKUP_EMAIL]}}
|
||||||
ContainerBooking:
|
ContainerBooking:
|
||||||
type: object
|
type: object
|
||||||
required: [id, bookingNo, cabinetNo, sourceType, recordStatus, warehouseId, warehouseName, channelGroupCode, containerType, capacityCbm, maxWeightKg, planStatus, exceptionActive, destinationClearanceDocumentStatus, customsDeclarationDocumentStatus, deliveryOrderDocumentStatus, version]
|
required: [id, cabinetNo, sourceType, recordStatus, warehouseId, warehouseName, channelGroupCode, containerType, capacityCbm, maxWeightKg, planStatus, exceptionActive, destinationClearanceDocumentStatus, customsDeclarationDocumentStatus, deliveryOrderDocumentStatus, version]
|
||||||
properties:
|
properties:
|
||||||
id: {type: string, pattern: '^[1-9][0-9]*$'}
|
id: {type: string, pattern: '^[1-9][0-9]*$'}
|
||||||
currentPortScheduleId: {type: string, pattern: '^[1-9][0-9]*$', nullable: true, readOnly: true, description: 当前运输读模型由 latestForDispatch 选中的船期记录 ID;无匹配时为空,仅用于定位关联船期,不作为业务编号展示}
|
currentPortScheduleId: {type: string, pattern: '^[1-9][0-9]*$', nullable: true, readOnly: true, description: 当前运输读模型由 latestForDispatch 选中的船期记录 ID;无匹配时为空,仅用于定位关联船期,不作为业务编号展示}
|
||||||
planId: {type: string, pattern: '^[1-9][0-9]*$', nullable: true, description: 关联智能装柜计划ID;未创建计划时为空}
|
planId: {type: string, pattern: '^[1-9][0-9]*$', nullable: true, description: 关联智能装柜计划ID;未创建计划时为空}
|
||||||
planNo: {type: string, nullable: true, pattern: '^LP-[0-9]{6}-[0-9]{4}$', example: LP-260818-0001, description: 预装与确认装柜清单共用的稳定编号;未创建计划时为空}
|
planNo: {type: string, nullable: true, pattern: '^LP-[0-9]{6}-[0-9]{4}$', example: LP-260818-0001, description: 预装与确认装柜清单共用的稳定编号;未创建计划时为空}
|
||||||
bookingNo: {type: string, pattern: '^CB-[0-9]{6}-[0-9]{4}$', example: CB-260818-0001, description: 平台内部货柜登记号}
|
|
||||||
containerNo: {type: string, maxLength: 64, nullable: true}
|
containerNo: {type: string, maxLength: 64, nullable: true}
|
||||||
cabinetNo: {type: string, pattern: '^D[0-9]{4,}$', example: D0001, description: 平台全局连续且不按日期重置的稳定柜次号}
|
cabinetNo: {type: string, pattern: '^D[0-9]{4,}$', example: D0001, description: 平台全局连续且不按日期重置的稳定柜次号}
|
||||||
sourceType: {type: string, enum: [SIMULATION, OCEAN_BOOKING], description: SIMULATION 为内部模拟柜;OCEAN_BOOKING 为订舱登记直接生成的真实柜}
|
sourceType: {type: string, enum: [SIMULATION, OCEAN_BOOKING], description: SIMULATION 为内部模拟柜;OCEAN_BOOKING 为订舱登记直接生成的真实柜}
|
||||||
@@ -2595,11 +2605,10 @@ components:
|
|||||||
pages: {type: string, pattern: '^[0-9]+$'}
|
pages: {type: string, pattern: '^[0-9]+$'}
|
||||||
SmartLoadingWorkbenchContainer:
|
SmartLoadingWorkbenchContainer:
|
||||||
type: object
|
type: object
|
||||||
required: [bookingId, bookingNo, cabinetNo, warehouseId, warehouseName, channelGroupCode,
|
required: [bookingId, cabinetNo, warehouseId, warehouseName, channelGroupCode,
|
||||||
containerType, capacityCbm, maxWeightKg, planStatus, version]
|
containerType, capacityCbm, maxWeightKg, planStatus, version]
|
||||||
properties:
|
properties:
|
||||||
bookingId: {type: string, pattern: '^[1-9][0-9]*$', description: containerBookingId 技术关联}
|
bookingId: {type: string, pattern: '^[1-9][0-9]*$', description: containerBookingId 技术关联}
|
||||||
bookingNo: {type: string, description: 货柜登记业务号}
|
|
||||||
cabinetNo: {type: string, description: 稳定柜次业务号}
|
cabinetNo: {type: string, description: 稳定柜次业务号}
|
||||||
containerNo: {type: string, nullable: true, description: 真实集装箱号,允许在装柜前后补}
|
containerNo: {type: string, nullable: true, description: 真实集装箱号,允许在装柜前后补}
|
||||||
warehouseId: {type: string, pattern: '^[1-9][0-9]*$'}
|
warehouseId: {type: string, pattern: '^[1-9][0-9]*$'}
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ components:
|
|||||||
exception: {$ref: '#/components/schemas/ExceptionState'}
|
exception: {$ref: '#/components/schemas/ExceptionState'}
|
||||||
exceptionHistory: {type: array, items: {$ref: '#/components/schemas/ExceptionHistory'}}
|
exceptionHistory: {type: array, items: {$ref: '#/components/schemas/ExceptionHistory'}}
|
||||||
timeline: {type: array, items: {$ref: '#/components/schemas/TimelineEntry'}}
|
timeline: {type: array, items: {$ref: '#/components/schemas/TimelineEntry'}}
|
||||||
Container: {type: object, properties: {id: {type: integer, format: int64}, bookingNo: {type: string, pattern: '^CB-[0-9]{6}-[0-9]{4}$', example: CB-260818-0001}, cabinetNo: {type: string, pattern: '^D[0-9]{4,}$', example: D0001}, containerNo: {type: string}, status: {type: string}, warehouseId: {type: integer, format: int64}, warehouseName: {type: string}, voyageNo: {type: string}, vesselName: {type: string}, pickupCode: {type: string, pattern: '^[0-9]{1,64}$', nullable: true}, pickupCodeUpdatedBy: {type: integer, format: int64, nullable: true}, pickupCodeUpdatedByName: {type: string, nullable: true}, pickupCodeUpdatedAt: {type: string, format: date-time, nullable: true}, version: {type: integer, minimum: 0}}}
|
Container: {type: object, properties: {id: {type: integer, format: int64}, cabinetNo: {type: string, pattern: '^D[0-9]{4,}$', example: D0001}, containerNo: {type: string}, status: {type: string}, warehouseId: {type: integer, format: int64}, warehouseName: {type: string}, voyageNo: {type: string}, vesselName: {type: string}, pickupCode: {type: string, pattern: '^[0-9]{1,64}$', nullable: true}, pickupCodeUpdatedBy: {type: integer, format: int64, nullable: true}, pickupCodeUpdatedByName: {type: string, nullable: true}, pickupCodeUpdatedAt: {type: string, format: date-time, nullable: true}, version: {type: integer, minimum: 0}}}
|
||||||
PdaSummary: {type: object, properties: {taskId: {type: integer, format: int64}, loadingPlanId: {type: integer, format: int64}, containerBookingId: {type: integer, format: int64}, taskStatus: {type: string, description: '持久化任务态:LOADING/COMPLETED'}, workflowStatus: {type: string, enum: [IN_PROGRESS, AWAITING_REVIEW, COMPLETED], description: 'PDA作业展示态'}, taskVersion: {type: integer}, itemCount: {type: integer}, completedItemCount: {type: integer}, unresolvedItemCount: {type: integer}, photoCounts: {type: array, items: {$ref: '#/components/schemas/PhotoCount'}}, photos: {type: array, items: {$ref: '#/components/schemas/Photo'}}, exceptionReasons: {type: array, items: {type: string}}}}
|
PdaSummary: {type: object, properties: {taskId: {type: integer, format: int64}, loadingPlanId: {type: integer, format: int64}, containerBookingId: {type: integer, format: int64}, taskStatus: {type: string, description: '持久化任务态:LOADING/COMPLETED'}, workflowStatus: {type: string, enum: [IN_PROGRESS, AWAITING_REVIEW, COMPLETED], description: 'PDA作业展示态'}, taskVersion: {type: integer}, itemCount: {type: integer}, completedItemCount: {type: integer}, unresolvedItemCount: {type: integer}, photoCounts: {type: array, items: {$ref: '#/components/schemas/PhotoCount'}}, photos: {type: array, items: {$ref: '#/components/schemas/Photo'}}, exceptionReasons: {type: array, items: {type: string}}}}
|
||||||
PhotoCount: {type: object, properties: {evidenceType: {type: string}, count: {type: integer}}}
|
PhotoCount: {type: object, properties: {evidenceType: {type: string}, count: {type: integer}}}
|
||||||
Photo: {type: object, properties: {evidenceId: {type: integer, format: int64}, tenantId: {type: integer, format: int64}, inboundId: {type: integer, format: int64}, evidenceType: {type: string}, fileId: {type: integer, format: int64}, fileName: {type: string}, status: {type: string, enum: [ACTIVE, VOID]}, downloadPath: {type: string, nullable: true, description: '仅 ACTIVE 照片提供鉴权下载路径;VOID 历史照片为空'}, uploadedAt: {type: string, format: date-time}}}
|
Photo: {type: object, properties: {evidenceId: {type: integer, format: int64}, tenantId: {type: integer, format: int64}, inboundId: {type: integer, format: int64}, evidenceType: {type: string}, fileId: {type: integer, format: int64}, fileName: {type: string}, status: {type: string, enum: [ACTIVE, VOID]}, downloadPath: {type: string, nullable: true, description: '仅 ACTIVE 照片提供鉴权下载路径;VOID 历史照片为空'}, uploadedAt: {type: string, format: date-time}}}
|
||||||
|
|||||||
@@ -1,6 +1,48 @@
|
|||||||
openapi: 3.0.3
|
openapi: 3.0.3
|
||||||
info: {title: Firstleg Terminal Drayage API, version: 1.0.0}
|
info: {title: Firstleg Terminal Drayage API, version: 1.0.0}
|
||||||
paths:
|
paths:
|
||||||
|
/api/platform/v1/terminal-drayages/calendar:
|
||||||
|
get:
|
||||||
|
summary: 美国目的仓相关的提柜预约日历
|
||||||
|
description: 平台身份,同时要求预约列表和码头拖车列表权限。按原业务预约提柜日期查询,不将实际提柜或预计到仓替代预约时间。美国范围按启用目的仓国家确认,不代表已确认港口所在国。原字段未提供港口时区,timeBasis明确待核实,禁止当作UTC或套用收货仓时区。最多42天、读取1001条以检测截断;返回最多1000条中的美国范围记录,未知目的仓计入unclassifiedCount,不能将缺失数据当零。
|
||||||
|
x-permissions: [platform:appointment:list, 'platform:firstleg:terminal-drayage:list']
|
||||||
|
parameters:
|
||||||
|
- {name: from, in: query, required: true, schema: {type: string, format: date}, description: 包含的原业务当地日期}
|
||||||
|
- {name: to, in: query, required: true, schema: {type: string, format: date}, description: 不包含的原业务当地日期}
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: 业务响应,code为200;仓库目录不可用则返回错误,不假装空列表
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
code: {type: string}
|
||||||
|
data:
|
||||||
|
type: object
|
||||||
|
required: [records, truncated, unclassifiedCount, scopeBasis, timeBasis]
|
||||||
|
properties:
|
||||||
|
truncated: {type: boolean}
|
||||||
|
unclassifiedCount: {type: integer, minimum: 0}
|
||||||
|
scopeBasis: {type: string, enum: [US_DESTINATION_WAREHOUSE]}
|
||||||
|
timeBasis: {type: string, enum: [SOURCE_LOCAL_UNSPECIFIED]}
|
||||||
|
records:
|
||||||
|
type: array
|
||||||
|
maxItems: 1000
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
containerBookingId: {type: string, description: 仅用于来源详情定位}
|
||||||
|
cabinetNo: {type: string}
|
||||||
|
containerNo: {type: string, nullable: true}
|
||||||
|
destinationPortName: {type: string, nullable: true}
|
||||||
|
destinationWarehouseCode: {type: string, nullable: true}
|
||||||
|
fleetSupplierName: {type: string, nullable: true}
|
||||||
|
pickupAppointmentAt: {type: string, description: 原业务当地时间,无时区偏移,不是UTC时间点}
|
||||||
|
actualPickupAt: {type: string, nullable: true}
|
||||||
|
'400': {description: 日期范围非法}
|
||||||
|
'403': {description: 非平台身份或权限不足}
|
||||||
|
'503': {description: 无法核对仓库范围}
|
||||||
/api/platform/v1/terminal-drayages:
|
/api/platform/v1/terminal-drayages:
|
||||||
get:
|
get:
|
||||||
summary: 批量查询货柜码头拖车及服务端报空预警
|
summary: 批量查询货柜码头拖车及服务端报空预警
|
||||||
|
|||||||
+1
-1
@@ -128,7 +128,7 @@ class ContainerControllerContractTest {
|
|||||||
.contains("required: [oceanBookingId, requirementId, expectedVersion]")
|
.contains("required: [oceanBookingId, requirementId, expectedVersion]")
|
||||||
.contains("containerNo: {type: string, nullable: true")
|
.contains("containerNo: {type: string, nullable: true")
|
||||||
.doesNotContain("required: [oceanBookingId, requirementId, containerNo, expectedVersion]")
|
.doesNotContain("required: [oceanBookingId, requirementId, containerNo, expectedVersion]")
|
||||||
.contains("required: [id, bookingNo, cabinetNo, sourceType, recordStatus")
|
.contains("required: [id, cabinetNo, sourceType, recordStatus")
|
||||||
.contains("sourceType: {type: string, enum: [SIMULATION, OCEAN_BOOKING]")
|
.contains("sourceType: {type: string, enum: [SIMULATION, OCEAN_BOOKING]")
|
||||||
.contains("recordStatus: {type: string, enum: [ACTIVE, MERGED]")
|
.contains("recordStatus: {type: string, enum: [ACTIVE, MERGED]")
|
||||||
.contains("mergedIntoContainerBookingId: {type: string, pattern: '^[1-9][0-9]*$', nullable: true");
|
.contains("mergedIntoContainerBookingId: {type: string, pattern: '^[1-9][0-9]*$', nullable: true");
|
||||||
|
|||||||
+1
-1
@@ -49,7 +49,7 @@ class InternalInboundOrderReferenceControllerTest {
|
|||||||
assertThatThrownBy(() -> controller.workbenchFilters(null, request)).isInstanceOf(BizException.class);
|
assertThatThrownBy(() -> controller.workbenchFilters(null, request)).isInstanceOf(BizException.class);
|
||||||
assertThatThrownBy(() -> controller.workbenchFilters("wrong", request)).isInstanceOf(BizException.class);
|
assertThatThrownBy(() -> controller.workbenchFilters("wrong", request)).isInstanceOf(BizException.class);
|
||||||
org.mockito.Mockito.verifyNoInteractions(workbenchFilters);
|
org.mockito.Mockito.verifyNoInteractions(workbenchFilters);
|
||||||
var response = new com.baiyue.firstleg.dto.MerchantWorkbenchFilters.Response(List.of(1L), List.of(), List.of());
|
var response = new com.baiyue.firstleg.dto.MerchantWorkbenchFilters.Response(List.of(1L), List.of(), List.of(), List.of());
|
||||||
when(workbenchFilters.read(request)).thenReturn(response);
|
when(workbenchFilters.read(request)).thenReturn(response);
|
||||||
assertThat(controller.workbenchFilters("internal-token", request).data()).isEqualTo(response);
|
assertThat(controller.workbenchFilters("internal-token", request).data()).isEqualTo(response);
|
||||||
}
|
}
|
||||||
|
|||||||
+13
@@ -30,6 +30,7 @@ class ContainerCustomsControllerContractTest {
|
|||||||
@Test void merchantUsesOrderViewAndEditWithoutTrustingTenantInput() {
|
@Test void merchantUsesOrderViewAndEditWithoutTrustingTenantInput() {
|
||||||
assertThat(MerchantContainerCustomsController.class.getAnnotation(RequestMapping.class).value())
|
assertThat(MerchantContainerCustomsController.class.getAnnotation(RequestMapping.class).value())
|
||||||
.containsExactly("/api/merchant/v1/customs");
|
.containsExactly("/api/merchant/v1/customs");
|
||||||
|
assertPermission(MerchantContainerCustomsController.class,"pendingSummary","merchant:order:view");
|
||||||
assertPermission(MerchantContainerCustomsController.class,"order","merchant:order:view");
|
assertPermission(MerchantContainerCustomsController.class,"order","merchant:order:view");
|
||||||
assertPermission(MerchantContainerCustomsController.class,"upload","merchant:order:edit");
|
assertPermission(MerchantContainerCustomsController.class,"upload","merchant:order:edit");
|
||||||
assertPermission(MerchantContainerCustomsController.class,"replace","merchant:order:edit");
|
assertPermission(MerchantContainerCustomsController.class,"replace","merchant:order:edit");
|
||||||
@@ -47,6 +48,18 @@ class ContainerCustomsControllerContractTest {
|
|||||||
.contains("LOADING_LIST_BUY_DECLARATION_ITEMS")
|
.contains("LOADING_LIST_BUY_DECLARATION_ITEMS")
|
||||||
.doesNotContain("/cases/","CUSTOMS_DECLARATION");
|
.doesNotContain("/cases/","CUSTOMS_DECLARATION");
|
||||||
}
|
}
|
||||||
|
@Test void badgeUsesAuthenticatedCustomerAndRejectsMissingIdentity() {
|
||||||
|
var service=org.mockito.Mockito.mock(com.baiyue.firstleg.customs.container.service.ContainerCustomsService.class);
|
||||||
|
var controller=new MerchantContainerCustomsController();
|
||||||
|
org.springframework.test.util.ReflectionTestUtils.setField(controller,"service",service);
|
||||||
|
org.assertj.core.api.Assertions.assertThatThrownBy(()->controller.pendingSummary(null))
|
||||||
|
.isInstanceOf(com.baiyue.common.core.exception.BizException.class);
|
||||||
|
org.mockito.Mockito.verifyNoInteractions(service);
|
||||||
|
var user=new com.baiyue.common.security.AuthenticatedUser(1L,11L,null,1L,"customer","MERCHANT","WEB",java.util.Set.of("merchant:order:view"));
|
||||||
|
controller.pendingSummary(user);
|
||||||
|
org.mockito.Mockito.verify(service).merchantPendingSummary(11L);
|
||||||
|
}
|
||||||
|
|
||||||
private static void assertPermission(Class<?> type,String method,String permission) {
|
private static void assertPermission(Class<?> type,String method,String permission) {
|
||||||
Method value=java.util.Arrays.stream(type.getDeclaredMethods()).filter(m->m.getName().equals(method)).findFirst().orElseThrow();
|
Method value=java.util.Arrays.stream(type.getDeclaredMethods()).filter(m->m.getName().equals(method)).findFirst().orElseThrow();
|
||||||
assertThat(value.getAnnotation(PreAuthorize.class).value()).contains(permission);
|
assertThat(value.getAnnotation(PreAuthorize.class).value()).contains(permission);
|
||||||
|
|||||||
+78
@@ -0,0 +1,78 @@
|
|||||||
|
package com.baiyue.firstleg.customs.container;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
||||||
|
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
|
||||||
|
import com.baiyue.firstleg.customs.container.mapper.ContainerCustomsMapper;
|
||||||
|
import org.h2.jdbcx.JdbcDataSource;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.mybatis.spring.SqlSessionTemplate;
|
||||||
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
|
import java.util.UUID;
|
||||||
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
|
||||||
|
class ContainerCustomsPendingCountTest {
|
||||||
|
private JdbcTemplate jdbc;
|
||||||
|
private ContainerCustomsMapper mapper;
|
||||||
|
@BeforeEach void setup() throws Exception {
|
||||||
|
var ds=new JdbcDataSource();ds.setURL("jdbc:h2:mem:customs-badge-"+UUID.randomUUID()+";MODE=MySQL;DB_CLOSE_DELAY=-1");
|
||||||
|
jdbc=new JdbcTemplate(ds);
|
||||||
|
jdbc.execute("CREATE TABLE fl_loading_plan(id BIGINT,container_booking_id BIGINT,plan_status VARCHAR,confirmed_at TIMESTAMP,updated_at TIMESTAMP)");
|
||||||
|
jdbc.execute("CREATE TABLE fl_container_booking(id BIGINT,record_status VARCHAR)");
|
||||||
|
jdbc.execute("CREATE TABLE fl_loading_plan_item(id BIGINT,loading_plan_id BIGINT,inbound_id BIGINT,account_id BIGINT,deleted INT,package_count INT)");
|
||||||
|
jdbc.execute("CREATE TABLE fl_inbound_order(id BIGINT,tenant_id BIGINT,order_id BIGINT,tax_mode VARCHAR,deleted INT)");
|
||||||
|
jdbc.execute("CREATE TABLE fl_loading_pick_task(id BIGINT,loading_plan_id BIGINT)");
|
||||||
|
jdbc.execute("CREATE TABLE fl_loading_pick_item(loading_plan_item_id BIGINT,pick_task_id BIGINT,item_status VARCHAR,picked_package_count INT)");
|
||||||
|
jdbc.execute("CREATE TABLE fl_customs_container(id BIGINT,loading_plan_id BIGINT,status VARCHAR)");
|
||||||
|
jdbc.execute("CREATE TABLE fl_customs_customer_document(id BIGINT,customs_container_id BIGINT,tenant_id BIGINT,status VARCHAR,frozen_at TIMESTAMP)");
|
||||||
|
jdbc.execute("CREATE TABLE fl_customs_customer_document_inbound(document_id BIGINT,inbound_id BIGINT,tenant_id BIGINT)");
|
||||||
|
jdbc.execute("CREATE TABLE fl_customs_completion_document(source_document_id BIGINT,customer_confirm_status VARCHAR)");
|
||||||
|
jdbc.update("INSERT INTO fl_loading_plan VALUES(1,10,'COMPLETED',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)");
|
||||||
|
jdbc.update("INSERT INTO fl_container_booking VALUES(10,'ACTIVE')");
|
||||||
|
jdbc.update("INSERT INTO fl_inbound_order VALUES(1,11,101,'TAX_REFUND',0),(2,11,102,'TAX_REFUND',0),(3,22,103,'TAX_REFUND',0)");
|
||||||
|
jdbc.update("INSERT INTO fl_loading_plan_item VALUES(1,1,1,11,0,2),(2,1,2,11,0,2),(3,1,3,22,0,2)");
|
||||||
|
jdbc.update("INSERT INTO fl_loading_pick_task VALUES(100,1)");
|
||||||
|
jdbc.update("INSERT INTO fl_loading_pick_item VALUES(1,100,'PICKED',2),(2,100,'PICKED',2),(3,100,'PICKED',2)");
|
||||||
|
var config=new MybatisConfiguration();config.setMapUnderscoreToCamelCase(true);config.addMapper(ContainerCustomsMapper.class);
|
||||||
|
var factory=new MybatisSqlSessionFactoryBean();factory.setDataSource(ds);factory.setConfiguration(config);
|
||||||
|
mapper=new SqlSessionTemplate(factory.getObject()).getMapper(ContainerCustomsMapper.class);
|
||||||
|
}
|
||||||
|
@Test void countsCabinetsOnceAndDoesNotCreateMissingCustomsRecords() {
|
||||||
|
assertThat(mapper.merchantPendingCount(11)).isEqualTo(1);
|
||||||
|
assertThat(mapper.merchantPendingCount(22)).isEqualTo(1);
|
||||||
|
assertThat(mapper.merchantPendingCount(33)).isZero();
|
||||||
|
assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM fl_customs_container",Integer.class)).isZero();
|
||||||
|
jdbc.update("UPDATE fl_loading_pick_item SET item_status='SKIPPED',picked_package_count=0 WHERE loading_plan_item_id IN (1,2)");
|
||||||
|
assertThat(mapper.merchantPendingCount(11)).isZero();
|
||||||
|
assertThat(mapper.merchantPendingCount(22)).isEqualTo(1);
|
||||||
|
}
|
||||||
|
@Test void uploadAndConfirmationOnlyCountOwnActionableDocuments() {
|
||||||
|
jdbc.update("INSERT INTO fl_customs_container VALUES(90,1,'WAITING_CUSTOMER_DOCUMENTS')");
|
||||||
|
jdbc.update("INSERT INTO fl_customs_customer_document VALUES(91,90,11,'ACTIVE',NULL),(92,90,22,'ACTIVE',NULL)");
|
||||||
|
jdbc.update("INSERT INTO fl_customs_customer_document_inbound VALUES(91,1,11),(91,2,11),(92,3,22)");
|
||||||
|
assertThat(mapper.merchantPendingCount(11)).isZero();
|
||||||
|
jdbc.update("UPDATE fl_customs_container SET status='DECLARING'");
|
||||||
|
jdbc.update("UPDATE fl_customs_customer_document SET frozen_at=CURRENT_TIMESTAMP");
|
||||||
|
jdbc.update("INSERT INTO fl_customs_completion_document VALUES(91,'PENDING'),(92,'PENDING')");
|
||||||
|
assertThat(mapper.merchantPendingCount(11)).isEqualTo(1);
|
||||||
|
jdbc.update("UPDATE fl_customs_completion_document SET customer_confirm_status='CONFIRMED' WHERE source_document_id=91");
|
||||||
|
assertThat(mapper.merchantPendingCount(11)).isZero();assertThat(mapper.merchantPendingCount(22)).isEqualTo(1);
|
||||||
|
jdbc.update("UPDATE fl_customs_completion_document SET customer_confirm_status='REJECTED'");
|
||||||
|
assertThat(mapper.merchantPendingCount(22)).isZero();
|
||||||
|
jdbc.update("UPDATE fl_customs_completion_document SET customer_confirm_status='PENDING'");
|
||||||
|
assertThat(mapper.merchantPendingCount(11)).isEqualTo(1);
|
||||||
|
jdbc.update("UPDATE fl_customs_container SET status='COMPLETED'");
|
||||||
|
assertThat(mapper.merchantPendingCount(11)).isZero();
|
||||||
|
}
|
||||||
|
@Test void completedLatestPlanAndInactiveCabinetsDoNotLeaveStaleReminders() {
|
||||||
|
jdbc.update("INSERT INTO fl_loading_plan VALUES(2,20,'COMPLETED',TIMESTAMP '2099-01-01 00:00:00',CURRENT_TIMESTAMP)");
|
||||||
|
jdbc.update("INSERT INTO fl_container_booking VALUES(20,'ACTIVE')");
|
||||||
|
jdbc.update("INSERT INTO fl_loading_plan_item VALUES(4,2,1,11,0,2),(5,2,2,11,0,2)");
|
||||||
|
jdbc.update("INSERT INTO fl_loading_pick_task VALUES(200,2)");
|
||||||
|
jdbc.update("INSERT INTO fl_loading_pick_item VALUES(4,200,'PICKED',2),(5,200,'PICKED',2)");
|
||||||
|
jdbc.update("INSERT INTO fl_customs_container VALUES(95,2,'COMPLETED')");
|
||||||
|
assertThat(mapper.merchantPendingCount(11)).isZero();
|
||||||
|
jdbc.update("UPDATE fl_container_booking SET record_status='CANCELLED'");
|
||||||
|
assertThat(mapper.merchantPendingCount(22)).isZero();
|
||||||
|
}
|
||||||
|
}
|
||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
package com.baiyue.firstleg.portschedule.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
||||||
|
import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
|
||||||
|
import org.apache.ibatis.mapping.Environment;
|
||||||
|
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
|
||||||
|
import org.h2.jdbcx.JdbcDataSource;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import java.util.*;
|
||||||
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
|
||||||
|
class AppointmentForecastMapperTest {
|
||||||
|
@Test void keepsNewestTwoObservationsIncludingWithdrawnEtaAndExcludesOtherNodes() throws Exception {
|
||||||
|
var ds=new JdbcDataSource();ds.setURL("jdbc:h2:mem:"+UUID.randomUUID()+";MODE=MySQL;DB_CLOSE_DELAY=-1");
|
||||||
|
try(var c=ds.getConnection();var s=c.createStatement()) {
|
||||||
|
s.execute("CREATE TABLE fl_container_booking(id BIGINT PRIMARY KEY,record_status VARCHAR(32))");
|
||||||
|
s.execute("CREATE TABLE fl_carrier_schedule_node_fact(id BIGINT PRIMARY KEY,container_booking_id BIGINT,standard_node VARCHAR(64),provider_code VARCHAR(64),source_reference VARCHAR(128),observed_at TIMESTAMP,estimated_at TIMESTAMP,actual_at TIMESTAMP)");
|
||||||
|
s.execute("INSERT INTO fl_container_booking VALUES(1,'ACTIVE'),(2,'CANCELLED'),(3,'ACTIVE')");
|
||||||
|
for(int id=1;id<=3;id++) s.execute("INSERT INTO fl_carrier_schedule_node_fact VALUES("+id+",1,'ARRIVED_DESTINATION_PORT','carrier','REF','2026-10-10 12:00:00',"+(id==3?"NULL":"'2026-10-15 09:00:00'")+",NULL)");
|
||||||
|
s.execute("INSERT INTO fl_carrier_schedule_node_fact VALUES(4,1,'DEPARTED_ORIGIN_PORT','carrier','OTHER','2026-10-11',NULL,NULL),(5,2,'ARRIVED_DESTINATION_PORT','carrier','REF','2026-10-11','2026-10-15',NULL),(6,3,'ARRIVED_DESTINATION_PORT','carrier','REF','2026-10-11',NULL,'2026-10-11')");
|
||||||
|
}
|
||||||
|
var config=new MybatisConfiguration();config.setMapUnderscoreToCamelCase(true);
|
||||||
|
config.setEnvironment(new Environment("test",new JdbcTransactionFactory(),ds));config.addMapper(AppointmentForecastMapper.class);
|
||||||
|
try(var session=new MybatisSqlSessionFactoryBuilder().build(config).openSession()) {
|
||||||
|
var rows=session.getMapper(AppointmentForecastMapper.class).latest(List.of(1L,2L,3L));
|
||||||
|
assertThat(rows).extracting(AppointmentForecastMapper.Fact::factId).containsExactly(3L,2L,6L);
|
||||||
|
assertThat(rows.get(0).estimatedAt()).isNull();assertThat(rows.get(1).estimatedAt()).isNotNull();
|
||||||
|
assertThat(rows.get(2).actualAt()).isNotNull();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+37
@@ -0,0 +1,37 @@
|
|||||||
|
package com.baiyue.firstleg.portschedule.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
||||||
|
import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
|
||||||
|
import org.apache.ibatis.mapping.Environment;
|
||||||
|
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
|
||||||
|
import org.h2.jdbcx.JdbcDataSource;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
class ArrivalCalendarMapperTest {
|
||||||
|
@Test
|
||||||
|
void readsTheExistingCabinetNumberWithoutASecondContainerNumberColumn() throws Exception {
|
||||||
|
var ds = new JdbcDataSource();
|
||||||
|
ds.setURL("jdbc:h2:mem:arrival-cabinet-number;MODE=MySQL;DB_CLOSE_DELAY=-1");
|
||||||
|
try (var connection = ds.getConnection(); var sql = connection.createStatement()) {
|
||||||
|
sql.execute("CREATE TABLE fl_container_booking(id BIGINT,cabinet_no VARCHAR,container_no VARCHAR," +
|
||||||
|
"vessel_name VARCHAR,voyage_no VARCHAR,destination_port_name VARCHAR,destination_warehouse_code VARCHAR," +
|
||||||
|
"actual_port_arrival_at TIMESTAMP,estimated_port_arrival_at TIMESTAMP,record_status VARCHAR)");
|
||||||
|
sql.execute("CREATE TABLE fl_carrier_schedule_node_fact(id BIGINT,container_booking_id BIGINT," +
|
||||||
|
"standard_node VARCHAR,actual_at TIMESTAMP,observed_at TIMESTAMP)");
|
||||||
|
sql.execute("INSERT INTO fl_container_booking VALUES(1,'D0007','TEST-CONT','Vessel','Voyage','Port'," +
|
||||||
|
"'US-W',NULL,'2026-11-25 08:00:00','ACTIVE')");
|
||||||
|
}
|
||||||
|
var config = new MybatisConfiguration();
|
||||||
|
config.setEnvironment(new Environment("test", new JdbcTransactionFactory(), ds));
|
||||||
|
config.addMapper(PortScheduleMapper.class);
|
||||||
|
try (var session = new MybatisSqlSessionFactoryBuilder().build(config).openSession()) {
|
||||||
|
var rows = session.getMapper(PortScheduleMapper.class).arrivalCalendar(
|
||||||
|
LocalDateTime.parse("2026-11-01T00:00:00"), LocalDateTime.parse("2026-12-01T00:00:00"));
|
||||||
|
assertEquals(1, rows.size());
|
||||||
|
assertEquals("D0007", rows.get(0).cabinetNo());
|
||||||
|
assertEquals(1L, rows.get(0).containerBookingId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
package com.baiyue.firstleg.portschedule.service;
|
||||||
|
|
||||||
|
import com.baiyue.firstleg.portschedule.mapper.AppointmentForecastMapper;
|
||||||
|
import com.baiyue.firstleg.portschedule.controller.InternalAppointmentForecastController;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.*;
|
||||||
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
class AppointmentForecastServiceTest {
|
||||||
|
@Test void preservesMissingForecastAndSourceLocalTimesWithoutSynthesizingEta() {
|
||||||
|
var mapper=mock(AppointmentForecastMapper.class);var service=new AppointmentForecastService(mapper);
|
||||||
|
var observed=LocalDateTime.of(2026,10,10,12,0);
|
||||||
|
var latest=new AppointmentForecastMapper.Fact(1L,20L,"carrier","REF",observed,null,null);
|
||||||
|
var previous=new AppointmentForecastMapper.Fact(1L,10L,"carrier","REF-OLD",observed.minusDays(1),observed.plusDays(5),null);
|
||||||
|
when(mapper.latest(List.of(1L,2L))).thenReturn(List.of(latest,previous));
|
||||||
|
var result=service.batch(List.of(1L,2L));
|
||||||
|
assertThat(result.get(0).latest()).isSameAs(latest);assertThat(result.get(0).previous()).isSameAs(previous);
|
||||||
|
assertThat(result.get(1).latest()).isNull();assertThat(result.get(1).timeBasis()).isEqualTo("SOURCE_LOCAL_UNSPECIFIED");
|
||||||
|
verify(mapper).latest(List.of(1L,2L));verifyNoMoreInteractions(mapper);
|
||||||
|
}
|
||||||
|
@Test void rejectsInvalidBatchesAndMissingOrBlankInternalCredentials() {
|
||||||
|
var mapper=mock(AppointmentForecastMapper.class);var service=new AppointmentForecastService(mapper);
|
||||||
|
for(var ids:List.of(List.<Long>of(),List.of(1L,1L),List.of(-1L),Collections.nCopies(201,1L)))
|
||||||
|
assertThatThrownBy(()->service.batch(ids)).isInstanceOf(org.springframework.web.server.ResponseStatusException.class);
|
||||||
|
assertThatThrownBy(()->service.batch(null)).isInstanceOf(org.springframework.web.server.ResponseStatusException.class);
|
||||||
|
var controller=new InternalAppointmentForecastController(service,"expected");
|
||||||
|
assertThatThrownBy(()->controller.batch(null,new InternalAppointmentForecastController.Request(List.of(1L)))).isInstanceOf(org.springframework.web.server.ResponseStatusException.class);
|
||||||
|
assertThatThrownBy(()->controller.batch("wrong",new InternalAppointmentForecastController.Request(List.of(1L)))).isInstanceOf(org.springframework.web.server.ResponseStatusException.class);
|
||||||
|
assertThatThrownBy(()->new InternalAppointmentForecastController(service,"").batch("",new InternalAppointmentForecastController.Request(List.of(1L)))).isInstanceOf(org.springframework.web.server.ResponseStatusException.class);
|
||||||
|
verifyNoInteractions(mapper);
|
||||||
|
}
|
||||||
|
}
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
package com.baiyue.firstleg.portschedule.service;
|
||||||
|
|
||||||
|
import com.baiyue.common.core.exception.BizException;
|
||||||
|
import com.baiyue.firstleg.portschedule.repository.PortScheduleRepository;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.test.util.ReflectionTestUtils;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
class ArrivalCalendarTest {
|
||||||
|
@Test
|
||||||
|
void rejectsInvalidRangesAndPassesTheWholeHalfOpenRangeToOneQuery() {
|
||||||
|
var repository = mock(PortScheduleRepository.class);
|
||||||
|
var service = new PortScheduleService();
|
||||||
|
ReflectionTestUtils.setField(service, "repository", repository);
|
||||||
|
var from = LocalDate.of(2026, 9, 28);
|
||||||
|
assertThrows(BizException.class, () -> service.arrivalCalendar(from, from));
|
||||||
|
assertThrows(BizException.class, () -> service.arrivalCalendar(from, from.plusDays(43)));
|
||||||
|
verifyNoInteractions(repository);
|
||||||
|
when(repository.arrivalCalendar(from.atStartOfDay(), from.plusDays(42).atStartOfDay())).thenReturn(List.of());
|
||||||
|
assertTrue(service.arrivalCalendar(from, from.plusDays(42)).isEmpty());
|
||||||
|
verify(repository).arrivalCalendar(from.atStartOfDay(), from.plusDays(42).atStartOfDay());
|
||||||
|
}
|
||||||
|
}
|
||||||
+23
-2
@@ -26,13 +26,17 @@ class MerchantWorkbenchFilterMapperTest {
|
|||||||
jdbc.execute("CREATE TABLE fl_customs_container(id BIGINT PRIMARY KEY,loading_plan_id BIGINT,status VARCHAR(40))");
|
jdbc.execute("CREATE TABLE fl_customs_container(id BIGINT PRIMARY KEY,loading_plan_id BIGINT,status VARCHAR(40))");
|
||||||
jdbc.execute("CREATE TABLE fl_customs_customer_document(id BIGINT PRIMARY KEY,customs_container_id BIGINT,tenant_id BIGINT,status VARCHAR(32))");
|
jdbc.execute("CREATE TABLE fl_customs_customer_document(id BIGINT PRIMARY KEY,customs_container_id BIGINT,tenant_id BIGINT,status VARCHAR(32))");
|
||||||
jdbc.execute("CREATE TABLE fl_customs_customer_document_inbound(document_id BIGINT,inbound_id BIGINT,tenant_id BIGINT)");
|
jdbc.execute("CREATE TABLE fl_customs_customer_document_inbound(document_id BIGINT,inbound_id BIGINT,tenant_id BIGINT)");
|
||||||
|
jdbc.execute("ALTER TABLE fl_loading_plan_item ADD id BIGINT GENERATED BY DEFAULT AS IDENTITY");
|
||||||
|
jdbc.execute("CREATE TABLE fl_loading_pick_task(id BIGINT,loading_plan_id BIGINT,task_status VARCHAR(32))");
|
||||||
|
jdbc.execute("CREATE TABLE fl_loading_pick_item(pick_task_id BIGINT,loading_plan_item_id BIGINT,item_status VARCHAR(32),picked_package_count INT)");
|
||||||
|
jdbc.execute("CREATE TABLE fl_carrier_schedule_node_fact(container_booking_id BIGINT,standard_node VARCHAR(64),actual_at TIMESTAMP)");
|
||||||
var config=new MybatisConfiguration();config.setMapUnderscoreToCamelCase(true);config.addMapper(MerchantWorkbenchFilterMapper.class);
|
var config=new MybatisConfiguration();config.setMapUnderscoreToCamelCase(true);config.addMapper(MerchantWorkbenchFilterMapper.class);
|
||||||
var factory=new MybatisSqlSessionFactoryBean();factory.setDataSource(ds);factory.setConfiguration(config);
|
var factory=new MybatisSqlSessionFactoryBean();factory.setDataSource(ds);factory.setConfiguration(config);
|
||||||
mapper=new SqlSessionTemplate(factory.getObject()).getMapper(MerchantWorkbenchFilterMapper.class);
|
mapper=new SqlSessionTemplate(factory.getObject()).getMapper(MerchantWorkbenchFilterMapper.class);
|
||||||
jdbc.update("INSERT INTO fl_inbound_order VALUES(1,11,101,0,'TAX_REFUND','LOADED'),(2,11,102,0,'TAX_REFUND','DELIVERED'),(3,22,103,0,'TAX_REFUND','LOADED'),(4,11,104,1,'TAX_REFUND','LOADED'),(5,11,105,0,'BUY_DECLARATION','LOADED')");
|
jdbc.update("INSERT INTO fl_inbound_order VALUES(1,11,101,0,'TAX_REFUND','LOADED'),(2,11,102,0,'TAX_REFUND','DELIVERED'),(3,22,103,0,'TAX_REFUND','LOADED'),(4,11,104,1,'TAX_REFUND','LOADED'),(5,11,105,0,'BUY_DECLARATION','LOADED')");
|
||||||
jdbc.update("INSERT INTO fl_container_booking VALUES(100,'ACTIVE')");
|
jdbc.update("INSERT INTO fl_container_booking VALUES(100,'ACTIVE')");
|
||||||
jdbc.update("INSERT INTO fl_loading_plan VALUES(100,100,'COMPLETED',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)");
|
jdbc.update("INSERT INTO fl_loading_plan VALUES(100,100,'COMPLETED',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)");
|
||||||
jdbc.update("INSERT INTO fl_loading_plan_item VALUES(100,1,11,0),(100,1,11,0),(100,2,11,0),(100,3,22,0),(100,4,11,0),(100,5,11,0)");
|
jdbc.update("INSERT INTO fl_loading_plan_item(loading_plan_id,inbound_id,account_id,deleted) VALUES(100,1,11,0),(100,1,11,0),(100,2,11,0),(100,3,22,0),(100,4,11,0),(100,5,11,0)");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test void latestFeeVersionAndCustomerScopeDetermineConfirmationQueue() {
|
@Test void latestFeeVersionAndCustomerScopeDetermineConfirmationQueue() {
|
||||||
@@ -71,10 +75,27 @@ class MerchantWorkbenchFilterMapperTest {
|
|||||||
jdbc.update("INSERT INTO fl_customs_container VALUES(200,100,'WAITING_CUSTOMER_DOCUMENTS')");
|
jdbc.update("INSERT INTO fl_customs_container VALUES(200,100,'WAITING_CUSTOMER_DOCUMENTS')");
|
||||||
jdbc.update("INSERT INTO fl_container_booking VALUES(101,'ACTIVE')");
|
jdbc.update("INSERT INTO fl_container_booking VALUES(101,'ACTIVE')");
|
||||||
jdbc.update("INSERT INTO fl_loading_plan VALUES(101,101,'COMPLETED',TIMESTAMP '2099-01-01 00:00:00',CURRENT_TIMESTAMP)");
|
jdbc.update("INSERT INTO fl_loading_plan VALUES(101,101,'COMPLETED',TIMESTAMP '2099-01-01 00:00:00',CURRENT_TIMESTAMP)");
|
||||||
jdbc.update("INSERT INTO fl_loading_plan_item VALUES(101,1,11,0)");
|
jdbc.update("INSERT INTO fl_loading_plan_item(loading_plan_id,inbound_id,account_id,deleted) VALUES(101,1,11,0)");
|
||||||
jdbc.update("INSERT INTO fl_customs_container VALUES(201,101,'COMPLETED')");
|
jdbc.update("INSERT INTO fl_customs_container VALUES(201,101,'COMPLETED')");
|
||||||
assertThat(mapper.pendingCustoms(11)).containsExactly(102L);
|
assertThat(mapper.pendingCustoms(11)).containsExactly(102L);
|
||||||
jdbc.update("UPDATE fl_container_booking SET record_status='CANCELLED' WHERE id=100");
|
jdbc.update("UPDATE fl_container_booking SET record_status='CANCELLED' WHERE id=100");
|
||||||
assertThat(mapper.pendingCustoms(11)).isEmpty();
|
assertThat(mapper.pendingCustoms(11)).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test void onlyActualLoadedOwnedFragmentsAndActualClearanceAdvanceProgress() {
|
||||||
|
assertThat(mapper.progressFragments(11)).allMatch(f->f.stage()==0);
|
||||||
|
jdbc.update("INSERT INTO fl_loading_pick_task VALUES(900,100,'COMPLETED')");
|
||||||
|
jdbc.update("INSERT INTO fl_loading_pick_item SELECT 900,id,'PICKED',2 FROM fl_loading_plan_item");
|
||||||
|
assertThat(mapper.progressFragments(11)).allMatch(f->f.stage()==1).noneMatch(f->f.orderId()==103||f.orderId()==104);
|
||||||
|
jdbc.update("INSERT INTO fl_customs_container VALUES(200,100,'DECLARING')");
|
||||||
|
assertThat(mapper.progressFragments(11)).allMatch(f->f.stage()==1);
|
||||||
|
jdbc.update("UPDATE fl_customs_container SET status='COMPLETED'");
|
||||||
|
assertThat(mapper.progressFragments(11)).allMatch(f->f.stage()==2);
|
||||||
|
jdbc.update("INSERT INTO fl_carrier_schedule_node_fact VALUES(100,'PICKUP_READY',NULL)");
|
||||||
|
assertThat(mapper.progressFragments(11)).allMatch(f->f.stage()==2);
|
||||||
|
jdbc.update("UPDATE fl_carrier_schedule_node_fact SET actual_at=CURRENT_TIMESTAMP");
|
||||||
|
assertThat(mapper.progressFragments(11)).allMatch(f->f.stage()==3);
|
||||||
|
jdbc.update("UPDATE fl_container_booking SET record_status='CANCELLED'");
|
||||||
|
assertThat(mapper.progressFragments(11)).allMatch(f->f.stage()==0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-8
@@ -13,6 +13,7 @@ import org.mockito.MockitoAnnotations;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
@@ -25,6 +26,7 @@ import static org.mockito.Mockito.when;
|
|||||||
class SailingCalendarServiceTest {
|
class SailingCalendarServiceTest {
|
||||||
@Mock private SailingCalendarRepository repository;
|
@Mock private SailingCalendarRepository repository;
|
||||||
@InjectMocks private SailingCalendarService service;
|
@InjectMocks private SailingCalendarService service;
|
||||||
|
private final LocalDateTime copiedDeparture = LocalDateTime.now(ZoneId.of("Asia/Shanghai")).plusDays(14);
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setUp() {
|
void setUp() {
|
||||||
@@ -33,8 +35,8 @@ class SailingCalendarServiceTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void replaysAnExistingCopyInsteadOfReturningAnInternalError() {
|
void replaysAnExistingCopyInsteadOfReturningAnInternalError() {
|
||||||
SailingEntity source = sailing(1L, "SL-SOURCE", "MANUAL", "QA-20261005", LocalDateTime.of(2026, 10, 5, 10, 0));
|
SailingEntity source = sailing(1L, "SL-SOURCE", "MANUAL", "QA-20261005", copiedDeparture.minusDays(7));
|
||||||
SailingEntity existing = sailing(2L, "SL-COPY", "COPY", "QA-20261005", LocalDateTime.of(2026, 10, 12, 10, 0));
|
SailingEntity existing = sailing(2L, "SL-COPY", "COPY", "QA-20261005", copiedDeparture);
|
||||||
SailingHistoryEntity history = new SailingHistoryEntity();
|
SailingHistoryEntity history = new SailingHistoryEntity();
|
||||||
history.setAction("COPY"); history.setReason("复制自SL-SOURCE"); history.setSailingId(2L);
|
history.setAction("COPY"); history.setReason("复制自SL-SOURCE"); history.setSailingId(2L);
|
||||||
when(repository.sailing(1L)).thenReturn(source);
|
when(repository.sailing(1L)).thenReturn(source);
|
||||||
@@ -45,7 +47,7 @@ class SailingCalendarServiceTest {
|
|||||||
when(repository.bookingSummary(any(SailingEntity.class))).thenReturn(null);
|
when(repository.bookingSummary(any(SailingEntity.class))).thenReturn(null);
|
||||||
|
|
||||||
var result = service.copy(1L, 7L, "admin",
|
var result = service.copy(1L, 7L, "admin",
|
||||||
new CopyRequest(existing.getEtdAt(), LocalDateTime.of(2026, 10, 9, 18, 0)));
|
new CopyRequest(existing.getEtdAt(), copiedDeparture.minusDays(3)));
|
||||||
|
|
||||||
assertThat(result.sailing().id()).isEqualTo(2L);
|
assertThat(result.sailing().id()).isEqualTo(2L);
|
||||||
verify(repository, never()).insert(any(SailingEntity.class));
|
verify(repository, never()).insert(any(SailingEntity.class));
|
||||||
@@ -53,13 +55,13 @@ class SailingCalendarServiceTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void reportsBusinessConflictForAnUnrelatedExistingSailing() {
|
void reportsBusinessConflictForAnUnrelatedExistingSailing() {
|
||||||
SailingEntity source = sailing(1L, "SL-SOURCE", "MANUAL", "QA-20261005", LocalDateTime.of(2026, 10, 5, 10, 0));
|
SailingEntity source = sailing(1L, "SL-SOURCE", "MANUAL", "QA-20261005", copiedDeparture.minusDays(7));
|
||||||
SailingEntity existing = sailing(2L, "SL-OTHER", "TEMPLATE", "QA-20261005", LocalDateTime.of(2026, 10, 12, 10, 0));
|
SailingEntity existing = sailing(2L, "SL-OTHER", "TEMPLATE", "QA-20261005", copiedDeparture);
|
||||||
when(repository.sailing(1L)).thenReturn(source);
|
when(repository.sailing(1L)).thenReturn(source);
|
||||||
when(repository.sailingByBusinessKey(8L, "MATSON", "CNNGB", "USLGB", existing.getEtdAt(), "QA-20261005")).thenReturn(existing);
|
when(repository.sailingByBusinessKey(8L, "MATSON", "CNNGB", "USLGB", existing.getEtdAt(), "QA-20261005")).thenReturn(existing);
|
||||||
|
|
||||||
assertThatThrownBy(() -> service.copy(1L, 7L, "admin",
|
assertThatThrownBy(() -> service.copy(1L, 7L, "admin",
|
||||||
new CopyRequest(existing.getEtdAt(), LocalDateTime.of(2026, 10, 9, 18, 0))))
|
new CopyRequest(existing.getEtdAt(), copiedDeparture.minusDays(3))))
|
||||||
.isInstanceOf(BizException.class)
|
.isInstanceOf(BizException.class)
|
||||||
.hasMessageContaining("已存在航次 QA-20261005");
|
.hasMessageContaining("已存在航次 QA-20261005");
|
||||||
verify(repository, never()).insert(any(SailingEntity.class));
|
verify(repository, never()).insert(any(SailingEntity.class));
|
||||||
@@ -67,11 +69,11 @@ class SailingCalendarServiceTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void rejectsCutoffAtOrAfterCopiedDeparture() {
|
void rejectsCutoffAtOrAfterCopiedDeparture() {
|
||||||
SailingEntity source = sailing(1L, "SL-SOURCE", "MANUAL", "QA-20261005", LocalDateTime.of(2026, 10, 5, 10, 0));
|
SailingEntity source = sailing(1L, "SL-SOURCE", "MANUAL", "QA-20261005", copiedDeparture.minusDays(7));
|
||||||
when(repository.sailing(1L)).thenReturn(source);
|
when(repository.sailing(1L)).thenReturn(source);
|
||||||
|
|
||||||
assertThatThrownBy(() -> service.copy(1L, 7L, "admin",
|
assertThatThrownBy(() -> service.copy(1L, 7L, "admin",
|
||||||
new CopyRequest(LocalDateTime.of(2026, 10, 12, 10, 0), LocalDateTime.of(2026, 10, 12, 10, 0))))
|
new CopyRequest(copiedDeparture, copiedDeparture)))
|
||||||
.isInstanceOf(BizException.class)
|
.isInstanceOf(BizException.class)
|
||||||
.hasMessageContaining("收货截止必须早于开船");
|
.hasMessageContaining("收货截止必须早于开船");
|
||||||
verify(repository, never()).insert(any(SailingEntity.class));
|
verify(repository, never()).insert(any(SailingEntity.class));
|
||||||
|
|||||||
@@ -52,7 +52,6 @@ class ContainerServiceTest {
|
|||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setUpWarehouse() {
|
void setUpWarehouse() {
|
||||||
when(documentNumbers.next("CB")).thenReturn("CB-260818-0001");
|
|
||||||
when(documentNumbers.nextCabinetNo()).thenReturn("D0001");
|
when(documentNumbers.nextCabinetNo()).thenReturn("D0001");
|
||||||
when(smartLoadingService.createForContainer(anyLong(), anyLong(), anyString())).thenAnswer(invocation ->
|
when(smartLoadingService.createForContainer(anyLong(), anyLong(), anyString())).thenAnswer(invocation ->
|
||||||
new com.baiyue.firstleg.dto.SmartLoadingDtos.Plan(501L, "LP-260818-0001", "EDITING",
|
new com.baiyue.firstleg.dto.SmartLoadingDtos.Plan(501L, "LP-260818-0001", "EDITING",
|
||||||
@@ -76,8 +75,9 @@ class ContainerServiceTest {
|
|||||||
verify(repository).insert(captor.capture());
|
verify(repository).insert(captor.capture());
|
||||||
ContainerBookingEntity saved = captor.getValue();
|
ContainerBookingEntity saved = captor.getValue();
|
||||||
assertThat(created).isSameAs(saved);
|
assertThat(created).isSameAs(saved);
|
||||||
assertThat(saved.getBookingNo()).isEqualTo("CB-260818-0001");
|
|
||||||
assertThat(saved.getCabinetNo()).isEqualTo("D0001");
|
assertThat(saved.getCabinetNo()).isEqualTo("D0001");
|
||||||
|
verify(documentNumbers).nextCabinetNo();
|
||||||
|
verify(documentNumbers, never()).next("CB");
|
||||||
assertThat(saved.getContainerNo()).isNull();
|
assertThat(saved.getContainerNo()).isNull();
|
||||||
assertThat(saved.getOceanBookingId()).isNull();
|
assertThat(saved.getOceanBookingId()).isNull();
|
||||||
assertThat(saved.getChannelGroupCode()).isEqualTo("MATSON_CLX");
|
assertThat(saved.getChannelGroupCode()).isEqualTo("MATSON_CLX");
|
||||||
|
|||||||
+1
-1
@@ -41,7 +41,7 @@ class FirstlegDocumentNumberGeneratorTest {
|
|||||||
|
|
||||||
assertThat(generator.next("OB")).isEqualTo("OB-260818-0001");
|
assertThat(generator.next("OB")).isEqualTo("OB-260818-0001");
|
||||||
assertThat(generator.next("TA")).isEqualTo("TA-260818-0001");
|
assertThat(generator.next("TA")).isEqualTo("TA-260818-0001");
|
||||||
assertThat(generator.next("CB")).isEqualTo("CB-260818-0001");
|
assertThatThrownBy(() -> generator.next("CB")).isInstanceOf(IllegalArgumentException.class);
|
||||||
assertThat(generator.next("LP")).isEqualTo("LP-260818-0001");
|
assertThat(generator.next("LP")).isEqualTo("LP-260818-0001");
|
||||||
assertThat(generator.nextCabinetNo()).isEqualTo("D0001");
|
assertThat(generator.nextCabinetNo()).isEqualTo("D0001");
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.baiyue.firstleg.service;
|
||||||
|
|
||||||
|
import com.baiyue.firstleg.dto.MerchantWorkbenchFilters.Fragment;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import java.util.List;
|
||||||
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
|
||||||
|
class MerchantWorkbenchProgressTest {
|
||||||
|
@Test void unstartedFragmentsPreventWholeOrderProgressAndLatestFactsWinWithoutInventingHistory() {
|
||||||
|
var facts=List.of(new Fragment(1,0),new Fragment(1,1),new Fragment(2,2),new Fragment(2,3),new Fragment(3,3),new Fragment(4,0));
|
||||||
|
var projected=MerchantWorkbenchFilterService.progress(facts);
|
||||||
|
assertThat(projected).hasSize(3);
|
||||||
|
assertThat(projected.get(0).stage()).isEqualTo("loaded");assertThat(projected.get(0).partial()).isTrue();
|
||||||
|
assertThat(projected.get(1).stage()).isEqualTo("cleared");assertThat(projected.get(1).partial()).isTrue();
|
||||||
|
assertThat(projected.get(2).partial()).isFalse();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -627,7 +627,7 @@ class SmartLoadingServiceTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void pagesWorkbenchContainersWithTheSameGlobalFilters() {
|
void pagesWorkbenchContainersWithTheSameGlobalFilters() {
|
||||||
WorkbenchContainer container = new WorkbenchContainer(99L, "CB-1", "CAB-1", null,
|
WorkbenchContainer container = new WorkbenchContainer(99L, "D0001", null,
|
||||||
100L, "义乌仓", "MATSON_CLX", null, null, "40HQ",
|
100L, "义乌仓", "MATSON_CLX", null, null, "40HQ",
|
||||||
new BigDecimal("68"), new BigDecimal("19500"),
|
new BigDecimal("68"), new BigDecimal("19500"),
|
||||||
1L, "LP-1", "EDITING", 2);
|
1L, "LP-1", "EDITING", 2);
|
||||||
|
|||||||
+3
-3
@@ -71,10 +71,10 @@ class TaillegRealProducerAcceptanceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void seedCompletedLoadingPlan() {
|
private void seedCompletedLoadingPlan() {
|
||||||
jdbc.update("INSERT IGNORE INTO fl_container_booking(id,booking_no,container_no,cabinet_no,warehouse_id," +
|
jdbc.update("INSERT IGNORE INTO fl_container_booking(id,container_no,cabinet_no,warehouse_id," +
|
||||||
"warehouse_name,customer_id,customer_name,estimated_port_arrival_at,container_type,created_by,updated_by) " +
|
"warehouse_name,customer_id,customer_name,estimated_port_arrival_at,container_type,created_by,updated_by) " +
|
||||||
"VALUES(?,?,?,?,?,?,?,?,?,?,1,1)",
|
"VALUES(?,?,?,?,?,?,?,?,?,1,1)",
|
||||||
BOOKING, MARKER + "-BOOK", MARKER + "-CNTR", MARKER + "-CAB", 92L, "真实验收海外仓",
|
BOOKING, MARKER + "-CNTR", MARKER + "-CAB", 92L, "真实验收海外仓",
|
||||||
CUSTOMER, "真实验收客户", java.time.LocalDateTime.of(2026, 9, 30, 12, 0), "40HQ");
|
CUSTOMER, "真实验收客户", java.time.LocalDateTime.of(2026, 9, 30, 12, 0), "40HQ");
|
||||||
jdbc.update("INSERT IGNORE INTO fl_loading_plan(id,plan_no,container_booking_id,plan_status,created_by," +
|
jdbc.update("INSERT IGNORE INTO fl_loading_plan(id,plan_no,container_booking_id,plan_status,created_by," +
|
||||||
"updated_by,version) VALUES(?,?,?,'LOADING',1,1,0)", PLAN, MARKER + "-PLAN", BOOKING);
|
"updated_by,version) VALUES(?,?,?,'LOADING',1,1,0)", PLAN, MARKER + "-PLAN", BOOKING);
|
||||||
|
|||||||
+49
@@ -0,0 +1,49 @@
|
|||||||
|
package com.baiyue.firstleg.terminaldrayage.controller;
|
||||||
|
|
||||||
|
import com.baiyue.common.core.exception.BizException;
|
||||||
|
import com.baiyue.common.security.AuthenticatedUser;
|
||||||
|
import com.baiyue.firstleg.terminaldrayage.service.*;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.context.annotation.*;
|
||||||
|
import org.springframework.core.env.MapPropertySource;
|
||||||
|
import org.springframework.security.access.AccessDeniedException;
|
||||||
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||||
|
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
|
||||||
|
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||||
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
class TerminalDrayageCalendarAuthorizationTest {
|
||||||
|
static final String APPOINTMENT="platform:appointment:list",PICKUP="platform:firstleg:terminal-drayage:list";
|
||||||
|
@Test void bothReadPermissionsAndPlatformIdentityAreRequiredBeforeReadingAnyCalendar() {
|
||||||
|
try(var context=new AnnotationConfigApplicationContext()) {
|
||||||
|
context.getEnvironment().getPropertySources().addFirst(new MapPropertySource("test",Map.of("baiyue.security.internal-service-token","test")));
|
||||||
|
context.register(Config.class);context.refresh();
|
||||||
|
var controller=context.getBean(PlatformTerminalDrayageController.class);
|
||||||
|
var service=context.getBean(TerminalDrayageCalendarService.class);
|
||||||
|
var from=LocalDate.of(2026,10,1);var to=from.plusDays(31);
|
||||||
|
for(var permission:List.of(APPOINTMENT,PICKUP)) {
|
||||||
|
login(permission);assertThrows(AccessDeniedException.class,()->controller.calendar(user(0L,"PLATFORM"),from,to));
|
||||||
|
}
|
||||||
|
login(APPOINTMENT,PICKUP);
|
||||||
|
assertThrows(BizException.class,()->controller.calendar(user(1L,"MERCHANT"),from,to));
|
||||||
|
assertThrows(BizException.class,()->controller.calendar(null,from,to));
|
||||||
|
verifyNoInteractions(service);
|
||||||
|
controller.calendar(user(0L,"PLATFORM"),from,to);verify(service).calendar(from,to);
|
||||||
|
} finally {SecurityContextHolder.clearContext();}
|
||||||
|
}
|
||||||
|
static void login(String... permissions) {
|
||||||
|
SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken("operator","unused",
|
||||||
|
Arrays.stream(permissions).map(SimpleGrantedAuthority::new).toList()));
|
||||||
|
}
|
||||||
|
static AuthenticatedUser user(long customer,String app) {return new AuthenticatedUser(7L,customer,0L,8L,"operator",app,"WEB",Set.of());}
|
||||||
|
@Configuration @EnableMethodSecurity
|
||||||
|
static class Config {
|
||||||
|
@Bean TerminalDrayageMailService mails(){return mock(TerminalDrayageMailService.class);}
|
||||||
|
@Bean TerminalDrayageCalendarService calendar(){return mock(TerminalDrayageCalendarService.class);}
|
||||||
|
@Bean PlatformTerminalDrayageController controller(){return new PlatformTerminalDrayageController(mock(TerminalDrayageService.class));}
|
||||||
|
}
|
||||||
|
}
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
package com.baiyue.firstleg.terminaldrayage.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
||||||
|
import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
|
||||||
|
import org.apache.ibatis.mapping.Environment;
|
||||||
|
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
|
||||||
|
import org.h2.jdbcx.JdbcDataSource;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
class TerminalDrayageCalendarMapperTest {
|
||||||
|
@Test void respectsExclusiveRangeActiveDepartureWithoutDuplicatingContainersOrOwningShippingFacts() throws Exception {
|
||||||
|
var ds=new JdbcDataSource();ds.setURL("jdbc:h2:mem:pickup-calendar;MODE=MySQL;DB_CLOSE_DELAY=-1");
|
||||||
|
try(var c=ds.getConnection();var s=c.createStatement()) {
|
||||||
|
s.execute("CREATE TABLE fl_container_booking(id BIGINT,cabinet_no VARCHAR,container_no VARCHAR,destination_port_name VARCHAR,destination_warehouse_code VARCHAR,record_status VARCHAR)");
|
||||||
|
s.execute("CREATE TABLE fl_terminal_drayage(container_booking_id BIGINT,fleet_supplier_name VARCHAR,pickup_appointment_at TIMESTAMP)");
|
||||||
|
s.execute("CREATE TABLE fl_outbound_dispatch(container_booking_id BIGINT,confirmed_at TIMESTAMP,reversed_at TIMESTAMP,status VARCHAR)");
|
||||||
|
for(int id=1;id<=5;id++) {
|
||||||
|
s.execute("INSERT INTO fl_container_booking VALUES("+id+",'D000"+id+"','CONT','Port','US-W','"+(id==4?"CANCELLED":"ACTIVE")+"')");
|
||||||
|
s.execute("INSERT INTO fl_terminal_drayage VALUES("+id+",'Fleet','"+(id==3?"2026-11-01 00:00:00":"2026-10-01 09:00:00")+"')");
|
||||||
|
s.execute("INSERT INTO fl_outbound_dispatch VALUES("+id+",'2026-09-01',"+(id==5?"'2026-09-02'":"NULL")+",'WAITING_FOR_LOADING')");
|
||||||
|
}
|
||||||
|
s.execute("INSERT INTO fl_outbound_dispatch VALUES(1,'2026-09-01',NULL,'WAITING_FOR_LOADING')");
|
||||||
|
}
|
||||||
|
var config=new MybatisConfiguration();config.setEnvironment(new Environment("test",new JdbcTransactionFactory(),ds));config.addMapper(TerminalDrayageMapper.class);
|
||||||
|
try(var session=new MybatisSqlSessionFactoryBuilder().build(config).openSession()) {
|
||||||
|
var rows=session.getMapper(TerminalDrayageMapper.class).calendar(LocalDateTime.parse("2026-10-01T00:00:00"),LocalDateTime.parse("2026-11-01T00:00:00"),1001);
|
||||||
|
assertEquals(List.of(1L,2L),rows.stream().map(r->r.containerBookingId()).toList());assertNull(rows.get(0).actualPickupAt());
|
||||||
|
assertEquals("D0001", rows.get(0).cabinetNo());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+53
@@ -0,0 +1,53 @@
|
|||||||
|
package com.baiyue.firstleg.terminaldrayage.service;
|
||||||
|
|
||||||
|
import com.baiyue.common.core.api.ApiResponse;
|
||||||
|
import com.baiyue.firstleg.client.WarehouseMasterDataClient;
|
||||||
|
import com.baiyue.firstleg.terminaldrayage.dto.PickupCalendarEntry;
|
||||||
|
import com.baiyue.firstleg.terminaldrayage.mapper.TerminalDrayageMapper;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.web.server.ResponseStatusException;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
import static org.mockito.ArgumentMatchers.*;
|
||||||
|
|
||||||
|
class TerminalDrayageCalendarServiceTest {
|
||||||
|
final TerminalDrayageMapper mapper=mock(TerminalDrayageMapper.class);
|
||||||
|
final WarehouseMasterDataClient warehouses=mock(WarehouseMasterDataClient.class);
|
||||||
|
final com.baiyue.firstleg.portschedule.service.CarrierScheduleQueryService shipping=mock(com.baiyue.firstleg.portschedule.service.CarrierScheduleQueryService.class);
|
||||||
|
final TerminalDrayageCalendarService service=new TerminalDrayageCalendarService(mapper,warehouses,shipping,"test");
|
||||||
|
final LocalDate from=LocalDate.of(2026,10,1),to=from.plusDays(31);
|
||||||
|
PickupCalendarEntry row(long id,String code) {return new PickupCalendarEntry(id,"D000"+id,"TEST-CONT","Port",code,"Fleet",from.atTime(9,0),null);}
|
||||||
|
@Test void batchesTheCatalogAndKeepsUnknownScopeVisibleWithoutGuessingPortTimeZone() {
|
||||||
|
when(mapper.calendar(any(),any(),eq(1001))).thenReturn(List.of(row(1,"US-W"),row(2,"CA-W"),row(3,"UNKNOWN")));
|
||||||
|
when(warehouses.catalog("test")).thenReturn(ApiResponse.success(List.of(
|
||||||
|
new WarehouseMasterDataClient.CatalogWarehouse(1L,"US-W","US","OVERSEAS","US"),
|
||||||
|
new WarehouseMasterDataClient.CatalogWarehouse(2L,"CA-W","CA","OVERSEAS","CA"))));
|
||||||
|
var pickedUp=from.atTime(10,30);
|
||||||
|
when(shipping.containerActualFacts(List.of(1L))).thenReturn(List.of(new com.baiyue.firstleg.portschedule.dto.CarrierScheduleQueryDtos.ContainerActualFacts(
|
||||||
|
1L,null,null,null,null,null,null,null,null,null,pickedUp,null)));
|
||||||
|
var result=service.calendar(from,to);
|
||||||
|
assertEquals(List.of(1L),result.records().stream().map(PickupCalendarEntry::containerBookingId).toList());
|
||||||
|
assertEquals(1,result.unclassifiedCount());assertFalse(result.truncated());assertEquals("SOURCE_LOCAL_UNSPECIFIED",result.timeBasis());
|
||||||
|
assertEquals(pickedUp,result.records().get(0).actualPickupAt());
|
||||||
|
assertEquals(from.atTime(9,0),result.records().get(0).pickupAppointmentAt());
|
||||||
|
verify(shipping,times(1)).containerActualFacts(List.of(1L));
|
||||||
|
verify(warehouses,times(1)).catalog("test");verify(mapper,times(1)).calendar(from.atStartOfDay(),to.atStartOfDay(),1001);
|
||||||
|
}
|
||||||
|
@Test void catalogFailureDoesNotMasqueradeAsAnEmptyCalendar() {
|
||||||
|
when(mapper.calendar(any(),any(),anyInt())).thenReturn(List.of(row(1,"US-W")));
|
||||||
|
when(warehouses.catalog("test")).thenThrow(new IllegalStateException());
|
||||||
|
assertEquals(503,assertThrows(ResponseStatusException.class,()->service.calendar(from,to)).getStatusCode().value());
|
||||||
|
}
|
||||||
|
@Test void boundedRangeAndEmptyCalendarAvoidUnnecessaryRequests() {
|
||||||
|
assertThrows(ResponseStatusException.class,()->service.calendar(from,from.plusDays(43)));
|
||||||
|
assertThrows(ResponseStatusException.class,()->service.calendar(from,from));verifyNoInteractions(mapper,warehouses);
|
||||||
|
when(mapper.calendar(any(),any(),anyInt())).thenReturn(List.of());assertTrue(service.calendar(from,to).records().isEmpty());verifyNoInteractions(warehouses);
|
||||||
|
}
|
||||||
|
@Test void reportsTruncationInsteadOfClaimingCompleteResults() {
|
||||||
|
when(mapper.calendar(any(),any(),anyInt())).thenReturn(Collections.nCopies(1001,row(1,"US-W")));
|
||||||
|
when(warehouses.catalog("test")).thenReturn(ApiResponse.success(List.of(new WarehouseMasterDataClient.CatalogWarehouse(1L,"US-W","US","OVERSEAS","US"))));
|
||||||
|
var result=service.calendar(from,to);assertTrue(result.truncated());assertEquals(1000,result.records().size());
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-1
@@ -17,4 +17,4 @@
|
|||||||
|
|
||||||
- 新增路由同步检查本地/Nacos、App Scope、CORS、公开路径和 Swagger;不得暴露内部令牌接口。
|
- 新增路由同步检查本地/Nacos、App Scope、CORS、公开路径和 Swagger;不得暴露内部令牌接口。
|
||||||
- 订单与客户承载登录后 Admin/Client 入口;入库测量与计费接入到仓/测量/计费公开路由但保持内部测量接口隔离;国内货柜履约仅在 Controller、权限和公开访问域契约稳定后新增必要路由,内部 PDA、仓储和服务令牌接口继续不得经 Gateway 暴露。
|
- 订单与客户承载登录后 Admin/Client 入口;入库测量与计费接入到仓/测量/计费公开路由但保持内部测量接口隔离;国内货柜履约仅在 Controller、权限和公开访问域契约稳定后新增必要路由,内部 PDA、仓储和服务令牌接口继续不得经 Gateway 暴露。
|
||||||
- 国内货柜履约先读 `../../docs/头程到尾程/README.md` 和 `../../docs/国内货柜履约/README.md`;网关变更只服务当前维护入口已确认的模块,不以路由提前暴露未完成能力。开工门禁属于归档资料,只有历史追溯时读取。
|
- 已知路由任务直接核对目标 Controller、公开访问域、权限、Gateway 配置和 OpenAPI;只有货柜业务范围或流程门禁不明时,才从 `../../docs/国内货柜履约/README.md` 或 `../../docs/头程到尾程/README.md` 进入。归档开工门禁仅用于历史追溯,不以新增路由推定业务已完成。
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
| 商户成员、登录手机号与个人资料 | `controller/MerchantTenantController.java`、`service/MemberService.java`、`service/PersonalProfileService.java`、`client/AuthAccountClient.java`;成员手机号是可选登录标识,变更时同步 Auth、撤销该账号全部会话并审计,不与公司联系电话联动 |
|
| 商户成员、登录手机号与个人资料 | `controller/MerchantTenantController.java`、`service/MemberService.java`、`service/PersonalProfileService.java`、`client/AuthAccountClient.java`;成员手机号是可选登录标识,变更时同步 Auth、撤销该账号全部会话并审计,不与公司联系电话联动 |
|
||||||
| 平台用户与海外 PDA 仓绑定 | `controller/PlatformUserManagementController.java`、`service/PlatformUserManagementService.java`、`dto/PlatformUserManagementDtos.java`、`entity/IamMembership.java`;`OVERSEAS_WAREHOUSE_PDA_OPERATOR` 必须且只能绑定一个 `overseasWarehouseId` |
|
| 平台用户与海外 PDA 仓绑定 | `controller/PlatformUserManagementController.java`、`service/PlatformUserManagementService.java`、`dto/PlatformUserManagementDtos.java`、`entity/IamMembership.java`;`OVERSEAS_WAREHOUSE_PDA_OPERATOR` 必须且只能绑定一个 `overseasWarehouseId` |
|
||||||
| 角色/权限/RBAC | `controller/RbacController.java`、`service/RbacService.java` |
|
| 角色/权限/RBAC | `controller/RbacController.java`、`service/RbacService.java` |
|
||||||
|
| 平台自营领星统计权限 | `src/main/resources/db/selfoperated-analytics-permissions.sql`;自营业务下经营总览、销量分析、库存分析、数据采集菜单资源同步国内统一空库基线;四个页面和所有只读接口统一使用 `platform:self-operated-analytics:list`,采集写入独立使用 `platform:self-operated-analytics:sync`。菜单资源不替代服务端读写授权。 |
|
||||||
| 授权快照/内部资格 | `controller/AuthorizationController.java`、`InternalAuthorizationController.java`、`service/AuthorizationSnapshotService.java` |
|
| 授权快照/内部资格 | `controller/AuthorizationController.java`、`InternalAuthorizationController.java`、`service/AuthorizationSnapshotService.java` |
|
||||||
| 持久化安全版本 | `service/SecurityVersionService.java`、`src/main/resources/db/security-version.sql`;安全变更与 subject/customer 版本同事务提交,Auth 在线核对单 SQL 授权快照,无专用安全事件投影 |
|
| 持久化安全版本 | `service/SecurityVersionService.java`、`src/main/resources/db/security-version.sql`;安全变更与 subject/customer 版本同事务提交,Auth 在线核对单 SQL 授权快照,无专用安全事件投影 |
|
||||||
| 消息中心/站内通知 | `notification/controller/NotificationInboxController.java`、`notification/controller/PlatformNotificationController.java`、`notification/service/NotificationService.java`;模板、任务、收件箱及事件消费均在 `notification/` |
|
| 消息中心/站内通知 | `notification/controller/NotificationInboxController.java`、`notification/controller/PlatformNotificationController.java`、`notification/service/NotificationService.java`;模板、任务、收件箱及事件消费均在 `notification/` |
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user