init_base_index.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644
  1. package services
  2. import (
  3. "encoding/json"
  4. "eta/eta_data_init/models"
  5. "eta/eta_data_init/utils"
  6. "fmt"
  7. "github.com/xuri/excelize/v2"
  8. "os"
  9. "path/filepath"
  10. "strings"
  11. )
  12. // InitBaseIndexData 初始化基础指标数据
  13. func InitBaseIndexData(dataPath string) {
  14. var err error
  15. defer func() {
  16. if err != nil {
  17. fmt.Println("InitBaseIndexData Err:" + err.Error())
  18. }
  19. }()
  20. //读取excel
  21. path, err := filepath.Abs(os.Args[0])
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. dir := filepath.Dir(path)
  26. fmt.Println("dir:" + dir)
  27. //dataPath := dir + "/docs/东吴ETA同花顺指标20230925.xlsx"
  28. dataPath = dir + dataPath
  29. fmt.Println("dataPath:" + dataPath)
  30. f, err := excelize.OpenFile(dataPath)
  31. if err != nil {
  32. fmt.Println(err)
  33. return
  34. }
  35. defer func() {
  36. // Close the spreadsheet.
  37. if err := f.Close(); err != nil {
  38. fmt.Println(err)
  39. }
  40. }()
  41. rows, err := f.GetRows("Sheet1")
  42. if err != nil {
  43. fmt.Println(err)
  44. return
  45. }
  46. fmt.Println("rows len:", len(rows))
  47. for rk, row := range rows {
  48. if rk > 0 {
  49. var classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source string
  50. for ck, colCell := range row {
  51. switch ck {
  52. case 0:
  53. classifyFirst = colCell
  54. case 1:
  55. classifySecond = colCell
  56. case 2:
  57. classifyThree = colCell
  58. case 3:
  59. indexCode = colCell
  60. case 4:
  61. indexName = colCell
  62. case 5:
  63. frequency = colCell
  64. case 6:
  65. unit = colCell
  66. case 7:
  67. source = colCell
  68. }
  69. }
  70. if classifyFirst != "" &&
  71. classifySecond != "" &&
  72. classifyThree != "" &&
  73. indexCode != "" &&
  74. indexName != "" &&
  75. unit != "" &&
  76. frequency != "" &&
  77. source != "" {
  78. method := "classify/get_or_add"
  79. classifyFirstMap := make(map[string]interface{})
  80. classifyFirstMap["ClassifyName"] = classifyFirst
  81. classifyFirstMap["ParentId"] = 0
  82. classifyFirstMap["Level"] = 0
  83. classifyFirstMap["ClassifyType"] = 0
  84. result, err := PostEdbLib(classifyFirstMap, method)
  85. if err != nil {
  86. utils.FileLog.Info("初始化分类1失败:" + err.Error())
  87. return
  88. }
  89. resp := new(models.ClassifyResp)
  90. err = json.Unmarshal(result, &resp)
  91. if err != nil {
  92. utils.FileLog.Info("初始化分类1失败:" + err.Error())
  93. return
  94. }
  95. if resp.Ret != 200 {
  96. utils.FileLog.Info("初始化分类1失败:" + resp.Msg + ";" + resp.ErrMsg)
  97. return
  98. }
  99. classifySecondMap := make(map[string]interface{})
  100. classifySecondMap["ClassifyName"] = classifySecond
  101. classifySecondMap["ParentId"] = resp.Data.ClassifyId
  102. classifySecondMap["Level"] = 1
  103. classifySecondMap["ClassifyType"] = 0
  104. result, err = PostEdbLib(classifySecondMap, method)
  105. if err != nil {
  106. utils.FileLog.Info("初始化分类2失败:" + err.Error())
  107. return
  108. }
  109. resp = new(models.ClassifyResp)
  110. err = json.Unmarshal(result, &resp)
  111. if err != nil {
  112. utils.FileLog.Info("初始化分类2失败:" + err.Error())
  113. return
  114. }
  115. if resp.Ret != 200 {
  116. utils.FileLog.Info("初始化分类2失败:" + resp.Msg + ";" + resp.ErrMsg)
  117. return
  118. }
  119. classifyThreeMap := make(map[string]interface{})
  120. classifyThreeMap["ClassifyName"] = classifyThree
  121. classifyThreeMap["ParentId"] = resp.Data.ClassifyId
  122. classifyThreeMap["Level"] = 2
  123. classifyThreeMap["ClassifyType"] = 0
  124. result, err = PostEdbLib(classifyThreeMap, method)
  125. if err != nil {
  126. utils.FileLog.Info("初始化分类3失败:" + err.Error())
  127. return
  128. }
  129. resp = new(models.ClassifyResp)
  130. err = json.Unmarshal(result, &resp)
  131. if err != nil {
  132. utils.FileLog.Info("初始化分类3失败:" + err.Error())
  133. return
  134. }
  135. if resp.Ret != 200 {
  136. utils.FileLog.Info("初始化分类3失败:" + resp.Msg + ";" + resp.ErrMsg)
  137. return
  138. }
  139. method = "edb_info/add"
  140. sourceId, ok := IndexSourceMap[source]
  141. if !ok {
  142. fmt.Println("source is not defined")
  143. fmt.Println(classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source)
  144. continue
  145. }
  146. indexMap := make(map[string]interface{})
  147. indexMap["Source"] = sourceId
  148. indexMap["EdbCode"] = indexCode
  149. indexMap["EdbName"] = indexName
  150. indexMap["Frequency"] = frequency
  151. indexMap["Unit"] = unit
  152. indexMap["ClassifyId"] = resp.Data.ClassifyId
  153. result, err = PostEdbLib(indexMap, method)
  154. if err != nil {
  155. utils.FileLog.Info("初始化指标失败:" + err.Error() + " result:" + string(result))
  156. return
  157. }
  158. indexResp := new(models.EdbInfoResp)
  159. err = json.Unmarshal(result, &indexResp)
  160. if err != nil {
  161. utils.FileLog.Info("初始化分类2失败:" + err.Error())
  162. return
  163. }
  164. if indexResp.Ret != 200 {
  165. if strings.Contains(indexResp.Msg, "新增指标失败") {
  166. continue
  167. } else {
  168. fmt.Println("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  169. utils.FileLog.Info("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  170. return
  171. }
  172. }
  173. fmt.Println("add index success:" + indexCode)
  174. } else {
  175. fmt.Println("data is empty")
  176. fmt.Println(classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source)
  177. }
  178. }
  179. }
  180. }
  181. // 初始化基础指标数据-钢联
  182. func InitBaseIndexDataFromMysteel(filePath string) {
  183. var err error
  184. defer func() {
  185. if err != nil {
  186. fmt.Println("InitBaseIndexDataFromMysteel Err:" + err.Error())
  187. utils.FileLog.Info("InitBaseIndexDataFromMysteel Err:" + err.Error())
  188. }
  189. }()
  190. //读取excel
  191. path, err := filepath.Abs(os.Args[0])
  192. if err != nil {
  193. fmt.Println(err)
  194. }
  195. dir := filepath.Dir(path)
  196. fmt.Println("dir:" + dir)
  197. dataPath := dir + filePath
  198. fmt.Println("dataPath:" + dataPath)
  199. f, err := excelize.OpenFile(dataPath)
  200. if err != nil {
  201. fmt.Println(err)
  202. return
  203. }
  204. defer func() {
  205. // Close the spreadsheet.
  206. if err := f.Close(); err != nil {
  207. fmt.Println(err)
  208. }
  209. }()
  210. rows, err := f.GetRows("Sheet1")
  211. if err != nil {
  212. fmt.Println(err)
  213. return
  214. }
  215. fmt.Println("rows len:", len(rows))
  216. for rk, row := range rows {
  217. if rk > 0 {
  218. var classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source string
  219. for ck, colCell := range row {
  220. switch ck {
  221. case 0:
  222. classifyFirst = colCell
  223. case 1:
  224. classifySecond = colCell
  225. case 2:
  226. classifyThree = colCell
  227. case 3:
  228. indexCode = colCell
  229. case 4:
  230. indexName = colCell
  231. case 5:
  232. frequency = colCell
  233. case 6:
  234. unit = colCell
  235. case 7:
  236. source = colCell
  237. }
  238. }
  239. if classifyFirst != "" &&
  240. classifySecond != "" &&
  241. classifyThree != "" &&
  242. indexCode != "" &&
  243. indexName != "" &&
  244. unit != "" &&
  245. frequency != "" &&
  246. source != "" {
  247. //判断指标是否存在
  248. method := "mysteel_chemical/index_detail"
  249. indexSearchMap := make(map[string]interface{})
  250. indexSearchMap["IndexCode"] = indexCode
  251. indexResult, err := PostEdbLib(indexSearchMap, method)
  252. if err != nil {
  253. fmt.Println("判断指标是否存在失败,Err:" + err.Error())
  254. return
  255. }
  256. mysteelIndexResp := new(models.MysteelIndexResp)
  257. err = json.Unmarshal(indexResult, &mysteelIndexResp)
  258. if err != nil {
  259. utils.FileLog.Info("判断指标是否存在失败:" + err.Error())
  260. fmt.Println("判断指标是否存在失败,Err:" + err.Error())
  261. return
  262. }
  263. if mysteelIndexResp.Ret != 200 {
  264. fmt.Println("判断指标是否存在失败,Err:" + mysteelIndexResp.ErrMsg)
  265. //utils.FileLog.Info("判断指标是否存在失败:" + err.Error())
  266. //return
  267. continue
  268. }
  269. if mysteelIndexResp.Data.BaseFromMysteelChemicalIndexId <= 0 {
  270. fmt.Println("指标:" + indexCode + ";不存在")
  271. continue
  272. }
  273. method = "classify/get_or_add"
  274. classifyFirstMap := make(map[string]interface{})
  275. classifyFirstMap["ClassifyName"] = classifyFirst
  276. classifyFirstMap["ParentId"] = 0
  277. classifyFirstMap["Level"] = 0
  278. classifyFirstMap["ClassifyType"] = 0
  279. result, err := PostEdbLib(classifyFirstMap, method)
  280. if err != nil {
  281. utils.FileLog.Info("初始化分类1失败:" + err.Error())
  282. return
  283. }
  284. resp := new(models.ClassifyResp)
  285. err = json.Unmarshal(result, &resp)
  286. if err != nil {
  287. utils.FileLog.Info("初始化分类1失败:" + err.Error())
  288. return
  289. }
  290. if resp.Ret != 200 {
  291. utils.FileLog.Info("初始化分类1失败:" + resp.Msg + ";" + resp.ErrMsg)
  292. return
  293. }
  294. classifySecondMap := make(map[string]interface{})
  295. classifySecondMap["ClassifyName"] = classifySecond
  296. classifySecondMap["ParentId"] = resp.Data.ClassifyId
  297. classifySecondMap["Level"] = 1
  298. classifySecondMap["ClassifyType"] = 0
  299. result, err = PostEdbLib(classifySecondMap, method)
  300. if err != nil {
  301. utils.FileLog.Info("初始化分类2失败:" + err.Error())
  302. return
  303. }
  304. resp = new(models.ClassifyResp)
  305. err = json.Unmarshal(result, &resp)
  306. if err != nil {
  307. utils.FileLog.Info("初始化分类2失败:" + err.Error())
  308. return
  309. }
  310. if resp.Ret != 200 {
  311. utils.FileLog.Info("初始化分类2失败:" + resp.Msg + ";" + resp.ErrMsg)
  312. return
  313. }
  314. classifyThreeMap := make(map[string]interface{})
  315. classifyThreeMap["ClassifyName"] = classifyThree
  316. classifyThreeMap["ParentId"] = resp.Data.ClassifyId
  317. classifyThreeMap["Level"] = 2
  318. classifyThreeMap["ClassifyType"] = 0
  319. result, err = PostEdbLib(classifyThreeMap, method)
  320. if err != nil {
  321. utils.FileLog.Info("初始化分类3失败:" + err.Error())
  322. return
  323. }
  324. resp = new(models.ClassifyResp)
  325. err = json.Unmarshal(result, &resp)
  326. if err != nil {
  327. utils.FileLog.Info("初始化分类3失败:" + err.Error())
  328. return
  329. }
  330. if resp.Ret != 200 {
  331. utils.FileLog.Info("初始化分类3失败:" + resp.Msg + ";" + resp.ErrMsg)
  332. return
  333. }
  334. method = "edb_info/add"
  335. indexMap := make(map[string]interface{})
  336. indexMap["Source"] = IndexSourceMap[source]
  337. indexMap["EdbCode"] = indexCode
  338. indexMap["EdbName"] = indexName
  339. indexMap["Frequency"] = frequency
  340. indexMap["Unit"] = unit
  341. indexMap["ClassifyId"] = resp.Data.ClassifyId
  342. result, err = PostEdbLib(indexMap, method)
  343. if err != nil {
  344. utils.FileLog.Info("初始化指标失败:" + err.Error() + " result:" + string(result))
  345. return
  346. }
  347. indexResp := new(models.EdbInfoResp)
  348. err = json.Unmarshal(result, &indexResp)
  349. if err != nil {
  350. utils.FileLog.Info("初始化分类2失败:" + err.Error())
  351. return
  352. }
  353. if indexResp.Ret != 200 {
  354. if strings.Contains(indexResp.Msg, "新增指标失败") {
  355. continue
  356. } else {
  357. fmt.Println("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  358. utils.FileLog.Info("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  359. return
  360. }
  361. }
  362. fmt.Println("add index success:" + indexCode)
  363. //刷新指标
  364. method = "mysteel_chemical/refresh"
  365. refreshMap := make(map[string]interface{})
  366. refreshMap["EdbInfoId"] = indexResp.Data.EdbInfoId
  367. refreshMap["EdbCode"] = indexCode
  368. refreshMap["StartDate"] = "1990-01-01"
  369. PostEdbLib(refreshMap, method)
  370. } else {
  371. fmt.Println("data is empty")
  372. fmt.Println(classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source)
  373. }
  374. }
  375. }
  376. }
  377. // 初始化基础指标数据-有色
  378. func InitBaseIndexDataFromDataSourceSmm(filePath string) {
  379. var err error
  380. defer func() {
  381. if err != nil {
  382. fmt.Println("InitBaseIndexDataFromDataSourceSmm Err:" + err.Error())
  383. utils.FileLog.Info("InitBaseIndexDataFromDataSourceSmm Err:" + err.Error())
  384. }
  385. }()
  386. //读取excel
  387. path, err := filepath.Abs(os.Args[0])
  388. if err != nil {
  389. fmt.Println(err)
  390. }
  391. dir := filepath.Dir(path)
  392. fmt.Println("dir:" + dir)
  393. dataPath := dir + filePath
  394. fmt.Println("dataPath:" + dataPath)
  395. f, err := excelize.OpenFile(dataPath)
  396. if err != nil {
  397. fmt.Println(err)
  398. return
  399. }
  400. defer func() {
  401. // Close the spreadsheet.
  402. if err := f.Close(); err != nil {
  403. fmt.Println(err)
  404. }
  405. }()
  406. rows, err := f.GetRows("Sheet1")
  407. if err != nil {
  408. fmt.Println(err)
  409. return
  410. }
  411. fmt.Println("rows len:", len(rows))
  412. for rk, row := range rows {
  413. if rk > 0 {
  414. var classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source string
  415. for ck, colCell := range row {
  416. switch ck {
  417. case 0:
  418. classifyFirst = colCell
  419. case 1:
  420. classifySecond = colCell
  421. case 2:
  422. classifyThree = colCell
  423. case 3:
  424. indexCode = colCell
  425. case 4:
  426. indexName = colCell
  427. case 5:
  428. frequency = colCell
  429. case 6:
  430. unit = colCell
  431. case 7:
  432. source = colCell
  433. }
  434. }
  435. if classifyFirst != "" &&
  436. classifySecond != "" &&
  437. classifyThree != "" &&
  438. indexCode != "" &&
  439. indexName != "" &&
  440. unit != "" &&
  441. frequency != "" &&
  442. source != "" {
  443. //判断指标是否存在
  444. method := "smm/index_detail/from_data_source"
  445. indexSearchMap := make(map[string]interface{})
  446. indexSearchMap["IndexCode"] = indexCode
  447. indexResult, err := PostEdbLib(indexSearchMap, method)
  448. if err != nil {
  449. fmt.Println("判断指标是否存在失败,Err:" + err.Error())
  450. return
  451. }
  452. smmIndexResp := new(models.BaseFromSmmIndexResp)
  453. err = json.Unmarshal(indexResult, &smmIndexResp)
  454. if err != nil {
  455. utils.FileLog.Info("判断指标是否存在失败:" + err.Error())
  456. fmt.Println("判断指标是否存在失败,Err:" + err.Error())
  457. return
  458. }
  459. if smmIndexResp.Ret != 200 {
  460. fmt.Println("判断指标是否存在失败,Err:" + smmIndexResp.ErrMsg)
  461. //utils.FileLog.Info("判断指标是否存在失败:" + err.Error())
  462. //return
  463. continue
  464. }
  465. if smmIndexResp.Data.BaseFromSmmIndexId <= 0 {
  466. fmt.Println("指标:" + indexCode + ";不存在")
  467. continue
  468. }
  469. method = "classify/get_or_add"
  470. classifyFirstMap := make(map[string]interface{})
  471. classifyFirstMap["ClassifyName"] = classifyFirst
  472. classifyFirstMap["ParentId"] = 0
  473. classifyFirstMap["Level"] = 0
  474. classifyFirstMap["ClassifyType"] = 0
  475. result, err := PostEdbLib(classifyFirstMap, method)
  476. if err != nil {
  477. utils.FileLog.Info("初始化分类1失败:" + err.Error())
  478. return
  479. }
  480. resp := new(models.ClassifyResp)
  481. err = json.Unmarshal(result, &resp)
  482. if err != nil {
  483. utils.FileLog.Info("初始化分类1失败:" + err.Error())
  484. return
  485. }
  486. if resp.Ret != 200 {
  487. utils.FileLog.Info("初始化分类1失败:" + resp.Msg + ";" + resp.ErrMsg)
  488. return
  489. }
  490. classifySecondMap := make(map[string]interface{})
  491. classifySecondMap["ClassifyName"] = classifySecond
  492. classifySecondMap["ParentId"] = resp.Data.ClassifyId
  493. classifySecondMap["Level"] = 1
  494. classifySecondMap["ClassifyType"] = 0
  495. result, err = PostEdbLib(classifySecondMap, method)
  496. if err != nil {
  497. utils.FileLog.Info("初始化分类2失败:" + err.Error())
  498. return
  499. }
  500. resp = new(models.ClassifyResp)
  501. err = json.Unmarshal(result, &resp)
  502. if err != nil {
  503. utils.FileLog.Info("初始化分类2失败:" + err.Error())
  504. return
  505. }
  506. if resp.Ret != 200 {
  507. utils.FileLog.Info("初始化分类2失败:" + resp.Msg + ";" + resp.ErrMsg)
  508. return
  509. }
  510. classifyThreeMap := make(map[string]interface{})
  511. classifyThreeMap["ClassifyName"] = classifyThree
  512. classifyThreeMap["ParentId"] = resp.Data.ClassifyId
  513. classifyThreeMap["Level"] = 2
  514. classifyThreeMap["ClassifyType"] = 0
  515. result, err = PostEdbLib(classifyThreeMap, method)
  516. if err != nil {
  517. utils.FileLog.Info("初始化分类3失败:" + err.Error())
  518. return
  519. }
  520. resp = new(models.ClassifyResp)
  521. err = json.Unmarshal(result, &resp)
  522. if err != nil {
  523. utils.FileLog.Info("初始化分类3失败:" + err.Error())
  524. return
  525. }
  526. if resp.Ret != 200 {
  527. utils.FileLog.Info("初始化分类3失败:" + resp.Msg + ";" + resp.ErrMsg)
  528. return
  529. }
  530. method = "edb_info/add"
  531. indexMap := make(map[string]interface{})
  532. indexMap["Source"] = IndexSourceMap[source]
  533. indexMap["EdbCode"] = indexCode
  534. indexMap["EdbName"] = indexName
  535. indexMap["Frequency"] = frequency
  536. indexMap["Unit"] = unit
  537. indexMap["ClassifyId"] = resp.Data.ClassifyId
  538. result, err = PostEdbLib(indexMap, method)
  539. if err != nil {
  540. utils.FileLog.Info("初始化指标失败:" + err.Error() + " result:" + string(result))
  541. return
  542. }
  543. indexResp := new(models.EdbInfoResp)
  544. err = json.Unmarshal(result, &indexResp)
  545. if err != nil {
  546. utils.FileLog.Info("初始化分类2失败:" + err.Error())
  547. return
  548. }
  549. if indexResp.Ret != 200 {
  550. if strings.Contains(indexResp.Msg, "新增指标失败") {
  551. continue
  552. } else {
  553. fmt.Println("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  554. utils.FileLog.Info("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  555. return
  556. }
  557. }
  558. fmt.Println("add index success:" + indexCode)
  559. //刷新指标
  560. {
  561. refreshMethod := "smm/refresh"
  562. refreshMap := make(map[string]interface{})
  563. refreshMap["EdbInfoId"] = indexResp.Data.EdbInfoId
  564. refreshMap["EdbCode"] = indexCode
  565. refreshMap["StartDate"] = "1990-01-01"
  566. PostEdbLib(refreshMap, refreshMethod)
  567. }
  568. } else {
  569. fmt.Println("data is empty")
  570. fmt.Println(classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source)
  571. }
  572. }
  573. }
  574. }
  575. /*
  576. // PostEdbLib 调用指标接口
  577. func PostEdbLib(param map[string]interface{}, method string) (resp *models.BaseResponse, err error) {
  578. postUrl := utils.EDB_LIB_URL + method
  579. postData, err := json.Marshal(param)
  580. if err != nil {
  581. return
  582. }
  583. result, err := HttpPost(postUrl, string(postData), "application/json")
  584. if err != nil {
  585. return
  586. }
  587. err = json.Unmarshal(result, &resp)
  588. if err != nil {
  589. return
  590. }
  591. return resp, nil
  592. }
  593. */