init_base_index.go 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996
  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. utils.FileLog.Info("InitJiaYueIndexData Err: " + err.Error())
  19. }
  20. }()
  21. //读取excel
  22. path, err := filepath.Abs(os.Args[0])
  23. if err != nil {
  24. fmt.Println(err)
  25. }
  26. dir := filepath.Dir(path)
  27. fmt.Println("dir:" + dir)
  28. //dataPath := dir + "/docs/东吴ETA同花顺指标20230925.xlsx"
  29. dataPath = dir + dataPath
  30. fmt.Println("dataPath:" + dataPath)
  31. f, err := excelize.OpenFile(dataPath)
  32. if err != nil {
  33. fmt.Println(err)
  34. return
  35. }
  36. defer func() {
  37. // Close the spreadsheet.
  38. if err := f.Close(); err != nil {
  39. fmt.Println(err)
  40. }
  41. }()
  42. rows, err := f.GetRows("Sheet1")
  43. if err != nil {
  44. fmt.Println(err)
  45. return
  46. }
  47. fmt.Println("rows len:", len(rows))
  48. // 获取创建人信息
  49. mobileMap := make(map[string]*models.Admin)
  50. if utils.MYSQL_URL_ETA != "" {
  51. admins, e := models.GetSysAdminList(``, make([]interface{}, 0))
  52. if e != nil {
  53. err = fmt.Errorf("GetSysAdminList err: %s", e.Error())
  54. return
  55. }
  56. for _, v := range admins {
  57. if v.Mobile == "" {
  58. continue
  59. }
  60. mobileMap[v.Mobile] = v
  61. }
  62. }
  63. for rk, row := range rows {
  64. if rk > 0 {
  65. var classifyFirst, classifySecond, classifyThree, classifyFourth, classifyFifth, classifySixth, indexCode, indexName, frequency, unit, source, mobile, terminalCode string
  66. for ck, colCell := range row {
  67. colCell = strings.TrimSpace(colCell)
  68. switch ck {
  69. case 0:
  70. classifyFirst = colCell
  71. case 1:
  72. classifySecond = colCell
  73. case 2:
  74. classifyThree = colCell
  75. case 3:
  76. classifyFourth = colCell
  77. case 4:
  78. classifyFifth = colCell
  79. case 5:
  80. classifySixth = colCell
  81. case 6:
  82. indexCode = colCell
  83. case 7:
  84. indexName = colCell
  85. case 8:
  86. frequency = colCell
  87. case 9:
  88. unit = colCell
  89. case 10:
  90. source = colCell
  91. case 11:
  92. mobile = colCell
  93. case 12:
  94. terminalCode = colCell
  95. }
  96. }
  97. if classifyFirst != "" &&
  98. indexCode != "" &&
  99. indexName != "" &&
  100. unit != "" &&
  101. frequency != "" &&
  102. source != "" {
  103. var firstId, secondId, thirdId, fourthId, fifthId, lastId int
  104. method := "classify/get_or_add"
  105. classifyFirstMap := make(map[string]interface{})
  106. classifyFirstMap["ClassifyName"] = classifyFirst
  107. classifyFirstMap["ParentId"] = 0
  108. classifyFirstMap["Level"] = 0
  109. classifyFirstMap["ClassifyType"] = 0
  110. result, e := PostEdbLib(classifyFirstMap, method)
  111. if e != nil {
  112. err = fmt.Errorf("ClassifyFirst PostEdbLib err: %s", e.Error())
  113. return
  114. }
  115. resp := new(models.ClassifyResp)
  116. if e = json.Unmarshal(result, &resp); e != nil {
  117. err = fmt.Errorf("ClassifyFirst json unmarshal err: %s", e.Error())
  118. return
  119. }
  120. if resp.Ret != 200 {
  121. err = fmt.Errorf("ClassifyFirst resp msg: %s; errMsg: %s", resp.Msg, resp.ErrMsg)
  122. return
  123. }
  124. firstId = resp.Data.ClassifyId
  125. lastId = firstId
  126. // 二级分类
  127. if classifySecond != "" {
  128. classifySecondMap := make(map[string]interface{})
  129. classifySecondMap["ClassifyName"] = classifySecond
  130. classifySecondMap["ParentId"] = firstId
  131. classifySecondMap["Level"] = 1
  132. classifySecondMap["ClassifyType"] = 0
  133. res2, e := PostEdbLib(classifySecondMap, method)
  134. if e != nil {
  135. err = fmt.Errorf("ClassifySecond PostEdbLib err: %s", e.Error())
  136. return
  137. }
  138. resp2 := new(models.ClassifyResp)
  139. if e = json.Unmarshal(res2, &resp2); e != nil {
  140. err = fmt.Errorf("ClassifySecond json unmarshal err: %s", e.Error())
  141. return
  142. }
  143. if resp2.Ret != 200 {
  144. err = fmt.Errorf("ClassifySecond resp msg: %s; errMsg: %s", resp2.Msg, resp2.ErrMsg)
  145. return
  146. }
  147. secondId = resp2.Data.ClassifyId
  148. lastId = secondId
  149. }
  150. // 三级分类
  151. if classifyThree != "" {
  152. classifyThreeMap := make(map[string]interface{})
  153. classifyThreeMap["ClassifyName"] = classifyThree
  154. classifyThreeMap["ParentId"] = secondId
  155. classifyThreeMap["Level"] = 2
  156. classifyThreeMap["ClassifyType"] = 0
  157. res3, e := PostEdbLib(classifyThreeMap, method)
  158. if e != nil {
  159. err = fmt.Errorf("ClassifyThird PostEdbLib err: %s", e.Error())
  160. return
  161. }
  162. resp3 := new(models.ClassifyResp)
  163. if e = json.Unmarshal(res3, &resp3); e != nil {
  164. err = fmt.Errorf("ClassifyThird json unmarshal err: %s", e.Error())
  165. return
  166. }
  167. if resp3.Ret != 200 {
  168. err = fmt.Errorf("ClassifyThird resp msg: %s; errMsg: %s", resp3.Msg, resp3.ErrMsg)
  169. return
  170. }
  171. thirdId = resp3.Data.ClassifyId
  172. lastId = thirdId
  173. }
  174. // 四级分类
  175. if classifyFourth != "" {
  176. classifyFourthMap := make(map[string]interface{})
  177. classifyFourthMap["ClassifyName"] = classifyFourth
  178. classifyFourthMap["ParentId"] = thirdId
  179. classifyFourthMap["Level"] = 3
  180. classifyFourthMap["ClassifyType"] = 0
  181. res4, e := PostEdbLib(classifyFourthMap, method)
  182. if e != nil {
  183. err = fmt.Errorf("ClassifyFourth PostEdbLib err: %s", e.Error())
  184. return
  185. }
  186. resp4 := new(models.ClassifyResp)
  187. if e = json.Unmarshal(res4, &resp4); e != nil {
  188. err = fmt.Errorf("ClassifyFourth json unmarshal err: %s", e.Error())
  189. return
  190. }
  191. if resp4.Ret != 200 {
  192. err = fmt.Errorf("ClassifyFourth resp msg: %s; errMsg: %s", resp4.Msg, resp4.ErrMsg)
  193. return
  194. }
  195. fourthId = resp4.Data.ClassifyId
  196. lastId = fourthId
  197. }
  198. // 五级分类
  199. if classifyFifth != "" {
  200. classifyFifthMap := make(map[string]interface{})
  201. classifyFifthMap["ClassifyName"] = classifyFifth
  202. classifyFifthMap["ParentId"] = fourthId
  203. classifyFifthMap["Level"] = 4
  204. classifyFifthMap["ClassifyType"] = 0
  205. res5, e := PostEdbLib(classifyFifthMap, method)
  206. if e != nil {
  207. err = fmt.Errorf("ClassifyFifth PostEdbLib err: %s", e.Error())
  208. return
  209. }
  210. resp5 := new(models.ClassifyResp)
  211. if e = json.Unmarshal(res5, &resp5); e != nil {
  212. err = fmt.Errorf("ClassifyFifth json unmarshal err: %s", e.Error())
  213. return
  214. }
  215. if resp5.Ret != 200 {
  216. err = fmt.Errorf("ClassifyFifth resp msg: %s; errMsg: %s", resp5.Msg, resp5.ErrMsg)
  217. return
  218. }
  219. fifthId = resp5.Data.ClassifyId
  220. lastId = fifthId
  221. }
  222. // 六级分类
  223. if classifySixth != "" {
  224. classifySixthMap := make(map[string]interface{})
  225. classifySixthMap["ClassifyName"] = classifySixth
  226. classifySixthMap["ParentId"] = fifthId
  227. classifySixthMap["Level"] = 5
  228. classifySixthMap["ClassifyType"] = 0
  229. res6, e := PostEdbLib(classifySixthMap, method)
  230. if e != nil {
  231. err = fmt.Errorf("ClassifySixth PostEdbLib err: %s", e.Error())
  232. return
  233. }
  234. resp6 := new(models.ClassifyResp)
  235. if e = json.Unmarshal(res6, &resp6); e != nil {
  236. err = fmt.Errorf("ClassifySixth json unmarshal err: %s", e.Error())
  237. return
  238. }
  239. if resp6.Ret != 200 {
  240. err = fmt.Errorf("ClassifySixth resp msg: %s; errMsg: %s", resp6.Msg, resp6.ErrMsg)
  241. return
  242. }
  243. lastId = resp6.Data.ClassifyId
  244. }
  245. method = "edb_info/add"
  246. sourceId, ok := IndexSourceMap[source]
  247. if !ok {
  248. fmt.Println("source is not defined")
  249. fmt.Println(classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source)
  250. continue
  251. }
  252. indexMap := make(map[string]interface{})
  253. indexMap["Source"] = sourceId
  254. indexMap["EdbCode"] = indexCode
  255. indexMap["EdbName"] = indexName
  256. indexMap["Frequency"] = frequency
  257. indexMap["Unit"] = unit
  258. indexMap["ClassifyId"] = lastId
  259. indexMap["TerminalCode"] = terminalCode
  260. admin := mobileMap[mobile]
  261. if admin != nil {
  262. indexMap["AdminId"] = admin.AdminId
  263. indexMap["AdminName"] = admin.RealName
  264. }
  265. result, err = PostEdbLib(indexMap, method)
  266. if err != nil {
  267. utils.FileLog.Info("初始化指标失败:" + err.Error() + " result:" + string(result))
  268. return
  269. }
  270. indexResp := new(models.EdbInfoResp)
  271. err = json.Unmarshal(result, &indexResp)
  272. if err != nil {
  273. utils.FileLog.Info("初始化分类2失败:" + err.Error())
  274. return
  275. }
  276. if indexResp.Ret != 200 {
  277. if strings.Contains(indexResp.Msg, "新增指标失败") {
  278. continue
  279. } else {
  280. fmt.Println("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  281. utils.FileLog.Info("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  282. return
  283. }
  284. }
  285. fmt.Println("add index success:" + indexCode)
  286. //刷新指标
  287. {
  288. switch source {
  289. case "wind", "万得":
  290. method = "wind/refresh"
  291. case "ths", "同花顺":
  292. method = "ths/refresh"
  293. case "彭博":
  294. method = "pb/refresh"
  295. case "路透":
  296. method = "lt/refresh"
  297. case "":
  298. }
  299. if method != `` {
  300. refreshMap := make(map[string]interface{})
  301. refreshMap["EdbInfoId"] = indexResp.Data.EdbInfoId
  302. refreshMap["EdbCode"] = indexCode
  303. refreshMap["StartDate"] = "1990-01-01"
  304. PostEdbLib(refreshMap, method)
  305. }
  306. }
  307. } else {
  308. fmt.Println("data is empty")
  309. fmt.Println(classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source)
  310. }
  311. }
  312. }
  313. }
  314. // 初始化基础指标数据-钢联
  315. func InitBaseIndexDataFromMysteel(filePath string) {
  316. var err error
  317. defer func() {
  318. if err != nil {
  319. fmt.Println("InitBaseIndexDataFromMysteel Err:" + err.Error())
  320. utils.FileLog.Info("InitBaseIndexDataFromMysteel Err:" + err.Error())
  321. }
  322. }()
  323. //读取excel
  324. path, err := filepath.Abs(os.Args[0])
  325. if err != nil {
  326. fmt.Println(err)
  327. }
  328. dir := filepath.Dir(path)
  329. fmt.Println("dir:" + dir)
  330. dataPath := dir + filePath
  331. fmt.Println("dataPath:" + dataPath)
  332. f, err := excelize.OpenFile(dataPath)
  333. if err != nil {
  334. fmt.Println(err)
  335. return
  336. }
  337. defer func() {
  338. // Close the spreadsheet.
  339. if err := f.Close(); err != nil {
  340. fmt.Println(err)
  341. }
  342. }()
  343. rows, err := f.GetRows("Sheet1")
  344. if err != nil {
  345. fmt.Println(err)
  346. return
  347. }
  348. fmt.Println("rows len:", len(rows))
  349. // 获取创建人信息
  350. mobileMap := make(map[string]*models.Admin)
  351. if utils.MYSQL_URL_ETA != "" {
  352. admins, e := models.GetSysAdminList(``, make([]interface{}, 0))
  353. if e != nil {
  354. err = fmt.Errorf("GetSysAdminList err: %s", e.Error())
  355. return
  356. }
  357. for _, v := range admins {
  358. if v.Mobile == "" {
  359. continue
  360. }
  361. mobileMap[v.Mobile] = v
  362. }
  363. }
  364. for rk, row := range rows {
  365. if rk > 0 {
  366. var classifyFirst, classifySecond, classifyThree, classifyFourth, classifyFifth, classifySixth, indexCode, indexName, frequency, unit, source, mobile string
  367. for ck, colCell := range row {
  368. colCell = strings.TrimSpace(colCell)
  369. switch ck {
  370. case 0:
  371. classifyFirst = colCell
  372. case 1:
  373. classifySecond = colCell
  374. case 2:
  375. classifyThree = colCell
  376. case 3:
  377. classifyFourth = colCell
  378. case 4:
  379. classifyFifth = colCell
  380. case 5:
  381. classifySixth = colCell
  382. case 6:
  383. indexCode = colCell
  384. case 7:
  385. indexName = colCell
  386. case 8:
  387. frequency = colCell
  388. case 9:
  389. unit = colCell
  390. case 10:
  391. source = colCell
  392. case 11:
  393. mobile = colCell
  394. }
  395. }
  396. if classifyFirst != "" &&
  397. indexCode != "" &&
  398. indexName != "" &&
  399. unit != "" &&
  400. frequency != "" &&
  401. source != "" {
  402. //判断指标是否存在
  403. method := "mysteel_chemical/index_detail"
  404. indexSearchMap := make(map[string]interface{})
  405. indexSearchMap["IndexCode"] = indexCode
  406. indexResult, e := PostEdbLib(indexSearchMap, method)
  407. if e != nil {
  408. err = fmt.Errorf("判断指标是否存在失败, Err: %s", e.Error())
  409. return
  410. }
  411. mysteelIndexResp := new(models.MysteelIndexResp)
  412. e = json.Unmarshal(indexResult, &mysteelIndexResp)
  413. if e != nil {
  414. err = fmt.Errorf("判断指标是否存在失败, Err: %s", e.Error())
  415. return
  416. }
  417. if mysteelIndexResp.Ret != 200 {
  418. fmt.Println("判断指标是否存在失败,Err:" + mysteelIndexResp.ErrMsg)
  419. //utils.FileLog.Info("判断指标是否存在失败:" + err.Error())
  420. //return
  421. continue
  422. }
  423. if mysteelIndexResp.Data.BaseFromMysteelChemicalIndexId <= 0 {
  424. fmt.Println("指标:" + indexCode + ";不存在")
  425. continue
  426. }
  427. var firstId, secondId, thirdId, fourthId, fifthId, lastId int
  428. method = "classify/get_or_add"
  429. classifyFirstMap := make(map[string]interface{})
  430. classifyFirstMap["ClassifyName"] = classifyFirst
  431. classifyFirstMap["ParentId"] = 0
  432. classifyFirstMap["Level"] = 0
  433. classifyFirstMap["ClassifyType"] = 0
  434. result, e := PostEdbLib(classifyFirstMap, method)
  435. if e != nil {
  436. err = fmt.Errorf("ClassifyFirst PostEdbLib err: %s", e.Error())
  437. return
  438. }
  439. resp := new(models.ClassifyResp)
  440. if e = json.Unmarshal(result, &resp); e != nil {
  441. err = fmt.Errorf("ClassifyFirst json unmarshal err: %s", e.Error())
  442. return
  443. }
  444. if resp.Ret != 200 {
  445. err = fmt.Errorf("ClassifyFirst resp msg: %s; errMsg: %s", resp.Msg, resp.ErrMsg)
  446. return
  447. }
  448. firstId = resp.Data.ClassifyId
  449. lastId = firstId
  450. // 二级分类
  451. if classifySecond != "" {
  452. classifySecondMap := make(map[string]interface{})
  453. classifySecondMap["ClassifyName"] = classifySecond
  454. classifySecondMap["ParentId"] = firstId
  455. classifySecondMap["Level"] = 1
  456. classifySecondMap["ClassifyType"] = 0
  457. res2, e := PostEdbLib(classifySecondMap, method)
  458. if e != nil {
  459. err = fmt.Errorf("ClassifySecond PostEdbLib err: %s", e.Error())
  460. return
  461. }
  462. resp2 := new(models.ClassifyResp)
  463. if e = json.Unmarshal(res2, &resp2); e != nil {
  464. err = fmt.Errorf("ClassifySecond json unmarshal err: %s", e.Error())
  465. return
  466. }
  467. if resp2.Ret != 200 {
  468. err = fmt.Errorf("ClassifySecond resp msg: %s; errMsg: %s", resp2.Msg, resp2.ErrMsg)
  469. return
  470. }
  471. secondId = resp2.Data.ClassifyId
  472. lastId = secondId
  473. }
  474. // 三级分类
  475. if classifyThree != "" {
  476. classifyThreeMap := make(map[string]interface{})
  477. classifyThreeMap["ClassifyName"] = classifyThree
  478. classifyThreeMap["ParentId"] = secondId
  479. classifyThreeMap["Level"] = 2
  480. classifyThreeMap["ClassifyType"] = 0
  481. res3, e := PostEdbLib(classifyThreeMap, method)
  482. if e != nil {
  483. err = fmt.Errorf("ClassifyThird PostEdbLib err: %s", e.Error())
  484. return
  485. }
  486. resp3 := new(models.ClassifyResp)
  487. if e = json.Unmarshal(res3, &resp3); e != nil {
  488. err = fmt.Errorf("ClassifyThird json unmarshal err: %s", e.Error())
  489. return
  490. }
  491. if resp3.Ret != 200 {
  492. err = fmt.Errorf("ClassifyThird resp msg: %s; errMsg: %s", resp3.Msg, resp3.ErrMsg)
  493. return
  494. }
  495. thirdId = resp3.Data.ClassifyId
  496. lastId = thirdId
  497. }
  498. // 四级分类
  499. if classifyFourth != "" {
  500. classifyFourthMap := make(map[string]interface{})
  501. classifyFourthMap["ClassifyName"] = classifyFourth
  502. classifyFourthMap["ParentId"] = thirdId
  503. classifyFourthMap["Level"] = 3
  504. classifyFourthMap["ClassifyType"] = 0
  505. res4, e := PostEdbLib(classifyFourthMap, method)
  506. if e != nil {
  507. err = fmt.Errorf("ClassifyFourth PostEdbLib err: %s", e.Error())
  508. return
  509. }
  510. resp4 := new(models.ClassifyResp)
  511. if e = json.Unmarshal(res4, &resp4); e != nil {
  512. err = fmt.Errorf("ClassifyFourth json unmarshal err: %s", e.Error())
  513. return
  514. }
  515. if resp4.Ret != 200 {
  516. err = fmt.Errorf("ClassifyFourth resp msg: %s; errMsg: %s", resp4.Msg, resp4.ErrMsg)
  517. return
  518. }
  519. fourthId = resp4.Data.ClassifyId
  520. lastId = fourthId
  521. }
  522. // 五级分类
  523. if classifyFifth != "" {
  524. classifyFifthMap := make(map[string]interface{})
  525. classifyFifthMap["ClassifyName"] = classifyFifth
  526. classifyFifthMap["ParentId"] = fourthId
  527. classifyFifthMap["Level"] = 4
  528. classifyFifthMap["ClassifyType"] = 0
  529. res5, e := PostEdbLib(classifyFifthMap, method)
  530. if e != nil {
  531. err = fmt.Errorf("ClassifyFifth PostEdbLib err: %s", e.Error())
  532. return
  533. }
  534. resp5 := new(models.ClassifyResp)
  535. if e = json.Unmarshal(res5, &resp5); e != nil {
  536. err = fmt.Errorf("ClassifyFifth json unmarshal err: %s", e.Error())
  537. return
  538. }
  539. if resp5.Ret != 200 {
  540. err = fmt.Errorf("ClassifyFifth resp msg: %s; errMsg: %s", resp5.Msg, resp5.ErrMsg)
  541. return
  542. }
  543. fifthId = resp5.Data.ClassifyId
  544. lastId = fifthId
  545. }
  546. // 六级分类
  547. if classifySixth != "" {
  548. classifySixthMap := make(map[string]interface{})
  549. classifySixthMap["ClassifyName"] = classifySixth
  550. classifySixthMap["ParentId"] = fifthId
  551. classifySixthMap["Level"] = 5
  552. classifySixthMap["ClassifyType"] = 0
  553. res6, e := PostEdbLib(classifySixthMap, method)
  554. if e != nil {
  555. err = fmt.Errorf("ClassifySixth PostEdbLib err: %s", e.Error())
  556. return
  557. }
  558. resp6 := new(models.ClassifyResp)
  559. if e = json.Unmarshal(res6, &resp6); e != nil {
  560. err = fmt.Errorf("ClassifySixth json unmarshal err: %s", e.Error())
  561. return
  562. }
  563. if resp6.Ret != 200 {
  564. err = fmt.Errorf("ClassifySixth resp msg: %s; errMsg: %s", resp6.Msg, resp6.ErrMsg)
  565. return
  566. }
  567. lastId = resp6.Data.ClassifyId
  568. }
  569. method = "edb_info/add"
  570. indexMap := make(map[string]interface{})
  571. indexMap["Source"] = IndexSourceMap[source]
  572. indexMap["EdbCode"] = indexCode
  573. indexMap["EdbName"] = indexName
  574. indexMap["Frequency"] = frequency
  575. indexMap["Unit"] = unit
  576. indexMap["ClassifyId"] = lastId
  577. admin := mobileMap[mobile]
  578. if admin != nil {
  579. indexMap["AdminId"] = admin.AdminId
  580. indexMap["AdminName"] = admin.RealName
  581. }
  582. result, err = PostEdbLib(indexMap, method)
  583. if err != nil {
  584. utils.FileLog.Info("初始化指标失败:" + err.Error() + " result:" + string(result))
  585. return
  586. }
  587. indexResp := new(models.EdbInfoResp)
  588. err = json.Unmarshal(result, &indexResp)
  589. if err != nil {
  590. utils.FileLog.Info("初始化分类2失败:" + err.Error())
  591. return
  592. }
  593. if indexResp.Ret != 200 {
  594. if strings.Contains(indexResp.Msg, "新增指标失败") {
  595. continue
  596. } else {
  597. fmt.Println("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  598. utils.FileLog.Info("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  599. return
  600. }
  601. }
  602. fmt.Println("add index success:" + indexCode)
  603. //刷新指标
  604. method = "mysteel_chemical/refresh"
  605. refreshMap := make(map[string]interface{})
  606. refreshMap["EdbInfoId"] = indexResp.Data.EdbInfoId
  607. refreshMap["EdbCode"] = indexCode
  608. refreshMap["StartDate"] = "1990-01-01"
  609. PostEdbLib(refreshMap, method)
  610. } else {
  611. fmt.Println("data is empty")
  612. fmt.Println(classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source)
  613. }
  614. }
  615. }
  616. }
  617. // 初始化基础指标数据-有色
  618. func InitBaseIndexDataFromDataSourceSmm(filePath string) {
  619. var err error
  620. defer func() {
  621. if err != nil {
  622. fmt.Println("InitBaseIndexDataFromDataSourceSmm Err:" + err.Error())
  623. utils.FileLog.Info("InitBaseIndexDataFromDataSourceSmm Err:" + err.Error())
  624. }
  625. }()
  626. //读取excel
  627. path, err := filepath.Abs(os.Args[0])
  628. if err != nil {
  629. fmt.Println(err)
  630. }
  631. dir := filepath.Dir(path)
  632. fmt.Println("dir:" + dir)
  633. dataPath := dir + filePath
  634. fmt.Println("dataPath:" + dataPath)
  635. f, err := excelize.OpenFile(dataPath)
  636. if err != nil {
  637. fmt.Println(err)
  638. return
  639. }
  640. defer func() {
  641. // Close the spreadsheet.
  642. if err := f.Close(); err != nil {
  643. fmt.Println(err)
  644. }
  645. }()
  646. rows, err := f.GetRows("Sheet1")
  647. if err != nil {
  648. fmt.Println(err)
  649. return
  650. }
  651. fmt.Println("rows len:", len(rows))
  652. // 获取创建人信息
  653. mobileMap := make(map[string]*models.Admin)
  654. if utils.MYSQL_URL_ETA != "" {
  655. admins, e := models.GetSysAdminList(``, make([]interface{}, 0))
  656. if e != nil {
  657. err = fmt.Errorf("GetSysAdminList err: %s", e.Error())
  658. return
  659. }
  660. for _, v := range admins {
  661. if v.Mobile == "" {
  662. continue
  663. }
  664. mobileMap[v.Mobile] = v
  665. }
  666. }
  667. for rk, row := range rows {
  668. if rk > 0 {
  669. var classifyFirst, classifySecond, classifyThree, classifyFourth, classifyFifth, classifySixth, indexCode, indexName, frequency, unit, source, mobile string
  670. for ck, colCell := range row {
  671. colCell = strings.TrimSpace(colCell)
  672. switch ck {
  673. case 0:
  674. classifyFirst = colCell
  675. case 1:
  676. classifySecond = colCell
  677. case 2:
  678. classifyThree = colCell
  679. case 3:
  680. classifyFourth = colCell
  681. case 4:
  682. classifyFifth = colCell
  683. case 5:
  684. classifySixth = colCell
  685. case 6:
  686. indexCode = colCell
  687. case 7:
  688. indexName = colCell
  689. case 8:
  690. frequency = colCell
  691. case 9:
  692. unit = colCell
  693. case 10:
  694. source = colCell
  695. case 11:
  696. mobile = colCell
  697. }
  698. }
  699. if classifyFirst != "" &&
  700. indexCode != "" &&
  701. indexName != "" &&
  702. unit != "" &&
  703. frequency != "" &&
  704. source != "" {
  705. //判断指标是否存在
  706. method := "smm/index_detail/from_data_source"
  707. indexSearchMap := make(map[string]interface{})
  708. indexSearchMap["IndexCode"] = indexCode
  709. indexResult, e := PostEdbLib(indexSearchMap, method)
  710. if e != nil {
  711. err = fmt.Errorf("判断指标是否存在失败, Err: %s", e.Error())
  712. return
  713. }
  714. smmIndexResp := new(models.BaseFromSmmIndexResp)
  715. e = json.Unmarshal(indexResult, &smmIndexResp)
  716. if e != nil {
  717. err = fmt.Errorf("判断指标是否存在失败, Err: %s", e.Error())
  718. return
  719. }
  720. if smmIndexResp.Ret != 200 {
  721. fmt.Println("判断指标是否存在失败,Err:" + smmIndexResp.ErrMsg)
  722. //utils.FileLog.Info("判断指标是否存在失败:" + err.Error())
  723. //return
  724. continue
  725. }
  726. if smmIndexResp.Data.BaseFromSmmIndexId <= 0 {
  727. fmt.Println("指标:" + indexCode + ";不存在")
  728. continue
  729. }
  730. var firstId, secondId, thirdId, fourthId, fifthId, lastId int
  731. method = "classify/get_or_add"
  732. classifyFirstMap := make(map[string]interface{})
  733. classifyFirstMap["ClassifyName"] = classifyFirst
  734. classifyFirstMap["ParentId"] = 0
  735. classifyFirstMap["Level"] = 0
  736. classifyFirstMap["ClassifyType"] = 0
  737. result, e := PostEdbLib(classifyFirstMap, method)
  738. if e != nil {
  739. err = fmt.Errorf("ClassifyFirst PostEdbLib err: %s", e.Error())
  740. return
  741. }
  742. resp := new(models.ClassifyResp)
  743. if e = json.Unmarshal(result, &resp); e != nil {
  744. err = fmt.Errorf("ClassifyFirst json unmarshal err: %s", e.Error())
  745. return
  746. }
  747. if resp.Ret != 200 {
  748. err = fmt.Errorf("ClassifyFirst resp msg: %s; errMsg: %s", resp.Msg, resp.ErrMsg)
  749. return
  750. }
  751. firstId = resp.Data.ClassifyId
  752. lastId = firstId
  753. // 二级分类
  754. if classifySecond != "" {
  755. classifySecondMap := make(map[string]interface{})
  756. classifySecondMap["ClassifyName"] = classifySecond
  757. classifySecondMap["ParentId"] = firstId
  758. classifySecondMap["Level"] = 1
  759. classifySecondMap["ClassifyType"] = 0
  760. res2, e := PostEdbLib(classifySecondMap, method)
  761. if e != nil {
  762. err = fmt.Errorf("ClassifySecond PostEdbLib err: %s", e.Error())
  763. return
  764. }
  765. resp2 := new(models.ClassifyResp)
  766. if e = json.Unmarshal(res2, &resp2); e != nil {
  767. err = fmt.Errorf("ClassifySecond json unmarshal err: %s", e.Error())
  768. return
  769. }
  770. if resp2.Ret != 200 {
  771. err = fmt.Errorf("ClassifySecond resp msg: %s; errMsg: %s", resp2.Msg, resp2.ErrMsg)
  772. return
  773. }
  774. secondId = resp2.Data.ClassifyId
  775. lastId = secondId
  776. }
  777. // 三级分类
  778. if classifyThree != "" {
  779. classifyThreeMap := make(map[string]interface{})
  780. classifyThreeMap["ClassifyName"] = classifyThree
  781. classifyThreeMap["ParentId"] = secondId
  782. classifyThreeMap["Level"] = 2
  783. classifyThreeMap["ClassifyType"] = 0
  784. res3, e := PostEdbLib(classifyThreeMap, method)
  785. if e != nil {
  786. err = fmt.Errorf("ClassifyThird PostEdbLib err: %s", e.Error())
  787. return
  788. }
  789. resp3 := new(models.ClassifyResp)
  790. if e = json.Unmarshal(res3, &resp3); e != nil {
  791. err = fmt.Errorf("ClassifyThird json unmarshal err: %s", e.Error())
  792. return
  793. }
  794. if resp3.Ret != 200 {
  795. err = fmt.Errorf("ClassifyThird resp msg: %s; errMsg: %s", resp3.Msg, resp3.ErrMsg)
  796. return
  797. }
  798. thirdId = resp3.Data.ClassifyId
  799. lastId = thirdId
  800. }
  801. // 四级分类
  802. if classifyFourth != "" {
  803. classifyFourthMap := make(map[string]interface{})
  804. classifyFourthMap["ClassifyName"] = classifyFourth
  805. classifyFourthMap["ParentId"] = thirdId
  806. classifyFourthMap["Level"] = 3
  807. classifyFourthMap["ClassifyType"] = 0
  808. res4, e := PostEdbLib(classifyFourthMap, method)
  809. if e != nil {
  810. err = fmt.Errorf("ClassifyFourth PostEdbLib err: %s", e.Error())
  811. return
  812. }
  813. resp4 := new(models.ClassifyResp)
  814. if e = json.Unmarshal(res4, &resp4); e != nil {
  815. err = fmt.Errorf("ClassifyFourth json unmarshal err: %s", e.Error())
  816. return
  817. }
  818. if resp4.Ret != 200 {
  819. err = fmt.Errorf("ClassifyFourth resp msg: %s; errMsg: %s", resp4.Msg, resp4.ErrMsg)
  820. return
  821. }
  822. fourthId = resp4.Data.ClassifyId
  823. lastId = fourthId
  824. }
  825. // 五级分类
  826. if classifyFifth != "" {
  827. classifyFifthMap := make(map[string]interface{})
  828. classifyFifthMap["ClassifyName"] = classifyFifth
  829. classifyFifthMap["ParentId"] = fourthId
  830. classifyFifthMap["Level"] = 4
  831. classifyFifthMap["ClassifyType"] = 0
  832. res5, e := PostEdbLib(classifyFifthMap, method)
  833. if e != nil {
  834. err = fmt.Errorf("ClassifyFifth PostEdbLib err: %s", e.Error())
  835. return
  836. }
  837. resp5 := new(models.ClassifyResp)
  838. if e = json.Unmarshal(res5, &resp5); e != nil {
  839. err = fmt.Errorf("ClassifyFifth json unmarshal err: %s", e.Error())
  840. return
  841. }
  842. if resp5.Ret != 200 {
  843. err = fmt.Errorf("ClassifyFifth resp msg: %s; errMsg: %s", resp5.Msg, resp5.ErrMsg)
  844. return
  845. }
  846. fifthId = resp5.Data.ClassifyId
  847. lastId = fifthId
  848. }
  849. // 六级分类
  850. if classifySixth != "" {
  851. classifySixthMap := make(map[string]interface{})
  852. classifySixthMap["ClassifyName"] = classifySixth
  853. classifySixthMap["ParentId"] = fifthId
  854. classifySixthMap["Level"] = 5
  855. classifySixthMap["ClassifyType"] = 0
  856. res6, e := PostEdbLib(classifySixthMap, method)
  857. if e != nil {
  858. err = fmt.Errorf("ClassifySixth PostEdbLib err: %s", e.Error())
  859. return
  860. }
  861. resp6 := new(models.ClassifyResp)
  862. if e = json.Unmarshal(res6, &resp6); e != nil {
  863. err = fmt.Errorf("ClassifySixth json unmarshal err: %s", e.Error())
  864. return
  865. }
  866. if resp6.Ret != 200 {
  867. err = fmt.Errorf("ClassifySixth resp msg: %s; errMsg: %s", resp6.Msg, resp6.ErrMsg)
  868. return
  869. }
  870. lastId = resp6.Data.ClassifyId
  871. }
  872. method = "edb_info/add"
  873. indexMap := make(map[string]interface{})
  874. indexMap["Source"] = IndexSourceMap[source]
  875. indexMap["EdbCode"] = indexCode
  876. indexMap["EdbName"] = indexName
  877. indexMap["Frequency"] = frequency
  878. indexMap["Unit"] = unit
  879. indexMap["ClassifyId"] = lastId
  880. admin := mobileMap[mobile]
  881. if admin != nil {
  882. indexMap["AdminId"] = admin.AdminId
  883. indexMap["AdminName"] = admin.RealName
  884. }
  885. result, err = PostEdbLib(indexMap, method)
  886. if err != nil {
  887. utils.FileLog.Info("初始化指标失败:" + err.Error() + " result:" + string(result))
  888. return
  889. }
  890. indexResp := new(models.EdbInfoResp)
  891. err = json.Unmarshal(result, &indexResp)
  892. if err != nil {
  893. utils.FileLog.Info("初始化分类2失败:" + err.Error())
  894. return
  895. }
  896. if indexResp.Ret != 200 {
  897. if strings.Contains(indexResp.Msg, "新增指标失败") {
  898. continue
  899. } else {
  900. fmt.Println("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  901. utils.FileLog.Info("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  902. return
  903. }
  904. }
  905. fmt.Println("add index success:" + indexCode)
  906. //刷新指标
  907. {
  908. refreshMethod := "smm/refresh"
  909. refreshMap := make(map[string]interface{})
  910. refreshMap["EdbInfoId"] = indexResp.Data.EdbInfoId
  911. refreshMap["EdbCode"] = indexCode
  912. refreshMap["StartDate"] = "1990-01-01"
  913. PostEdbLib(refreshMap, refreshMethod)
  914. }
  915. } else {
  916. fmt.Println("data is empty")
  917. fmt.Println(classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source)
  918. }
  919. }
  920. }
  921. }
  922. /*
  923. // PostEdbLib 调用指标接口
  924. func PostEdbLib(param map[string]interface{}, method string) (resp *models.BaseResponse, err error) {
  925. postUrl := utils.EDB_LIB_URL + method
  926. postData, err := json.Marshal(param)
  927. if err != nil {
  928. return
  929. }
  930. result, err := HttpPost(postUrl, string(postData), "application/json")
  931. if err != nil {
  932. return
  933. }
  934. err = json.Unmarshal(result, &resp)
  935. if err != nil {
  936. return
  937. }
  938. return resp, nil
  939. }
  940. */