base_from_baiinfo.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. package data_manage
  2. import (
  3. "database/sql"
  4. "eta/eta_api/global"
  5. "eta/eta_api/utils"
  6. "fmt"
  7. "time"
  8. )
  9. type BaseFromBaiinfo struct {
  10. BaseFromBaiinfoId int `orm:"column(base_from_baiinfo_id);pk"`
  11. Aid int
  12. Name string
  13. Interface string
  14. ApiUpdate int
  15. ApiUpdateType string
  16. ApiType int
  17. ApiTypeAll string
  18. Type1 string `orm:"column(type_1)"`
  19. Type2 string `orm:"column(type_2)"`
  20. Type3 string `orm:"column(type_3)"`
  21. ApiStartTime string
  22. ApiUpdateTime string
  23. StartTime string
  24. FinishTime string
  25. AuthModule string
  26. AuthLang string
  27. ApiLabel string
  28. Enable string
  29. EditPerson string
  30. EditTime string
  31. AuthDur int
  32. AuthDurType string
  33. }
  34. func AddBaseFromBaiinfo(item *BaseFromBaiinfo) (lastId int64, err error) {
  35. err = global.DbMap[utils.DbNameIndex].Create(item).Error
  36. return
  37. }
  38. func GetBaseFromBaiinfoList() (list []*BaseFromBaiinfo, err error) {
  39. sql := `SELECT * FROM base_from_baiinfo `
  40. err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&list).Error
  41. return
  42. }
  43. func GetBaseFromBaiinfoByBaiinfoCode(baiinfoCode string) (item *BaseFromBaiinfo, err error) {
  44. sql := `SELECT * FROM base_from_baiinfo WHERE interface=?`
  45. err = global.DbMap[utils.DbNameIndex].Raw(sql, baiinfoCode).First(&item).Error
  46. return
  47. }
  48. type BaseFromBaiinfoIndex struct {
  49. BaseFromBaiinfoIndexId int `orm:"column(base_from_baiinfo_index_id);pk"`
  50. ClassifyId int
  51. Interface string
  52. IndexCode string
  53. IndexName string
  54. Frequency string
  55. Unit string
  56. Sort int
  57. CreateTime time.Time
  58. ModifyTime time.Time
  59. }
  60. func AddBaseFromBaiinfoIndex(item *BaseFromBaiinfoIndex) (lastId int64, err error) {
  61. err = global.DbMap[utils.DbNameIndex].Create(item).Error
  62. lastId = int64(item.BaseFromBaiinfoIndexId)
  63. return
  64. }
  65. func GetBaseFromBaiinfoIndex() (list []*BaseFromBaiinfoIndex, err error) {
  66. sql := `SELECT * FROM base_from_baiinfo_index `
  67. err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&list).Error
  68. return
  69. }
  70. type BaseFromBaiinfoData struct {
  71. BaiinfoDataId int `orm:"column(baiinfo_data_id);pk"`
  72. BaseFromBaiinfoIndexId int
  73. IndexCode string
  74. DataTime string
  75. Value string
  76. CreateTime time.Time
  77. ModifyTime time.Time
  78. DataTimestamp int64
  79. }
  80. func AddBaseFromBaiinfoData(item *BaseFromBaiinfoData) (lastId int64, err error) {
  81. err = global.DbMap[utils.DbNameIndex].Create(item).Error
  82. return
  83. }
  84. func GetBaseFromBaiinfoDataAll() (list []*BaseFromBaiinfoData, err error) {
  85. sql := `SELECT * FROM base_from_baiinfo_data `
  86. err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&list).Error
  87. return
  88. }
  89. func ModifyBaseFromBaiinfoData(baiinfoDataId int, value string) (err error) {
  90. sql := `UPDATE base_from_baiinfo_data SET value=?,modify_time=NOW() WHERE baiinfo_data_id=? `
  91. err = global.DbMap[utils.DbNameIndex].Exec(sql, value, baiinfoDataId).Error
  92. return
  93. }
  94. func GetBaseFromBaiinfoIndexByBaiinfoCode(baiinfoCode string) (list []*BaseFromBaiinfoIndex, err error) {
  95. sql := ` SELECT * FROM base_from_baiinfo_index WHERE interface=? `
  96. err = global.DbMap[utils.DbNameIndex].Raw(sql, baiinfoCode).Find(&list).Error
  97. return
  98. }
  99. //func GetBaseFromBaiinfoMaxOrMinDate(indexCode string) (min_date, max_date string, err error) {
  100. // sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM base_from_baiinfo_data WHERE index_code=? `
  101. // err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).Scan(&min_date, &max_date).Error
  102. // return
  103. //}
  104. func ModifyBaseFromBaiinfoMinDateAndMaxDate(baseFromBaiinfoIndexId int, minDate, maxDate string) (err error) {
  105. sql := ` UPDATE base_from_baiinfo_index SET start_date=?,end_date=?,modify_time=NOW() WHERE base_from_baiinfo_index_id=? `
  106. err = global.DbMap[utils.DbNameIndex].Exec(sql, minDate, maxDate, baseFromBaiinfoIndexId).Error
  107. return
  108. }
  109. func GetBaseFromBaiinfoDataAllByIndexCode(indexCode string) (list []*BaseFromBaiinfoData, err error) {
  110. sql := `SELECT * FROM base_from_baiinfo_data WHERE index_code=? `
  111. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).Find(&list).Error
  112. return
  113. }
  114. func GetBaseFromBaiinfoIndexByIndexCode(indexCode string) (list *BaseFromBaiinfoIndex, err error) {
  115. sql := ` SELECT * FROM base_from_baiinfo_index WHERE index_code=? `
  116. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).First(&list).Error
  117. return
  118. }
  119. // GetBaseFromBaiinfoIndexCountByClassifyIds 获取分类下指标的个数
  120. func GetBaseFromBaiinfoIndexCountByClassifyIds(classifyIds []int) (count int, err error) {
  121. num := len(classifyIds)
  122. if num <= 0 {
  123. return
  124. }
  125. sqlStr := `SELECT COUNT(1) AS count FROM base_from_baiinfo_index WHERE classify_id IN (` + utils.GetOrmInReplace(num) + `) `
  126. var totalNull sql.NullInt64
  127. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, classifyIds).Scan(&totalNull).Error
  128. if !totalNull.Valid {
  129. count = 0
  130. } else {
  131. count = int(totalNull.Int64)
  132. }
  133. return
  134. }
  135. // GetBaseFromBaiinfoIndexByClassifyId 获取根据分类查询指标
  136. func GetBaseFromBaiinfoIndexByClassifyId(classifyId int) (list []*BaseFromBaiinfoIndex, err error) {
  137. sql := `SELECT * FROM base_from_baiinfo_index WHERE classify_id =? ORDER BY sort ASC, base_from_baiinfo_index_id ASC `
  138. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).Find(&list).Error
  139. return
  140. }
  141. // GetBaiinfoIndexAll 用于分类展示
  142. func GetBaiinfoIndexAll() (items []*BaseFromBaiinfoClassifyItems, err error) {
  143. sql := ` SELECT base_from_baiinfo_index_id, classify_id, index_name as classify_name, index_code as base_from_baiinfo_index_code
  144. FROM base_from_baiinfo_index ORDER BY sort ASC, base_from_baiinfo_index_id ASC `
  145. err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&items).Error
  146. return
  147. }
  148. // GetBaseFromBaiinfoIndexByIndexId 根据指标id获取指标信息
  149. func GetBaseFromBaiinfoIndexByIndexId(indexId int) (item *BaseFromBaiinfoIndex, err error) {
  150. sql := `SELECT * FROM base_from_baiinfo_index WHERE base_from_baiinfo_index_id=? `
  151. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexId).First(&item).Error
  152. return
  153. }
  154. // GetBaseFromBaiinfoIndexMaxSortByClassifyId 根据指标id获取指标信息
  155. func GetBaseFromBaiinfoIndexMaxSortByClassifyId(classifyId int) (sort int, err error) {
  156. sqlStr := `SELECT max(sort) FROM base_from_baiinfo_index WHERE classify_id=? `
  157. var totalNull sql.NullInt64
  158. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, classifyId).Scan(&totalNull).Error
  159. if !totalNull.Valid {
  160. sort = 0
  161. } else {
  162. sort = int(totalNull.Int64)
  163. }
  164. return
  165. }
  166. // GetBaseFromBaiinfoIndexMinSortByClassifyId 获取最小不等于0的排序
  167. func GetBaseFromBaiinfoIndexMinSortByClassifyId(classifyId int) (sort int, err error) {
  168. sql := `SELECT min(sort) FROM base_from_baiinfo_index WHERE classify_id=? and sort <> 0 `
  169. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).Scan(&sort).Error
  170. return
  171. }
  172. type BaseFromBaiinfoIndexType struct {
  173. Type2 string `orm:"column(type_2)"`
  174. Type3 string `orm:"column(type_3)"`
  175. }
  176. // GetBaseFromBaiinfoIndexType 获取历史指标信息类型
  177. func GetBaseFromBaiinfoIndexType() (list []BaseFromBaiinfoIndexType, err error) {
  178. sql := `SELECT type_2, type_3 from base_from_baiinfo_index where type_2 <> "" GROUP BY type_2, type_3`
  179. err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&list).Error
  180. return
  181. }
  182. // MoveBaseFromBaiinfoIndex 移动指标分类
  183. func MoveBaseFromBaiinfoIndex(chartInfoId, classifyId int) (err error) {
  184. sql := ` UPDATE base_from_baiinfo_index
  185. SET
  186. classify_id = ?, modify_time=NOW()
  187. WHERE base_from_baiinfo_index_id = ?`
  188. err = global.DbMap[utils.DbNameIndex].Exec(sql, classifyId, chartInfoId).Error
  189. return
  190. }
  191. // UpdateBaseFromBaiinfoIndexByClassifyId 根据指标id更新排序
  192. func UpdateBaseFromBaiinfoIndexByClassifyId(classifyId, nowSort, prevIndexInfoId int, updateSort string) (err error) {
  193. sql := ` update base_from_baiinfo_index set sort = ` + updateSort + ` WHERE classify_id=? AND `
  194. if prevIndexInfoId > 0 {
  195. sql += ` ( sort > ? or (base_from_baiinfo_index_id > ` + fmt.Sprint(prevIndexInfoId) + ` and sort = ` + fmt.Sprint(nowSort) + `))`
  196. }
  197. err = global.DbMap[utils.DbNameIndex].Exec(sql, classifyId, nowSort).Error
  198. return
  199. }
  200. // MoveUpBaiinfoIndexBySort 往上移动
  201. func MoveUpBaiinfoIndexBySort(classifyId, nextSort, currentSort int) (err error) {
  202. sql := `update base_from_baiinfo_index set sort = sort + 1 where classify_id=? and sort >= ? and sort< ?`
  203. err = global.DbMap[utils.DbNameIndex].Exec(sql, classifyId, nextSort, currentSort).Error
  204. return
  205. }
  206. // MoveDownBaiinfoIndexBySort 往下移动
  207. func MoveDownBaiinfoIndexBySort(classifyId, prevSort, currentSort int) (err error) {
  208. sql := `update base_from_baiinfo_index set sort = sort - 1 where classify_id=? and sort <= ? and sort> ? `
  209. err = global.DbMap[utils.DbNameIndex].Exec(sql, classifyId, prevSort, currentSort).Error
  210. return
  211. }
  212. // GetFirstBaseFromBaiinfoIndexByClassifyId 获取当前分类下,且排序数相同 的排序第一条的数据
  213. func GetFirstBaseFromBaiinfoIndexByClassifyId(classifyId int) (item *BaseFromBaiinfoIndex, err error) {
  214. sql := ` SELECT * FROM base_from_baiinfo_index WHERE classify_id=? order by sort asc,base_from_baiinfo_index_id asc limit 1`
  215. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).First(&item).Error
  216. return
  217. }
  218. // Update 更新Baiinfo指标基础信息
  219. func (item *BaseFromBaiinfoIndex) Update(cols []string) (err error) {
  220. err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(item).Error
  221. return
  222. }
  223. // DeleteBaseFromBaiinfoIndexById 根据指标id删除对应的指标、指标数据
  224. func DeleteBaseFromBaiinfoIndexById(baiinfoIndexId int) (err error) {
  225. tx := global.DbMap[utils.DbNameIndex].Begin()
  226. defer func() {
  227. if err != nil {
  228. _ = tx.Rollback()
  229. } else {
  230. _ = tx.Commit()
  231. }
  232. }()
  233. //删除指标
  234. sql := `DELETE FROM base_from_baiinfo_index WHERE base_from_baiinfo_index_id = ? `
  235. err = tx.Exec(sql, baiinfoIndexId).Error
  236. if err != nil {
  237. return
  238. }
  239. //删除指标数据
  240. sql = `DELETE FROM base_from_baiinfo_data WHERE base_from_baiinfo_index_id = ? `
  241. err = tx.Exec(sql, baiinfoIndexId).Error
  242. if err != nil {
  243. return
  244. }
  245. return
  246. }
  247. // EditBaiinfoIndexInfoResp 新增指标的返回
  248. type EditBaiinfoIndexInfoResp struct {
  249. BaseFromBaiinfoIndexId int `description:"指标ID"`
  250. IndexCode string `description:"指标code"`
  251. }
  252. type BaiinfoSingleDataResp struct {
  253. BaseFromBaiinfoIndexId int
  254. ClassifyId int
  255. Interface string
  256. Name string
  257. IndexCode string
  258. IndexName string
  259. Frequency string
  260. Unit string
  261. ApiStartTime string
  262. ApiUpdateTime string
  263. StartTime string
  264. FinishTime string
  265. CreateTime string
  266. ModifyTime string
  267. Data []*BaiinfoIndexData
  268. }