predict_edb_conf.go 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. package data_manage
  2. import (
  3. "eta_gn/eta_chart_lib/global"
  4. "eta_gn/eta_chart_lib/services/alarm_msg"
  5. "eta_gn/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. // SourceEdbInfoId int `description:"来源指标id"`
  12. // RuleType int `description:"预测规则,1:最新,2:固定值,3:同比,4:同差,5:环比,6:环差,7:N期移动均值,8:N期段线性外推值"`
  13. // FixedValue float64 `description:"固定值"`
  14. // Value string `description:"配置的值"`
  15. // EndDate time.Time `description:"截止日期"`
  16. // ModifyTime time.Time `description:"修改时间"`
  17. // CreateTime time.Time `description:"添加时间"`
  18. // }
  19. type PredictEdbConf struct {
  20. ConfigId int `gorm:"column:config_id;primaryKey" description:"规则id" orm:"column(config_id);pk"`
  21. PredictEdbInfoId int `gorm:"column:predict_edb_info_id" description:"预测指标id"`
  22. SourceEdbInfoId int `gorm:"column:source_edb_info_id" description:"来源指标id"`
  23. RuleType int `gorm:"column:rule_type" description:"预测规则,1:最新,2:固定值,3:同比,4:同差,5:环比,6:环差,7:N期移动均值,8:N期段线性外推值"`
  24. FixedValue float64 `gorm:"column:fixed_value" description:"固定值"`
  25. Value string `gorm:"column:value" description:"配置的值"`
  26. EndDate time.Time `gorm:"column:end_date" description:"截止日期"`
  27. ModifyTime time.Time `gorm:"column:modify_time" description:"修改时间"`
  28. CreateTime time.Time `gorm:"column:create_time" description:"添加时间"`
  29. }
  30. func (p *PredictEdbConf) TableName() string {
  31. return "predict_edb_conf"
  32. }
  33. // GetPredictEdbConfById 根据预测指标id获取预测指标配置信息
  34. func GetPredictEdbConfById(edbInfoId int) (item *PredictEdbConf, err error) {
  35. o := global.DmSQL["data"]
  36. sql := ` SELECT * FROM predict_edb_conf WHERE predict_edb_info_id=? `
  37. err = o.Raw(sql, edbInfoId).First(&item).Error
  38. return
  39. }
  40. // GetPredictEdbConfBySourceEdbInfoId 根据来源指标id获取配置
  41. func GetPredictEdbConfBySourceEdbInfoId(sourceEdbInfoId int) (item *PredictEdbConf, err error) {
  42. o := global.DmSQL["data"]
  43. sql := ` SELECT * FROM predict_edb_conf WHERE source_edb_info_id=? `
  44. err = o.Raw(sql, sourceEdbInfoId).First(&item).Error
  45. return
  46. }
  47. // GetPredictEdbConfCount 根据来源指标id获取被引用的次数
  48. func GetPredictEdbConfCount(sourceEdbInfoId int) (count int, err error) {
  49. o := global.DmSQL["data"]
  50. sql := ` SELECT COUNT(1) AS count FROM predict_edb_conf WHERE source_edb_info_id=? `
  51. err = o.Raw(sql, sourceEdbInfoId).Scan(&count).Error
  52. return
  53. }
  54. // AddPredictEdbConf 添加预测指标规则
  55. func AddPredictEdbConf(item *PredictEdbConf) (lastId int64, err error) {
  56. o := global.DmSQL["data"]
  57. err = o.Create(item).Error
  58. return
  59. }
  60. // AddPredictEdb 添加预测指标
  61. func AddPredictEdb(item *EdbInfo, predictEdbConf *PredictEdbConf) (err error) {
  62. o := global.DmSQL["data"]
  63. tx := o.Begin()
  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. _ = tx.Commit()
  72. }
  73. }()
  74. // 新增预测指标
  75. err = o.Create(item).Error
  76. if err != nil {
  77. return
  78. }
  79. // 新增预测指标配置
  80. predictEdbConf.PredictEdbInfoId = item.EdbInfoId
  81. err = o.Create(predictEdbConf).Error
  82. if err != nil {
  83. return
  84. }
  85. return
  86. }
  87. // EditPredictEdb 修改预测指标
  88. func EditPredictEdb(edbInfo *EdbInfo, predictEdbConf *PredictEdbConf, updateEdbInfoCol, updatePredictEdbConfCol []string) (err error) {
  89. o := global.DmSQL["data"]
  90. tx := o.Begin()
  91. defer func() {
  92. if err != nil {
  93. tmpErr := tx.Rollback().Error
  94. if tmpErr != nil {
  95. go alarm_msg.SendAlarmMsg("AddPredictEdb 事务回滚失败,Err:"+tmpErr.Error(), 3)
  96. }
  97. } else {
  98. _ = tx.Commit()
  99. }
  100. }()
  101. // 修改预测指标
  102. err = o.Model(edbInfo).Select(updateEdbInfoCol).Updates(edbInfo).Error
  103. if err != nil {
  104. return
  105. }
  106. // 修改预测指标配置
  107. err = o.Model(predictEdbConf).Select(updatePredictEdbConfCol).Updates(predictEdbConf).Error
  108. if err != nil {
  109. return
  110. }
  111. return
  112. }
  113. // GetPredictEdbInfoAllCalculate 根据基础预测指标id集合 获取 所有的普通指标列表数据
  114. func GetPredictEdbInfoAllCalculate(edbInfoIdList []int) (list []*EdbInfo, err error) {
  115. num := len(edbInfoIdList)
  116. if num <= 0 {
  117. return
  118. }
  119. o := global.DmSQL["data"]
  120. sql := ` SELECT b.* FROM predict_edb_conf AS a
  121. INNER JOIN edb_info AS b ON a.source_edb_info_id=b.edb_info_id
  122. WHERE a.predict_edb_info_id in (` + utils.GetGormInReplace(num) + `)
  123. GROUP BY a.source_edb_info_id
  124. ORDER BY a.source_edb_info_id ASC `
  125. err = o.Raw(sql, edbInfoIdList).Scan(&list).Error
  126. return
  127. }
  128. // GetPredictEdbConfListById 根据预测指标id获取预测指标配置信息列表
  129. func GetPredictEdbConfListById(edbInfoId int) (items []*PredictEdbConf, err error) {
  130. o := global.DmSQL["data"]
  131. sql := ` SELECT * FROM predict_edb_conf WHERE predict_edb_info_id=? ORDER BY config_id ASC`
  132. err = o.Raw(sql, edbInfoId).Scan(&items).Error
  133. return
  134. }
  135. // GetPredictEdbConfById 根据预测指标id获取预测指标配置信息
  136. // func GetPredictEdbConfById(edbInfoId int) (item *PredictEdbConf, err error) {
  137. // o := orm.NewOrmUsingDB("data")
  138. // sql := ` SELECT * FROM predict_edb_conf WHERE predict_edb_info_id=? `
  139. // err = o.Raw(sql, edbInfoId).QueryRow(&item)
  140. // return
  141. // }
  142. // // GetPredictEdbConfBySourceEdbInfoId 根据来源指标id获取配置
  143. // func GetPredictEdbConfBySourceEdbInfoId(sourceEdbInfoId int) (item *PredictEdbConf, err error) {
  144. // o := orm.NewOrmUsingDB("data")
  145. // sql := ` SELECT * FROM predict_edb_conf WHERE source_edb_info_id=? `
  146. // err = o.Raw(sql, sourceEdbInfoId).QueryRow(&item)
  147. // return
  148. // }
  149. // // GetPredictEdbConfCount 根据来源指标id获取被引用的次数
  150. // func GetPredictEdbConfCount(sourceEdbInfoId int) (count int, err error) {
  151. // o := orm.NewOrmUsingDB("data")
  152. // sql := ` SELECT COUNT(1) AS count FROM predict_edb_conf WHERE source_edb_info_id=? `
  153. // err = o.Raw(sql, sourceEdbInfoId).QueryRow(&count)
  154. // return
  155. // }
  156. // // AddPredictEdbConf 添加预测指标规则
  157. // func AddPredictEdbConf(item *PredictEdbConf) (lastId int64, err error) {
  158. // o := orm.NewOrmUsingDB("data")
  159. // lastId, err = o.Insert(item)
  160. // return
  161. // }
  162. // // AddPredictEdb 添加预测指标
  163. // func AddPredictEdb(item *EdbInfo, predictEdbConf *PredictEdbConf) (err error) {
  164. // o := orm.NewOrmUsingDB("data")
  165. // tx, err := o.Begin()
  166. // if err != nil {
  167. // return
  168. // }
  169. // defer func() {
  170. // if err != nil {
  171. // tmpErr := tx.Rollback()
  172. // if tmpErr != nil {
  173. // go alarm_msg.SendAlarmMsg("AddPredictEdb 事务回滚失败,Err:"+tmpErr.Error(), 3)
  174. // }
  175. // } else {
  176. // err = tx.Commit()
  177. // }
  178. // }()
  179. // // 新增预测指标
  180. // edbInfoId, err := o.Insert(item)
  181. // if err != nil {
  182. // return
  183. // }
  184. // item.EdbInfoId = int(edbInfoId)
  185. // // 新增预测指标配置
  186. // predictEdbConf.PredictEdbInfoId = item.EdbInfoId
  187. // _, err = o.Insert(predictEdbConf)
  188. // if err != nil {
  189. // return
  190. // }
  191. // return
  192. // }
  193. // // EditPredictEdb 修改预测指标
  194. // func EditPredictEdb(edbInfo *EdbInfo, predictEdbConf *PredictEdbConf, updateEdbInfoCol, updatePredictEdbConfCol []string) (err error) {
  195. // o := orm.NewOrmUsingDB("data")
  196. // tx, err := o.Begin()
  197. // if err != nil {
  198. // return
  199. // }
  200. // defer func() {
  201. // if err != nil {
  202. // tmpErr := tx.Rollback()
  203. // if tmpErr != nil {
  204. // go alarm_msg.SendAlarmMsg("AddPredictEdb 事务回滚失败,Err:"+tmpErr.Error(), 3)
  205. // }
  206. // } else {
  207. // err = tx.Commit()
  208. // }
  209. // }()
  210. // // 修改预测指标
  211. // _, err = o.Update(edbInfo, updateEdbInfoCol...)
  212. // if err != nil {
  213. // return
  214. // }
  215. // // 修改预测指标配置
  216. // _, err = o.Update(predictEdbConf, updatePredictEdbConfCol...)
  217. // if err != nil {
  218. // return
  219. // }
  220. // return
  221. // }
  222. // // GetPredictEdbInfoAllCalculate 根据基础预测指标id集合 获取 所有的普通指标列表数据
  223. // func GetPredictEdbInfoAllCalculate(edbInfoIdList []int) (list []*EdbInfo, err error) {
  224. // num := len(edbInfoIdList)
  225. // if num <= 0 {
  226. // return
  227. // }
  228. // o := orm.NewOrmUsingDB("data")
  229. // sql := ` SELECT b.* FROM predict_edb_conf AS a
  230. // INNER JOIN edb_info AS b ON a.source_edb_info_id=b.edb_info_id
  231. // WHERE a.predict_edb_info_id in (` + utils.GetOrmInReplace(num) + `)
  232. // GROUP BY a.source_edb_info_id
  233. // ORDER BY a.source_edb_info_id ASC `
  234. // _, err = o.Raw(sql, edbInfoIdList).QueryRows(&list)
  235. // return
  236. // }
  237. // // GetPredictEdbConfListById 根据预测指标id获取预测指标配置信息列表
  238. // func GetPredictEdbConfListById(edbInfoId int) (items []*PredictEdbConf, err error) {
  239. // o := orm.NewOrmUsingDB("data")
  240. // sql := ` SELECT * FROM predict_edb_conf WHERE predict_edb_info_id=? ORDER BY config_id ASC`
  241. // _, err = o.Raw(sql, edbInfoId).QueryRows(&items)
  242. // return
  243. // }