meeting_probabilities.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. package services
  2. import (
  3. "context"
  4. "encoding/json"
  5. "eta/eta_crawler/models"
  6. "eta/eta_crawler/utils"
  7. "fmt"
  8. "github.com/xuri/excelize/v2"
  9. "time"
  10. )
  11. func RefreshMeetingProbabilities(cont context.Context) (err error) {
  12. templatePath := "/home/code/python/meeting_probabilities/file/%s.xlsx"
  13. templatePath = fmt.Sprintf(templatePath, time.Now().Format(utils.FormatDate))
  14. fmt.Println(templatePath)
  15. f, tmpErr := excelize.OpenFile(templatePath)
  16. if tmpErr != nil {
  17. fmt.Println("打开文件失败,Err:" + tmpErr.Error())
  18. err = tmpErr
  19. return
  20. }
  21. defer func() {
  22. // 关闭工作簿
  23. if err := f.Close(); err != nil {
  24. fmt.Println(err)
  25. }
  26. }()
  27. // 获取工作表中指定单元格的值
  28. cell, err := f.GetCellValue("MEETING PROBABILITIES", "B5")
  29. if err != nil {
  30. fmt.Println(err)
  31. return
  32. }
  33. fmt.Println(cell)
  34. // 获取 Sheet1 上所有单元格
  35. rows, err := f.GetRows("MEETING PROBABILITIES")
  36. if err != nil {
  37. fmt.Println(err)
  38. return
  39. }
  40. minCowLength := 60
  41. minRowlength := 84
  42. realCowLength := minCowLength
  43. realRowLength := minRowlength
  44. data := make([][]interface{}, 0)
  45. var null []struct{}
  46. cellData := make([]models.ISheetCellData, 0)
  47. var tmpCt models.ISheetDataCt
  48. tmpCt.Fa = "General"
  49. tmpCt.T = "g"
  50. for r, row := range rows {
  51. lenCow := len(row)
  52. var dataRow []interface{}
  53. for c, colCell := range row {
  54. if colCell == "" {
  55. dataRow = append(dataRow, null)
  56. } else {
  57. var tmp models.ISheetData
  58. tmp.M = colCell
  59. tmp.Ct = tmpCt
  60. tmp.V = colCell
  61. dataRow = append(dataRow, tmp)
  62. var tmpS models.ISheetCellData
  63. tmpS.R = r
  64. tmpS.C = c
  65. tmpS.V = tmp
  66. cellData = append(cellData, tmpS)
  67. }
  68. fmt.Print(colCell, "\t")
  69. }
  70. if lenCow < minCowLength {
  71. lastCow := minCowLength - lenCow
  72. for i := 0; i < lastCow; i++ {
  73. dataRow = append(dataRow, null)
  74. }
  75. }
  76. realCowLength = len(dataRow)
  77. data = append(data, dataRow)
  78. }
  79. lenRow := len(rows)
  80. //补充剩余的单元格
  81. if lenRow < minRowlength {
  82. lastRow := minRowlength - lenRow
  83. for i := 0; i < lastRow; i++ {
  84. var dataRow []interface{}
  85. for j := 0; j < minCowLength; j++ {
  86. dataRow = append(dataRow, null)
  87. }
  88. data = append(data, dataRow)
  89. }
  90. }
  91. realRowLength = len(data)
  92. //visibleDataRow
  93. var visibleDataRow []int
  94. tmpVdr := 0
  95. for i := 1; i <= realRowLength; i++ {
  96. tmpVdr = i * 20
  97. visibleDataRow = append(visibleDataRow, tmpVdr)
  98. }
  99. var visibleDataColumn []int
  100. tmpVdr = 0
  101. for i := 1; i <= realCowLength; i++ {
  102. tmpVdr = i * 74
  103. visibleDataColumn = append(visibleDataColumn, tmpVdr)
  104. }
  105. sheet := new(models.ISheet)
  106. sheet.ScrollTop = 0
  107. sheet.ScrollLeft = 0
  108. sheet.Index = "Sheet_pekSifat0Kci_1694244624851"
  109. sheet.Status = 1
  110. sheet.JfGirdSelectSave = []struct{}{}
  111. sheet.LuckySheetSelectSave = []struct{}{}
  112. sheet.Data = data
  113. sheet.Config = make(map[string]struct{}, 0)
  114. sheet.VisibleDataRow = visibleDataRow
  115. sheet.VisibleDataColumn = visibleDataColumn
  116. sheet.ChWidth = 4560
  117. sheet.RhHeight = 1760
  118. sheet.LuckySheetSelectionRange = make([]int, 0)
  119. sheet.ZoomRatio = 1
  120. sheet.CellData = cellData
  121. var content []byte
  122. content, err = json.Marshal(sheet)
  123. if err != nil {
  124. return
  125. }
  126. var req models.AddExcelInfoReq
  127. excelInfo := &models.MeetingProbabilities{
  128. //MeetingInfoId: 0,
  129. Content: string(content),
  130. ExcelImage: req.ExcelImage,
  131. DateTime: time.Now().Format(utils.FormatDate),
  132. IsDelete: 0,
  133. ModifyTime: time.Now(),
  134. CreateTime: time.Now(),
  135. }
  136. err = models.AddMeetingProbabilities(excelInfo)
  137. return
  138. }