smm_data.go 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444
  1. package data_manage
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/utils"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. )
  7. type SmmClassify struct {
  8. TypeName string `orm:"column(type_name)" description:"分类名称"`
  9. TypeCode string `orm:"column(type_code)" description:"分类名称编码"`
  10. }
  11. //func GetSmmClassify() (items []*SmmClassify, err error) {
  12. // sql := `SELECT CONCAT(type_2,type_3) AS type_name,CONCAT(type_2,'#',type_3) type_code FROM base_from_smm_index GROUP BY CONCAT(type_2,type_3) ORDER BY CONCAT(type_2,type_3) ASC `
  13. // o := orm.NewOrmUsingDB("data")
  14. // o.Raw(sql).QueryRows(&items)
  15. // return
  16. //}
  17. type SmmFrequency struct {
  18. Frequency string `description:"频度"`
  19. }
  20. func GetSmmFrequencyByClassifyId(classifyId int) (items []*GlFrequency, err error) {
  21. //o := orm.NewOrmUsingDB("data")
  22. //sql := ` SELECT frequency FROM base_from_smm_index WHERE classify_id = ? `
  23. //sql += ` GROUP BY frequency ORDER BY frequency ASC `
  24. //_, err = o.Raw(sql, classifyId).QueryRows(&items)
  25. sql := ` SELECT frequency FROM base_from_smm_index WHERE classify_id = ? `
  26. sql += ` GROUP BY frequency ORDER BY frequency ASC `
  27. err = global.DmSQL["data"].Raw(sql, classifyId).Find(&items).Error
  28. return
  29. }
  30. type SmmIndex struct {
  31. BaseFromSmmIndexId int `orm:"column(base_from_smm_index_id);pk"`
  32. Interface string
  33. Name string
  34. IndexCode string
  35. IndexName string
  36. Type1 string `orm:"column(type_1)"`
  37. Type2 string `orm:"column(type_2)"`
  38. Type3 string `orm:"column(type_3)"`
  39. Frequency string
  40. Unit string
  41. ApiStartTime string
  42. ApiUpdateTime string
  43. StartTime string
  44. FinishTime string
  45. CreateTime string
  46. ModifyTime string
  47. IsStop int `description:"是否停更:1:停更,0:未停更"`
  48. EndValue float64 `description:"指标的最新值"`
  49. }
  50. type SmmIndexItem struct {
  51. BaseFromSmmIndexId int `orm:"column(base_from_smm_index_id);pk"`
  52. ClassifyId int
  53. ParentClassifyId int
  54. Interface string
  55. Name string
  56. IndexCode string
  57. IndexName string
  58. Type1 string `orm:"column(type_1)"`
  59. Type2 string `orm:"column(type_2)"`
  60. Type3 string `orm:"column(type_3)"`
  61. Frequency string
  62. Unit string
  63. ApiStartTime string
  64. ApiUpdateTime string
  65. StartTime string
  66. FinishTime string
  67. CreateTime string
  68. ModifyTime string
  69. IsStop int `description:"是否停更:1:停更,0:未停更"`
  70. EndValue float64 `description:"指标的最新值"`
  71. }
  72. func GetSmmIndex(condition string, pars interface{}) (items []*SmmIndex, err error) {
  73. //o := orm.NewOrmUsingDB("data")
  74. //sql := ` SELECT * FROM base_from_smm_index WHERE 1=1 `
  75. //if condition != "" {
  76. // sql += condition
  77. //}
  78. //sql += `ORDER BY sort ASC, base_from_smm_index_id asc`
  79. //_, err = o.Raw(sql, pars).QueryRows(&items)
  80. sql := ` SELECT * FROM base_from_smm_index WHERE 1=1 `
  81. if condition != "" {
  82. sql += condition
  83. }
  84. sql += `ORDER BY sort ASC, base_from_smm_index_id asc`
  85. err = global.DmSQL["data"].Raw(sql, pars).Find(&items).Error
  86. return
  87. }
  88. // GetSmmIndexById
  89. // @Description: 根据id获取指标信息
  90. // @author: Roc
  91. // @datetime 2024-01-10 14:25:26
  92. // @param basFromSmmIndexId int
  93. // @return item *SmmIndex
  94. // @return err error
  95. func GetSmmIndexById(basFromSmmIndexId int) (item *SmmIndex, err error) {
  96. //o := orm.NewOrmUsingDB("data")
  97. //sql := ` SELECT * FROM base_from_smm_index WHERE base_from_smm_index_id = ? `
  98. //err = o.Raw(sql, basFromSmmIndexId).QueryRow(&item)
  99. sql := ` SELECT * FROM base_from_smm_index WHERE base_from_smm_index_id = ? `
  100. err = global.DmSQL["data"].Raw(sql, basFromSmmIndexId).First(&item).Error
  101. return
  102. }
  103. type SmmExportIndex struct {
  104. TypeName string
  105. IndexCode string
  106. IndexName string
  107. Type1 string `orm:"column(type_1)"`
  108. Type2 string `orm:"column(type_2)"`
  109. Type3 string `orm:"column(type_3)"`
  110. Frequency string
  111. Unit string
  112. ModifyTime string
  113. }
  114. //func GetExportSmmIndex(typeCodes []string) (items []*SmmExportIndex, err error) {
  115. // if len(typeCodes) == 0 {
  116. // return
  117. // }
  118. // o := orm.NewOrmUsingDB("data")
  119. // sql := ` SELECT *,CONCAT(type_2, "#", type_3) AS type_name FROM base_from_smm_index WHERE CONCAT(type_2, "#", type_3) IN (` + utils.GetOrmInReplace(len(typeCodes)) + `) ORDER BY frequency ASC,index_code ASC`
  120. // _, err = o.Raw(sql, typeCodes).QueryRows(&items)
  121. // return
  122. //}
  123. func GetSmmFrequency(classifyId int) (items []*string, err error) {
  124. //sql := `SELECT DISTINCT frequency FROM base_from_smm_index WHERE classify_id=? ORDER BY FIELD(frequency,'日度','周度','月度','季度','半年','年度') `
  125. //o := orm.NewOrmUsingDB("data")
  126. //_, err = o.Raw(sql, classifyId).QueryRows(&items)
  127. sql := `SELECT DISTINCT frequency FROM base_from_smm_index WHERE classify_id=? ORDER BY FIELD(frequency,'日度','周度','月度','季度','半年','年度') `
  128. err = global.DmSQL["data"].Raw(sql, classifyId).Find(&items).Error
  129. return
  130. }
  131. func GetSmmFrequencyByCode(code string) (items []*string, err error) {
  132. //sql := `SELECT DISTINCT frequency FROM base_from_smm_index WHERE index_code=? ORDER BY FIELD(frequency,'日度','周度','月度','季度','半年','年度') `
  133. //o := orm.NewOrmUsingDB("data")
  134. //_, err = o.Raw(sql, code).QueryRows(&items)
  135. sql := `SELECT DISTINCT frequency FROM base_from_smm_index WHERE index_code=? ORDER BY FIELD(frequency,'日度','周度','月度','季度','半年','年度') `
  136. err = global.DmSQL["data"].Raw(sql, code).Find(&items).Error
  137. return
  138. }
  139. type SmmIndexList struct {
  140. BaseFromSmmIndexId int `orm:"column(base_from_smm_index_id);pk"`
  141. Interface string
  142. Name string
  143. IndexCode string
  144. IndexName string
  145. Type1 string `orm:"column(type_1)"`
  146. Type2 string `orm:"column(type_2)"`
  147. Type3 string `orm:"column(type_3)"`
  148. Frequency string
  149. Unit string
  150. ApiStartTime string
  151. ApiUpdateTime string
  152. StartTime string
  153. FinishTime string
  154. ModifyTime string
  155. DataList []*SmmIndexData
  156. Paging *paging.PagingItem `description:"分页数据"`
  157. }
  158. type SmmIndexData struct {
  159. Value string `orm:"column(value)" description:"日期"`
  160. DataTime string `orm:"column(data_time)" description:"值"`
  161. }
  162. func GetSmmIndexData(indexCode string, startSize, pageSize int) (items []*SmmIndexData, err error) {
  163. //o := orm.NewOrmUsingDB("data")
  164. //sql := ` SELECT * FROM base_from_smm_data WHERE index_code=? ORDER BY data_time DESC LIMIT ?,? `
  165. //_, err = o.Raw(sql, indexCode, startSize, pageSize).QueryRows(&items)
  166. sql := ` SELECT * FROM base_from_smm_data WHERE index_code=? ORDER BY data_time DESC LIMIT ?,? `
  167. err = global.DmSQL["data"].Raw(sql, indexCode, startSize, pageSize).Find(&items).Error
  168. return
  169. }
  170. func GetSmmIndexDataCount(indexCode string) (count int, err error) {
  171. //o := orm.NewOrmUsingDB("data")
  172. //sql := ` SELECT COUNT(1) AS count FROM base_from_smm_data WHERE index_code=? `
  173. //err = o.Raw(sql, indexCode).QueryRow(&count)
  174. sql := ` SELECT COUNT(1) AS count FROM base_from_smm_data WHERE index_code=? `
  175. err = global.DmSQL["data"].Raw(sql, indexCode).Scan(&count).Error
  176. return
  177. }
  178. // GetSmmItemList 模糊查询Smm数据库指标列表
  179. func GetSmmItemList(keyword string) (items []*SmmIndexItem, err error) {
  180. //o := orm.NewOrmUsingDB("data")
  181. //sql := "SELECT * FROM base_from_smm_index WHERE CONCAT(index_name,index_code) LIKE ? "
  182. //_, err = o.Raw(sql, utils.GetLikeKeyword(keyword)).QueryRows(&items)
  183. sql := "SELECT * FROM base_from_smm_index WHERE CONCAT(index_name,index_code) LIKE ? "
  184. err = global.DmSQL["data"].Raw(sql, utils.GetLikeKeyword(keyword)).Find(&items).Error
  185. return
  186. }
  187. func GetSmmIndexDataByCode(indexCode string) (items []*SmmIndexData, err error) {
  188. //o := orm.NewOrmUsingDB("data")
  189. //sql := ` SELECT * FROM base_from_smm_data WHERE index_code=? ORDER BY data_time DESC `
  190. //_, err = o.Raw(sql, indexCode).QueryRows(&items)
  191. sql := ` SELECT * FROM base_from_smm_data WHERE index_code=? ORDER BY data_time DESC `
  192. err = global.DmSQL["data"].Raw(sql, indexCode).Find(&items).Error
  193. return
  194. }
  195. func GetSmmDataMaxCount(classifyId int) (count int, err error) {
  196. //o := orm.NewOrmUsingDB("data")
  197. //sql := `SELECT MAX(t.num) AS count FROM (
  198. // SELECT COUNT(1) AS num FROM base_from_smm_index AS a
  199. // INNER JOIN base_from_smm_data AS b ON a.index_code=b.index_code
  200. // WHERE a.classify_id=?
  201. // GROUP BY a.base_from_smm_index_id
  202. // )AS t `
  203. //err = o.Raw(sql, classifyId).QueryRow(&count)
  204. sql := `SELECT MAX(t.num) AS count FROM (
  205. SELECT COUNT(1) AS num FROM base_from_smm_index AS a
  206. INNER JOIN base_from_smm_data AS b ON a.index_code=b.index_code
  207. WHERE a.classify_id=?
  208. GROUP BY a.base_from_smm_index_id
  209. )AS t `
  210. err = global.DmSQL["data"].Raw(sql, classifyId).Scan(&count).Error
  211. return
  212. }
  213. type ExportSmmDataMaxCount struct {
  214. TypeName string
  215. Count int
  216. }
  217. //
  218. //func GetExportSmmDataMaxCount(typeCodes []string) (items []*ExportSmmDataMaxCount, err error) {
  219. // if len(typeCodes) == 0 {
  220. // return
  221. // }
  222. // o := orm.NewOrmUsingDB("data")
  223. // sql := ` SELECT
  224. // MAX(t.num) AS count,
  225. // t.type_name
  226. // FROM
  227. // (
  228. // SELECT
  229. // COUNT(1) AS num,
  230. // CONCAT(a.type_2, "#", a.type_3) AS type_name
  231. // FROM
  232. // base_from_smm_index AS a
  233. // INNER JOIN base_from_smm_data AS b ON a.index_code = b.index_code
  234. // WHERE
  235. // CONCAT(a.type_2, "#", a.type_3) IN (` + utils.GetOrmInReplace(len(typeCodes)) + `)
  236. // GROUP BY
  237. // a.base_from_smm_index_id
  238. // ) AS t
  239. // GROUP BY
  240. // type_name `
  241. // _, err = o.Raw(sql, typeCodes).QueryRows(&items)
  242. // return
  243. //}
  244. type ExportSmmIndexData struct {
  245. Value string `orm:"column(value)" description:"日期"`
  246. DataTime string `orm:"column(data_time)" description:"值"`
  247. IndexCode string `orm:"column(index_code)" description:"指标编码"`
  248. }
  249. //
  250. //func GetExportSmmIndexDataByCodes(indexCodes []string) (items []*ExportSmmIndexData, err error) {
  251. // if len(indexCodes) == 0 {
  252. // return
  253. // }
  254. // o := orm.NewOrmUsingDB("data")
  255. // sql := ` SELECT index_code,data_time,value FROM base_from_smm_data WHERE index_code IN (` + utils.GetOrmInReplace(len(indexCodes)) + `) ORDER BY data_time DESC `
  256. // _, err = o.Raw(sql, indexCodes).QueryRows(&items)
  257. // return
  258. //}
  259. // GetSmmBaseInfoList
  260. // @Description: 获取有色数据列表
  261. // @author: Roc
  262. // @datetime 2024-01-10 14:28:29
  263. // @param condition string
  264. // @param pars []interface{}
  265. // @param orderBy string
  266. // @param startSize int
  267. // @param pageSize int
  268. // @return total int
  269. // @return items []*BaseRefreshEdbInfo
  270. // @return err error
  271. func GetSmmBaseInfoList(condition string, pars []interface{}, orderBy string, startSize, pageSize int) (total int, items []*BaseRefreshEdbInfo, err error) {
  272. //o := orm.NewOrmUsingDB("data")
  273. //
  274. //// 数量汇总
  275. //totalSql := ` SELECT count(1) FROM base_from_smm_index WHERE 1=1 `
  276. //if condition != "" {
  277. // totalSql += condition
  278. //}
  279. //err = o.Raw(totalSql, pars).QueryRow(&total)
  280. //if err != nil {
  281. // return
  282. //}
  283. //
  284. //// 列表数据
  285. //sql := ` SELECT base_from_smm_index_id as edb_info_id, classify_id,index_code,index_name,end_date,end_value,frequency,is_stop,terminal_code FROM base_from_smm_index WHERE 1=1 `
  286. //if condition != "" {
  287. // sql += condition
  288. //}
  289. //
  290. //if orderBy != "" {
  291. // sql += ` ORDER BY ` + orderBy
  292. //} else {
  293. // sql += ` ORDER BY base_from_smm_index_id ASC `
  294. //}
  295. //sql += ` LIMIT ?,? `
  296. //
  297. //_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  298. // 数量汇总
  299. totalSql := ` SELECT count(1) FROM base_from_smm_index WHERE 1=1 `
  300. if condition != "" {
  301. totalSql += condition
  302. }
  303. err = global.DmSQL["data"].Raw(totalSql, pars).Scan(&total).Error
  304. if err != nil {
  305. return
  306. }
  307. // 列表数据
  308. sql := ` SELECT base_from_smm_index_id as edb_info_id, classify_id,index_code,index_name,end_date,end_value,frequency,is_stop,terminal_code FROM base_from_smm_index WHERE 1=1 `
  309. if condition != "" {
  310. sql += condition
  311. }
  312. if orderBy != "" {
  313. sql += ` ORDER BY ` + orderBy
  314. } else {
  315. sql += ` ORDER BY base_from_smm_index_id ASC `
  316. }
  317. sql += ` LIMIT ?,? `
  318. err = global.DmSQL["data"].Raw(sql, pars, startSize, pageSize).Find(&items).Error
  319. return
  320. }
  321. // ModifySmmUpdateStatus
  322. // @Description: 修改有色数据停更状态
  323. // @author: Roc
  324. // @datetime 2024-01-08 16:23:31
  325. // @param edbIdList []int
  326. // @param indexCodeList []string
  327. // @param isStop int
  328. // @return err error
  329. func ModifySmmUpdateStatus(edbIdList []int, indexCodeList []string, isStop int) (err error) {
  330. idNum := len(edbIdList)
  331. if idNum <= 0 {
  332. return
  333. }
  334. //o, err := orm.NewOrmUsingDB("data").Begin()
  335. //if err != nil {
  336. // return
  337. //}
  338. //defer func() {
  339. // if err != nil {
  340. // _ = o.Rollback()
  341. // return
  342. // }
  343. // _ = o.Commit()
  344. //}()
  345. to := global.DmSQL["data"].Begin()
  346. defer func() {
  347. if err != nil {
  348. _ = to.Rollback()
  349. } else {
  350. _ = to.Commit()
  351. }
  352. }()
  353. // 更改数据源的更新状态
  354. //sql := ` UPDATE base_from_smm_index SET is_stop = ? WHERE base_from_smm_index_id IN (` + utils.GetOrmInReplace(idNum) + `) `
  355. //_, err = o.Raw(sql, isStop, edbIdList).Exec()
  356. //if err != nil {
  357. // return
  358. //}
  359. sql := ` UPDATE base_from_smm_index SET is_stop = ? WHERE base_from_smm_index_id IN (` + utils.GetOrmInReplace(idNum) + `) `
  360. err = to.Exec(sql, isStop, edbIdList).Error
  361. if err != nil {
  362. return
  363. }
  364. codeNum := len(indexCodeList)
  365. if codeNum <= 0 {
  366. // 需要通过指标id列表查找code列表
  367. //sql := ` SELECT index_code FROM base_from_smm_index WHERE base_from_smm_index_id IN (` + utils.GetOrmInReplace(idNum) + `) `
  368. //_, err = o.Raw(sql, edbIdList).QueryRows(&indexCodeList)
  369. //if err != nil {
  370. // return
  371. //}
  372. sql := ` SELECT index_code FROM base_from_smm_index WHERE base_from_smm_index_id IN (` + utils.GetOrmInReplace(idNum) + `) `
  373. err = to.Raw(sql, edbIdList).Find(&indexCodeList).Error
  374. if err != nil {
  375. return
  376. }
  377. }
  378. codeNum = len(indexCodeList)
  379. // 查出来的编码是空的话,那么就直接返回了
  380. if codeNum <= 0 {
  381. return
  382. }
  383. // 更改指标的更新状态
  384. //sql = ` UPDATE edb_info SET no_update = ? WHERE source = ? AND sub_source= ? AND edb_code IN (` + utils.GetOrmInReplace(codeNum) + `) `
  385. //_, err = o.Raw(sql, isStop, utils.DATA_SOURCE_YS, 0, indexCodeList).Exec()
  386. //if err != nil {
  387. // return
  388. //}
  389. sql = ` UPDATE edb_info SET no_update = ? WHERE source = ? AND sub_source= ? AND edb_code IN (` + utils.GetOrmInReplace(codeNum) + `) `
  390. err = to.Exec(sql, isStop, utils.DATA_SOURCE_YS, 0, indexCodeList).Error
  391. if err != nil {
  392. return
  393. }
  394. return
  395. }