meeting_probabilities.go 3.8 KB

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