补齐揽收单字段/并发戳与问题件处理人配置,扩展异常工作流与下单同步揽收出参;移除已收货状态并补充相关 SQL 脚本。 Co-authored-by: Cursor <cursoragent@cursor.com>
96 lines
5.7 KiB
SQL
96 lines
5.7 KiB
SQL
-- 揽收单(独立履约/结算)+ 与物流单 1:N 关联;物流单冗余到仓方式与揽收 FK。
|
||
-- 对齐现表公共字段:ConcurrencyStamp / OrganizationId / SecretLevel;发件快照对齐 t_order_sender。
|
||
-- 文档:前端 docs/揽收单与物流单串联方案.md
|
||
-- 执行前请备份。
|
||
-- 若表已按旧版脚本建好,请改跑 sql/20260803_pickup_order_align_fields.sql
|
||
|
||
CREATE TABLE IF NOT EXISTS `t_pickup_order` (
|
||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增',
|
||
`PickupNo` VARCHAR(32) NOT NULL COMMENT '揽收单号',
|
||
`RequestId` VARCHAR(64) NULL COMMENT '请求幂等ID',
|
||
`CustomerId` INT NOT NULL COMMENT '客户Id',
|
||
`OrganizationId` CHAR(36) NULL COMMENT '数据归属组织',
|
||
`SecretLevel` TINYINT NOT NULL DEFAULT 2 COMMENT '数据密级 1-4',
|
||
`SenderAddressId` INT NOT NULL COMMENT '发件地址簿Id',
|
||
`SenderName` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '取件联系人快照',
|
||
`SenderCompany` VARCHAR(255) NULL COMMENT '公司快照',
|
||
`SenderCountry` INT NULL COMMENT '国家 t_country.Id 快照',
|
||
`SenderCountryCode` VARCHAR(8) NULL COMMENT '国家码快照',
|
||
`SenderProvince` VARCHAR(50) NULL COMMENT '省快照',
|
||
`SenderCity` VARCHAR(50) NULL COMMENT '市快照',
|
||
`SenderZipCode` VARCHAR(50) NULL COMMENT '邮编快照',
|
||
`SenderStreetAddress1` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '地址1快照',
|
||
`SenderStreetAddress2` VARCHAR(500) NULL COMMENT '地址2快照',
|
||
`SenderStreetAddress3` VARCHAR(500) NULL COMMENT '地址3快照',
|
||
`SenderHouseNumber` VARCHAR(50) NULL COMMENT '门牌号快照',
|
||
`SenderPhone` VARCHAR(50) NULL COMMENT '手机快照',
|
||
`SenderTelePhone` VARCHAR(50) NULL COMMENT '电话快照',
|
||
`SenderEmail` VARCHAR(60) NULL COMMENT '邮箱快照',
|
||
`WarehouseId` INT NOT NULL COMMENT '送到仓库Id',
|
||
`CarrierCode` VARCHAR(64) NULL COMMENT '承运商编码(draft可空)',
|
||
`CarrierService` VARCHAR(64) NULL COMMENT '承运服务(draft可空)',
|
||
`CarrierWaybillNo` VARCHAR(64) NULL COMMENT '承运商回执单号',
|
||
`ExpectPickupTime` DATETIME NOT NULL COMMENT '期望揽收时间',
|
||
`PickupWindowStart` DATETIME NULL COMMENT '时间窗起',
|
||
`PickupWindowEnd` DATETIME NULL COMMENT '时间窗止',
|
||
`ActualPickupTime` DATETIME NULL COMMENT '实际取件时间',
|
||
`Status` VARCHAR(32) NOT NULL DEFAULT 'draft' COMMENT 'draft/scheduled/dispatched/picked/inbound/cancelled/failed',
|
||
`ParcelCount` INT NOT NULL DEFAULT 0 COMMENT '关联票数',
|
||
`TotalActualWeight` DECIMAL(18,3) NULL COMMENT '汇总实重',
|
||
`ChargeableWeight` DECIMAL(18,3) NULL COMMENT '计费重',
|
||
`Currency` VARCHAR(8) NOT NULL DEFAULT 'CNY' COMMENT '币种',
|
||
`FreightAmount` DECIMAL(18,2) NULL COMMENT '对客揽收运费',
|
||
`OtherFeeAmount` DECIMAL(18,2) NULL COMMENT '对客其他费',
|
||
`ReceivableAmount` DECIMAL(18,2) NULL COMMENT '对客应收合计',
|
||
`PayStatus` VARCHAR(16) NOT NULL DEFAULT 'unpaid' COMMENT 'unpaid/paid',
|
||
`PayTime` DATETIME NULL COMMENT '支付时间',
|
||
`PayMode` VARCHAR(16) NOT NULL DEFAULT 'prepaid' COMMENT 'prepaid/collect',
|
||
`CarrierPayableAmount` DECIMAL(18,2) NULL COMMENT '应付承运商',
|
||
`SettlementStatus` VARCHAR(16) NOT NULL DEFAULT 'none' COMMENT 'none/pending/settled',
|
||
`SettlementBatchNo` VARCHAR(64) NULL COMMENT '结算批次号',
|
||
`SettledAt` DATETIME NULL COMMENT '结算时间',
|
||
`Remark` VARCHAR(512) NULL COMMENT '备注',
|
||
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是',
|
||
-- CREATE 可用 DEFAULT (UUID());若环境同样禁非确定默认值,可去掉 DEFAULT,由应用写入
|
||
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳',
|
||
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`UpdateUserId` INT NULL COMMENT '更新人',
|
||
`UpdateTime` DATETIME NULL COMMENT '更新时间',
|
||
PRIMARY KEY (`Id`),
|
||
UNIQUE KEY `uk_pickup_no` (`PickupNo`),
|
||
UNIQUE KEY `uk_pickup_request_id` (`RequestId`),
|
||
KEY `idx_pickup_customer_status` (`CustomerId`, `Status`, `CreateTime`),
|
||
KEY `idx_pickup_warehouse_time` (`WarehouseId`, `ExpectPickupTime`),
|
||
KEY `idx_pickup_pay` (`PayStatus`),
|
||
KEY `idx_pickup_settle` (`SettlementStatus`),
|
||
KEY `idx_pickup_org_secret_ctime` (`OrganizationId`, `SecretLevel`, `CreateTime`)
|
||
) COMMENT='揽收单(上门取件履约+对客收款+承运结算)';
|
||
|
||
CREATE TABLE IF NOT EXISTS `t_pickup_order_line` (
|
||
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增',
|
||
`PickupOrderId` INT NOT NULL COMMENT '揽收单Id',
|
||
`OrderId` INT NOT NULL COMMENT '物流订单Id',
|
||
`ServiceNo` VARCHAR(64) NULL COMMENT '运单号快照(便于列表)',
|
||
`ClientNo` VARCHAR(64) NULL COMMENT '客户单号快照',
|
||
`SortNo` INT NOT NULL DEFAULT 0 COMMENT '展示序',
|
||
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是',
|
||
`ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳',
|
||
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人',
|
||
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`UpdateUserId` INT NULL COMMENT '更新人',
|
||
`UpdateTime` DATETIME NULL COMMENT '更新时间',
|
||
PRIMARY KEY (`Id`),
|
||
UNIQUE KEY `uk_pickup_line_order` (`OrderId`),
|
||
UNIQUE KEY `uk_pickup_line_pair` (`PickupOrderId`, `OrderId`),
|
||
KEY `idx_pickup_line_header` (`PickupOrderId`, `IsDeleted`)
|
||
) COMMENT='揽收单关联物流订单(1揽收:N物流)';
|
||
|
||
ALTER TABLE `t_order`
|
||
ADD COLUMN `InboundMethod` VARCHAR(16) NULL COMMENT '到仓方式 selfShip/doorPickup' AFTER `CustomerSenderAddressId`,
|
||
ADD COLUMN `PickupOrderId` INT NULL COMMENT '关联揽收单Id(冗余)' AFTER `InboundMethod`;
|
||
|
||
ALTER TABLE `t_order`
|
||
ADD KEY `idx_order_pickup` (`PickupOrderId`),
|
||
ADD KEY `idx_order_inbound_method` (`InboundMethod`);
|