query.go 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904
  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. pars = append(pars, endInfoId)
  96. sql := `SELECT edb_data_id,edb_info_id,data_time,value,data_timestamp FROM %s WHERE edb_info_id = ? `
  97. if startDate != "" {
  98. sql += ` AND data_time >= ? `
  99. pars = append(pars, startDate)
  100. }
  101. if endDate != "" {
  102. sql += ` AND data_time <= ? `
  103. pars = append(pars, endDate)
  104. }
  105. sql += ` ORDER BY data_time ASC `
  106. sql = fmt.Sprintf(sql, tableName)
  107. err = global.MYSQL["data"].Raw(sql, pars...).Scan(&list).Error
  108. // 格式化日期
  109. if len(list) > 0 {
  110. for _, row := range list {
  111. if row.DataTime != "" {
  112. row.DataTime = row.DataTime[:10] // 此处获取的字符串row.DataTime长度有长有短,截取年月日
  113. //tempTime, _ := time.Parse("2006-01-02T00:00:00+08:00", row.DataTime)
  114. //row.DataTime = tempTime.Format(utils.FormatDate)
  115. }
  116. }
  117. }
  118. return
  119. }
  120. func GetEdbDataThsByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  121. sql := ` SELECT COUNT(1) AS count FROM edb_data_ths WHERE edb_code = ? AND data_time = ? `
  122. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  123. return
  124. }
  125. func GetEdbDataWindByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  126. sql := ` SELECT COUNT(1) AS count FROM edb_data_wind WHERE edb_code=? AND data_time=? `
  127. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  128. return
  129. }
  130. func GetEdbDataPbByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  131. sql := ` SELECT COUNT(1) AS count FROM edb_data_pb WHERE edb_code=? AND data_time>=? `
  132. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  133. return
  134. }
  135. type ManualEdbdata struct {
  136. TradeCode string `gorm:"column:TRADE_CODE" description:"指标编码"`
  137. Dt string `gorm:"column:DT" description:"日期"`
  138. Close string `gorm:"column:CLOSE" description:"值"`
  139. ModifyTime time.Time `gorm:"column:modify_time:" description:"修改时间"`
  140. }
  141. func GetEdbdataManualByTradeCode(condition string, pars []interface{}) (item []*ManualEdbdata, err error) {
  142. sql := ` SELECT * FROM edbdata WHERE 1=1 `
  143. if condition != "" {
  144. sql += condition
  145. }
  146. sql += ` ORDER BY DT DESC `
  147. err = global.MYSQL["edb"].Raw(sql, pars).Scan(&item).Error
  148. return
  149. }
  150. type EdbDataBase struct {
  151. EdbDataId int `gorm:"column:edb_data_id;primaryKey"`
  152. EdbInfoId int
  153. EdbCode string
  154. DataTime string
  155. Value string
  156. Status int
  157. CreateTime time.Time
  158. ModifyTime time.Time
  159. DataTimestamp int64
  160. }
  161. type lzSurveyData struct {
  162. DataTime string `gorm:"column:data_time" description:"日期"`
  163. InputValue string `gorm:"column:input_value" description:"值"`
  164. }
  165. func GetLzSurveyDataByTradeCode(condition string, pars []interface{}) (item []*lzSurveyData, err error) {
  166. sql := ` SELECT a.* FROM longzhong_survey_data AS a
  167. INNER JOIN longzhong_survey_product AS b ON a.survey_product_id=b.survey_product_id
  168. WHERE 1=1 `
  169. if condition != "" {
  170. sql += condition
  171. }
  172. sql += ` ORDER BY a.data_time DESC `
  173. err = global.MYSQL["edb"].Raw(sql, pars).Scan(&item).Error
  174. return
  175. }
  176. func GetEdbDataLzByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  177. sql := ` SELECT COUNT(1) AS count FROM edb_data_lz WHERE edb_code=? AND data_time=? `
  178. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  179. return
  180. }
  181. type EdbDataPb struct {
  182. EdbDataId int `gorm:"column:edb_data_id;primaryKey"`
  183. EdbInfoId int
  184. EdbCode string
  185. DataTime string
  186. Value float64
  187. Status int
  188. CreateTime time.Time
  189. ModifyTime time.Time
  190. Ticker string
  191. Field string
  192. DataTimestamp int64
  193. }
  194. type BaseFromSmm struct {
  195. BaseFromSmmId int `gorm:"column:base_from_smm_id;primaryKey"`
  196. Aid int
  197. Name string
  198. Interface string
  199. ApiUpdate int
  200. ApiUpdateType string
  201. ApiType int
  202. ApiTypeAll string
  203. Type1 string `gorm:"column:type_1"`
  204. Type2 string `gorm:"column:type_2"`
  205. Type3 string `gorm:"column:type_3"`
  206. ApiStartTime string
  207. ApiUpdateTime string
  208. StartTime string
  209. FinishTime string
  210. AuthModule string
  211. AuthLang string
  212. ApiLabel string
  213. Enable string
  214. EditPerson string
  215. EditTime string
  216. AuthDur int
  217. AuthDurType string
  218. }
  219. type BaseFromSmmIndex struct {
  220. BaseFromSmmIndexId int `gorm:"column:base_from_smm_index_id;primaryKey"`
  221. Interface string
  222. Name string
  223. IndexCode string
  224. IndexName string
  225. Type1 string `gorm:"column:type_1"`
  226. Type2 string `gorm:"column:type_2"`
  227. Type3 string `gorm:"column:type_3"`
  228. Frequency string
  229. Unit string
  230. ApiStartTime string
  231. ApiUpdateTime string
  232. StartTime string
  233. FinishTime string
  234. CreateTime time.Time
  235. ModifyTime time.Time
  236. }
  237. type BaseFromSmmData struct {
  238. SmmDataId int `gorm:"column:smm_data_id;primaryKey"`
  239. BaseFromSmmIndexId int
  240. IndexCode string
  241. DataTime string
  242. Value string
  243. CreateTime time.Time
  244. ModifyTime time.Time
  245. DataTimestamp int64
  246. }
  247. func GetBaseFromSmmBySmmCode(smmCode string) (item *BaseFromSmm, err error) {
  248. sql := `SELECT * FROM base_from_smm WHERE interface = ?`
  249. err = global.MYSQL["data"].Raw(sql, smmCode).Scan(&item).Error
  250. return
  251. }
  252. func GetBaseFromSmmIndexBySmmCode(smmCode string) (list []*BaseFromSmmIndex, err error) {
  253. sql := ` SELECT * FROM base_from_smm_index WHERE interface = ? `
  254. err = global.MYSQL["data"].Raw(sql, smmCode).Scan(&list).Error
  255. return
  256. }
  257. func GetBaseFromSmmDataAllByIndexCode(indexCode string) (list []*BaseFromSmmData, err error) {
  258. sql := `SELECT * FROM base_from_smm_data WHERE index_code=? `
  259. err = global.MYSQL["data"].Raw(sql, indexCode).Scan(&list).Error
  260. return
  261. }
  262. func GetBaseFromSmmMaxOrMinDate(indexCode string) (min_date, max_date string, err error) {
  263. sql := ` SELECT MIN(data_time) AS min_date FROM base_from_smm_data WHERE index_code=? `
  264. err = global.MYSQL["data"].Raw(sql, indexCode).Scan(&min_date).Error
  265. sql = ` SELECT MAX(data_time) AS max_date FROM base_from_smm_data WHERE index_code=? `
  266. err = global.MYSQL["data"].Raw(sql, indexCode).Scan(&max_date).Error
  267. return
  268. }
  269. type YsResult struct {
  270. Code int64 `json:"Code"`
  271. Data struct {
  272. CompanyList []interface{} `json:"CompanyList"`
  273. Content [][]string `json:"Content"`
  274. Field []struct {
  275. ColIndex int64 `json:"ColIndex"`
  276. ColumnType string `json:"ColumnType"`
  277. Info string `json:"Info"`
  278. IsDate string `json:"IsDate"`
  279. Name string `json:"Name"`
  280. Unit string `json:"Unit"`
  281. DBColName string `json:"db_col_name"`
  282. } `json:"Field"`
  283. CountPage int64 `json:"count_page"`
  284. CurrentPage int64 `json:"current_page"`
  285. Frequency string `json:"frequency"`
  286. Mindate string `json:"mindate"`
  287. PageNum int64 `json:"page_num"`
  288. Status int64 `json:"status"`
  289. TotalNum int64 `json:"total_num"`
  290. } `json:"Data"`
  291. Msg string `json:"Msg"`
  292. }
  293. type BaseFromSmmDataSimple struct {
  294. SmmDataId int `gorm:"column:smm_data_id;primaryKey"`
  295. BaseFromSmmIndexId int
  296. IndexCode string
  297. DataTime string
  298. Value string
  299. }
  300. type BaseFromDlDataSimple struct {
  301. Id int `gorm:"column:base_from_trade_dalian_index_id;primaryKey"`
  302. DealCode string
  303. BuyCode string
  304. SoldCode string
  305. DataTime string
  306. DealValue string
  307. BuyValue string
  308. SoldValue string
  309. }
  310. func GetDlDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromDlDataSimple, err error) {
  311. sql := ` SELECT * FROM base_from_trade_dalian_index WHERE 1=1 `
  312. if condition != "" {
  313. sql += condition
  314. }
  315. sql += ` ORDER BY data_time DESC `
  316. err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
  317. return
  318. }
  319. func GetEdbDataDlByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  320. sql := ` SELECT COUNT(1) AS count FROM edb_data_dl WHERE edb_code=? AND data_time=? `
  321. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  322. return
  323. }
  324. type GlData struct {
  325. InputValue string `gorm:"column:DATA_VALUE" description:"日期"`
  326. DataTime string `gorm:"column:DATA_DATE" description:"值"`
  327. }
  328. func GetGlDataByTradeCode(condition string, pars []interface{}) (item []*GlData, err error) {
  329. condition += " AND IS_DELETE=0 "
  330. sql := ` SELECT * FROM mb_index_main_data WHERE 1=1 `
  331. if condition != "" {
  332. sql += condition
  333. }
  334. sql += ` ORDER BY PUBLISH_TIME DESC `
  335. err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
  336. return
  337. }
  338. func GetEdbDataGlByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  339. sql := ` SELECT COUNT(1) AS count FROM edb_data_gl WHERE edb_code=? AND data_time=? `
  340. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  341. return
  342. }
  343. type EdbDataFromLt struct {
  344. Close map[int64]interface{} `json:"CLOSE"`
  345. }
  346. type BaseFromZzDataSimple struct {
  347. Id int `gorm:"column:base_from_trade_zhengzhou_index_id;primaryKey"`
  348. DealCode string
  349. BuyCode string
  350. SoldCode string
  351. DataTime string
  352. DealValue string
  353. BuyValue string
  354. SoldValue string
  355. }
  356. func GetZzDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromZzDataSimple, err error) {
  357. sql := ` SELECT * FROM base_from_trade_zhengzhou_index WHERE 1=1 `
  358. if condition != "" {
  359. sql += condition
  360. }
  361. sql += ` ORDER BY data_time DESC `
  362. err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
  363. return
  364. }
  365. func GetEdbDataZzByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  366. sql := ` SELECT COUNT(1) AS count FROM edb_data_zz WHERE edb_code=? AND data_time=? `
  367. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  368. return
  369. }
  370. type BaseFromShDataSimple struct {
  371. Id int `gorm:"column:base_from_trade_shanghai_index_id;primaryKey"`
  372. DealCode string
  373. BuyCode string
  374. SoldCode string
  375. DataTime string
  376. DealValue string
  377. BuyValue string
  378. SoldValue string
  379. }
  380. func GetShDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShDataSimple, err error) {
  381. sql := ` SELECT * FROM base_from_trade_shanghai_index WHERE 1=1 `
  382. if condition != "" {
  383. sql += condition
  384. }
  385. sql += ` ORDER BY data_time DESC `
  386. err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
  387. return
  388. }
  389. func GetEdbDataShByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  390. sql := ` SELECT COUNT(1) AS count FROM edb_data_sh WHERE edb_code=? AND data_time=? `
  391. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  392. return
  393. }
  394. type BaseFromCffexDataSimple struct {
  395. Id int `gorm:"column:base_from_trade_cffex_index_id;primaryKey"`
  396. DealCode string
  397. BuyCode string
  398. SoldCode string
  399. DataTime string
  400. DealValue string
  401. BuyValue string
  402. SoldValue string
  403. }
  404. func GetCffexDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromCffexDataSimple, err error) {
  405. sql := ` SELECT * FROM base_from_trade_cffex_index WHERE 1=1 `
  406. if condition != "" {
  407. sql += condition
  408. }
  409. sql += ` ORDER BY data_time DESC `
  410. err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
  411. return
  412. }
  413. func GetEdbDataCffexByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  414. sql := ` SELECT COUNT(1) AS count FROM edb_data_cffex WHERE edb_code=? AND data_time=? `
  415. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  416. return
  417. }
  418. type BaseFromShfeDataSimple struct {
  419. Id int `gorm:"column:base_from_trade_ine_index_id;primaryKey"`
  420. DealCode string
  421. BuyCode string
  422. SoldCode string
  423. DataTime string
  424. DealValue string
  425. BuyValue string
  426. SoldValue string
  427. }
  428. func GetShfeDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShfeDataSimple, err error) {
  429. sql := ` SELECT * FROM base_from_trade_ine_index WHERE 1=1 `
  430. if condition != "" {
  431. sql += condition
  432. }
  433. sql += ` ORDER BY data_time DESC `
  434. err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
  435. return
  436. }
  437. func GetEdbDataShfeByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  438. sql := ` SELECT COUNT(1) AS count FROM edb_data_ine WHERE edb_code=? AND data_time=? `
  439. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  440. return
  441. }
  442. type BaseFromTradeEicIndex struct {
  443. BaseFromEicIndexId int `gorm:"column:base_from_eic_index_id;primaryKey"`
  444. Country string
  445. Type string
  446. EicCode string
  447. ShortName string
  448. Name string
  449. Status string
  450. GasDayStartedOn string
  451. GasInStorage string
  452. GasInStorageCode string
  453. Full string
  454. FullCode string
  455. Trend string
  456. TrendCode string
  457. Injection string
  458. InjectionCode string
  459. Withdrawal string
  460. WithdrawalCode string
  461. WorkingGasVolume string
  462. WorkingGasVolumeCode string
  463. InjectionCapacity string
  464. InjectionCapacityCode string
  465. WithdrawalCapacity string
  466. WithdrawalCapacityCode string
  467. Info string
  468. CreateTime time.Time
  469. ModifyTime time.Time
  470. }
  471. func GetGieDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromTradeEicIndex, err error) {
  472. sql := ` SELECT * FROM base_from_trade_eic_index WHERE 1=1 `
  473. if condition != "" {
  474. sql += condition
  475. }
  476. sql += ` ORDER BY gas_day_started_on DESC `
  477. err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
  478. return
  479. }
  480. func GetEdbDataGieByCodeAndDate(edbCode string, startDate string) (count int, err error) {
  481. sql := ` SELECT COUNT(1) AS count FROM edb_data_gie WHERE edb_code=? AND data_time=? `
  482. err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
  483. return
  484. }
  485. type EdbInfoMaxAndMinInfo struct {
  486. MinDate string `description:"最小日期"`
  487. MaxDate string `description:"最大日期"`
  488. MinValue float64 `description:"最小值"`
  489. MaxValue float64 `description:"最大值"`
  490. LatestValue float64 `description:"最新值"`
  491. }
  492. func GetEdbInfoMaxAndMinInfo(source int, edbCode string) (item *EdbInfoMaxAndMinInfo, err error) {
  493. sql := ``
  494. tableName := GetEdbDataTableName(source)
  495. sql = ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM %s WHERE edb_code=? `
  496. sql = fmt.Sprintf(sql, tableName)
  497. err = global.MYSQL["data"].Raw(sql, edbCode).Scan(&item).Error
  498. var latest_value float64
  499. sql = ` SELECT value AS latest_value FROM %s WHERE edb_code=? ORDER BY data_time DESC LIMIT 1 `
  500. sql = fmt.Sprintf(sql, tableName)
  501. err = global.MYSQL["data"].Raw(sql, edbCode).Scan(&latest_value).Error
  502. item.LatestValue = latest_value
  503. return
  504. }
  505. type EdbInfoCalculateDetail struct {
  506. EdbInfoCalculateId int `gorm:"primaryKey;column:edb_info_calculate_id"`
  507. EdbInfoId int `description:"指标id"`
  508. EdbCode string `description:"指标编码"`
  509. FromEdbInfoId int `description:"计算指标id"`
  510. FromEdbCode string `description:"计算指标编码"`
  511. FromEdbName string `description:"计算指标名称"`
  512. FromSource int `description:"计算指标来源"`
  513. FromSourceName string `description:"计算指标来源名称"`
  514. FromTag string `description:"来源指标标签"`
  515. Sort int `description:"计算指标名称排序"`
  516. CreateTime time.Time `description:"创建时间"`
  517. ModifyTime time.Time `description:"修改时间"`
  518. StartDate string `description:"开始日期"`
  519. EndDate string `description:"结束日期"`
  520. EdbType int `description:"指标类型:1:基础指标,2:计算指标"`
  521. }
  522. func GetEdbInfoCalculateDetail(edbInfoId, source int) (list []*EdbInfoCalculateDetail, err error) {
  523. sql := ` SELECT a.*,b.start_date,b.end_date,b.edb_type FROM edb_info_calculate_mapping AS a
  524. INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
  525. WHERE a.edb_info_id=? ORDER BY sort ASC `
  526. err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&list).Error
  527. return
  528. }
  529. type EdbInfoSearchData struct {
  530. DataTime string `description:"数据日期"`
  531. Value float64 `description:"数据"`
  532. }
  533. //order:1升序,其余值为降序
  534. func GetEdbDataListAll(condition string, pars []interface{}, source, order int) (item []*EdbInfoSearchData, err error) {
  535. sql := ``
  536. tableName := GetEdbDataTableName(source)
  537. sql = ` SELECT * FROM %s WHERE 1=1 `
  538. sql = fmt.Sprintf(sql, tableName)
  539. if condition != "" {
  540. sql += condition
  541. }
  542. if order == 1 {
  543. sql += ` ORDER BY data_time ASC `
  544. } else {
  545. sql += ` ORDER BY data_time DESC `
  546. }
  547. err = global.MYSQL["data"].Raw(sql, pars...).Scan(&item).Error
  548. // 格式化日期
  549. if len(item) > 0 {
  550. for _, row := range item {
  551. if row.DataTime != "" {
  552. row.DataTime = row.DataTime[:10]
  553. //tempTime, _ := time.Parse("2006-01-02T00:00:00", row.DataTime)
  554. //row.DataTime = tempTime.Format(utils.FormatDate)
  555. }
  556. }
  557. }
  558. return
  559. }
  560. type CalculateItems struct {
  561. EdbInfoId int
  562. DataMap map[string]float64
  563. }
  564. type EdbInfoCalculateLjzzyDetail struct {
  565. EdbInfoCalculateLjzzyId int `gorm:"column:edb_info_calculate_ljzzy_id;primaryKey"`
  566. EdbInfoId int `description:"指标id"`
  567. EdbCode string `description:"指标编码"`
  568. FromEdbInfoId int `description:"计算指标id"`
  569. FromEdbCode string `description:"计算指标编码"`
  570. FromEdbName string `description:"计算指标名称"`
  571. FromSource int `description:"计算指标来源"`
  572. FromSourceName string `description:"计算指标来源名称"`
  573. FromTag string `description:"来源指标标签"`
  574. Sort int `description:"计算指标名称排序"`
  575. CreateTime time.Time `description:"创建时间"`
  576. ModifyTime time.Time `description:"修改时间"`
  577. StartDate string `description:"开始日期"`
  578. EndDate string `description:"结束日期"`
  579. }
  580. func GetEdbInfoCalculateLjzzyDetail(edbInfoId int) (item *EdbInfoCalculateLjzzyDetail, err error) {
  581. sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
  582. INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
  583. WHERE a.edb_info_id=? `
  584. err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&item).Error
  585. return
  586. }
  587. type EdbInfoCalculateTbzDetail struct {
  588. EdbInfoCalculateTbzId int `gorm:"column:edb_info_calculate_tbz_id;primaryKey"`
  589. EdbInfoId int `description:"指标id"`
  590. EdbCode string `description:"指标编码"`
  591. FromEdbInfoId int `description:"计算指标id"`
  592. FromEdbCode string `description:"计算指标编码"`
  593. FromEdbName string `description:"计算指标名称"`
  594. FromSource int `description:"计算指标来源"`
  595. FromSourceName string `description:"计算指标来源名称"`
  596. FromTag string `description:"来源指标标签"`
  597. Sort int `description:"计算指标名称排序"`
  598. CreateTime time.Time `description:"创建时间"`
  599. ModifyTime time.Time `description:"修改时间"`
  600. StartDate string `description:"开始日期"`
  601. EndDate string `description:"结束日期"`
  602. }
  603. func GetEdbInfoCalculateTbzDetail(edbInfoId int) (item *EdbInfoCalculateTbzDetail, err error) {
  604. sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
  605. INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
  606. WHERE a.edb_info_id=? `
  607. err = global.MYSQL["data"].Raw(sql, edbInfoId).First(&item).Error
  608. return
  609. }
  610. type EdbInfoCalculateTczDetail struct {
  611. EdbInfoCalculateTczId int `gorm:"column:edb_info_calculate_tcz_id;primaryKey"`
  612. EdbInfoId int `description:"指标id"`
  613. EdbCode string `description:"指标编码"`
  614. FromEdbInfoId int `description:"计算指标id"`
  615. FromEdbCode string `description:"计算指标编码"`
  616. FromEdbName string `description:"计算指标名称"`
  617. FromSource int `description:"计算指标来源"`
  618. FromSourceName string `description:"计算指标来源名称"`
  619. FromTag string `description:"来源指标标签"`
  620. Sort int `description:"计算指标名称排序"`
  621. CreateTime time.Time `description:"创建时间"`
  622. ModifyTime time.Time `description:"修改时间"`
  623. StartDate string `description:"开始日期"`
  624. EndDate string `description:"结束日期"`
  625. }
  626. func GetEdbInfoCalculateTczDetail(edbInfoId int) (item *EdbInfoCalculateTczDetail, err error) {
  627. sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
  628. INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
  629. WHERE a.edb_info_id=? `
  630. err = global.MYSQL["data"].Raw(sql, edbInfoId).First(&item).Error
  631. return
  632. }
  633. type EdbInfoCalculateNszydpjjsDetail struct {
  634. EdbInfoCalculateNszydpjjsId int `gorm:"column:edb_info_calculate_nszydpjjs_id;primaryKey"`
  635. EdbInfoId int `description:"指标id"`
  636. EdbCode string `description:"指标编码"`
  637. FromEdbInfoId int `description:"计算指标id"`
  638. FromEdbCode string `description:"计算指标编码"`
  639. FromEdbName string `description:"计算指标名称"`
  640. FromSource int `description:"计算指标来源"`
  641. FromSourceName string `description:"计算指标来源名称"`
  642. FromTag string `description:"来源指标标签"`
  643. Sort int `description:"计算指标名称排序"`
  644. CreateTime time.Time `description:"创建时间"`
  645. ModifyTime time.Time `description:"修改时间"`
  646. StartDate string `description:"开始日期"`
  647. EndDate string `description:"结束日期"`
  648. }
  649. func GetEdbInfoCalculateNszydpjjsDetail(edbInfoId int) (item *EdbInfoCalculateNszydpjjsDetail, err error) {
  650. sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
  651. INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
  652. WHERE a.edb_info_id=? `
  653. err = global.MYSQL["data"].Raw(sql, edbInfoId).First(&item).Error
  654. return
  655. }
  656. type EdbInfoCalculateHbzDetail struct {
  657. EdbInfoCalculateTbzId int `gorm:"column:edb_info_calculate_tbz_id;primaryKey"`
  658. EdbInfoId int `description:"指标id"`
  659. EdbCode string `description:"指标编码"`
  660. FromEdbInfoId int `description:"计算指标id"`
  661. FromEdbCode string `description:"计算指标编码"`
  662. FromEdbName string `description:"计算指标名称"`
  663. FromSource int `description:"计算指标来源"`
  664. FromSourceName string `description:"计算指标来源名称"`
  665. FromTag string `description:"来源指标标签"`
  666. Sort int `description:"计算指标名称排序"`
  667. CreateTime time.Time `description:"创建时间"`
  668. ModifyTime time.Time `description:"修改时间"`
  669. StartDate string `description:"开始日期"`
  670. EndDate string `description:"结束日期"`
  671. }
  672. func GetEdbInfoCalculateHbzDetail(edbInfoId int) (item *EdbInfoCalculateTbzDetail, err error) {
  673. sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
  674. INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
  675. WHERE a.edb_info_id=? `
  676. err = global.MYSQL["data"].Raw(sql, edbInfoId).First(&item).Error
  677. return
  678. }
  679. type EdbInfoCalculateHczDetail struct {
  680. EdbInfoCalculateHczId int `gorm:"column:edb_info_calculate_hcz_id;primaryKey"`
  681. EdbInfoId int `description:"指标id"`
  682. EdbCode string `description:"指标编码"`
  683. FromEdbInfoId int `description:"计算指标id"`
  684. FromEdbCode string `description:"计算指标编码"`
  685. FromEdbName string `description:"计算指标名称"`
  686. FromSource int `description:"计算指标来源"`
  687. FromSourceName string `description:"计算指标来源名称"`
  688. FromTag string `description:"来源指标标签"`
  689. Sort int `description:"计算指标名称排序"`
  690. CreateTime time.Time `description:"创建时间"`
  691. ModifyTime time.Time `description:"修改时间"`
  692. StartDate string `description:"开始日期"`
  693. EndDate string `description:"结束日期"`
  694. }
  695. func GetEdbInfoCalculateHczDetail(edbInfoId int) (item *EdbInfoCalculateHczDetail, err error) {
  696. sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
  697. INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
  698. WHERE a.edb_info_id=? `
  699. err = global.MYSQL["data"].Raw(sql, edbInfoId).First(&item).Error
  700. return
  701. }
  702. type EdbInfoCalculateBpDetail struct {
  703. EdbInfoCalculateBpId int `gorm:"column:edb_info_calculate_bp_id;primaryKey"`
  704. EdbInfoId int `description:"指标id"`
  705. EdbCode string `description:"指标编码"`
  706. FromEdbInfoId int `description:"计算指标id"`
  707. FromEdbCode string `description:"计算指标编码"`
  708. FromEdbName string `description:"计算指标名称"`
  709. FromSource int `description:"计算指标来源"`
  710. FromSourceName string `description:"计算指标来源名称"`
  711. FromTag string `description:"来源指标标签"`
  712. Sort int `description:"计算指标名称排序"`
  713. CreateTime time.Time `description:"创建时间"`
  714. ModifyTime time.Time `description:"修改时间"`
  715. StartDate string `description:"开始日期"`
  716. EndDate string `description:"结束日期"`
  717. }
  718. func GetEdbInfoCalculateBpDetail(edbInfoId int) (item *EdbInfoCalculateTbzDetail, err error) {
  719. sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
  720. INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
  721. WHERE a.edb_info_id=? `
  722. err = global.MYSQL["data"].Raw(sql, edbInfoId).First(&item).Error
  723. return
  724. }
  725. // EdbDataCalculateZjpj 直接拼接数据结构体
  726. type EdbDataCalculateZjpj struct {
  727. EdbDataId int `gorm:"column:edb_data_id;primaryKey"`
  728. EdbInfoId int
  729. EdbCode string
  730. DataTime string
  731. Value float64
  732. Status int
  733. CreateTime time.Time
  734. ModifyTime time.Time
  735. DataTimestamp int64
  736. }
  737. // GetAllEdbDataCalculateZjpjByEdbInfoId 根据指标id获取全部的数据
  738. func GetAllEdbDataCalculateZjpjByEdbInfoId(edbInfoId int) (items []*EdbDataCalculateZjpj, err error) {
  739. sql := ` SELECT * FROM edb_data_calculate_zjpj WHERE edb_info_id=? ORDER BY data_time DESC `
  740. err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&items).Error
  741. return
  742. }
  743. // EdbInfoCalculateMapping 计算指标于基础指标,关系表
  744. type EdbInfoCalculateMapping struct {
  745. EdbInfoCalculateMappingId int `gorm:"column:edb_info_calculate_mapping_id;primaryKey"`
  746. EdbInfoId int `description:"计算指标id"`
  747. Source int `description:"计算指标来源"`
  748. SourceName string `description:"计算指标来源名称"`
  749. EdbCode string `description:"计算指标编码"`
  750. FromEdbInfoId int `description:"基础指标id"`
  751. FromEdbCode string `description:"基础指标编码"`
  752. FromEdbName string `description:"基础指标名称"`
  753. FromSource int `description:"基础指标来源"`
  754. FromSourceName string `description:"基础指标来源名称"`
  755. FromTag string `description:"来源指标标签"`
  756. Sort int `description:"计算指标名称排序"`
  757. CreateTime time.Time `description:"创建时间"`
  758. ModifyTime time.Time `description:"修改时间"`
  759. }
  760. // GetEdbInfoCalculateListByCondition 获取指标关系列表
  761. func GetEdbInfoCalculateListByCondition(condition string, pars []interface{}) (items []*EdbInfoCalculateMapping, err error) {
  762. sql := ` SELECT * FROM edb_info_calculate_mapping WHERE 1=1 `
  763. if condition != "" {
  764. sql += condition
  765. }
  766. err = global.MYSQL["data"].Raw(sql, pars).Scan(&items).Error
  767. return
  768. }
  769. // EdbDataCalculateLjztbpj 累计值同比拼接数据结构体
  770. type EdbDataCalculateLjztbpj struct {
  771. EdbDataId int `gorm:"column:edb_data_id;primaryKey"`
  772. EdbInfoId int
  773. EdbCode string
  774. DataTime string
  775. Value float64
  776. Status int
  777. CreateTime time.Time
  778. ModifyTime time.Time
  779. DataTimestamp int64
  780. }
  781. // GetAllEdbDataCalculateLjztbpjByEdbInfoId 根据指标id获取全部的数据
  782. func GetAllEdbDataCalculateLjztbpjByEdbInfoId(edbInfoId int) (items []*EdbDataCalculateLjztbpj, err error) {
  783. sql := ` SELECT * FROM edb_data_calculate_ljztbpj WHERE edb_info_id=? ORDER BY data_time DESC `
  784. err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&items).Error
  785. return
  786. }