package main import ( "github.com/spf13/viper" "github.com/xuri/excelize/v2" "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb" "log" "strings" ) var ( yangMap = make(map[string]bool) //存储98家央企 yangChildMap = make(map[string]bool) //存储央企 下属子公司 codeZhu = make(map[string]string) //内外个私农合 标签 codeZhu2 = make(map[string]string) //国企、外企、私企 codeMap = make(map[string]string) //code-企业类型 nameMap = make(map[string]string) //企业类型 -> code Mgo181 *mongodb.MongodbSim // MgoB *mongodb.MongodbSim // MgoP *mongodb.MongodbSim // GF GlobalConf ) func InitConfig() (err error) { viper.SetConfigFile("config.toml") // 指定配置文件路径 viper.SetConfigName("config") // 配置文件名称(无扩展名) viper.SetConfigType("toml") // 如果配置文件的名称中没有扩展名,则需要配置此项 viper.AddConfigPath("./") viper.AddConfigPath("./conf/") // 还可以在工作目录中查找配置 viper.AddConfigPath("../conf/") // 还可以在工作目录中查找配置 err = viper.ReadInConfig() // 查找并读取配置文件 if err != nil { // 处理读取配置文件的错误 return } err = viper.Unmarshal(&GF) return err } func InitMgo() { //181 凭安库 Mgo181 = &mongodb.MongodbSim{ MongodbAddr: GF.Mongo181.Host, Size: 10, DbName: GF.Mongo181.DB, UserName: GF.Mongo181.Username, Password: GF.Mongo181.Password, Direct: GF.Mongo181.Direct, } Mgo181.InitPool() //MgoP = &mongodb.MongodbSim{ // MongodbAddr: GF.MongoP.Host, // Size: 10, // DbName: GF.MongoP.DB, // UserName: GF.MongoP.Username, // Password: GF.MongoP.Password, // Direct: GF.MongoP.Direct, //} // //MgoP.InitPool() //MgoB = &mongodb.MongodbSim{ // MongodbAddr: GF.MongoB.Host, // Size: 10, // DbName: GF.MongoB.DB, // UserName: GF.MongoB.Username, // Password: GF.MongoB.Password, // Direct: GF.MongoB.Direct, //} // //MgoB.InitPool() } // readXlsx 读取央企 央企下属 func readXlsx() { filePath := "央企.xlsx" // 1. 读取 Excel(获取 A 列数据) f, err := excelize.OpenFile(filePath) if err != nil { log.Fatal("❌ 无法打开 Excel 文件:", err) } defer f.Close() //读取央企 rows, err := f.GetRows("Sheet1") if err != nil { log.Fatal("❌ 无法读取 Sheet1:", err) } for i := 1; i < len(rows); i++ { name := rows[i][0] if name != "" { yangMap[name] = true } } log.Println("央企数量", len(yangMap)) // 央企下属 rows2, err := f.GetRows("Sheet4") if err != nil { log.Fatal("❌ 无法读取 Sheet2:", err) } for i := 1; i < len(rows2); i++ { row := rows2[i] if len(row) == 0 { continue } name := rows2[i][1] if name != "" { yangChildMap[name] = true } } log.Println("央企下属数量", len(yangChildMap)) } //func readXlsx2() { // filePath := "企业经营主体代码表.xlsx" // // 1. 读取 Excel(获取 A 列数据) // f, err := excelize.OpenFile(filePath) // if err != nil { // log.Fatal("❌ 无法打开 Excel 文件:", err) // } // defer f.Close() // // //读取央企 // rows, err := f.GetRows("市场主体类型代码") // if err != nil { // log.Fatal("❌ 无法读取 Sheet1:", err) // } // for i := 1; i < len(rows); i++ { // code := strings.TrimSpace(rows[i][2]) // name := strings.TrimSpace(rows[i][3]) // name = strings.ReplaceAll(name, "(", "(") // name = strings.ReplaceAll(name, ")", ")") // codeMap[name] = code // tab1 := strings.TrimSpace(rows[i][4]) // tab2 := strings.TrimSpace(rows[i][6]) // codeZhu[code] = tab1 // codeZhu2[code] = tab2 // } // // log.Println("readXlsx2", "企业经营主体代码表 处理完毕") //} // readXlsx2 读取整理的法人库 企业类型和对应代码 func readXlsx2() { filePath := "法人类型代码表.xlsx" // 1. 读取 Excel(获取 A 列数据) f, err := excelize.OpenFile(filePath) if err != nil { log.Fatal("❌ 无法打开 Excel 文件:", err) } defer f.Close() //读取央企 rows, err := f.GetRows("叶子节点") if err != nil { log.Fatal("❌ 无法读取 市场主体类型代码-叶子节点:", err) } for i := 1; i < len(rows); i++ { //if len(rows[i]) < 16 { // continue //} code := strings.TrimSpace(rows[i][2]) name := strings.TrimSpace(rows[i][3]) name = strings.ReplaceAll(name, "(", "(") name = strings.ReplaceAll(name, ")", ")") codeMap[name] = code nameMap[code] = name tab1 := strings.TrimSpace(rows[i][6]) codeZhu[code] = tab1 } log.Println("readXlsx2", "企业经营主体代码表 处理完毕") }