物料订单分包测试

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 jxOrder.Skus = skus
outOrders, _, _ := tryToSplitMatterOrder(jxOrder) outOrders, _, _ := tryToSplitMatterOrder(jxOrder)
for _, v := range outOrders { for k, v := range outOrders {
globals.SugarLogger.Debugf("tryToSplitMatterOrder6,[%v]", utils.Format4Output(v, false)) 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, order.FromStoreID)
outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, 0)
if err != nil { if err != nil {
globals.SugarLogger.Debugf("tryToSplitMatterOrder10,[%v]", err)
return err return err
} }
globals.SugarLogger.Debugf("tryToSplitMatterOrder10") outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1)
outJxOrder.OrderID = GenOrderNo(jxcontext.AdminCtx)
outJxOrder.FromStoreID = order.FromStoreID
globals.SugarLogger.Debugf("tryToSplitMatterOrder7,[%v]", utils.Format4Output(outJxOrder, false)) globals.SugarLogger.Debugf("tryToSplitMatterOrder7,[%v]", utils.Format4Output(outJxOrder, false))
order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress) order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress)
if err = err2; err == nil { if err = err2; err == nil {
order2.AddressID = order.AddressID order2.AddressID = order.AddressID
order2.Status = model.OrderStatusDelivering order2.Status = model.OrderStatusDelivering
globals.SugarLogger.Debugf("tryToSplitMatterOrder8,[%v]", utils.Format4Output(order2, false)) 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) orderSolutionForWuLiao(order2)
} }
} }
@@ -1307,6 +1305,14 @@ func tryToSplitMatterOrder(jxOrder *JxOrderInfo) (outOrders []*JxOrderInfo, frei
return outOrders, freightPrice, err 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) { func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *JxOrderInfo) {
outOrder = &JxOrderInfo{} outOrder = &JxOrderInfo{}
outOrder.StoreID = jxOrder.StoreID outOrder.StoreID = jxOrder.StoreID
@@ -1318,7 +1324,17 @@ func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *
sum5 += weightList[i].Weight sum5 += weightList[i].Weight
weightList[i].GroupSign = true weightList[i].GroupSign = true
outOrder.Weight += weightList[i].Weight 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 { } else {
if sum5 >= 5000 { if sum5 >= 5000 {
break break
@@ -1330,7 +1346,17 @@ func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *
sum3 += weightList[i].Weight sum3 += weightList[i].Weight
weightList[i].GroupSign = true weightList[i].GroupSign = true
outOrder.Weight += weightList[i].Weight 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 { } else {
if sum3 >= 3000 { if sum3 >= 3000 {
break break
@@ -1344,7 +1370,7 @@ func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *
func jxOrderChange(sku2 *JxSkuInfo2) *JxSkuInfo { func jxOrderChange(sku2 *JxSkuInfo2) *JxSkuInfo {
sku := &JxSkuInfo{} sku := &JxSkuInfo{}
sku.Count = sku2.Count sku.Count = 1
sku.Name = sku2.Name sku.Name = sku2.Name
sku.Price = sku2.Price sku.Price = sku2.Price
sku.SalePrice = sku2.SalePrice sku.SalePrice = sku2.SalePrice