gn.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687
  1. package eta_bridge
  2. import (
  3. "context"
  4. "encoding/json"
  5. "eta_gn/eta_task/models/data_manage"
  6. "eta_gn/eta_task/services/alarm_msg"
  7. "eta_gn/eta_task/services/data"
  8. "eta_gn/eta_task/utils"
  9. "fmt"
  10. "github.com/rdlucklib/rdluck_tools/paging"
  11. "io/ioutil"
  12. "net/url"
  13. "strconv"
  14. "strings"
  15. "sync"
  16. "time"
  17. )
  18. var lockSyncGnIndex sync.Mutex
  19. const GnEdbListUri = `/index_data/gn/edb/list` // 国能指标列表接口
  20. var CurrLevelParentClassifyMap map[int64]map[int64]map[string]CurrClassify
  21. var CurrEdbInfoMap map[string]*data_manage.EdbInfo
  22. type CurrClassify struct {
  23. ClassifyId int64
  24. ParentId int64
  25. ClassifyName string
  26. }
  27. func SyncGnIndex(cont context.Context) (err error) {
  28. fmt.Println("准备同步指标")
  29. lockSyncGnIndex.Lock()
  30. errMsgList := make([]string, 0)
  31. fmt.Println("开始同步指标")
  32. defer func() {
  33. if err != nil {
  34. tips := "SyncGnIndex-定时同步国能的指标信息到ETA失败, ErrMsg:\n" + err.Error()
  35. utils.FileLog.Info(tips)
  36. go alarm_msg.SendAlarmMsg(tips, 3)
  37. }
  38. if len(errMsgList) > 0 {
  39. tips := "SyncGnIndex-定时同步国能的指标信息到ETA失败, ErrMsg:\n" + strings.Join(errMsgList, "\n")
  40. utils.FileLog.Info(tips)
  41. go alarm_msg.SendAlarmMsg(tips, 3)
  42. }
  43. lockSyncGnIndex.Unlock()
  44. }()
  45. initCurrEdbInfoMap()
  46. initCurrLevelParentClassifyMap()
  47. var lastUpdateTimeStr string // 上一次更新的时间
  48. err, errMsgList = syncGnIndex(1, utils.SyncCrmIndexNum, lastUpdateTimeStr)
  49. return
  50. }
  51. func initCurrLevelParentClassifyMap() {
  52. var condition string
  53. var pars []interface{}
  54. condition = " AND classify_type = ? "
  55. pars = append(pars, 0)
  56. classifyList, err := data_manage.GetAllEdbClassifyListByCondition(condition, pars)
  57. if err != nil {
  58. utils.FileLog.Error("获取分类列表数据失败:" + err.Error())
  59. return
  60. }
  61. CurrLevelParentClassifyMap = make(map[int64]map[int64]map[string]CurrClassify)
  62. for _, v := range classifyList {
  63. currParentClassifyMap, ok := CurrLevelParentClassifyMap[v.Level]
  64. if !ok {
  65. currParentClassifyMap = make(map[int64]map[string]CurrClassify)
  66. }
  67. currClassifyMap, ok := currParentClassifyMap[v.ParentID]
  68. if !ok {
  69. currClassifyMap = make(map[string]CurrClassify)
  70. }
  71. classifyName := strings.TrimSpace(v.ClassifyName)
  72. currClassifyMap[classifyName] = CurrClassify{
  73. ClassifyId: v.ClassifyID,
  74. ParentId: v.ParentID,
  75. ClassifyName: classifyName,
  76. }
  77. currParentClassifyMap[v.ParentID] = currClassifyMap
  78. CurrLevelParentClassifyMap[v.Level] = currParentClassifyMap
  79. }
  80. }
  81. func initCurrEdbInfoMap() {
  82. edbInfoList, err := data_manage.GetAllBaseEdbInfo()
  83. if err != nil {
  84. utils.FileLog.Error("获取指标列表数据失败:" + err.Error())
  85. return
  86. }
  87. CurrEdbInfoMap = make(map[string]*data_manage.EdbInfo)
  88. for _, v := range edbInfoList {
  89. CurrEdbInfoMap[v.OriginalEdbCode] = v
  90. }
  91. }
  92. type EtaBridgeGnIndexListResp struct {
  93. Code int `json:"code" description:"状态码"`
  94. Msg string `json:"msg" description:"提示信息"`
  95. Data IndexListResp `json:"data" description:"返回数据"`
  96. }
  97. type IndexListResp struct {
  98. Page paging.PagingItem `description:"分页数据"`
  99. List []IndexInfo
  100. }
  101. type IndexInfo struct {
  102. ClassifyNameOne string `description:"一级目录"`
  103. ClassifyNameTwo string `description:"二级目录"`
  104. ClassifyNameThree string `description:"三级目录"`
  105. DataIndexCode string `description:"数据节点指标编码"`
  106. SourceEdbCode string `description:"数据源指标原始编码"`
  107. EdbName string `description:"指标名称"`
  108. Frequency string `description:"频度"`
  109. Unit string `description:"单位"`
  110. SourceName string `description:"来源"`
  111. SourceCode string `description:"来源编码"`
  112. }
  113. type BridgeGnIndexParams struct {
  114. LastModifyTime string `json:"last_modify_time" description:"最近一次更新时间"`
  115. PageIndex int `json:"page_index" description:"当前页码"`
  116. PageSize int `json:"page_size" description:"每页数量"`
  117. IndexId string `json:"index_id" description:"指标ID,不为空时表示只取该指标"`
  118. }
  119. func syncGnIndex(currIndex, pageSize int, baseLastUpdateTimeStr string) (err error, errMsgList []string) {
  120. fmt.Println("开始第", currIndex, "页的更新")
  121. errMsgList = make([]string, 0)
  122. lastUpdateTimeStr := baseLastUpdateTimeStr
  123. if lastUpdateTimeStr != `` {
  124. lastUpdateTimeStr = url.QueryEscape(lastUpdateTimeStr)
  125. }
  126. params := BridgeGnIndexParams{
  127. LastModifyTime: lastUpdateTimeStr,
  128. PageIndex: currIndex,
  129. PageSize: pageSize,
  130. }
  131. bResult, err, _ := HttpEtaBridgePost(utils.SyncIndexPath, params)
  132. if err != nil {
  133. return
  134. }
  135. var result EtaBridgeGnIndexListResp
  136. err = json.Unmarshal(bResult, &result)
  137. if err != nil {
  138. err = fmt.Errorf("result unmarshal err: %s\nresult: %s", err.Error(), string(bResult))
  139. utils.FileLog.Info("桥接服务get请求失败:\n" + string(bResult))
  140. return
  141. }
  142. for _, v := range result.Data.List {
  143. tmpErr := handleIndex(v)
  144. if tmpErr != nil {
  145. errMsgList = append(errMsgList, tmpErr.Error())
  146. }
  147. }
  148. fmt.Println(currIndex, "是否已结束:", result.Data.Page.IsEnd)
  149. if !result.Data.Page.IsEnd {
  150. _, tmpErrMsgList := syncGnIndex(currIndex+1, utils.SyncCrmIndexNum, baseLastUpdateTimeStr)
  151. errMsgList = append(errMsgList, tmpErrMsgList...)
  152. }
  153. return
  154. }
  155. func handleIndex(index IndexInfo) (err error) {
  156. oneClassifyId, twoClassifyId, thirdClassifyId, err := handleClassify(index)
  157. if err != nil {
  158. return
  159. }
  160. classifyId := thirdClassifyId
  161. if classifyId <= 0 {
  162. classifyId = twoClassifyId
  163. }
  164. if classifyId <= 0 {
  165. classifyId = oneClassifyId
  166. }
  167. err = handleEdbInfo(index, classifyId)
  168. return
  169. }
  170. func handleClassify(index IndexInfo) (firstClassifyId, secondClassifyId, thirdClassifyId int64, err error) {
  171. firstClassifyName := getClassifyName(index.ClassifyNameOne)
  172. secondClassifyName := getClassifyName(index.ClassifyNameTwo)
  173. thirdClassifyName := getClassifyName(index.ClassifyNameThree)
  174. var oneLevel, twoLevel, threeLevel int64
  175. oneLevel = 1
  176. twoLevel = 2
  177. threeLevel = 3
  178. {
  179. var parentId int64
  180. parentId = 0
  181. classifyName := firstClassifyName
  182. level := oneLevel
  183. currParentClassifyMap, ok := CurrLevelParentClassifyMap[level]
  184. if !ok {
  185. currParentClassifyMap = make(map[int64]map[string]CurrClassify)
  186. }
  187. currClassifyListMap, ok := currParentClassifyMap[parentId]
  188. if !ok {
  189. currClassifyListMap = make(map[string]CurrClassify)
  190. }
  191. currClassify, ok := currClassifyListMap[classifyName]
  192. if !ok {
  193. timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  194. classifyInfo := &data_manage.EdbClassify{
  195. ClassifyType: 0,
  196. ClassifyName: classifyName,
  197. ClassifyNameEn: classifyName,
  198. ParentID: parentId,
  199. RootID: 0,
  200. HasData: 0,
  201. CreateTime: time.Now(),
  202. ModifyTime: time.Now(),
  203. SysUserID: 0,
  204. SysUserRealName: "",
  205. Level: level,
  206. UniqueCode: utils.MD5(fmt.Sprint(parentId, "_", utils.DATA_PREFIX+"_"+timestamp)),
  207. Sort: 0,
  208. }
  209. err = data_manage.AddEdbClassify(classifyInfo)
  210. if err != nil {
  211. return
  212. }
  213. classifyInfo.RootID = classifyInfo.ClassifyID
  214. err = classifyInfo.Update([]string{"root_id"})
  215. if err != nil {
  216. return
  217. }
  218. currClassify = CurrClassify{
  219. ClassifyId: classifyInfo.ClassifyID,
  220. ParentId: classifyInfo.ParentID,
  221. ClassifyName: classifyInfo.ClassifyName,
  222. }
  223. currClassifyListMap[classifyName] = currClassify
  224. currParentClassifyMap[parentId] = currClassifyListMap
  225. CurrLevelParentClassifyMap[level] = currParentClassifyMap
  226. }
  227. firstClassifyId = currClassify.ClassifyId
  228. }
  229. {
  230. parentId := firstClassifyId
  231. classifyName := secondClassifyName
  232. level := twoLevel
  233. if secondClassifyName == `` {
  234. return
  235. }
  236. currParentClassifyMap, ok := CurrLevelParentClassifyMap[level]
  237. if !ok {
  238. currParentClassifyMap = make(map[int64]map[string]CurrClassify)
  239. }
  240. currClassifyListMap, ok := currParentClassifyMap[parentId]
  241. if !ok {
  242. currClassifyListMap = make(map[string]CurrClassify)
  243. }
  244. currClassify, ok := currClassifyListMap[classifyName]
  245. if !ok {
  246. timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  247. classifyInfo := &data_manage.EdbClassify{
  248. ClassifyType: 0,
  249. ClassifyName: classifyName,
  250. ClassifyNameEn: classifyName,
  251. ParentID: parentId,
  252. RootID: firstClassifyId,
  253. HasData: 0,
  254. CreateTime: time.Now(),
  255. ModifyTime: time.Now(),
  256. SysUserID: 0,
  257. SysUserRealName: "",
  258. Level: level,
  259. UniqueCode: utils.MD5(fmt.Sprint(parentId, "_", utils.DATA_PREFIX+"_"+timestamp)),
  260. Sort: 0,
  261. }
  262. err = data_manage.AddEdbClassify(classifyInfo)
  263. if err != nil {
  264. return
  265. }
  266. currClassify = CurrClassify{
  267. ClassifyId: classifyInfo.ClassifyID,
  268. ParentId: classifyInfo.ParentID,
  269. ClassifyName: classifyInfo.ClassifyName,
  270. }
  271. currClassifyListMap[classifyName] = currClassify
  272. currParentClassifyMap[parentId] = currClassifyListMap
  273. CurrLevelParentClassifyMap[level] = currParentClassifyMap
  274. }
  275. secondClassifyId = currClassify.ClassifyId
  276. }
  277. {
  278. parentId := secondClassifyId
  279. classifyName := thirdClassifyName
  280. level := threeLevel
  281. if thirdClassifyName == `` {
  282. return
  283. }
  284. currParentClassifyMap, ok := CurrLevelParentClassifyMap[level]
  285. if !ok {
  286. currParentClassifyMap = make(map[int64]map[string]CurrClassify)
  287. }
  288. currClassifyListMap, ok := currParentClassifyMap[parentId]
  289. if !ok {
  290. currClassifyListMap = make(map[string]CurrClassify)
  291. }
  292. currClassify, ok := currClassifyListMap[classifyName]
  293. if !ok {
  294. timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  295. classifyInfo := &data_manage.EdbClassify{
  296. ClassifyType: 0,
  297. ClassifyName: classifyName,
  298. ClassifyNameEn: classifyName,
  299. ParentID: parentId,
  300. RootID: firstClassifyId,
  301. HasData: 1,
  302. CreateTime: time.Now(),
  303. ModifyTime: time.Now(),
  304. SysUserID: 0,
  305. SysUserRealName: "",
  306. Level: level,
  307. UniqueCode: utils.MD5(fmt.Sprint(parentId, "_", utils.DATA_PREFIX+"_"+timestamp)),
  308. Sort: 0,
  309. }
  310. err = data_manage.AddEdbClassify(classifyInfo)
  311. if err != nil {
  312. return
  313. }
  314. currClassify = CurrClassify{
  315. ClassifyId: classifyInfo.ClassifyID,
  316. ParentId: classifyInfo.ParentID,
  317. ClassifyName: classifyInfo.ClassifyName,
  318. }
  319. currClassifyListMap[classifyName] = currClassify
  320. currParentClassifyMap[parentId] = currClassifyListMap
  321. CurrLevelParentClassifyMap[level] = currParentClassifyMap
  322. }
  323. thirdClassifyId = currClassify.ClassifyId
  324. }
  325. return
  326. }
  327. func getClassifyName(classifyName string) string {
  328. classifyName = strings.TrimSpace(classifyName)
  329. if classifyName == `` {
  330. return classifyName
  331. }
  332. if classifyName != `其它指标` {
  333. classifyNameList := strings.Split(classifyName, `、`)
  334. if len(classifyNameList) > 0 {
  335. classifyName = classifyNameList[len(classifyNameList)-1]
  336. }
  337. }
  338. return classifyName
  339. }
  340. func handleEdbInfo(index IndexInfo, thirdClassifyId int64) (err error) {
  341. edbInfo, ok := CurrEdbInfoMap[index.DataIndexCode]
  342. frequency := Frequency(strings.TrimSpace(index.Frequency))
  343. unit := strings.TrimSpace(index.Unit)
  344. sourceName, sourceId, err := GetSource(strings.TrimSpace(index.SourceName), strings.TrimSpace(index.SourceCode))
  345. if err != nil {
  346. return
  347. }
  348. if !ok {
  349. endDate := time.Date(1899, 1, 1, 0, 0, 0, 0, time.Local)
  350. timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  351. edbInfo = &data_manage.EdbInfo{
  352. EdbInfoId: 0,
  353. EdbInfoType: utils.EDB_INFO_TYPE,
  354. SourceName: sourceName,
  355. Source: sourceId,
  356. EdbCode: index.SourceEdbCode,
  357. EdbName: index.EdbName,
  358. EdbNameEn: index.EdbName,
  359. EdbNameSource: index.EdbName,
  360. Frequency: frequency,
  361. Unit: unit,
  362. UnitEn: unit,
  363. StartDate: endDate,
  364. EndDate: endDate,
  365. ClassifyId: int(thirdClassifyId),
  366. SysUserId: 0,
  367. SysUserRealName: "",
  368. UniqueCode: utils.MD5(fmt.Sprint(index.SourceEdbCode, "_", utils.DATA_PREFIX+"_"+timestamp)),
  369. CreateTime: time.Now(),
  370. ModifyTime: time.Now(),
  371. BaseModifyTime: time.Now(),
  372. MinValue: 0,
  373. MaxValue: 0,
  374. CalculateFormula: "",
  375. EdbType: utils.EdbTypeBase,
  376. Sort: 0,
  377. LatestDate: "",
  378. LatestValue: 0,
  379. EndValue: 0,
  380. MoveType: 0,
  381. MoveFrequency: "",
  382. NoUpdate: 0,
  383. ServerUrl: "",
  384. ChartImage: "", // 缩略图
  385. Calendar: "",
  386. DataDateType: "",
  387. ManualSave: 0,
  388. EmptyType: 0,
  389. MaxEmptyType: 0,
  390. TerminalCode: "",
  391. DataUpdateTime: "",
  392. ErDataUpdateDate: "",
  393. SourceIndexName: index.EdbName,
  394. SubSource: 0,
  395. SubSourceName: "",
  396. IndicatorCode: "",
  397. StockCode: "",
  398. Extra: "",
  399. IsJoinPermission: 0,
  400. OriginalEdbCode: index.DataIndexCode,
  401. }
  402. err = data_manage.AddEdbInfo(edbInfo)
  403. if err != nil {
  404. return
  405. }
  406. CurrEdbInfoMap[index.DataIndexCode] = edbInfo
  407. fmt.Println(data.RefreshEdbData(edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo.EdbCode, edbInfo.EndDate.Format(utils.FormatDate)))
  408. return
  409. }
  410. updateCols := make([]string, 0)
  411. if edbInfo.EdbNameEn == edbInfo.EdbName && edbInfo.EdbName != index.EdbName {
  412. edbInfo.EdbNameEn = index.EdbName
  413. updateCols = append(updateCols, "edb_name_en")
  414. }
  415. if edbInfo.EdbName != index.EdbName {
  416. edbInfo.EdbName = index.EdbName
  417. updateCols = append(updateCols, "edb_name")
  418. }
  419. if edbInfo.Frequency != index.Frequency {
  420. edbInfo.Frequency = index.Frequency
  421. updateCols = append(updateCols, "frequency")
  422. }
  423. if edbInfo.UnitEn == edbInfo.Unit && edbInfo.Unit != unit {
  424. edbInfo.UnitEn = unit
  425. updateCols = append(updateCols, "unit_en")
  426. }
  427. if edbInfo.Unit != unit {
  428. edbInfo.Unit = unit
  429. updateCols = append(updateCols, "unit")
  430. }
  431. if edbInfo.ClassifyId != int(thirdClassifyId) {
  432. edbInfo.ClassifyId = int(thirdClassifyId)
  433. updateCols = append(updateCols, "classify_id")
  434. }
  435. if len(updateCols) > 0 {
  436. err = edbInfo.Update(updateCols)
  437. }
  438. return
  439. }
  440. func Frequency(unit string) string {
  441. switch unit {
  442. case "半月度":
  443. unit = `周度`
  444. case "不定期":
  445. unit = `日度`
  446. case `日度`, `周度`, `旬度`, `月度`, `季度`, `半年度`, `年度`:
  447. default:
  448. unit = ``
  449. }
  450. return unit
  451. }
  452. func GetSource(sourceName, sourceCode string) (gnSourceName string, source int, err error) {
  453. gnSourceName = sourceName
  454. var tableNameSuffix, indexNamePrefix string
  455. tableNamePrefix := "edb_data_gn_"
  456. switch sourceName {
  457. case "CCTD":
  458. tableNameSuffix = "cctd"
  459. case "mysteel":
  460. tableNameSuffix = "mysteel"
  461. case "wind":
  462. tableNameSuffix = "wind"
  463. case "卓创":
  464. tableNameSuffix = "sci"
  465. case "CCI":
  466. tableNameSuffix = "cci"
  467. default:
  468. tableNameSuffix = strings.ToLower(sourceCode)
  469. }
  470. sourceItem := data_manage.GetEdbSourceBySourceName(gnSourceName)
  471. if sourceItem == nil {
  472. indexNamePrefix = strings.ToUpper(tableNameSuffix)
  473. sourceItem = &data_manage.EdbSource{
  474. EdbSourceId: 0,
  475. SourceName: gnSourceName,
  476. TableName: tableNamePrefix + tableNameSuffix,
  477. EdbAddMethod: "gn_index/add",
  478. EdbRefreshMethod: "gn_index/refresh",
  479. IsBase: 1,
  480. FromBridge: 1,
  481. BridgeFlag: "bridge_gn",
  482. SourceExtend: gnSourceName,
  483. EdbCodeRequired: 1,
  484. IndexTableName: "",
  485. SourceNameEn: gnSourceName,
  486. }
  487. err = data_manage.AddEdbSource(sourceItem, indexNamePrefix)
  488. if err != nil {
  489. return
  490. }
  491. }
  492. source = sourceItem.EdbSourceId
  493. return
  494. }
  495. func syncGnIndexV2(currIndex, pageSize int, baseLastUpdateTimeStr string, indexId string) (err error, errMsgList []string) {
  496. fmt.Println("开始第", currIndex, "页的更新")
  497. errMsgList = make([]string, 0)
  498. lastUpdateTimeStr := baseLastUpdateTimeStr
  499. if lastUpdateTimeStr != `` {
  500. lastUpdateTimeStr = url.QueryEscape(lastUpdateTimeStr)
  501. }
  502. params := BridgeGnIndexParams{
  503. LastModifyTime: lastUpdateTimeStr,
  504. PageIndex: currIndex,
  505. PageSize: pageSize,
  506. IndexId: indexId,
  507. }
  508. bResult, err, _ := HttpEtaBridgePost(utils.SyncIndexPath, params)
  509. if err != nil {
  510. return
  511. }
  512. var result EtaBridgeGnIndexListResp
  513. err = json.Unmarshal(bResult, &result)
  514. if err != nil {
  515. err = fmt.Errorf("result unmarshal err: %s\nresult: %s", err.Error(), string(bResult))
  516. utils.FileLog.Info("桥接服务get请求失败:\n" + string(bResult))
  517. return
  518. }
  519. for _, v := range result.Data.List {
  520. tmpErr := handleIndex(v)
  521. if tmpErr != nil {
  522. errMsgList = append(errMsgList, tmpErr.Error())
  523. }
  524. }
  525. fmt.Println(currIndex, "是否已结束:", result.Data.Page.IsEnd)
  526. return
  527. }
  528. func LoadGnTempIndexIds() (indexIds []int, err error) {
  529. filePath := "./static/gn_index_ids.json"
  530. b, e := ioutil.ReadFile(filePath)
  531. if e != nil {
  532. err = fmt.Errorf("读取配置失败, err: %v", e)
  533. return
  534. }
  535. if e = json.Unmarshal(b, &indexIds); e != nil {
  536. err = fmt.Errorf("解析配置失败, err: %v", e)
  537. return
  538. }
  539. return
  540. }
  541. var lockSyncUser sync.Mutex
  542. func SyncGnUser(cont context.Context) (err error) {
  543. lockSyncUser.Lock()
  544. defer func() {
  545. if err != nil {
  546. tips := "SyncUser-定时将第三方的用户数据同步到ETA失败, ErrMsg:\n" + err.Error()
  547. utils.FileLog.Info(tips)
  548. go alarm_msg.SendAlarmMsg(tips, 3)
  549. }
  550. lockSyncUser.Unlock()
  551. }()
  552. uri := "/gn/user/sync"
  553. fmt.Println("开始同步OA用户")
  554. _, err, _ = HttpEtaBridgeGet(uri)
  555. if err != nil {
  556. return
  557. }
  558. fmt.Println("结束同步OA用户")
  559. return
  560. }
  561. func InitRefreshEdb(cont context.Context) (err error) {
  562. fmt.Println("准备更新指标明细数据")
  563. lockSyncGnIndex.Lock()
  564. errMsgList := make([]string, 0)
  565. fmt.Println("开始更新指标明细数据")
  566. defer func() {
  567. fmt.Println("初始化指标明细数据结束")
  568. if err != nil {
  569. tips := "SyncGnIndex-初始化指标明细数据结束到ETA失败, ErrMsg:\n" + err.Error()
  570. utils.FileLog.Info(tips)
  571. }
  572. if len(errMsgList) > 0 {
  573. tips := "SyncGnIndex-初始化指标明细数据结束到ETA失败, ErrMsg:\n" + strings.Join(errMsgList, "\n")
  574. utils.FileLog.Info(tips)
  575. }
  576. lockSyncGnIndex.Unlock()
  577. }()
  578. initCurrEdbInfoMap()
  579. count := len(CurrEdbInfoMap)
  580. for _, v := range CurrEdbInfoMap {
  581. count--
  582. fmt.Println("剩余:", count, "条数据待初始化")
  583. fmt.Println(data.RefreshEdbData(v.EdbInfoId, v.Source, v.SubSource, v.EdbCode, utils.BaseEdbRefreshStartDate))
  584. }
  585. return
  586. }