init.go 4.5 KB

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