base_from_sci.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  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. if utils.NeedDateOrTimeFormat(utils.DbDriverName) {
  96. b.DataTime = utils.GormDateStrToDateStr(b.DataTime)
  97. }
  98. return
  99. }
  100. func AddBaseFromSciData(item *BaseFromSciData) (lastId int64, err error) {
  101. o := global.DbMap[utils.DbNameIndex]
  102. err = o.Create(item).Error
  103. if err != nil {
  104. return
  105. }
  106. lastId = int64(item.SciDataId)
  107. return
  108. }
  109. func GetBaseFromSciDataAll() (list []*BaseFromSciData, err error) {
  110. o := global.DbMap[utils.DbNameIndex]
  111. sql := `SELECT * FROM base_from_sci_data `
  112. err = o.Raw(sql).Find(&list).Error
  113. return
  114. }
  115. func ModifyBaseFromSciData(sciDataId int, value string) (err error) {
  116. o := global.DbMap[utils.DbNameIndex]
  117. sql := `UPDATE base_from_sci_data SET value=?,modify_time=NOW() WHERE sci_data_id=? `
  118. err = o.Exec(sql, value, sciDataId).Error
  119. return
  120. }
  121. func GetBaseFromSciIndexBySciCode(sciCode string) (list []*BaseFromSciIndex, err error) {
  122. o := global.DbMap[utils.DbNameIndex]
  123. sql := ` SELECT * FROM base_from_sci_index WHERE interface=? `
  124. err = o.Raw(sql, sciCode).Find(&list).Error
  125. return
  126. }
  127. func GetBaseFromSciMaxOrMinDate(indexCode string) (min_date, max_date string, err error) {
  128. o := global.DbMap[utils.DbNameIndex]
  129. sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM base_from_sci_data WHERE index_code=? `
  130. err = o.Raw(sql, indexCode).Row().Scan(&min_date, &max_date)
  131. return
  132. }
  133. func ModifyBaseFromSciMinDateAndMaxDate(baseFromSciIndexId int, minDate, maxDate string) (err error) {
  134. o := global.DbMap[utils.DbNameIndex]
  135. sql := ` UPDATE base_from_sci_index SET start_date=?,end_date=?,modify_time=NOW() WHERE base_from_sci_index_id=? `
  136. err = o.Exec(sql, minDate, maxDate, baseFromSciIndexId).Error
  137. return
  138. }
  139. func GetBaseFromSciDataAllByIndexCode(indexCode string) (list []*BaseFromSciData, err error) {
  140. o := global.DbMap[utils.DbNameIndex]
  141. sql := `SELECT * FROM base_from_sci_data WHERE index_code=? `
  142. err = o.Raw(sql, indexCode).Find(&list).Error
  143. return
  144. }
  145. func GetBaseFromSciIndexByIndexCode(indexCode string) (list *BaseFromSciIndex, err error) {
  146. o := global.DbMap[utils.DbNameIndex]
  147. sql := ` SELECT * FROM base_from_sci_index WHERE index_code=? `
  148. err = o.Raw(sql, indexCode).First(&list).Error
  149. return
  150. }
  151. // GetBaseFromSciIndexCountByClassifyIds 获取分类下指标的个数
  152. func GetBaseFromSciIndexCountByClassifyIds(classifyIds []int) (count int, err error) {
  153. o := global.DbMap[utils.DbNameIndex]
  154. num := len(classifyIds)
  155. if num <= 0 {
  156. return
  157. }
  158. sql := `SELECT COUNT(1) AS count FROM base_from_sci_index WHERE classify_id IN (` + utils.GetOrmInReplace(num) + `) `
  159. err = o.Raw(sql, classifyIds).Scan(&count).Error
  160. return
  161. }
  162. // GetBaseFromSciIndexByClassifyId 获取根据分类查询指标
  163. func GetBaseFromSciIndexByClassifyId(classifyId int) (list []*BaseFromSciIndex, err error) {
  164. o := global.DbMap[utils.DbNameIndex]
  165. sql := `SELECT * FROM base_from_sci_index WHERE classify_id =? ORDER BY sort ASC, base_from_sci_index_id ASC `
  166. err = o.Raw(sql, classifyId).Find(&list).Error
  167. return
  168. }
  169. // GetSciIndexAll 用于分类展示
  170. func GetSciIndexAll() (items []*BaseFromSciClassifyItems, err error) {
  171. o := global.DbMap[utils.DbNameIndex]
  172. sql := ` SELECT base_from_sci_index_id, classify_id, index_name as classify_name, index_code as base_from_sci_index_code
  173. FROM base_from_sci_index ORDER BY sort ASC, base_from_sci_index_id ASC `
  174. err = o.Raw(sql).Find(&items).Error
  175. return
  176. }
  177. // GetBaseFromSciIndexByIndexId 根据指标id获取指标信息
  178. func GetBaseFromSciIndexByIndexId(indexId int) (item *BaseFromSciIndex, err error) {
  179. o := global.DbMap[utils.DbNameIndex]
  180. sql := `SELECT * FROM base_from_sci_index WHERE base_from_sci_index_id=? `
  181. err = o.Raw(sql, indexId).First(&item).Error
  182. return
  183. }
  184. // GetBaseFromSciIndexMaxSortByClassifyId 根据指标id获取指标信息
  185. func GetBaseFromSciIndexMaxSortByClassifyId(classifyId int) (sort int, err error) {
  186. o := global.DbMap[utils.DbNameIndex]
  187. sql := `SELECT COALESCE(MAX(sort), 0) AS sort FROM base_from_sci_index WHERE classify_id=? `
  188. err = o.Raw(sql, classifyId).Scan(&sort).Error
  189. return
  190. }
  191. // GetBaseFromSciIndexMinSortByClassifyId 获取最小不等于0的排序
  192. func GetBaseFromSciIndexMinSortByClassifyId(classifyId int) (sort int, err error) {
  193. o := global.DbMap[utils.DbNameIndex]
  194. sql := `SELECT min(sort) FROM base_from_sci_index WHERE classify_id=? and sort <> 0 `
  195. err = o.Raw(sql, classifyId).Scan(&sort).Error
  196. return
  197. }
  198. type BaseFromSciIndexType struct {
  199. Type2 string `gorm:"column:type_2"`
  200. Type3 string `gorm:"column:type_3"`
  201. }
  202. // GetBaseFromSciIndexType 获取历史指标信息类型
  203. func GetBaseFromSciIndexType() (list []BaseFromSciIndexType, err error) {
  204. o := global.DbMap[utils.DbNameIndex]
  205. sql := `SELECT type_2, type_3 from base_from_sci_index where type_2 <> "" GROUP BY type_2, type_3`
  206. err = o.Raw(sql).Find(&list).Error
  207. return
  208. }
  209. // MoveBaseFromSciIndex 移动指标分类
  210. func MoveBaseFromSciIndex(chartInfoId, classifyId int) (err error) {
  211. o := global.DbMap[utils.DbNameIndex]
  212. sql := ` UPDATE base_from_sci_index
  213. SET
  214. classify_id = ?, modify_time=NOW()
  215. WHERE base_from_sci_index_id = ?`
  216. err = o.Exec(sql, classifyId, chartInfoId).Error
  217. return
  218. }
  219. // UpdateBaseFromSciIndexByClassifyId 根据指标id更新排序
  220. func UpdateBaseFromSciIndexByClassifyId(classifyId, nowSort, prevIndexInfoId int, updateSort string) (err error) {
  221. o := global.DbMap[utils.DbNameIndex]
  222. sql := ` update base_from_sci_index set sort = ` + updateSort + ` WHERE classify_id=? AND `
  223. if prevIndexInfoId > 0 {
  224. sql += ` ( sort > ? or (base_from_sci_index_id > ` + fmt.Sprint(prevIndexInfoId) + ` and sort = ` + fmt.Sprint(nowSort) + `))`
  225. }
  226. err = o.Exec(sql, classifyId, nowSort).Error
  227. return
  228. }
  229. // MoveUpSciIndexBySort 往上移动
  230. func MoveUpSciIndexBySort(classifyId, nextSort, 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, nextSort, currentSort).Error
  234. return
  235. }
  236. // MoveDownSciIndexBySort 往下移动
  237. func MoveDownSciIndexBySort(classifyId, prevSort, currentSort int) (err error) {
  238. o := global.DbMap[utils.DbNameIndex]
  239. sql := `update base_from_sci_index set sort = sort - 1 where classify_id=? and sort <= ? and sort> ? `
  240. err = o.Exec(sql, classifyId, prevSort, currentSort).Error
  241. return
  242. }
  243. // GetFirstBaseFromSciIndexByClassifyId 获取当前分类下,且排序数相同 的排序第一条的数据
  244. func GetFirstBaseFromSciIndexByClassifyId(classifyId int) (item *BaseFromSciIndex, err error) {
  245. o := global.DbMap[utils.DbNameIndex]
  246. sql := ` SELECT * FROM base_from_sci_index WHERE classify_id=? order by sort asc,base_from_sci_index_id asc limit 1`
  247. err = o.Raw(sql, classifyId).First(&item).Error
  248. return
  249. }
  250. // Update 更新Sci指标基础信息
  251. func (item *BaseFromSciIndex) Update(cols []string) (err error) {
  252. o := global.DbMap[utils.DbNameIndex]
  253. err = o.Select(cols).Updates(item).Error
  254. return
  255. }
  256. // DeleteBaseFromSciIndexById 根据指标id删除对应的指标、指标数据
  257. func DeleteBaseFromSciIndexById(sciIndexId int) (err error) {
  258. o := global.DbMap[utils.DbNameIndex]
  259. tx := o.Begin()
  260. if tx.Error != nil {
  261. return tx.Error
  262. }
  263. defer func() {
  264. if err != nil {
  265. _ = tx.Rollback()
  266. } else {
  267. _ = tx.Commit()
  268. }
  269. }()
  270. //删除指标
  271. sql := `DELETE FROM base_from_sci_index WHERE base_from_sci_index_id = ? `
  272. err = tx.Exec(sql, sciIndexId).Error
  273. if err != nil {
  274. return
  275. }
  276. //删除指标数据
  277. sql = `DELETE FROM base_from_sci_data WHERE base_from_sci_index_id = ? `
  278. err = tx.Exec(sql, sciIndexId).Error
  279. if err != nil {
  280. return
  281. }
  282. return
  283. }
  284. // EditSciIndexInfoResp 新增指标的返回
  285. type EditSciIndexInfoResp struct {
  286. BaseFromSciIndexId int `description:"指标ID"`
  287. IndexCode string `description:"指标code"`
  288. }
  289. type SciSingleDataResp struct {
  290. BaseFromSciIndexId int
  291. ClassifyId int
  292. Interface string
  293. Name string
  294. IndexCode string
  295. IndexName string
  296. Frequency string
  297. Unit string
  298. ApiStartTime string
  299. ApiUpdateTime string
  300. StartTime string
  301. FinishTime string
  302. CreateTime string
  303. ModifyTime string
  304. Data []*SciIndexData
  305. }