edb_refresh_config.go 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. package edb_refresh
  2. import (
  3. "errors"
  4. "eta/eta_api/global"
  5. "eta/eta_api/utils"
  6. "time"
  7. )
  8. // EdbRefreshConfig
  9. // @Description: 指标的刷新时间配置表
  10. type EdbRefreshConfig struct {
  11. EdbRefreshConfigId int `orm:"column(edb_refresh_config_id);pk" gorm:"primaryKey" `
  12. RefreshFrequency string `description:"刷新频率"`
  13. RefreshFrequencyDay int `description:"具体刷新的日期"`
  14. RefreshTime string `description:"刷新时间"`
  15. RefreshAllData int `description:"是否刷新所有数据,0:否,1:刷新所有数据"`
  16. RefreshDataNum int `description:"刷新单元格数"`
  17. ModifyTime time.Time `description:"最晚一次的更新时间"`
  18. CreateTime time.Time `description:"添加时间"`
  19. }
  20. // Add
  21. // @Description: 添加
  22. // @author: Roc
  23. // @receiver m
  24. // @datetime 2023-12-14 16:11:10
  25. // @param cols []string
  26. // @return err error
  27. func (m *EdbRefreshConfig) Add() (err error) {
  28. if m.EdbRefreshConfigId > 0 {
  29. err = errors.New("该配置已存在")
  30. return
  31. }
  32. err = global.DbMap[utils.DbNameIndex].Create(m).Error
  33. return
  34. }
  35. // Update
  36. // @Description: 更新
  37. // @author: Roc
  38. // @receiver m
  39. // @datetime 2023-12-14 16:11:10
  40. // @param cols []string
  41. // @return err error
  42. func (m *EdbRefreshConfig) Update(cols []string) (err error) {
  43. err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(m).Error
  44. return
  45. }
  46. // Delete
  47. // @Description: 删除
  48. // @author: Roc
  49. // @receiver m
  50. // @datetime 2023-12-14 16:11:10
  51. // @return err error
  52. func (m *EdbRefreshConfig) Delete() (err error) {
  53. sql := ` DELETE FROM edb_refresh_config WHERE edb_refresh_config_id=?`
  54. err = global.DbMap[utils.DbNameIndex].Exec(sql, m.EdbRefreshConfigId).Error
  55. return
  56. }
  57. // GetEdbRefreshConfigListByCondition
  58. // @Description: 根据条件获取刷新配置列表
  59. // @author: Roc
  60. // @datetime 2024-01-08 14:07:10
  61. // @param refreshFrequency string
  62. // @param refreshTime string
  63. // @param refreshFrequencyDay int
  64. // @param refreshAllData int
  65. // @param refreshDataNum int
  66. // @return item *EdbRefreshConfig
  67. // @return err error
  68. func GetEdbRefreshConfigListByCondition(refreshFrequency, refreshTime string, refreshFrequencyDay, refreshAllData, refreshDataNum int) (item *EdbRefreshConfig, err error) {
  69. sql := `SELECT * FROM edb_refresh_config
  70. WHERE refresh_frequency = ? AND refresh_frequency_day = ? AND refresh_time = ? AND refresh_all_data = ? AND refresh_data_num = ? ORDER BY edb_refresh_config_id ASC `
  71. err = global.DbMap[utils.DbNameIndex].Raw(sql, refreshFrequency, refreshFrequencyDay, refreshTime, refreshAllData, refreshDataNum).First(&item).Error
  72. return
  73. }
  74. // SaveEdbRefreshConfig
  75. // @Description: 保存刷新配置
  76. // @author: Roc
  77. // @datetime 2024-01-08 15:13:23
  78. // @param source int
  79. // @param subSource int
  80. // @param sysUserId int
  81. // @param sysUserRealName string
  82. // @param newConfigList []*EdbRefreshConfig
  83. // @param addMapping []*EdbRefreshMapping
  84. // @param edbIdList []int
  85. // @return err error
  86. func SaveEdbRefreshConfig(source, subSource, sysUserId int, sysUserRealName string, newConfigList []*EdbRefreshConfig, addMapping []*EdbRefreshMapping, edbIdList []int) (err error) {
  87. num := len(edbIdList)
  88. if num <= 0 {
  89. return
  90. }
  91. to := global.DbMap[utils.DbNameIndex].Begin()
  92. defer func() {
  93. if err != nil {
  94. _ = to.Rollback()
  95. } else {
  96. _ = to.Commit()
  97. }
  98. }()
  99. for _, v := range newConfigList {
  100. tmpErr := to.Create(v).Error
  101. if tmpErr != nil {
  102. err = tmpErr
  103. return
  104. }
  105. for _, edbId := range edbIdList {
  106. addMapping = append(addMapping, &EdbRefreshMapping{
  107. EdbRefreshMappingId: 0,
  108. Source: source,
  109. SubSource: subSource,
  110. EdbInfoId: edbId,
  111. EdbRefreshConfigId: v.EdbRefreshConfigId,
  112. SysUserId: sysUserId,
  113. SysUserRealName: sysUserRealName,
  114. ModifyTime: time.Now(),
  115. CreateTime: time.Now(),
  116. })
  117. }
  118. }
  119. // 先删除
  120. sql := `DELETE FROM edb_refresh_mapping WHERE source =? AND sub_source =? AND edb_info_id in (` + utils.GetOrmInReplace(num) + `)`
  121. err = to.Exec(sql, source, subSource, edbIdList).Error
  122. // 再写入
  123. if len(addMapping) > 0 {
  124. tmpAddDataList := make([]*EdbRefreshMapping, 0)
  125. i := 0
  126. for _, v := range addMapping {
  127. tmpAddDataList = append(tmpAddDataList, v)
  128. i++
  129. if i >= 500 {
  130. err = to.CreateInBatches(tmpAddDataList, utils.MultiAddNum).Error
  131. if err != nil {
  132. return
  133. }
  134. i = 0
  135. tmpAddDataList = make([]*EdbRefreshMapping, 0)
  136. }
  137. }
  138. if len(tmpAddDataList) > 0 {
  139. err = to.CreateInBatches(tmpAddDataList, utils.MultiAddNum).Error
  140. if err != nil {
  141. return
  142. }
  143. }
  144. }
  145. return
  146. }
  147. // EdbRefreshConfigItem
  148. // @Description: 指标的刷新时间配置项
  149. type EdbRefreshConfigItem struct {
  150. RefreshFrequency string `description:"刷新频率"`
  151. RefreshFrequencyDay int `description:"具体刷新的日期"`
  152. RefreshTime string `description:"刷新时间"`
  153. RefreshAllData int `description:"是否刷新所有数据,0:否,1:刷新所有数据"`
  154. RefreshDataNum int `description:"刷新单元格数"`
  155. }
  156. // GetEdbRefreshConfigListBySourceAndeEdbInfoId
  157. // @Description: 根据来源和指标获取其配置列表
  158. // @author: Roc
  159. // @datetime 2024-01-10 14:18:21
  160. // @param source int
  161. // @param subSource int
  162. // @param edbInfoId int
  163. // @return list []*EdbRefreshDefaultConfig
  164. // @return err error
  165. func GetEdbRefreshConfigListBySourceAndeEdbInfoId(source, subSource, edbInfoId int) (list []*EdbRefreshConfigItem, err error) {
  166. sql := `SELECT a.* FROM edb_refresh_config a
  167. JOIN edb_refresh_mapping b ON a.edb_refresh_config_id = b.edb_refresh_config_id
  168. WHERE b.source = ? AND b.sub_source = ? AND b.edb_info_id = ? ORDER BY a.edb_refresh_config_id ASC `
  169. err = global.DbMap[utils.DbNameIndex].Raw(sql, source, subSource, edbInfoId).Find(&list).Error
  170. return
  171. }
  172. // EdbRefreshConfigAndEdbItem
  173. // @Description: 指标的刷新时间配置项
  174. type EdbRefreshConfigAndEdbItem struct {
  175. RefreshFrequency string `description:"刷新频率"`
  176. RefreshFrequencyDay int `description:"具体刷新的日期"`
  177. RefreshTime string `description:"刷新时间"`
  178. RefreshAllData int `description:"是否刷新所有数据,0:否,1:刷新所有数据"`
  179. RefreshDataNum int `description:"刷新单元格数"`
  180. EdbInfoId int `description:"指标id,如果是数据源(钢联、有色金属)的,那么就是数据源里面的id"`
  181. Source int `description:"来源"`
  182. SubSource int `description:"子来源"`
  183. }
  184. // GetEdbRefreshConfigAndEdbListBySourceAndeEdbInfoId
  185. // @Description: 根据来源和指标获取其配置列表
  186. // @author: Roc
  187. // @datetime 2024-01-10 14:18:21
  188. // @param source int
  189. // @param subSource int
  190. // @param edbInfoId int
  191. // @return list []*EdbRefreshDefaultConfig
  192. // @return err error
  193. func GetEdbRefreshConfigAndEdbListBySourceAndeEdbInfoId(source, subSource int, edbInfoIdList []int) (list []*EdbRefreshConfigAndEdbItem, err error) {
  194. num := len(edbInfoIdList)
  195. if num <= 0 {
  196. return
  197. }
  198. sql := `SELECT a.*,b.source,b.sub_source,b.edb_info_id FROM edb_refresh_config a
  199. JOIN edb_refresh_mapping b ON a.edb_refresh_config_id = b.edb_refresh_config_id
  200. WHERE b.source = ? AND b.sub_source = ? AND b.edb_info_id in (` + utils.GetOrmInReplace(num) + `) ORDER BY a.edb_refresh_config_id ASC `
  201. err = global.DbMap[utils.DbNameIndex].Raw(sql, source, subSource, edbInfoIdList).Find(&list).Error
  202. return
  203. }