今天我来问个技术性的问题, 关于商品,收货地址以及发货仓库的优先仓库选择问题.
如题:
用户购买了商品 A, B, C 三个商品(可以认为用户买了n个SKU商品, 每个sku有对应的数量), 商品SKU我们用大写: A, B, C;
收货地址为 X ;
每个商品都对于多个仓库, 仓库发货选择最近最优(优先顺序根据收货地址配置), 如仓库有: a, b, c, d(仓库我们用小写字母表示)等等;
优先逻辑:
用户购买的商品, 选择仓库发货, 包裹数越少越优(主), 包裹越近越优(次);
收货地址为 X, X 地址对应的仓库优先顺序列表:
X => a,b,c,d
举例:
例1. 用户购买了1个sku(数量是3个)发往对应的地址X:
A: 3
A这个商品对应的库存以及数量: X地址对应的顺序是: a,b,c,d
A 对应的仓库以及库存列表:
a: 1
b: 3
c: 4
d: 5
按照最少包裹最近仓库原则, 结果会扣除 b仓库存(A商品3个)发货1个包裹.
例2. 用户购买了2个sku发往对应的地址X:
A: 3
B: 2
A,B这些商品对应的库存以及数量: (X地址对应的顺序是: a,b,c,d)
A 对应的仓库以及库存列表:
a: 1
b: 3
c: 4
d: 5
B 对应的仓库以及库存列表:
a: 1
b: 2
c: 1
d: 5
按照最少包裹最近仓库原则, 结果同样应该扣除 b 仓库(A商品3个, B商品2个)存发货1个包裹.
例3. 用户购买了2个sku发往对应的地址X:
A: 3
B: 2
A,B这些商品对应的库存以及数量: (X地址对应的顺序是: a,b,c,d)
A 对应的仓库以及库存列表:
a: 3
b: 3
c: 1
d: 5
B 对应的仓库以及库存列表:
a: 1
b: 1
c: 2
d: 1
按照最少包裹最近仓库原则, 结果同样应该扣除 a 仓库(A商品3个, B商品1个), 加上 b 仓库存(B商品1个), 发货共2个包裹(a 仓和 b 仓各一个)(这里同样做到了最好少包裹最近仓原则).
例4, 用户购买了2个sku发往对应的地址X:
A: 3
B: 5
A,B这些商品对应的库存以及数量: (X地址对应的顺序是: a,b,c,d)
A 对应的仓库以及库存列表:
a: 2
b: 3
c: 4
d: 5
B 对应的仓库以及库存列表:
a: 1
b: 1
c: 2
d: 5
按照最少包裹最近仓库原则, 结果同样应该扣除 d 仓库(A商品3个, B商品5个), 发货共1个包裹(d仓一个), 这里就做到了最少包裹数原则.
敢问, 大牛些这个算法如何破?
我是这么想的,先把sku,数组降序,比如,3件sku,array(8,4,1);
分别得出8件,4件,3件的最优包裹方案,
然后将这三个方案的仓库情况,合并去重,就可以得优的方案了。