物料订单插入运单finiedtime

This commit is contained in:
苏尹岚
2020-03-13 15:57:03 +08:00
parent dd1bf466aa
commit d12bd8b358

View File

@@ -57,6 +57,7 @@ type JxSkuInfo struct {
Name string `json:"name"` Name string `json:"name"`
Weight int `json:"weight"` Weight int `json:"weight"`
GroupSign bool `json:"groupSign"`
} }
type JxSkuInfoList []*JxSkuInfo type JxSkuInfoList []*JxSkuInfo
@@ -644,25 +645,69 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
return outJxOrder, deliveryAddress, err return outJxOrder, deliveryAddress, err
} }
func tryToSplitMatterOrder(jxOrder *JxOrderInfo) (outOrder []*JxOrderInfo, freightPrice int, err error) { func tryToSplitMatterOrder(jxOrder *JxOrderInfo) (outOrders []*JxOrderInfo, freightPrice int, err error) {
var ( var (
skus = jxOrder.Skus skus = jxOrder.Skus
weightList []int weightList []*JxSkuInfo
weightMap = make(map[int]*JxSkuInfo) weightMap = make(map[int]*JxSkuInfo)
flag = true
) )
for _, v := range skus { for _, v := range skus {
for i := 0; i < v.Count; i++ { for i := 0; i < v.Count; i++ {
weightList = append(weightList, v.Weight) weightList = append(weightList, v)
} }
weightMap[v.Weight] = v
} }
sort.Sort(sort.Reverse(sort.IntSlice(weightList))) for i := 0; i < len(weightList)-1; i++ {
for _, v := range weightList { for j := 0; j < len(weightList)-i-1; j++ {
if weightMap[v] != nil { if weightList[j].Weight < weightList[j+1].Weight {
tmp := weightList[j]
weightList[j] = weightList[j+1]
weightList[j+1] = tmp
}
}
}
for k, v := range weightList {
weightMap[k+1] = v
}
outOrders = loop(weightMap, flag, jxOrder)
return outOrders, freightPrice, err
}
func loop(weightMap map[int]*JxSkuInfo, flag bool, jxOrder *JxOrderInfo) (outOrders []*JxOrderInfo) {
sum5 := 0
sum3 := 0
for i := 1; i <= len(weightMap); i++ {
outOrder := &JxOrderInfo{}
outOrder = jxOrder
for j := 1; j <= len(weightMap); {
if flag {
if !weightMap[j].GroupSign {
sum5 += weightMap[j].Weight
if weightMap[j].Weight+sum5 <= 5 {
outOrder.Skus = append(outOrder.Skus, weightMap[j])
weightMap[j].GroupSign = true
} else {
j++
continue
} }
} }
return outOrder, freightPrice, err } else {
if !weightMap[j].GroupSign {
sum3 += weightMap[j].Weight
if weightMap[j].Weight+sum3 <= 3 {
outOrder.Skus = append(outOrder.Skus, weightMap[j])
weightMap[j].GroupSign = true
} else {
j++
continue
}
}
}
}
flag = false
outOrders = append(outOrders, outOrder)
}
return outOrders
} }
func matterSkusLimited(skus []*JxSkuInfo, storeID int) (err error) { func matterSkusLimited(skus []*JxSkuInfo, storeID int) (err error) {
@@ -827,6 +872,7 @@ func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) {
Status: model.WaybillStatusDelivering, Status: model.WaybillStatusDelivering,
WaybillCreatedAt: time.Now(), WaybillCreatedAt: time.Now(),
StatusTime: time.Now(), StatusTime: time.Now(),
WaybillFinishedAt: utils.DefaultTimeValue,
} }
dao.CreateEntity(db, waybill) dao.CreateEntity(db, waybill)
// } else { //如果重量超过5kg则需要进行拆单分包商品分包规则。最后一个包不超过5kg,其他包不超过3kg // } else { //如果重量超过5kg则需要进行拆单分包商品分包规则。最后一个包不超过5kg,其他包不超过3kg