123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680 |
- package base_from_yongyi_v2
- import (
- "eta/eta_data_analysis/models"
- "eta/eta_data_analysis/utils"
- "fmt"
- "regexp"
- "strconv"
- "strings"
- "time"
- "github.com/xuri/excelize/v2"
- )
- // HandleYongyiExcelWeekly41 月度-小猪(50斤以下)存栏
- func HandleYongyiExcelWeekly41(f *excelize.File, sheetName string) (indexList []*models.YongyiExcelIndex, err error) {
- defer func() {
- if err != nil {
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly40 国产冻品2-4号肉价格 ErrMsg: %s", err.Error()))
- }
- }()
- cols, err := f.GetCols(sheetName)
- if err != nil {
- err = fmt.Errorf("f GetCols err: %s", err.Error())
- return
- }
- classifyName, classifySort, frequency, unit, namePrefix, namePrefixPingin := GetBaseInfo(sheetName)
- sort := 0
- var preIndexName string
- dateIndexList := make([]string, 0)
- indexInfoMap := make(map[string]*models.YongyiExcelIndex)
- indexNamePart2 := map[string]struct{}{"全国": {}, "华北": {}, "东北": {}, "华中": {}, "华东": {}, "华南": {}, "西南": {}}
- for i, col := range cols {
- if len(col) <= 3 {
- continue
- }
- if i == 0 && col[1] == "日期" {
- for _, cell := range col {
- tmpDateTime, err := time.Parse("2006年1月", cell)
- if err != nil {
- dateIndexList = append(dateIndexList, "")
- } else {
- dateTime := LastDayOfMonth(tmpDateTime.Year(), tmpDateTime.Month())
- dateIndexList = append(dateIndexList, dateTime)
- }
- }
- }
- if len(dateIndexList) == 0 {
- continue
- }
- if col[1] != "" && col[1] != "日期" {
- var indexName, indexNameSuffix string
- if _, ok := indexNamePart2[col[1]]; ok {
- preIndexName = col[1]
- indexName = fmt.Sprintf("%s/%s", namePrefix, col[1])
- indexNameSuffix = col[1]
- } else if col[1] == "环比" {
- indexName = fmt.Sprintf("%s(%s)/%s", namePrefix, col[1], preIndexName)
- indexNameSuffix = fmt.Sprintf("(%s)%s", col[1], preIndexName)
- } else {
- continue
- }
- for j, cell := range col {
- if !isValueValid(cell) {
- continue
- }
- if indexInfo, ok := indexInfoMap[indexName]; !ok {
- tmpYongyiIndex := new(models.YongyiExcelIndex)
- tmpYongyiIndex.ClassifyName = classifyName
- tmpYongyiIndex.ClassifySort = classifySort
- tmpYongyiIndex.Frequency = frequency
- tmpYongyiIndex.Unit = unit
- tmpYongyiIndex.IndexName = indexName
- tmpYongyiIndex.IndexCode = namePrefixPingin + utils.GetFirstPingYin(indexNameSuffix)
- tmpYongyiIndex.Sort = sort
- tmpYongyiIndex.ExcelDataMap = make(map[string]string)
- if string(cell[len(cell)-1]) == `%` {
- tmpYongyiIndex.Unit = `%`
- tmpYongyiIndex.ExcelDataMap[dateIndexList[j]] = cell[:len(cell)-1]
- } else {
- tmpYongyiIndex.ExcelDataMap[dateIndexList[j]] = cell
- }
- indexInfoMap[indexName] = tmpYongyiIndex
- indexList = append(indexList, tmpYongyiIndex)
- sort++
- } else {
- if string(cell[len(cell)-1]) == `%` {
- indexInfo.ExcelDataMap[dateIndexList[j]] = cell[:len(cell)-1]
- } else {
- indexInfo.ExcelDataMap[dateIndexList[j]] = cell
- }
- }
- }
- }
- }
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly41 %s 更新指标数量:%d", sheetName, len(indexList)))
- return
- }
- // HandleYongyiExcelWeekly42 月度猪肉供应占比
- func HandleYongyiExcelWeekly42(f *excelize.File, sheetName string) (indexList []*models.YongyiExcelIndex, err error) {
- defer func() {
- if err != nil {
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly40 月度猪肉供应占比 ErrMsg: %s", err.Error()))
- }
- }()
- rows, err := f.GetRows(sheetName)
- if err != nil {
- err = fmt.Errorf("f GetRows err: %s", err.Error())
- return
- }
- classifyName, classifySort, frequency, unit, namePrefix, namePrefixPingin := GetBaseInfo(sheetName)
- re := regexp.MustCompile(`[+-]?[0-9]*\.?[0-9]+`)
- yearIndexMap := make(map[int]string)
- yongyiExcelIndex := new(models.YongyiExcelIndex)
- yongyiExcelIndex.ClassifyName = classifyName
- yongyiExcelIndex.ClassifySort = classifySort
- yongyiExcelIndex.Frequency = frequency
- yongyiExcelIndex.Unit = unit
- yongyiExcelIndex.IndexName = namePrefix
- yongyiExcelIndex.IndexCode = namePrefixPingin
- yongyiExcelIndex.Sort = 0
- yongyiExcelIndex.ExcelDataMap = make(map[string]string)
- indexList = append(indexList, yongyiExcelIndex)
- for i, row := range rows {
- if i == 0 {
- // 记录年份索引
- for j, cell := range row {
- if isValueValid(cell) {
- yearIndexMap[j] = cell
- }
- }
- } else {
- var month string
- for j, cell := range row {
- if j == 0 {
- if tmp := re.FindString(cell); tmp != "" {
- month = tmp
- continue
- }
- }
- if month == "" {
- break
- }
- tmpYear, err := strconv.Atoi(yearIndexMap[j])
- if err != nil {
- continue
- }
- tmpMonth, err := strconv.Atoi(month)
- if err != nil {
- continue
- }
- dataTime := LastDayOfMonth(tmpYear, time.Month(tmpMonth))
- if isValueValid(cell) {
- newCell := strings.ReplaceAll(cell, "%", "")
- yongyiExcelIndex.ExcelDataMap[dataTime] = newCell
- }
- }
- }
- }
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly42 %s 更新指标数量:%d", sheetName, len(indexList)))
- return
- }
- // HandleYongyiExcelWeekly43 历史出栏体重
- func HandleYongyiExcelWeekly43(f *excelize.File, sheetName string) (indexList []*models.YongyiExcelIndex, err error) {
- defer func() {
- if err != nil {
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly43 %s ErrMsg: %s", sheetName, err.Error()))
- }
- }()
- rows, err := f.GetRows(sheetName)
- if err != nil {
- err = fmt.Errorf("f GetRows err: %s", err.Error())
- return
- }
- re := regexp.MustCompile(`\d+`)
- classifyName, classifySort, frequency, unit, namePrefix, namePrefixPingin := GetBaseInfo(sheetName)
- yongyiExcelIndex := new(models.YongyiExcelIndex)
- yongyiExcelIndex.ClassifyName = classifyName
- yongyiExcelIndex.ClassifySort = classifySort
- yongyiExcelIndex.Frequency = frequency
- yongyiExcelIndex.Unit = unit
- yongyiExcelIndex.IndexName = namePrefix
- yongyiExcelIndex.IndexCode = namePrefixPingin
- yongyiExcelIndex.Sort = 0
- yongyiExcelIndex.ExcelDataMap = make(map[string]string)
- indexList = append(indexList, yongyiExcelIndex)
- for i, row := range rows {
- if i == 0 {
- continue
- }
- if len(row) < 2 {
- continue
- }
- dateArr := re.FindAllString(row[0], -1)
- year, err := strconv.Atoi(dateArr[0])
- if err != nil {
- continue
- }
- week, err := strconv.Atoi(dateArr[1])
- if err != nil {
- continue
- }
- if !isValueValid(row[1]) {
- continue
- }
- date := getSundayOfWeek(year, week)
- yongyiExcelIndex.ExcelDataMap[date] = row[1]
- }
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly43 %s 更新指标数量:%d", sheetName, len(indexList)))
- return
- }
- // HandleYongyiExcelWeekly44 重要部位冻品进口
- func HandleYongyiExcelWeekly44(f *excelize.File, sheetName string) (indexList []*models.YongyiExcelIndex, err error) {
- defer func() {
- if err != nil {
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly44 %s ErrMsg: %s", sheetName, err.Error()))
- }
- }()
- cols, err := f.GetCols(sheetName)
- if err != nil {
- err = fmt.Errorf("f GetCols err: %s", err.Error())
- return
- }
- classifyName, classifySort, frequency, _, namePrefix, namePrefixPingin := GetBaseInfo(sheetName)
- sort := 0
- re := regexp.MustCompile(`\d+`)
- dateIndexMap := make(map[int]string)
- for i, col := range cols {
- if i == 0 {
- for j, cell := range col {
- dateArr := re.FindAllString(cell, -1)
- if len(dateArr) != 2 {
- continue
- }
- year, err := strconv.Atoi(dateArr[0])
- if err != nil {
- continue
- }
- month, err := strconv.Atoi(dateArr[1])
- if err != nil {
- continue
- }
- dateIndexMap[j] = LastDayOfMonth(year, time.Month(month))
- }
- } else {
- if len(col) < 2 {
- continue
- }
- if col[1] == "" {
- continue
- }
- indexName := fmt.Sprintf("%s/%s", namePrefix, col[1])
- yongyiExcelIndex := new(models.YongyiExcelIndex)
- yongyiExcelIndex.ClassifyName = classifyName
- yongyiExcelIndex.ClassifySort = classifySort
- yongyiExcelIndex.Frequency = frequency
- yongyiExcelIndex.IndexName = indexName
- yongyiExcelIndex.IndexCode = namePrefixPingin + utils.GetFirstPingYin(col[1])
- yongyiExcelIndex.Sort = sort
- yongyiExcelIndex.ExcelDataMap = make(map[string]string)
- if col[1] == "柜数" {
- yongyiExcelIndex.Unit = "个"
- } else if col[1] == "合计" {
- yongyiExcelIndex.Unit = "kg"
- } else {
- continue
- }
- for j, cell := range col {
- if j == 0 {
- continue
- }
- cell = strings.ReplaceAll(cell, ",", "")
- if !isValueValid(cell) {
- continue
- }
- yongyiExcelIndex.ExcelDataMap[dateIndexMap[j]] = cell
- }
- indexList = append(indexList, yongyiExcelIndex)
- sort++
- }
- }
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly44 %s 更新指标数量:%d", sheetName, len(indexList)))
- return
- }
- // HandleYongyiExcelWeekly45 各存栏规模
- func HandleYongyiExcelWeekly45(f *excelize.File, sheetName string) (indexList []*models.YongyiExcelIndex, err error) {
- defer func() {
- if err != nil {
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly45 %s ErrMsg: %s", sheetName, err.Error()))
- }
- }()
- rows, err := f.GetRows(sheetName)
- if err != nil {
- err = fmt.Errorf("f GetRows err: %s", err.Error())
- return
- }
- classifyName, classifySort, frequency, unit, namePrefix, namePrefixPingin := GetBaseInfo(sheetName)
- sort := 0
- re := regexp.MustCompile(`\d+`)
- indexNamePart3 := make([]string, 0)
- indexInfoMap := make(map[string]*models.YongyiExcelIndex)
- for i, row := range rows {
- if i == 0 {
- continue
- }
- if i == 1 {
- for j, cell := range row {
- if j >= 2 {
- indexNamePart3 = append(indexNamePart3, cell)
- } else {
- indexNamePart3 = append(indexNamePart3, "")
- }
- }
- }
- if len(row) == 0 {
- break
- }
- if i > 1 && len(row) > 2 {
- var date string
- for j, cell := range row {
- if j == 0 {
- dateArr := re.FindAllString(cell, -1)
- if len(dateArr) != 2 {
- break
- }
- year, err := strconv.Atoi(dateArr[0])
- if err != nil {
- break
- }
- month, err := strconv.Atoi(dateArr[1])
- if err != nil {
- break
- }
- date = LastDayOfMonth(year, time.Month(month))
- }
- if !isValueValid(cell) {
- continue
- }
- indexName := fmt.Sprintf("%s/%s/%s", namePrefix, row[1], indexNamePart3[j])
- if indexInfo, ok := indexInfoMap[indexName]; !ok {
- tmpYongyiIndex := new(models.YongyiExcelIndex)
- tmpYongyiIndex.ClassifyName = classifyName
- tmpYongyiIndex.ClassifySort = classifySort
- tmpYongyiIndex.Frequency = frequency
- tmpYongyiIndex.Unit = unit
- tmpYongyiIndex.IndexName = indexName
- tmpYongyiIndex.IndexCode = namePrefixPingin + utils.GetFirstPingYin(row[1]+indexNamePart3[j])
- tmpYongyiIndex.Sort = sort
- tmpYongyiIndex.ExcelDataMap = make(map[string]string)
- newCell := strings.ReplaceAll(cell, "%", "")
- tmpYongyiIndex.ExcelDataMap[date] = newCell
- indexInfoMap[indexName] = tmpYongyiIndex
- indexList = append(indexList, tmpYongyiIndex)
- sort++
- } else {
- newCell := strings.ReplaceAll(cell, "%", "")
- indexInfo.ExcelDataMap[date] = newCell
- }
- }
- }
- }
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly45 %s 更新指标数量:%d", sheetName, len(indexList)))
- return
- }
- // HandleYongyiExcelWeekly46 进口肉
- func HandleYongyiExcelWeekly46(f *excelize.File, sheetName string) (indexList []*models.YongyiExcelIndex, err error) {
- defer func() {
- if err != nil {
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly46 %s ErrMsg: %s", sheetName, err.Error()))
- }
- }()
- cols, err := f.GetCols(sheetName)
- if err != nil {
- err = fmt.Errorf("f GetCols err: %s", err.Error())
- return
- }
- classifyName, classifySort, frequency, _, _, namePrefixPingin := GetBaseInfo(sheetName)
- sort := 0
- var indexName string
- re := regexp.MustCompile(`\d+`)
- regZr := regexp.MustCompile(`\([^()]*\)`)
- zrzuDateMap := make(map[int]string) // 猪肉及杂碎进口量
- indexInfoMap := make(map[string]*models.YongyiExcelIndex)
- for _, col := range cols {
- if indexName == "" {
- indexName = col[1]
- }
- if col[2] == "" && col[3] == "" {
- indexName = ""
- continue
- }
- if indexName != "" && strings.Contains(indexName, "猪肉进口量") {
- indexName = "猪肉进口量"
- var year int
- if strings.Contains(col[2], "年") {
- year, err = strconv.Atoi(re.FindString(col[2]))
- if err != nil {
- continue
- }
- }
- for j, cell := range col {
- if !isValueValid(cell) {
- continue
- }
- monthArr := strings.Split(cols[0][j], "-")
- var month int
- switch len(monthArr) {
- case 2:
- month, err = strconv.Atoi(re.FindString(monthArr[1]))
- if err != nil {
- continue
- }
- case 1:
- month, err = strconv.Atoi(re.FindString(monthArr[0]))
- if err != nil {
- continue
- }
- }
- date := LastDayOfMonth(year, time.Month(month))
- if date == "" {
- continue
- }
- if indexInfo, ok := indexInfoMap[indexName]; !ok {
- tmpYongyiIndex := new(models.YongyiExcelIndex)
- tmpYongyiIndex.ClassifyName = classifyName
- tmpYongyiIndex.ClassifySort = classifySort
- tmpYongyiIndex.Frequency = frequency
- tmpYongyiIndex.Unit = "万吨"
- tmpYongyiIndex.IndexName = indexName
- tmpYongyiIndex.IndexCode = namePrefixPingin + utils.GetFirstPingYin(indexName)
- tmpYongyiIndex.Sort = sort
- tmpYongyiIndex.ExcelDataMap = make(map[string]string)
- tmpYongyiIndex.ExcelDataMap[date] = cell
- indexInfoMap[indexName] = tmpYongyiIndex
- indexList = append(indexList, tmpYongyiIndex)
- sort++
- } else {
- indexInfo.ExcelDataMap[date] = cell
- }
- }
- } else if indexName != "" && strings.Contains(indexName, "猪肉及杂碎进口量") {
- preName := "猪肉及杂碎进口量"
- if len(col) <= 3 {
- continue
- }
- colTitleName := col[2]
- if colTitleName == `` {
- continue
- }
- if colTitleName == `日期` {
- for j, cell := range col {
- if cell == "" || j <= 2 {
- continue
- }
- excelDate, err := strconv.ParseFloat(cell, 64)
- if err != nil {
- continue
- }
- tmpDate, err := excelize.ExcelDateToTime(excelDate, false)
- if err != nil {
- continue
- }
- LastDayDate := LastDayOfMonth(tmpDate.Year(), tmpDate.Month())
- zrzuDateMap[j] = LastDayDate
- }
- } else {
- unit := regZr.FindString(colTitleName)
- if unit == "" {
- unit = "%"
- } else {
- unit = strings.ReplaceAll(unit, "(", "")
- unit = strings.ReplaceAll(unit, ")", "")
- }
- namePart := regZr.ReplaceAllString(colTitleName, "")
- tmpIndexName := fmt.Sprintf("%s/%s", preName, namePart)
- if indexInfo, ok := indexInfoMap[tmpIndexName]; !ok {
- yongyiIndex := new(models.YongyiExcelIndex)
- yongyiIndex.ClassifyName = classifyName
- yongyiIndex.ClassifySort = classifySort
- yongyiIndex.Frequency = frequency
- yongyiIndex.Unit = unit
- yongyiIndex.IndexName = tmpIndexName
- tmpIndexName = strings.ReplaceAll(tmpIndexName, "/", "")
- yongyiIndex.IndexCode = namePrefixPingin + utils.GetFirstPingYin(tmpIndexName)
- yongyiIndex.Sort = sort
- yongyiIndex.ExcelDataMap = make(map[string]string)
- for j, cell := range col {
- if j == 0 {
- continue
- }
- cell = strings.ReplaceAll(cell, ",", "")
- if unit == "%" {
- cell = strings.ReplaceAll(cell, "%", "")
- }
- if !isValueValid(cell) {
- continue
- }
- yongyiIndex.ExcelDataMap[zrzuDateMap[j]] = cell
- }
- indexInfoMap[yongyiIndex.IndexName] = yongyiIndex
- indexList = append(indexList, yongyiIndex)
- sort++
- } else {
- for j, cell := range col {
- if j == 0 {
- continue
- }
- cell = strings.ReplaceAll(cell, ",", "")
- if unit == "%" {
- cell = strings.ReplaceAll(cell, "%", "")
- }
- if !isValueValid(cell) {
- continue
- }
- indexInfo.ExcelDataMap[zrzuDateMap[j]] = cell
- }
- }
- }
- }
- }
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly46 %s 更新指标数量:%d", sheetName, len(indexList)))
- return
- }
- // HandleYongyiExcelWeekly47 猪料原料占比
- func HandleYongyiExcelWeekly47(f *excelize.File, sheetName string) (indexList []*models.YongyiExcelIndex, err error) {
- defer func() {
- if err != nil {
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly47 %s ErrMsg: %s", sheetName, err.Error()))
- }
- }()
- rows, err := f.GetRows(sheetName)
- if err != nil {
- err = fmt.Errorf("f GetRows err: %s", err.Error())
- return
- }
- classifyName, classifySort, frequency, unit, namePrefix, namePrefixPingin := GetBaseInfo(sheetName)
- namePart2Map := map[string]int{
- "玉米": 0, "小麦": 0, "稻谷、糙米": 0, "豆粕": 0, "棉粕": 0, "菜粕": 0,
- }
- regionMap := map[string]struct{}{
- "东北": {}, "华北": {}, "华中": {}, "华南": {}, "西北": {}, "西南": {}, "全国": {},
- }
- regionIndexMap := make(map[int]string)
- indexInfoMap := make(map[string]*models.YongyiExcelIndex)
- sort := 0
- for i, row := range rows {
- if i == 0 {
- continue
- }
- if len(row) <= 1 {
- continue
- }
- var preName string
- for j, cell := range row {
- if _, ok := namePart2Map[cell]; ok {
- namePart2Map[cell] = j
- preName = cell
- continue
- }
- if _, ok := regionMap[cell]; ok {
- regionIndexMap[j] = preName + "/" + cell
- continue
- }
- if region, ok := regionIndexMap[j]; ok {
- if !isValueValid(cell) {
- continue
- }
- kind := strings.Split(region, "/")[0]
- dateIndex := namePart2Map[kind]
- excelDate, err := strconv.ParseFloat(row[dateIndex], 64)
- if err != nil {
- continue
- }
- curTime, err := excelize.ExcelDateToTime(excelDate, false)
- if err != nil {
- continue
- }
- dateTime := LastDayOfMonth(curTime.Year(), curTime.Month())
- indexName := fmt.Sprintf("%s/%s", namePrefix, region)
- if indexInfo, ok := indexInfoMap[indexName]; !ok {
- yongyiIndex := new(models.YongyiExcelIndex)
- yongyiIndex.ClassifyName = classifyName
- yongyiIndex.ClassifySort = classifySort
- yongyiIndex.Frequency = frequency
- yongyiIndex.Unit = unit
- yongyiIndex.IndexName = indexName
- tmpSuffix := strings.ReplaceAll(region, "/", "")
- tmpSuffix = strings.ReplaceAll(tmpSuffix, "、", "")
- yongyiIndex.IndexCode = namePrefixPingin + utils.GetFirstPingYin(tmpSuffix)
- yongyiIndex.Sort = sort
- yongyiIndex.ExcelDataMap = make(map[string]string)
- cell = strings.ReplaceAll(cell, "%", "")
- yongyiIndex.ExcelDataMap[dateTime] = cell
- indexInfoMap[indexName] = yongyiIndex
- indexList = append(indexList, yongyiIndex)
- sort++
- } else {
- cell = strings.ReplaceAll(cell, "%", "")
- indexInfo.ExcelDataMap[dateTime] = cell
- }
- }
- }
- }
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly47 %s 更新指标数量:%d", sheetName, len(indexList)))
- return
- }
- // HandleYongyiExcelWeekly48 MSY
- func HandleYongyiExcelWeekly48(f *excelize.File, sheetName string) (indexList []*models.YongyiExcelIndex, err error) {
- defer func() {
- if err != nil {
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly48 %s ErrMsg: %s", sheetName, err.Error()))
- }
- }()
- cols, err := f.GetCols(sheetName)
- if err != nil {
- err = fmt.Errorf("f GetRows err: %s", err.Error())
- return
- }
- classifyName, classifySort, frequency, unit, namePrefix, namePrefixPingin := GetBaseInfo(sheetName)
- re := regexp.MustCompile(`\d+`)
- dateMap := make(map[int]string)
- for _, col := range cols {
- if len(col) <= 3 {
- continue
- }
- if col[2] == "时间" {
- for j, cell := range col {
- year := re.FindString(cell)
- if year == "" {
- continue
- }
- dateMap[j] = year + "-12-31"
- }
- } else if col[2] == "MSY" {
- yongyiIndex := new(models.YongyiExcelIndex)
- yongyiIndex.ClassifyName = classifyName
- yongyiIndex.ClassifySort = classifySort
- yongyiIndex.Frequency = frequency
- yongyiIndex.Unit = unit
- yongyiIndex.IndexName = namePrefix
- yongyiIndex.IndexCode = namePrefixPingin
- yongyiIndex.Sort = 0
- yongyiIndex.ExcelDataMap = make(map[string]string)
- for j, cell := range col {
- if !isValueValid(cell) {
- continue
- }
- yongyiIndex.ExcelDataMap[dateMap[j]] = cell
- }
- indexList = append(indexList, yongyiIndex)
- }
- }
- utils.FileLog.Info(fmt.Sprintf("HandleYongyiExcelWeekly48 %s 更新指标数量:%d", sheetName, len(indexList)))
- return
- }
|