123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- package services
- import (
- "fmt"
- "github.com/rdlucklib/rdluck_tools/paging"
- "github.com/xuri/excelize/v2"
- "eta/mysteel_watch/global"
- "eta/mysteel_watch/utils"
- "eta/mysteel_watch/watch"
- "os"
- "strconv"
- "time"
- )
- const (
- IndexPageSize = 150 //单个Sheet页,指标个数
- )
- // Merge 合并指标
- func MergeV2() {
- fmt.Println("MergeV2 start")
- now := time.Now()
- week := int(now.Weekday())
- //日度
- if week >= 1 && week <= 6 {
- IndexDayMergeV2()
- }
- time.Sleep(1 * time.Minute)
- //周度
- if week >= 3 && week <= 6 {
- IndexWeekMergeV2()
- }
- fmt.Println("MergeV2 end")
- }
- // Merge 合并指标-月度,季度,年度
- func MergeMonthSeasonYearV2() {
- fmt.Println("MergeV2 start")
- //年度
- IndexYearMergeV2()
- //季度
- IndexSeasonMergeV2()
- //月度
- IndexMonthMergeV2()
- fmt.Println("MergeV2 end")
- }
- // IndexDayMerge 日度指标合并
- func IndexDayMergeV2() {
- frequency := "日度"
- filePre := "day"
- startDate := time.Now().AddDate(0, 0, -7).Format(utils.FormatDate)
- endDate := time.Now().Format(utils.FormatDate)
- err := indexMergeV2(frequency, startDate, endDate, filePre)
- if err != nil {
- fmt.Println("合并日度指标失败,err:", err)
- }
- }
- // IndexDayMerge 周度指标合并
- func IndexWeekMergeV2() {
- frequency := "周度"
- filePre := "week"
- startDate := time.Now().AddDate(0, 0, -49).Format(utils.FormatDate)
- endDate := utils.GetNowWeekMonday().Format(utils.FormatDate)
- err := indexMergeV2(frequency, startDate, endDate, filePre)
- if err != nil {
- fmt.Println("合并日度指标失败,err:", err)
- }
- }
- // 年度指标合并
- func IndexYearMergeV2() {
- frequency := "年度"
- filePre := "year"
- startDate := time.Now().AddDate(-7, 0, 0).Format(utils.FormatDate)
- endDate := time.Now().Format(utils.FormatDate)
- err := indexMergeV2(frequency, startDate, endDate, filePre)
- if err != nil {
- fmt.Println("合并年度指标失败,err:", err)
- }
- }
- // 季度指标合并
- func IndexSeasonMergeV2() {
- frequency := "季度"
- filePre := "season"
- startDate := time.Now().AddDate(-2, 0, 0).Format(utils.FormatDate)
- endDate := time.Now().Format(utils.FormatDate)
- err := indexMergeV2(frequency, startDate, endDate, filePre)
- if err != nil {
- fmt.Println("合并年度指标失败,err:", err)
- }
- }
- // 月度指标合并
- func IndexMonthMergeV2() {
- frequency := "月度"
- filePre := "month"
- startDate := time.Now().AddDate(0, -7, 0).Format(utils.FormatDate)
- endDate := time.Now().Format(utils.FormatDate)
- err := indexMergeV2(frequency, startDate, endDate, filePre)
- if err != nil {
- fmt.Println("合并年度指标失败,err:", err)
- }
- }
- // indexMerge 指标合并
- // @params frequency string 频度
- // @params filePre string 文件名前缀
- // @params pageSize int 每个excel表中的指标数量
- func indexMergeV2(frequency, startDate, endDate, filePre string) (err error) {
- firstIndexCount := IndexPageSize //第一个添加的excel表需要的指标数
- frequencyReq := watch.GetMaxFileIndexReq{
- Frequency: frequency,
- EndDate: endDate,
- TerminalCode: global.CONFIG.Serve.TerminalCode,
- }
- // 获取未合并的指标总数量
- total, err := watch.GetIndexCountByFrequencyV2(frequencyReq)
- if err != nil {
- fmt.Println("GetIndexCountByFrequencyV2 Err:" + err.Error())
- return
- }
- //未合并的指标总数量小于等于0,说明没有需要合并的指标
- if total <= 0 {
- return
- }
- fileName := filePre + ".xlsx" //保存的文件名称
- templatePath := global.CONFIG.Serve.IndexSaveDir + "index_template.xlsx"
- templateFile, tmpErr := excelize.OpenFile(templatePath)
- if tmpErr != nil {
- fmt.Println("打开文件失败,Err:" + tmpErr.Error())
- err = tmpErr
- return
- }
- mergeIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName
- if utils.FileIsExist(mergeIndexFilePath) { //修改文件
- err = os.Remove(mergeIndexFilePath)
- if err != nil {
- fmt.Println("os.Remove Err:" + err.Error() + "; mergeIndexFilePath:" + mergeIndexFilePath)
- return err
- }
- }
- // 除去第一个excel表的剩余需要添加的指标数量
- nextTotal := int(total) - firstIndexCount
- // 总文件数
- totalPage := paging.PageCount(nextTotal, IndexPageSize)
- totalPage = totalPage + 1 //需要加上除去在外面的指标(第一张excel)
- fmt.Println("total:", total)
- fmt.Println("totalPage:", totalPage)
- sheetMap := make(map[string]string)
- for i := 1; i <= totalPage; i++ { //sheet
- startSize := paging.StartIndex(i, IndexPageSize)
- // 当下需要合并到excel的指标
- pageList, tmpErr := watch.GetIndexPageByFrequency(frequency, endDate, startSize, IndexPageSize)
- if tmpErr != nil {
- fmt.Println("GetIndexLimitByFrequency Err:" + tmpErr.Error())
- err = tmpErr
- return
- }
- commentResult, tmpErr := GetIndexCommentV3(mergeIndexFilePath, startDate, pageList)
- if tmpErr != nil {
- fmt.Println("GetIndexCommentV2 Err:" + tmpErr.Error())
- err = tmpErr
- return
- }
- fmt.Println("Sheet" + strconv.Itoa(i))
- sheetName := "Sheet" + strconv.Itoa(i)
- sheetMap[sheetName] = sheetName
- if i > 1 {
- templateFile.NewSheet(sheetName)
- }
- templateFile.DeleteComment(sheetName, "A1")
- templateFile.AddComment(sheetName, "A1", commentResult)
- //刷新数据
- //MysteelChemicalRefresh(mergeIndexFilePath)
- //AddIndexRefreshToLpush(mergeIndexFilePath)
- }
- sheetList := templateFile.GetSheetList()
- for _, v := range sheetList {
- if _, ok := sheetMap[v]; !ok {
- templateFile.DeleteSheet(v)
- }
- }
- if err = templateFile.SaveAs(mergeIndexFilePath); err != nil {
- fmt.Println("保存失败,Err:" + err.Error())
- templateFile.Close()
- return
- }
- templateFile.Close()
- time.Sleep(1 * time.Second)
- MysteelChemicalRefresh(mergeIndexFilePath)
- return
- }
|