init.go 4.9 KB

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