excel_chart_data.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package excel
  2. import (
  3. "eta/eta_chart_lib/global"
  4. "eta/eta_chart_lib/models"
  5. "eta/eta_chart_lib/utils"
  6. "fmt"
  7. "time"
  8. )
  9. type ExcelChartData struct {
  10. //ExcelChartDataId int `orm:"column(excel_chart_data_id);pk"`
  11. ExcelChartDataId int `gorm:"column:excel_chart_data_id;primaryKey"`
  12. ExcelInfoId int `description:"表格id"`
  13. ExcelChartEdbId int `description:"指标ID"`
  14. ChartInfoId int `description:"图表id"`
  15. DataTime string
  16. Value float64
  17. ModifyTime time.Time `description:"修改时间"`
  18. CreateTime time.Time `description:"创建时间"`
  19. DataTimestamp int64
  20. }
  21. func (e *ExcelChartData) TableName() string {
  22. return "excel_chart_data"
  23. }
  24. // 新增
  25. func (e *ExcelChartData) Add() (err error) {
  26. //o := orm.NewOrmUsingDB("data")
  27. //_, err = o.Insert(e)
  28. err = global.DbMap[utils.DbNameIndex].Create(&e).Error
  29. return
  30. }
  31. // 修改
  32. func (e *ExcelChartData) Update(cols []string) (err error) {
  33. //o := orm.NewOrmUsingDB("data")
  34. //_, err = o.Update(e, cols...)
  35. err = global.DbMap[utils.DbNameIndex].Model(&e).Select(cols).Updates(&e).Error
  36. return
  37. }
  38. // 删除
  39. func (e *ExcelChartData) Delete() (err error) {
  40. //o := orm.NewOrmUsingDB("data")
  41. //_, err = o.Delete(e)
  42. err = global.DbMap[utils.DbNameIndex].Delete(&e).Error
  43. return
  44. }
  45. // 查询
  46. func GetExcelChartDataByExcelInfoId(excelInfoId int) (list []*ExcelChartData, err error) {
  47. //o := orm.NewOrmUsingDB("data")
  48. sql := ` SELECT *
  49. FROM excel_chart_data
  50. WHERE excel_info_id=?
  51. ORDER BY excel_chart_edb_id ASC, data_time desc, excel_chart_data_id ASC `
  52. //_, err = o.Raw(sql, excelInfoId).QueryRows(&list)
  53. err = global.DbMap[utils.DbNameIndex].Raw(sql, excelInfoId).Find(&list).Error
  54. return
  55. }
  56. func BatchUpdateChartEdbData(excelInfoId int, excelEdbMap map[int]*ExcelChartEdb, excelDataMap map[int][]*models.EdbDataList) (err error) {
  57. //o, err := orm.NewOrmUsingDB("data").Begin()
  58. o := global.DbMap[utils.DbNameIndex].Begin()
  59. if err != nil {
  60. return
  61. }
  62. defer func() {
  63. if err != nil {
  64. _ = o.Rollback()
  65. } else {
  66. _ = o.Commit()
  67. }
  68. }()
  69. //如果有数据则删除所有的数据
  70. sql := `delete from excel_chart_data where excel_info_id = ?`
  71. //_, err = o.Raw(sql, excelInfoId).Exec()
  72. err = o.Exec(sql, excelInfoId).Error
  73. if err != nil {
  74. return
  75. }
  76. // 图表指标数据入库
  77. addList := make([]*ExcelChartData, 0)
  78. for chartEdbId, dataList := range excelDataMap {
  79. chartEdb, ok := excelEdbMap[chartEdbId]
  80. if !ok {
  81. err = fmt.Errorf("chartEdbId:%d not exist", chartEdbId)
  82. return
  83. }
  84. for _, v := range dataList {
  85. chartData := &ExcelChartData{
  86. ExcelInfoId: chartEdb.ExcelInfoId,
  87. ExcelChartEdbId: chartEdb.ExcelChartEdbId,
  88. ChartInfoId: chartEdb.ChartInfoId,
  89. DataTime: v.DataTime,
  90. Value: v.Value,
  91. DataTimestamp: v.DataTimestamp,
  92. ModifyTime: time.Now(),
  93. CreateTime: time.Now(),
  94. }
  95. addList = append(addList, chartData)
  96. // data信息入库
  97. if len(addList) > 1000 {
  98. //_, err = o.InsertMulti(len(addList), addList)
  99. err = o.CreateInBatches(addList, len(addList)).Error
  100. if err != nil {
  101. return
  102. }
  103. addList = addList[:0]
  104. }
  105. }
  106. }
  107. // data信息入库
  108. if len(addList) > 0 {
  109. //_, err = o.InsertMulti(len(addList), addList)
  110. err = o.CreateInBatches(addList, len(addList)).Error
  111. if err != nil {
  112. return
  113. }
  114. }
  115. return
  116. }
  117. func GetExcelChartDataByChartInfoId(chartInfoId int) (list []*ExcelChartData, err error) {
  118. //o := orm.NewOrmUsingDB("data")
  119. sql := ` SELECT *
  120. FROM excel_chart_Data
  121. WHERE chart_info_id=?
  122. ORDER BY excel_chart_edb_id ASC `
  123. //_, err = o.Raw(sql, chartInfoId).QueryRows(&list)
  124. err = global.DbMap[utils.DbNameIndex].Raw(sql, chartInfoId).Find(&list).Error
  125. return
  126. }