From 6c3e3ce0bca723120d4f439466c53d3c435dc3a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 20 Mar 2020 14:16:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=B7=E6=96=B0=E7=89=A9=E6=96=99=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=8A=B6=E6=80=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jx/localjx/order.go | 38 +++++++++++-------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index c11be43e6..f6f905365 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -1244,14 +1244,15 @@ func RefreshAllMatterOrderStatus() (err error) { err = dao.GetRows(db, &goodsList, sql, sqlParams) for _, v := range goodsList { var ( - goodsList2 []*model.GoodsOrder - finishedCount int + 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 { + 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 { @@ -1264,26 +1265,31 @@ func RefreshAllMatterOrderStatus() (err error) { }() vv.Status = model.OrderStatusFinished dao.UpdateEntity(db, vv, "Status") - finishedCount++ dao.Commit(db) + } else { + deliveringCount++ } } - } else { - finishedCount++ + } else if vv.Status == model.OrderStatusCanceled { + cancelCount++ } } - if finishedCount == len(goodsList2) { - 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 - dao.UpdateEntity(db, v, "Status") - dao.Commit(db) + } else { + if cancelCount == len(goodsList2) { + v.Status = model.OrderStatusCanceled + } } + dao.UpdateEntity(db, v, "Status") + dao.Commit(db) } return err }