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