物料订单刷新状态优化

This commit is contained in:
苏尹岚
2020-03-23 11:01:44 +08:00
parent 3a7a4ccce0
commit 4143d2acfd
2 changed files with 90 additions and 44 deletions

View File

@@ -1234,3 +1234,13 @@ func GetOrdersForJxPay(db *DaoDB, finishTimeBegin, finishTimeEnd time.Time) (goo
err = GetRows(db, &goods, sql, sqlParams...)
return goods, err
}
func GetWaybills(db *DaoDB, vendorOrderID string) (waybills []*model.Waybill, err error) {
sql := `SELECT *
FROM waybill
WHERE vendor_order_id = ?
`
sqlParams := []interface{}{vendorOrderID}
err = GetRows(db, &waybills, sql, sqlParams)
return waybills, err
}

View File

@@ -1238,60 +1238,92 @@ func RefreshAllMatterOrderStatus() (err error) {
goodsList []*model.GoodsOrder
realTime time.Time
)
realTime = time.Now().AddDate(0, 0, -3)
realTime = time.Now().AddDate(0, 0, -7)
//有分包的主订单
sql := `
SELECT * FROM goods_order WHERE store_id = 666666 AND order_created_at >= ? AND status <> ? AND vendor_id = ? AND eclp_out_id = '' AND LENGTH(vendor_order_id) = 14
SELECT * FROM goods_order WHERE store_id = 666666 AND order_created_at >= ? AND status <> ? AND vendor_id = ? AND LENGTH(vendor_order_id) = 14
`
sqlParams := []interface{}{realTime, model.OrderStatusFinished, model.VendorIDJX}
err = dao.GetRows(db, &goodsList, sql, sqlParams)
for _, v := range goodsList {
var (
goodsList2 []*model.GoodsOrder
cancelCount int
deliveringCount int
)
sql2 := "SELECT * FROM goods_order WHERE vendor_order_id LIKE ? OR vendor_order_id LIKE ? AND vendor_id = ? AND eclp_out_id <> '' AND LENGTH(vendor_order_id) = 16"
sqlParams2 := []interface{}{v.VendorOrderID + "0%", v.VendorOrderID + "1%", model.VendorIDJX}
err = dao.GetRows(db, &goodsList2, sql2, sqlParams2)
for _, vv := range goodsList2 {
if vv.Status < model.OrderStatusFinished {
queryOrderStatus, _ := api.JdEclpAPI.QueryOrderStatus(vv.EclpOutID)
if len(queryOrderStatus.OrderStatusList) > 0 {
if queryOrderStatus.OrderStatusList[len(queryOrderStatus.OrderStatusList)-1].SoStatusCode == jdeclpapi.SoStatusCode10034 {
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
panic(r)
if v.EclpOutID == "" {
var (
goodsList2 []*model.GoodsOrder
cancelCount int
deliveringCount int
)
sql2 := "SELECT * FROM goods_order WHERE vendor_order_id LIKE ? OR vendor_order_id LIKE ? AND vendor_id = ? AND eclp_out_id <> '' AND LENGTH(vendor_order_id) = 16"
sqlParams2 := []interface{}{v.VendorOrderID + "0%", v.VendorOrderID + "1%", model.VendorIDJX}
err = dao.GetRows(db, &goodsList2, sql2, sqlParams2)
for _, vv := range goodsList2 {
if vv.Status < model.OrderStatusFinished {
queryOrderStatus, _ := api.JdEclpAPI.QueryOrderStatus(vv.EclpOutID)
if len(queryOrderStatus.OrderStatusList) > 0 {
if queryOrderStatus.OrderStatusList[len(queryOrderStatus.OrderStatusList)-1].SoStatusCode == jdeclpapi.SoStatusCode10034 {
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
panic(r)
}
}()
vv.Status = model.OrderStatusFinished
dao.UpdateEntity(db, vv, "Status")
waybills, err := dao.GetWaybills(db, vv.VendorOrderID)
if err == nil && len(waybills) > 0 {
waybills[0].Status = model.WaybillStatusDelivered
dao.UpdateEntity(db, waybills[0], "Status")
}
}()
vv.Status = model.OrderStatusFinished
dao.UpdateEntity(db, vv, "Status")
dao.Commit(db)
} else {
deliveringCount++
dao.Commit(db)
changeOrderStatus(vv.VendorOrderID, model.OrderStatusFinished, "")
} else {
deliveringCount++
}
}
} else if vv.Status == model.OrderStatusCanceled {
cancelCount++
}
} else if vv.Status == model.OrderStatusCanceled {
cancelCount++
}
}
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
panic(r)
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
panic(r)
}
}()
if deliveringCount == 0 {
v.Status = model.OrderStatusFinished
} else {
if cancelCount == len(goodsList2) {
v.Status = model.OrderStatusCanceled
}
}
}()
if deliveringCount == 0 {
v.Status = model.OrderStatusFinished
dao.UpdateEntity(db, v, "Status")
dao.Commit(db)
changeOrderStatus(v.VendorOrderID, v.Status, "")
} else {
if cancelCount == len(goodsList2) {
v.Status = model.OrderStatusCanceled
queryOrderStatus, _ := api.JdEclpAPI.QueryOrderStatus(v.EclpOutID)
if len(queryOrderStatus.OrderStatusList) > 0 {
if queryOrderStatus.OrderStatusList[len(queryOrderStatus.OrderStatusList)-1].SoStatusCode == jdeclpapi.SoStatusCode10034 {
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
panic(r)
}
}()
v.Status = model.OrderStatusFinished
dao.UpdateEntity(db, v, "Status")
waybills, err := dao.GetWaybills(db, v.VendorOrderID)
if err == nil && len(waybills) > 0 {
waybills[0].Status = model.WaybillStatusDelivered
dao.UpdateEntity(db, waybills[0], "Status")
}
dao.Commit(db)
changeOrderStatus(v.VendorOrderID, model.OrderStatusFinished, "")
}
}
}
dao.UpdateEntity(db, v, "Status")
dao.Commit(db)
}
return err
}
@@ -1350,7 +1382,13 @@ func GetMatterOrderStatus(ctx *jxcontext.Context, vendorOrderID string) (result
}()
order.Status = model.OrderStatusFinished
dao.UpdateEntity(db, order, "Status")
waybills, err := dao.GetWaybills(db, vendorOrderID)
if err == nil && len(waybills) > 0 {
waybills[0].Status = model.WaybillStatusDelivered
dao.UpdateEntity(db, waybills[0], "Status")
}
dao.Commit(db)
changeOrderStatus(vendorOrderID, model.OrderStatusFinished, "")
}
}
if len(getTrackMessagePlusByOrderResult.ResultData) > 0 {
@@ -1368,9 +1406,7 @@ func GetMatterOrderStatus(ctx *jxcontext.Context, vendorOrderID string) (result
break
}
}
sql := "SELECT * FROM waybill WHERE vendor_order_id = ?"
sqlParams := []interface{}{vendorOrderID}
err = dao.GetRows(db, &waybills, sql, sqlParams)
waybills, err = dao.GetWaybills(db, vendorOrderID)
if len(waybills) > 0 {
waybills[0].VendorWaybillID = waybillCode
waybills[0].CourierName = cName