base_from_business_index.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. package data_manage
  2. import (
  3. "database/sql"
  4. "eta/eta_api/global"
  5. "eta/eta_api/utils"
  6. "github.com/rdlucklib/rdluck_tools/paging"
  7. "gorm.io/gorm"
  8. "time"
  9. )
  10. // BaseFromBusinessIndex
  11. // @Description: 外部指标(商家系统)表
  12. type BaseFromBusinessIndex struct {
  13. BaseFromBusinessIndexId int64 `orm:"column(base_from_business_index_id);pk"`
  14. IndexCode string `description:"指标编码"`
  15. IndexName string `description:"指标名称"`
  16. Unit string `description:"单位"`
  17. Frequency string `description:"频度"`
  18. Source int `description:"数据来源"`
  19. SourceName string `description:"数据来源名称"`
  20. StartDate time.Time `description:"开始日期"`
  21. EndDate time.Time `description:"结束日期"`
  22. Remark string `description:"备注字段"`
  23. BaseModifyTime time.Time `description:"基础信息(名称,单位,频度)变更时间"`
  24. DataUpdateTime time.Time `description:"最近一次数据发生变化的时间"`
  25. CreateTime time.Time `description:"创建时间"`
  26. ModifyTime time.Time `description:"修改时间"`
  27. }
  28. var BaseFromBusinessIndexCols = struct {
  29. BaseFromBusinessIndexId string
  30. IndexCode string
  31. IndexName string
  32. Unit string
  33. Frequency string
  34. Source string
  35. SourceName string
  36. StartDate string
  37. EndDate string
  38. Remark string
  39. BaseModifyTime string
  40. DataUpdateTime string
  41. CreateTime string
  42. ModifyTime string
  43. }{
  44. BaseFromBusinessIndexId: "base_from_business_index_id",
  45. IndexCode: "index_code",
  46. IndexName: "index_name",
  47. Unit: "unit",
  48. Frequency: "frequency",
  49. Source: "source",
  50. SourceName: "source_name",
  51. StartDate: "start_date",
  52. EndDate: "end_date",
  53. Remark: "remark",
  54. BaseModifyTime: "base_modify_time",
  55. DataUpdateTime: "data_update_time",
  56. CreateTime: "create_time",
  57. ModifyTime: "modify_time",
  58. }
  59. // EdbBusinessSource
  60. // @Description: 自有数据(商家)指标来源
  61. type EdbBusinessSource struct {
  62. EdbBusinessSourceId int64 `orm:"column(edb_business_source_id);pk"`
  63. SourceName string `description:"来源名称"` // 来源名称
  64. CreateTime time.Time `description:"创建时间"` // 创建时间
  65. }
  66. // GetEdbBusinessSourceItem
  67. // @Description: 根据来源名称获取来源信息
  68. // @author: Roc
  69. // @receiver m
  70. // @datetime 2024-04-25 18:09:03
  71. // @param sourceName string
  72. // @return item *EdbBusinessSource
  73. // @return err error
  74. func (m *EdbBusinessSource) GetEdbBusinessSourceItem(sourceName string) (item *EdbBusinessSource, err error) {
  75. sql := `SELECT * FROM edb_business_source WHERE source_name = ? `
  76. err = global.DbMap[utils.DbNameIndex].Raw(sql, sourceName).First(&item).Error
  77. return
  78. }
  79. // GetAllList
  80. // @Description: 获取所有来源列表
  81. // @author: Roc
  82. // @receiver m
  83. // @datetime 2024-05-06 09:21:42
  84. // @return items []*EdbBusinessSource
  85. // @return err error
  86. func (m *EdbBusinessSource) GetAllList() (items []*EdbBusinessSource, err error) {
  87. sql := `SELECT * FROM edb_business_source order by edb_business_source_id desc `
  88. err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&items).Error
  89. return
  90. }
  91. // GetListCount
  92. // @Description: 根据条件获取列表页的总数量
  93. // @author: Roc
  94. // @receiver m
  95. // @datetime 2024-05-06 17:15:28
  96. // @param condition string
  97. // @param pars []interface{}
  98. // @return count int
  99. // @return err error
  100. func (m *BaseFromBusinessIndex) GetListCount(condition string, pars []interface{}) (count int, err error) {
  101. sqlStr := ` select count(1) as count FROM base_from_business_index as a WHERE 1=1 `
  102. if condition != "" {
  103. sqlStr += condition
  104. }
  105. var totalNull sql.NullInt64
  106. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, pars...).Scan(&totalNull).Error
  107. if !totalNull.Valid {
  108. count = 0
  109. } else {
  110. count = int(totalNull.Int64)
  111. }
  112. return
  113. }
  114. // GetList
  115. // @Description: 根据条件获取列表页的数据
  116. // @author: Roc
  117. // @receiver m
  118. // @datetime 2024-05-06 17:15:42
  119. // @param condition string
  120. // @param pars []interface{}
  121. // @param startSize int
  122. // @param pageSize int
  123. // @return items []*BaseFromBusinessIndex
  124. // @return err error
  125. func (m *BaseFromBusinessIndex) GetList(condition string, pars []interface{}, startSize, pageSize int) (items []*BaseFromBusinessIndex, err error) {
  126. sql := `select * FROM base_from_business_index AS a WHERE 1=1 `
  127. if condition != "" {
  128. sql += condition
  129. }
  130. sql += ` order by a.base_from_business_index_id desc limit ?,? `
  131. pars = append(pars, startSize, pageSize)
  132. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).Find(&items).Error
  133. return
  134. }
  135. // BusinessIndexListResp
  136. // @Description: 外部(商家)指标列表返回
  137. type BusinessIndexListResp struct {
  138. List []*BaseFromBusinessIndexItem
  139. Paging *paging.PagingItem `description:"分页数据"`
  140. }
  141. // BaseFromBusinessIndexItem
  142. // @Description: 外部指标(商家系统)结构
  143. type BaseFromBusinessIndexItem struct {
  144. BaseFromBusinessIndexId int64 `orm:"column(base_from_business_index_id);pk"`
  145. IndexCode string `description:"指标编码"`
  146. IndexName string `description:"指标名称"`
  147. Unit string `description:"单位"`
  148. Frequency string `description:"频度"`
  149. Source int `description:"数据来源"`
  150. SourceName string `description:"数据来源名称"`
  151. StartDate string `description:"开始日期"`
  152. EndDate string `description:"结束日期"`
  153. Remark string `description:"备注字段"`
  154. BaseModifyTime string `description:"基础信息(名称,单位,频度)变更时间"`
  155. DataUpdateTime string `description:"最近一次数据发生变化的时间"`
  156. CreateTime string `description:"创建时间"`
  157. ModifyTime string `description:"修改时间"`
  158. EdbInfoId int `description:"eta指标库的id"`
  159. EdbUniqueCode string `description:"指标库唯一编码"`
  160. EdbClassifyId int `description:"指标库分类ID"`
  161. EdbExist int `description:"指标库是否已添加:0-否;1-是"`
  162. }
  163. func (obj *BaseFromBusinessIndexItem) AfterFind(tx *gorm.DB) (err error) {
  164. if utils.NeedDateOrTimeFormat(utils.DbDriverName) {
  165. if obj.CreateTime != "" {
  166. obj.CreateTime = utils.GormDateStrToDateTimeStr(obj.CreateTime)
  167. }
  168. if obj.ModifyTime != "" {
  169. obj.ModifyTime = utils.GormDateStrToDateTimeStr(obj.ModifyTime)
  170. }
  171. if obj.DataUpdateTime != "" {
  172. obj.DataUpdateTime = utils.GormDateStrToDateTimeStr(obj.DataUpdateTime)
  173. }
  174. if obj.BaseModifyTime != "" {
  175. obj.BaseModifyTime = utils.GormDateStrToDateTimeStr(obj.BaseModifyTime)
  176. }
  177. if obj.StartDate != "" {
  178. obj.StartDate = utils.GormDateStrToDateStr(obj.StartDate)
  179. }
  180. if obj.EndDate != "" {
  181. obj.EndDate = utils.GormDateStrToDateStr(obj.EndDate)
  182. }
  183. }
  184. return
  185. }
  186. func (m *BaseFromBusinessIndex) GetPageItemsByCondition(condition string, pars []interface{}, orderRule string, startSize, pageSize int) (items []*BaseFromBusinessIndexItem, err error) {
  187. sql := `select a.*,b.edb_info_id,b.unique_code as edb_unique_code,b.classify_id as edb_classify_id FROM base_from_business_index AS a LEFT JOIN edb_info b on a.index_code=b.edb_code AND b.source=? WHERE 1=1 `
  188. if condition != "" {
  189. sql += condition
  190. }
  191. if orderRule == `` {
  192. sql += ` order by a.base_from_business_index_id desc`
  193. } else {
  194. sql += ` order by ` + orderRule
  195. }
  196. sql += ` limit ?,? `
  197. pars = utils.ForwardPars(pars, utils.DATA_SOURCE_BUSINESS)
  198. pars = append(pars, startSize, pageSize)
  199. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).Find(&items).Error
  200. return
  201. }
  202. // GeItemsByCondition
  203. // @Description: 根据条件获取指定数量的指标
  204. // @author: Roc
  205. // @receiver m
  206. // @datetime 2024-05-06 17:16:02
  207. // @param condition string
  208. // @param pars []interface{}
  209. // @param limitSize int
  210. // @return items []*BaseFromBusinessIndexItem
  211. // @return err error
  212. func (m *BaseFromBusinessIndex) GeItemsByCondition(condition string, pars []interface{}, limitSize int) (items []*BaseFromBusinessIndexItem, err error) {
  213. if pars == nil {
  214. pars = make([]interface{}, 0)
  215. }
  216. sql := `select a.*,b.edb_info_id,b.unique_code as edb_unique_code,b.classify_id as edb_classify_id FROM base_from_business_index AS a LEFT JOIN edb_info b on a.index_code=b.edb_code AND b.source=? WHERE 1=1 `
  217. if condition != "" {
  218. sql += condition
  219. }
  220. sql += ` order by a.base_from_business_index_id desc `
  221. if limitSize > 0 {
  222. sql += " limit ? "
  223. pars = append(pars, limitSize)
  224. }
  225. pars = utils.ForwardPars(pars, utils.DATA_SOURCE_BUSINESS)
  226. //err = global.DbMap[utils.DbNameIndex].Raw(sql, utils.DATA_SOURCE_BUSINESS, pars).Find(&items).Error
  227. //pars = utils.ForwardPars(pars, utils.DATA_SOURCE_BUSINESS)
  228. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).Find(&items).Error
  229. return
  230. }
  231. // GetDetailByEdbCode
  232. // @Description: 根据edbCode获取指标详情
  233. // @author: Roc
  234. // @receiver m
  235. // @datetime 2024-05-07 11:00:07
  236. // @param edbCode string
  237. // @return item *BaseFromBusinessIndex
  238. // @return err error
  239. func (m *BaseFromBusinessIndex) GetDetailByEdbCode(edbCode string) (item *BaseFromBusinessIndex, err error) {
  240. sql := `select * FROM base_from_business_index WHERE index_code = ? `
  241. err = global.DbMap[utils.DbNameIndex].Raw(sql, edbCode).Find(&item).Error
  242. return
  243. }
  244. // BusinessIndexDataListResp
  245. // @Description: 外部(商家)指标数据列表返回
  246. type BusinessIndexDataListResp struct {
  247. List []*BaseFromBusinessIndexDataItem
  248. Paging *paging.PagingItem `description:"分页数据"`
  249. }
  250. // BaseFromBusinessIndexDataItem
  251. // @Description: 外部指标(商家系统)数据结构
  252. type BaseFromBusinessIndexDataItem struct {
  253. ID string
  254. EdbDataId int `orm:"column(edb_data_id);pk"`
  255. IndexCode string
  256. DataTime string
  257. Value float64
  258. }