-- 揽收订单种子(CustomerId = 9,OrderSource = pickup) -- 可重复执行:已存在则跳过 -- 用法:mysql -u root -p oms < sql/seed_pickup_order_customer9.sql -- -- 依赖:t_customer.Id=9 存在;仓库/销售产品尽量取库内已有,否则用占位编码 SET NAMES utf8mb4; SET @customerId := 9; -- --------------------------------------------------------------------------- -- 0. 修复 t_order 脏 ConcurrencyStamp(空串无法绑 Guid) -- --------------------------------------------------------------------------- UPDATE `t_order` SET `ConcurrencyStamp` = UUID() WHERE `ConcurrencyStamp` IS NULL OR TRIM(`ConcurrencyStamp`) = '' OR LENGTH(TRIM(`ConcurrencyStamp`)) <> 36; -- --------------------------------------------------------------------------- -- 1. 发件地址簿(揽收创建依赖) -- --------------------------------------------------------------------------- INSERT INTO `t_customer_sender_address` ( `CustomerId`, `AddressType`, `AddressName`, `SenderName`, `Company`, `Province`, `City`, `ZipCode`, `StreetAddress1`, `Phone`, `IsDefault`, `IsDeleted`, `ConcurrencyStamp`, `CreateUserId`, `CreateTime` ) SELECT @customerId, 'sender', '种子-默认发件', '张三', '种子发件公司', '广东省', '深圳市', '518000', '南山区科技园种子路 1 号', '13800000009', 1, 0, UUID(), 0, NOW() WHERE NOT EXISTS ( SELECT 1 FROM `t_customer_sender_address` WHERE `CustomerId` = @customerId AND `AddressType` = 'sender' AND `AddressName` = '种子-默认发件' AND `IsDeleted` = 0 ); SET @senderAddressId := ( SELECT `Id` FROM `t_customer_sender_address` WHERE `CustomerId` = @customerId AND `AddressType` = 'sender' AND `AddressName` = '种子-默认发件' AND `IsDeleted` = 0 ORDER BY `Id` LIMIT 1 ); -- 仓库:优先取已有;没有则插入一条种子仓 INSERT INTO `t_warehouse_address` ( `WarehouseName`, `WarehouseType`, `Recipient`, `ContactPhone`, `ShippingAddress`, `IsDeleted`, `ConcurrencyStamp`, `CreateUserId`, `CreateTime` ) SELECT '种子-深圳仓', 'main', '仓管员', '0755-80000009', '广东省深圳市南山区仓库大道 9 号', 0, UUID(), 0, NOW() WHERE NOT EXISTS ( SELECT 1 FROM `t_warehouse_address` WHERE `IsDeleted` = 0 LIMIT 1 ) AND NOT EXISTS ( SELECT 1 FROM `t_warehouse_address` WHERE `WarehouseName` = '种子-深圳仓' AND `IsDeleted` = 0 ); SET @warehouseId := ( SELECT `Id` FROM `t_warehouse_address` WHERE `IsDeleted` = 0 ORDER BY CASE WHEN `WarehouseName` = '种子-深圳仓' THEN 0 ELSE 1 END, `Id` LIMIT 1 ); SET @productCode := ( SELECT `ProductCode` FROM `t_sales_product` WHERE `IsDeleted` = 0 ORDER BY `Id` LIMIT 1 ); SET @productCode := IFNULL(NULLIF(TRIM(@productCode), ''), 'SEED-PICKUP-PRODUCT'); -- --------------------------------------------------------------------------- -- 2. 揽收订单 t_order(若干状态) -- --------------------------------------------------------------------------- -- draft INSERT INTO `t_order` ( `RequestId`, `ServiceNo`, `ClientNo`, `ProductCode`, `ChannelCode`, `ConsigneeCountry`, `ConsigneeCountryName`, `CargoAttribute`, `OrderStatus`, `HandleStatus`, `WarehouseId`, `CustomerId`, `OrderSource`, `PickupTime`, `CustomerSenderAddressId`, `DeclaredCurrency`, `DeclaredSum`, `Quantity`, `IsDeleted`, `ConcurrencyStamp`, `CreateUserId`, `CreateTime` ) SELECT 'SEED9-PK-REQ-001', 'SEED9-PK-001', 'PK-CLIENT-001', @productCode, @productCode, 'CN', '中国', 'general', 'draft', 'pending', @warehouseId, @customerId, 'pickup', DATE_ADD(NOW(), INTERVAL 1 DAY), @senderAddressId, 'CNY', 1.0000, 1, 0, UUID(), 0, DATE_SUB(NOW(), INTERVAL 2 DAY) WHERE @warehouseId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM `t_order` WHERE `ServiceNo` = 'SEED9-PK-001'); -- pendingPayment INSERT INTO `t_order` ( `RequestId`, `ServiceNo`, `ClientNo`, `ProductCode`, `ChannelCode`, `ConsigneeCountry`, `ConsigneeCountryName`, `CargoAttribute`, `OrderStatus`, `HandleStatus`, `WarehouseId`, `CustomerId`, `OrderSource`, `PickupTime`, `CustomerSenderAddressId`, `DeclaredCurrency`, `DeclaredSum`, `Quantity`, `IsDeleted`, `ConcurrencyStamp`, `CreateUserId`, `CreateTime` ) SELECT 'SEED9-PK-REQ-002', 'SEED9-PK-002', 'PK-CLIENT-002', @productCode, @productCode, 'CN', '中国', 'general', 'pendingPayment', 'pending', @warehouseId, @customerId, 'pickup', DATE_ADD(NOW(), INTERVAL 2 DAY), @senderAddressId, 'CNY', 1.0000, 1, 0, UUID(), 0, DATE_SUB(NOW(), INTERVAL 1 DAY) WHERE @warehouseId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM `t_order` WHERE `ServiceNo` = 'SEED9-PK-002'); -- pendingShip INSERT INTO `t_order` ( `RequestId`, `ServiceNo`, `ClientNo`, `ProductCode`, `ChannelCode`, `ConsigneeCountry`, `ConsigneeCountryName`, `CargoAttribute`, `OrderStatus`, `HandleStatus`, `WarehouseId`, `CustomerId`, `OrderSource`, `PickupTime`, `CustomerSenderAddressId`, `DeclaredCurrency`, `DeclaredSum`, `Quantity`, `IsPaid`, `PayTime`, `IsDeleted`, `ConcurrencyStamp`, `CreateUserId`, `CreateTime` ) SELECT 'SEED9-PK-REQ-003', 'SEED9-PK-003', 'PK-CLIENT-003', @productCode, @productCode, 'CN', '中国', 'electronics', 'pendingShip', 'pending', @warehouseId, @customerId, 'pickup', DATE_ADD(NOW(), INTERVAL 3 DAY), @senderAddressId, 'CNY', 1.0000, 1, 1, DATE_SUB(NOW(), INTERVAL 6 HOUR), 0, UUID(), 0, DATE_SUB(NOW(), INTERVAL 12 HOUR) WHERE @warehouseId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM `t_order` WHERE `ServiceNo` = 'SEED9-PK-003'); -- received INSERT INTO `t_order` ( `RequestId`, `ServiceNo`, `ClientNo`, `ProductCode`, `ChannelCode`, `ConsigneeCountry`, `ConsigneeCountryName`, `CargoAttribute`, `OrderStatus`, `HandleStatus`, `WarehouseId`, `CustomerId`, `OrderSource`, `PickupTime`, `CustomerSenderAddressId`, `DeclaredCurrency`, `DeclaredSum`, `Quantity`, `ReceiveTime`, `IsDeleted`, `ConcurrencyStamp`, `CreateUserId`, `CreateTime` ) SELECT 'SEED9-PK-REQ-004', 'SEED9-PK-004', 'PK-CLIENT-004', @productCode, @productCode, 'CN', '中国', 'general', 'received', 'processed', @warehouseId, @customerId, 'pickup', DATE_SUB(NOW(), INTERVAL 1 DAY), @senderAddressId, 'CNY', 1.0000, 1, DATE_SUB(NOW(), INTERVAL 8 HOUR), 0, UUID(), 0, DATE_SUB(NOW(), INTERVAL 3 DAY) WHERE @warehouseId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM `t_order` WHERE `ServiceNo` = 'SEED9-PK-004'); -- pendingOnline INSERT INTO `t_order` ( `RequestId`, `ServiceNo`, `ClientNo`, `ProductCode`, `ChannelCode`, `ConsigneeCountry`, `ConsigneeCountryName`, `CargoAttribute`, `OrderStatus`, `HandleStatus`, `WarehouseId`, `CustomerId`, `OrderSource`, `PickupTime`, `CustomerSenderAddressId`, `DeclaredCurrency`, `DeclaredSum`, `Quantity`, `IsPaid`, `PayTime`, `ShipTime`, `IsDeleted`, `ConcurrencyStamp`, `CreateUserId`, `CreateTime` ) SELECT 'SEED9-PK-REQ-005', 'SEED9-PK-005', 'PK-CLIENT-005', @productCode, @productCode, 'CN', '中国', 'general', 'pendingOnline', 'processed', @warehouseId, @customerId, 'pickup', DATE_SUB(NOW(), INTERVAL 2 DAY), @senderAddressId, 'CNY', 1.0000, 1, 1, DATE_SUB(NOW(), INTERVAL 2 DAY), DATE_SUB(NOW(), INTERVAL 1 DAY), 0, UUID(), 0, DATE_SUB(NOW(), INTERVAL 4 DAY) WHERE @warehouseId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM `t_order` WHERE `ServiceNo` = 'SEED9-PK-005'); -- --------------------------------------------------------------------------- -- 3. 子表:发件人 / 收件人 / 申报 / 件重尺 -- --------------------------------------------------------------------------- -- 发件人 INSERT INTO `t_order_sender` ( `OrderId`, `SenderName`, `Company`, `Province`, `City`, `ZipCode`, `StreetAddress1`, `Phone`, `IsDeleted`, `CreateUserId`, `CreateTime` ) SELECT o.`Id`, '张三', '种子发件公司', '广东省', '深圳市', '518000', '南山区科技园种子路 1 号', '13800000009', 0, 0, NOW() FROM `t_order` o WHERE o.`ServiceNo` IN ('SEED9-PK-001','SEED9-PK-002','SEED9-PK-003','SEED9-PK-004','SEED9-PK-005') AND o.`CustomerId` = @customerId AND o.`OrderSource` = 'pickup' AND NOT EXISTS (SELECT 1 FROM `t_order_sender` s WHERE s.`OrderId` = o.`Id` AND s.`IsDeleted` = 0); -- 收件人(仓库) INSERT INTO `t_order_recipient` ( `OrderId`, `RecipientsName`, `Phone`, `ZipCode`, `StreetAddress1`, `IsDeleted`, `CreateUserId`, `CreateTime` ) SELECT o.`Id`, IFNULL(NULLIF(TRIM(w.`Recipient`), ''), IFNULL(w.`WarehouseName`, '种子仓')), w.`ContactPhone`, '000000', IFNULL(NULLIF(TRIM(w.`ShippingAddress`), ''), IFNULL(w.`WarehouseName`, '种子仓地址')), 0, 0, NOW() FROM `t_order` o LEFT JOIN `t_warehouse_address` w ON w.`Id` = o.`WarehouseId` WHERE o.`ServiceNo` IN ('SEED9-PK-001','SEED9-PK-002','SEED9-PK-003','SEED9-PK-004','SEED9-PK-005') AND o.`CustomerId` = @customerId AND o.`OrderSource` = 'pickup' AND NOT EXISTS (SELECT 1 FROM `t_order_recipient` r WHERE r.`OrderId` = o.`Id` AND r.`IsDeleted` = 0); -- 申报行(货物名称) INSERT INTO `t_order_declaration` ( `OrderId`, `CnName`, `EnName`, `UnitPrice`, `UnitWeight`, `Quantity`, `Amount`, `Weight`, `IsDeleted`, `CreateUserId`, `CreateTime` ) SELECT o.`Id`, CASE o.`ServiceNo` WHEN 'SEED9-PK-001' THEN '日用百货样品' WHEN 'SEED9-PK-002' THEN '服装配件' WHEN 'SEED9-PK-003' THEN '蓝牙耳机' WHEN 'SEED9-PK-004' THEN '家居收纳盒' ELSE '办公文具套装' END, CASE o.`ServiceNo` WHEN 'SEED9-PK-001' THEN 'Daily Sample Goods' WHEN 'SEED9-PK-002' THEN 'Apparel Accessories' WHEN 'SEED9-PK-003' THEN 'Bluetooth Earbuds' WHEN 'SEED9-PK-004' THEN 'Storage Box' ELSE 'Stationery Set' END, 1.00, CASE o.`ServiceNo` WHEN 'SEED9-PK-001' THEN 0.500 WHEN 'SEED9-PK-002' THEN 1.200 WHEN 'SEED9-PK-003' THEN 0.350 WHEN 'SEED9-PK-004' THEN 2.000 ELSE 0.800 END, 1, 1.00, CASE o.`ServiceNo` WHEN 'SEED9-PK-001' THEN 0.500 WHEN 'SEED9-PK-002' THEN 1.200 WHEN 'SEED9-PK-003' THEN 0.350 WHEN 'SEED9-PK-004' THEN 2.000 ELSE 0.800 END, 0, 0, NOW() FROM `t_order` o WHERE o.`ServiceNo` IN ('SEED9-PK-001','SEED9-PK-002','SEED9-PK-003','SEED9-PK-004','SEED9-PK-005') AND o.`CustomerId` = @customerId AND o.`OrderSource` = 'pickup' AND NOT EXISTS (SELECT 1 FROM `t_order_declaration` d WHERE d.`OrderId` = o.`Id` AND d.`IsDeleted` = 0); -- 预报件重尺 INSERT INTO `t_order_weight` ( `OrderId`, `Type`, `Length`, `Width`, `Height`, `ActualWeight`, `VolumetricWeight`, `ChargeableWeight`, `IsDeleted`, `CreateUserId`, `CreateTime` ) SELECT o.`Id`, 'forecast', 1.00, 1.00, 1.00, CASE o.`ServiceNo` WHEN 'SEED9-PK-001' THEN 0.500 WHEN 'SEED9-PK-002' THEN 1.200 WHEN 'SEED9-PK-003' THEN 0.350 WHEN 'SEED9-PK-004' THEN 2.000 ELSE 0.800 END, 0.001, CASE o.`ServiceNo` WHEN 'SEED9-PK-001' THEN 0.500 WHEN 'SEED9-PK-002' THEN 1.200 WHEN 'SEED9-PK-003' THEN 0.350 WHEN 'SEED9-PK-004' THEN 2.000 ELSE 0.800 END, 0, 0, NOW() FROM `t_order` o WHERE o.`ServiceNo` IN ('SEED9-PK-001','SEED9-PK-002','SEED9-PK-003','SEED9-PK-004','SEED9-PK-005') AND o.`CustomerId` = @customerId AND o.`OrderSource` = 'pickup' AND NOT EXISTS ( SELECT 1 FROM `t_order_weight` w WHERE w.`OrderId` = o.`Id` AND w.`Type` = 'forecast' AND w.`IsDeleted` = 0 ); -- --------------------------------------------------------------------------- -- 4. 摘要 -- --------------------------------------------------------------------------- SELECT 'pickup_orders' AS tbl, COUNT(*) AS cnt FROM `t_order` WHERE `CustomerId` = @customerId AND `OrderSource` = 'pickup' AND `IsDeleted` = 0 UNION ALL SELECT 'sender_address', COUNT(*) FROM `t_customer_sender_address` WHERE `CustomerId` = @customerId AND `AddressType` = 'sender' AND `IsDeleted` = 0 UNION ALL SELECT 'warehouse_used', IF(@warehouseId IS NULL, 0, 1) UNION ALL SELECT 'product_code', IF(@productCode IS NULL OR @productCode = '', 0, 1);