京西和平台商品对比-加入数据分析Sheet
This commit is contained in:
@@ -5,7 +5,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi"
|
"git.rosy.net.cn/baseapi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
@@ -19,8 +18,9 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
canWriteTolocal = false
|
canWriteTolocal = !false
|
||||||
isFilterToBeCreateAndNotSale = !false
|
needStatistic = true
|
||||||
|
isFilterToBeCreateAndNotSale = true
|
||||||
parallelCount = 5
|
parallelCount = 5
|
||||||
fileExt = ".xlsx"
|
fileExt = ".xlsx"
|
||||||
)
|
)
|
||||||
@@ -48,7 +48,26 @@ var (
|
|||||||
"京西可售状态",
|
"京西可售状态",
|
||||||
"平台可售状态",
|
"平台可售状态",
|
||||||
}
|
}
|
||||||
|
statisticTitleList = []string{
|
||||||
|
"京西和平台商品状态",
|
||||||
|
"待创建",
|
||||||
|
"京西可售状态",
|
||||||
|
"数量",
|
||||||
|
"占比",
|
||||||
|
}
|
||||||
|
statisticDataList = [][]string{
|
||||||
|
{"京西有,平台无", "是", "下架"},
|
||||||
|
{"京西有,平台无", "是", "上架"},
|
||||||
|
{"京西有,平台无", "否", "下架"},
|
||||||
|
{"京西有,平台无", "否", "上架"},
|
||||||
|
|
||||||
|
{"京西无,平台有", "N/A", "N/A"},
|
||||||
|
|
||||||
|
{"京西有,平台有", "是", "下架"},
|
||||||
|
{"京西有,平台有", "是", "上架"},
|
||||||
|
{"京西有,平台有", "否", "下架"},
|
||||||
|
{"京西有,平台有", "否", "上架"},
|
||||||
|
}
|
||||||
diffData DiffDataLock
|
diffData DiffDataLock
|
||||||
|
|
||||||
multiStoreAllSkuInfoMap map[int]map[int]*partner.SkuNameInfo
|
multiStoreAllSkuInfoMap map[int]map[int]*partner.SkuNameInfo
|
||||||
@@ -74,6 +93,14 @@ type DiffData struct {
|
|||||||
VendorStatus string `json:"平台可售状态"`
|
VendorStatus string `json:"平台可售状态"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type StatisticData struct {
|
||||||
|
JxVendorStatus string `json:"京西和平台商品状态"`
|
||||||
|
ToBeCreate string `json:"待创建"`
|
||||||
|
JxSaleStatus string `json:"京西可售状态"`
|
||||||
|
Count string `json:"数量"`
|
||||||
|
Percent string `json:"占比"`
|
||||||
|
}
|
||||||
|
|
||||||
func (d *DiffDataLock) AppendData(vendorID int, diffData DiffData) {
|
func (d *DiffDataLock) AppendData(vendorID int, diffData DiffData) {
|
||||||
d.locker.Lock()
|
d.locker.Lock()
|
||||||
defer d.locker.Unlock()
|
defer d.locker.Unlock()
|
||||||
@@ -365,6 +392,63 @@ func IsJXCS() bool {
|
|||||||
return globals.IsMainProductEnv()
|
return globals.IsMainProductEnv()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func AddStatisticSheet(sheetName string, data []DiffData) (sheet *excel.Obj2ExcelSheetConfig) {
|
||||||
|
statisticData := make([]StatisticData, 9)
|
||||||
|
var count [9]int
|
||||||
|
var percent [9]float32
|
||||||
|
totalCount := len(data)
|
||||||
|
for _, rowData := range data {
|
||||||
|
if rowData.JxSkuName != "" && rowData.VendorSkuName == "" {
|
||||||
|
if rowData.ToBeCreate == "是" {
|
||||||
|
if rowData.JxStatus == "下架" {
|
||||||
|
count[0]++
|
||||||
|
} else if rowData.JxStatus == "上架" {
|
||||||
|
count[1]++
|
||||||
|
}
|
||||||
|
} else if rowData.ToBeCreate == "否" {
|
||||||
|
if rowData.JxStatus == "下架" {
|
||||||
|
count[2]++
|
||||||
|
} else if rowData.JxStatus == "上架" {
|
||||||
|
count[3]++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if rowData.JxSkuName == "" && rowData.VendorSkuName != "" {
|
||||||
|
if rowData.ToBeCreate == "" && rowData.JxStatus == "" {
|
||||||
|
count[4]++
|
||||||
|
}
|
||||||
|
} else if rowData.JxSkuName != "" && rowData.VendorSkuName != "" {
|
||||||
|
if rowData.ToBeCreate == "是" {
|
||||||
|
if rowData.JxStatus == "下架" {
|
||||||
|
count[5]++
|
||||||
|
} else if rowData.JxStatus == "上架" {
|
||||||
|
count[6]++
|
||||||
|
}
|
||||||
|
} else if rowData.ToBeCreate == "否" {
|
||||||
|
if rowData.JxStatus == "下架" {
|
||||||
|
count[7]++
|
||||||
|
} else if rowData.JxStatus == "上架" {
|
||||||
|
count[8]++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for index, value := range count {
|
||||||
|
percent[index] = float32(value * 100) / float32(totalCount)
|
||||||
|
countStr := utils.Int2Str(value)
|
||||||
|
percentStr := fmt.Sprintf("%.2f%%", percent[index])
|
||||||
|
subStatisticData := statisticDataList[index]
|
||||||
|
statisticData[index] = StatisticData{subStatisticData[0], subStatisticData[1], subStatisticData[2], countStr, percentStr}
|
||||||
|
}
|
||||||
|
sheetName = sheetName + "统计"
|
||||||
|
sheet = &excel.Obj2ExcelSheetConfig {
|
||||||
|
Title: sheetName,
|
||||||
|
Data: statisticData,
|
||||||
|
CaptionList: statisticTitleList,
|
||||||
|
}
|
||||||
|
|
||||||
|
return sheet
|
||||||
|
}
|
||||||
|
|
||||||
func WriteToExcel(task *tasksch.SeqTask, data map[int][]DiffData) {
|
func WriteToExcel(task *tasksch.SeqTask, data map[int][]DiffData) {
|
||||||
var sheetList []*excel.Obj2ExcelSheetConfig
|
var sheetList []*excel.Obj2ExcelSheetConfig
|
||||||
for key, value := range data {
|
for key, value := range data {
|
||||||
@@ -375,8 +459,13 @@ func WriteToExcel(task *tasksch.SeqTask, data map[int][]DiffData) {
|
|||||||
CaptionList: titleList,
|
CaptionList: titleList,
|
||||||
}
|
}
|
||||||
sheetList = append(sheetList, excelConf)
|
sheetList = append(sheetList, excelConf)
|
||||||
|
if needStatistic {
|
||||||
|
statisticSheet := AddStatisticSheet(sheetName, value)
|
||||||
|
sheetList = append(sheetList, statisticSheet)
|
||||||
|
}
|
||||||
baseapi.SugarLogger.Debugf("WriteToExcel:append:%s count:%d", sheetName, len(value))
|
baseapi.SugarLogger.Debugf("WriteToExcel:append:%s count:%d", sheetName, len(value))
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(sheetList) > 0 {
|
if len(sheetList) > 0 {
|
||||||
excelBin := excel.Obj2Excel(sheetList)
|
excelBin := excel.Obj2Excel(sheetList)
|
||||||
timeStr := utils.Int64ToStr(time.Now().Unix())
|
timeStr := utils.Int64ToStr(time.Now().Unix())
|
||||||
|
|||||||
Reference in New Issue
Block a user