当站点被设置为主站点时,需要做的迁移动作。假设主站点是1站点和36站点
数量和sql,只写觉的重要的数据
迁移项 | 备注 | 数量(1站点,36站点) | SQL | | | | | | | | | | | | |
---|
客户站点开通 |
开通,在其他数据处理完后,最后设置主站点同步的webhook开通主站点和分站点,在其他数据处理完后,最后设置主站点同步的webhook,分站点的webhook | | 在界面处理 | | | | | | | | | | | | |
库存 | 不处理, 跟库位一起到分站点 |
跟随库位主站点要手动建通用的库位 | 1: 72215 36: 1502 | Code Block |
---|
select count(*) from container_product
inner join container on container.id = container_id
inner join aisle on aisle.id = container.aisle_id
inner join zone on zone.id = zone_id
inner join warehouse on warehouse.id = warehouse_id
where warehouse.company_id = 1 and container.status = 'ACTIVE'; |
| 关联数据需要到分站点 company_product update company_product set company_id=xxx where company_id=1; update company_product set company_id=xxx where company_id=36; 再SQL group by到主站点。 Code Block |
---|
| INSERT INTO company_product (product_id, company_id, live_stock, live_stock_fba, last_stock_update_time)
SELECT
container_product.product_id,
warehouse.company_id,
IFNULL(SUM(container_product.quantity),0) AS quantity,
IFNULL(SUM(IF(warehouse.is_fba_transport=1,container_product.quantity,0)),0) AS fba_quantity,
NOW()
FROM container_product
JOIN container ON container.id = container_product.container_id
JOIN container_type ON container_type.id = container.container_type_id AND container_type.special_type <> 'IN_USE_FOR_STOCKING'
JOIN aisle ON aisle.id = container.aisle_id
JOIN zone ON aisle.zone_id = zone.id
JOIN warehouse ON warehouse.id = zone.warehouse_id AND warehouse.company_id in (1,19)
group by container_product.product_id
ON DUPLICATE KEY UPDATE
company_product.live_stock = VALUES(live_stock),
company_product.live_stock_fba = VALUES(live_stock_fba),
company_product.last_stock_update_time = VALUES(last_stock_update_time); |
company_product_date_stock, 因为收费在主站点,理论上数据保留在主站点不用移过来,但是分站点也要有同步数据,不然出了问题很难查? 移到分站点,最后用 sql 把多个分站点的数据,合并到主站点. update company_product_date_stock set company_id=xxx where company_id=1; update company_product_date_stock set company_id=xxx where company_id=36; //合并库存SQL delete from company_product_date_stock where company_id=1; insert into company_product_date_stock select 1 as company_id,product_id,date,sum(stock),now() as update_time,type from company_product_date_stock where company_id in (1,19,20) group by product_id,date,type; company_product_stock_to_use,只有准备中,待处理的订单会有,跟着订单走。 订单留在主站点,所以这数据也留在主站点。 client_company_date_temp_storage_volume, 同 company_product_date_stock 。 移到分站点,然后从各个分站点group by 合并到主站点 | | | | | | | | | | | |
库位 |
跟随过道不处理,跟过道一起自动到分站点 | 1:843115 36: 23044 | Code Block |
---|
| select count(container.id) from container
inner join aisle on aisle.id = container.aisle_id
inner join zone on zone.id = zone_id
inner join warehouse on warehouse.id = warehouse_id
where warehouse.company_id = 1 and container.status = 'ACTIVE'; |
| container_product_transaction移到分站点 与container_id 绑定,不需要处理 client_temp_storage_volume_transaction 移到分站点,这个看着有点麻烦 | | | | | | | | | | | |
过道 |
跟随库区跟随仓库 | 产品 | 本地订单 | 拣货单 | 代理专线订单 | 专线订单 | FBA订单 | 退货订单 | 补货订单 | 客户发货单 | 提单 | 物流计划 | 批次&箱 | 包裹 | 仓库调拨单 | 仓库调拨箱 | 不处理,跟仓库一起自动到分站点 | | | | | | | | | | | | | | |
仓库 | 移到分站点, 主站点要另建一个通用库位 | 1: 19 36:12 | select company_id,count(*) from warehouse where company_id in (1,36) group by company_id ; Code Block |
---|
| update warehouse set company_id=xxx where company_id=1;
update warehouse set company_id=xxx where company_id=36; |
| | | | | | | | | | | | |
产品 | 跨站点的,不处理 | | | | | | | | | | | | | | |
本地订单 | 准备中,待处理的留在主站点,但要通过界面按钮手动同步副本到分站点。 已完成的留在主站点,不需要处理。 待拣货,拣货中,处理中的移到分站点 (因为得跟着库存记录走),但要考虑在主站点扣费的问题 和 换成分站点邮递服务的问题 =》 建议加一个工具,根据分站点的订单,反向往主站点创建一个傀儡订单,解决在主站点扣费的问题。 | | Code Block |
---|
| update consignment set company_id=xxx,delivery_service_id=xx,delivery_service_id_internal=xxx,delivery_package_size_id=xxx,delivery_package_size_id=xxx where company_id=1 and and type='LOCAL' and status in ('WAIT_PICKING','PICKING', 'PROCESSING'); |
| | | | | | | | | | | | |
拣货单 | 移到分站点 | | | | | | | | | | | | | | |
代理专线订单 | 留在主站点, 未完成的订单,通过界面按钮手动同步副本到分站点 | | | | | | | | | | | | | | |
专线订单 | 留在主站点, 未完成的订单,通过界面按钮手动同步副本到分站点 | | | | | | | | | | | | | | |
FBA订单 | 留在主站点, 未完成的订单,通过界面按钮手动同步副本到分站点 | | | | | | | | | | | | | | |
退货订单 | 留在主站点, 未完成的订单,通过界面按钮手动同步副本到分站点 | | | | | | | | | | | | | | |
补货订单 | 不处理, 留在主站点 | | | | | | | | | | | | | | |
客户发货单 | 不处理, 虽然有company_id,但是跨站点显示的,起始仓目的仓所在站都能看到 | | | | | | | | | | | | | | |
提单 | 跨站点的,不处理 | | | | | | | | | | | | | | |
物流计划 | 跨站点的,不处理 | | | | | | | | | | | | | | |
批次&箱&包裹 | 修改company_id, 移到分站点 | | Code Block |
---|
| -- 迁移批次
update agent_direct_consignment_batch set company_id=xx where company_id=1;
update agent_direct_consignment_batch set company_id=xx where company_id=36;
-- 迁移箱子
update agent_direct_consignment_carton set company_id=xx where company_id=1;
update agent_direct_consignment_carton set company_id=xx where company_id=36;
-- 迁移包裹
update agent_direct_consignment_package set company_id=xx where company_id=1;
update agent_direct_consignment_package set company_id=xx where company_id=36; |
| | | | | | | | | | | | |
仓库调拨单 | 跟发货单走的,不处理 | | | | | | | | | | | | | | |
仓库调拨箱 | 跟箱子走的,不处理 | | | | | | | | | | | | | | |
邮递服务 | 不移,但要在分站点创建对应下单的邮递服务 (不同类型要分开打单的,面单尺寸不一样的,还是要分开不同的名字来建服务) | | | | | | | | | | | | | | |
邮递服务商账号 | 不移,分站点不需要做对接,不需要服务商账号 | | | | | | | | | | | | | | |
包裹尺寸 | 不移,简单考虑分站点使用一个Unlimited Size即可。 但是代理专线订单过机时如何检查尺寸? | | | | | | | | | | | | | | |
客户组 | 暂不移?但要在分站点建一个共用的客户组 | | | | | | | | | | | | | | |
费率表 | 不移,分站点不产生扣费, 但要在分站点设置一个通用的费率表,收费都为0. | | | | | | | | | | | | | | |