base_from_sci.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. package data_manage
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "time"
  7. )
  8. type BaseFromSci struct {
  9. BaseFromSciId int `orm:"column(base_from_sci_id);pk" gorm:"primaryKey"`
  10. Aid int
  11. Name string
  12. Interface string
  13. ApiUpdate int
  14. ApiUpdateType string
  15. ApiType int
  16. ApiTypeAll string
  17. Type1 string `orm:"column(type_1)"`
  18. Type2 string `orm:"column(type_2)"`
  19. Type3 string `orm:"column(type_3)"`
  20. ApiStartTime string
  21. ApiUpdateTime string
  22. StartTime string
  23. FinishTime string
  24. AuthModule string
  25. AuthLang string
  26. ApiLabel string
  27. Enable string
  28. EditPerson string
  29. EditTime string
  30. AuthDur int
  31. AuthDurType string
  32. }
  33. func AddBaseFromSci(item *BaseFromSci) (lastId int64, err error) {
  34. o := global.DbMap[utils.DbNameIndex]
  35. err = o.Create(item).Error
  36. if err != nil {
  37. return
  38. }
  39. lastId = int64(item.BaseFromSciId)
  40. return
  41. }
  42. func GetBaseFromSciList() (list []*BaseFromSci, err error) {
  43. o := global.DbMap[utils.DbNameIndex]
  44. sql := `SELECT * FROM base_from_sci `
  45. err = o.Raw(sql).Find(&list).Error
  46. return
  47. }
  48. func GetBaseFromSciBySciCode(sciCode string) (item *BaseFromSci, err error) {
  49. o := global.DbMap[utils.DbNameIndex]
  50. sql := `SELECT * FROM base_from_sci WHERE interface=?`
  51. err = o.Raw(sql, sciCode).First(&item).Error
  52. return
  53. }
  54. type BaseFromSciIndex struct {
  55. BaseFromSciIndexId int `orm:"column(base_from_sci_index_id);pk" gorm:"primaryKey"`
  56. ClassifyId int
  57. Interface string
  58. IndexCode string
  59. IndexName string
  60. Frequency string
  61. Unit string
  62. Sort int
  63. CreateTime time.Time
  64. ModifyTime time.Time
  65. FilePath string
  66. TerminalCode string `description:"终端编码"`
  67. }
  68. func AddBaseFromSciIndex(item *BaseFromSciIndex) (lastId int64, err error) {
  69. o := global.DbMap[utils.DbNameIndex]
  70. err = o.Create(item).Error
  71. if err != nil {
  72. return
  73. }
  74. lastId = int64(item.BaseFromSciIndexId)
  75. return
  76. }
  77. func GetBaseFromSciIndex() (list []*BaseFromSciIndex, err error) {
  78. o := global.DbMap[utils.DbNameIndex]
  79. sql := `SELECT * FROM base_from_sci_index `
  80. err = o.Raw(sql).Find(&list).Error
  81. return
  82. }
  83. type BaseFromSciData struct {
  84. SciDataId int `orm:"column(sci_data_id);pk" gorm:"primaryKey"`
  85. BaseFromSciIndexId int
  86. IndexCode string
  87. DataTime string
  88. Value string
  89. CreateTime time.Time
  90. ModifyTime time.Time
  91. DataTimestamp int64
  92. }
  93. func AddBaseFromSciData(item *BaseFromSciData) (lastId int64, err error) {
  94. o := global.DbMap[utils.DbNameIndex]
  95. err = o.Create(item).Error
  96. if err != nil {
  97. return
  98. }
  99. lastId = int64(item.SciDataId)
  100. return
  101. }
  102. func GetBaseFromSciDataAll() (list []*BaseFromSciData, err error) {
  103. o := global.DbMap[utils.DbNameIndex]
  104. sql := `SELECT * FROM base_from_sci_data `
  105. err = o.Raw(sql).Find(&list).Error
  106. return
  107. }
  108. func ModifyBaseFromSciData(sciDataId int, value string) (err error) {
  109. o := global.DbMap[utils.DbNameIndex]
  110. sql := `UPDATE base_from_sci_data SET value=?,modify_time=NOW() WHERE sci_data_id=? `
  111. err = o.Exec(sql, value, sciDataId).Error
  112. return
  113. }
  114. func GetBaseFromSciIndexBySciCode(sciCode string) (list []*BaseFromSciIndex, err error) {
  115. o := global.DbMap[utils.DbNameIndex]
  116. sql := ` SELECT * FROM base_from_sci_index WHERE interface=? `
  117. err = o.Raw(sql, sciCode).Find(&list).Error
  118. return
  119. }
  120. func GetBaseFromSciMaxOrMinDate(indexCode string) (min_date, max_date string, err error) {
  121. o := global.DbMap[utils.DbNameIndex]
  122. sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM base_from_sci_data WHERE index_code=? `
  123. err = o.Raw(sql, indexCode).Row().Scan(&min_date, &max_date)
  124. return
  125. }
  126. func ModifyBaseFromSciMinDateAndMaxDate(baseFromSciIndexId int, minDate, maxDate string) (err error) {
  127. o := global.DbMap[utils.DbNameIndex]
  128. sql := ` UPDATE base_from_sci_index SET start_date=?,end_date=?,modify_time=NOW() WHERE base_from_sci_index_id=? `
  129. err = o.Exec(sql, minDate, maxDate, baseFromSciIndexId).Error
  130. return
  131. }
  132. func GetBaseFromSciDataAllByIndexCode(indexCode string) (list []*BaseFromSciData, err error) {
  133. o := global.DbMap[utils.DbNameIndex]
  134. sql := `SELECT * FROM base_from_sci_data WHERE index_code=? `
  135. err = o.Raw(sql, indexCode).Find(&list).Error
  136. return
  137. }
  138. func GetBaseFromSciIndexByIndexCode(indexCode string) (list *BaseFromSciIndex, err error) {
  139. o := global.DbMap[utils.DbNameIndex]
  140. sql := ` SELECT * FROM base_from_sci_index WHERE index_code=? `
  141. err = o.Raw(sql, indexCode).First(&list).Error
  142. return
  143. }
  144. // GetBaseFromSciIndexCountByClassifyIds 获取分类下指标的个数
  145. func GetBaseFromSciIndexCountByClassifyIds(classifyIds []int) (count int, err error) {
  146. o := global.DbMap[utils.DbNameIndex]
  147. num := len(classifyIds)
  148. if num <= 0 {
  149. return
  150. }
  151. sql := `SELECT COUNT(1) AS count FROM base_from_sci_index WHERE classify_id IN (` + utils.GetOrmInReplace(num) + `) `
  152. err = o.Raw(sql, classifyIds).Scan(&count).Error
  153. return
  154. }
  155. // GetBaseFromSciIndexByClassifyId 获取根据分类查询指标
  156. func GetBaseFromSciIndexByClassifyId(classifyId int) (list []*BaseFromSciIndex, err error) {
  157. o := global.DbMap[utils.DbNameIndex]
  158. sql := `SELECT * FROM base_from_sci_index WHERE classify_id =? ORDER BY sort ASC, base_from_sci_index_id ASC `
  159. err = o.Raw(sql, classifyId).Find(&list).Error
  160. return
  161. }
  162. // GetSciIndexAll 用于分类展示
  163. func GetSciIndexAll() (items []*BaseFromSciClassifyItems, err error) {
  164. o := global.DbMap[utils.DbNameIndex]
  165. sql := ` SELECT base_from_sci_index_id, classify_id, index_name as classify_name, index_code as base_from_sci_index_code
  166. FROM base_from_sci_index ORDER BY sort ASC, base_from_sci_index_id ASC `
  167. err = o.Raw(sql).Find(&items).Error
  168. return
  169. }
  170. // GetBaseFromSciIndexByIndexId 根据指标id获取指标信息
  171. func GetBaseFromSciIndexByIndexId(indexId int) (item *BaseFromSciIndex, err error) {
  172. o := global.DbMap[utils.DbNameIndex]
  173. sql := `SELECT * FROM base_from_sci_index WHERE base_from_sci_index_id=? `
  174. err = o.Raw(sql, indexId).First(&item).Error
  175. return
  176. }
  177. // GetBaseFromSciIndexMaxSortByClassifyId 根据指标id获取指标信息
  178. func GetBaseFromSciIndexMaxSortByClassifyId(classifyId int) (sort int, err error) {
  179. o := global.DbMap[utils.DbNameIndex]
  180. sql := `SELECT COALESCE(MAX(sort), 0) AS sort FROM base_from_sci_index WHERE classify_id=? `
  181. err = o.Raw(sql, classifyId).Scan(&sort).Error
  182. return
  183. }
  184. // GetBaseFromSciIndexMinSortByClassifyId 获取最小不等于0的排序
  185. func GetBaseFromSciIndexMinSortByClassifyId(classifyId int) (sort int, err error) {
  186. o := global.DbMap[utils.DbNameIndex]
  187. sql := `SELECT min(sort) FROM base_from_sci_index WHERE classify_id=? and sort <> 0 `
  188. err = o.Raw(sql, classifyId).Scan(&sort).Error
  189. return
  190. }
  191. type BaseFromSciIndexType struct {
  192. Type2 string `orm:"column(type_2)"`
  193. Type3 string `orm:"column(type_3)"`
  194. }
  195. // GetBaseFromSciIndexType 获取历史指标信息类型
  196. func GetBaseFromSciIndexType() (list []BaseFromSciIndexType, err error) {
  197. o := global.DbMap[utils.DbNameIndex]
  198. sql := `SELECT type_2, type_3 from base_from_sci_index where type_2 <> "" GROUP BY type_2, type_3`
  199. err = o.Raw(sql).Find(&list).Error
  200. return
  201. }
  202. // MoveBaseFromSciIndex 移动指标分类
  203. func MoveBaseFromSciIndex(chartInfoId, classifyId int) (err error) {
  204. o := global.DbMap[utils.DbNameIndex]
  205. sql := ` UPDATE base_from_sci_index
  206. SET
  207. classify_id = ?, modify_time=NOW()
  208. WHERE base_from_sci_index_id = ?`
  209. err = o.Exec(sql, classifyId, chartInfoId).Error
  210. return
  211. }
  212. // UpdateBaseFromSciIndexByClassifyId 根据指标id更新排序
  213. func UpdateBaseFromSciIndexByClassifyId(classifyId, nowSort, prevIndexInfoId int, updateSort string) (err error) {
  214. o := global.DbMap[utils.DbNameIndex]
  215. sql := ` update base_from_sci_index set sort = ` + updateSort + ` WHERE classify_id=? AND `
  216. if prevIndexInfoId > 0 {
  217. sql += ` ( sort > ? or (base_from_sci_index_id > ` + fmt.Sprint(prevIndexInfoId) + ` and sort = ` + fmt.Sprint(nowSort) + `))`
  218. }
  219. err = o.Exec(sql, classifyId, nowSort).Error
  220. return
  221. }
  222. // MoveUpSciIndexBySort 往上移动
  223. func MoveUpSciIndexBySort(classifyId, nextSort, currentSort int) (err error) {
  224. o := global.DbMap[utils.DbNameIndex]
  225. sql := `update base_from_sci_index set sort = sort + 1 where classify_id=? and sort >= ? and sort< ?`
  226. err = o.Exec(sql, classifyId, nextSort, currentSort).Error
  227. return
  228. }
  229. // MoveDownSciIndexBySort 往下移动
  230. func MoveDownSciIndexBySort(classifyId, prevSort, currentSort int) (err error) {
  231. o := global.DbMap[utils.DbNameIndex]
  232. sql := `update base_from_sci_index set sort = sort - 1 where classify_id=? and sort <= ? and sort> ? `
  233. err = o.Exec(sql, classifyId, prevSort, currentSort).Error
  234. return
  235. }
  236. // GetFirstBaseFromSciIndexByClassifyId 获取当前分类下,且排序数相同 的排序第一条的数据
  237. func GetFirstBaseFromSciIndexByClassifyId(classifyId int) (item *BaseFromSciIndex, err error) {
  238. o := global.DbMap[utils.DbNameIndex]
  239. sql := ` SELECT * FROM base_from_sci_index WHERE classify_id=? order by sort asc,base_from_sci_index_id asc limit 1`
  240. err = o.Raw(sql, classifyId).First(&item).Error
  241. return
  242. }
  243. // Update 更新Sci指标基础信息
  244. func (item *BaseFromSciIndex) Update(cols []string) (err error) {
  245. o := global.DbMap[utils.DbNameIndex]
  246. err = o.Select(cols).Updates(item).Error
  247. return
  248. }
  249. // DeleteBaseFromSciIndexById 根据指标id删除对应的指标、指标数据
  250. func DeleteBaseFromSciIndexById(sciIndexId int) (err error) {
  251. o := global.DbMap[utils.DbNameIndex]
  252. tx := o.Begin()
  253. if tx.Error != nil {
  254. return tx.Error
  255. }
  256. defer func() {
  257. if err != nil {
  258. _ = tx.Rollback()
  259. } else {
  260. _ = tx.Commit()
  261. }
  262. }()
  263. //删除指标
  264. sql := `DELETE FROM base_from_sci_index WHERE base_from_sci_index_id = ? `
  265. err = tx.Exec(sql, sciIndexId).Error
  266. if err != nil {
  267. return
  268. }
  269. //删除指标数据
  270. sql = `DELETE FROM base_from_sci_data WHERE base_from_sci_index_id = ? `
  271. err = tx.Exec(sql, sciIndexId).Error
  272. if err != nil {
  273. return
  274. }
  275. return
  276. }
  277. // EditSciIndexInfoResp 新增指标的返回
  278. type EditSciIndexInfoResp struct {
  279. BaseFromSciIndexId int `description:"指标ID"`
  280. IndexCode string `description:"指标code"`
  281. }
  282. type SciSingleDataResp struct {
  283. BaseFromSciIndexId int
  284. ClassifyId int
  285. Interface string
  286. Name string
  287. IndexCode string
  288. IndexName string
  289. Frequency string
  290. Unit string
  291. ApiStartTime string
  292. ApiUpdateTime string
  293. StartTime string
  294. FinishTime string
  295. CreateTime string
  296. ModifyTime string
  297. Data []*SciIndexData
  298. }