This commit is contained in:
suyl
2021-10-21 09:50:46 +08:00
parent 77ddcc9a68
commit c6c63af342

View File

@@ -1210,129 +1210,129 @@ func PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string)
} }
func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) { func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) {
// if order.FromStoreID != 0 {
err = changeOrderStatus(order.VendorOrderID, model.OrderStatusDelivering, "") err = changeOrderStatus(order.VendorOrderID, model.OrderStatusDelivering, "")
if order.OrderType == model.OrderTypeMatter { //TODO 2021-10-21 物料暂时不发京东配送,后续如果要发把下面注释放开就行了
var ( //if order.OrderType == model.OrderTypeMatter {
db = dao.GetDB() // var (
) // db = dao.GetDB()
goods, err := dao.QueryOrders(db, order.VendorOrderID, -1, []int{model.VendorIDJX}, -1, utils.ZeroTimeValue, utils.ZeroTimeValue) // )
if err != nil || len(goods) == 0 { // goods, err := dao.QueryOrders(db, order.VendorOrderID, -1, []int{model.VendorIDJX}, -1, utils.ZeroTimeValue, utils.ZeroTimeValue)
return err // if err != nil || len(goods) == 0 {
} // return err
order.WaybillVendorID = model.VendorIDJDWL // }
dao.UpdateEntity(db, order, "WaybillVendorID") // order.WaybillVendorID = model.VendorIDJDWL
orderSkus := goods[0].Skus // dao.UpdateEntity(db, order, "WaybillVendorID")
if order.Weight <= splitMatterOrderMinWeight { //2020-04-26, 从5kg 改为小于4.5kg // orderSkus := goods[0].Skus
var ( // if order.Weight <= splitMatterOrderMinWeight { //2020-04-26, 从5kg 改为小于4.5kg
goodsNos []string // var (
prices []string // goodsNos []string
quantities []string // prices []string
countSum int // quantities []string
) // countSum int
for _, v := range orderSkus { // )
skus, err := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil) // for _, v := range orderSkus {
if err != nil || len(skus) == 0 { // skus, err := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil)
continue // if err != nil || len(skus) == 0 {
} // continue
goodsNos = append(goodsNos, skus[0].EclpID) // }
prices = append(prices, "0") // goodsNos = append(goodsNos, skus[0].EclpID)
quantities = append(quantities, utils.Int2Str(v.Count)) // prices = append(prices, "0")
countSum += v.Count // quantities = append(quantities, utils.Int2Str(v.Count))
} // countSum += v.Count
//总订单不足3kg && 商品数量不足3个 && 五香粉有库存要送五香粉补足3个 // }
stockResult, err := api.JdEclpAPI.QueryStock(jxwxfMatterEclpID) // //总订单不足3kg && 商品数量不足3个 && 五香粉有库存要送五香粉补足3个
if err == nil && len(stockResult) > 0 && stockResult[0].UsableNum > 0 { // stockResult, err := api.JdEclpAPI.QueryStock(jxwxfMatterEclpID)
if order.Weight < 3000 && countSum < 3 { // if err == nil && len(stockResult) > 0 && stockResult[0].UsableNum > 0 {
//要判断他本身买没买五香粉EMG4418113943423 // if order.Weight < 3000 && countSum < 3 {
var index = 9999 // //要判断他本身买没买五香粉EMG4418113943423
for k, v := range goodsNos { // var index = 9999
if v == jxwxfMatterEclpID { // for k, v := range goodsNos {
index = k // if v == jxwxfMatterEclpID {
} // index = k
} // }
//说明他买了五香粉 // }
if index != 9999 { // //说明他买了五香粉
quantities[index] = utils.Int2Str(utils.Str2Int(quantities[index]) + 3 - countSum) // if index != 9999 {
} else { // quantities[index] = utils.Int2Str(utils.Str2Int(quantities[index]) + 3 - countSum)
goodsNos = append(goodsNos, jxwxfMatterEclpID) // } else {
prices = append(prices, "0") // goodsNos = append(goodsNos, jxwxfMatterEclpID)
quantities = append(quantities, utils.Int2Str(3-countSum)) // prices = append(prices, "0")
} // quantities = append(quantities, utils.Int2Str(3-countSum))
} // }
} // }
result, err := api.JdEclpAPI.AddOrder(&jdeclpapi.AddOrderParam{ // }
IsvUUID: order.VendorOrderID, // result, err := api.JdEclpAPI.AddOrder(&jdeclpapi.AddOrderParam{
IsvSource: jdeclpapi.IsvSource, // IsvUUID: order.VendorOrderID,
ShopNo: jdeclpapi.ShopNo, // IsvSource: jdeclpapi.IsvSource,
DepartmentNo: jdeclpapi.DepartmentNo, // ShopNo: jdeclpapi.ShopNo,
ShipperNo: jdeclpapi.ShipperNo, // DepartmentNo: jdeclpapi.DepartmentNo,
WarehouseNo: jdeclpapi.WarehouseNo, // ShipperNo: jdeclpapi.ShipperNo,
SalesPlatformOrderNo: order.VendorOrderID, // WarehouseNo: jdeclpapi.WarehouseNo,
SalePlatformSource: jdeclpapi.SalePlatformSource, // SalesPlatformOrderNo: order.VendorOrderID,
ConsigneeName: order.ConsigneeName, // SalePlatformSource: jdeclpapi.SalePlatformSource,
ConsigneeMobile: order.ConsigneeMobile, // ConsigneeName: order.ConsigneeName,
ConsigneeAddress: order.ConsigneeAddress, // ConsigneeMobile: order.ConsigneeMobile,
OrderMark: jdeclpapi.OrderMark, // ConsigneeAddress: order.ConsigneeAddress,
GoodsNo: strings.Join(goodsNos, ","), // OrderMark: jdeclpapi.OrderMark,
Price: strings.Join(prices, ","), // GoodsNo: strings.Join(goodsNos, ","),
Quantity: strings.Join(quantities, ","), // Price: strings.Join(prices, ","),
}) // Quantity: strings.Join(quantities, ","),
if err != nil { // })
return err // if err != nil {
} // return err
order.EclpOutID = result // }
dao.UpdateEntity(db, order, "EclpOutID") // order.EclpOutID = result
waybill := &model.Waybill{ // dao.UpdateEntity(db, order, "EclpOutID")
VendorOrderID: order.VendorOrderID, // waybill := &model.Waybill{
OrderVendorID: model.VendorIDJX, // VendorOrderID: order.VendorOrderID,
VendorWaybillID: order.EclpOutID, // OrderVendorID: model.VendorIDJX,
WaybillVendorID: model.VendorIDJDWL, // VendorWaybillID: order.EclpOutID,
Status: model.WaybillStatusDelivering, // WaybillVendorID: model.VendorIDJDWL,
WaybillCreatedAt: time.Now(), // Status: model.WaybillStatusDelivering,
StatusTime: time.Now(), // WaybillCreatedAt: time.Now(),
WaybillFinishedAt: utils.DefaultTimeValue, // StatusTime: time.Now(),
DeliveryFlag: model.OrderDeliveryFlagMaskScheduleDisabled, // WaybillFinishedAt: utils.DefaultTimeValue,
} // DeliveryFlag: model.OrderDeliveryFlagMaskScheduleDisabled,
dao.CreateEntity(db, waybill) // }
} else { //如果重量超过5kg则需要进行拆单分包商品分包规则。最后一个包不超过5kg,其他包不超过3kg // dao.CreateEntity(db, waybill)
outOrders, _, _ := tryToSplitMatterOrder(buildJxOrderInfo(order, orderSkus)) // } else { //如果重量超过5kg则需要进行拆单分包商品分包规则。最后一个包不超过5kg,其他包不超过3kg
//以下为仿照CreateOrder,改了一些参数 // outOrders, _, _ := tryToSplitMatterOrder(buildJxOrderInfo(order, orderSkus))
for k, v := range outOrders { // //以下为仿照CreateOrder改了一些参数
v.OrderType = model.OrderTypeMatter // for k, v := range outOrders {
v.FromStoreID = order.FromStoreID // v.OrderType = model.OrderTypeMatter
outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, order.FromStoreID, order.UserID, false, nil) // v.FromStoreID = order.FromStoreID
if err != nil { // outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, order.FromStoreID, order.UserID, false, nil)
return err // if err != nil {
} // return err
//分包后的子订单ID默认是后面加两位目前的规则要改的话要注意取消订单那的判断 // }
outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1) // //分包后的子订单ID默认是后面加两位目前的规则要改的话要注意取消订单那的判断
checkMatterDeliveryAddress(deliveryAddress) // outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1)
order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress, order.UserID, false, nil) // checkMatterDeliveryAddress(deliveryAddress)
if err = err2; err == nil { // order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress, order.UserID, false, nil)
order2.FromStoreID = v.FromStoreID // if err = err2; err == nil {
order2.AddressID = order.AddressID // order2.FromStoreID = v.FromStoreID
order2.Status = model.OrderStatusDelivering // order2.AddressID = order.AddressID
err = partner.CurOrderManager.OnOrderNew(order2, model.Order2Status(order2)) // order2.Status = model.OrderStatusDelivering
orderSolutionForWuLiao(order2) // err = partner.CurOrderManager.OnOrderNew(order2, model.Order2Status(order2))
} // orderSolutionForWuLiao(order2)
} // }
//刷新一下库存 // }
for _, v := range goods[0].Skus { // //刷新一下库存
cms.RefreshMatterStock(jxcontext.AdminCtx, v.SkuID) // for _, v := range goods[0].Skus {
} // cms.RefreshMatterStock(jxcontext.AdminCtx, v.SkuID)
} // }
for _, v := range order.Skus { // }
if bagSkuMap[v.SkuID] != 0 { // for _, v := range order.Skus {
stores, _ := dao.GetStoreList(db, []int{order.FromStoreID}, nil, nil, nil, nil, "") // if bagSkuMap[v.SkuID] != 0 {
if len(stores) > 0 { // stores, _ := dao.GetStoreList(db, []int{order.FromStoreID}, nil, nil, nil, nil, "")
store := stores[0] // if len(stores) > 0 {
store.IsBoughtMatter = model.YES // store := stores[0]
dao.UpdateEntity(db, store, "IsBoughtMatter") // store.IsBoughtMatter = model.YES
} // dao.UpdateEntity(db, store, "IsBoughtMatter")
} // }
} // }
} // }
//}
return err return err
} }