物料订单插入运单finiedtime
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user