init_base_index.go 28 KB

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