base_from_sci.go 11 KB

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