init.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. package main
  2. import (
  3. "github.com/spf13/viper"
  4. "github.com/xuri/excelize/v2"
  5. "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
  6. "log"
  7. "strings"
  8. )
  9. var (
  10. yangMap = make(map[string]bool) //存储98家央企
  11. yangChildMap = make(map[string]bool) //存储央企 下属子公司
  12. codeZhu = make(map[string]string) //内外个私农合 标签
  13. codeZhu2 = make(map[string]string) //国企、外企、私企
  14. codeMap = make(map[string]string) //code-企业类型
  15. nameMap = make(map[string]string) //企业类型 -> code
  16. Mgo181 *mongodb.MongodbSim //
  17. MgoB *mongodb.MongodbSim //
  18. MgoP *mongodb.MongodbSim //
  19. GF GlobalConf
  20. )
  21. func InitConfig() (err error) {
  22. viper.SetConfigFile("config.toml") // 指定配置文件路径
  23. viper.SetConfigName("config") // 配置文件名称(无扩展名)
  24. viper.SetConfigType("toml") // 如果配置文件的名称中没有扩展名,则需要配置此项
  25. viper.AddConfigPath("./")
  26. viper.AddConfigPath("./conf/") // 还可以在工作目录中查找配置
  27. viper.AddConfigPath("../conf/") // 还可以在工作目录中查找配置
  28. err = viper.ReadInConfig() // 查找并读取配置文件
  29. if err != nil { // 处理读取配置文件的错误
  30. return
  31. }
  32. err = viper.Unmarshal(&GF)
  33. return err
  34. }
  35. func InitMgo() {
  36. //181 凭安库
  37. Mgo181 = &mongodb.MongodbSim{
  38. MongodbAddr: GF.Mongo181.Host,
  39. Size: 10,
  40. DbName: GF.Mongo181.DB,
  41. UserName: GF.Mongo181.Username,
  42. Password: GF.Mongo181.Password,
  43. Direct: GF.Mongo181.Direct,
  44. }
  45. Mgo181.InitPool()
  46. //MgoP = &mongodb.MongodbSim{
  47. // MongodbAddr: GF.MongoP.Host,
  48. // Size: 10,
  49. // DbName: GF.MongoP.DB,
  50. // UserName: GF.MongoP.Username,
  51. // Password: GF.MongoP.Password,
  52. // Direct: GF.MongoP.Direct,
  53. //}
  54. //
  55. //MgoP.InitPool()
  56. //MgoB = &mongodb.MongodbSim{
  57. // MongodbAddr: GF.MongoB.Host,
  58. // Size: 10,
  59. // DbName: GF.MongoB.DB,
  60. // UserName: GF.MongoB.Username,
  61. // Password: GF.MongoB.Password,
  62. // Direct: GF.MongoB.Direct,
  63. //}
  64. //
  65. //MgoB.InitPool()
  66. }
  67. // readXlsx 读取央企 央企下属
  68. func readXlsx() {
  69. filePath := "央企.xlsx"
  70. // 1. 读取 Excel(获取 A 列数据)
  71. f, err := excelize.OpenFile(filePath)
  72. if err != nil {
  73. log.Fatal("❌ 无法打开 Excel 文件:", err)
  74. }
  75. defer f.Close()
  76. //读取央企
  77. rows, err := f.GetRows("Sheet1")
  78. if err != nil {
  79. log.Fatal("❌ 无法读取 Sheet1:", err)
  80. }
  81. for i := 1; i < len(rows); i++ {
  82. name := rows[i][0]
  83. if name != "" {
  84. yangMap[name] = true
  85. }
  86. }
  87. log.Println("央企数量", len(yangMap))
  88. // 央企下属
  89. rows2, err := f.GetRows("Sheet4")
  90. if err != nil {
  91. log.Fatal("❌ 无法读取 Sheet2:", err)
  92. }
  93. for i := 1; i < len(rows2); i++ {
  94. row := rows2[i]
  95. if len(row) == 0 {
  96. continue
  97. }
  98. name := rows2[i][1]
  99. if name != "" {
  100. yangChildMap[name] = true
  101. }
  102. }
  103. log.Println("央企下属数量", len(yangChildMap))
  104. }
  105. //func readXlsx2() {
  106. // filePath := "企业经营主体代码表.xlsx"
  107. // // 1. 读取 Excel(获取 A 列数据)
  108. // f, err := excelize.OpenFile(filePath)
  109. // if err != nil {
  110. // log.Fatal("❌ 无法打开 Excel 文件:", err)
  111. // }
  112. // defer f.Close()
  113. //
  114. // //读取央企
  115. // rows, err := f.GetRows("市场主体类型代码")
  116. // if err != nil {
  117. // log.Fatal("❌ 无法读取 Sheet1:", err)
  118. // }
  119. // for i := 1; i < len(rows); i++ {
  120. // code := strings.TrimSpace(rows[i][2])
  121. // name := strings.TrimSpace(rows[i][3])
  122. // name = strings.ReplaceAll(name, "(", "(")
  123. // name = strings.ReplaceAll(name, ")", ")")
  124. // codeMap[name] = code
  125. // tab1 := strings.TrimSpace(rows[i][4])
  126. // tab2 := strings.TrimSpace(rows[i][6])
  127. // codeZhu[code] = tab1
  128. // codeZhu2[code] = tab2
  129. // }
  130. //
  131. // log.Println("readXlsx2", "企业经营主体代码表 处理完毕")
  132. //}
  133. // readXlsx2 读取整理的法人库 企业类型和对应代码
  134. func readXlsx2() {
  135. filePath := "法人类型代码表.xlsx"
  136. // 1. 读取 Excel(获取 A 列数据)
  137. f, err := excelize.OpenFile(filePath)
  138. if err != nil {
  139. log.Fatal("❌ 无法打开 Excel 文件:", err)
  140. }
  141. defer f.Close()
  142. //读取央企
  143. rows, err := f.GetRows("叶子节点")
  144. if err != nil {
  145. log.Fatal("❌ 无法读取 市场主体类型代码-叶子节点:", err)
  146. }
  147. for i := 1; i < len(rows); i++ {
  148. //if len(rows[i]) < 16 {
  149. // continue
  150. //}
  151. code := strings.TrimSpace(rows[i][2])
  152. name := strings.TrimSpace(rows[i][3])
  153. name = strings.ReplaceAll(name, "(", "(")
  154. name = strings.ReplaceAll(name, ")", ")")
  155. codeMap[name] = code
  156. nameMap[code] = name
  157. tab1 := strings.TrimSpace(rows[i][6])
  158. codeZhu[code] = tab1
  159. }
  160. log.Println("readXlsx2", "企业经营主体代码表 处理完毕")
  161. }