base_from_edb.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663
  1. package controllers
  2. import (
  3. "fmt"
  4. "hongze/hongze_edb_lib/models"
  5. "hongze/hongze_edb_lib/utils"
  6. "strings"
  7. "time"
  8. )
  9. type EdbController struct {
  10. BaseAuthController
  11. }
  12. // Search
  13. // @Title 新增指标-查询指标信息接口
  14. // @Description 查询指标信息接口
  15. // @Params Source query int true "指标来源;1:同花顺;2:Wind;3:彭博 ..."
  16. // @Params EdbCode query string true "指标编码"
  17. // @Success 200 {object} data_manage.EditEdbInfoReq
  18. // @router /add [post]
  19. func (this *ThsController) Search() {
  20. br := new(models.BaseResponse).Init()
  21. var cacheKey string
  22. defer func() {
  23. utils.Rc.Delete(cacheKey)
  24. this.Data["json"] = br
  25. this.ServeJSON()
  26. }()
  27. source, _ := this.GetInt("Source")
  28. edbCode := this.GetString("EdbCode")
  29. edbCode = strings.Trim(edbCode, "\t")
  30. edbCode = strings.Trim(edbCode, " ")
  31. edbCode = strings.Replace(edbCode, "\t", "", -1)
  32. if source <= 0 {
  33. br.Msg = "无效的数据来源"
  34. return
  35. }
  36. if edbCode == "" {
  37. br.Msg = "请输入指标ID"
  38. return
  39. }
  40. resp := new(models.EdbInfoSearchResp)
  41. //判断指标是否存在
  42. item, err := models.GetEdbInfoByEdbCode(source, edbCode)
  43. if err != nil {
  44. if err.Error() != utils.ErrNoRow() {
  45. br.Msg = "获取失败"
  46. br.ErrMsg = "根据指标编码获取指标信息失败,Err:" + err.Error()
  47. return
  48. }
  49. }
  50. {
  51. dateNow := time.Now()
  52. startDate := dateNow.AddDate(-30, 0, 0).Format(utils.FormatDate)
  53. searchItem := new(models.EdbInfoSearch)
  54. if source == utils.DATA_SOURCE_THS {
  55. dataItems, err := models.GetEdbDataAllByEdbCode(edbCode, utils.DATA_SOURCE_THS, utils.EDB_DATA_LIMIT)
  56. if err != nil && err.Error() != utils.ErrNoRow() {
  57. br.Msg = "获取失败"
  58. br.ErrMsg = "获取Ths已存在信息失败,Err:" + err.Error()
  59. return
  60. }
  61. fmt.Println("ths len:", len(dataItems))
  62. if len(dataItems) > 0 {
  63. fmt.Println("ths data exist")
  64. searchItem.EdbCode = edbCode
  65. edbInfoMaxAndMinInfo, err := models.GetEdbInfoMaxAndMinInfo(source, edbCode)
  66. if err != nil {
  67. br.Msg = "获取失败"
  68. br.ErrMsg = "获取Ths日期信息失败,Err:" + err.Error()
  69. return
  70. }
  71. searchItem.DataList = dataItems
  72. searchItem.StartDate = edbInfoMaxAndMinInfo.MinDate
  73. searchItem.EndDate = edbInfoMaxAndMinInfo.MaxDate
  74. } else {
  75. endDate := dateNow.AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  76. searchItem, err = data.GetEdbDataByThs(edbCode, startDate, endDate)
  77. if err != nil {
  78. br.Msg = "获取失败"
  79. br.ErrMsg = "获取失败,Err:" + err.Error()
  80. return
  81. }
  82. }
  83. } else if source == utils.DATA_SOURCE_WIND {
  84. fmt.Println("wind data exist")
  85. dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, utils.DATA_SOURCE_WIND, utils.EDB_DATA_LIMIT)
  86. if err != nil && err.Error() != utils.ErrNoRow() {
  87. br.Msg = "获取失败"
  88. br.ErrMsg = "获取Wind已存在信息失败,Err:" + err.Error()
  89. return
  90. }
  91. fmt.Println("wind dataItems:", len(dataItems))
  92. if len(dataItems) > 0 {
  93. searchItem.EdbCode = edbCode
  94. minDate, maxDate, err := data_manage.GetEdbDataWindMaxOrMinDate(edbCode)
  95. if err != nil {
  96. br.Msg = "获取失败"
  97. br.ErrMsg = "获取wind日期信息失败,Err:" + err.Error()
  98. return
  99. }
  100. searchItem.DataList = dataItems
  101. searchItem.StartDate = minDate
  102. searchItem.EndDate = maxDate
  103. } else {
  104. endDate := dateNow.Format(utils.FormatDate)
  105. searchItem, err = data.GetEdbDataByWind(edbCode, startDate, endDate)
  106. if err != nil {
  107. br.Msg = "获取失败"
  108. br.ErrMsg = "wind 获取失败,Err:" + err.Error()
  109. return
  110. }
  111. }
  112. } else if source == utils.DATA_SOURCE_PB {
  113. fmt.Println("pb data exist")
  114. dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, utils.DATA_SOURCE_PB, utils.EDB_DATA_LIMIT)
  115. if err != nil && err.Error() != utils.ErrNoRow() {
  116. br.Msg = "获取失败"
  117. br.ErrMsg = "获取Pb已存在信息失败,Err:" + err.Error()
  118. return
  119. }
  120. fmt.Println("pb dataItems:", len(dataItems))
  121. if len(dataItems) > 0 {
  122. searchItem.EdbCode = edbCode
  123. minDate, maxDate, err := data_manage.GetEdbDataPbMaxOrMinDate(edbCode)
  124. if err != nil {
  125. br.Msg = "获取失败"
  126. br.ErrMsg = "获取Pb日期信息失败,Err:" + err.Error()
  127. return
  128. }
  129. searchItem.DataList = dataItems
  130. searchItem.StartDate = minDate
  131. searchItem.EndDate = maxDate
  132. } else {
  133. endDate := dateNow.AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDateUnSpace)
  134. startDate := dateNow.AddDate(-30, 0, 0).Format(utils.FormatDateUnSpace)
  135. searchItem, err = data.GetEdbDataByPb(edbCode, startDate, endDate)
  136. if err != nil {
  137. br.Msg = "获取失败"
  138. br.ErrMsg = "彭博数据获取失败,Err:" + err.Error()
  139. return
  140. }
  141. }
  142. } else if source == utils.DATA_SOURCE_MANUAL { //手工数据指标
  143. endDate := dateNow.AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  144. dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, utils.DATA_SOURCE_MANUAL, utils.EDB_DATA_LIMIT)
  145. if err != nil && err.Error() != utils.ErrNoRow() {
  146. br.Msg = "获取失败"
  147. br.ErrMsg = "获取Ths已存在信息失败,Err:" + err.Error()
  148. return
  149. }
  150. fmt.Println("ths len:", len(dataItems))
  151. if len(dataItems) > 0 {
  152. fmt.Println("ths data exist")
  153. searchItem.EdbCode = edbCode
  154. minDate, maxDate, err := data_manage.GetEdbDataManualMaxOrMinDate(edbCode)
  155. if err != nil {
  156. br.Msg = "获取失败"
  157. br.ErrMsg = "获取Ths日期信息失败,Err:" + err.Error()
  158. return
  159. }
  160. searchItem.DataList = dataItems
  161. searchItem.StartDate = minDate
  162. searchItem.EndDate = maxDate
  163. } else {
  164. searchItem, err = data_manage.GetEdbDataByManual(edbCode, startDate, endDate)
  165. if err != nil {
  166. br.Msg = "获取失败"
  167. br.ErrMsg = "获取失败,Err:" + err.Error()
  168. return
  169. }
  170. }
  171. //获取指标信息
  172. manualInfo, err := models.GetEdbinfoByTradeCode(edbCode)
  173. if err != nil && err.Error() != utils.ErrNoRow() {
  174. br.Msg = "获取失败"
  175. br.ErrMsg = "获取手工指标详情失败,Err:" + err.Error()
  176. return
  177. }
  178. if manualInfo != nil {
  179. searchItem.Frequency = manualInfo.Frequency
  180. searchItem.Unit = manualInfo.Unit
  181. searchItem.EdbName = manualInfo.SecName
  182. }
  183. } else if source == utils.DATA_SOURCE_LZ {
  184. dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, utils.DATA_SOURCE_LZ, utils.EDB_DATA_LIMIT)
  185. if err != nil && err.Error() != utils.ErrNoRow() {
  186. br.Msg = "获取失败"
  187. br.ErrMsg = "获取隆众已存在信息失败,Err:" + err.Error()
  188. return
  189. }
  190. fmt.Println("ths len:", len(dataItems))
  191. if len(dataItems) > 0 {
  192. fmt.Println("ths data exist")
  193. searchItem.EdbCode = edbCode
  194. minDate, maxDate, err := data_manage.GetEdbDataLzMaxOrMinDate(edbCode)
  195. if err != nil {
  196. br.Msg = "获取失败"
  197. br.ErrMsg = "获取隆众日期信息失败,Err:" + err.Error()
  198. return
  199. }
  200. searchItem.DataList = dataItems
  201. searchItem.StartDate = minDate
  202. searchItem.EndDate = maxDate
  203. } else {
  204. endDate := dateNow.AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  205. searchItem, err = data_manage.GetEdbDataByLz(edbCode, startDate, endDate)
  206. if err != nil {
  207. br.Msg = "获取失败"
  208. br.ErrMsg = "获取隆众数据失败,Err:" + err.Error()
  209. return
  210. }
  211. }
  212. //获取指标信息
  213. lzInfo, err := data_manage.GetLongzhongSurveyProductByCode(edbCode)
  214. if err != nil && err.Error() != utils.ErrNoRow() {
  215. br.Msg = "获取失败"
  216. br.ErrMsg = "获取手工指标详情失败,Err:" + err.Error()
  217. return
  218. }
  219. if lzInfo != nil {
  220. frequency := lzInfo.Frequency
  221. var frequencyStr string
  222. if frequency == 1 {
  223. frequencyStr = "日度"
  224. } else if frequency == 2 {
  225. frequencyStr = "周度"
  226. } else if frequency == 3 {
  227. frequencyStr = "月度"
  228. } else if frequency == 4 {
  229. frequencyStr = "季度"
  230. } else if frequency == 5 {
  231. frequencyStr = "年度"
  232. } else if frequency == 99 {
  233. frequencyStr = "无固定频率"
  234. }
  235. searchItem.Frequency = frequencyStr
  236. searchItem.Unit = lzInfo.UnitName
  237. searchItem.EdbName = lzInfo.SampleName + lzInfo.BreedName + lzInfo.QuotaName
  238. }
  239. } else if source == utils.DATA_SOURCE_YS { //有色网
  240. dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, utils.DATA_SOURCE_YS, utils.EDB_DATA_LIMIT)
  241. if err != nil && err.Error() != utils.ErrNoRow() {
  242. br.Msg = "获取失败"
  243. br.ErrMsg = "获取Ys已存在信息失败,Err:" + err.Error()
  244. return
  245. }
  246. fmt.Println("dataItems:", len(dataItems))
  247. if len(dataItems) > 0 {
  248. searchItem.EdbCode = edbCode
  249. minDate, maxDate, err := data_manage.GetEdbDataYsMaxAndMinDate(edbCode)
  250. if err != nil {
  251. br.Msg = "获取失败"
  252. br.ErrMsg = "获取YS日期信息失败,Err:" + err.Error()
  253. return
  254. }
  255. searchItem.DataList = dataItems
  256. searchItem.StartDate = minDate
  257. searchItem.EndDate = maxDate
  258. } else {
  259. endDate := dateNow.AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  260. searchItem, err = data_manage.GetEdbDataByYs(edbCode, startDate, endDate)
  261. if err != nil {
  262. br.Msg = "获取失败"
  263. br.ErrMsg = "获取失败,GetEdbDataByYs Err:" + err.Error()
  264. return
  265. }
  266. if searchItem.StartDate == "" {
  267. minDate, maxDate, _ := data_manage.GetEdbDataYsMaxAndMinDate(edbCode)
  268. searchItem.StartDate = minDate
  269. searchItem.EndDate = maxDate
  270. }
  271. }
  272. //获取指标信息
  273. smmInfo, err := data_manage.GetBaseFromSmmIndexByIndexCode(edbCode)
  274. if err != nil && err.Error() != utils.ErrNoRow() {
  275. br.Msg = "获取失败"
  276. br.ErrMsg = "获取有色指标详情失败,Err:" + err.Error()
  277. return
  278. }
  279. if smmInfo != nil {
  280. searchItem.Frequency = smmInfo.Frequency
  281. searchItem.Unit = smmInfo.Unit
  282. searchItem.EdbName = smmInfo.IndexName
  283. }
  284. } else if source == utils.DATA_SOURCE_GL { //钢联
  285. dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT)
  286. if err != nil && err.Error() != utils.ErrNoRow() {
  287. br.Msg = "获取失败"
  288. br.ErrMsg = "获取钢联已存在信息失败,Err:" + err.Error()
  289. return
  290. }
  291. if len(dataItems) > 0 {
  292. searchItem.EdbCode = edbCode
  293. minDate, maxDate, err := data_manage.GetEdbDataGlMaxOrMinDate(edbCode)
  294. if err != nil {
  295. br.Msg = "获取失败"
  296. br.ErrMsg = "获取钢联日期信息失败,Err:" + err.Error()
  297. return
  298. }
  299. searchItem.DataList = dataItems
  300. searchItem.StartDate = minDate
  301. searchItem.EndDate = maxDate
  302. } else {
  303. endDate := dateNow.AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
  304. searchItem, err = data_manage.GetEdbDataByGl(edbCode, startDate, endDate)
  305. if err != nil {
  306. br.Msg = "获取失败"
  307. br.ErrMsg = "获取钢联数据失败,Err:" + err.Error()
  308. return
  309. }
  310. }
  311. //获取指标信息
  312. glInfo, err := data_manage.GetGlIndexByCode(edbCode)
  313. if err != nil && err.Error() != utils.ErrNoRow() {
  314. br.Msg = "获取失败"
  315. br.ErrMsg = "获取钢联指标详情失败,Err:" + err.Error()
  316. return
  317. }
  318. if glInfo != nil {
  319. searchItem.Frequency = glInfo.FrequencyName
  320. searchItem.Unit = glInfo.UnitName
  321. searchItem.EdbName = glInfo.IndexName
  322. }
  323. } else if source == utils.DATA_SOURCE_ZZ { //郑商所
  324. var suffix string
  325. if strings.Contains(edbCode, "deal") {
  326. suffix = "deal"
  327. } else if strings.Contains(edbCode, "buy") {
  328. suffix = "buy"
  329. } else if strings.Contains(edbCode, "sold") {
  330. suffix = "sold"
  331. }
  332. dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT)
  333. if err != nil && err.Error() != utils.ErrNoRow() {
  334. br.Msg = "获取失败"
  335. br.ErrMsg = "获取郑商所已存在信息失败,Err:" + err.Error()
  336. return
  337. }
  338. if len(dataItems) > 0 {
  339. searchItem.EdbCode = edbCode
  340. minDate, maxDate, err := data_manage.GetEdbDataZzMaxOrMinDate(edbCode)
  341. if err != nil {
  342. br.Msg = "获取失败"
  343. br.ErrMsg = "获取郑商所日期信息失败,Err:" + err.Error()
  344. return
  345. }
  346. searchItem.DataList = dataItems
  347. searchItem.StartDate = minDate
  348. searchItem.EndDate = maxDate
  349. } else {
  350. searchItem, err = data_manage.GetEdbDataByZz(edbCode, suffix, startDate, "")
  351. if err != nil {
  352. br.Msg = "获取失败"
  353. br.ErrMsg = "获取失败,GetEdbDataByZz Err:" + err.Error()
  354. return
  355. }
  356. if searchItem.StartDate == "" {
  357. minDate, maxDate, _ := data_manage.GetEdbDataZzMaxOrMinDate(edbCode)
  358. searchItem.StartDate = minDate
  359. searchItem.EndDate = maxDate
  360. }
  361. }
  362. //获取指标信息
  363. allInfo, err := data_manage.GetBaseInfoFromZhengzhouByIndexCode(edbCode, suffix)
  364. if err != nil && err.Error() != utils.ErrNoRow() {
  365. br.Msg = "获取失败"
  366. br.ErrMsg = "获取郑商所指标详情失败,Err:" + err.Error()
  367. return
  368. }
  369. var zzInfo *data_manage.BaseInfoFromZz
  370. if allInfo != nil {
  371. zzInfo = allInfo[0]
  372. }
  373. if zzInfo != nil {
  374. searchItem.Frequency = "日度"
  375. searchItem.Unit = "手"
  376. if suffix == "deal" {
  377. searchItem.EdbName = zzInfo.DealName
  378. } else if suffix == "buy" {
  379. searchItem.EdbName = zzInfo.BuyName
  380. } else {
  381. searchItem.EdbName = zzInfo.SoldName
  382. }
  383. }
  384. } else if source == utils.DATA_SOURCE_DL { //大商所
  385. var suffix string
  386. if strings.Contains(edbCode, "deal") {
  387. suffix = "deal"
  388. } else if strings.Contains(edbCode, "buy") {
  389. suffix = "buy"
  390. } else if strings.Contains(edbCode, "sold") {
  391. suffix = "sold"
  392. }
  393. dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT)
  394. if err != nil && err.Error() != utils.ErrNoRow() {
  395. br.Msg = "获取失败"
  396. br.ErrMsg = "获取大商所已存在信息失败,Err:" + err.Error()
  397. return
  398. }
  399. if len(dataItems) > 0 {
  400. searchItem.EdbCode = edbCode
  401. minDate, maxDate, err := data_manage.GetEdbDataDlMaxOrMinDate(edbCode)
  402. if err != nil {
  403. br.Msg = "获取失败"
  404. br.ErrMsg = "获取大商所日期信息失败,Err:" + err.Error()
  405. return
  406. }
  407. searchItem.DataList = dataItems
  408. searchItem.StartDate = minDate
  409. searchItem.EndDate = maxDate
  410. } else {
  411. searchItem, err = data_manage.GetEdbDataByDl(edbCode, suffix, startDate, "")
  412. if err != nil {
  413. br.Msg = "获取失败"
  414. br.ErrMsg = "获取失败,GetEdbDataByDl Err:" + err.Error()
  415. return
  416. }
  417. if searchItem.StartDate == "" {
  418. minDate, maxDate, _ := data_manage.GetEdbDataDlMaxOrMinDate(edbCode)
  419. searchItem.StartDate = minDate
  420. searchItem.EndDate = maxDate
  421. }
  422. }
  423. //获取指标信息
  424. allInfo, err := data_manage.GetBaseInfoFromDalianByIndexCode(edbCode, suffix)
  425. if err != nil && err.Error() != utils.ErrNoRow() {
  426. br.Msg = "获取失败"
  427. br.ErrMsg = "获取大商所指标详情失败,Err:" + err.Error()
  428. return
  429. }
  430. var dlInfo *data_manage.BaseInfoFromDl
  431. if allInfo != nil {
  432. dlInfo = allInfo[0]
  433. }
  434. if dlInfo != nil {
  435. searchItem.Frequency = "日度"
  436. searchItem.Unit = "手"
  437. if suffix == "deal" {
  438. searchItem.EdbName = dlInfo.DealName
  439. } else if suffix == "buy" {
  440. searchItem.EdbName = dlInfo.BuyName
  441. } else {
  442. searchItem.EdbName = dlInfo.SoldName
  443. }
  444. }
  445. } else if source == utils.DATA_SOURCE_SH { //上期所
  446. var suffix string
  447. if strings.Contains(edbCode, "deal") {
  448. suffix = "deal"
  449. } else if strings.Contains(edbCode, "buy") {
  450. suffix = "buy"
  451. } else if strings.Contains(edbCode, "sold") {
  452. suffix = "sold"
  453. }
  454. dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT)
  455. if err != nil && err.Error() != utils.ErrNoRow() {
  456. br.Msg = "获取失败"
  457. br.ErrMsg = "获取上期所已存在信息失败,Err:" + err.Error()
  458. return
  459. }
  460. if len(dataItems) > 0 {
  461. searchItem.EdbCode = edbCode
  462. minDate, maxDate, err := data_manage.GetEdbDataShMaxOrMinDate(edbCode)
  463. if err != nil {
  464. br.Msg = "获取失败"
  465. br.ErrMsg = "获取上期所日期信息失败,Err:" + err.Error()
  466. return
  467. }
  468. searchItem.DataList = dataItems
  469. searchItem.StartDate = minDate
  470. searchItem.EndDate = maxDate
  471. } else {
  472. searchItem, err = data_manage.GetEdbDataBySh(edbCode, suffix, startDate, "")
  473. if err != nil {
  474. br.Msg = "获取失败"
  475. br.ErrMsg = "获取失败,GetEdbDataBySh Err:" + err.Error()
  476. return
  477. }
  478. if searchItem.StartDate == "" {
  479. minDate, maxDate, _ := data_manage.GetEdbDataShMaxOrMinDate(edbCode)
  480. searchItem.StartDate = minDate
  481. searchItem.EndDate = maxDate
  482. }
  483. }
  484. //获取指标信息
  485. allInfo, err := data_manage.GetBaseInfoFromShByIndexCode(edbCode, suffix)
  486. if err != nil && err.Error() != utils.ErrNoRow() {
  487. br.Msg = "获取失败"
  488. br.ErrMsg = "获取上期所指标详情失败,Err:" + err.Error()
  489. return
  490. }
  491. var shInfo *data_manage.BaseInfoFromSh
  492. if allInfo != nil {
  493. shInfo = allInfo[0]
  494. }
  495. if shInfo != nil {
  496. searchItem.Frequency = "日度"
  497. searchItem.Unit = "手"
  498. if suffix == "deal" {
  499. searchItem.EdbName = shInfo.DealName
  500. } else if suffix == "buy" {
  501. searchItem.EdbName = shInfo.BuyName
  502. } else {
  503. searchItem.EdbName = shInfo.SoldName
  504. }
  505. }
  506. } else if source == utils.DATA_SOURCE_CFFEX { //中金所
  507. var suffix string
  508. if strings.Contains(edbCode, "deal") {
  509. suffix = "deal"
  510. } else if strings.Contains(edbCode, "buy") {
  511. suffix = "buy"
  512. } else if strings.Contains(edbCode, "sold") {
  513. suffix = "sold"
  514. }
  515. dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT)
  516. if err != nil && err.Error() != utils.ErrNoRow() {
  517. br.Msg = "获取失败"
  518. br.ErrMsg = "获取中金所已存在信息失败,Err:" + err.Error()
  519. return
  520. }
  521. if len(dataItems) > 0 {
  522. searchItem.EdbCode = edbCode
  523. minDate, maxDate, err := data_manage.GetEdbDataCffexMaxOrMinDate(edbCode)
  524. if err != nil {
  525. br.Msg = "获取失败"
  526. br.ErrMsg = "获取中金所日期信息失败,Err:" + err.Error()
  527. return
  528. }
  529. searchItem.DataList = dataItems
  530. searchItem.StartDate = minDate
  531. searchItem.EndDate = maxDate
  532. } else {
  533. searchItem, err = data_manage.GetEdbDataByCffex(edbCode, suffix, startDate, "")
  534. if err != nil {
  535. br.Msg = "获取失败"
  536. br.ErrMsg = "获取失败,GetEdbDataByCffex Err:" + err.Error()
  537. return
  538. }
  539. if searchItem.StartDate == "" {
  540. minDate, maxDate, _ := data_manage.GetEdbDataCffexMaxOrMinDate(edbCode)
  541. searchItem.StartDate = minDate
  542. searchItem.EndDate = maxDate
  543. }
  544. }
  545. //获取指标信息
  546. allInfo, err := data_manage.GetBaseInfoFromCffexByIndexCode(edbCode, suffix)
  547. if err != nil && err.Error() != utils.ErrNoRow() {
  548. br.Msg = "获取失败"
  549. br.ErrMsg = "获取中金所指标详情失败,Err:" + err.Error()
  550. return
  551. }
  552. var cffexInfo *data_manage.BaseInfoFromCffex
  553. if allInfo != nil {
  554. cffexInfo = allInfo[0]
  555. }
  556. if cffexInfo != nil {
  557. searchItem.Frequency = "日度"
  558. searchItem.Unit = "手"
  559. if suffix == "deal" {
  560. searchItem.EdbName = cffexInfo.DealName
  561. } else if suffix == "buy" {
  562. searchItem.EdbName = cffexInfo.BuyName
  563. } else {
  564. searchItem.EdbName = cffexInfo.SoldName
  565. }
  566. }
  567. } else if source == utils.DATA_SOURCE_SHFE { //上期能源
  568. var suffix string
  569. if strings.Contains(edbCode, "deal") {
  570. suffix = "deal"
  571. } else if strings.Contains(edbCode, "buy") {
  572. suffix = "buy"
  573. } else if strings.Contains(edbCode, "sold") {
  574. suffix = "sold"
  575. }
  576. dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT)
  577. if err != nil && err.Error() != utils.ErrNoRow() {
  578. br.Msg = "获取失败"
  579. br.ErrMsg = "获取上期能源已存在信息失败,Err:" + err.Error()
  580. return
  581. }
  582. if len(dataItems) > 0 {
  583. searchItem.EdbCode = edbCode
  584. minDate, maxDate, err := data_manage.GetEdbDataShfeMaxOrMinDate(edbCode)
  585. if err != nil {
  586. br.Msg = "获取失败"
  587. br.ErrMsg = "获取上期能源日期信息失败,Err:" + err.Error()
  588. return
  589. }
  590. searchItem.DataList = dataItems
  591. searchItem.StartDate = minDate
  592. searchItem.EndDate = maxDate
  593. } else {
  594. searchItem, err = data_manage.GetEdbDataByShfe(edbCode, suffix, startDate, "")
  595. if err != nil {
  596. br.Msg = "获取失败"
  597. br.ErrMsg = "获取失败,GetEdbDataByShfe Err:" + err.Error()
  598. return
  599. }
  600. if searchItem.StartDate == "" {
  601. minDate, maxDate, _ := data_manage.GetEdbDataShfeMaxOrMinDate(edbCode)
  602. searchItem.StartDate = minDate
  603. searchItem.EndDate = maxDate
  604. }
  605. }
  606. //获取指标信息
  607. allInfo, err := data_manage.GetBaseInfoFromShfeByIndexCode(edbCode, suffix)
  608. if err != nil && err.Error() != utils.ErrNoRow() {
  609. br.Msg = "获取失败"
  610. br.ErrMsg = "获取上期能源指标详情失败,Err:" + err.Error()
  611. return
  612. }
  613. var shfeInfo *data_manage.BaseInfoFromShfe
  614. if allInfo != nil {
  615. shfeInfo = allInfo[0]
  616. }
  617. if shfeInfo != nil {
  618. searchItem.Frequency = "日度"
  619. searchItem.Unit = "手"
  620. if suffix == "deal" {
  621. searchItem.EdbName = shfeInfo.DealName
  622. } else if suffix == "buy" {
  623. searchItem.EdbName = shfeInfo.BuyName
  624. } else {
  625. searchItem.EdbName = shfeInfo.SoldName
  626. }
  627. }
  628. } else if source == utils.DATA_SOURCE_GIE { //欧洲天然气
  629. br.Msg = "无效的数据来源"
  630. return
  631. } else {
  632. br.Msg = "无效的数据来源"
  633. return
  634. }
  635. resp.Status = 2
  636. resp.SearchItem = searchItem
  637. }
  638. }