query.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411
  1. package edb_data
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_yb/global"
  6. "hongze/hongze_yb/utils"
  7. "strconv"
  8. "time"
  9. )
  10. // 指标数据->存储表
  11. func GetEdbDataTableName(source int) (tableName string) {
  12. switch source {
  13. case utils.DATA_SOURCE_THS:
  14. tableName = "edb_data_ths"
  15. case utils.DATA_SOURCE_WIND:
  16. tableName = "edb_data_wind"
  17. case utils.DATA_SOURCE_PB:
  18. tableName = "edb_data_pb"
  19. case utils.DATA_SOURCE_CALCULATE:
  20. tableName = "edb_data_calculate"
  21. case utils.DATA_SOURCE_CALCULATE_LJZZY:
  22. tableName = "edb_data_calculate_ljzzy"
  23. case utils.DATA_SOURCE_CALCULATE_TBZ:
  24. tableName = "edb_data_calculate_tbz"
  25. case utils.DATA_SOURCE_CALCULATE_TCZ:
  26. tableName = "edb_data_calculate_tcz"
  27. case utils.DATA_SOURCE_CALCULATE_NSZYDPJJS:
  28. tableName = "edb_data_calculate_nszydpjjs"
  29. case utils.DATA_SOURCE_MANUAL:
  30. tableName = "edb_data_manual"
  31. case utils.DATA_SOURCE_LZ:
  32. tableName = "edb_data_lz"
  33. case utils.DATA_SOURCE_YS:
  34. tableName = "edb_data_ys"
  35. case utils.DATA_SOURCE_CALCULATE_HBZ:
  36. tableName = "edb_data_calculate_hbz"
  37. case utils.DATA_SOURCE_CALCULATE_HCZ:
  38. tableName = "edb_data_calculate_hcz"
  39. case utils.DATA_SOURCE_CALCULATE_BP:
  40. tableName = "edb_data_calculate_bp"
  41. case utils.DATA_SOURCE_GL:
  42. tableName = "edb_data_gl"
  43. case utils.DATA_SOURCE_ZZ:
  44. tableName = "edb_data_zz"
  45. case utils.DATA_SOURCE_DL:
  46. tableName = "edb_data_dl"
  47. case utils.DATA_SOURCE_SH:
  48. tableName = "edb_data_sh"
  49. case utils.DATA_SOURCE_CFFEX:
  50. tableName = "edb_data_cffex"
  51. case utils.DATA_SOURCE_SHFE:
  52. tableName = "edb_data_ine"
  53. case utils.DATA_SOURCE_GIE:
  54. tableName = "edb_data_gie"
  55. case utils.DATA_SOURCE_CALCULATE_ZJPJ:
  56. tableName = "edb_data_calculate_zjpj"
  57. case utils.DATA_SOURCE_CALCULATE_TIME_SHIFT:
  58. tableName = "edb_data_calculate_time_shift"
  59. case utils.DATA_SOURCE_CALCULATE_LJZTBPJ:
  60. tableName = "edb_data_calculate_ljztbpj"
  61. case utils.DATA_SOURCE_LT:
  62. tableName = "edb_data_lt"
  63. default:
  64. tableName = ""
  65. }
  66. return
  67. }
  68. type EdbDataList struct {
  69. EdbDataId int `description:" 指标数据ID"`
  70. EdbInfoId int `description:"指标ID"`
  71. DataTime string `json:"-" description:"数据日期"`
  72. DataTimestamp int64 `description:"数据日期"`
  73. Value float64 `description:"数据值"`
  74. }
  75. type EdbDataItems struct {
  76. Items []*EdbDataList
  77. Year int
  78. }
  79. type EdbDataResult struct {
  80. List []*EdbDataItems
  81. }
  82. type QuarterData struct {
  83. Year int
  84. DataList []*EdbDataList
  85. }
  86. // GetEdbDataList 获取指标数据
  87. func GetEdbDataList(source, endInfoId int, startDate, endDate string) (list []*EdbDataList, err error) {
  88. tableName := GetEdbDataTableName(source)
  89. if tableName == "" {
  90. err = errors.New("无效的渠道:" + strconv.Itoa(source))
  91. list = make([]*EdbDataList, 0)
  92. return list, err
  93. }
  94. var pars []interface{}
  95. sql := `SELECT edb_data_id,edb_info_id,data_time,value,data_timestamp FROM %s WHERE edb_info_id = ? `
  96. if startDate != "" {
  97. sql += ` AND data_time >= ? `
  98. pars = append(pars, startDate)
  99. }
  100. if endDate != "" {
  101. sql += ` AND data_time <= ? `
  102. pars = append(pars, endDate)
  103. }
  104. sql += ` ORDER BY data_time ASC `
  105. sql = fmt.Sprintf(sql, tableName)
  106. err = global.MYSQL["data"].Raw(sql, endInfoId, pars).Scan(&list).Error
  107. return
  108. }
  109. func GetEdbDataThsByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  110. sql := ` SELECT COUNT(1) AS count FROM edb_data_ths WHERE edb_code = ? AND data_time = ? `
  111. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  112. return
  113. }
  114. func GetEdbDataWindByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  115. sql := ` SELECT COUNT(1) AS count FROM edb_data_wind WHERE edb_code=? AND data_time=? `
  116. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  117. return
  118. }
  119. func GetEdbDataPbByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  120. sql := ` SELECT COUNT(1) AS count FROM edb_data_pb WHERE edb_code=? AND data_time>=? `
  121. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  122. return
  123. }
  124. type ManualEdbdata struct {
  125. TradeCode string `orm:"column(TRADE_CODE);pk" description:"指标编码"`
  126. Dt string `orm:"column(DT)" description:"日期"`
  127. Close string `orm:"column(CLOSE)" description:"值"`
  128. ModifyTime time.Time `orm:"column(modify_time)" description:"修改时间"`
  129. }
  130. func GetEdbdataManualByTradeCode(condition string, pars []interface{}) (item []*ManualEdbdata, err error) {
  131. sql := ` SELECT * FROM edbdata WHERE 1=1 `
  132. if condition != "" {
  133. sql += condition
  134. }
  135. sql += ` ORDER BY DT DESC `
  136. err = global.MYSQL["edb"].Raw(sql, pars).Scan(&item).Error
  137. return
  138. }
  139. type EdbDataBase struct {
  140. EdbDataId int `orm:"column(edb_data_id);pk"`
  141. EdbInfoId int
  142. EdbCode string
  143. DataTime string
  144. Value string
  145. Status int
  146. CreateTime time.Time
  147. ModifyTime time.Time
  148. DataTimestamp int64
  149. }
  150. type lzSurveyData struct {
  151. DataTime string `orm:"column(data_time)" description:"日期"`
  152. InputValue string `orm:"column(input_value)" description:"值"`
  153. }
  154. func GetLzSurveyDataByTradeCode(condition string, pars []interface{}) (item []*lzSurveyData, err error) {
  155. sql := ` SELECT a.* FROM longzhong_survey_data AS a
  156. INNER JOIN longzhong_survey_product AS b ON a.survey_product_id=b.survey_product_id
  157. WHERE 1=1 `
  158. if condition != "" {
  159. sql += condition
  160. }
  161. sql += ` ORDER BY a.data_time DESC `
  162. err = global.MYSQL["edb"].Raw(sql, pars).Scan(&item).Error
  163. return
  164. }
  165. func GetEdbDataLzByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  166. sql := ` SELECT COUNT(1) AS count FROM edb_data_lz WHERE edb_code=? AND data_time=? `
  167. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  168. return
  169. }
  170. type EdbDataPb struct {
  171. EdbDataId int `orm:"column(edb_data_id);pk"`
  172. EdbInfoId int
  173. EdbCode string
  174. DataTime string
  175. Value float64
  176. Status int
  177. CreateTime time.Time
  178. ModifyTime time.Time
  179. Ticker string
  180. Field string
  181. DataTimestamp int64
  182. }
  183. type BaseFromSmm struct {
  184. BaseFromSmmId int `orm:"column(base_from_smm_id);pk"`
  185. Aid int
  186. Name string
  187. Interface string
  188. ApiUpdate int
  189. ApiUpdateType string
  190. ApiType int
  191. ApiTypeAll string
  192. Type1 string `orm:"column(type_1)"`
  193. Type2 string `orm:"column(type_2)"`
  194. Type3 string `orm:"column(type_3)"`
  195. ApiStartTime string
  196. ApiUpdateTime string
  197. StartTime string
  198. FinishTime string
  199. AuthModule string
  200. AuthLang string
  201. ApiLabel string
  202. Enable string
  203. EditPerson string
  204. EditTime string
  205. AuthDur int
  206. AuthDurType string
  207. }
  208. type BaseFromSmmIndex struct {
  209. BaseFromSmmIndexId int `orm:"column(base_from_smm_index_id);pk"`
  210. Interface string
  211. Name string
  212. IndexCode string
  213. IndexName string
  214. Type1 string `orm:"column(type_1)"`
  215. Type2 string `orm:"column(type_2)"`
  216. Type3 string `orm:"column(type_3)"`
  217. Frequency string
  218. Unit string
  219. ApiStartTime string
  220. ApiUpdateTime string
  221. StartTime string
  222. FinishTime string
  223. CreateTime time.Time
  224. ModifyTime time.Time
  225. }
  226. type BaseFromSmmData struct {
  227. SmmDataId int `orm:"column(smm_data_id);pk"`
  228. BaseFromSmmIndexId int
  229. IndexCode string
  230. DataTime string
  231. Value string
  232. CreateTime time.Time
  233. ModifyTime time.Time
  234. DataTimestamp int64
  235. }
  236. func GetBaseFromSmmBySmmCode(smmCode string) (item *BaseFromSmm, err error) {
  237. sql := `SELECT * FROM base_from_smm WHERE interface = ?`
  238. err = global.MYSQL["data"].Raw(sql, smmCode).Scan(&item).Error
  239. return
  240. }
  241. func GetBaseFromSmmIndexBySmmCode(smmCode string) (list []*BaseFromSmmIndex, err error) {
  242. sql := ` SELECT * FROM base_from_smm_index WHERE interface = ? `
  243. err = global.MYSQL["data"].Raw(sql, smmCode).Scan(&list).Error
  244. return
  245. }
  246. func GetBaseFromSmmDataAllByIndexCode(indexCode string) (list []*BaseFromSmmData, err error) {
  247. sql := `SELECT * FROM base_from_smm_data WHERE index_code=? `
  248. err = global.MYSQL["data"].Raw(sql, indexCode).Scan(&list).Error
  249. return
  250. }
  251. func GetBaseFromSmmMaxOrMinDate(indexCode string) (min_date, max_date string, err error) {
  252. sql := ` SELECT MIN(data_time) AS min_date FROM base_from_smm_data WHERE index_code=? `
  253. err = global.MYSQL["data"].Raw(sql, indexCode).Scan(&min_date).Error
  254. sql = ` SELECT MAX(data_time) AS max_date FROM base_from_smm_data WHERE index_code=? `
  255. err = global.MYSQL["data"].Raw(sql, indexCode).Scan(&max_date).Error
  256. return
  257. }
  258. type YsResult struct {
  259. Code int64 `json:"Code"`
  260. Data struct {
  261. CompanyList []interface{} `json:"CompanyList"`
  262. Content [][]string `json:"Content"`
  263. Field []struct {
  264. ColIndex int64 `json:"ColIndex"`
  265. ColumnType string `json:"ColumnType"`
  266. Info string `json:"Info"`
  267. IsDate string `json:"IsDate"`
  268. Name string `json:"Name"`
  269. Unit string `json:"Unit"`
  270. DBColName string `json:"db_col_name"`
  271. } `json:"Field"`
  272. CountPage int64 `json:"count_page"`
  273. CurrentPage int64 `json:"current_page"`
  274. Frequency string `json:"frequency"`
  275. Mindate string `json:"mindate"`
  276. PageNum int64 `json:"page_num"`
  277. Status int64 `json:"status"`
  278. TotalNum int64 `json:"total_num"`
  279. } `json:"Data"`
  280. Msg string `json:"Msg"`
  281. }
  282. type BaseFromSmmDataSimple struct {
  283. SmmDataId int `orm:"column(smm_data_id);pk"`
  284. BaseFromSmmIndexId int
  285. IndexCode string
  286. DataTime string
  287. Value string
  288. }
  289. type BaseFromDlDataSimple struct {
  290. Id int `orm:"column(base_from_trade_dalian_index_id);pk"`
  291. DealCode string
  292. BuyCode string
  293. SoldCode string
  294. DataTime string
  295. DealValue string
  296. BuyValue string
  297. SoldValue string
  298. }
  299. func GetDlDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromDlDataSimple, err error) {
  300. sql := ` SELECT * FROM base_from_trade_dalian_index WHERE 1=1 `
  301. if condition != "" {
  302. sql += condition
  303. }
  304. sql += ` ORDER BY data_time DESC `
  305. err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
  306. return
  307. }
  308. func GetEdbDataDlByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  309. sql := ` SELECT COUNT(1) AS count FROM edb_data_dl WHERE edb_code=? AND data_time=? `
  310. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  311. return
  312. }
  313. type GlData struct {
  314. InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
  315. DataTime string `orm:"column(DATA_DATE)" description:"值"`
  316. }
  317. func GetGlDataByTradeCode(condition string, pars []interface{}) (item []*GlData, err error) {
  318. condition += " AND IS_DELETE=0 "
  319. sql := ` SELECT * FROM mb_index_main_data WHERE 1=1 `
  320. if condition != "" {
  321. sql += condition
  322. }
  323. sql += ` ORDER BY PUBLISH_TIME DESC `
  324. err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
  325. return
  326. }
  327. func GetEdbDataGlByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  328. sql := ` SELECT COUNT(1) AS count FROM edb_data_gl WHERE edb_code=? AND data_time=? `
  329. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  330. return
  331. }
  332. type EdbDataFromLt struct {
  333. Close map[int64]interface{} `json:"CLOSE"`
  334. }
  335. type BaseFromZzDataSimple struct {
  336. Id int `orm:"column(base_from_trade_zhengzhou_index_id);pk"`
  337. DealCode string
  338. BuyCode string
  339. SoldCode string
  340. DataTime string
  341. DealValue string
  342. BuyValue string
  343. SoldValue string
  344. }
  345. func GetZzDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromZzDataSimple, err error) {
  346. sql := ` SELECT * FROM base_from_trade_zhengzhou_index WHERE 1=1 `
  347. if condition != "" {
  348. sql += condition
  349. }
  350. sql += ` ORDER BY data_time DESC `
  351. err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
  352. return
  353. }
  354. func GetEdbDataZzByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  355. sql := ` SELECT COUNT(1) AS count FROM edb_data_zz WHERE edb_code=? AND data_time=? `
  356. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  357. return
  358. }