From 74dfe6632636e90f7b1279b983c59046c2e4afb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 18 Nov 2019 16:56:18 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=BB=E5=8F=96=E6=B0=B8=E8=BE=89excel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/yonghui/yonghui.go | 18 +++++++++--------- controllers/financial.go | 2 +- controllers/yonghui.go | 7 ++++--- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/business/jxstore/yonghui/yonghui.go b/business/jxstore/yonghui/yonghui.go index c734006a0..7cb40abf9 100644 --- a/business/jxstore/yonghui/yonghui.go +++ b/business/jxstore/yonghui/yonghui.go @@ -84,18 +84,18 @@ const ( UpdateGoodsShelfStatusCount = 50 //微盟下架商品api限制一次50个 ) -func LoadExcelByYongHui(ctx *jxcontext.Context, files []*multipart.FileHeader, isAsync bool) (hint string, err error) { +func LoadExcelByYongHui(ctx *jxcontext.Context, files []*multipart.FileHeader, isAsync, IsContinueWhenError bool) (hint string, err error) { if len(files) == 0 { return "", errors.New("没有文件上传!") } fileHeader := files[0] file, err := fileHeader.Open() - hint, err = LoadExcelBinByYongHui(ctx, file, isAsync) + hint, err = LoadExcelBinByYongHui(ctx, file, true, true) file.Close() return hint, err } -func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync bool) (hint string, err error) { +func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync, IsContinueWhenError bool) (hint string, err error) { var ( skuMap = make(map[string]float64) errMsg string @@ -163,13 +163,14 @@ func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync boo goods := batchItemList[0].(*weimobapi.GoodsInfo) goodsDetail := goods.GoodsDetailInfo spuCode := goodsDetail.OuterGoodsCode + errTmp := "" if spuCode != "" { //如果微盟商品里找得到excel中的商品 if skuMap[spuCode] != 0 { //获取京西库商品 skuList, _ := dao.GetSkus(db, nil, []int{int(utils.Str2Int64(goodsDetail.SkuMap.SingleSku.OuterSkuCode))}, nil, nil) if len(skuList) == 0 { - errMsg += fmt.Sprintf("在京西库中未找到该商品!name_id : [%v] \n", goodsDetail.SkuMap.SingleSku.OuterSkuCode) + errTmp += fmt.Sprintf("在京西库中未找到该商品!name_id : [%v] \n", goodsDetail.SkuMap.SingleSku.OuterSkuCode) } else { if skuList[0].Unit == "份" { if goodsDetail.SkuMap.SingleSku.B2CSku.Weight == 0 { @@ -189,9 +190,12 @@ func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync boo retVal = []int64{goodsDetail.GoodsID} } } + if err == nil { + return retVal, errors.New(errTmp) + } return retVal, err } - taskParallel3 := tasksch.NewParallelTask("根据获取的微盟所有商品并更新", tasksch.NewParallelConfig().SetParallelCount(parallelCount), ctx, taskFunc3, goodsList) + taskParallel3 := tasksch.NewParallelTask("根据获取的微盟所有商品并更新", tasksch.NewParallelConfig().SetParallelCount(parallelCount).SetIsContinueWhenError(IsContinueWhenError), ctx, taskFunc3, goodsList) tasksch.HandleTask(taskParallel3, task, true).Run() goodsIDListForPutAwayInterface, err2 := taskParallel3.GetResult(0) if err = err2; err != nil { @@ -224,10 +228,6 @@ func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync boo } else { hint = taskSeq.GetID() } - if errMsg != "" { - baseapi.SugarLogger.Debugf(errMsg) - return "", errors.New(errMsg) - } return hint, err } diff --git a/controllers/financial.go b/controllers/financial.go index 893529fcb..e4eb65fde 100644 --- a/controllers/financial.go +++ b/controllers/financial.go @@ -46,7 +46,7 @@ func (c *FinancialController) SendFilesToStores() { if params.Title != "永辉" { retVal, err = financial.SendFilesToStores(params.Ctx, files, params.Title, params.ShopName, params.IsAsync, params.Ctx.GetUserName()) } else { - retVal, err = yonghui.LoadExcelByYongHui(params.Ctx, files, params.IsAsync) + retVal, err = yonghui.LoadExcelByYongHui(params.Ctx, files, params.IsAsync, true) } return retVal, "", err }) diff --git a/controllers/yonghui.go b/controllers/yonghui.go index d714ea019..99a397640 100644 --- a/controllers/yonghui.go +++ b/controllers/yonghui.go @@ -14,8 +14,9 @@ type YongHuiController struct { // @Title 读取永辉excel文件 // @Description 读取永辉excel文件 -// @Param token header string false "认证token" -// @Param isAsync query bool false "是否异步,缺省是同步" +// @Param token header string false "认证token" +// @Param isAsync query bool true "是否异步,缺省是同步" +// @Param isContinueWhenError query bool true "单个同步失败是否继续,缺省false" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /LoadExcelByYongHui [post,get] @@ -36,7 +37,7 @@ func (c *YongHuiController) LoadExcelByYongHui() { c.callLoadExcelByYongHui(func(params *tYonghuiLoadExcelByYongHuiParams) (retVal interface{}, errCode string, err error) { r := c.Ctx.Request files := r.MultipartForm.File["userfiles"] - retVal, err = yonghui.LoadExcelByYongHui(params.Ctx, files, params.IsAsync) + retVal, err = yonghui.LoadExcelByYongHui(params.Ctx, files, params.IsAsync, params.IsContinueWhenError) return retVal, "", err }) }