物料订单刷新状态优化
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user