物料订单分包测试

This commit is contained in:
苏尹岚
2020-03-16 15:03:55 +08:00
parent 59a484e6ef
commit 129308cf6c

View File

@@ -841,23 +841,21 @@ func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) {
}
jxOrder.Skus = skus
outOrders, _, _ := tryToSplitMatterOrder(jxOrder)
for _, v := range outOrders {
for k, v := range outOrders {
globals.SugarLogger.Debugf("tryToSplitMatterOrder6,[%v]", utils.Format4Output(v, false))
globals.SugarLogger.Debugf("tryToSplitMatterOrder9,[%v]", utils.Format4Output(order, false))
outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, 0)
outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, order.FromStoreID)
if err != nil {
globals.SugarLogger.Debugf("tryToSplitMatterOrder10,[%v]", err)
return err
}
globals.SugarLogger.Debugf("tryToSplitMatterOrder10")
outJxOrder.OrderID = GenOrderNo(jxcontext.AdminCtx)
outJxOrder.FromStoreID = order.FromStoreID
outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1)
globals.SugarLogger.Debugf("tryToSplitMatterOrder7,[%v]", utils.Format4Output(outJxOrder, false))
order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress)
if err = err2; err == nil {
order2.AddressID = order.AddressID
order2.Status = model.OrderStatusDelivering
globals.SugarLogger.Debugf("tryToSplitMatterOrder8,[%v]", utils.Format4Output(order2, false))
partner.CurOrderManager.SaveOrder(order2, false, db)
err = partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order))
orderSolutionForWuLiao(order2)
}
}
@@ -1307,6 +1305,14 @@ func tryToSplitMatterOrder(jxOrder *JxOrderInfo) (outOrders []*JxOrderInfo, frei
return outOrders, freightPrice, err
}
//商品分包规则。最后一个包不超过5kg,其他包不超过3kg
// 举例15.1kg,分为 2.5kg,2.6kg,确保每个包不超过3kg,最后一个包不超过5kg
// 举例24kg,分为4kg
// 举例310kg分为 3kg,3kg,4kg
// 举例48.1kg,分为 3kg,3kg,2.1kg ; 不能分为3kg,5.1kg
//sum5表示5kg的计算
//sum3表示3kg的计算
//处理过程都是一样的,没单独拿一个函数出来了
func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *JxOrderInfo) {
outOrder = &JxOrderInfo{}
outOrder.StoreID = jxOrder.StoreID
@@ -1318,7 +1324,17 @@ func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *
sum5 += weightList[i].Weight
weightList[i].GroupSign = true
outOrder.Weight += weightList[i].Weight
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
if len(outOrder.Skus) > 0 {
for _, v := range outOrder.Skus {
if v.SkuID == weightList[i].SkuID {
v.Count++
} else {
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
}
}
} else {
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
}
} else {
if sum5 >= 5000 {
break
@@ -1330,7 +1346,17 @@ func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *
sum3 += weightList[i].Weight
weightList[i].GroupSign = true
outOrder.Weight += weightList[i].Weight
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
if len(outOrder.Skus) > 0 {
for _, v := range outOrder.Skus {
if v.SkuID == weightList[i].SkuID {
v.Count++
} else {
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
}
}
} else {
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
}
} else {
if sum3 >= 3000 {
break
@@ -1344,7 +1370,7 @@ func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *
func jxOrderChange(sku2 *JxSkuInfo2) *JxSkuInfo {
sku := &JxSkuInfo{}
sku.Count = sku2.Count
sku.Count = 1
sku.Name = sku2.Name
sku.Price = sku2.Price
sku.SalePrice = sku2.SalePrice