main.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. package main
  2. import (
  3. "fmt"
  4. "gorm.io/driver/mysql"
  5. "gorm.io/gorm"
  6. "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  7. "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
  8. "log"
  9. "time"
  10. )
  11. var (
  12. MgoC *mongodb.MongodbSim //企业库
  13. MgoQ *mongodb.MongodbSim
  14. )
  15. func main() {
  16. //线上
  17. //username := "datascbi"
  18. //password := "Da#Bi20221111SC"
  19. //host := "127.0.0.1:4001"
  20. //database := "global_common_data"
  21. //本地
  22. username := "root"
  23. password := "123"
  24. host := "127.0.0.1:3306"
  25. database := "jianyu"
  26. // 替换为你的 MySQL 数据库连接信息
  27. //dsn := "user:password@tcp(localhost:3306)/database?charset=utf8mb4&parseTime=True&loc=Local"
  28. dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", username, password, host, database)
  29. // 连接到数据库
  30. db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
  31. if err != nil {
  32. fmt.Println("Failed to connect to database:", err)
  33. return
  34. }
  35. fmt.Println("Connected to the database!")
  36. MgoC = &mongodb.MongodbSim{
  37. MongodbAddr: "127.0.0.1:27001",
  38. //MongodbAddr: "172.17.4.181:27001",
  39. DbName: "mixdata",
  40. Size: 10,
  41. UserName: "",
  42. Password: "",
  43. Direct: true,
  44. }
  45. MgoC.InitPool()
  46. // 查询省市区使用,qyxy_std
  47. MgoQ = &mongodb.MongodbSim{
  48. MongodbAddr: "127.0.0.1:27083",
  49. //MongodbAddr: "172.17.189.140:27080",
  50. DbName: "mixdata",
  51. UserName: "SJZY_RWbid_ES",
  52. Password: "SJZY@B4i4D5e6S",
  53. Size: 10,
  54. Direct: true,
  55. }
  56. MgoQ.InitPool()
  57. // 在这里可以执行数据库操作,例如创建表、查询数据等
  58. // 查询所有数据
  59. var fortuneInfoList []IAOF_FORTUNE_INFO
  60. result := db.Find(&fortuneInfoList)
  61. if result.Error != nil {
  62. panic("Failed to retrieve data")
  63. }
  64. for _, info := range fortuneInfoList {
  65. name := info.StandardChineseName
  66. company := getCompany(name)
  67. //企业库找到该企业
  68. if company != nil && len(company) > 0 {
  69. companyID := util.ObjToString(company["company_id"])
  70. log.Println("name: ", name)
  71. //获取对外投资 一级
  72. level1s := getLevels(companyID, 1, info)
  73. if len(level1s) > 0 {
  74. db.Create(&level1s)
  75. for _, v := range level1s {
  76. level2s := getLevels(v.CompanyInfoID, 2, info)
  77. if len(level2s) > 0 {
  78. db.Create(&level2s)
  79. for _, v2 := range level2s {
  80. level3s := getLevels(v2.CompanyInfoID, 3, info)
  81. if len(level3s) > 0 {
  82. db.Create(&level3s)
  83. for _, v3 := range level3s {
  84. level4s := getLevels(v3.CompanyInfoID, 4, info)
  85. if len(level4s) > 0 {
  86. db.Create(&level4s)
  87. for _, v4 := range level4s {
  88. level5s := getLevels(v4.CompanyInfoID, 5, info)
  89. if len(level5s) > 0 {
  90. db.Create(&level5s)
  91. }
  92. }
  93. }
  94. }
  95. }
  96. }
  97. }
  98. }
  99. }
  100. }
  101. }
  102. log.Println("over")
  103. }
  104. func getLevels(companyID string, level int, info IAOF_FORTUNE_INFO) (inserts []IAOF_INVEST_RELATION) {
  105. //获取对外投资
  106. invests := getInvests(companyID)
  107. for _, v := range invests {
  108. std := getStd(util.ObjToString(v["company_id"]))
  109. industry := getIndustry(util.ObjToString(v["company_id"]))
  110. enterValue, _ := time.Parse("2006-01-02 15:04:05", util.ObjToString(v["create_time"]))
  111. updateValue, _ := time.Parse("2006-01-02 15:04:05", util.ObjToString(v["update_time"]))
  112. establishData, _ := time.Parse("2006-01-02", util.ObjToString(std["establish_date"]))
  113. var IS_VALID string
  114. if util.IntAll(v["use_flag"]) < 9 && util.IntAll(v["is_history"]) == 0 {
  115. IS_VALID = "Y"
  116. } else {
  117. IS_VALID = "N"
  118. }
  119. //这里只要投资在海南的企业
  120. area := util.ObjToString(std["company_area"])
  121. if area != "海南" {
  122. continue
  123. }
  124. insert := IAOF_INVEST_RELATION{
  125. CompanyName: util.ObjToString(v["company_name"]),
  126. CompanyArea: util.ObjToString(std["company_area"]),
  127. CompanyFortune: info.CompanyName,
  128. CompanyEnglishFortune: info.CompanyEn,
  129. CompanyFortuneCountry: info.Country,
  130. CompanyTypeOld: util.ObjToString(std["company_type_old"]),
  131. CompanyType: util.ObjToString(std["company_type"]),
  132. InvestmentLevel: level,
  133. EntryTime: enterValue,
  134. UpdateTime: updateValue,
  135. IsValid: IS_VALID,
  136. CreditNo: util.ObjToString(std["credit_no"]),
  137. CompanyCode: util.ObjToString(std["company_code"]),
  138. CompanyStatus: util.ObjToString(std["company_status"]),
  139. CompanyInfoID: util.ObjToString(v["company_id"]),
  140. EstablishDate: establishData,
  141. Capital: util.IntAll(std["capital"]),
  142. IndustryName: util.ObjToString(industry["industry"]),
  143. }
  144. inserts = append(inserts, insert)
  145. }
  146. return
  147. }