predict_edb_conf.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package data_manage
  2. import (
  3. "eta/eta_chart_lib/global"
  4. "eta/eta_chart_lib/services/alarm_msg"
  5. "eta/eta_chart_lib/utils"
  6. "time"
  7. )
  8. type PredictEdbConf struct {
  9. //ConfigId int `orm:"column(config_id);pk" description:"规则id"`
  10. //PredictEdbInfoId int `orm:"column(predict_edb_info_id)" description:"预测指标id"`
  11. ConfigId int `gorm:"column:config_id;primaryKey" description:"规则id"`
  12. PredictEdbInfoId int `gorm:"column:predict_edb_info_id" description:"预测指标id"`
  13. SourceEdbInfoId int `description:"来源指标id"`
  14. RuleType int `description:"预测规则,1:最新,2:固定值,3:同比,4:同差,5:环比,6:环差,7:N期移动均值,8:N期段线性外推值"`
  15. FixedValue float64 `description:"固定值"`
  16. Value string `description:"配置的值"`
  17. EndDate time.Time `description:"截止日期"`
  18. ModifyTime time.Time `description:"修改时间"`
  19. CreateTime time.Time `description:"添加时间"`
  20. }
  21. // GetPredictEdbConfById 根据预测指标id获取预测指标配置信息
  22. func GetPredictEdbConfById(edbInfoId int) (item *PredictEdbConf, err error) {
  23. //o := orm.NewOrmUsingDB("data")
  24. sql := ` SELECT * FROM predict_edb_conf WHERE predict_edb_info_id=? `
  25. //err = o.Raw(sql, edbInfoId).QueryRow(&item)
  26. err = global.DbMap[utils.DbNameIndex].Raw(sql, edbInfoId).First(&item).Error
  27. return
  28. }
  29. // GetPredictEdbConfBySourceEdbInfoId 根据来源指标id获取配置
  30. func GetPredictEdbConfBySourceEdbInfoId(sourceEdbInfoId int) (item *PredictEdbConf, err error) {
  31. //o := orm.NewOrmUsingDB("data")
  32. sql := ` SELECT * FROM predict_edb_conf WHERE source_edb_info_id=? `
  33. //err = o.Raw(sql, sourceEdbInfoId).QueryRow(&item)
  34. err = global.DbMap[utils.DbNameIndex].Raw(sql, sourceEdbInfoId).First(&item).Error
  35. return
  36. }
  37. // GetPredictEdbConfCount 根据来源指标id获取被引用的次数
  38. func GetPredictEdbConfCount(sourceEdbInfoId int) (count int, err error) {
  39. //o := orm.NewOrmUsingDB("data")
  40. sql := ` SELECT COUNT(1) AS count FROM predict_edb_conf WHERE source_edb_info_id=? `
  41. //err = o.Raw(sql, sourceEdbInfoId).QueryRow(&count)
  42. err = global.DbMap[utils.DbNameIndex].Raw(sql, sourceEdbInfoId).Scan(&count).Error
  43. return
  44. }
  45. // AddPredictEdbConf 添加预测指标规则
  46. func AddPredictEdbConf(item *PredictEdbConf) (lastId int64, err error) {
  47. //o := orm.NewOrmUsingDB("data")
  48. //lastId, err = o.Insert(item)
  49. err = global.DbMap[utils.DbNameIndex].Create(&item).Error
  50. if err != nil {
  51. return
  52. }
  53. lastId = int64(item.ConfigId)
  54. return
  55. }
  56. // AddPredictEdb 添加预测指标
  57. func AddPredictEdb(item *EdbInfo, predictEdbConf *PredictEdbConf) (err error) {
  58. //o := orm.NewOrmUsingDB("data")
  59. //tx, err := o.Begin()
  60. tx := global.DbMap[utils.DbNameIndex].Begin()
  61. if err != nil {
  62. return
  63. }
  64. defer func() {
  65. if err != nil {
  66. tmpErr := tx.Rollback().Error
  67. if tmpErr != nil {
  68. go alarm_msg.SendAlarmMsg("AddPredictEdb 事务回滚失败,Err:"+tmpErr.Error(), 3)
  69. }
  70. } else {
  71. err = tx.Commit().Error
  72. }
  73. }()
  74. // 新增预测指标
  75. //edbInfoId, err := o.Insert(item)
  76. err = tx.Create(&item).Error
  77. if err != nil {
  78. return
  79. }
  80. //item.EdbInfoId = int(edbInfoId)
  81. // 新增预测指标配置
  82. predictEdbConf.PredictEdbInfoId = item.EdbInfoId
  83. //_, err = o.Insert(predictEdbConf)
  84. err = tx.Create(&predictEdbConf).Error
  85. if err != nil {
  86. return
  87. }
  88. return
  89. }
  90. // EditPredictEdb 修改预测指标
  91. func EditPredictEdb(edbInfo *EdbInfo, predictEdbConf *PredictEdbConf, updateEdbInfoCol, updatePredictEdbConfCol []string) (err error) {
  92. //o := orm.NewOrmUsingDB("data")
  93. //tx, err := o.Begin()
  94. tx := global.DbMap[utils.DbNameIndex].Begin()
  95. if err != nil {
  96. return
  97. }
  98. defer func() {
  99. if err != nil {
  100. tmpErr := tx.Rollback().Error
  101. if tmpErr != nil {
  102. go alarm_msg.SendAlarmMsg("AddPredictEdb 事务回滚失败,Err:"+tmpErr.Error(), 3)
  103. }
  104. } else {
  105. err = tx.Commit().Error
  106. }
  107. }()
  108. // 修改预测指标
  109. //_, err = o.Update(edbInfo, updateEdbInfoCol...)
  110. err = tx.Model(&edbInfo).Select(updateEdbInfoCol).Updates(edbInfo).Error
  111. if err != nil {
  112. return
  113. }
  114. // 修改预测指标配置
  115. //_, err = o.Update(predictEdbConf, updatePredictEdbConfCol...)
  116. err = tx.Model(&predictEdbConf).Select(updatePredictEdbConfCol).Updates(predictEdbConf).Error
  117. if err != nil {
  118. return
  119. }
  120. return
  121. }
  122. // GetPredictEdbInfoAllCalculate 根据基础预测指标id集合 获取 所有的普通指标列表数据
  123. func GetPredictEdbInfoAllCalculate(edbInfoIdList []int) (list []*EdbInfo, err error) {
  124. num := len(edbInfoIdList)
  125. if num <= 0 {
  126. return
  127. }
  128. //o := orm.NewOrmUsingDB("data")
  129. sql := ` SELECT b.* FROM predict_edb_conf AS a
  130. INNER JOIN edb_info AS b ON a.source_edb_info_id=b.edb_info_id
  131. WHERE a.predict_edb_info_id in (` + utils.GetOrmInReplace(num) + `)
  132. GROUP BY a.source_edb_info_id
  133. ORDER BY a.source_edb_info_id ASC `
  134. //_, err = o.Raw(sql, edbInfoIdList).QueryRows(&list)
  135. err = global.DbMap[utils.DbNameIndex].Raw(sql, edbInfoIdList).Find(&list).Error
  136. return
  137. }
  138. // GetPredictEdbConfListById 根据预测指标id获取预测指标配置信息列表
  139. func GetPredictEdbConfListById(edbInfoId int) (items []*PredictEdbConf, err error) {
  140. //o := orm.NewOrmUsingDB("data")
  141. sql := ` SELECT * FROM predict_edb_conf WHERE predict_edb_info_id=? ORDER BY config_id ASC`
  142. //_, err = o.Raw(sql, edbInfoId).QueryRows(&items)
  143. err = global.DbMap[utils.DbNameIndex].Raw(sql, edbInfoId).Find(&items).Error
  144. return
  145. }