package main import ( "mongodb" "qfw/util" "strconv" "strings" ) var ( Mgo *mongodb.MongodbSim EntMgo *mongodb.MongodbSim typeMap = map[string]string{ "有限责任公司(国有独资)": "国企", "有限责任公司(外商投资企业投资)": "外企", "有限责任公司(外商投资企业合资)": "外企", "有限责任公司(外商投资企业与内资合资)": "外企", "有限责任公司(外商投资企业法人独资)": "外企", "有限责任公司(自然人投资或控股)": "民企", "有限责任公司(国有控股)": "国企", "一人有限责任公司": "民企", "有限责任公司(自然人独资)": "民企", "有限责任公司(自然人投资或控股的法人独资)": "民企", "有限责任公司(非自然人投资或控股的法人独资)": "民企", "股份有限公司(上市、外商投资企业投资)": "外企", "股份有限公司(上市、自然人投资或控股)": "民企", "股份有限公司(上市、国有控股)": "国企", "其他股份有限公司(上市)": "民企", "股份有限公司(非上市、外商投资企业投资)": "外企", "股份有限公司(非上市、自然人投资或控股)": "民企", "股份有限公司(非上市、国有控股)": "国企", "有限责任公司分公司(国有独资)": "国企", "有限责任公司分公司(外商投资企业投资)": "外企", "有限责任公司分公司(外商投资企业合资)": "外企", "有限责任公司分公司(外商投资企业与内资合资)": "外企", "有限责任公司分公司(外商投资企业法人独资)": "外企", "有限责任公司分公司(自然人投资或控股)": "民企", "有限责任公司分公司(国有控股)": "国企", "一人有限责任公司分公司": "民企", "有限责任公司分公司(自然人独资)": "民企", "有限责任公司分公司(自然人投资或控股的法人独资)": "民企", "有限责任公司分公司(非自然人投资或控股的法人独资)": "民企", "股份有限公司分公司(上市、外商投资企业投资)": "外企", "股份有限公司分公司(上市、自然人投资或控股)": "民企", "股份有限公司分公司(上市、国有控股)": "国企", "其他股份有限公司分公司(上市)": "民企", "股份有限公司分公司(非上市、外商投资企业投资)": "外企", "股份有限公司分公司(非上市、自然人投资或控股)": "民企", "股份有限公司分公司(国有控股)": "国企", "内资企业法人": "民企", "全民所有制": "国企", "集体所有制": "集体", "股份制": "民企", "股份合作制": "民企", "事业单位营业": "事业单位", "国有事业单位营业": "事业单位", "集体事业单位营业": "事业单位", "社团法人营业": "社团", "国有社团法人营业": "社团", "集体社团法人营业": "社团", "全民所有制分支机构(非法人)": "国企", "集体分支机构(非法人)": "集体", "股份制分支机构": "民企", "股份合作制分支机构": "民企", "国有经营单位(非法人)": "国企", "集体经营单位(非法人)": "集体", "非公司私营企业": "民企", "合伙企业": "民企", "普通合伙企业": "民企", "特殊普通合伙企业": "民企", "有限合伙企业": "民企", "个人独资企业": "民企", "合伙企业分支机构": "民企", "普通合伙企业分支机构": "民企", "特殊普通合伙企业分支机构": "民企", "有限合伙企业分支机构": "民企", "个人独资企业分支机构": "民企", "股份制企业(非法人)": "民企", "外商投资企业": "外企", "有限责任公司(中外合资)": "外企", "有限责任公司(中外合作)": "外企", "有限责任公司(外商合资)": "外企", "有限责任公司(外国自然人独资)": "外企", "有限责任公司(外国法人独资)": "外企", "有限责任公司(外国非法人经济组织独资)": "外企", "股份有限公司(中外合资、未上市)": "外企", "股份有限公司(中外合资、上市)": "外企", "股份有限公司(外商合资、未上市)": "外企", "股份有限公司(外商合资、上市)": "外企", "非公司外商投资企业(中外合作)": "外企", "外商投资合伙企业": "外企", "外商投资企业分支机构": "外企", "非公司外商投资企业分支机构": "外企", "外商投资合伙企业分支机构": "外企", "港、澳、台投资企业": "港澳台企", "有限责任公司(港澳台与境内合资)": "港澳台企", "有限责任公司(港澳台与境内合作)": "港澳台企", "有限责任公司(港澳台合资)": "港澳台企", "有限责任公司(港澳台自然人独资)": "港澳台企", "有限责任公司(港澳台法人独资)": "港澳台企", "有限责任公司(港澳台非法人经济组织独资)": "港澳台企", "有限责任公司(港澳台与外国投资者合资)": "港澳台企", "股份有限公司(港澳台与境内合资、未上市)": "港澳台企", "股份有限公司(港澳台与境内合资、上市)": "港澳台企", "股份有限公司(港澳台合资、未上市)": "港澳台企", "股份有限公司(港澳台合资、上市)": "港澳台企", "股份有限公司(港澳台与外国投资者合资、未上市)": "港澳台企", "股份有限公司(港澳台与外国投资者合资、上市)": "港澳台企", "非公司港、澳、台企业(港澳台与境内合作)": "港澳台企", "非公司港、澳、台企业(港澳台合资)": "港澳台企", "港、澳、台投资合伙企业": "港澳台企", "港、澳、台投资企业分支机构": "港澳台企", "非公司港、澳、台投资企业分支机构": "港澳台企", "港、澳、台投资合伙企业分支机构": "港澳台企", "外国(地区)企业": "外企", "外国(地区)公司分支机构": "外企", "外国(地区)无限责任公司分支机构": "外企", "外国(地区)有限责任公司分支机构": "外企", "外国(地区)股份有限责任公司分支机构": "外企", "外国(地区)其他形式公司分支机构": "外企", "外国(地区)企业常驻代表机构": "外企", "外国(地区)企业在中国境内从事经营活动": "外企", "农民专业合作社": "农民合作社", "农民专业合作社分支机构": "农民合作社", "个体工商户": "个体工商户", "有限责任公司": "民企", "民办非企业单位": "民办非企业单位", "社会团体": "社团", "律师事务所": "律师事务所", "分公司": "民企", "事业单位": "事业单位", "有限责任公司(自然人独资)(1151)": "民企", "有限责任公司(自然人投资或控股)(1130)": "民企", "村级集体经济组织": "集体", "外商投资企业分公司": "外企", "有限责任公司(港澳台投资、非独资)": "港澳台企", "有限责任公司(外商投资、非独资)": "外企", "股份有限公司": "民企", "集体所有制(股份合作)": "集体", "有限责任公司(台港澳与境内合资)": "港澳台企", "有限责任公司(非自然人投资或控股的法人独": "民企", "有限责任公司(台港澳法人独资)": "港澳台企", "有限责任公司(非自然人投资或控股的法人独资)(1153)": "民企", "集体企业": "集体", "企业": "民企", "私营有限责任公司(自然人控股或私营性质企业控股)": "民企", "有限责任公司(台港澳合资)": "港澳台企", "有限责任公司(自然人投资或控股的法人独资)(1152)": "民企", "股份有限公司(外商投资、未上市)": "外企", "基金会": "其他", "内资企业集团": "民企", "普通合伙企业(4531)": "民企", "有限责任公司(法人独资,私营)": "民企", "有限责任公司(台港澳自然人独资)": "港澳台企", "有限责任公司(自然人独资)!": "民企", "(普通合伙分支机构)": "民企", "承包工程": "其他", "非公司企业法人(股份合作制)": "民企", "非公司企业法人(集体经济)": "集体", "非公司企业法人分支机构(集体经济)": "集体", "个人经营": "个体工商户", "股份有限公司(港澳台投资、上市)": "港澳台企", "股份有限公司(港澳台投资、未上市)": "港澳台企", "股份有限公司(台港澳与境内合资、上市)": "港澳台企", "股份有限公司(外商投资、未上市)分公司": "外企", "股份有限公司(中外合资、未上市)分公司": "外企", "股份有限公司分公司(非上市、国有控股)": "国企", "国有企业": "国企", "国有企业经营单位(非法人)": "国企", "合伙企业(普通合伙)": "民企", "合伙企业(有限合伙)": "民企", "集体所有制(股份合作)分支机构": "集体", "集体所有制(股份合作)-全资设立": "集体", "联营": "其他", "内资非法人企业、非公司私营企业": "民企", "内资非法人企业、非公司私营企业及内资非公司企业分支机构": "民企", "内资集团": "民企", "其他": "其他", "其他有限责任公司(1190)": "民企", "台、港、澳投资企业分公司": "港澳台企", "台、港、澳投资企业分支机构": "港澳台企", "台港澳分公司": "港澳台企", "未规范的有限责任公司": "民企", "一人有限责任公司(法人独资)": "民企", "一人有限责任公司(自然人独资)": "民企", "有限责任公司(台港澳与外国投资者合资)": "外企", "有限责任公司(中外合资)分公司": "外企", "有限责任公司(中外合资)分支机构": "外企", "有限责任公司分公司(法人独资)": "民企", "有限责任公司分公司(自然人投资或控股)!": "民企", "组级集体经济组织": "集体", "农民专业合作经济组织": "农民合作社", "农民专业合作社(9100)": "农民合作社", "股份有限公司(外商投资、上市)": "外企", } typeOtherMap = map[string][]string{ "内资公司": []string{"国企", "民企"}, "其他有限责任公司": []string{"国企", "民企"}, "股份有限公司(上市)": []string{"国企", "民企"}, "股份有限公司(非上市)": []string{"国企", "民企"}, "其他股份有限公司(非上市)": []string{"国企", "民企"}, "内资分公司": []string{"国企", "民企"}, "有限责任公司分公司": []string{"国企", "民企"}, "其他有限责任公司分公司": []string{"国企", "民企"}, "股份有限公司分公司": []string{"国企", "民企"}, "股份有限公司分公司(上市)": []string{"国企", "民企"}, "股份有限公司分公司(非上市)": []string{"国企", "民企"}, "其他股份有限公司分公司(非上市)": []string{"国企", "民企"}, "内资非法人企业、非公司私营企业及内资非公司企业分支机构": []string{"国企", "其他"}, "内资企业法人分支机构(非法人)": []string{"国企", "其他"}, "经营单位(非法人)": []string{"国企", "其他"}, "集团": []string{"国企", "民企"}, "有限责任公司(法人独资)": []string{"国企", "民企"}, "有限责任公司(法人独资)": []string{"国企", "民企"}, "有限责任公司分公司(法人独资)": []string{"国企", "民企"}, } keyOtherArr = []string{"中国", "国家", "中建", "中电科", "中航", "中铁", "中核", "中船", "中石油", "中石化", "东风汽车", "鞍钢", "中铝", "中粮", "中储粮", "五矿", "招商局", "华润", "中煤", "中盐", "矿冶科技", "中车", "中农发", "中林", "新兴际华", "中广核", "华侨城", "南光", "中远洋"} ) func init() { EntMgo = mongodb.NewMgoWithUser("172.17.4.140", "mixdata", "username", "passwors", 20) Mgo = mongodb.NewMgo("4.176", "sales_leads", 20) } func main() { session := Mgo.GetMgoConn() query := map[string]interface{}{"type_new": map[string]interface{}{"$exists": 0}} defer Mgo.DestoryMongoConn(session) count := 0 iter := session.DB("sales_leads").C("ent_winner_temp_20231214").Find(&query).Iter() thisData := map[string]interface{}{} for { if !iter.Next(&thisData) { break } count++ companyId := util.ObjToString(thisData["company_id"]) entData, ok := EntMgo.FindOne("qyxy_std", map[string]interface{}{"_id": mongodb.StringTOBsonId(companyId)}) if ok && entData != nil && len(*entData) > 0 { companyTypeOld := util.ObjToString((*entData)["company_type_old"]) companyType := util.ObjToString((*entData)["company_type"]) typeNew, companyName := "", util.ObjToString(thisData["name"]) if companyTypeOld != "" { companyTypeOld = strings.ReplaceAll(companyTypeOld, "(", "(") companyTypeOld = strings.ReplaceAll(companyTypeOld, ")", ")") if len(companyTypeOld) >= 6 && isDigits(companyTypeOld[len(companyTypeOld)-5:len(companyTypeOld)-1]) { companyTypeOld = companyTypeOld[:len(companyTypeOld)-6] } if typeMap[companyTypeOld] != "" { typeNew = typeMap[companyTypeOld] } else if typeOtherMap[companyTypeOld] != nil { for _, key := range keyOtherArr { isOk := false if strings.HasPrefix(companyName, key) { isOk = true } if isOk { typeNew = typeOtherMap[companyTypeOld][0] } else { typeNew = typeOtherMap[companyTypeOld][1] } } } else { // 港澳台顺序不一致,单独判断,如果同时包含港澳台的就是“港澳台企” // 若名称最后一个字为“店”,则标注为“个体工商户”;若名称结尾为“公司”,则标注为“民企”;其余标注为“其他” if strings.Contains(companyTypeOld, "港") && strings.Contains(companyTypeOld, "澳") && strings.Contains(companyTypeOld, "台") { typeNew = "港澳台企" } else if strings.HasSuffix(companyName, "店") { typeNew = "个体工商户" } else if strings.HasSuffix(companyName, "公司") || strings.HasSuffix(companyName, "集团") { typeNew = "民企" } else { typeNew = "其他" } Mgo.UpdateById("ent_winner_temp_20231214", thisData["_id"], map[string]interface{}{"$set": map[string]interface{}{ "company_type_old": companyTypeOld, "company_type": companyType, "type_new": typeNew, "company_status": companyTypeOld, }}) } } else { // (类型为空的,若名称最后一个字为“店”,则标注为“个体工商户”;若名称结尾为“公司”,则标注为“民企”;其余标注为“其他”。 if strings.HasSuffix(companyName, "店") { typeNew = "个体工商户" } else if strings.HasSuffix(companyName, "公司") || strings.HasSuffix(companyName, "集团") { typeNew = "民企" } else { typeNew = "其他" } Mgo.UpdateById("ent_winner_temp_20231214", thisData["_id"], map[string]interface{}{"$set": map[string]interface{}{ "type_new": typeNew, }}) } } thisData = map[string]interface{}{} } } // 判断字符串是否全部由数字组成 func isDigits(str string) bool { _, err := strconv.Atoi(str) return err == nil }