init_base_index.go 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994
  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. }
  297. if method != `` {
  298. refreshMap := make(map[string]interface{})
  299. refreshMap["EdbInfoId"] = indexResp.Data.EdbInfoId
  300. refreshMap["EdbCode"] = indexCode
  301. refreshMap["StartDate"] = "1990-01-01"
  302. PostEdbLib(refreshMap, method)
  303. }
  304. }
  305. } else {
  306. fmt.Println("data is empty")
  307. fmt.Println(classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source)
  308. }
  309. }
  310. }
  311. }
  312. // 初始化基础指标数据-钢联
  313. func InitBaseIndexDataFromMysteel(filePath string) {
  314. var err error
  315. defer func() {
  316. if err != nil {
  317. fmt.Println("InitBaseIndexDataFromMysteel Err:" + err.Error())
  318. utils.FileLog.Info("InitBaseIndexDataFromMysteel Err:" + err.Error())
  319. }
  320. }()
  321. //读取excel
  322. path, err := filepath.Abs(os.Args[0])
  323. if err != nil {
  324. fmt.Println(err)
  325. }
  326. dir := filepath.Dir(path)
  327. fmt.Println("dir:" + dir)
  328. dataPath := dir + filePath
  329. fmt.Println("dataPath:" + dataPath)
  330. f, err := excelize.OpenFile(dataPath)
  331. if err != nil {
  332. fmt.Println(err)
  333. return
  334. }
  335. defer func() {
  336. // Close the spreadsheet.
  337. if err := f.Close(); err != nil {
  338. fmt.Println(err)
  339. }
  340. }()
  341. rows, err := f.GetRows("Sheet1")
  342. if err != nil {
  343. fmt.Println(err)
  344. return
  345. }
  346. fmt.Println("rows len:", len(rows))
  347. // 获取创建人信息
  348. mobileMap := make(map[string]*models.Admin)
  349. if utils.MYSQL_URL_ETA != "" {
  350. admins, e := models.GetSysAdminList(``, make([]interface{}, 0))
  351. if e != nil {
  352. err = fmt.Errorf("GetSysAdminList err: %s", e.Error())
  353. return
  354. }
  355. for _, v := range admins {
  356. if v.Mobile == "" {
  357. continue
  358. }
  359. mobileMap[v.Mobile] = v
  360. }
  361. }
  362. for rk, row := range rows {
  363. if rk > 0 {
  364. var classifyFirst, classifySecond, classifyThree, classifyFourth, classifyFifth, classifySixth, indexCode, indexName, frequency, unit, source, mobile string
  365. for ck, colCell := range row {
  366. colCell = strings.TrimSpace(colCell)
  367. switch ck {
  368. case 0:
  369. classifyFirst = colCell
  370. case 1:
  371. classifySecond = colCell
  372. case 2:
  373. classifyThree = colCell
  374. case 3:
  375. classifyFourth = colCell
  376. case 4:
  377. classifyFifth = colCell
  378. case 5:
  379. classifySixth = colCell
  380. case 6:
  381. indexCode = colCell
  382. case 7:
  383. indexName = colCell
  384. case 8:
  385. frequency = colCell
  386. case 9:
  387. unit = colCell
  388. case 10:
  389. source = colCell
  390. case 11:
  391. mobile = colCell
  392. }
  393. }
  394. if classifyFirst != "" &&
  395. indexCode != "" &&
  396. indexName != "" &&
  397. unit != "" &&
  398. frequency != "" &&
  399. source != "" {
  400. //判断指标是否存在
  401. method := "mysteel_chemical/index_detail"
  402. indexSearchMap := make(map[string]interface{})
  403. indexSearchMap["IndexCode"] = indexCode
  404. indexResult, e := PostEdbLib(indexSearchMap, method)
  405. if e != nil {
  406. err = fmt.Errorf("判断指标是否存在失败, Err: %s", e.Error())
  407. return
  408. }
  409. mysteelIndexResp := new(models.MysteelIndexResp)
  410. e = json.Unmarshal(indexResult, &mysteelIndexResp)
  411. if e != nil {
  412. err = fmt.Errorf("判断指标是否存在失败, Err: %s", e.Error())
  413. return
  414. }
  415. if mysteelIndexResp.Ret != 200 {
  416. fmt.Println("判断指标是否存在失败,Err:" + mysteelIndexResp.ErrMsg)
  417. //utils.FileLog.Info("判断指标是否存在失败:" + err.Error())
  418. //return
  419. continue
  420. }
  421. if mysteelIndexResp.Data.BaseFromMysteelChemicalIndexId <= 0 {
  422. fmt.Println("指标:" + indexCode + ";不存在")
  423. continue
  424. }
  425. var firstId, secondId, thirdId, fourthId, fifthId, lastId int
  426. method = "classify/get_or_add"
  427. classifyFirstMap := make(map[string]interface{})
  428. classifyFirstMap["ClassifyName"] = classifyFirst
  429. classifyFirstMap["ParentId"] = 0
  430. classifyFirstMap["Level"] = 0
  431. classifyFirstMap["ClassifyType"] = 0
  432. result, e := PostEdbLib(classifyFirstMap, method)
  433. if e != nil {
  434. err = fmt.Errorf("ClassifyFirst PostEdbLib err: %s", e.Error())
  435. return
  436. }
  437. resp := new(models.ClassifyResp)
  438. if e = json.Unmarshal(result, &resp); e != nil {
  439. err = fmt.Errorf("ClassifyFirst json unmarshal err: %s", e.Error())
  440. return
  441. }
  442. if resp.Ret != 200 {
  443. err = fmt.Errorf("ClassifyFirst resp msg: %s; errMsg: %s", resp.Msg, resp.ErrMsg)
  444. return
  445. }
  446. firstId = resp.Data.ClassifyId
  447. lastId = firstId
  448. // 二级分类
  449. if classifySecond != "" {
  450. classifySecondMap := make(map[string]interface{})
  451. classifySecondMap["ClassifyName"] = classifySecond
  452. classifySecondMap["ParentId"] = firstId
  453. classifySecondMap["Level"] = 1
  454. classifySecondMap["ClassifyType"] = 0
  455. res2, e := PostEdbLib(classifySecondMap, method)
  456. if e != nil {
  457. err = fmt.Errorf("ClassifySecond PostEdbLib err: %s", e.Error())
  458. return
  459. }
  460. resp2 := new(models.ClassifyResp)
  461. if e = json.Unmarshal(res2, &resp2); e != nil {
  462. err = fmt.Errorf("ClassifySecond json unmarshal err: %s", e.Error())
  463. return
  464. }
  465. if resp2.Ret != 200 {
  466. err = fmt.Errorf("ClassifySecond resp msg: %s; errMsg: %s", resp2.Msg, resp2.ErrMsg)
  467. return
  468. }
  469. secondId = resp2.Data.ClassifyId
  470. lastId = secondId
  471. }
  472. // 三级分类
  473. if classifyThree != "" {
  474. classifyThreeMap := make(map[string]interface{})
  475. classifyThreeMap["ClassifyName"] = classifyThree
  476. classifyThreeMap["ParentId"] = secondId
  477. classifyThreeMap["Level"] = 2
  478. classifyThreeMap["ClassifyType"] = 0
  479. res3, e := PostEdbLib(classifyThreeMap, method)
  480. if e != nil {
  481. err = fmt.Errorf("ClassifyThird PostEdbLib err: %s", e.Error())
  482. return
  483. }
  484. resp3 := new(models.ClassifyResp)
  485. if e = json.Unmarshal(res3, &resp3); e != nil {
  486. err = fmt.Errorf("ClassifyThird json unmarshal err: %s", e.Error())
  487. return
  488. }
  489. if resp3.Ret != 200 {
  490. err = fmt.Errorf("ClassifyThird resp msg: %s; errMsg: %s", resp3.Msg, resp3.ErrMsg)
  491. return
  492. }
  493. thirdId = resp3.Data.ClassifyId
  494. lastId = thirdId
  495. }
  496. // 四级分类
  497. if classifyFourth != "" {
  498. classifyFourthMap := make(map[string]interface{})
  499. classifyFourthMap["ClassifyName"] = classifyFourth
  500. classifyFourthMap["ParentId"] = thirdId
  501. classifyFourthMap["Level"] = 3
  502. classifyFourthMap["ClassifyType"] = 0
  503. res4, e := PostEdbLib(classifyFourthMap, method)
  504. if e != nil {
  505. err = fmt.Errorf("ClassifyFourth PostEdbLib err: %s", e.Error())
  506. return
  507. }
  508. resp4 := new(models.ClassifyResp)
  509. if e = json.Unmarshal(res4, &resp4); e != nil {
  510. err = fmt.Errorf("ClassifyFourth json unmarshal err: %s", e.Error())
  511. return
  512. }
  513. if resp4.Ret != 200 {
  514. err = fmt.Errorf("ClassifyFourth resp msg: %s; errMsg: %s", resp4.Msg, resp4.ErrMsg)
  515. return
  516. }
  517. fourthId = resp4.Data.ClassifyId
  518. lastId = fourthId
  519. }
  520. // 五级分类
  521. if classifyFifth != "" {
  522. classifyFifthMap := make(map[string]interface{})
  523. classifyFifthMap["ClassifyName"] = classifyFifth
  524. classifyFifthMap["ParentId"] = fourthId
  525. classifyFifthMap["Level"] = 4
  526. classifyFifthMap["ClassifyType"] = 0
  527. res5, e := PostEdbLib(classifyFifthMap, method)
  528. if e != nil {
  529. err = fmt.Errorf("ClassifyFifth PostEdbLib err: %s", e.Error())
  530. return
  531. }
  532. resp5 := new(models.ClassifyResp)
  533. if e = json.Unmarshal(res5, &resp5); e != nil {
  534. err = fmt.Errorf("ClassifyFifth json unmarshal err: %s", e.Error())
  535. return
  536. }
  537. if resp5.Ret != 200 {
  538. err = fmt.Errorf("ClassifyFifth resp msg: %s; errMsg: %s", resp5.Msg, resp5.ErrMsg)
  539. return
  540. }
  541. fifthId = resp5.Data.ClassifyId
  542. lastId = fifthId
  543. }
  544. // 六级分类
  545. if classifySixth != "" {
  546. classifySixthMap := make(map[string]interface{})
  547. classifySixthMap["ClassifyName"] = classifySixth
  548. classifySixthMap["ParentId"] = fifthId
  549. classifySixthMap["Level"] = 5
  550. classifySixthMap["ClassifyType"] = 0
  551. res6, e := PostEdbLib(classifySixthMap, method)
  552. if e != nil {
  553. err = fmt.Errorf("ClassifySixth PostEdbLib err: %s", e.Error())
  554. return
  555. }
  556. resp6 := new(models.ClassifyResp)
  557. if e = json.Unmarshal(res6, &resp6); e != nil {
  558. err = fmt.Errorf("ClassifySixth json unmarshal err: %s", e.Error())
  559. return
  560. }
  561. if resp6.Ret != 200 {
  562. err = fmt.Errorf("ClassifySixth resp msg: %s; errMsg: %s", resp6.Msg, resp6.ErrMsg)
  563. return
  564. }
  565. lastId = resp6.Data.ClassifyId
  566. }
  567. method = "edb_info/add"
  568. indexMap := make(map[string]interface{})
  569. indexMap["Source"] = IndexSourceMap[source]
  570. indexMap["EdbCode"] = indexCode
  571. indexMap["EdbName"] = indexName
  572. indexMap["Frequency"] = frequency
  573. indexMap["Unit"] = unit
  574. indexMap["ClassifyId"] = lastId
  575. admin := mobileMap[mobile]
  576. if admin != nil {
  577. indexMap["AdminId"] = admin.AdminId
  578. indexMap["AdminName"] = admin.RealName
  579. }
  580. result, err = PostEdbLib(indexMap, method)
  581. if err != nil {
  582. utils.FileLog.Info("初始化指标失败:" + err.Error() + " result:" + string(result))
  583. return
  584. }
  585. indexResp := new(models.EdbInfoResp)
  586. err = json.Unmarshal(result, &indexResp)
  587. if err != nil {
  588. utils.FileLog.Info("初始化分类2失败:" + err.Error())
  589. return
  590. }
  591. if indexResp.Ret != 200 {
  592. if strings.Contains(indexResp.Msg, "新增指标失败") {
  593. continue
  594. } else {
  595. fmt.Println("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  596. utils.FileLog.Info("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  597. return
  598. }
  599. }
  600. fmt.Println("add index success:" + indexCode)
  601. //刷新指标
  602. method = "mysteel_chemical/refresh"
  603. refreshMap := make(map[string]interface{})
  604. refreshMap["EdbInfoId"] = indexResp.Data.EdbInfoId
  605. refreshMap["EdbCode"] = indexCode
  606. refreshMap["StartDate"] = "1990-01-01"
  607. PostEdbLib(refreshMap, method)
  608. } else {
  609. fmt.Println("data is empty")
  610. fmt.Println(classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source)
  611. }
  612. }
  613. }
  614. }
  615. // 初始化基础指标数据-有色
  616. func InitBaseIndexDataFromDataSourceSmm(filePath string) {
  617. var err error
  618. defer func() {
  619. if err != nil {
  620. fmt.Println("InitBaseIndexDataFromDataSourceSmm Err:" + err.Error())
  621. utils.FileLog.Info("InitBaseIndexDataFromDataSourceSmm Err:" + err.Error())
  622. }
  623. }()
  624. //读取excel
  625. path, err := filepath.Abs(os.Args[0])
  626. if err != nil {
  627. fmt.Println(err)
  628. }
  629. dir := filepath.Dir(path)
  630. fmt.Println("dir:" + dir)
  631. dataPath := dir + filePath
  632. fmt.Println("dataPath:" + dataPath)
  633. f, err := excelize.OpenFile(dataPath)
  634. if err != nil {
  635. fmt.Println(err)
  636. return
  637. }
  638. defer func() {
  639. // Close the spreadsheet.
  640. if err := f.Close(); err != nil {
  641. fmt.Println(err)
  642. }
  643. }()
  644. rows, err := f.GetRows("Sheet1")
  645. if err != nil {
  646. fmt.Println(err)
  647. return
  648. }
  649. fmt.Println("rows len:", len(rows))
  650. // 获取创建人信息
  651. mobileMap := make(map[string]*models.Admin)
  652. if utils.MYSQL_URL_ETA != "" {
  653. admins, e := models.GetSysAdminList(``, make([]interface{}, 0))
  654. if e != nil {
  655. err = fmt.Errorf("GetSysAdminList err: %s", e.Error())
  656. return
  657. }
  658. for _, v := range admins {
  659. if v.Mobile == "" {
  660. continue
  661. }
  662. mobileMap[v.Mobile] = v
  663. }
  664. }
  665. for rk, row := range rows {
  666. if rk > 0 {
  667. var classifyFirst, classifySecond, classifyThree, classifyFourth, classifyFifth, classifySixth, indexCode, indexName, frequency, unit, source, mobile string
  668. for ck, colCell := range row {
  669. colCell = strings.TrimSpace(colCell)
  670. switch ck {
  671. case 0:
  672. classifyFirst = colCell
  673. case 1:
  674. classifySecond = colCell
  675. case 2:
  676. classifyThree = colCell
  677. case 3:
  678. classifyFourth = colCell
  679. case 4:
  680. classifyFifth = colCell
  681. case 5:
  682. classifySixth = colCell
  683. case 6:
  684. indexCode = colCell
  685. case 7:
  686. indexName = colCell
  687. case 8:
  688. frequency = colCell
  689. case 9:
  690. unit = colCell
  691. case 10:
  692. source = colCell
  693. case 11:
  694. mobile = colCell
  695. }
  696. }
  697. if classifyFirst != "" &&
  698. indexCode != "" &&
  699. indexName != "" &&
  700. unit != "" &&
  701. frequency != "" &&
  702. source != "" {
  703. //判断指标是否存在
  704. method := "smm/index_detail/from_data_source"
  705. indexSearchMap := make(map[string]interface{})
  706. indexSearchMap["IndexCode"] = indexCode
  707. indexResult, e := PostEdbLib(indexSearchMap, method)
  708. if e != nil {
  709. err = fmt.Errorf("判断指标是否存在失败, Err: %s", e.Error())
  710. return
  711. }
  712. smmIndexResp := new(models.BaseFromSmmIndexResp)
  713. e = json.Unmarshal(indexResult, &smmIndexResp)
  714. if e != nil {
  715. err = fmt.Errorf("判断指标是否存在失败, Err: %s", e.Error())
  716. return
  717. }
  718. if smmIndexResp.Ret != 200 {
  719. fmt.Println("判断指标是否存在失败,Err:" + smmIndexResp.ErrMsg)
  720. //utils.FileLog.Info("判断指标是否存在失败:" + err.Error())
  721. //return
  722. continue
  723. }
  724. if smmIndexResp.Data.BaseFromSmmIndexId <= 0 {
  725. fmt.Println("指标:" + indexCode + ";不存在")
  726. continue
  727. }
  728. var firstId, secondId, thirdId, fourthId, fifthId, lastId int
  729. method = "classify/get_or_add"
  730. classifyFirstMap := make(map[string]interface{})
  731. classifyFirstMap["ClassifyName"] = classifyFirst
  732. classifyFirstMap["ParentId"] = 0
  733. classifyFirstMap["Level"] = 0
  734. classifyFirstMap["ClassifyType"] = 0
  735. result, e := PostEdbLib(classifyFirstMap, method)
  736. if e != nil {
  737. err = fmt.Errorf("ClassifyFirst PostEdbLib err: %s", e.Error())
  738. return
  739. }
  740. resp := new(models.ClassifyResp)
  741. if e = json.Unmarshal(result, &resp); e != nil {
  742. err = fmt.Errorf("ClassifyFirst json unmarshal err: %s", e.Error())
  743. return
  744. }
  745. if resp.Ret != 200 {
  746. err = fmt.Errorf("ClassifyFirst resp msg: %s; errMsg: %s", resp.Msg, resp.ErrMsg)
  747. return
  748. }
  749. firstId = resp.Data.ClassifyId
  750. lastId = firstId
  751. // 二级分类
  752. if classifySecond != "" {
  753. classifySecondMap := make(map[string]interface{})
  754. classifySecondMap["ClassifyName"] = classifySecond
  755. classifySecondMap["ParentId"] = firstId
  756. classifySecondMap["Level"] = 1
  757. classifySecondMap["ClassifyType"] = 0
  758. res2, e := PostEdbLib(classifySecondMap, method)
  759. if e != nil {
  760. err = fmt.Errorf("ClassifySecond PostEdbLib err: %s", e.Error())
  761. return
  762. }
  763. resp2 := new(models.ClassifyResp)
  764. if e = json.Unmarshal(res2, &resp2); e != nil {
  765. err = fmt.Errorf("ClassifySecond json unmarshal err: %s", e.Error())
  766. return
  767. }
  768. if resp2.Ret != 200 {
  769. err = fmt.Errorf("ClassifySecond resp msg: %s; errMsg: %s", resp2.Msg, resp2.ErrMsg)
  770. return
  771. }
  772. secondId = resp2.Data.ClassifyId
  773. lastId = secondId
  774. }
  775. // 三级分类
  776. if classifyThree != "" {
  777. classifyThreeMap := make(map[string]interface{})
  778. classifyThreeMap["ClassifyName"] = classifyThree
  779. classifyThreeMap["ParentId"] = secondId
  780. classifyThreeMap["Level"] = 2
  781. classifyThreeMap["ClassifyType"] = 0
  782. res3, e := PostEdbLib(classifyThreeMap, method)
  783. if e != nil {
  784. err = fmt.Errorf("ClassifyThird PostEdbLib err: %s", e.Error())
  785. return
  786. }
  787. resp3 := new(models.ClassifyResp)
  788. if e = json.Unmarshal(res3, &resp3); e != nil {
  789. err = fmt.Errorf("ClassifyThird json unmarshal err: %s", e.Error())
  790. return
  791. }
  792. if resp3.Ret != 200 {
  793. err = fmt.Errorf("ClassifyThird resp msg: %s; errMsg: %s", resp3.Msg, resp3.ErrMsg)
  794. return
  795. }
  796. thirdId = resp3.Data.ClassifyId
  797. lastId = thirdId
  798. }
  799. // 四级分类
  800. if classifyFourth != "" {
  801. classifyFourthMap := make(map[string]interface{})
  802. classifyFourthMap["ClassifyName"] = classifyFourth
  803. classifyFourthMap["ParentId"] = thirdId
  804. classifyFourthMap["Level"] = 3
  805. classifyFourthMap["ClassifyType"] = 0
  806. res4, e := PostEdbLib(classifyFourthMap, method)
  807. if e != nil {
  808. err = fmt.Errorf("ClassifyFourth PostEdbLib err: %s", e.Error())
  809. return
  810. }
  811. resp4 := new(models.ClassifyResp)
  812. if e = json.Unmarshal(res4, &resp4); e != nil {
  813. err = fmt.Errorf("ClassifyFourth json unmarshal err: %s", e.Error())
  814. return
  815. }
  816. if resp4.Ret != 200 {
  817. err = fmt.Errorf("ClassifyFourth resp msg: %s; errMsg: %s", resp4.Msg, resp4.ErrMsg)
  818. return
  819. }
  820. fourthId = resp4.Data.ClassifyId
  821. lastId = fourthId
  822. }
  823. // 五级分类
  824. if classifyFifth != "" {
  825. classifyFifthMap := make(map[string]interface{})
  826. classifyFifthMap["ClassifyName"] = classifyFifth
  827. classifyFifthMap["ParentId"] = fourthId
  828. classifyFifthMap["Level"] = 4
  829. classifyFifthMap["ClassifyType"] = 0
  830. res5, e := PostEdbLib(classifyFifthMap, method)
  831. if e != nil {
  832. err = fmt.Errorf("ClassifyFifth PostEdbLib err: %s", e.Error())
  833. return
  834. }
  835. resp5 := new(models.ClassifyResp)
  836. if e = json.Unmarshal(res5, &resp5); e != nil {
  837. err = fmt.Errorf("ClassifyFifth json unmarshal err: %s", e.Error())
  838. return
  839. }
  840. if resp5.Ret != 200 {
  841. err = fmt.Errorf("ClassifyFifth resp msg: %s; errMsg: %s", resp5.Msg, resp5.ErrMsg)
  842. return
  843. }
  844. fifthId = resp5.Data.ClassifyId
  845. lastId = fifthId
  846. }
  847. // 六级分类
  848. if classifySixth != "" {
  849. classifySixthMap := make(map[string]interface{})
  850. classifySixthMap["ClassifyName"] = classifySixth
  851. classifySixthMap["ParentId"] = fifthId
  852. classifySixthMap["Level"] = 5
  853. classifySixthMap["ClassifyType"] = 0
  854. res6, e := PostEdbLib(classifySixthMap, method)
  855. if e != nil {
  856. err = fmt.Errorf("ClassifySixth PostEdbLib err: %s", e.Error())
  857. return
  858. }
  859. resp6 := new(models.ClassifyResp)
  860. if e = json.Unmarshal(res6, &resp6); e != nil {
  861. err = fmt.Errorf("ClassifySixth json unmarshal err: %s", e.Error())
  862. return
  863. }
  864. if resp6.Ret != 200 {
  865. err = fmt.Errorf("ClassifySixth resp msg: %s; errMsg: %s", resp6.Msg, resp6.ErrMsg)
  866. return
  867. }
  868. lastId = resp6.Data.ClassifyId
  869. }
  870. method = "edb_info/add"
  871. indexMap := make(map[string]interface{})
  872. indexMap["Source"] = IndexSourceMap[source]
  873. indexMap["EdbCode"] = indexCode
  874. indexMap["EdbName"] = indexName
  875. indexMap["Frequency"] = frequency
  876. indexMap["Unit"] = unit
  877. indexMap["ClassifyId"] = lastId
  878. admin := mobileMap[mobile]
  879. if admin != nil {
  880. indexMap["AdminId"] = admin.AdminId
  881. indexMap["AdminName"] = admin.RealName
  882. }
  883. result, err = PostEdbLib(indexMap, method)
  884. if err != nil {
  885. utils.FileLog.Info("初始化指标失败:" + err.Error() + " result:" + string(result))
  886. return
  887. }
  888. indexResp := new(models.EdbInfoResp)
  889. err = json.Unmarshal(result, &indexResp)
  890. if err != nil {
  891. utils.FileLog.Info("初始化分类2失败:" + err.Error())
  892. return
  893. }
  894. if indexResp.Ret != 200 {
  895. if strings.Contains(indexResp.Msg, "新增指标失败") {
  896. continue
  897. } else {
  898. fmt.Println("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  899. utils.FileLog.Info("初始化指标失败:" + indexResp.Msg + ";" + indexResp.ErrMsg)
  900. return
  901. }
  902. }
  903. fmt.Println("add index success:" + indexCode)
  904. //刷新指标
  905. {
  906. refreshMethod := "smm/refresh"
  907. refreshMap := make(map[string]interface{})
  908. refreshMap["EdbInfoId"] = indexResp.Data.EdbInfoId
  909. refreshMap["EdbCode"] = indexCode
  910. refreshMap["StartDate"] = "1990-01-01"
  911. PostEdbLib(refreshMap, refreshMethod)
  912. }
  913. } else {
  914. fmt.Println("data is empty")
  915. fmt.Println(classifyFirst, classifySecond, classifyThree, indexCode, indexName, frequency, unit, source)
  916. }
  917. }
  918. }
  919. }
  920. /*
  921. // PostEdbLib 调用指标接口
  922. func PostEdbLib(param map[string]interface{}, method string) (resp *models.BaseResponse, err error) {
  923. postUrl := utils.EDB_LIB_URL + method
  924. postData, err := json.Marshal(param)
  925. if err != nil {
  926. return
  927. }
  928. result, err := HttpPost(postUrl, string(postData), "application/json")
  929. if err != nil {
  930. return
  931. }
  932. err = json.Unmarshal(result, &resp)
  933. if err != nil {
  934. return
  935. }
  936. return resp, nil
  937. }
  938. */