admin/sql/20260803_pickup_order.sql
zzh b2355104cf feat: 完善揽收单与问题件处理能力
补齐揽收单字段/并发戳与问题件处理人配置,扩展异常工作流与下单同步揽收出参;移除已收货状态并补充相关 SQL 脚本。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-04 11:49:23 +08:00

96 lines
5.7 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 揽收单(独立履约/结算)+ 与物流单 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`);