package services import ( "encoding/json" "fmt" "hongze/mysteel_watch/global" "hongze/mysteel_watch/models/index" "hongze/mysteel_watch/utils" "hongze/mysteel_watch/watch" "strconv" "strings" "time" "github.com/rdlucklib/rdluck_tools/paging" "github.com/xuri/excelize/v2" ) // Merge 合并指标 func Merge() { fmt.Println("merge start") /* 年底,季度,存放在一个excel中 月度30个指标存一个excel 周度25个指标存放一个excel 日度20个指标存一个excel */ //年度->38 IndexYearMerge() //季度->5 IndexSeasonMerge() //月度->86 IndexMonthMerge() //周度->292 IndexWeekMerge() //日度->114 IndexDayMerge() //merge_file_path fmt.Println("merge end") } // 年度 func IndexYearMerge() { frequency := "年度" fileName := "year" + ".xlsx" //保存的文件名称 yearIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName var err error //indexObj := new(index.BaseFromMysteelChemicalIndex) //yearList, err := indexObj.GetIndexByFrequency(frequency) yearList, err := watch.GetIndexByFrequency(frequency) if err != nil { fmt.Println("GetIndexByFrequency Err:" + err.Error()) return } if len(yearList) <= 0 { return } //commentResult, err := GetIndexComment(yearIndexFilePath, yearList, 1) commentResult, err := GetIndexCommentV2(yearIndexFilePath, yearList, 1) if err != nil { fmt.Println("GetIndexComment Err:" + err.Error()) return } if utils.FileIsExist(yearIndexFilePath) { //修改文件 fileObj, err := excelize.OpenFile(yearIndexFilePath) if err != nil { fmt.Println("打开文件失败,Err:" + err.Error()) return } fileObj.DeleteComment("Sheet1", "A1") fileObj.AddComment("Sheet1", "A1", commentResult) if err := fileObj.SaveAs(yearIndexFilePath); err != nil { fmt.Println("保存失败,Err:" + err.Error()) fileObj.Close() return } fileObj.Close() } else { //新增文件 templatePath := global.CONFIG.Serve.IndexSaveDir + "index_template.xlsx" templateFile, err := excelize.OpenFile(templatePath) if err != nil { fmt.Println("打开文件失败,Err:" + err.Error()) return } templateFile.DeleteComment("Sheet1", "A1") templateFile.AddComment("Sheet1", "A1", commentResult) if err := templateFile.SaveAs(yearIndexFilePath); err != nil { fmt.Println("保存失败,Err:" + err.Error()) templateFile.Close() return } templateFile.Close() } //刷新数据 //MysteelChemicalRefresh(yearIndexFilePath) AddIndexRefreshToLpush(yearIndexFilePath) } // 季度 func IndexSeasonMerge() { frequency := "季度" fileName := "season" + ".xlsx" //保存的文件名称 seasonIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName var err error //indexObj := new(index.BaseFromMysteelChemicalIndex) //seasonList, err := indexObj.GetIndexByFrequency(frequency) seasonList, err := watch.GetIndexByFrequency(frequency) if err != nil { fmt.Println("GetIndexByFrequency Err:" + err.Error()) return } if len(seasonList) <= 0 { return } //commentResult, err := GetIndexComment(seasonIndexFilePath, seasonList, 1) commentResult, err := GetIndexCommentV2(seasonIndexFilePath, seasonList, 1) if err != nil { fmt.Println("GetIndexComment Err:" + err.Error()) return } if utils.FileIsExist(seasonIndexFilePath) { //修改文件 fileObj, err := excelize.OpenFile(seasonIndexFilePath) if err != nil { fmt.Println("打开文件失败,Err:" + err.Error()) return } fileObj.DeleteComment("Sheet1", "A1") fileObj.AddComment("Sheet1", "A1", commentResult) if err := fileObj.SaveAs(seasonIndexFilePath); err != nil { fmt.Println("保存失败,Err:" + err.Error()) fileObj.Close() return } fileObj.Close() } else { //新增文件 templatePath := global.CONFIG.Serve.IndexSaveDir + "index_template.xlsx" templateFile, err := excelize.OpenFile(templatePath) if err != nil { fmt.Println("打开文件失败,Err:" + err.Error()) return } templateFile.DeleteComment("Sheet1", "A1") templateFile.AddComment("Sheet1", "A1", commentResult) if err := templateFile.SaveAs(seasonIndexFilePath); err != nil { fmt.Println("保存失败,Err:" + err.Error()) templateFile.Close() return } templateFile.Close() } //刷新数据 //MysteelChemicalRefresh(seasonIndexFilePath) AddIndexRefreshToLpush(seasonIndexFilePath) } //月度 //func IndexMonthMerge() { // frequency := "月度" // filePre := "month" // pageSize := 30 // var err error // // indexObj := new(index.BaseFromMysteelChemicalIndex) // total, err := indexObj.GetIndexByFrequencyCount(frequency) // if err != nil { // fmt.Println("GetIndexByFrequencyCount Err:" + err.Error()) // return // } // // maxFileIndexItem, err := indexObj.GetMaxFileIndex(frequency) // if err != nil { // fmt.Println("GetMaxFileIndex Err:" + err.Error()) // return // } // // maxFileIndex := maxFileIndexItem.FileIndex // if maxFileIndex <= 0 { // maxFileIndex = 1 // } // // fileName := filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称 // monthIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName // // indexTotal, err := indexObj.GetIndexCountByMergeFilePath(monthIndexFilePath) // if err != nil { // fmt.Println("GetIndexCountByMergeFilePath Err:" + err.Error()) // return // } // // if (indexTotal > int64(pageSize)/2) && maxFileIndex != 1 { // maxFileIndex += 1 // } // // fmt.Println("maxFileIndex:", maxFileIndex) // totalPage := paging.PageCount(int(total), pageSize) // fmt.Println("total:", total) // fmt.Println("totalPage:", totalPage) // for i := 1; i <= totalPage; i++ { // // offset := (i - 1) * pageSize // // fileName = filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称 // monthIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName // fmt.Println(monthIndexFilePath) // // fmt.Println(offset, pageSize) // pageList, err := indexObj.GetIndexByFrequencyPage(frequency, offset, pageSize) // if err != nil { // fmt.Println("GetIndexByFrequency Err:" + err.Error()) // return // } // // commentResult, err := GetIndexComment(monthIndexFilePath, pageList, maxFileIndex) // if err != nil { // fmt.Println("GetIndexComment Err:" + err.Error()) // return // } // if utils.FileIsExist(monthIndexFilePath) { //修改文件 // fileObj, err := excelize.OpenFile(monthIndexFilePath) // if err != nil { // fmt.Println("打开文件失败,Err:" + err.Error()) // return // } // // fileObj.DeleteComment("Sheet1", "A1") // fileObj.AddComment("Sheet1", "A1", commentResult) // if err := fileObj.SaveAs(monthIndexFilePath); err != nil { // fmt.Println("保存失败,Err:" + err.Error()) // fileObj.Close() // return // } // fileObj.Close() // } else { //新增文件 // templatePath := global.CONFIG.Serve.IndexSaveDir + "index_template.xlsx" // templateFile, err := excelize.OpenFile(templatePath) // if err != nil { // fmt.Println("打开文件失败,Err:" + err.Error()) // return // } // templateFile.DeleteComment("Sheet1", "A1") // templateFile.AddComment("Sheet1", "A1", commentResult) // if err := templateFile.SaveAs(monthIndexFilePath); err != nil { // fmt.Println("保存失败,Err:" + err.Error()) // templateFile.Close() // return // } // templateFile.Close() // } // maxFileIndex += 1 // time.Sleep(1 * time.Second) // } //} func IndexMonthMerge() { frequency := "月度" filePre := "month" pageSize := 30 err := indexMerge(frequency, filePre, pageSize) if err != nil { fmt.Println("合并月度指标失败,err:", err) } } //日度 //func IndexDayMerge() { // frequency := "日度" // filePre := "day" // pageSize := 30 // var err error // // indexObj := new(index.BaseFromMysteelChemicalIndex) // total, err := indexObj.GetIndexByFrequencyCount(frequency) // if err != nil { // fmt.Println("GetIndexByFrequencyCount Err:" + err.Error()) // return // } // // maxFileIndexItem, err := indexObj.GetMaxFileIndex(frequency) // if err != nil { // fmt.Println("GetMaxFileIndex Err:" + err.Error()) // return // } // // maxFileIndex := maxFileIndexItem.FileIndex // if maxFileIndex <= 0 { // maxFileIndex = 1 // } // // fileName := filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称 // monthIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName // // indexTotal, err := indexObj.GetIndexCountByMergeFilePath(monthIndexFilePath) // if err != nil { // fmt.Println("GetIndexCountByMergeFilePath Err:" + err.Error()) // return // } // // if (indexTotal > int64(pageSize)/2) && maxFileIndex != 1 { // maxFileIndex += 1 // } // // fmt.Println("maxFileIndex:", maxFileIndex) // totalPage := paging.PageCount(int(total), pageSize) // fmt.Println("total:", total) // fmt.Println("totalPage:", totalPage) // for i := 1; i <= totalPage; i++ { // // offset := (i - 1) * pageSize // // fileName = filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称 // monthIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName // fmt.Println(monthIndexFilePath) // // fmt.Println(offset, pageSize) // pageList, err := indexObj.GetIndexByFrequencyPage(frequency, offset, pageSize) // if err != nil { // fmt.Println("GetIndexByFrequency Err:" + err.Error()) // return // } // // commentResult, err := GetIndexComment(monthIndexFilePath, pageList, maxFileIndex) // if err != nil { // fmt.Println("GetIndexComment Err:" + err.Error()) // return // } // if utils.FileIsExist(monthIndexFilePath) { //修改文件 // fileObj, err := excelize.OpenFile(monthIndexFilePath) // if err != nil { // fmt.Println("打开文件失败,Err:" + err.Error()) // return // } // // fileObj.DeleteComment("Sheet1", "A1") // fileObj.AddComment("Sheet1", "A1", commentResult) // if err := fileObj.SaveAs(monthIndexFilePath); err != nil { // fmt.Println("保存失败,Err:" + err.Error()) // fileObj.Close() // return // } // fileObj.Close() // } else { //新增文件 // templatePath := global.CONFIG.Serve.IndexSaveDir + "index_template.xlsx" // templateFile, err := excelize.OpenFile(templatePath) // if err != nil { // fmt.Println("打开文件失败,Err:" + err.Error()) // return // } // templateFile.DeleteComment("Sheet1", "A1") // templateFile.AddComment("Sheet1", "A1", commentResult) // if err := templateFile.SaveAs(monthIndexFilePath); err != nil { // fmt.Println("保存失败,Err:" + err.Error()) // templateFile.Close() // return // } // templateFile.Close() // } // maxFileIndex += 1 // time.Sleep(1 * time.Second) // } //} // IndexDayMerge 日度指标合并 func IndexDayMerge() { frequency := "日度" filePre := "day" pageSize := 30 //每个excel表需要的指标数 err := indexMerge(frequency, filePre, pageSize) if err != nil { fmt.Println("合并日度指标失败,err:", err) } } // IndexWeekMerge 周度指标合并 func IndexWeekMerge() { frequency := "周度" filePre := "week" pageSize := 30 //每个excel表需要的指标数 err := indexMerge(frequency, filePre, pageSize) if err != nil { fmt.Println("合并周度指标失败,err:", err) } } //func IndexWeekMerge() { // frequency := "周度" // filePre := "week" // pageSize := 30 //每个excel表需要的指标数 // firstIndexCount := pageSize //第一个添加的excel表需要的指标数 // var err error // // indexObj := new(index.BaseFromMysteelChemicalIndex) // // // 获取未合并的指标总数量 // total, err := indexObj.GetNoMergeIndexByFrequencyCount(frequency) // if err != nil { // fmt.Println("GetIndexByFrequencyCount Err:" + err.Error()) // return // } // //未合并的指标总数量小于等于0,说明没有需要合并的指标 // if total <=0{ // return // } // // // 获取最大的文件编号下标 // maxFileIndexItem, err := indexObj.GetMaxFileIndex(frequency) // if err != nil { // fmt.Println("GetMaxFileIndex Err:" + err.Error()) // return // } // // maxFileIndex := maxFileIndexItem.FileIndex // if maxFileIndex <= 0 { // maxFileIndex = 1 // } // // fileName := filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称 // maxMergeIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName // // // 根据文件下标获取该文件下标已经存在多少的指标 // indexTotal, err := indexObj.GetIndexCountByMergeFilePath(maxMergeIndexFilePath) // if err != nil { // fmt.Println("GetIndexCountByMergeFilePath Err:" + err.Error()) // return // } // // // 如果最近的excel表的指标数量 少于 每页需要的指标数 // if int(indexTotal) < pageSize { // // 最近的excel表的待添加指标数 = 每页需要的指标数 - 已经添加的指标 // firstIndexCount = pageSize - int(indexTotal) // } // // fmt.Println("maxFileIndex:", maxFileIndex) // // // 除去第一个excel表的剩余需要添加的指标数量 // nextTotal := int(total)-firstIndexCount // // 总文件数 // totalPage := paging.PageCount(nextTotal, pageSize) // totalPage = totalPage+1 //需要加上除去在外面的指标(第一张excel) // fmt.Println("total:", total) // fmt.Println("totalPage:", totalPage) // for i := 1; i <= totalPage; i++ { // //offset := (i - 1) * pageSize // // fileName = filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称 // mergeIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName // fmt.Println(mergeIndexFilePath) // // var list []*index.BaseFromMysteelChemicalIndex // // 需要查询的指标数 // size := pageSize // if i == 1{ // size = firstIndexCount // 第一页需要合并的新指标数 // // // 第一页需要的指标列表 // tmpList ,tmpErr := indexObj.GetIndexByFrequencyListByMergeFilePath(frequency,mergeIndexFilePath) // if tmpErr != nil{ // fmt.Println("GetIndexByFrequencyListByMergeFilePath Err:" + err.Error()) // return // } // list = tmpList // } // fmt.Println("需要查询",size,"个指标") // // //fmt.Println(offset, pageSize) // // // 当下需要合并到excel的指标 // pageList, err := indexObj.GetNoMergeIndexByFrequencyPage(frequency, size) // if err != nil { // fmt.Println("GetIndexByFrequency Err:" + err.Error()) // return // } // // if len(list)>0{ // pageList = append(pageList,list...) // } // // commentResult, err := GetIndexComment(mergeIndexFilePath, pageList, maxFileIndex) // if err != nil { // fmt.Println("GetIndexComment Err:" + err.Error()) // return // } // if utils.FileIsExist(mergeIndexFilePath) { //修改文件 // fileObj, err := excelize.OpenFile(mergeIndexFilePath) // if err != nil { // fmt.Println("打开文件失败,Err:" + err.Error()) // return // } // // fileObj.DeleteComment("Sheet1", "A1") // fileObj.AddComment("Sheet1", "A1", commentResult) // if err := fileObj.SaveAs(mergeIndexFilePath); err != nil { // fmt.Println("保存失败,Err:" + err.Error()) // fileObj.Close() // return // } // fileObj.Close() // } else { //新增文件 // templatePath := global.CONFIG.Serve.IndexSaveDir + "index_template.xlsx" // templateFile, err := excelize.OpenFile(templatePath) // if err != nil { // fmt.Println("打开文件失败,Err:" + err.Error()) // return // } // templateFile.DeleteComment("Sheet1", "A1") // templateFile.AddComment("Sheet1", "A1", commentResult) // if err := templateFile.SaveAs(mergeIndexFilePath); err != nil { // fmt.Println("保存失败,Err:" + err.Error()) // templateFile.Close() // return // } // templateFile.Close() // } // maxFileIndex += 1 // time.Sleep(1 * time.Second) // } //} // indexMerge 指标合并 // @params frequency string 频度 // @params filePre string 文件名前缀 // @params pageSize int 每个excel表中的指标数量 func indexMerge(frequency, filePre string, pageSize int) (err error) { firstIndexCount := pageSize //第一个添加的excel表需要的指标数 //indexObj := new(index.BaseFromMysteelChemicalIndex) frequencyReq := watch.GetMaxFileIndexReq{ Frequency: frequency, } // 获取未合并的指标总数量 total, err := watch.GetNoMergeIndexByFrequencyCount(frequencyReq) if err != nil { fmt.Println("GetIndexByFrequencyCount Err:" + err.Error()) return } //未合并的指标总数量小于等于0,说明没有需要合并的指标 if total <= 0 { return } // 获取最大的文件编号下标 maxFileIndexItem, err := watch.GetMaxFileIndex(frequencyReq) maxFileIndex := maxFileIndexItem.FileIndex if maxFileIndex <= 0 { maxFileIndex = 1 } fileName := filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称 maxMergeIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName // 根据文件下标获取该文件下标已经存在多少的指标 //indexTotal, err := indexObj.GetIndexCountByMergeFilePath(maxMergeIndexFilePath) indexTotal, err := watch.GetIndexCountByMergeFilePath(maxMergeIndexFilePath) if err != nil { fmt.Println("GetIndexCountByMergeFilePath Err:" + err.Error()) return } fmt.Println("当前待合并的文件名:", maxMergeIndexFilePath) fmt.Println("当前文件中指标的最大数量:", indexTotal) fmt.Println("maxFileIndex:", maxFileIndex) // 如果最近的excel表的指标数量 少于 每页需要的指标数 if int(indexTotal) < pageSize { // 最近的excel表的待添加指标数 = 每页需要的指标数 - 已经添加的指标 firstIndexCount = pageSize - int(indexTotal) } else { firstIndexCount = pageSize maxFileIndex++ } fmt.Println("maxFileIndex2:", maxFileIndex) // 除去第一个excel表的剩余需要添加的指标数量 nextTotal := int(total) - firstIndexCount // 总文件数 totalPage := paging.PageCount(nextTotal, pageSize) totalPage = totalPage + 1 //需要加上除去在外面的指标(第一张excel) fmt.Println("total:", total) fmt.Println("totalPage:", totalPage) for i := 1; i <= totalPage; i++ { //offset := (i - 1) * pageSize fileName = filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称 mergeIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName fmt.Println(mergeIndexFilePath) //var list []*index.BaseFromMysteelChemicalIndex // 需要查询的指标数 size := pageSize if i == 1 { size = firstIndexCount // 第一页需要合并的新指标数 // 第一页需要的指标列表 //tmpList, tmpErr := indexObj.GetIndexByFrequencyListByMergeFilePath(frequency, mergeIndexFilePath) //if tmpErr != nil { // fmt.Println("GetIndexByFrequencyListByMergeFilePath Err:" + tmpErr.Error()) // err = tmpErr // return //} //list = tmpList } fmt.Println("需要查询", size, "个指标") //fmt.Println(offset, pageSize) // 当下需要合并到excel的指标 pageList, tmpErr := watch.GetNoMergeIndexByFrequencyPage(frequency, size) if tmpErr != nil { fmt.Println("GetIndexByFrequency Err:" + tmpErr.Error()) err = tmpErr return } //if len(list) > 0 { // pageList = append(pageList, list...) //} commentResult, tmpErr := GetIndexCommentV2(mergeIndexFilePath, pageList, maxFileIndex) if tmpErr != nil { fmt.Println("GetIndexComment Err:" + tmpErr.Error()) err = tmpErr return } if utils.FileIsExist(mergeIndexFilePath) { //修改文件 fileObj, tmpErr := excelize.OpenFile(mergeIndexFilePath) if tmpErr != nil { fmt.Println("打开文件失败,Err:" + tmpErr.Error()) err = tmpErr return } fileObj.DeleteComment("Sheet1", "A1") fileObj.AddComment("Sheet1", "A1", commentResult) if err = fileObj.SaveAs(mergeIndexFilePath); err != nil { fmt.Println("保存失败,Err:" + err.Error()) fileObj.Close() return } fileObj.Close() } else { //新增文件 templatePath := global.CONFIG.Serve.IndexSaveDir + "index_template.xlsx" templateFile, tmpErr := excelize.OpenFile(templatePath) if tmpErr != nil { fmt.Println("打开文件失败,Err:" + tmpErr.Error()) err = tmpErr return } templateFile.DeleteComment("Sheet1", "A1") templateFile.AddComment("Sheet1", "A1", commentResult) if err = templateFile.SaveAs(mergeIndexFilePath); err != nil { fmt.Println("保存失败,Err:" + err.Error()) templateFile.Close() return } templateFile.Close() } maxFileIndex += 1 time.Sleep(1 * time.Second) //刷新数据 //MysteelChemicalRefresh(mergeIndexFilePath) AddIndexRefreshToLpush(mergeIndexFilePath) } return } //func GetIndexComment(indexFilePath string, list []*index.BaseFromMysteelChemicalIndex, fileIndex int) (commentResult string, err error) { // runMode := "release" // indexInfo := new(IndexObj) // if utils.FileIsExist(indexFilePath) { //文件存在 // fmt.Println("utils.FileIsExist") // getCommentStr := GetComment(indexFilePath) // fmt.Println(getCommentStr) // // err = json.Unmarshal([]byte(getCommentStr), &indexInfo) // if err != nil { // fmt.Println("json.Unmarshal err:" + err.Error()) // return // } // } else { //文件不存在, // indexInfo.BlankValue = "0" // indexInfo.CanMark = true // indexInfo.ChartLineType = "0" // indexInfo.DateBlock = 0 // indexInfo.DateBlockCount = 1 // indexInfo.DateFormat = 0 // indexInfo.DateTimeTag = "637973605613980000" // indexInfo.EndDate = "" // indexInfo.ExportType = 0 // indexInfo.HasDescription = true // indexInfo.HasEmptyRows = false // indexInfo.HasFrequency = true // indexInfo.HasIndexID = true // indexInfo.HasLastDate = true // indexInfo.HasSourceName = true // indexInfo.HasTimeInterval = true // indexInfo.HasUnit = true // indexInfo.HasUpdateDate = true // indexInfo.IsCreateChart = false // indexInfo.IsDataSort = true // indexInfo.IsNewSheet = false // indexInfo.IsNewWorkbook = false // indexInfo.Position = "A1" // indexInfo.ShowBlankLines = false // indexInfo.StartDate = "" // indexInfo.Transpose = false // indexInfo.UpdateMode = 1 // indexInfo.LookModel.IsLast = false // indexInfo.LookModel.LookValue = 0 // indexInfo.LookModel.LookType = 0 // indexInfo.Ver = 3 // } // modelsList := make([]IndexModels, 0) // startDate := "1990-01-01" // // indexObj := new(index.BaseFromMysteelChemicalIndex) // // modelsList = append(modelsList, indexInfo.Models...) // // for k, v := range list { // fmt.Println(k, v) // item := new(IndexModels) // item.DataFormat = 0 // if v.IndexName == "" { // item.DataStartDate = startDate // } else { // item.DataStartDate = v.StartDate.Format(utils.FormatDate) // } // item.DefineName = "" // item.DefineUnit = "" // item.DisplayIndexCode = v.IndexCode // item.IndexCode = v.IndexCode // item.IndexFormula = v.IndexCode // item.PointValue = 0 // item.UnionStart = "" // modelsList = append(modelsList, *item) // // indexObj.IndexCode = v.IndexCode // indexObj.MergeFilePath = indexFilePath // indexObj.FileIndex = fileIndex // // updateColsArr := make([]string, 0) // updateColsArr = append(updateColsArr, "merge_file_path") // updateColsArr = append(updateColsArr, "file_index") // // err = indexObj.Update(runMode, updateColsArr) // if err != nil { // fmt.Println("indexObj.Update err:" + err.Error()) // return // } // } // // indexInfo.Models = modelsList // // indexStr, err := json.Marshal(indexInfo) // if err != nil { // fmt.Println("json.Marshal err:" + err.Error()) // return // } // text := string(indexStr) // text = strings.Trim(text, "{") // // commentMap := make(map[string]interface{}) // commentMap["author"] = "{" // commentMap["text"] = text // //commentMap["text"] = commentItem // // commentJson, err := json.Marshal(commentMap) // if err != nil { // fmt.Println("json.Marshal err:" + err.Error()) // } // commentResult = string(commentJson) // return //} func GetIndexCommentV2(indexFilePath string, list []index.BaseFromMysteelChemicalIndex, fileIndex int) (commentResult string, err error) { //runMode := "release" indexInfo := new(IndexObj) if utils.FileIsExist(indexFilePath) { //文件存在 fmt.Println("utils.FileIsExist") getCommentStr := GetComment(indexFilePath) fmt.Println(getCommentStr) err = json.Unmarshal([]byte(getCommentStr), &indexInfo) if err != nil { fmt.Println("json.Unmarshal err:" + err.Error()) return } } else { //文件不存在, indexInfo.BlankValue = "0" indexInfo.CanMark = true indexInfo.ChartLineType = "0" indexInfo.DateBlock = 0 indexInfo.DateBlockCount = 1 indexInfo.DateFormat = 0 indexInfo.DateTimeTag = "637973605613980000" indexInfo.EndDate = "" indexInfo.ExportType = 0 indexInfo.HasDescription = true indexInfo.HasEmptyRows = false indexInfo.HasFrequency = true indexInfo.HasIndexID = true indexInfo.HasLastDate = true indexInfo.HasSourceName = true indexInfo.HasTimeInterval = true indexInfo.HasUnit = true indexInfo.HasUpdateDate = true indexInfo.IsCreateChart = false indexInfo.IsDataSort = true indexInfo.IsNewSheet = false indexInfo.IsNewWorkbook = false indexInfo.Position = "A1" indexInfo.ShowBlankLines = false indexInfo.StartDate = "" indexInfo.Transpose = false indexInfo.UpdateMode = 1 indexInfo.LookModel.IsLast = false indexInfo.LookModel.LookValue = 0 indexInfo.LookModel.LookType = 0 indexInfo.Ver = 3 } modelsList := make([]IndexModels, 0) startDate := "1990-01-01" updateIndexes := make([]watch.UpdateIndexReq, 0) updateCols := []string{"merge_file_path", "file_index"} modelsList = append(modelsList, indexInfo.Models...) for k, v := range list { fmt.Println(k, v) item := new(IndexModels) item.DataFormat = 0 if v.IndexName == "" { item.DataStartDate = startDate } else { item.DataStartDate = v.StartDate.Format(utils.FormatDate) } item.DefineName = "" item.DefineUnit = "" item.DisplayIndexCode = v.IndexCode item.IndexCode = v.IndexCode item.IndexFormula = v.IndexCode item.PointValue = 0 item.UnionStart = "" modelsList = append(modelsList, *item) // 待更新的指标 var req watch.UpdateIndexReq req.Item = new(index.BaseFromMysteelChemicalIndex) req.Item.BaseFromMysteelChemicalIndexId = v.BaseFromMysteelChemicalIndexId req.Item.IndexCode = v.IndexCode req.Item.MergeFilePath = indexFilePath req.Item.FileIndex = fileIndex req.UpdateCols = updateCols updateIndexes = append(updateIndexes, req) } // 批量更新Index if len(updateIndexes) > 0 { e := watch.MultiUpdateIndex(updateIndexes) if e != nil { fmt.Println("UpdateIndexByIndexCode err: " + e.Error()) return } } indexInfo.Models = modelsList indexStr, err := json.Marshal(indexInfo) if err != nil { fmt.Println("json.Marshal err:" + err.Error()) return } text := string(indexStr) text = strings.Trim(text, "{") commentMap := make(map[string]interface{}) commentMap["author"] = "{" commentMap["text"] = text //commentMap["text"] = commentItem commentJson, err := json.Marshal(commentMap) if err != nil { fmt.Println("json.Marshal err:" + err.Error()) } commentResult = string(commentJson) return } type IndexObj struct { BlankValue string `json:"BlankValue"` CanMark bool `json:"CanMark"` ChartLineType string `json:"ChartLineType"` DateBlock int64 `json:"DateBlock"` DateBlockCount int64 `json:"DateBlockCount"` DateFormat int64 `json:"DateFormat"` DateTimeTag string `json:"DateTimeTag"` EndDate string `json:"EndDate"` ExportType int64 `json:"ExportType"` HasDescription bool `json:"HasDescription"` HasEmptyRows bool `json:"HasEmptyRows"` HasFrequency bool `json:"HasFrequency"` HasIndexID bool `json:"HasIndexID"` HasLastDate bool `json:"HasLastDate"` HasSourceName bool `json:"HasSourceName"` HasTimeInterval bool `json:"HasTimeInterval"` HasUnit bool `json:"HasUnit"` HasUpdateDate bool `json:"HasUpdateDate"` IsCreateChart bool `json:"IsCreateChart"` IsDataSort bool `json:"IsDataSort"` IsNewSheet bool `json:"IsNewSheet"` IsNewWorkbook bool `json:"IsNewWorkbook"` Models []IndexModels `json:"Models"` Position string `json:"Position"` RangeData string `json:"RangeData"` ShowBlankLines bool `json:"ShowBlankLines"` StartDate string `json:"StartDate"` Transpose bool `json:"Transpose"` UpdateMode int64 `json:"UpdateMode"` LookModel struct { IsLast bool `json:"IsLast"` LookValue int64 `json:"LookValue"` LookType int64 `json:"lookType"` } `json:"lookModel"` Ver int64 `json:"ver"` } type IndexModels struct { DataFormat int64 `json:"DataFormat"` DataStartDate string `json:"DataStartDate"` DefineName string `json:"DefineName"` DefineUnit string `json:"DefineUnit"` DisplayIndexCode string `json:"DisplayIndexCode"` IndexCode string `json:"IndexCode"` IndexFormula string `json:"IndexFormula"` PointValue int64 `json:"PointValue"` UnionStart string `json:"UnionStart"` }