diff --git a/business/jxstore/cms/store_sku_check.go b/business/jxstore/cms/store_sku_check.go index 97c6a125d..c6734a1f2 100644 --- a/business/jxstore/cms/store_sku_check.go +++ b/business/jxstore/cms/store_sku_check.go @@ -28,6 +28,7 @@ const ( fileExt = ".xlsx" ) +//错误类型 const ( DatAanalyse1 = "京东商品库直接创建,京西无数据" DatAanalyse2 = "京东商品库未创建成功(可能无经营许可等) " @@ -35,6 +36,7 @@ const ( DatAanalyse4 = "商品可售状态不同 " DatAanalyse5 = "京西商品库没有,平台商品库有 " DatAanalyse6 = "京西商品库有,平台商品库没有" + DatAanalyse7 = "同步状态异常" ) var ( @@ -96,8 +98,8 @@ var ( multiStoreAllSkuInfoMap map[int]map[int]*partner.SkuNameInfo multiStoreAllSkuInfoList map[int][]*partner.StoreSkuInfo - - filterCloseSkuIds []int + skuNameInfoList []*partner.SkuNameInfo + filterCloseSkuIds []int ) type DiffDataLock struct { @@ -175,7 +177,7 @@ func GetMultiStoreAllSkuInfoList(vendorID int) []*partner.StoreSkuInfo { return multiStoreAllSkuInfoList[vendorID] } -func GetMultiStoreAllSkuInfo(ctx *jxcontext.Context, vendorMap map[int]bool) (allSkuNameInfoList []*partner.SkuNameInfo) { +func GetMultiStoreAllSkuInfo(ctx *jxcontext.Context, vendorMap map[int]bool) { InitMultiStoreData() filterCloseSkuIds = filterCloseSkuIds[0:0] for vendorID, _ := range vendorNameList { @@ -188,6 +190,7 @@ func GetMultiStoreAllSkuInfo(ctx *jxcontext.Context, vendorMap map[int]bool) (al if partner.IsMultiStore(vendorID) { multiHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IMultipleStoresHandler) allSkuNameInfoList, err := multiHandler.GetSkus(ctx, 0, "", "") + skuNameInfoList = allSkuNameInfoList if err != nil { baseapi.SugarLogger.Errorf("GetMultiStoreAllSkuInfo error:%v", err) } else { @@ -206,7 +209,6 @@ func GetMultiStoreAllSkuInfo(ctx *jxcontext.Context, vendorMap map[int]bool) (al } } } - return allSkuNameInfoList } func GetFilterJxSkuInfoMap(jxSkuInfoList []*StoreSkuNameExt) map[int]*StoreSkuNameExt { @@ -311,8 +313,16 @@ func CompareJxAndVendor(vendorID int, storeIDStr, vendorStoreID, storeName strin for skuID, jxSkuInfo := range filterJxSkuInfoMap { reason := `` skuIDStr := utils.Int2Str(skuID) - //jxSkuDetailName : 前缀 ([荐]) + 分类名(xxx水饺) + 数量单位(约..g/份) + 注释 (补充..) - jxSkuDetailName := jxutils.ComposeSkuName(jxSkuInfo.SkuName.Prefix, jxSkuInfo.SkuName.Name, jxSkuInfo.Skus2[0].Comment, jxSkuInfo.SkuName.Unit, jxSkuInfo.Skus2[0].SkuSpecQuality, jxSkuInfo.Skus2[0].SkuSpecUnit, 0) + var jxSkuDetailName string + //多规格商品不用比较数量单位 + if jxSkuInfo.IsSpu == 0 { + //jxSkuDetailName : 前缀 ([荐]) + 分类名(xxx水饺) + 数量单位(约..g/份) + 注释 (补充..) + jxSkuDetailName = jxutils.ComposeSkuName(jxSkuInfo.SkuName.Prefix, jxSkuInfo.SkuName.Name, jxSkuInfo.Skus2[0].Comment, jxSkuInfo.SkuName.Unit, jxSkuInfo.Skus2[0].SkuSpecQuality, jxSkuInfo.Skus2[0].SkuSpecUnit, 0) + } else { + //jxSkuDetailName : 前缀 ([荐]) + 分类名(xxx水饺) + 数量单位(约..g/份) + 注释 (补充..) + jxSkuDetailName = jxutils.ComposeSkuName(jxSkuInfo.SkuName.Prefix, jxSkuInfo.SkuName.Name, jxSkuInfo.Skus2[0].Comment, "", jxSkuInfo.Skus2[0].SkuSpecQuality, "", 0) + } + //jxSkuSaleStatus : 商品状态 ,skustatus 优先级高于 StoreSkuStatus jxSkuSaleStatus := jxutils.MergeSkuStatus(jxSkuInfo.Skus2[0].SkuStatus, jxSkuInfo.Skus2[0].StoreSkuStatus) jxSkuSaleStatusName := GetSkuSaleStatusName(jxSkuSaleStatus) @@ -349,6 +359,12 @@ func CompareJxAndVendor(vendorID int, storeIDStr, vendorStoreID, storeName strin outPutData := DiffData{storeIDStr, vendorStoreID, storeName, skuIDStr, syncStatus, toBeCreate, toBeDel, jxSkuDetailName, vendorSkuDetailName, jxSkuSaleStatusName, vendorSkuSaleStatusName, reason} diffData.AppendData(vendorID, outPutData) } + if !isSaleStatusDiff && !isNameDiff { + if status != 0 { + outPutData := DiffData{storeIDStr, vendorStoreID, storeName, skuIDStr, syncStatus, toBeCreate, toBeDel, jxSkuDetailName, vendorSkuDetailName, jxSkuSaleStatusName, vendorSkuSaleStatusName, DatAanalyse7} + diffData.AppendData(vendorID, outPutData) + } + } } else { if isFilterToBeCreateAndNotSale && model.IsSyncStatusNeedCreate(status) && !IsSkuCanSale(jxSkuSaleStatus) { continue @@ -378,7 +394,7 @@ func CompareJxAndVendor(vendorID int, storeIDStr, vendorStoreID, storeName strin } } -func CompareJxAndMultiVenderDepot(ctx *jxcontext.Context, vendorMap map[int]bool, allSkuNameInfoList []*partner.SkuNameInfo) { +func CompareJxAndMultiVenderDepot(ctx *jxcontext.Context, vendorMap map[int]bool) { db := dao.GetDB() for vendorID, _ := range vendorNameList { //filter for vendorID @@ -388,7 +404,10 @@ func CompareJxAndMultiVenderDepot(ctx *jxcontext.Context, vendorMap map[int]bool } } if partner.IsMultiStore(vendorID) { - filterVendorSkuInfoMap := GetFilterVendorSkuInfoMap(allSkuNameInfoList) + // multiHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IMultipleStoresHandler) + // allSkuNameInfoList, _ := multiHandler.GetSkus(ctx, 0, "", "") + filterVendorSkuInfoMap := GetFilterVendorSkuInfoMap(skuNameInfoList) + skuNameInfoList = skuNameInfoList[0:0] skuList, _ := dao.GetSkus(db, []int{}, []int{}, []int{}, []int{}) filterJxSkuInfoMap2 := GetFilterJxSkuInfoMap2(skuList) for skuid, jxSkuInfo := range filterJxSkuInfoMap2 { @@ -444,7 +463,6 @@ func CompareJxAndMultiVenderDepot(ctx *jxcontext.Context, vendorMap map[int]bool //入口函数,校验本地商品京西和其他平台的差异 func CheckSkuDiffBetweenJxAndVendor(ctx *jxcontext.Context, vendorIDList []int, storeIDList []int) { - var allSkuNameInfoList []*partner.SkuNameInfo startProcessTime := time.Now().Unix() baseapi.SugarLogger.Debugf("CheckSkuDiffBetweenJxAndVendor start time: %v", time.Now()) vendorMap := make(map[int]bool) @@ -461,11 +479,11 @@ func CheckSkuDiffBetweenJxAndVendor(ctx *jxcontext.Context, vendorIDList []int, //获取所有多门店平台的商品信息 //1.循环传进来的平台id,如果是多门店的平台,查询该门店京东到家平台的所有商品 //2.为multiStoreAllSkuInfoList 和 multiStoreAllSkuInfoMap 赋值 - allSkuNameInfoList = GetMultiStoreAllSkuInfo(ctx, vendorMap) + GetMultiStoreAllSkuInfo(ctx, vendorMap) case 1: //对比京西库和多门店平台的库的信息 depotDiffData.InitData2() - CompareJxAndMultiVenderDepot(ctx, vendorMap, allSkuNameInfoList) + CompareJxAndMultiVenderDepot(ctx, vendorMap) case 2: //1.获取京西本地所有门店信息 store、place、user表联查 jxStoreInfoList //2.过滤所有门店信息,只留下传进来的vendorMap,storeIDMap中对应的平台和门台信息 filterStoreList