index.go 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. package index
  2. import (
  3. "context"
  4. "hongze/mysteel_watch/global"
  5. "hongze/mysteel_watch/models/base"
  6. "hongze/mysteel_watch/utils"
  7. "time"
  8. )
  9. // 钢联化工指标数据
  10. type BaseFromMysteelChemicalIndex struct {
  11. BaseFromMysteelChemicalIndexId int64 `gorm:"primaryKey;column:base_from_mysteel_chemical_index_id;type:int(11);not null" json:"base_from_mysteel_chemical_index_id"` //序号
  12. IndexCode string `gorm:"column:index_code" json:"index_code"`
  13. IndexName string `gorm:"column:index_name" json:"index_name"`
  14. Unit string `gorm:"column:unit" json:"unit"`
  15. Source string `gorm:"column:source" json:"source"`
  16. Frequency string `gorm:"column:frequency" json:"frequency"`
  17. StartDate time.Time `gorm:"column:start_date" json:"start_date"`
  18. EndDate time.Time `gorm:"column:end_date" json:"end_date"`
  19. Describe string `gorm:"column:describe" json:"describe"`
  20. UpdateWeek string `gorm:"column:update_week" json:"update_week"`
  21. UpdateTime string `gorm:"column:update_time" json:"update_time"`
  22. UpdateTime2 string `gorm:"column:update_time2" json:"update_time2"`
  23. SysUserId int `gorm:"column:sys_user_id" json:"sys_user_id"`
  24. SysUserRealName string `gorm:"column:sys_user_real_name" json:"sys_user_real_name"`
  25. FilePath string `gorm:"column:file_path" json:"file_path"`
  26. MergeFilePath string `gorm:"column:merge_file_path" json:"merge_file_path"`
  27. FileIndex int `gorm:"column:file_index" json:"file_index"`
  28. MergeUpdateWeek string `gorm:"column:merge_update_week" json:"merge_update_week"`
  29. UpdateDate string `gorm:"column:update_date" json:"update_date"`
  30. base.TimeBase
  31. }
  32. // TableName get sql table name.获取数据库表名
  33. func (r *BaseFromMysteelChemicalIndex) TableName() string {
  34. return "base_from_mysteel_chemical_index"
  35. }
  36. // 新增
  37. func (r *BaseFromMysteelChemicalIndex) Add(runMod string) (err error) {
  38. if runMod == "release" {
  39. err = global.MYSQL["hzdata"].Create(r).Error
  40. return
  41. } else {
  42. err = global.DEFAULT_MYSQL.Create(r).Error
  43. return
  44. }
  45. }
  46. // 修改
  47. func (r *BaseFromMysteelChemicalIndex) Update(runMod string, updateCols []string) (err error) {
  48. if runMod == "release" {
  49. err = global.MYSQL["hzdata"].Model(r).Where("index_code=?", r.IndexCode).Select(updateCols).Updates(r).Error
  50. return
  51. } else {
  52. err = global.DEFAULT_MYSQL.Model(r).Where("index_code=?", r.IndexCode).Select(updateCols).Updates(r).Error
  53. return
  54. }
  55. }
  56. type IndexAddReq struct {
  57. IndexCode string `json:"IndexCode" binding:"required"` //指标编码
  58. UpdateWeek string `json:"UpdateWeek"` //更新周期
  59. RunMode string `description:"运行环境:debug:测试(默认),release:生产" json:"RunMode"` //更新周期
  60. }
  61. func (d *BaseFromMysteelChemicalIndex) GetIndexItem(runMod, indexCode string) (item *BaseFromMysteelChemicalIndex, err error) {
  62. if runMod == "release" {
  63. err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
  64. Where("index_code = ?", indexCode).First(&item).Error
  65. return
  66. } else {
  67. err = global.DEFAULT_MYSQL.WithContext(context.TODO()).Model(d).
  68. Where("index_code = ?", indexCode).First(&item).Error
  69. return
  70. }
  71. }
  72. type IndexDeleteReq struct {
  73. IndexCode string `json:"IndexCode" binding:"required"` //指标编码
  74. }
  75. func (d *BaseFromMysteelChemicalIndex) GetIndexCreate() (item []*BaseFromMysteelChemicalIndex, err error) {
  76. endTime := time.Now().Add(-2 * time.Minute).Format(utils.FormatDateTime)
  77. err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
  78. Where("index_name = '' AND create_time<=? ", endTime).First(&item).Error
  79. //Where("index_name = '' AND create_time<=? ", endTime).Find(&item).Error
  80. return
  81. }
  82. func (d *BaseFromMysteelChemicalIndex) GetIndexRefreshAll() (item []*BaseFromMysteelChemicalIndex, err error) {
  83. err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).Find(&item).Error
  84. return
  85. }
  86. // GetIndexRefreshAllByMergeFile 根据合并文件去分组查询需要刷新的文件
  87. func (d *BaseFromMysteelChemicalIndex) GetIndexRefreshAllByMergeFile() (item []*BaseFromMysteelChemicalIndex, err error) {
  88. err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).Where("merge_file_path != ? AND base_from_mysteel_chemical_classify_id NOT IN(54,55,56,57) ", "").
  89. Group("merge_file_path").Find(&item).Error
  90. return
  91. }
  92. func (d *BaseFromMysteelChemicalIndex) GetIndexRefreshWeek(nowWeekZn, startTime, endTime string) (item []*BaseFromMysteelChemicalIndex, err error) {
  93. where := `update_week = ? AND ((update_time >=? AND update_time<=?) OR (update_time2 >=? AND update_time2<=?)) `
  94. err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).Where(where, nowWeekZn, startTime, endTime, startTime, endTime).Find(&item).Error
  95. //err = global.DEFAULT_MYSQL.WithContext(context.TODO()).Model(d).Where(where, nowWeekZn, startTime, endTime, startTime, endTime).Find(&item).Error
  96. return
  97. }
  98. func (d *BaseFromMysteelChemicalIndex) GetIndexByFrequency(frequency string) (item []*BaseFromMysteelChemicalIndex, err error) {
  99. err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).Where("frequency=? AND merge_file_path='' ", frequency).Find(&item).Error
  100. return
  101. }
  102. func (d *BaseFromMysteelChemicalIndex) GetIndexByFrequencyCount(frequency string) (total int64, err error) {
  103. err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
  104. Where("frequency=? ", frequency).
  105. Count(&total).Error
  106. return
  107. }
  108. func (d *BaseFromMysteelChemicalIndex) GetIndexByFrequencyPage(frequency string, offset, limit int) (item []*BaseFromMysteelChemicalIndex, err error) {
  109. err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
  110. Where("frequency=? ", frequency).
  111. Offset(offset).
  112. Limit(limit).
  113. Scan(&item).Error
  114. return
  115. }
  116. // GetNoMergeIndexByFrequencyPage 获取未合并的指标列表
  117. func (d *BaseFromMysteelChemicalIndex) GetNoMergeIndexByFrequencyPage(frequency string, limit int) (item []*BaseFromMysteelChemicalIndex, err error) {
  118. err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
  119. Where("frequency=? AND merge_file_path = ?", frequency, "").
  120. //Offset(offset).
  121. Limit(limit).
  122. Scan(&item).Error
  123. return
  124. }
  125. // GetIndexByFrequencyListByMergeFilePath 根据指标频度+合并指标的路径 获取指标列表
  126. func (d *BaseFromMysteelChemicalIndex) GetIndexByFrequencyListByMergeFilePath(frequency, mergeFilePath string) (item []*BaseFromMysteelChemicalIndex, err error) {
  127. err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
  128. Where("frequency=? AND merge_file_path = ?", frequency, mergeFilePath).
  129. Scan(&item).Error
  130. return
  131. }
  132. func (d *BaseFromMysteelChemicalIndex) GetIndexCountByMergeFilePath(mergeFilePath string) (total int64, err error) {
  133. err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
  134. Where("merge_file_path=?", mergeFilePath).
  135. Count(&total).Error
  136. return
  137. }
  138. func (d *BaseFromMysteelChemicalIndex) GetIndexLatestMergeFilePath(frequency string) (item *BaseFromMysteelChemicalIndex, err error) {
  139. err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
  140. Where("frequency=? AND merge_file_path<>'' ", frequency).
  141. Order("ORDER BY base_from_mysteel_chemical_index_id ASC").
  142. First(&item).Error
  143. return
  144. }
  145. type IndexRefreshReq struct {
  146. MergeFilePath string `json:"MergeFilePath" binding:"required"` //指标编码
  147. }
  148. // GetIndexRefreshAllByMergeFile 根据合并文件去分组查询需要刷新的文件
  149. func (d *BaseFromMysteelChemicalIndex) GetIndexRefreshMethanolByMergeFile() (item []*BaseFromMysteelChemicalIndex, err error) {
  150. err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).Where("merge_file_path != ? AND base_from_mysteel_chemical_classify_id IN(54,55,56,57) ", "").
  151. Group("merge_file_path").Find(&item).Error
  152. return
  153. }
  154. // GetIndexRefreshAllByMergeFile 根据合并文件去分组查询需要刷新的文件
  155. func (d *BaseFromMysteelChemicalIndex) GetIndexRefreshMethanolByTimely() (item []*BaseFromMysteelChemicalIndex, err error) {
  156. err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).Where("merge_file_path != ? AND is_refresh=1 ", "").
  157. Group("merge_file_path").Find(&item).Error
  158. return
  159. }