edb_info.go 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. package models
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "time"
  6. )
  7. type EdbInfo struct {
  8. EdbInfoId int `orm:"column(edb_info_id);pk"`
  9. SourceName string `description:"来源名称"`
  10. Source int `description:"来源id"`
  11. EdbCode string `description:"指标编码"`
  12. EdbName string `description:"指标名称"`
  13. EdbNameSource string `description:"指标名称来源"`
  14. Frequency string `description:"频率"`
  15. Unit string `description:"单位"`
  16. StartDate string `description:"起始日期"`
  17. EndDate string `description:"终止日期"`
  18. ClassifyId int `description:"分类id"`
  19. SysUserId int
  20. SysUserRealName string
  21. UniqueCode string `description:"指标唯一编码"`
  22. CreateTime time.Time
  23. ModifyTime time.Time
  24. MinValue float64 `description:"指标最小值"`
  25. MaxValue float64 `description:"指标最大值"`
  26. CalculateFormula string `description:"计算公式"`
  27. EdbType int `description:"指标类型:1:基础指标,2:计算指标"`
  28. Sort int `description:"排序字段"`
  29. MoveType int `description:"移动方式:1:领先(默认),2:滞后"`
  30. MoveFrequency string `description:"移动频度"`
  31. }
  32. // AddEdbInfo 添加指标
  33. func AddEdbInfo(item *EdbInfo) (lastId int64, err error) {
  34. o := orm.NewOrm()
  35. lastId, err = o.Insert(item)
  36. return
  37. }
  38. // EdbInfoList 指标数据列表
  39. type EdbInfoList struct {
  40. EdbInfoId int `orm:"column(edb_info_id);pk"`
  41. SourceName string `description:"来源名称"`
  42. Source int `description:"来源id"`
  43. EdbCode string `description:"指标编码"`
  44. EdbName string `description:"指标名称"`
  45. Frequency string `description:"频率"`
  46. Unit string `description:"单位"`
  47. StartDate string `description:"起始日期"`
  48. EndDate string `description:"终止日期"`
  49. ClassifyId int `description:"分类id"`
  50. UniqueCode string `description:"指标唯一编码"`
  51. SysUserId int `description:"创建人id"`
  52. SysUserRealName string `description:"创建人姓名"`
  53. ModifyTime string `description:"最新修改时间"`
  54. EdbNameAlias string `json:"-" description:"指标名称,别名"`
  55. EdbType int `description:"指标类型:1:基础指标,2:计算指标"`
  56. DataList []*EdbData
  57. }
  58. // GetEdbInfoByName 根据指标名称获取所有的指标数据列表
  59. func GetEdbInfoByName(edbName string) (items []*EdbInfoList, err error) {
  60. o := orm.NewOrm()
  61. sql := ` SELECT * FROM edb_info WHERE edb_name=? `
  62. _, err = o.Raw(sql, edbName).QueryRows(&items)
  63. return
  64. }
  65. // ModifyEdbInfoNameSource 根据来源修改指标名称
  66. func ModifyEdbInfoNameSource(edbNameSource string, edbInfoId int) (err error) {
  67. o := orm.NewOrm()
  68. sql := ` UPDATE edb_info SET edb_name_source=? WHERE edb_info_id = ? `
  69. _, err = o.Raw(sql, edbNameSource, edbInfoId).Exec()
  70. return
  71. }
  72. // GetEdbInfoById 根据指标id获取指标信息
  73. func GetEdbInfoById(edbInfoId int) (item *EdbInfo, err error) {
  74. o := orm.NewOrm()
  75. sql := ` SELECT * FROM edb_info WHERE edb_info_id=? `
  76. err = o.Raw(sql, edbInfoId).QueryRow(&item)
  77. return
  78. }
  79. // Update 更新EdbInfo信息
  80. func (edbInfo *EdbInfo) Update(cols []string) (err error) {
  81. o := orm.NewOrm()
  82. _, err = o.Update(edbInfo, cols...)
  83. return
  84. }
  85. // EdbInfoSearchData
  86. type EdbInfoSearchData struct {
  87. EdbDataId int `description:"数据ID"`
  88. DataTime string `description:"数据日期"`
  89. Value float64 `description:"数据"`
  90. }
  91. // GetEdbDataListAll 获取指标数据列表 order:1升序,其余值为降序
  92. func GetEdbDataListAll(condition string, pars []interface{}, source, order int) (item []*EdbInfoSearchData, err error) {
  93. o := orm.NewOrm()
  94. sql := ``
  95. tableName := GetEdbDataTableName(source)
  96. sql = ` SELECT * FROM %s WHERE 1=1 `
  97. sql = fmt.Sprintf(sql, tableName)
  98. if condition != "" {
  99. sql += condition
  100. }
  101. if order == 1 {
  102. sql += ` ORDER BY data_time ASC `
  103. } else {
  104. sql += ` ORDER BY data_time DESC `
  105. }
  106. _, err = o.Raw(sql, pars).QueryRows(&item)
  107. return
  108. }
  109. // EdbInfoMaxAndMinInfo 指标最新数据记录结构体
  110. type EdbInfoMaxAndMinInfo struct {
  111. MinDate string `description:"最小日期"`
  112. MaxDate string `description:"最大日期"`
  113. MinValue float64 `description:"最小值"`
  114. MaxValue float64 `description:"最大值"`
  115. LatestValue float64 `description:"最新值"`
  116. }
  117. // GetEdbInfoMaxAndMinInfo 获取指标的最新数据记录信息
  118. func GetEdbInfoMaxAndMinInfo(source int, edbCode string) (item *EdbInfoMaxAndMinInfo, err error) {
  119. o := orm.NewOrm()
  120. sql := ``
  121. tableName := GetEdbDataTableName(source)
  122. sql = ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM %s WHERE edb_code=? `
  123. sql = fmt.Sprintf(sql, tableName)
  124. err = o.Raw(sql, edbCode).QueryRow(&item)
  125. var latest_value float64
  126. sql = ` SELECT value AS latest_value FROM %s WHERE edb_code=? ORDER BY data_time DESC LIMIT 1 `
  127. sql = fmt.Sprintf(sql, tableName)
  128. err = o.Raw(sql, edbCode).QueryRow(&latest_value)
  129. item.LatestValue = latest_value
  130. return
  131. }
  132. // ModifyEdbInfoMaxAndMinInfo 修改指标的最新数据信息
  133. func ModifyEdbInfoMaxAndMinInfo(edbInfoId int, item *EdbInfoMaxAndMinInfo) (err error) {
  134. o := orm.NewOrm()
  135. sql := ` UPDATE edb_info SET start_date=?,end_date=?,min_value=?,max_value=?,is_update=2,latest_date=?,latest_value=?,modify_time=NOW() WHERE edb_info_id=? `
  136. _, err = o.Raw(sql, item.MinDate, item.MaxDate, item.MinValue, item.MaxValue, item.MaxDate, item.LatestValue, edbInfoId).Exec()
  137. return
  138. }
  139. // GetEdbDataCount 获取edb指标数据的数量; order:1升序,其余值为降序
  140. func GetEdbDataCount(condition string, pars []interface{}, source int) (count int, err error) {
  141. o := orm.NewOrm()
  142. sql := ``
  143. tableName := GetEdbDataTableName(source)
  144. sql = ` SELECT COUNT(1) AS count FROM %s WHERE 1=1 `
  145. sql = fmt.Sprintf(sql, tableName)
  146. if condition != "" {
  147. sql += condition
  148. }
  149. err = o.Raw(sql, pars).QueryRow(&count)
  150. return
  151. }
  152. // GetLastEdbData 获取最近的一条指标数据
  153. func GetLastEdbData(condition string, pars []interface{}, source int) (item *EdbInfoSearchData, err error) {
  154. o := orm.NewOrm()
  155. sql := ``
  156. tableName := GetEdbDataTableName(source)
  157. sql = ` SELECT * FROM %s WHERE 1=1 `
  158. sql = fmt.Sprintf(sql, tableName)
  159. if condition != "" {
  160. sql += condition
  161. }
  162. sql += ` ORDER BY data_time DESC `
  163. err = o.Raw(sql, pars).QueryRow(&item)
  164. return
  165. }
  166. // GetEdbInfoByEdbCode 根据指标code获取指标信息
  167. func GetEdbInfoByEdbCode(source int, edbCode string) (item *EdbInfo, err error) {
  168. o := orm.NewOrm()
  169. sql := ` SELECT * FROM edb_info WHERE source=? AND edb_code=? `
  170. err = o.Raw(sql, source, edbCode).QueryRow(&item)
  171. return
  172. }
  173. // GetEdbInfoCalculateListByCondition 获取指标关系列表
  174. func GetEdbInfoCalculateListByCondition(condition string, pars []interface{}) (items []*EdbInfoCalculateMapping, err error) {
  175. o := orm.NewOrm()
  176. sql := ` SELECT * FROM edb_info_calculate_mapping WHERE 1=1 `
  177. if condition != "" {
  178. sql += condition
  179. }
  180. _, err = o.Raw(sql, pars).QueryRows(&items)
  181. return
  182. }
  183. // GetEdbInfoCalculateCountByCondition 获取关联指标数量
  184. func GetEdbInfoCalculateCountByCondition(condition string, pars []interface{}) (count int, err error) {
  185. o := orm.NewOrm()
  186. sql := ` SELECT COUNT(1) AS count FROM edb_info_calculate_mapping WHERE 1=1 `
  187. if condition != "" {
  188. sql += condition
  189. }
  190. err = o.Raw(sql, pars).QueryRow(&count)
  191. return
  192. }