commodity_trade_base_index.go 72 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546
  1. package controllers
  2. import (
  3. "fmt"
  4. "github.com/rdlucklib/rdluck_tools/paging"
  5. "github.com/tealeg/xlsx"
  6. "eta/eta_api/models"
  7. "eta/eta_api/models/data_manage"
  8. "eta/eta_api/utils"
  9. "os"
  10. "path/filepath"
  11. "strconv"
  12. "strings"
  13. "time"
  14. )
  15. type TradeCommonController struct {
  16. BaseAuthController
  17. }
  18. type Data []struct {
  19. Title string
  20. ItemList []ShanghaiList
  21. }
  22. type ShanghaiList struct {
  23. Code string
  24. Item []*data_manage.BaseFromTradeShanghaiIndex
  25. }
  26. type EicData struct {
  27. Country string
  28. Type string
  29. EicCode string
  30. ShortName string
  31. Name string
  32. Status string
  33. GasDayStartedOn string
  34. GasInStorage float64
  35. GasInStorageCode string
  36. Full float64
  37. FullCode string
  38. Trend float64
  39. TrendCode string
  40. Injection float64
  41. InjectionCode string
  42. Withdrawal float64
  43. WithdrawalCode string
  44. WorkingGasVolume float64
  45. WorkingGasVolumeCode string
  46. InjectionCapacity float64
  47. InjectionCapacityCode string
  48. WithdrawalCapacity float64
  49. WithdrawalCapacityCode string
  50. Info string
  51. Children []*data_manage.BaseFromTradeEicIndex
  52. }
  53. // ExchangeClassify
  54. // @title 获取交易所种类列表
  55. // @Description 获取交易所种类列表接口
  56. // @Param Exchange query string true "交易所名称"
  57. // @Success 200 {object} models.
  58. // @router /data/exchange/classify [get]
  59. func (this *TradeCommonController) ExchangeClassify() {
  60. br := new(models.BaseResponse).Init()
  61. defer func() {
  62. this.Data["json"] = br
  63. this.ServeJSON()
  64. }()
  65. exchange := this.GetString("Exchange")
  66. date := this.GetString("DataTime")
  67. var respItem [][]string
  68. latestData, err := data_manage.GetLatestDate(exchange)
  69. if err != nil {
  70. br.Msg = "获取失败"
  71. return
  72. }
  73. if latestData == "" {
  74. br.Ret = 200
  75. br.Success = true
  76. br.Msg = "获取成功"
  77. br.Data = respItem
  78. return
  79. }
  80. if date == "" {
  81. date = latestData
  82. }
  83. classifyName, err := data_manage.GetExchangeClassify(exchange, date)
  84. if err != nil {
  85. br.Msg = "获取种类失败"
  86. br.ErrMsg = "获取种类失败,Err:" + err.Error()
  87. return
  88. }
  89. respItem = append(respItem, classifyName)
  90. respItem = append(respItem, []string{latestData})
  91. br.Ret = 200
  92. br.Success = true
  93. br.Msg = "获取成功"
  94. br.Data = respItem
  95. }
  96. // ExchangeClassifyContract
  97. // @title 获取交易所种类合约列表
  98. // @Description 获取交易所种类合约列表接口
  99. // @Param Exchange query string true "交易所名称"
  100. // @Param Classify query string true "种类名称"
  101. // @Param DataTime query string true "时间"
  102. // @Success 200 {object} models.
  103. // @router /data/exchange/classifyContract [get]
  104. func (this *TradeCommonController) ExchangeClassifyContract() {
  105. br := new(models.BaseResponse).Init()
  106. defer func() {
  107. this.Data["json"] = br
  108. this.ServeJSON()
  109. }()
  110. exchange := this.GetString("Exchange")
  111. classify := this.GetString("Classify")
  112. dataTime := this.GetString("DataTime")
  113. classifyName, err := data_manage.GetExchangeClassifyContract(exchange, classify, dataTime)
  114. if err != nil {
  115. br.Msg = "获取种类失败"
  116. br.ErrMsg = "获取种类失败,Err:" + err.Error()
  117. return
  118. }
  119. br.Ret = 200
  120. br.Success = true
  121. br.Msg = "获取成功"
  122. br.Data = classifyName
  123. }
  124. // ShfeDataList
  125. // @title 获取上期所列表
  126. // @Description 获取上期所列表接口
  127. // @Param Date query string true "查询日期"
  128. // @Param ClassifyName query string false "分类名称"
  129. // @Param ClassifyType query string false "分类合约"
  130. // @Success 200 {object} models.
  131. // @router /data/shfe [get]
  132. func (this *TradeCommonController) ShfeDataList() {
  133. br := new(models.BaseResponse).Init()
  134. defer func() {
  135. this.Data["json"] = br
  136. this.ServeJSON()
  137. }()
  138. date := this.GetString("Date")
  139. classifyName := this.GetString("ClassifyName")
  140. classifyType := this.GetString("ClassifyType")
  141. frequencyList, err := data_manage.GetBaseFromTradeIndexByParam("shanghai", date, classifyName, classifyType)
  142. if err != nil {
  143. br.Msg = "获取持仓排名失败"
  144. br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
  145. return
  146. }
  147. var data Data
  148. var j, k int
  149. if len(frequencyList) == 0 {
  150. br.Ret = 200
  151. br.Success = true
  152. br.Msg = "获取成功"
  153. br.Data = data
  154. } else {
  155. if classifyName == "" {
  156. data = make(Data, 50)
  157. for i, item := range frequencyList {
  158. if item.DealCode == "" {
  159. item.DealValue = ""
  160. item.DealChange = ""
  161. }
  162. if item.BuyCode == "" {
  163. item.BuyValue = ""
  164. item.BuyChange = ""
  165. }
  166. if item.SoldCode == "" {
  167. item.SoldValue = ""
  168. item.SoldChange = ""
  169. }
  170. if data[j].Title == item.ClassifyName {
  171. if data[j].ItemList[k].Code == item.ClassifyType {
  172. data[j].ItemList[k].Item = append(data[j].ItemList[k].Item, item)
  173. continue
  174. }
  175. if i > 0 {
  176. k++
  177. }
  178. data[j].ItemList[k].Code = item.ClassifyType
  179. data[j].ItemList[k].Item = append(data[j].ItemList[k].Item, item)
  180. continue
  181. }
  182. if i != 0 {
  183. if k == 0 {
  184. data[j].ItemList = data[j].ItemList[:k+1]
  185. } else {
  186. data[j].ItemList = data[j].ItemList[:k]
  187. }
  188. j++
  189. k = 0
  190. }
  191. if data[j].ItemList == nil {
  192. list := make([]ShanghaiList, 930)
  193. data[j].ItemList = list
  194. }
  195. data[j].Title = item.ClassifyName
  196. data[j].ItemList[k].Code = item.ClassifyType
  197. data[j].ItemList[k].Item = append(data[j].ItemList[k].Item, item)
  198. }
  199. data = data[:j]
  200. br.Ret = 200
  201. br.Success = true
  202. br.Msg = "获取成功"
  203. br.Data = data
  204. } else {
  205. data = make(Data, 1)
  206. for i, item := range frequencyList {
  207. if item.DealCode == "" {
  208. item.DealValue = ""
  209. item.DealChange = ""
  210. }
  211. if item.BuyCode == "" {
  212. item.BuyValue = ""
  213. item.BuyChange = ""
  214. }
  215. if item.SoldCode == "" {
  216. item.SoldValue = ""
  217. item.SoldChange = ""
  218. }
  219. data[0].Title = classifyName
  220. if data[0].ItemList == nil {
  221. list := make([]ShanghaiList, 200)
  222. data[0].ItemList = list
  223. }
  224. if data[0].ItemList[k].Code == item.ClassifyType {
  225. data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
  226. continue
  227. }
  228. if i > 0 {
  229. k++
  230. }
  231. data[0].ItemList[k].Code = item.ClassifyType
  232. data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
  233. }
  234. data[0].ItemList = data[0].ItemList[:k+1]
  235. br.Ret = 200
  236. br.Success = true
  237. br.Msg = "获取成功"
  238. br.Data = data
  239. }
  240. }
  241. }
  242. // IneDataList
  243. // @title 获取上海国际能源交易所列表
  244. // @Description 获取上海国际能源交易所列表接口
  245. // @Param Date query string true "查询日期"
  246. // @Param ClassifyName query string false "分类名称"
  247. // @Param ClassifyType query string false "分类合约"
  248. // @Success 200 {object} models.
  249. // @router /data/ine [get]
  250. func (this *TradeCommonController) IneDataList() {
  251. br := new(models.BaseResponse).Init()
  252. defer func() {
  253. this.Data["json"] = br
  254. this.ServeJSON()
  255. }()
  256. date := this.GetString("Date")
  257. classifyName := this.GetString("ClassifyName")
  258. classifyType := this.GetString("ClassifyType")
  259. frequencyList, err := data_manage.GetBaseFromTradeIndexByParam("ine", date, classifyName, classifyType)
  260. if err != nil {
  261. br.Msg = "获取持仓排名失败"
  262. br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
  263. return
  264. }
  265. var data Data
  266. var k int
  267. if len(frequencyList) == 0 {
  268. br.Ret = 200
  269. br.Success = true
  270. br.Msg = "获取成功"
  271. br.Data = data
  272. } else {
  273. data = make(Data, 1)
  274. if len(frequencyList) > 20 {
  275. for i, item := range frequencyList {
  276. if item.DealCode == "" {
  277. item.DealValue = ""
  278. item.DealChange = ""
  279. }
  280. if item.BuyCode == "" {
  281. item.BuyValue = ""
  282. item.BuyChange = ""
  283. }
  284. if item.SoldCode == "" {
  285. item.SoldValue = ""
  286. item.SoldChange = ""
  287. }
  288. data[0].Title = classifyName
  289. if data[0].ItemList == nil {
  290. list := make([]ShanghaiList, 200)
  291. data[0].ItemList = list
  292. }
  293. if data[0].ItemList[k].Code == item.ClassifyType {
  294. data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
  295. continue
  296. }
  297. if i > 0 {
  298. k++
  299. }
  300. data[0].ItemList[k].Code = item.ClassifyType
  301. data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
  302. }
  303. data[0].ItemList = data[0].ItemList[:k+1]
  304. br.Ret = 200
  305. br.Success = true
  306. br.Msg = "获取成功"
  307. br.Data = data
  308. } else {
  309. for _, item := range frequencyList {
  310. if item.DealCode == "" {
  311. item.DealValue = ""
  312. item.DealChange = ""
  313. }
  314. if item.BuyCode == "" {
  315. item.BuyValue = ""
  316. item.BuyChange = ""
  317. }
  318. if item.SoldCode == "" {
  319. item.SoldValue = ""
  320. item.SoldChange = ""
  321. }
  322. data[0].Title = item.ClassifyName
  323. if data[0].ItemList == nil {
  324. list := make([]ShanghaiList, 1)
  325. data[0].ItemList = list
  326. }
  327. if data[0].ItemList[0].Code == item.ClassifyType {
  328. data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
  329. continue
  330. }
  331. //if i != 0 {
  332. // k++
  333. // fmt.Println(k)
  334. //}
  335. data[0].ItemList[0].Code = item.ClassifyType
  336. data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
  337. }
  338. //data[0].ItemList = data[0].ItemList[:k]
  339. br.Ret = 200
  340. br.Success = true
  341. br.Msg = "获取成功"
  342. br.Data = data
  343. }
  344. }
  345. }
  346. // CffexDataList
  347. // @title 获取中金所所列表
  348. // @Description 获取中金所列表接口
  349. // @Param Date query string true "查询日期"
  350. // @Param ClassifyName query string false "分类名称"
  351. // @Param ClassifyType query string false "分类合约"
  352. // @Success 200 {object} models.
  353. // @router /data/cffex [get]
  354. func (this *TradeCommonController) CffexDataList() {
  355. br := new(models.BaseResponse).Init()
  356. defer func() {
  357. this.Data["json"] = br
  358. this.ServeJSON()
  359. }()
  360. date := this.GetString("Date")
  361. date = strings.Replace(date, "-", "", -1)
  362. classifyName := this.GetString("ClassifyName")
  363. classifyType := this.GetString("ClassifyType")
  364. frequencyList, err := data_manage.GetBaseFromTradeIndexByParam("cffex", date, classifyName, classifyType)
  365. if err != nil {
  366. br.Msg = "获取持仓排名失败"
  367. br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
  368. return
  369. }
  370. var data Data
  371. var k int
  372. if len(frequencyList) == 0 {
  373. br.Ret = 200
  374. br.Success = true
  375. br.Msg = "获取成功"
  376. br.Data = data
  377. } else {
  378. data = make(Data, 1)
  379. if len(frequencyList) > 20 {
  380. for i, item := range frequencyList {
  381. if item.DealCode == "" {
  382. item.DealValue = ""
  383. item.DealChange = ""
  384. }
  385. if item.BuyCode == "" {
  386. item.BuyValue = ""
  387. item.BuyChange = ""
  388. }
  389. if item.SoldCode == "" {
  390. item.SoldValue = ""
  391. item.SoldChange = ""
  392. }
  393. data[0].Title = classifyName
  394. if data[0].ItemList == nil {
  395. list := make([]ShanghaiList, 200)
  396. data[0].ItemList = list
  397. }
  398. if data[0].ItemList[k].Code == item.ClassifyType {
  399. data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
  400. continue
  401. }
  402. if i > 0 {
  403. k++
  404. }
  405. data[0].ItemList[k].Code = item.ClassifyType
  406. data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
  407. }
  408. data[0].ItemList = data[0].ItemList[:k+1]
  409. br.Ret = 200
  410. br.Success = true
  411. br.Msg = "获取成功"
  412. br.Data = data
  413. } else {
  414. for _, item := range frequencyList {
  415. if item.DealCode == "" {
  416. item.DealValue = ""
  417. item.DealChange = ""
  418. }
  419. if item.BuyCode == "" {
  420. item.BuyValue = ""
  421. item.BuyChange = ""
  422. }
  423. if item.SoldCode == "" {
  424. item.SoldValue = ""
  425. item.SoldChange = ""
  426. }
  427. data[0].Title = item.ClassifyName
  428. if data[0].ItemList == nil {
  429. list := make([]ShanghaiList, 1)
  430. data[0].ItemList = list
  431. }
  432. if data[0].ItemList[0].Code == item.ClassifyType {
  433. data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
  434. continue
  435. }
  436. //if i != 0 {
  437. // k++
  438. // fmt.Println(k)
  439. //}
  440. data[0].ItemList[0].Code = item.ClassifyType
  441. data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
  442. }
  443. //data[0].ItemList = data[0].ItemList[:20]
  444. br.Ret = 200
  445. br.Success = true
  446. br.Msg = "获取成功"
  447. br.Data = data
  448. }
  449. }
  450. }
  451. // ZhengzhouDataList
  452. // @title 获取郑州交易所列表
  453. // @Description 获取郑州交易所列表接口
  454. // @Param Date query string true "查询日期"
  455. // @Param ClassifyName query string false "分类名称"
  456. // @Param ClassifyType query string false "分类合约"
  457. // @Success 200 {object} models.
  458. // @router /data/zhengzhou [get]
  459. func (this *TradeCommonController) ZhengzhouDataList() {
  460. br := new(models.BaseResponse).Init()
  461. defer func() {
  462. this.Data["json"] = br
  463. this.ServeJSON()
  464. }()
  465. date := this.GetString("Date")
  466. fmt.Println(date)
  467. date = strings.Replace(date, "-", "", -1)
  468. fmt.Println(date)
  469. classifyName := this.GetString("ClassifyName")
  470. classifyType := this.GetString("ClassifyType")
  471. frequencyList, err := data_manage.GetBaseFromTradeIndexByParam("zhengzhou", date, classifyName, classifyType)
  472. if err != nil {
  473. br.Msg = "获取持仓排名失败"
  474. br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
  475. return
  476. }
  477. var data Data
  478. var k int
  479. if len(frequencyList) == 0 {
  480. br.Ret = 200
  481. br.Success = true
  482. br.Msg = "获取成功"
  483. br.Data = data
  484. } else {
  485. data = make(Data, 1)
  486. fmt.Println(len(frequencyList))
  487. if len(frequencyList) > 21 {
  488. for i, item := range frequencyList {
  489. if item.DealCode == "" {
  490. item.DealValue = ""
  491. item.DealChange = ""
  492. }
  493. if item.BuyCode == "" {
  494. item.BuyValue = ""
  495. item.BuyChange = ""
  496. }
  497. if item.SoldCode == "" {
  498. item.SoldValue = ""
  499. item.SoldChange = ""
  500. }
  501. data[0].Title = classifyName
  502. if data[0].ItemList == nil {
  503. list := make([]ShanghaiList, 200)
  504. data[0].ItemList = list
  505. }
  506. if data[0].ItemList[k].Code == item.ClassifyType {
  507. data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
  508. continue
  509. }
  510. if i > 0 {
  511. k++
  512. }
  513. data[0].ItemList[k].Code = item.ClassifyType
  514. data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
  515. }
  516. data[0].ItemList = data[0].ItemList[:k]
  517. br.Ret = 200
  518. br.Success = true
  519. br.Msg = "获取成功"
  520. br.Data = data
  521. } else {
  522. for _, item := range frequencyList {
  523. if item.DealCode == "" {
  524. item.DealValue = ""
  525. item.DealChange = ""
  526. }
  527. if item.BuyCode == "" {
  528. item.BuyValue = ""
  529. item.BuyChange = ""
  530. }
  531. if item.SoldCode == "" {
  532. item.SoldValue = ""
  533. item.SoldChange = ""
  534. }
  535. data[0].Title = item.ClassifyName
  536. if data[0].ItemList == nil {
  537. list := make([]ShanghaiList, 1)
  538. data[0].ItemList = list
  539. }
  540. if data[0].ItemList[0].Code == item.ClassifyType {
  541. data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
  542. continue
  543. }
  544. //if i != 0 {
  545. // k++
  546. // fmt.Println(k)
  547. //}
  548. data[0].ItemList[0].Code = item.ClassifyType
  549. data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
  550. }
  551. //data[0].ItemList = data[0].ItemList[:k]
  552. br.Ret = 200
  553. br.Success = true
  554. br.Msg = "获取成功"
  555. br.Data = data
  556. }
  557. }
  558. }
  559. // DalianDataList
  560. // @title 获取大连交易所列表
  561. // @Description 获取大连交易所列表接口
  562. // @Param Date query string true "查询日期"
  563. // @Param ClassifyName query string false "分类名称"
  564. // @Param ClassifyType query string false "分类合约"
  565. // @Success 200 {object} models.
  566. // @router /data/dalian [get]
  567. func (this *TradeCommonController) DalianDataList() {
  568. br := new(models.BaseResponse).Init()
  569. defer func() {
  570. this.Data["json"] = br
  571. this.ServeJSON()
  572. }()
  573. date := this.GetString("Date")
  574. classifyName := this.GetString("ClassifyName")
  575. classifyType := this.GetString("ClassifyType")
  576. frequencyList, err := data_manage.GetBaseFromTradeIndexByParam("dalian", date, classifyName, classifyType)
  577. if err != nil {
  578. br.Msg = "获取持仓排名失败"
  579. br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
  580. return
  581. }
  582. var data Data
  583. var k int
  584. if len(frequencyList) == 0 {
  585. br.Ret = 200
  586. br.Success = true
  587. br.Msg = "获取成功"
  588. br.Data = data
  589. } else {
  590. data = make(Data, 1)
  591. fmt.Println("len:", len(frequencyList))
  592. if len(frequencyList) > 21 {
  593. for i, item := range frequencyList {
  594. if item.DealCode == "" {
  595. item.DealValue = ""
  596. item.DealChange = ""
  597. }
  598. if item.BuyCode == "" {
  599. item.BuyValue = ""
  600. item.BuyChange = ""
  601. }
  602. if item.SoldCode == "" {
  603. item.SoldValue = ""
  604. item.SoldChange = ""
  605. }
  606. data[0].Title = classifyName
  607. if data[0].ItemList == nil {
  608. list := make([]ShanghaiList, 200)
  609. data[0].ItemList = list
  610. }
  611. if data[0].ItemList[k].Code == item.ClassifyType {
  612. data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
  613. continue
  614. }
  615. if i > 0 {
  616. k++
  617. }
  618. data[0].ItemList[k].Code = item.ClassifyType
  619. data[0].ItemList[k].Item = append(data[0].ItemList[k].Item, item)
  620. }
  621. data[0].ItemList = data[0].ItemList[:k]
  622. br.Ret = 200
  623. br.Success = true
  624. br.Msg = "获取成功"
  625. br.Data = data
  626. } else {
  627. for _, item := range frequencyList {
  628. if item.DealCode == "" {
  629. item.DealValue = ""
  630. item.DealChange = ""
  631. }
  632. if item.BuyCode == "" {
  633. item.BuyValue = ""
  634. item.BuyChange = ""
  635. }
  636. if item.SoldCode == "" {
  637. item.SoldValue = ""
  638. item.SoldChange = ""
  639. }
  640. data[0].Title = item.ClassifyName
  641. if data[0].ItemList == nil {
  642. list := make([]ShanghaiList, 1)
  643. data[0].ItemList = list
  644. }
  645. if data[0].ItemList[0].Code == item.ClassifyType {
  646. data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
  647. continue
  648. }
  649. //if i != 0 {
  650. // k++
  651. // fmt.Println(k)
  652. //}
  653. data[0].ItemList[0].Code = item.ClassifyType
  654. data[0].ItemList[0].Item = append(data[0].ItemList[0].Item, item)
  655. }
  656. //data[0].ItemList = data[0].ItemList[:k]
  657. br.Ret = 200
  658. br.Success = true
  659. br.Msg = "获取成功"
  660. br.Data = data
  661. }
  662. }
  663. }
  664. // EicLatestDate
  665. // @title 获取欧洲天然气最新日期
  666. // @Description 获取欧洲天然气最新日期接口
  667. // @Success 200 {object} models.
  668. // @router /data/eicLatestDate [get]
  669. func (this *TradeCommonController) EicLatestDate() {
  670. br := new(models.BaseResponse).Init()
  671. defer func() {
  672. this.Data["json"] = br
  673. this.ServeJSON()
  674. }()
  675. latestData, err := data_manage.GetEicDate()
  676. if err != nil {
  677. br.Msg = "获取日期失败"
  678. br.ErrMsg = "获取日期失败,Err:" + err.Error()
  679. return
  680. }
  681. br.Ret = 200
  682. br.Success = true
  683. br.Msg = "获取成功"
  684. br.Data = latestData[0].GasDayStartedOn
  685. }
  686. // EicContinentList 欧洲天然气洲际及国家级列表
  687. // @title 获取欧洲天然气列表
  688. // @Description 获取欧洲天然气列表接口
  689. // @Param Date query string true "查询日期"
  690. // @Success 200 {object} models.
  691. // @router /data/eicContinent [get]
  692. func (this *TradeCommonController) EicContinentList() {
  693. br := new(models.BaseResponse).Init()
  694. defer func() {
  695. this.Data["json"] = br
  696. this.ServeJSON()
  697. }()
  698. date := this.GetString("Date")
  699. continentList, err := data_manage.GetContinentEicDate(date)
  700. if err != nil {
  701. br.Msg = "获取持仓排名失败"
  702. br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
  703. return
  704. }
  705. countryList, err := data_manage.GetCountryEicDate(date)
  706. if err != nil {
  707. br.Msg = "获取持仓排名失败"
  708. br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
  709. return
  710. }
  711. if len(countryList) == 0 || len(continentList) < 1 {
  712. br.Ret = 200
  713. br.Success = true
  714. br.Msg = "获取成功"
  715. br.Data = []EicData{}
  716. } else {
  717. countryLen := len(countryList)
  718. var euData = EicData{
  719. Country: "eu",
  720. Type: "continent",
  721. EicCode: "eu",
  722. ShortName: "eu",
  723. Name: "eu",
  724. Status: "N",
  725. GasDayStartedOn: "",
  726. GasInStorage: 0,
  727. GasInStorageCode: "euGS",
  728. Full: 0,
  729. FullCode: "euF",
  730. Trend: 0,
  731. TrendCode: "euT",
  732. Injection: 0,
  733. InjectionCode: "euIn",
  734. Withdrawal: 0,
  735. WithdrawalCode: "euOut",
  736. WorkingGasVolume: 0,
  737. WorkingGasVolumeCode: "euWGV",
  738. InjectionCapacity: 0,
  739. InjectionCapacityCode: "euIC",
  740. WithdrawalCapacity: 0,
  741. WithdrawalCapacityCode: "euWC",
  742. Info: "",
  743. Children: countryList[:countryLen-2],
  744. }
  745. var neData = EicData{
  746. Country: "ne",
  747. Type: "continent",
  748. EicCode: "ne",
  749. ShortName: "ne",
  750. Name: "ne",
  751. Status: "N",
  752. GasDayStartedOn: "",
  753. GasInStorage: 0,
  754. GasInStorageCode: "neGS",
  755. Full: 0,
  756. FullCode: "neF",
  757. Trend: 0,
  758. TrendCode: "neT",
  759. Injection: 0,
  760. InjectionCode: "neIn",
  761. Withdrawal: 0,
  762. WithdrawalCode: "neOut",
  763. WorkingGasVolume: 0,
  764. WorkingGasVolumeCode: "neWGV",
  765. InjectionCapacity: 0,
  766. InjectionCapacityCode: "neIC",
  767. WithdrawalCapacity: 0,
  768. WithdrawalCapacityCode: "neWC",
  769. Info: "",
  770. Children: countryList[countryLen-2:],
  771. }
  772. //如果洲际数据正常
  773. if continentList[0].Country == "eu" {
  774. gasInStorage, _ := strconv.ParseFloat(continentList[0].GasInStorage, 64)
  775. full, _ := strconv.ParseFloat(continentList[0].Full, 64)
  776. trend, _ := strconv.ParseFloat(continentList[0].Trend, 64)
  777. injection, _ := strconv.ParseFloat(continentList[0].Injection, 64)
  778. withdrawal, _ := strconv.ParseFloat(continentList[0].Withdrawal, 64)
  779. workingGasVolume, _ := strconv.ParseFloat(continentList[0].WorkingGasVolume, 64)
  780. injectionCapacity, _ := strconv.ParseFloat(continentList[0].InjectionCapacity, 64)
  781. withdrawalCapacity, _ := strconv.ParseFloat(continentList[0].WithdrawalCapacity, 64)
  782. euData = EicData{
  783. continentList[0].Country,
  784. continentList[0].Type,
  785. continentList[0].EicCode,
  786. continentList[0].ShortName,
  787. continentList[0].Name,
  788. continentList[0].Status,
  789. continentList[0].GasDayStartedOn,
  790. gasInStorage,
  791. continentList[0].GasInStorageCode,
  792. full,
  793. continentList[0].FullCode,
  794. trend,
  795. continentList[0].TrendCode,
  796. injection,
  797. continentList[0].InjectionCode,
  798. withdrawal,
  799. continentList[0].WithdrawalCode,
  800. workingGasVolume,
  801. continentList[0].WorkingGasVolumeCode,
  802. injectionCapacity,
  803. continentList[0].InjectionCapacityCode,
  804. withdrawalCapacity,
  805. continentList[0].WithdrawalCapacityCode,
  806. continentList[0].Info,
  807. countryList[:countryLen-2],
  808. }
  809. if len(continentList) > 1 {
  810. gasInStorage1, _ := strconv.ParseFloat(continentList[1].GasInStorage, 64)
  811. full1, _ := strconv.ParseFloat(continentList[1].Full, 64)
  812. trend1, _ := strconv.ParseFloat(continentList[1].Trend, 64)
  813. injection1, _ := strconv.ParseFloat(continentList[1].Injection, 64)
  814. withdrawal1, _ := strconv.ParseFloat(continentList[1].Withdrawal, 64)
  815. workingGasVolume1, _ := strconv.ParseFloat(continentList[1].WorkingGasVolume, 64)
  816. injectionCapacity1, _ := strconv.ParseFloat(continentList[1].InjectionCapacity, 64)
  817. withdrawalCapacity1, _ := strconv.ParseFloat(continentList[1].WithdrawalCapacity, 64)
  818. neData = EicData{
  819. continentList[1].Country,
  820. continentList[1].Type,
  821. continentList[1].EicCode,
  822. continentList[1].ShortName,
  823. continentList[1].Name,
  824. continentList[1].Status,
  825. continentList[1].GasDayStartedOn,
  826. gasInStorage1,
  827. continentList[1].GasInStorageCode,
  828. full1,
  829. continentList[1].FullCode,
  830. trend1,
  831. continentList[1].TrendCode,
  832. injection1,
  833. continentList[1].InjectionCode,
  834. withdrawal1,
  835. continentList[1].WithdrawalCode,
  836. workingGasVolume1,
  837. continentList[1].WorkingGasVolumeCode,
  838. injectionCapacity1,
  839. continentList[1].InjectionCapacityCode,
  840. withdrawalCapacity1,
  841. continentList[1].WithdrawalCapacityCode,
  842. continentList[1].Info,
  843. countryList[countryLen-2:],
  844. }
  845. }
  846. } else {
  847. //数据不正常,只有一个洲际数据时
  848. if continentList[0].Country == "eu" {
  849. gasInStorage, _ := strconv.ParseFloat(continentList[0].GasInStorage, 64)
  850. full, _ := strconv.ParseFloat(continentList[0].Full, 64)
  851. trend, _ := strconv.ParseFloat(continentList[0].Trend, 64)
  852. injection, _ := strconv.ParseFloat(continentList[0].Injection, 64)
  853. withdrawal, _ := strconv.ParseFloat(continentList[0].Withdrawal, 64)
  854. workingGasVolume, _ := strconv.ParseFloat(continentList[0].WorkingGasVolume, 64)
  855. injectionCapacity, _ := strconv.ParseFloat(continentList[0].InjectionCapacity, 64)
  856. withdrawalCapacity, _ := strconv.ParseFloat(continentList[0].WithdrawalCapacity, 64)
  857. euData = EicData{
  858. continentList[0].Country,
  859. continentList[0].Type,
  860. continentList[0].EicCode,
  861. continentList[0].ShortName,
  862. continentList[0].Name,
  863. continentList[0].Status,
  864. continentList[0].GasDayStartedOn,
  865. gasInStorage,
  866. continentList[0].GasInStorageCode,
  867. full,
  868. continentList[0].FullCode,
  869. trend,
  870. continentList[0].TrendCode,
  871. injection,
  872. continentList[0].InjectionCode,
  873. withdrawal,
  874. continentList[0].WithdrawalCode,
  875. workingGasVolume,
  876. continentList[0].WorkingGasVolumeCode,
  877. injectionCapacity,
  878. continentList[0].InjectionCapacityCode,
  879. withdrawalCapacity,
  880. continentList[0].WithdrawalCapacityCode,
  881. continentList[0].Info,
  882. countryList[:countryLen-2],
  883. }
  884. } else {
  885. gasInStorage1, _ := strconv.ParseFloat(continentList[0].GasInStorage, 64)
  886. full1, _ := strconv.ParseFloat(continentList[0].Full, 64)
  887. trend1, _ := strconv.ParseFloat(continentList[0].Trend, 64)
  888. injection1, _ := strconv.ParseFloat(continentList[0].Injection, 64)
  889. withdrawal1, _ := strconv.ParseFloat(continentList[0].Withdrawal, 64)
  890. workingGasVolume1, _ := strconv.ParseFloat(continentList[0].WorkingGasVolume, 64)
  891. injectionCapacity1, _ := strconv.ParseFloat(continentList[0].InjectionCapacity, 64)
  892. withdrawalCapacity1, _ := strconv.ParseFloat(continentList[0].WithdrawalCapacity, 64)
  893. neData = EicData{
  894. continentList[0].Country,
  895. continentList[0].Type,
  896. continentList[0].EicCode,
  897. continentList[0].ShortName,
  898. continentList[0].Name,
  899. continentList[0].Status,
  900. continentList[0].GasDayStartedOn,
  901. gasInStorage1,
  902. continentList[0].GasInStorageCode,
  903. full1,
  904. continentList[0].FullCode,
  905. trend1,
  906. continentList[0].TrendCode,
  907. injection1,
  908. continentList[0].InjectionCode,
  909. withdrawal1,
  910. continentList[0].WithdrawalCode,
  911. workingGasVolume1,
  912. continentList[0].WorkingGasVolumeCode,
  913. injectionCapacity1,
  914. continentList[0].InjectionCapacityCode,
  915. withdrawalCapacity1,
  916. continentList[0].WithdrawalCapacityCode,
  917. continentList[0].Info,
  918. countryList[countryLen-2:],
  919. }
  920. }
  921. }
  922. var data []EicData
  923. data = append(data, euData)
  924. data = append(data, neData)
  925. br.Ret = 200
  926. br.Success = true
  927. br.Msg = "获取成功"
  928. br.Data = data
  929. }
  930. }
  931. // EicDataList 欧洲天然气细节列表
  932. // @title 获取欧洲天然气列表
  933. // @Description 获取欧洲天然气列表接口
  934. // @Param Date query string true "查询日期"
  935. // @Param Country query string true "国家"
  936. // @Success 200 {object} models.
  937. // @router /data/eicData [get]
  938. func (this *TradeCommonController) EicDataList() {
  939. br := new(models.BaseResponse).Init()
  940. defer func() {
  941. this.Data["json"] = br
  942. this.ServeJSON()
  943. }()
  944. date := this.GetString("Date")
  945. country := this.GetString("Country")
  946. ssoList, err := data_manage.GetSSOEicDate(date, country)
  947. if err != nil {
  948. br.Msg = "获取持仓排名失败"
  949. br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
  950. return
  951. }
  952. storageList, err := data_manage.GetStorageEicDate(date, country)
  953. if err != nil {
  954. br.Msg = "获取持仓排名失败"
  955. br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
  956. return
  957. }
  958. var data []EicData
  959. for _, sso := range ssoList {
  960. gasInStorage, _ := strconv.ParseFloat(sso.GasInStorage, 64)
  961. full, _ := strconv.ParseFloat(sso.Full, 64)
  962. trend, _ := strconv.ParseFloat(sso.Trend, 64)
  963. injection, _ := strconv.ParseFloat(sso.Injection, 64)
  964. withdrawal, _ := strconv.ParseFloat(sso.Withdrawal, 64)
  965. workingGasVolume, _ := strconv.ParseFloat(sso.WorkingGasVolume, 64)
  966. injectionCapacity, _ := strconv.ParseFloat(sso.InjectionCapacity, 64)
  967. withdrawalCapacity, _ := strconv.ParseFloat(sso.WithdrawalCapacity, 64)
  968. item := EicData{
  969. sso.Country,
  970. sso.Type,
  971. sso.EicCode,
  972. sso.ShortName,
  973. sso.Name,
  974. sso.Status,
  975. sso.GasDayStartedOn,
  976. gasInStorage,
  977. sso.GasInStorageCode,
  978. full,
  979. sso.FullCode,
  980. trend,
  981. sso.TrendCode,
  982. injection,
  983. sso.InjectionCode,
  984. withdrawal,
  985. sso.WithdrawalCode,
  986. workingGasVolume,
  987. sso.WorkingGasVolumeCode,
  988. injectionCapacity,
  989. sso.InjectionCapacityCode,
  990. withdrawalCapacity,
  991. sso.WithdrawalCapacityCode,
  992. sso.Info,
  993. []*data_manage.BaseFromTradeEicIndex{},
  994. }
  995. for _, st := range storageList {
  996. if item.ShortName == st.ShortName {
  997. item.Children = append(item.Children, st)
  998. }
  999. }
  1000. data = append(data, item)
  1001. }
  1002. br.Ret = 200
  1003. br.Success = true
  1004. br.Msg = "获取成功"
  1005. br.Data = data
  1006. }
  1007. // EicHistoryData
  1008. // @title 获取欧洲天然气历史列表
  1009. // @Description 获取欧洲天然气历史列表接口
  1010. // @Param Code query string true "Code"
  1011. // @Param StartDate query string false "开始时间"
  1012. // @Param EndDate query string false "结束时间"
  1013. // @Success 200 {object} models.
  1014. // @router /data/eicHistoryData [get]
  1015. func (this *TradeCommonController) EicHistoryData() {
  1016. br := new(models.BaseResponse).Init()
  1017. defer func() {
  1018. this.Data["json"] = br
  1019. this.ServeJSON()
  1020. }()
  1021. code := this.GetString("Code")
  1022. startDate := this.GetString("StartDate")
  1023. endDate := this.GetString("EndDate")
  1024. var eicList []*data_manage.BaseFromTradeEicIndex
  1025. var err error
  1026. if endDate != "" {
  1027. eicList, err = data_manage.GetEicHistoryDateByDate(code, startDate, endDate)
  1028. if err != nil {
  1029. br.Msg = "获取持仓排名失败"
  1030. br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
  1031. return
  1032. }
  1033. } else {
  1034. eicList, err = data_manage.GetEicHistoryDate(code)
  1035. if err != nil {
  1036. br.Msg = "获取持仓排名失败"
  1037. br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
  1038. return
  1039. }
  1040. }
  1041. var data []EicData
  1042. for _, eic := range eicList {
  1043. gasInStorage, _ := strconv.ParseFloat(eic.GasInStorage, 64)
  1044. full, _ := strconv.ParseFloat(eic.Full, 64)
  1045. trend, _ := strconv.ParseFloat(eic.Trend, 64)
  1046. injection, _ := strconv.ParseFloat(eic.Injection, 64)
  1047. withdrawal, _ := strconv.ParseFloat(eic.Withdrawal, 64)
  1048. workingGasVolume, _ := strconv.ParseFloat(eic.WorkingGasVolume, 64)
  1049. injectionCapacity, _ := strconv.ParseFloat(eic.InjectionCapacity, 64)
  1050. withdrawalCapacity, _ := strconv.ParseFloat(eic.WithdrawalCapacity, 64)
  1051. item := EicData{
  1052. eic.Country,
  1053. eic.Type,
  1054. eic.EicCode,
  1055. eic.ShortName,
  1056. eic.Name,
  1057. eic.Status,
  1058. eic.GasDayStartedOn,
  1059. gasInStorage,
  1060. eic.GasInStorageCode,
  1061. full,
  1062. eic.FullCode,
  1063. trend,
  1064. eic.TrendCode,
  1065. injection,
  1066. eic.InjectionCode,
  1067. withdrawal,
  1068. eic.WithdrawalCode,
  1069. workingGasVolume,
  1070. eic.WorkingGasVolumeCode,
  1071. injectionCapacity,
  1072. eic.InjectionCapacityCode,
  1073. withdrawalCapacity,
  1074. eic.WithdrawalCapacityCode,
  1075. eic.Info,
  1076. []*data_manage.BaseFromTradeEicIndex{},
  1077. }
  1078. data = append(data, item)
  1079. }
  1080. br.Ret = 200
  1081. br.Success = true
  1082. br.Msg = "获取成功"
  1083. br.Data = data
  1084. }
  1085. //// EicHistoryDataByDate
  1086. //// @title 根据时间获取欧洲天然气历史列表
  1087. //// @Description 根据时间获取欧洲天然气历史列表
  1088. //// @Param Code query string true "Code"
  1089. //// @Param Date1 query string true "时间1"
  1090. //// @Param Date2 query string true "时间2"
  1091. //// @Success 200 {object} models.
  1092. //// @router /data/eicHistoryDataByDate [get]
  1093. //func (this *TradeCommonController) EicHistoryDataByDate() {
  1094. // br := new(models.BaseResponse).Init()
  1095. // defer func() {
  1096. // this.Data["json"] = br
  1097. // this.ServeJSON()
  1098. // }()
  1099. // code := this.GetString("Code")
  1100. // date1 := this.GetString("Date1")
  1101. // date2 := this.GetString("Date2")
  1102. // eicList, err := data_manage.GetEicHistoryDateByDate(code,date1,date2)
  1103. // if err != nil {
  1104. // br.Msg = "获取持仓排名失败"
  1105. // br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
  1106. // return
  1107. // }
  1108. // var data []EicData
  1109. // for _, eic := range eicList {
  1110. // gasInStorage, _ := strconv.ParseFloat(eic.GasInStorage, 64)
  1111. // full, _ := strconv.ParseFloat(eic.Full, 64)
  1112. // trend, _ := strconv.ParseFloat(eic.Trend, 64)
  1113. // injection, _ := strconv.ParseFloat(eic.Injection, 64)
  1114. // withdrawal, _ := strconv.ParseFloat(eic.Withdrawal, 64)
  1115. // workingGasVolume, _ := strconv.ParseFloat(eic.WorkingGasVolume, 64)
  1116. // injectionCapacity, _ := strconv.ParseFloat(eic.InjectionCapacity, 64)
  1117. // withdrawalCapacity, _ := strconv.ParseFloat(eic.WithdrawalCapacity, 64)
  1118. // item := EicData{
  1119. // eic.Country,
  1120. // eic.Type,
  1121. // eic.EicCode,
  1122. // eic.ShortName,
  1123. // eic.Name,
  1124. // eic.Status,
  1125. // eic.GasDayStartedOn,
  1126. // gasInStorage,
  1127. // eic.GasInStorageCode,
  1128. // full,
  1129. // eic.FullCode,
  1130. // trend,
  1131. // eic.TrendCode,
  1132. // injection,
  1133. // eic.InjectionCode,
  1134. // withdrawal,
  1135. // eic.WithdrawalCode,
  1136. // workingGasVolume,
  1137. // eic.WorkingGasVolumeCode,
  1138. // injectionCapacity,
  1139. // eic.InjectionCapacityCode,
  1140. // withdrawalCapacity,
  1141. // eic.WithdrawalCapacityCode,
  1142. // eic.Info,
  1143. // []*data_manage.BaseFromTradeEicIndex{},
  1144. // }
  1145. // data = append(data, item)
  1146. // }
  1147. //
  1148. // br.Ret = 200
  1149. // br.Success = true
  1150. // br.Msg = "获取成功"
  1151. // br.Data = data
  1152. //}
  1153. // CoalMineClassify
  1154. // @title 获取中国煤炭网分类列表
  1155. // @Description 获取中国煤炭网分类列表
  1156. // @Success 200 {object} models.
  1157. // @router /data/coalMineData/classify [get]
  1158. func (this *TradeCommonController) CoalMineClassify() {
  1159. br := new(models.BaseResponse).Init()
  1160. defer func() {
  1161. this.Data["json"] = br
  1162. this.ServeJSON()
  1163. }()
  1164. var coalList []data_manage.BaseFromCoalmineClassifyItem
  1165. var suffix string
  1166. var coal data_manage.BaseFromCoalmineClassifyItem
  1167. groups := []*string{}
  1168. var childs []data_manage.CoalChild
  1169. var child data_manage.CoalChild
  1170. list, err := data_manage.GetCoalmineClassifyList()
  1171. if err!= nil {
  1172. br.Msg = "获取煤炭分类数据失败"
  1173. br.ErrMsg = "获取煤炭度分类数据失败,Err: " + err.Error()
  1174. return
  1175. }
  1176. for _, v := range list {
  1177. if v.Suffix == "jsm_index" {
  1178. groups, err = data_manage.GetProvinceFromCoalmineIndex(suffix)
  1179. if err != nil {
  1180. br.Msg = "获取煤炭分类数据失败"
  1181. br.ErrMsg = "获取煤炭度分类数据失败,Err: " + err.Error()
  1182. return
  1183. }
  1184. coal.ClassifyId = 1
  1185. coal.ClassifyName = "晋陕蒙三省煤矿产量周度数据"
  1186. jsmId := 100
  1187. for _, group := range groups {
  1188. jsmId++
  1189. child.ClassifyId = jsmId
  1190. child.ClassifyName = *group
  1191. childs = append(childs, child)
  1192. }
  1193. coal.Child = childs
  1194. coalList = append(coalList, coal)
  1195. }
  1196. if v.Suffix == "company_index" {
  1197. groups = []*string{}
  1198. childs = []data_manage.CoalChild{}
  1199. groups, err = data_manage.GetGroupNameFromCoalmineIndex(suffix)
  1200. if err != nil {
  1201. br.Msg = "获取煤炭分类数据失败"
  1202. br.ErrMsg = "获取煤炭度分类数据失败,Err: " + err.Error()
  1203. return
  1204. }
  1205. coal.ClassifyId = 2
  1206. coal.ClassifyName = "442家晋陕蒙煤矿周度产量"
  1207. companyId := 200
  1208. for _, group := range groups {
  1209. companyId++
  1210. child.ClassifyId = companyId
  1211. child.ClassifyName = *group
  1212. childs = append(childs, child)
  1213. }
  1214. coal.Child = childs
  1215. coalList = append(coalList, coal)
  1216. }
  1217. if v.Suffix == "firm_index" {
  1218. groups = []*string{}
  1219. childs = []data_manage.CoalChild{}
  1220. groups, err = data_manage.GetGroupNameFromCoalmineIndex(suffix)
  1221. if err != nil {
  1222. br.Msg = "获取煤炭分类数据失败"
  1223. br.ErrMsg = "获取煤炭度分类数据失败,Err: " + err.Error()
  1224. return
  1225. }
  1226. coal.ClassifyId = 3
  1227. coal.ClassifyName = "全国分企业煤炭产量旬度数据"
  1228. firmId := 300
  1229. for _, group := range groups {
  1230. firmId++
  1231. child.ClassifyId = firmId
  1232. child.ClassifyName = *group
  1233. childs = append(childs, child)
  1234. }
  1235. coal.Child = childs
  1236. coalList = append(coalList, coal)
  1237. }
  1238. if v.Suffix == "coastal_index" {
  1239. groups = []*string{}
  1240. childs = []data_manage.CoalChild{}
  1241. groups, err = data_manage.GetGroupNameFromCoalmineIndex(suffix)
  1242. if err != nil {
  1243. br.Msg = "获取煤炭分类数据失败"
  1244. br.ErrMsg = "获取煤炭度分类数据失败,Err: " + err.Error()
  1245. return
  1246. }
  1247. coal.ClassifyId = 4
  1248. coal.ClassifyName = "沿海八省动力煤终端用户供耗存"
  1249. coastalId := 400
  1250. for _, group := range groups {
  1251. coastalId++
  1252. child.ClassifyId = coastalId
  1253. child.ClassifyName = *group
  1254. childs = append(childs, child)
  1255. }
  1256. coal.Child = childs
  1257. coalList = append(coalList, coal)
  1258. }
  1259. if v.Suffix == "inland_index" {
  1260. groups = []*string{}
  1261. childs = []data_manage.CoalChild{}
  1262. groups, err = data_manage.GetGroupNameFromCoalmineIndex(suffix)
  1263. if err != nil {
  1264. br.Msg = "获取煤炭分类数据失败"
  1265. br.ErrMsg = "获取煤炭度分类数据失败,Err: " + err.Error()
  1266. return
  1267. }
  1268. coal.ClassifyId = 5
  1269. coal.ClassifyName = "内陆17省动力煤终端用户供耗存"
  1270. inlandId := 500
  1271. for _, group := range groups {
  1272. inlandId++
  1273. child.ClassifyId = inlandId
  1274. child.ClassifyName = *group
  1275. childs = append(childs, child)
  1276. }
  1277. coal.Child = childs
  1278. coalList = append(coalList, coal)
  1279. }
  1280. }
  1281. br.Ret = 200
  1282. br.Success = true
  1283. br.Msg = "获取成功"
  1284. br.Data = coalList
  1285. }
  1286. // CoalMineFrequency
  1287. // @title 获取中国煤炭网频度
  1288. // @Description 获取中国煤炭网频度
  1289. // @Param ClassifyId query int true "数据id"
  1290. // @Success 200 {object} models.
  1291. // @router /data/coalMineData/frequency [get]
  1292. func (this *TradeCommonController) CoalMineFrequency() {
  1293. br := new(models.BaseResponse).Init()
  1294. defer func() {
  1295. this.Data["json"] = br
  1296. this.ServeJSON()
  1297. }()
  1298. classifyId, _ := this.GetInt("ClassifyId")
  1299. var suffix string
  1300. if classifyId == 1 {
  1301. suffix = "jsm_index"
  1302. } else if classifyId == 2 {
  1303. suffix = "company_index"
  1304. } else if classifyId == 3 {
  1305. suffix = "firm_index"
  1306. } else if classifyId == 4 {
  1307. suffix = "coastal_index"
  1308. } else if classifyId == 5 {
  1309. suffix = "inland_index"
  1310. }
  1311. frequency, err := data_manage.GetFrequencyFromCoal(suffix)
  1312. if err != nil {
  1313. br.Msg = "获取煤炭频度数据失败"
  1314. br.ErrMsg = "获取煤炭频度数据失败,Err:" + err.Error()
  1315. return
  1316. }
  1317. var resp data_manage.FrequencyResp
  1318. switch *frequency {
  1319. case "日度":
  1320. resp.Frequency = 1
  1321. case "周度":
  1322. resp.Frequency = 2
  1323. case "旬度":
  1324. resp.Frequency = 3
  1325. case "月度":
  1326. resp.Frequency = 4
  1327. case "季度":
  1328. resp.Frequency = 5
  1329. case "年度":
  1330. resp.Frequency = 6
  1331. default:
  1332. resp.Frequency = 99
  1333. }
  1334. var list []data_manage.FrequencyResp
  1335. list = append(list, resp)
  1336. br.Ret = 200
  1337. br.Success = true
  1338. br.Msg = "获取成功"
  1339. br.Data = list
  1340. }
  1341. // CoalMineData
  1342. // @title 获取中国煤炭网详细数据列表
  1343. // @Description 获取中国煤炭网详细数据接口
  1344. // @Param ClassifyId query int true "数据id"
  1345. // @Param GroupName query string true "分组名"
  1346. // @Param Frequency query string true "频度"
  1347. // @Param PageSize query int true "每页数据条数"
  1348. // @Param CurrentIndex query int true "当前页页码,从1开始"
  1349. // @Success 200 {object} []data_manage.CoalmineDataResp
  1350. // @router /data/coalMineData/data [get]
  1351. func (this *TradeCommonController) CoalMineData() {
  1352. br := new(models.BaseResponse).Init()
  1353. defer func() {
  1354. this.Data["json"] = br
  1355. this.ServeJSON()
  1356. }()
  1357. classifyId, _ := this.GetInt("ClassifyId")
  1358. frequency := this.GetString("Frequency")
  1359. groupName := this.GetString("GroupName")
  1360. pageSize, _ := this.GetInt("PageSize")
  1361. currentIndex, _ := this.GetInt("CurrentIndex")
  1362. var startSize int
  1363. if pageSize <= 0 {
  1364. pageSize = utils.PageSize20
  1365. }
  1366. if currentIndex <= 0 {
  1367. currentIndex = 1
  1368. }
  1369. startSize = utils.StartIndex(currentIndex, pageSize)
  1370. //var groups []*string
  1371. //var err error
  1372. //var suffix string
  1373. //if classifyId == 1 {
  1374. // suffix = "jsm_index"
  1375. //} else if classifyId == 2 {
  1376. // suffix = "company_index"
  1377. //} else if classifyId == 3 {
  1378. // suffix = "firm_index"
  1379. //} else if classifyId == 4 {
  1380. // suffix = "coastal_index"
  1381. //} else if classifyId == 5 {
  1382. // suffix = "inland_index"
  1383. //}
  1384. switch classifyId {
  1385. case 1:
  1386. classifies, err := data_manage.GetClassifyCoalmineIndexByGroupName(groupName)
  1387. if err != nil {
  1388. br.Msg = "获取煤炭数据失败"
  1389. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1390. return
  1391. }
  1392. var lists []data_manage.CoalmineDataPageResp
  1393. for _, classify := range classifies {
  1394. items, err := data_manage.GetPageFromCoalmineIndexByFrequency(frequency, *classify, startSize, pageSize)
  1395. if err != nil {
  1396. br.Msg = "获取煤炭数据失败"
  1397. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1398. return
  1399. }
  1400. total, err := data_manage.GetCountFromJsm(*classify)
  1401. if err != nil {
  1402. br.Msg = "获取煤炭数据失败"
  1403. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1404. return
  1405. }
  1406. page := paging.GetPaging(currentIndex, pageSize, total)
  1407. var resp data_manage.CoalmineDataPageResp
  1408. for i, item := range items {
  1409. if i == 0 {
  1410. resp.ModifyTime = item.CreateTime
  1411. }
  1412. resp.Paging = page
  1413. resp.IndexName = item.IndexName
  1414. resp.IndexCode = item.IndexCode
  1415. resp.Unit = item.Unit
  1416. resp.Frequency = item.Frequency
  1417. //组装dataList
  1418. var dataItem data_manage.DataList
  1419. dataItem.DataTime = item.DataTime
  1420. dataItem.Value = item.DealValue
  1421. resp.DataList = append(resp.DataList, dataItem)
  1422. }
  1423. lists = append(lists, resp)
  1424. }
  1425. br.Ret = 200
  1426. br.Success = true
  1427. br.Msg = "获取成功"
  1428. br.Data = lists
  1429. case 2:
  1430. classifies, err := data_manage.GetClassifyCompanyByGroupName(groupName)
  1431. if err != nil {
  1432. br.Msg = "获取煤炭数据失败"
  1433. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1434. return
  1435. }
  1436. var lists []data_manage.CoalmineDataPageResp
  1437. for _, classify := range classifies {
  1438. items, err := data_manage.GetPageFromCoalmineCompanyIndexByFrequency(frequency, *classify, startSize, pageSize)
  1439. if err != nil {
  1440. br.Msg = "获取煤炭数据失败"
  1441. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1442. return
  1443. }
  1444. total, err := data_manage.GetCountFromCompany(*classify)
  1445. if err != nil {
  1446. br.Msg = "获取煤炭数据失败"
  1447. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1448. return
  1449. }
  1450. page := paging.GetPaging(currentIndex, pageSize, total)
  1451. var resp data_manage.CoalmineDataPageResp
  1452. for i, item := range items {
  1453. if i == 0 {
  1454. resp.ModifyTime = item.CreateTime
  1455. }
  1456. resp.Paging = page
  1457. resp.IndexName = item.IndexName
  1458. resp.IndexCode = item.IndexCode
  1459. resp.Unit = item.Unit
  1460. resp.Frequency = item.Frequency
  1461. //组装dataList
  1462. var dataItem data_manage.DataList
  1463. dataItem.DataTime = item.DataTime
  1464. dataItem.Value = item.DealValue
  1465. resp.DataList = append(resp.DataList, dataItem)
  1466. }
  1467. lists = append(lists, resp)
  1468. }
  1469. br.Ret = 200
  1470. br.Success = true
  1471. br.Msg = "获取成功"
  1472. br.Data = lists
  1473. case 3:
  1474. classifies, err := data_manage.GetClassifyFirmByGroupName(groupName)
  1475. if err != nil {
  1476. br.Msg = "获取煤炭数据失败"
  1477. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1478. return
  1479. }
  1480. var lists []data_manage.CoalmineDataPageResp
  1481. for _, classify := range classifies {
  1482. items, err := data_manage.GetPageFromCoalmineFirmIndexByFrequency(frequency, *classify, startSize, pageSize)
  1483. if err != nil {
  1484. br.Msg = "获取煤炭数据失败"
  1485. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1486. return
  1487. }
  1488. total, err := data_manage.GetCountFromFirm(*classify)
  1489. if err != nil {
  1490. br.Msg = "获取煤炭数据失败"
  1491. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1492. return
  1493. }
  1494. page := paging.GetPaging(currentIndex, pageSize, total)
  1495. var resp data_manage.CoalmineDataPageResp
  1496. for i, item := range items {
  1497. if i == 0 {
  1498. resp.ModifyTime = item.CreateTime
  1499. }
  1500. resp.Paging = page
  1501. resp.IndexName = item.IndexName
  1502. resp.IndexCode = item.IndexCode
  1503. resp.Unit = item.Unit
  1504. resp.Frequency = item.Frequency
  1505. //组装dataList
  1506. var dataItem data_manage.DataList
  1507. dataItem.DataTime = item.DataTime
  1508. dataItem.Value = item.DealValue
  1509. resp.DataList = append(resp.DataList, dataItem)
  1510. }
  1511. lists = append(lists, resp)
  1512. }
  1513. br.Ret = 200
  1514. br.Success = true
  1515. br.Msg = "获取成功"
  1516. br.Data = lists
  1517. case 4:
  1518. classifies, err := data_manage.GetClassifyCoastalByGroupName(groupName)
  1519. if err != nil {
  1520. br.Msg = "获取煤炭数据失败"
  1521. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1522. return
  1523. }
  1524. var lists []data_manage.CoalmineDataPageResp
  1525. for _, classify := range classifies {
  1526. items, err := data_manage.GetPageFromCoalmineCoastalIndexByFrequency(frequency, *classify, startSize, pageSize)
  1527. if err != nil {
  1528. br.Msg = "获取煤炭数据失败"
  1529. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1530. return
  1531. }
  1532. total, err := data_manage.GetCountFromCoastal(*classify)
  1533. if err != nil {
  1534. br.Msg = "获取煤炭数据失败"
  1535. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1536. return
  1537. }
  1538. page := paging.GetPaging(currentIndex, pageSize, total)
  1539. var resp data_manage.CoalmineDataPageResp
  1540. for i, item := range items {
  1541. if i == 0 {
  1542. resp.ModifyTime = item.CreateTime
  1543. }
  1544. resp.Paging = page
  1545. resp.IndexName = item.IndexName
  1546. resp.IndexCode = item.IndexCode
  1547. resp.Unit = item.Unit
  1548. resp.Frequency = item.Frequency
  1549. //组装dataList
  1550. var dataItem data_manage.DataList
  1551. dataItem.DataTime = item.DataTime
  1552. dataItem.Value = item.DealValue
  1553. resp.DataList = append(resp.DataList, dataItem)
  1554. }
  1555. lists = append(lists, resp)
  1556. }
  1557. br.Ret = 200
  1558. br.Success = true
  1559. br.Msg = "获取成功"
  1560. br.Data = lists
  1561. case 5:
  1562. classifies, err := data_manage.GetClassifyInlandByGroupName(groupName)
  1563. if err != nil {
  1564. br.Msg = "获取煤炭数据失败"
  1565. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1566. return
  1567. }
  1568. var lists []data_manage.CoalmineDataPageResp
  1569. for _, classify := range classifies {
  1570. items, err := data_manage.GetPageFromCoalmineInlandIndexByFrequency(frequency, *classify, startSize, pageSize)
  1571. if err != nil {
  1572. br.Msg = "获取煤炭数据失败"
  1573. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1574. return
  1575. }
  1576. total, err := data_manage.GetCountFromInland(*classify)
  1577. if err != nil {
  1578. br.Msg = "获取煤炭数据失败"
  1579. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1580. return
  1581. }
  1582. page := paging.GetPaging(currentIndex, pageSize, total)
  1583. var resp data_manage.CoalmineDataPageResp
  1584. for i, item := range items {
  1585. if i == 0 {
  1586. resp.ModifyTime = item.CreateTime
  1587. }
  1588. resp.Paging = page
  1589. resp.IndexName = item.IndexName
  1590. resp.IndexCode = item.IndexCode
  1591. resp.Unit = item.Unit
  1592. resp.Frequency = item.Frequency
  1593. //组装dataList
  1594. var dataItem data_manage.DataList
  1595. dataItem.DataTime = item.DataTime
  1596. dataItem.Value = item.DealValue
  1597. resp.DataList = append(resp.DataList, dataItem)
  1598. }
  1599. lists = append(lists, resp)
  1600. }
  1601. br.Ret = 200
  1602. br.Success = true
  1603. br.Msg = "获取成功"
  1604. br.Data = lists
  1605. default:
  1606. br.Ret = 200
  1607. br.Success = true
  1608. br.Msg = "获取煤炭数据失败"
  1609. br.ErrMsg = "获取煤炭度数据失败,Err: classifyId 错误"
  1610. return
  1611. }
  1612. }
  1613. // CoalSearchList
  1614. // @Title 煤炭网模糊搜索
  1615. // @Description 煤炭网模糊搜索
  1616. // @Param Keyword query string ture "关键字搜索"
  1617. // @Success 200 {object} models.BaseResponse
  1618. // @router /data/coalMineData/search [get]
  1619. func (this *TradeCommonController) CoalSearchList() {
  1620. br := new(models.BaseResponse).Init()
  1621. defer func() {
  1622. this.Data["json"] = br
  1623. this.ServeJSON()
  1624. }()
  1625. //关键字
  1626. keyword := this.GetString("Keyword")
  1627. list, err := data_manage.GetCoalItemList(keyword)
  1628. if err != nil {
  1629. br.ErrMsg = "获取失败,Err:" + err.Error()
  1630. br.Msg = "获取失败"
  1631. return
  1632. }
  1633. br.Ret = 200
  1634. br.Success = true
  1635. br.Msg = "获取成功"
  1636. br.Data = list
  1637. }
  1638. // CoalSingleData
  1639. // @Title 获取煤炭单条数据
  1640. // @Description 获取煤炭单条数据
  1641. // @Param IndexCode query string true "指标唯一编码"
  1642. // @Success 200 {object} []data_manage.CoalmineSingalDataResp
  1643. // @router /data/coalMineData/single_data [get]
  1644. func (this *TradeCommonController) CoalSingleData() {
  1645. br := new(models.BaseResponse).Init()
  1646. defer func() {
  1647. this.Data["json"] = br
  1648. this.ServeJSON()
  1649. }()
  1650. indexCode := this.GetString("IndexCode")
  1651. var classifyId int
  1652. var suffix string
  1653. if strings.Contains(indexCode, "jsm") {
  1654. classifyId = 1
  1655. suffix = "jsm_index"
  1656. } else if strings.Contains(indexCode, "company") {
  1657. classifyId = 2
  1658. suffix = "company_index"
  1659. } else if strings.Contains(indexCode, "firm") {
  1660. classifyId = 3
  1661. suffix = "firm_index"
  1662. } else if strings.Contains(indexCode, "coastal") {
  1663. classifyId = 4
  1664. suffix = "coastal_index"
  1665. } else if strings.Contains(indexCode, "inland") {
  1666. classifyId = 5
  1667. suffix = "inland_index"
  1668. }
  1669. switch classifyId {
  1670. case 1:
  1671. items, err := data_manage.GetBaseFromCoalmineIndexByCode(indexCode)
  1672. if err != nil {
  1673. br.Msg = "获取煤炭数据失败"
  1674. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1675. return
  1676. }
  1677. groups, err := data_manage.GetProvinceFromCoalmineIndex(suffix)
  1678. if err != nil {
  1679. br.Msg = "获取煤炭分类数据失败"
  1680. br.ErrMsg = "获取煤炭度分类数据失败,Err: " + err.Error()
  1681. return
  1682. }
  1683. groupMap := make(map[string]int)
  1684. jsmId := 100
  1685. for _, group := range groups {
  1686. jsmId++
  1687. groupMap[*group] = jsmId
  1688. }
  1689. var lists []data_manage.CoalmineSingalDataResp
  1690. var resp data_manage.CoalmineSingalDataResp
  1691. classify := items[0].IndexName
  1692. for i, item := range items {
  1693. if item.IndexName != classify {
  1694. lists = append(lists, resp)
  1695. classify = item.IndexName
  1696. }
  1697. resp.IndexName = item.IndexName
  1698. resp.IndexCode = item.IndexCode
  1699. resp.GroupId = groupMap[item.Province]
  1700. resp.GroupName = item.Province
  1701. resp.Unit = item.Unit
  1702. resp.Frequency = item.Frequency
  1703. resp.ModifyTime = item.ModifyTime
  1704. resp.ClassifyId = classifyId
  1705. //组装dataList
  1706. var dataItem data_manage.DataList
  1707. dataItem.DataTime = item.DataTime
  1708. dataItem.Value = item.DealValue
  1709. resp.DataList = append(resp.DataList, dataItem)
  1710. if i == len(items)-1 {
  1711. lists = append(lists, resp)
  1712. }
  1713. }
  1714. br.Ret = 200
  1715. br.Success = true
  1716. br.Msg = "获取成功"
  1717. br.Data = lists
  1718. case 2:
  1719. items, err := data_manage.GetBaseFromCoalmineCompanyIndexByCode(indexCode)
  1720. if err != nil {
  1721. br.Msg = "获取煤炭数据失败"
  1722. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1723. return
  1724. }
  1725. groups, err := data_manage.GetGroupNameFromCoalmineIndex(suffix)
  1726. if err != nil {
  1727. br.Msg = "获取煤炭分类数据失败"
  1728. br.ErrMsg = "获取煤炭度分类数据失败,Err: " + err.Error()
  1729. return
  1730. }
  1731. groupMap := make(map[string]int)
  1732. companyId := 200
  1733. for _, group := range groups {
  1734. companyId++
  1735. groupMap[*group] = companyId
  1736. }
  1737. var lists []data_manage.CoalmineSingalDataResp
  1738. var resp data_manage.CoalmineSingalDataResp
  1739. classify := items[0].IndexName
  1740. for i, item := range items {
  1741. if item.IndexName != classify {
  1742. lists = append(lists, resp)
  1743. classify = item.IndexName
  1744. }
  1745. resp.IndexName = item.IndexName
  1746. resp.IndexCode = item.IndexCode
  1747. resp.Unit = item.Unit
  1748. resp.GroupId = groupMap[item.GroupName]
  1749. resp.GroupName = item.GroupName
  1750. resp.Frequency = item.Frequency
  1751. resp.ModifyTime = item.ModifyTime
  1752. resp.ClassifyId = classifyId
  1753. //组装dataList
  1754. var dataItem data_manage.DataList
  1755. dataItem.DataTime = item.DataTime
  1756. dataItem.Value = item.DealValue
  1757. resp.DataList = append(resp.DataList, dataItem)
  1758. if i == len(items)-1 {
  1759. lists = append(lists, resp)
  1760. }
  1761. }
  1762. br.Ret = 200
  1763. br.Success = true
  1764. br.Msg = "获取成功"
  1765. br.Data = lists
  1766. case 3:
  1767. items, err := data_manage.GetBaseFromCoalmineFirmIndexByCode(indexCode)
  1768. if err != nil {
  1769. br.Msg = "获取煤炭数据失败"
  1770. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1771. return
  1772. }
  1773. groups, err := data_manage.GetGroupNameFromCoalmineIndex(suffix)
  1774. if err != nil {
  1775. br.Msg = "获取煤炭分类数据失败"
  1776. br.ErrMsg = "获取煤炭度分类数据失败,Err: " + err.Error()
  1777. return
  1778. }
  1779. groupMap := make(map[string]int)
  1780. firmId := 300
  1781. for _, group := range groups {
  1782. firmId++
  1783. groupMap[*group] = firmId
  1784. }
  1785. var lists []data_manage.CoalmineSingalDataResp
  1786. var resp data_manage.CoalmineSingalDataResp
  1787. classify := items[0].IndexName
  1788. for i, item := range items {
  1789. if item.IndexName != classify {
  1790. lists = append(lists, resp)
  1791. classify = item.IndexName
  1792. }
  1793. resp.IndexName = item.IndexName
  1794. resp.IndexCode = item.IndexCode
  1795. resp.Unit = item.Unit
  1796. resp.GroupId = groupMap[item.GroupName]
  1797. resp.GroupName = item.GroupName
  1798. resp.Frequency = item.Frequency
  1799. resp.ModifyTime = item.ModifyTime
  1800. resp.ClassifyId = classifyId
  1801. //组装dataList
  1802. var dataItem data_manage.DataList
  1803. dataItem.DataTime = item.DataTime
  1804. dataItem.Value = item.DealValue
  1805. resp.DataList = append(resp.DataList, dataItem)
  1806. if i == len(items)-1 {
  1807. lists = append(lists, resp)
  1808. }
  1809. }
  1810. br.Ret = 200
  1811. br.Success = true
  1812. br.Msg = "获取成功"
  1813. br.Data = lists
  1814. case 4:
  1815. items, err := data_manage.GetBaseFromCoalmineCoastalIndexByCode(indexCode)
  1816. if err != nil {
  1817. br.Msg = "获取煤炭数据失败"
  1818. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1819. return
  1820. }
  1821. groups, err := data_manage.GetGroupNameFromCoalmineIndex(suffix)
  1822. if err != nil {
  1823. br.Msg = "获取煤炭分类数据失败"
  1824. br.ErrMsg = "获取煤炭度分类数据失败,Err: " + err.Error()
  1825. return
  1826. }
  1827. groupMap := make(map[string]int)
  1828. coastalId := 400
  1829. for _, group := range groups {
  1830. coastalId++
  1831. groupMap[*group] = coastalId
  1832. }
  1833. var lists []data_manage.CoalmineSingalDataResp
  1834. var resp data_manage.CoalmineSingalDataResp
  1835. classify := items[0].IndexName
  1836. for i, item := range items {
  1837. if item.IndexName != classify {
  1838. lists = append(lists, resp)
  1839. classify = item.IndexName
  1840. }
  1841. resp.IndexName = item.IndexName
  1842. resp.IndexCode = item.IndexCode
  1843. resp.Unit = item.Unit
  1844. resp.GroupId = groupMap[item.GroupName]
  1845. resp.GroupName = item.GroupName
  1846. resp.Frequency = item.Frequency
  1847. resp.ModifyTime = item.ModifyTime
  1848. resp.ClassifyId = classifyId
  1849. //组装dataList
  1850. var dataItem data_manage.DataList
  1851. dataItem.DataTime = item.DataTime
  1852. dataItem.Value = item.DealValue
  1853. resp.DataList = append(resp.DataList, dataItem)
  1854. if i == len(items)-1 {
  1855. lists = append(lists, resp)
  1856. }
  1857. }
  1858. br.Ret = 200
  1859. br.Success = true
  1860. br.Msg = "获取成功"
  1861. br.Data = lists
  1862. case 5:
  1863. items, err := data_manage.GetBaseFromCoalmineInlandIndexByCode(indexCode)
  1864. if err != nil {
  1865. br.Msg = "获取煤炭数据失败"
  1866. br.ErrMsg = "获取煤炭度数据失败,Err:" + err.Error()
  1867. return
  1868. }
  1869. groups, err := data_manage.GetGroupNameFromCoalmineIndex(suffix)
  1870. if err != nil {
  1871. br.Msg = "获取煤炭分类数据失败"
  1872. br.ErrMsg = "获取煤炭度分类数据失败,Err: " + err.Error()
  1873. return
  1874. }
  1875. groupMap := make(map[string]int)
  1876. inlandId := 500
  1877. for _, group := range groups {
  1878. inlandId++
  1879. groupMap[*group] = inlandId
  1880. }
  1881. var lists []data_manage.CoalmineSingalDataResp
  1882. var resp data_manage.CoalmineSingalDataResp
  1883. classify := items[0].IndexName
  1884. for i, item := range items {
  1885. if item.IndexName != classify {
  1886. lists = append(lists, resp)
  1887. classify = item.IndexName
  1888. }
  1889. resp.IndexName = item.IndexName
  1890. resp.IndexCode = item.IndexCode
  1891. resp.Unit = item.Unit
  1892. resp.GroupId = groupMap[item.GroupName]
  1893. resp.GroupName = item.GroupName
  1894. resp.Frequency = item.Frequency
  1895. resp.ModifyTime = item.ModifyTime
  1896. resp.ClassifyId = classifyId
  1897. //组装dataList
  1898. var dataItem data_manage.DataList
  1899. dataItem.DataTime = item.DataTime
  1900. dataItem.Value = item.DealValue
  1901. resp.DataList = append(resp.DataList, dataItem)
  1902. if i == len(items)-1 {
  1903. lists = append(lists, resp)
  1904. }
  1905. }
  1906. br.Ret = 200
  1907. br.Success = true
  1908. br.Msg = "获取成功"
  1909. br.Data = lists
  1910. default:
  1911. br.Msg = "获取煤炭数据失败"
  1912. br.ErrMsg = "获取煤炭度数据失败,Err: indexCode 错误"
  1913. return
  1914. }
  1915. }
  1916. // ExportCoalList
  1917. // @Title 导出煤炭数据
  1918. // @Description 导出煤炭数据
  1919. // @Param ClassifyId query int true "数据id"
  1920. // @Param IndexName query string true "名称关键词"
  1921. // @Param IndexCode query string true "指标唯一编码"
  1922. // @Param TypeName query string true "分类"
  1923. // @Param Frequency query string false "频度"
  1924. // @Param UnitName query string false "单位"
  1925. // @Success 200 导出成功
  1926. // @router /export/coalList [get]
  1927. func (this *TradeCommonController) ExportCoalList() {
  1928. br := new(models.BaseResponse).Init()
  1929. defer func() {
  1930. this.Data["json"] = br
  1931. this.ServeJSON()
  1932. }()
  1933. classifyId, _ := this.GetInt("ClassifyId")
  1934. var suffix string
  1935. if classifyId == 1 {
  1936. suffix = "jsm_index"
  1937. } else if classifyId == 2 {
  1938. suffix = "company_index"
  1939. } else if classifyId == 3 {
  1940. suffix = "firm_index"
  1941. } else if classifyId == 4 {
  1942. suffix = "coastal_index"
  1943. } else if classifyId == 5 {
  1944. suffix = "inland_index"
  1945. }
  1946. breedName := this.GetString("TypeName") //分类
  1947. secNameList := make([]*models.EdbdataExportList, 0)
  1948. dir, _ := os.Executable()
  1949. exPath := filepath.Dir(dir)
  1950. downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
  1951. xlsxFile := xlsx.NewFile()
  1952. //不为空就是导出分类表
  1953. if breedName != "" {
  1954. //获取指标
  1955. var secNameList []*string
  1956. var err error
  1957. if classifyId == 1 {
  1958. secNameList, err = data_manage.GetClassifyJsmByGroupName(breedName)
  1959. if err != nil {
  1960. fmt.Println("获取数据失败,Err:" + err.Error())
  1961. return
  1962. }
  1963. } else {
  1964. secNameList, err = data_manage.GetClassifyFromCoalByGroupName(suffix, breedName)
  1965. if err != nil {
  1966. fmt.Println("获取数据失败,Err:" + err.Error())
  1967. return
  1968. }
  1969. }
  1970. if len(secNameList) <= 0 {
  1971. fmt.Println("secNameList长度为0")
  1972. return
  1973. }
  1974. sheetNew, err := xlsxFile.AddSheet(breedName)
  1975. if err != nil {
  1976. fmt.Println("新增Sheet失败", err.Error())
  1977. return
  1978. }
  1979. //sheetNew.SetColWidth()
  1980. //获取指标数据
  1981. windRow := sheetNew.AddRow()
  1982. secNameRow := sheetNew.AddRow()
  1983. indexCodeRow := sheetNew.AddRow()
  1984. frequencyRow := sheetNew.AddRow()
  1985. unitRow := sheetNew.AddRow()
  1986. lastModifyDateRow := sheetNew.AddRow()
  1987. //获取分类下指标最大数据量
  1988. var dataMax int
  1989. if classifyId == 1 {
  1990. dataMax, err = data_manage.GetCoalJsmMaxCount(breedName)
  1991. if err != nil {
  1992. fmt.Println("获取指标最大数据量失败", err.Error())
  1993. return
  1994. }
  1995. } else {
  1996. dataMax, err = data_manage.GetCoalCompanyMaxCount(suffix, breedName)
  1997. if err != nil {
  1998. fmt.Println("获取指标最大数据量失败", err.Error())
  1999. return
  2000. }
  2001. }
  2002. setRowIndex := 6
  2003. for k, sv := range secNameList {
  2004. //获取数据
  2005. dataList, err := data_manage.GetBaseFromCoalIndexByCode(suffix, *sv)
  2006. if err != nil {
  2007. br.Msg = "获取数据失败"
  2008. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  2009. return
  2010. }
  2011. windRow.AddCell().SetValue(breedName)
  2012. secNameRow.AddCell().SetValue("指标名称")
  2013. indexCodeRow.AddCell().SetValue("指标ID")
  2014. frequencyRow.AddCell().SetValue("频率")
  2015. unitRow.AddCell().SetValue("单位")
  2016. lastModifyDateRow.AddCell().SetValue("更新时间")
  2017. secNameRow.AddCell().SetValue(dataList[0].IndexName)
  2018. indexCodeRow.AddCell().SetValue(dataList[0].IndexCode)
  2019. frequencyRow.AddCell().SetValue(dataList[0].Frequency)
  2020. unitRow.AddCell().SetValue(dataList[0].Unit)
  2021. lastModifyDateRow.AddCell().SetValue(dataList[0].ModifyTime)
  2022. windRow.AddCell()
  2023. windRow.AddCell()
  2024. secNameRow.AddCell()
  2025. indexCodeRow.AddCell()
  2026. frequencyRow.AddCell()
  2027. unitRow.AddCell()
  2028. lastModifyDateRow.AddCell()
  2029. min := k * 3
  2030. sheetNew.SetColWidth(min, min, 15)
  2031. if len(dataList) <= 0 {
  2032. for n := 0; n < dataMax; n++ {
  2033. rowIndex := setRowIndex + n
  2034. row := sheetNew.Row(rowIndex)
  2035. row.AddCell()
  2036. row.AddCell()
  2037. row.AddCell()
  2038. }
  2039. } else {
  2040. endRowIndex := 0
  2041. for rk, dv := range dataList {
  2042. rowIndex := setRowIndex + rk
  2043. row := sheetNew.Row(rowIndex)
  2044. if classifyId == 3 {
  2045. displayDateCell := row.AddCell()
  2046. displayDateCell.SetValue(dv.DataTime)
  2047. } else {
  2048. displayDate, _ := time.Parse(utils.FormatDate, dv.DataTime)
  2049. displayDateCell := row.AddCell()
  2050. style := new(xlsx.Style)
  2051. style.ApplyAlignment = true
  2052. style.Alignment.WrapText = true
  2053. displayDateCell.SetStyle(style)
  2054. displayDateCell.SetDate(displayDate)
  2055. }
  2056. row.AddCell().SetValue(dv.DealValue)
  2057. row.AddCell()
  2058. endRowIndex = rowIndex
  2059. }
  2060. if len(dataList) < dataMax {
  2061. dataLen := dataMax - len(dataList)
  2062. for n := 0; n < dataLen; n++ {
  2063. rowIndex := (endRowIndex + 1) + n
  2064. row := sheetNew.Row(rowIndex)
  2065. row.AddCell()
  2066. row.AddCell()
  2067. row.AddCell()
  2068. }
  2069. }
  2070. }
  2071. }
  2072. } else {
  2073. name := this.GetString("IndexName")
  2074. indexCode := this.GetString("IndexCode") //指标唯一编码
  2075. unit := this.GetString("UnitName")
  2076. modifyTime := this.GetString("ModifyTime")
  2077. sheet, err := xlsxFile.AddSheet("指标")
  2078. if err != nil {
  2079. br.Msg = "新增Sheet失败"
  2080. br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
  2081. return
  2082. }
  2083. //获取数据
  2084. dataList, err := data_manage.GetBaseFromCoalIndexByCode(suffix, indexCode)
  2085. if err != nil {
  2086. br.Msg = "获取数据失败"
  2087. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  2088. return
  2089. }
  2090. //获取指标数据
  2091. windRow := sheet.AddRow()
  2092. windRow.AddCell().SetValue("中国煤炭网")
  2093. rowSecName := sheet.AddRow()
  2094. celSecName := rowSecName.AddCell()
  2095. celSecName.SetValue("指标名称")
  2096. cellSenName := rowSecName.AddCell()
  2097. cellSenName.SetValue(name)
  2098. indexCodeRow := sheet.AddRow()
  2099. indexCodeRow.AddCell().SetValue("指标ID")
  2100. indexCodeRow.AddCell().SetValue(indexCode)
  2101. rowFrequency := sheet.AddRow()
  2102. celFrequency := rowFrequency.AddCell()
  2103. celFrequency.SetValue("频率")
  2104. rowFrequency.AddCell().SetValue(dataList[0].Frequency)
  2105. rowUnit := sheet.AddRow()
  2106. celUnit := rowUnit.AddCell()
  2107. celUnit.SetValue("单位")
  2108. cellUnit := rowUnit.AddCell()
  2109. cellUnit.SetValue(unit)
  2110. rowModifyDate := sheet.AddRow()
  2111. rowModifyCell := rowModifyDate.AddCell()
  2112. rowModifyCell.SetValue("更新时间")
  2113. rowModifyCell = rowModifyDate.AddCell()
  2114. rowModifyCell.SetValue(modifyTime)
  2115. fmt.Println("len(dataList):", len(dataList))
  2116. dataMax, err := data_manage.GetCoalCount(suffix, breedName)
  2117. if err != nil {
  2118. fmt.Println("获取指标最大数据量失败", err.Error())
  2119. return
  2120. }
  2121. fmt.Println("dataMax:", dataMax)
  2122. if len(dataList) <= 0 {
  2123. for n := 0; n < dataMax; n++ {
  2124. rowIndex := 6 + n
  2125. row := sheet.Row(rowIndex)
  2126. row.AddCell()
  2127. row.AddCell()
  2128. row.AddCell()
  2129. }
  2130. } else {
  2131. endRowIndex := 0
  2132. for rk, dv := range dataList {
  2133. rowIndex := 6 + rk
  2134. row := sheet.Row(rowIndex)
  2135. displayDate, _ := time.Parse(utils.FormatDate, dv.DataTime)
  2136. displayDateCell := row.AddCell()
  2137. style := new(xlsx.Style)
  2138. style.ApplyAlignment = true
  2139. style.Alignment.WrapText = true
  2140. displayDateCell.SetStyle(style)
  2141. displayDateCell.SetDate(displayDate)
  2142. row.AddCell().SetValue(dv.DealValue)
  2143. row.AddCell()
  2144. endRowIndex = rowIndex
  2145. }
  2146. if len(dataList) < dataMax {
  2147. dataLen := dataMax - len(dataList)
  2148. for n := 0; n < dataLen; n++ {
  2149. rowIndex := (endRowIndex + 1) + n
  2150. row := sheet.Row(rowIndex)
  2151. row.AddCell()
  2152. row.AddCell()
  2153. row.AddCell()
  2154. }
  2155. }
  2156. }
  2157. }
  2158. err := xlsxFile.Save(downLoadnFilePath)
  2159. if err != nil {
  2160. br.Msg = "保存文件失败"
  2161. br.ErrMsg = "保存文件失败"
  2162. return
  2163. }
  2164. fileName := `中国煤炭网数据`
  2165. if len(secNameList) > 0 {
  2166. fileName = secNameList[0].ClassifyName
  2167. }
  2168. fileName += time.Now().Format("06.01.02") + `.xlsx` //文件名称
  2169. this.Ctx.Output.Download(downLoadnFilePath, fileName)
  2170. defer func() {
  2171. os.Remove(downLoadnFilePath)
  2172. }()
  2173. br.Ret = 200
  2174. br.Success = true
  2175. br.Msg = "success"
  2176. }
  2177. // EicLatestDateV2
  2178. // @title 获取欧洲天然气最新日期V2
  2179. // @Description 获取欧洲天然气最新日期接口
  2180. // @Success 200 {object} models.
  2181. // @router /data/eicLatestDateV2 [get]
  2182. func (this *TradeCommonController) EicLatestDateV2() {
  2183. br := new(models.BaseResponse).Init()
  2184. defer func() {
  2185. this.Data["json"] = br
  2186. this.ServeJSON()
  2187. }()
  2188. latestData, err := data_manage.GetEicDateV2()
  2189. if err != nil {
  2190. br.Msg = "获取日期失败"
  2191. br.ErrMsg = "获取日期失败,Err:" + err.Error()
  2192. return
  2193. }
  2194. br.Ret = 200
  2195. br.Success = true
  2196. br.Msg = "获取成功"
  2197. br.Data = latestData[0].GasDayStart
  2198. }
  2199. type EicDataV2 struct {
  2200. Name string `json:"name" description:"指标名称"`
  2201. Code string `json:"code" description:"指标编码"`
  2202. GasDayStart string `json:"gasDayStart" description:"指标日期"`
  2203. GasInStorage float64 `json:"gasInStorage" description:"储存容量"`
  2204. Consumption string `json:"consumption" description:"消耗"`
  2205. ConsumptionFull string `json:"consumptionFull" description:"消耗百分比"`
  2206. Injection float64 `json:"injection" description:"注入量"`
  2207. Withdrawal float64 `json:"withdrawal" description:"减少量"`
  2208. WorkingGasVolume float64 `json:"workingGasVolume" description:"工作气体量"`
  2209. InjectionCapacity float64 `json:"injectionCapacity" description:"注入速度"`
  2210. WithdrawalCapacity float64 `json:"withdrawalCapacity" description:"减少速度"`
  2211. Status string `json:"status" description:"状态"`
  2212. Trend float64 `json:"trend" description:"较前日对比"`
  2213. Full float64 `json:"full" description:"储存容量百分比"`
  2214. Info string `json:"info" description:"信息"`
  2215. Children []EicDataV2 `json:"children"`
  2216. }
  2217. // eicDataV2
  2218. // @title 获取欧洲天然气列表
  2219. // @Description 获取欧洲天然气列表接口
  2220. // @Param Date query string true "查询日期"
  2221. // @Success 200 {object} models.
  2222. // @router /data/eicDataV2 [get]
  2223. func (this *TradeCommonController) EicDataV2() {
  2224. br := new(models.BaseResponse).Init()
  2225. defer func() {
  2226. this.Data["json"] = br
  2227. this.ServeJSON()
  2228. }()
  2229. date := this.GetString("Date")
  2230. list, err := data_manage.GetEicDataV2(date)
  2231. if err != nil {
  2232. br.Msg = "获取天然气数据失败"
  2233. br.ErrMsg = "获取天然气数据失败,Err:" + err.Error()
  2234. return
  2235. }
  2236. var continentItems []data_manage.BaseFromTradeEicIndexV2
  2237. var countryItems []data_manage.BaseFromTradeEicIndexV2
  2238. var ssoItems []data_manage.BaseFromTradeEicIndexV2
  2239. var facItems []data_manage.BaseFromTradeEicIndexV2
  2240. for _, item := range list {
  2241. switch item.Type {
  2242. case "continent":
  2243. continentItems = append(continentItems, *item)
  2244. case "country":
  2245. countryItems = append(countryItems, *item)
  2246. case "sso":
  2247. ssoItems = append(ssoItems, *item)
  2248. case "fac":
  2249. facItems = append(facItems, *item)
  2250. default:
  2251. continue
  2252. }
  2253. }
  2254. var data []data_manage.BaseFromTradeEicIndexV2
  2255. data = continentItems
  2256. for i, continentItem := range continentItems {
  2257. for _, countryItem := range countryItems {
  2258. if countryItem.Parent == continentItem.Name {
  2259. data[i].Children = append(data[i].Children, countryItem)
  2260. }
  2261. }
  2262. for j, country := range data[i].Children {
  2263. for _, ssoItem := range ssoItems {
  2264. if country.Name == ssoItem.Parent {
  2265. data[i].Children[j].Children = append(data[i].Children[j].Children, ssoItem)
  2266. }
  2267. }
  2268. for k, sso := range data[i].Children[j].Children {
  2269. for _, facItem := range facItems {
  2270. if sso.Name == facItem.Parent {
  2271. data[i].Children[j].Children[k].Children = append(data[i].Children[j].Children[k].Children, facItem)
  2272. }
  2273. }
  2274. }
  2275. }
  2276. }
  2277. br.Ret = 200
  2278. br.Success = true
  2279. br.Msg = "获取成功"
  2280. br.Data = data
  2281. }
  2282. // EicHistoryDataV2
  2283. // @title 获取欧洲天然气历史列表
  2284. // @Description 获取欧洲天然气历史列表接口
  2285. // @Param Code query string true "Code"
  2286. // @Param StartDate query string false "开始时间"
  2287. // @Param EndDate query string false "结束时间"
  2288. // @Success 200 {object} []EicDataV2
  2289. // @router /data/eicHistoryDataV2 [get]
  2290. func (this *TradeCommonController) EicHistoryDataV2() {
  2291. br := new(models.BaseResponse).Init()
  2292. defer func() {
  2293. this.Data["json"] = br
  2294. this.ServeJSON()
  2295. }()
  2296. code := this.GetString("Code")
  2297. startDate := this.GetString("StartDate")
  2298. endDate := this.GetString("EndDate")
  2299. var eicList []*data_manage.BaseFromTradeEicIndexV2
  2300. var err error
  2301. if endDate != "" {
  2302. eicList, err = data_manage.GetEicHistoryDateByDateV2(code, startDate, endDate)
  2303. if err != nil {
  2304. br.Msg = "获取持仓排名失败"
  2305. br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
  2306. return
  2307. }
  2308. } else {
  2309. eicList, err = data_manage.GetEicHistoryDateV2(code)
  2310. if err != nil {
  2311. br.Msg = "获取持仓排名失败"
  2312. br.ErrMsg = "获取持仓排名失败,Err:" + err.Error()
  2313. return
  2314. }
  2315. }
  2316. var data []EicDataV2
  2317. for _, eic := range eicList {
  2318. item := EicDataV2{
  2319. Name: eic.Name,
  2320. Code: eic.EicCode,
  2321. GasDayStart: eic.GasDayStart,
  2322. GasInStorage: eic.GasInStorage,
  2323. Consumption: eic.Consumption,
  2324. ConsumptionFull: eic.ConsumptionFull,
  2325. Injection: eic.Injection,
  2326. Withdrawal: eic.Withdrawal,
  2327. WorkingGasVolume: eic.WorkingGasVolume,
  2328. InjectionCapacity: eic.InjectionCapacity,
  2329. WithdrawalCapacity: eic.WithdrawalCapacity,
  2330. Status: eic.Status,
  2331. Trend: eic.Trend,
  2332. Full: eic.Full,
  2333. Info: eic.Info,
  2334. }
  2335. data = append(data, item)
  2336. }
  2337. br.Ret = 200
  2338. br.Success = true
  2339. br.Msg = "获取成功"
  2340. br.Data = data
  2341. }
  2342. // eicContinentV2 欧洲天然气洲际及国家级列表
  2343. // @title 欧洲天然气洲际及国家级列表
  2344. // @Description 欧洲天然气洲际及国家级列表
  2345. // @Param Date query string true "查询日期"
  2346. // @Success 200 {object} []data_manage.BaseFromTradeEicIndexV2
  2347. // @router /data/eicContinentV2 [get]
  2348. func (this *TradeCommonController) EicContinentListV2() {
  2349. br := new(models.BaseResponse).Init()
  2350. defer func() {
  2351. this.Data["json"] = br
  2352. this.ServeJSON()
  2353. }()
  2354. date := this.GetString("Date")
  2355. list, err := data_manage.GetContinentAndCountryEicDateV2(date)
  2356. if err != nil {
  2357. br.Msg = "获取天然气数据失败"
  2358. br.ErrMsg = "获取天然气数据失败,Err:" + err.Error()
  2359. return
  2360. }
  2361. var continentItems []data_manage.BaseFromTradeEicIndexV2
  2362. var countryItems []data_manage.BaseFromTradeEicIndexV2
  2363. for _, item := range list {
  2364. switch item.Type {
  2365. case "continent":
  2366. continentItems = append(continentItems, *item)
  2367. case "country":
  2368. countryItems = append(countryItems, *item)
  2369. default:
  2370. continue
  2371. }
  2372. }
  2373. var data []data_manage.BaseFromTradeEicIndexV2
  2374. data = continentItems
  2375. for i, continentItem := range continentItems {
  2376. for _, countryItem := range countryItems {
  2377. if countryItem.Parent == continentItem.Name {
  2378. data[i].Children = append(data[i].Children, countryItem)
  2379. }
  2380. }
  2381. }
  2382. br.Ret = 200
  2383. br.Success = true
  2384. br.Msg = "获取成功"
  2385. br.Data = data
  2386. }
  2387. // EicDataListV2 欧洲天然气细节列表
  2388. // @title 欧洲天然气细节列表
  2389. // @Description 欧洲天然气细节列表
  2390. // @Param Date query string true "查询日期"
  2391. // @Param Name query string true "国家"
  2392. // @Success 200 {object} []data_manage.BaseFromTradeEicIndexV2
  2393. // @router /data/eicSSODataV2 [get]
  2394. func (this *TradeCommonController) EicDataListV2() {
  2395. br := new(models.BaseResponse).Init()
  2396. defer func() {
  2397. this.Data["json"] = br
  2398. this.ServeJSON()
  2399. }()
  2400. date := this.GetString("Date")
  2401. name := this.GetString("Name")
  2402. list, err := data_manage.GetSSOAndFacEicDateV2(date, name)
  2403. if err != nil {
  2404. br.Msg = "获取天然气数据失败"
  2405. br.ErrMsg = "获取天然气数据失败,Err:" + err.Error()
  2406. return
  2407. }
  2408. var ssoItems []data_manage.BaseFromTradeEicIndexV2
  2409. var facItems []data_manage.BaseFromTradeEicIndexV2
  2410. for _, item := range list {
  2411. switch item.Type {
  2412. case "sso":
  2413. ssoItems = append(ssoItems, *item)
  2414. case "fac":
  2415. facItems = append(facItems, *item)
  2416. default:
  2417. continue
  2418. }
  2419. }
  2420. i := 0
  2421. var data []data_manage.BaseFromTradeEicIndexV2
  2422. for _, ssoItem := range ssoItems {
  2423. if ssoItem.Parent == name {
  2424. data = append(data, ssoItem)
  2425. for _, facItem := range facItems {
  2426. if facItem.Parent == ssoItem.Name {
  2427. data[i].Children = append(data[i].Children, facItem)
  2428. }
  2429. }
  2430. i++
  2431. }
  2432. }
  2433. br.Ret = 200
  2434. br.Success = true
  2435. br.Msg = "获取成功"
  2436. br.Data = data
  2437. }