Ver código fonte

备份~医疗信息整合

zhengkun 3 anos atrás
pai
commit
6de71d750b

+ 73 - 13
filedproject_medical/data_preparation/src/class/initdata.go

@@ -12,17 +12,22 @@ var (
 	MysqlTool         *Mysql
 	Medical_Type      = map[string]string{}
 	Medical_Level     = map[string]string{}
-
-	isLocal      bool
-	YXBK_DATA    = map[string]map[string]interface{}{} //医学百科相关数据
-	select_field = map[string]interface{}{"area": 1, "city": 1, "district": 1, "name": 1, "website": 1}
+	Medical_BusType   = map[string]int{"公立": 1, "民营": 2, "其它": 3}
+	Medical_Departs   = map[string]map[string]string{}
+	AreaCode          = map[string]string{}
+	CityCode          = map[string]string{}
+	DistrictCode      = map[string]string{}
+	isLocal           bool
+	YXBK_DATA         = map[string]map[string]interface{}{} //医学百科相关数据
+	select_field      = map[string]interface{}{"area": 1, "city": 1, "district": 1, "name": 1, "website": 1}
 )
 
 func InitClass() {
 	isLocal = true //本地
 	initMgo()
+	//清洗医院需要以下配置
 	initMysql()
-	initVCode() //加载相关代码表
+	initVCode()
 	//initLocalData()
 }
 
@@ -58,7 +63,7 @@ func initMgo() {
 	} else {
 		Save_Mgo = &MongodbSim{
 			MongodbAddr: "172.17.4.87:27080",
-			DbName:      "py_theme",
+			DbName:      "py_spider",
 			Size:        10,
 			UserName:    "",
 			Password:    "",
@@ -88,20 +93,75 @@ func initMysql() {
 }
 
 func initVCode() {
-	//加载代码表~level
-	data_level := MysqlTool.Find("code_medical_institution_level", nil, "name", "", -1, -1)
+	//加载地域代码~
+	data_region := MysqlTool.Find("code_area", nil, "", "", -1, -1)
+	log.Debug(len(*data_region))
+	for _, v := range *data_region {
+		code := qu.ObjToString(v["code"])
+		area := qu.ObjToString(v["area"])
+		city := qu.ObjToString(v["city"])
+		district := qu.ObjToString(v["district"])
+		if district != "" {
+			key := area + "~" + city + "~" + district
+			DistrictCode[key] = code
+		} else {
+			if city != "" {
+				key := area + "~" + city
+				CityCode[key] = code
+			} else {
+				AreaCode[area] = code
+			}
+		}
+	}
+	log.Debug("地域加载完毕~", len(AreaCode), len(CityCode), len(DistrictCode))
+
+	//加载等级代码表~level
+	data_level := MysqlTool.Find("code_medical_institution_level", nil, "name,code", "", -1, -1)
 	for _, v := range *data_level {
 		name := qu.ObjToString(v["name"])
-		Medical_Level[name] = name
+		code := qu.ObjToString(v["code"])
+		Medical_Level[name] = code
 	}
 	log.Debug("医疗等级表~", len(Medical_Level))
-	//加载代码表~type
-	data_type := MysqlTool.Find("code_medical_institution_type", nil, "name", "", -1, -1)
+	//加载类型代码表~type
+	data_type := MysqlTool.Find("code_medical_institution_type", nil, "name,code", "", -1, -1)
 	for _, v := range *data_type {
 		name := qu.ObjToString(v["name"])
-		Medical_Type[name] = name
+		code := qu.ObjToString(v["code"])
+		Medical_Type[name] = code
 	}
 	log.Debug("医疗类型表~", len(Medical_Type))
+
+	//加载科室代码表~
+	data_departs := MysqlTool.Find("code_medical_institution_department", nil, "", "", -1, -1)
+	//先构建所有一级数据
+	for _, v := range *data_departs {
+		name := qu.ObjToString(v["name"])
+		code := qu.ObjToString(v["code"])
+		if qu.IntAll(v["level"]) == 1 {
+			Medical_Departs[name] = map[string]string{
+				"departs_code": code,
+			}
+		}
+	}
+	for _, v := range *data_departs {
+		code := qu.ObjToString(v["code"])
+		pcode := qu.ObjToString(v["pcode"])
+		name := qu.ObjToString(v["name"])
+		if qu.IntAll(v["level"]) == 2 {
+			match_name := ""
+			for k, v := range Medical_Departs {
+				if v["departs_code"] == pcode {
+					match_name = k
+					break
+				}
+			}
+			data := Medical_Departs[match_name]
+			data[name] = code
+			Medical_Departs[match_name] = data
+		}
+	}
+	log.Debug("医疗科室表~", len(Medical_Departs))
 }
 
 //准备医学百科数据~
@@ -109,7 +169,7 @@ func initLocalData() {
 	sess := Save_Mgo.GetMgoConn()
 	defer Save_Mgo.DestoryMongoConn(sess)
 	q := map[string]interface{}{}
-	it := sess.DB(Save_Mgo.DbName).C("data_info").Find(&q).Sort("_id").Select(select_field).Iter()
+	it := sess.DB(Save_Mgo.DbName).C("zktest_hospital_data_info").Find(&q).Sort("_id").Select(select_field).Iter()
 	for tmp := make(map[string]interface{}); it.Next(&tmp); {
 		name := qu.ObjToString(tmp["name"])
 		delete(tmp, "_id")

+ 20 - 21
filedproject_medical/data_preparation/src/company/company.go

@@ -12,17 +12,18 @@ var companylock sync.Mutex
 
 //开始执行企业产品信息
 func RunCompanyProductInfo() {
+	log.Debug("处理~企业~产品信息~")
 	dealWithCompanyProductInfo()
 }
 
-//处理企业基本信息
+//处理企业产品信息
 func dealWithCompanyProductInfo() {
 	//来源mgo~181
 	sess := class.Save_Mgo.GetMgoConn()
 	defer class.Save_Mgo.DestoryMongoConn(sess)
 	q := map[string]interface{}{}
 	it := sess.DB(class.Save_Mgo.DbName).C("zktest_mysql_company_info").Find(&q).Sort("_id").Iter()
-	pool := make(chan bool, 1)
+	pool := make(chan bool, 6)
 	wg := &sync.WaitGroup{}
 	total, isok1, isok2 := 0, 0, 0
 	for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
@@ -36,24 +37,23 @@ func dealWithCompanyProductInfo() {
 				<-pool
 				wg.Done()
 			}()
-			company_name := qu.ObjToString(tmp["company_name"])
 			business_type := qu.ObjToString(tmp["business_type"])
 			company_id := qu.ObjToString(tmp["company_id"])
-			sc_info_arr, jy_info_arr := treatCompanyTypeInfo(company_name, business_type, company_id)
+			sc_info_arr, jy_info_arr := treatCompanyTypeInfo(business_type, company_id)
 
 			companylock.Lock()
 			isok1 += len(sc_info_arr)
 			isok2 += len(jy_info_arr)
 			companylock.Unlock()
 			for _, info := range sc_info_arr {
-				info["comeintime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeTmeplate)
-				//插入sql
-
+				info["comeintime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeLayout)
+				//插入sql company_makeproduct
+				class.InsertMysqlData("company_makeproduct", info, company_id)
 			}
 			for _, info := range jy_info_arr {
-				info["comeintime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeTmeplate)
-				//插入sql
-
+				info["comeintime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeLayout)
+				//插入sql company_bussproduct
+				class.InsertMysqlData("company_bussproduct", info, company_id)
 			}
 
 		}(tmp)
@@ -64,19 +64,18 @@ func dealWithCompanyProductInfo() {
 	log.Debug("is over ", total, isok1, isok2)
 }
 
-//构建产品信息~
-func treatCompanyTypeInfo(company_name string, company_type string, company_id string) ([]map[string]interface{}, []map[string]interface{}) {
+//构建产品信息~  company_bussproduct  company_makeproduct
+func treatCompanyTypeInfo(company_type string, company_id string) ([]map[string]interface{}, []map[string]interface{}) {
 	sc_info := []map[string]interface{}{}
 	jy_info := []map[string]interface{}{}
 
 	//关联的有product.id 需要生成产品表
-	dataArr := *class.MysqlTool.Find("f_product", map[string]interface{}{
-		"company_name": company_name,
-	}, "id,product_name,approve_date,medical_equipment_code", "", -1, -1)
-	//dataArr, _ := class.Save_Mgo.Find("zktest_mysql_product_info", map[string]interface{}{
-	//	"company_name": company_name,
-	//}, nil, nil)
-
+	dataArr := *class.MysqlTool.Find("medical_equipment_productinfo", map[string]interface{}{
+		"company_id": company_id,
+	}, "product_id,product_name,approve_date,medical_equipment_code", "", -1, -1)
+	if len(dataArr) == 0 || dataArr == nil {
+		return sc_info, jy_info
+	}
 	//是否过滤~信息~根绝名称去重~选取一个有效的信息
 	keys := map[string]map[string]interface{}{}
 	new_dataArr := make([]map[string]interface{}, 0)
@@ -110,10 +109,10 @@ func treatCompanyTypeInfo(company_name string, company_type string, company_id s
 		}
 	}
 
-	for _, v := range dataArr {
+	for _, v := range new_dataArr {
 		dict := map[string]interface{}{}
 		dict["company_id"] = company_id
-		dict["product_id"] = qu.ObjToString(v["id"])
+		dict["product_id"] = qu.IntAll(v["product_id"])
 		dict["medical_equipment_code"] = qu.ObjToString(v["medical_equipment_code"])
 		if company_type == "1" { //生产
 			sc_info = append(sc_info, dict)

+ 6 - 2
filedproject_medical/data_preparation/src/hospital/hospital.go

@@ -1,10 +1,14 @@
 package hospital
 
-import "time"
+import (
+	log "github.com/donnie4w/go-logger/logger"
+	"time"
+)
 
 //开始执行医院数据
 func RunBuildHospitalInfo() {
 	//整合整体~医院信息
+	log.Debug("开始整合医院信息~~~")
 	dealWithHospitalBaseInfo("f_hospital_39jk", "hospital_39jk_ain_depart", "39健康")
 	dealWithHospitalBaseInfo("f_hospital_hdf", "hospital_hdf_ain_depart", "好大夫")
 	dealWithHospitalBaseInfo("f_hospital_yydq", "hospital_yydq_ain_depart", "医院大全")
@@ -25,4 +29,4 @@ func RunCleanHospitalInfo() {
 func RunMergeHospitalInfo() {
 	mergeRepeatHospital()
 	time.Sleep(10 * time.Second)
-}
+}

+ 19 - 11
filedproject_medical/data_preparation/src/hospital/hospital_clean.go

@@ -61,9 +61,12 @@ func cleanHospitalAlias(tmp map[string]interface{}, update *map[string]interface
 		new_arr := []string{}
 		arr := strings.Split(alias, ",")
 		for _, v := range arr {
-			b, new_v, _ := standardname(v)
+			b, new_v, his_name := standardname(v)
 			is_clean = b
 			if b {
+				if his_name != "" {
+					new_v = his_name
+				}
 				new_arr = append(new_arr, new_v)
 			} else {
 				new_arr = append(new_arr, v)
@@ -81,6 +84,15 @@ func cleanHospitalAlias(tmp map[string]interface{}, update *map[string]interface
 func cleanHospitalName(tmp map[string]interface{}, update *map[string]interface{}) {
 	name := qu.ObjToString(tmp["name"])
 	is_clean, new_name, his_name := standardname(name)
+
+	//补充website网址异常
+	//if class.YXBK_DATA[new_name] != nil {
+	//	website := qu.ObjToString(class.YXBK_DATA[new_name]["website"])
+	//	if website != "" && !strings.Contains(website, "www.yixue.com") {
+	//		(*update)["website"] = website
+	//	}
+	//}
+
 	//是否更新
 	if is_clean {
 		(*update)["name"] = new_name
@@ -156,15 +168,11 @@ func cleanHospitalLevelTypes(tmp map[string]interface{}, update *map[string]inte
 // level 医疗等级对比
 func relevanceLevel(med_level string) string {
 	new_level := "其它"
-	if class.Medical_Level[med_level] != "" {
-		new_level = med_level
-	} else { //特殊描述映射关系~
-		if med_lev_Reg1.MatchString(med_level) {
-			med_level = med_lev_Reg1.ReplaceAllString(med_level, "${1}级${2}等")
-		}
-		if med_lev_Reg2.MatchString(med_level) {
-			med_level = med_lev_Reg2.ReplaceAllString(med_level, "${1}${2}其它")
-		}
+	if med_lev_Reg1.MatchString(med_level) {
+		med_level = med_lev_Reg1.ReplaceAllString(med_level, "${1}级${2}等")
+	}
+	if med_lev_Reg2.MatchString(med_level) {
+		med_level = med_lev_Reg2.ReplaceAllString(med_level, "${1}${2}其它")
 	}
 	if class.Medical_Level[med_level] != "" {
 		new_level = med_level
@@ -235,7 +243,7 @@ func resetRepeatHospital() {
 		})
 		tmp = make(map[string]interface{})
 	}
-	log.Debug("重置~~完毕~~over~~", total, "~", isok)
+	log.Debug("重置~判重完毕~over~", total, "~", isok)
 
 }
 

+ 10 - 26
filedproject_medical/data_preparation/src/hospital/hospital_info.go

@@ -3,7 +3,6 @@ package hospital
 import (
 	"class"
 	log "github.com/donnie4w/go-logger/logger"
-	"github.com/uuid"
 	qu "qfw/util"
 	"strings"
 	"sync"
@@ -11,7 +10,8 @@ import (
 )
 
 var (
-	save_coll = "zktest_hospital_info"
+	save_coll  = "zktest_hospital_info"
+	merge_coll = "zktest_hospital_info_merge"
 )
 
 //处理医院基本信息~涉及多张表
@@ -20,7 +20,7 @@ func dealWithHospitalBaseInfo(hos_coll string, depart_coll string, sourceweb str
 	defer class.Save_Mgo.DestoryMongoConn(sess)
 	q := map[string]interface{}{}
 	it := sess.DB(class.Save_Mgo.DbName).C(hos_coll).Find(&q).Sort("_id").Iter()
-	pool := make(chan bool, 5)
+	pool := make(chan bool, 6)
 	wg := &sync.WaitGroup{}
 	total := 0
 	for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
@@ -44,7 +44,6 @@ func dealWithHospitalBaseInfo(hos_coll string, depart_coll string, sourceweb str
 				data_info["alias"] = qu.ObjToString(tmp["alias"])
 				//网站来源
 				data_info["sourceweb"] = sourceweb
-
 				class.Save_Mgo.Save(save_coll, data_info)
 			}
 		}(tmp)
@@ -57,10 +56,8 @@ func dealWithHospitalBaseInfo(hos_coll string, depart_coll string, sourceweb str
 //数据构建~医院基本信息
 func treatHospitalInfo(tmp map[string]interface{}) map[string]interface{} {
 	data := map[string]interface{}{}
-	//名称需要清洗~~~
 	hospitalname := qu.ObjToString(tmp["hospitalname"])
 	hospitalname = strings.ReplaceAll(hospitalname, " ", "")
-
 	//医院名称~
 	data["name"] = hospitalname
 	//医院简介
@@ -75,38 +72,25 @@ func treatHospitalInfo(tmp map[string]interface{}) map[string]interface{} {
 	data["visit_perday"] = qu.IntAll(tmp["visit_perday"])
 	//医生人数
 	data["doctorsnum"] = qu.IntAll(tmp["doctorsnum"])
-
 	//联系电话~
 	data["tel"] = qu.ObjToString(tmp["tel"])
 	//传真号码
 	data["fax_number"] = qu.ObjToString(tmp["fax_number"])
 
-	//医院网站~
-	data["website"] = qu.ObjToString(tmp["website"])
+	//医院网站
+	website := qu.ObjToString(tmp["website"])
+	data["website"] = website
 
+	//等级 类型 性质
 	data["level"] = qu.ObjToString(tmp["level"])
 	data["type"] = qu.ObjToString(tmp["type"])
 	data["business_type"] = qu.ObjToString(tmp["business_type"])
 
 	//省市区
-	area := qu.ObjToString(tmp["area"])
-	city := qu.ObjToString(tmp["city"])
-	district := qu.ObjToString(tmp["district"])
-	if city == "" { //补充~省份城市信息
-		supplementRegionally(&area, &city, &district, hospitalname, qu.ObjToString(tmp["address"]))
-	}
-	data["area"] = area
-	data["area"] = city
-	data["area"] = district
+	data["area"] = qu.ObjToString(tmp["area"])
+	data["city"] = qu.ObjToString(tmp["city"])
+	data["district"] = qu.ObjToString(tmp["district"])
 
-	company_id, mark_id := "", 1
-	company_id = inquirBaseInfoid(hospitalname)
-	if company_id == "" {
-		company_id = uuid.New().String()
-		mark_id = 0
-	}
-	data["company_id"] = company_id
-	data["mark_id"] = mark_id
 	return data
 }
 

+ 73 - 53
filedproject_medical/data_preparation/src/hospital/hospital_merge.go

@@ -6,6 +6,14 @@ import (
 	qu "qfw/util"
 )
 
+var field_info = []string{
+	"name", "introduce", "address", "equipment",
+	"beds", "visit_perday", "doctorsnum",
+	"tel", "fax_number", "website", "sourceweb",
+	"level", "type", "business_type",
+	"area", "city", "district",
+	"alias", "departs",
+}
 
 //最终合并判重后的医院数据
 func mergeRepeatHospital() {
@@ -29,75 +37,87 @@ func mergeRepeatHospital() {
 		for _, v := range dataArr {
 			new_arr = append(new_arr, v)
 		}
-		new_data := mergeHospitalInfo(new_arr)
-		class.Save_Mgo.Save(save_coll+"_new", new_data)
+		if len(new_arr) > 0 {
+			new_data := mergeHospitalInfo(new_arr)
+			class.Save_Mgo.Save(merge_coll, new_data)
+		} else {
+			log.Debug("重复组异常~", tmp["_id"])
+		}
 		tmp = make(map[string]interface{})
 	}
+
 	log.Debug("is over ", total, "~", isok)
 }
 
-//合并医院信息~
+//合并医院信息~采用标准信息~去除冗余字段
 func mergeHospitalInfo(dataArr []map[string]interface{}) map[string]interface{} {
-	data := map[string]interface{}{}
+	new_data := map[string]interface{}{}
+	//模板~信息
+	new_data = buildTemplateInfo(dataArr[0])
 	if len(dataArr) == 1 {
-		data = dataArr[0]
-		delete(data, "repeat")
-		delete(data, "repeat_id")
-		return data
-	} else if len(dataArr) > 1 {
-		//合并重复信息
-		temp := dataArr[0]
-		name := qu.ObjToString(temp["name"])
-		delete(temp, "repeat")
-		delete(temp, "repeat_id")
-		for k, v := range temp {
-			isMerge := false
-			if k == "alias" { //合并别名~
-				new_alias := mergeAliasData(dataArr, name)
-				data[k] = new_alias
-				continue
-			}
-			if k == "departs" { //合并科室~
-				new_departs := mergeDepartData(dataArr)
-				data[k] = new_departs
-				continue
-			}
-			if k == "area" || k == "city" || k == "district" {
-				data[k] = v
-				continue
-			}
-			//选取最优值
-			if new_v, ok := v.(string); ok {
-				if new_v == "" { //非空补充
-					for ks, vs := range dataArr {
-						if ks == 0 {
-							continue
-						}
-						if qu.ObjToString(vs[k]) != "" {
-							data[k] = vs[k]
-							isMerge = true
-							break
-						}
-					}
-				}
-			}
-			if new_v, ok := v.(int); ok {
+		return new_data
+	}
+
+	//多组信息合并~
+	name := qu.ObjToString(new_data["name"])
+	for _, k := range field_info {
+		if k == "area" || k == "city" || k == "district" {
+			continue
+		}
+		if k == "alias" { //合并别名~
+			new_data[k] = mergeAliasData(dataArr, name)
+			continue
+		}
+		if k == "departs" { //合并科室~
+			new_data[k] = mergeDepartData(dataArr)
+			continue
+		}
+		//选取最优值
+		v := new_data[k]
+		if new_v, ok := v.(string); ok {
+			if new_v == "" { //非空补充
 				for ks, vs := range dataArr {
 					if ks == 0 {
 						continue
 					}
-					if qu.IntAll(vs[k]) > new_v {
-						data[k] = vs[k]
-						isMerge = true
+					if qu.ObjToString(vs[k]) != "" {
+						new_data[k] = vs[k]
+						break
 					}
 				}
 			}
-			if !isMerge {
-				data[k] = v
+		}
+		if k == "beds" || k == "visit_perday" || k == "doctorsnum" {
+			for ks, vs := range dataArr {
+				if ks == 0 {
+					continue
+				}
+				if qu.IntAll(vs[k]) > qu.IntAll(v) {
+					new_data[k] = vs[k]
+				}
 			}
 		}
-	} else {
+	}
+
+	return new_data
+}
 
+//构建模板信息
+func buildTemplateInfo(tmp map[string]interface{}) map[string]interface{} {
+	new_data := map[string]interface{}{}
+	arr := []map[string]interface{}{}
+	arr = append(arr, tmp)
+	name := qu.ObjToString(tmp["name"])
+	for _, k := range field_info {
+		if k == "alias" { //合并别名~
+			new_data[k] = mergeAliasData(arr, name)
+			continue
+		}
+		if k == "departs" { //合并科室~
+			new_data[k] = mergeDepartData(arr)
+			continue
+		}
+		new_data[k] = tmp[k]
 	}
-	return data
+	return new_data
 }

+ 69 - 0
filedproject_medical/data_preparation/src/hospital/hospital_repair.go

@@ -0,0 +1,69 @@
+package hospital
+
+import (
+	"class"
+	log "github.com/donnie4w/go-logger/logger"
+	"github.com/uuid"
+	qu "qfw/util"
+	"strings"
+	"sync"
+)
+
+//修复 ~ 基本信息 ~ 企业id ~地域等
+func RunRepairHospitalBaseInfo() {
+	sess := class.Save_Mgo.GetMgoConn()
+	defer class.Save_Mgo.DestoryMongoConn(sess)
+	q := map[string]interface{}{}
+	it := sess.DB(class.Save_Mgo.DbName).C(merge_coll).Find(&q).Sort("_id").Iter()
+	pool := make(chan bool, 5)
+	wg := &sync.WaitGroup{}
+	total := 0
+	for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
+		if total%1000 == 0 {
+			log.Debug("cur index ", total)
+		}
+		pool <- true
+		wg.Add(1)
+		go func(tmp map[string]interface{}) {
+			defer func() {
+				<-pool
+				wg.Done()
+			}()
+			tmpid := class.BsonTOStringId(tmp["_id"])
+			name := qu.ObjToString(tmp["name"])
+			area := qu.ObjToString(tmp["area"])
+			city := qu.ObjToString(tmp["city"])
+			district := qu.ObjToString(tmp["district"])
+			address := qu.ObjToString(tmp["address"])
+			update := map[string]interface{}{}
+			if city == "" {
+				dataLock.Lock()
+				supplementRegionally(&area, &city, &district, name, address)
+				dataLock.Unlock()
+			}
+			company_id, mark_id := "", 1
+			company_id = inquirBaseInfoid(name)
+			if company_id == "" {
+				company_id = uuid.New().String()
+				company_id = strings.ReplaceAll(company_id, "-", "")
+				mark_id = 0
+			}
+			update["area"] = area
+			update["city"] = city
+			update["district"] = district
+			update["company_id"] = company_id
+			update["mark_id"] = mark_id
+			update["pcompany_id"] = ""
+
+			class.Save_Mgo.UpdateById(merge_coll, tmpid, map[string]interface{}{
+				"$set": update,
+			})
+
+		}(tmp)
+		tmp = make(map[string]interface{})
+	}
+	wg.Wait()
+
+	log.Debug("补充信息信息~~over~~ ", total)
+
+}

+ 151 - 106
filedproject_medical/data_preparation/src/hospital/hospital_sql.go

@@ -12,20 +12,25 @@ import (
 
 var hossqllock sync.Mutex
 
-//医院基本信息
-func exportHospitalInfoToMysql() {
+//医院基本信息~相关~生成sql数据
+func ExportHospitalInfoToMysql() {
 	log.Debug("生成sql数据~医院信息~")
 	sess := class.Save_Mgo.GetMgoConn()
 	defer class.Save_Mgo.DestoryMongoConn(sess)
 	q := map[string]interface{}{}
-	it := sess.DB(class.Save_Mgo.DbName).C("zktest_hospital_info_new").Find(&q).Sort("_id").Iter()
+	it := sess.DB(class.Save_Mgo.DbName).C(merge_coll).Find(&q).Sort("_id").Iter()
 	pool := make(chan bool, 1)
 	wg := &sync.WaitGroup{}
 	total, isok := 0, 0
 	for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
-		if total%10000 == 0 {
-			log.Debug("cur index ", total)
+		if total%1000 == 0 {
+			log.Debug("cur index ", total, "~", isok)
 		}
+		if qu.IntAll(tmp["mark_id"]) == 0 {
+			tmp = make(map[string]interface{})
+			continue
+		}
+		isok++
 		pool <- true
 		wg.Add(1)
 		go func(tmp map[string]interface{}) {
@@ -33,123 +38,163 @@ func exportHospitalInfoToMysql() {
 				<-pool
 				wg.Done()
 			}()
-
-			data := tmp
-			//线上版~可以直接查询表
-
-			//等级~性质~代码
-			//n_level, n_type, n_bus_type := clenaHospitalLevelType(qu.ObjToString(tmp["level"]), qu.ObjToString(tmp["type"]), qu.ObjToString(tmp["business_type"]))
-			//data["level_code"] = n_level
-			//data["mi_type_code"] = n_type
-			//data["mi_business_type"] = qu.IntAll(n_bus_type)
-
-			//行政区划代码~匹配
-			region_code := regionallyCode(qu.ObjToString(tmp["area"]), qu.ObjToString(tmp["city"]), qu.ObjToString(tmp["district"]))
-			data["areacode"] = region_code
-
-			//时间相关
-			data["comeintime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeTmeplate)
-			data["updatetime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeTmeplate)
+			//医院基本信息~类型标签
+			new_level := createBaseInfo(tmp)
+			//别名信息
+			createAliasInfo(tmp)
+			//科室信息~科室标签
+			createDepartsInfo(tmp, new_level)
 
 		}(tmp)
 		tmp = make(map[string]interface{})
 	}
 	wg.Wait()
+
 	log.Debug("is cur over ", total, "~", isok)
 
 }
 
-//医院别名信息
-func exportHospitalAliasToMysql() {
-	log.Debug("生成sql数据~医院信息~")
-	sess := class.Save_Mgo.GetMgoConn()
-	defer class.Save_Mgo.DestoryMongoConn(sess)
-	q := map[string]interface{}{}
-	it := sess.DB(class.Save_Mgo.DbName).C("zktest_hospital_info_new").Find(&q).Sort("_id").Iter()
-	pool := make(chan bool, 1)
-	wg := &sync.WaitGroup{}
-	total, isok := 0, 0
-	for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
-		if total%10000 == 0 {
-			log.Debug("cur index ", total)
-		}
-		pool <- true
-		wg.Add(1)
-		go func(tmp map[string]interface{}) {
-			defer func() {
-				<-pool
-				wg.Done()
-			}()
+//基础信息
+func createBaseInfo(tmp map[string]interface{}) string {
+	data_info := map[string]interface{}{}
+	name := qu.ObjToString(tmp["name"])
+	data_info["company_id"] = qu.ObjToString(tmp["company_id"])
+	data_info["mi_name"] = name
+	data_info["introduce"] = qu.ObjToString(tmp["introduce"])
+	//代码标准化
+	new_level, new_type, new_bustype := codificationOfInfo(qu.ObjToString(tmp["level"]), qu.ObjToString(tmp["type"]), qu.ObjToString(tmp["business_type"]))
+	data_info["level_code"] = new_level
+	data_info["mi_type_code"] = new_type
+	data_info["business_type"] = new_bustype
+	data_info["address"] = qu.ObjToString(tmp["address"])
+	data_info["equipment"] = qu.ObjToString(tmp["equipment"])
+	beds := qu.IntAll(tmp["beds"])
+	visit_perday := qu.IntAll(tmp["visit_perday"])
+	doctorsnum := qu.IntAll(tmp["doctorsnum"])
+	if beds > 0 {
+		data_info["beds"] = beds
+	}
+	if visit_perday > 0 {
+		data_info["visit_perday"] = visit_perday
+	}
+	if doctorsnum > 0 {
+		data_info["doctorsnum"] = doctorsnum
+	}
+	data_info["tel"] = qu.ObjToString(tmp["tel"])
+	data_info["fax_number"] = qu.ObjToString(tmp["fax_number"])
+	data_info["website"] = qu.ObjToString(tmp["website"])
+	//地域代码
+	area_code := regionallyCode(qu.ObjToString(tmp["area"]), qu.ObjToString(tmp["city"]), qu.ObjToString(tmp["district"]))
+	data_info["area_code"] = area_code
+	data_info["sourceweb"] = qu.ObjToString(tmp["sourceweb"])
+	data_info["pcompany_id"] = qu.ObjToString(tmp["pcompany_id"])
+	data_info["mark_id"] = qu.IntAll(tmp["mark_id"])
+	data_info["comeintime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeLayout)
+	data_info["updatetime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeLayout)
+	//插入sql  medical_institution_info
+	class.InsertMysqlData("medical_institution_info", data_info, name)
+
+	//类型标签
+	data_tag := map[string]interface{}{}
+	data_tag["company_id"] = qu.ObjToString(tmp["company_id"])
+	data_tag["labelcode"] = new_type
+	data_tag["comeintime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeLayout)
+	//插入sql  medical_institution_typetags
+	class.InsertMysqlData("medical_institution_typetags", data_tag, name)
+
+	return new_level
+}
 
-			data := map[string]interface{}{}
-			name := qu.ObjToString(tmp["name"])
-			alias := qu.ObjToString(tmp["alias"])
-			aliasArr := strings.Split(alias, ",")
-			//查询关联id~
-			for _, v := range aliasArr {
-				if v == "" || v == name {
-					continue
-				}
-				data["company_id"] = qu.ObjToString(tmp["_id"])
-				data["alias"] = v
-				data["sourcetype"] = "2"
-				data["company_id"] = qu.ObjToString(tmp["_id"])
-				data["comeintime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeTmeplate)
-			}
+//别名信息
+func createAliasInfo(tmp map[string]interface{}) {
+	name := qu.ObjToString(tmp["name"])
+	alias := qu.ObjToString(tmp["alias"])
+	aliasArr := strings.Split(alias, ",")
+	data := map[string]interface{}{}
+	for _, v := range aliasArr {
+		if v == "" || v == name {
+			continue
+		}
+		data["company_id"] = qu.ObjToString(tmp["company_id"])
+		data["alias"] = v
+		data["alias_type"] = 2
+		data["source_type"] = 2
+		data["comeintime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeLayout)
+		//插入~sql medical_institution_alias
+		class.InsertMysqlData("medical_institution_alias", data, name)
 
-		}(tmp)
-		tmp = make(map[string]interface{})
 	}
-	wg.Wait()
-	log.Debug("is cur over ", total, "~", isok)
-
 }
 
-//医院科室信息
-func exportHospitalDepartsToMysql() {
-	log.Debug("生成sql数据~医院信息~")
-	sess := class.Save_Mgo.GetMgoConn()
-	defer class.Save_Mgo.DestoryMongoConn(sess)
-	q := map[string]interface{}{}
-	it := sess.DB(class.Save_Mgo.DbName).C("zktest_hospital_info_new").Find(&q).Sort("_id").Iter()
-	pool := make(chan bool, 1)
-	wg := &sync.WaitGroup{}
-	total, isok := 0, 0
-	for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
-		if total%10000 == 0 {
-			log.Debug("cur index ", total)
+//科室信息
+func createDepartsInfo(tmp map[string]interface{}, level string) {
+	name := qu.ObjToString(tmp["name"])
+	departsArr := []map[string]interface{}{}
+	if arr, ok := tmp["departs"].([]interface{}); ok {
+		departsArr = qu.ObjArrToMapArr(arr)
+	}
+	if arr, ok := tmp["departs"].(primitive.A); ok {
+		departsArr = qu.ObjArrToMapArr(arr)
+	}
+	for _, v := range departsArr {
+		depart_code := qu.ObjToString(v["depart_code"])
+		if depart_code == "" {
+			continue
 		}
-		pool <- true
-		wg.Add(1)
-		go func(tmp map[string]interface{}) {
-			defer func() {
-				<-pool
-				wg.Done()
-			}()
-			departsArr := []map[string]interface{}{}
-			if arr, ok := tmp["departs"].([]interface{}); ok {
-				departsArr = qu.ObjArrToMapArr(arr)
-			}
-			if arr, ok := tmp["departs"].(primitive.A); ok {
-				departsArr = qu.ObjArrToMapArr(arr)
-			}
-
-			for _, v := range departsArr {
-				data := map[string]interface{}{}
-				data["company_id"] = qu.ObjToString(tmp["company_id"])
-				data["departname_class1"] = qu.ObjToString(v["departclass1"])
-				data["departname_class2"] = qu.ObjToString(v["departclass2"])
-				data["introduce"] = qu.ObjToString(v["depart_introduce"])
-				data["comeintime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeTmeplate)
-				data["updatetime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeTmeplate)
-				departname_code := confirmDepartCode
-				data["departname_code"] = departname_code
-			}
+		data := map[string]interface{}{}
+		data["company_id"] = qu.ObjToString(tmp["company_id"])
+
+		data["departname_code"] = depart_code
+		//equipment_code 设备代码~需要构建
+		equipment_code := level + depart_code
+		data["equipment_code"] = equipment_code
+
+		data["departname_class1"] = qu.ObjToString(v["departclass1"])
+		data["departname_class2"] = qu.ObjToString(v["departclass2"])
+		data["introduce"] = qu.ObjToString(v["depart_introduce"])
+		data["comeintime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeLayout)
+		data["updatetime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeLayout)
+		//插入~sql  medical_institution_department
+		class.InsertMysqlData("medical_institution_department", data, name)
+
+		data_tag := map[string]interface{}{}
+		data_tag["company_id"] = qu.ObjToString(tmp["company_id"])
+		data_tag["labelcode"] = depart_code
+		data_tag["comeintime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeLayout)
+		//插入~sql  medical_institution_departtags
+		class.InsertMysqlData("medical_institution_departtags", data_tag, name)
 
-		}(tmp)
-		tmp = make(map[string]interface{})
 	}
-	wg.Wait()
-	log.Debug("is cur over ", total, "~", isok)
+}
 
+//等级,类型,性质代码化
+func codificationOfInfo(med_level string, med_type string, med_bustype string) (string, string, int) {
+	new_level := class.Medical_Level[med_level]
+	new_type := class.Medical_Type[med_type]
+	new_bustype := class.Medical_BusType[med_bustype]
+	return new_level, new_type, new_bustype
+}
+
+//区域代码
+func regionallyCode(area string, city string, district string) string {
+	region_code := "000000"
+	if area == "全国" || area == "" {
+		return region_code
+	}
+	if class.AreaCode[area] != "" {
+		region_code = class.AreaCode[area]
+	}
+	if city != "" {
+		key := area + "~" + city
+		if class.CityCode[key] != "" {
+			region_code = class.CityCode[key]
+		}
+	}
+	if district != "" {
+		key := area + "~" + city + "~" + district
+		if class.DistrictCode[key] != "" {
+			region_code = class.DistrictCode[key]
+		}
+	}
+	return region_code
 }

+ 69 - 34
filedproject_medical/data_preparation/src/hospital/hospital_method.go → filedproject_medical/data_preparation/src/hospital/hospital_ways.go

@@ -9,14 +9,17 @@ import (
 	qu "qfw/util"
 	"regexp"
 	"strings"
+	"sync"
 )
 
 var med_lev_Reg1 = regexp.MustCompile("^([一二三])([甲乙丙特])$")
 var med_lev_Reg2 = regexp.MustCompile("^([一二三])(级)(医院)?$")
+var dataLock sync.Mutex
+var addressReg = regexp.MustCompile("(.*市).*")
 
 //查询企业id
-func inquirBaseInfoid(name string) (company_id string) {
-	company_id = ""
+func inquirBaseInfoid(name string) string {
+	company_id := ""
 	query := map[string]interface{}{
 		"company_name": name,
 	}
@@ -29,7 +32,7 @@ func inquirBaseInfoid(name string) (company_id string) {
 			company_id = qu.ObjToString(data_spec["company_id"])
 		}
 	}
-	return
+	return company_id
 }
 
 //补充~地域区划
@@ -64,35 +67,47 @@ func supplementRegionally(area *string, city *string, district *string, name str
 		return
 	}
 
+	//地址截取至~XXX市
+	address = addressReg.ReplaceAllString(address, "${1}")
 	//地址字段抽取~请求接口
-	resp, err := http.Get("http://extcity.spdata.jianyu360.com/getcity?detail=" + address)
-	if err == nil {
-		defer resp.Body.Close()
-		bs, _ := ioutil.ReadAll(resp.Body)
-		var rep map[string]interface{}
-		json.Unmarshal(bs, &rep)
-
-		rep_area := qu.ObjToString(rep["area"])
-		rep_city := qu.ObjToString(rep["city"])
-		rep_district := qu.ObjToString(rep["district"])
-
-		if rep_district != "" {
+	rep_area, rep_city, rep_district := getHttpRegion(name)
+	if rep_area == "" || rep_area == "全国" {
+		rep_area, rep_city, rep_district = getHttpRegion(address)
+	}
+	if rep_district != "" {
+		*area = rep_area
+		*city = rep_city
+		*district = rep_district
+	} else {
+		if rep_city != "" {
 			*area = rep_area
 			*city = rep_city
-			*district = rep_district
 		} else {
-			if rep_city != "" {
+			if rep_area != "" && rep_area != "全国" {
 				*area = rep_area
-				*city = rep_city
-			} else {
-				if rep_area != "" && rep_area != "全国" {
-					*area = rep_area
-				}
 			}
 		}
 	}
 }
 
+//接口~获取地域信息
+func getHttpRegion(detail string) (string, string, string) {
+	resp, err := http.Get("http://extcity.spdata.jianyu360.com/getcity?detail=" + detail)
+	area := "全国"
+	city := ""
+	district := ""
+	if err == nil {
+		defer resp.Body.Close()
+		bs, _ := ioutil.ReadAll(resp.Body)
+		var rep map[string]interface{}
+		json.Unmarshal(bs, &rep)
+		area = qu.ObjToString(rep["area"])
+		city = qu.ObjToString(rep["city"])
+		district = qu.ObjToString(rep["district"])
+	}
+	return area, city, district
+}
+
 //是否相同地域
 func repeatRegion(region map[string]string, data map[string]string) bool {
 	if region["district"] != "" && data["district"] != "" &&
@@ -144,9 +159,14 @@ func mergeDepartData(dataArr []map[string]interface{}) []map[string]interface{}
 		if arr, ok := v["departs"].([]interface{}); ok {
 			depart_arr := qu.ObjArrToMapArr(arr)
 			for _, vs := range depart_arr {
-				key := qu.ObjToString(vs["departclass1"]) + "~" + qu.ObjToString(vs["departclass2"])
+				departclass1 := qu.ObjToString(vs["departclass1"])
+				departclass2 := qu.ObjToString(vs["departclass2"])
+				key := departclass1 + "~" + departclass2
 				if keys[key] == "" {
 					keys[key] = key
+					d_name, d_code := confirmDepartNameCode(departclass1, departclass2)
+					vs["depart_name"] = d_name
+					vs["depart_code"] = d_code
 					new_departs = append(new_departs, vs)
 				}
 			}
@@ -154,9 +174,14 @@ func mergeDepartData(dataArr []map[string]interface{}) []map[string]interface{}
 		if arr, ok := v["departs"].(primitive.A); ok {
 			depart_arr := qu.ObjArrToMapArr(arr)
 			for _, vs := range depart_arr {
+				departclass1 := qu.ObjToString(vs["departclass1"])
+				departclass2 := qu.ObjToString(vs["departclass2"])
 				key := qu.ObjToString(vs["departclass1"]) + "~" + qu.ObjToString(vs["departclass2"])
 				if keys[key] == "" {
 					keys[key] = key
+					d_name, d_code := confirmDepartNameCode(departclass1, departclass2)
+					vs["depart_name"] = d_name
+					vs["depart_code"] = d_code
 					new_departs = append(new_departs, vs)
 				}
 			}
@@ -166,16 +191,26 @@ func mergeDepartData(dataArr []map[string]interface{}) []map[string]interface{}
 }
 
 //规则计算科室对应代码等等
-func confirmDepartCode(class1 string, class2 string) string {
-	new_code := ""
+func confirmDepartNameCode(class1 string, class2 string) (string, string) {
+	new_name := ""
+	new_code := "" //默认其它~
 	//一系列对比~
-
-	return new_code
-}
-
-//区域代码
-func regionallyCode(area string, city string, district string) string {
-	region_code := "00"
-
-	return region_code
+	departs := class.Medical_Departs[class1]
+	if departs != nil { //一级科室能匹配上
+		new_name = class1
+		new_code = departs["departs_code"]
+		if departs[class2] != "" { //二级科室能匹配上
+			new_name = class1 + "~" + class2
+			new_code = departs[class2]
+		} else {
+			if departs["其它"] != "" {
+				new_name = new_name + "~" + "其它"
+				new_code = departs["其它"]
+			}
+		}
+	} else {
+		new_name = "其它"
+		new_code = class.Medical_Departs[new_name]["departs_code"]
+	}
+	return new_name, new_code
 }

+ 18 - 5
filedproject_medical/data_preparation/src/main.go

@@ -4,7 +4,6 @@ import (
 	"class"
 	"flag"
 	log "github.com/donnie4w/go-logger/logger"
-	"hospital"
 	"net/http"
 	"time"
 )
@@ -13,10 +12,24 @@ func init() {
 	class.InitClass()
 }
 func main() {
-	log.Debug("医疗信息相关~~准备~~")
-	hospital.RunBuildHospitalInfo()
-	hospital.RunCleanHospitalInfo()
-	hospital.RunMergeHospitalInfo()
+	//医院基本信息整合~修复
+	//hospital.RunBuildHospitalInfo()
+	//hospital.RunCleanHospitalInfo()
+	//hospital.RunMergeHospitalInfo()
+	//hospital.RunRepairHospitalBaseInfo()
+
+	//产品基本信息
+	//product.RunMedicalProductInfo()
+
+	//企业产品~信息
+	//company.RunCompanyProductInfo()
+
+	//代码表构建
+	//vcode.RunVCodeClassLevelData()
+
+	//导入信息~医疗六张表
+	//hospital.ExportHospitalInfoToMysql()
+
 	time.Sleep(999 * time.Hour)
 }
 

+ 29 - 10
filedproject_medical/data_preparation/src/product/product.go

@@ -13,10 +13,11 @@ var productlock sync.Mutex
 
 //开始处理医疗产品信息
 func RunMedicalProductInfo() {
+	log.Debug("开始构建~产品信息~")
 	dealWithMedicalProductInfo()
 }
 
-//处理产品信息~
+//处理产品信息~ medical_equipment_productinfo
 func dealWithMedicalProductInfo() {
 	sess := class.Save_Mgo.GetMgoConn()
 	defer class.Save_Mgo.DestoryMongoConn(sess)
@@ -24,10 +25,10 @@ func dealWithMedicalProductInfo() {
 	it := sess.DB(class.Save_Mgo.DbName).C("zktest_mysql_product_info").Find(&q).Sort("_id").Iter()
 	pool := make(chan bool, 5)
 	wg := &sync.WaitGroup{}
-	total, isok := 0, 0
+	total := 0
 	for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
-		if total%10000 == 0 {
-			log.Debug("cur index ", total, isok)
+		if total%1000 == 0 {
+			log.Debug("cur index ", total)
 		}
 		pool <- true
 		wg.Add(1)
@@ -37,15 +38,16 @@ func dealWithMedicalProductInfo() {
 				wg.Done()
 			}()
 
-			treatProductInfo(tmp)
+			dict := treatProductInfo(tmp)
+			tmpid := class.BsonTOStringId(tmp["_id"])
 			//插入sql
-
+			class.InsertMysqlData("medical_equipment_productinfo", dict, tmpid)
 		}(tmp)
 		tmp = make(map[string]interface{})
 	}
 	wg.Wait()
 
-	log.Debug("is over ", total, isok)
+	log.Debug("is over ", total)
 
 }
 
@@ -53,6 +55,7 @@ func dealWithMedicalProductInfo() {
 func treatProductInfo(tmp map[string]interface{}) map[string]interface{} {
 	data := map[string]interface{}{}
 	data["regno"] = qu.ObjToString(tmp["regno"])
+	data["company_id"] = qu.ObjToString(tmp["company_id"])
 	data["company_address"] = qu.ObjToString(tmp["company_address"])
 	data["make_adress"] = qu.ObjToString(tmp["make_adress"])
 	//国产进口
@@ -78,7 +81,8 @@ func treatProductInfo(tmp map[string]interface{}) map[string]interface{} {
 	}
 
 	data["changes"] = qu.ObjToString(tmp["changes"])
-	data["regist_type"] = qu.ObjToString(tmp["regist_type"])
+	data["regist_type"] = qu.IntAll(tmp["regist_type"])
+
 	data["source_channel"] = qu.ObjToString(tmp["source_channel"])
 	data["manage_type"] = qu.ObjToString(tmp["manage_type"])
 	data["product_name"] = qu.ObjToString(tmp["product_name"])
@@ -87,8 +91,8 @@ func treatProductInfo(tmp map[string]interface{}) map[string]interface{} {
 	data["medical_equipment_class3"] = qu.ObjToString(tmp["product_class3"])
 	data["sdproduct_name"] = qu.ObjToString(tmp["product_class4"])
 	data["medical_equipment_code"] = qu.ObjToString(tmp["product_code"])
-	data["Isvalid"] = true
-	data["comeintime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeTmeplate)
+	data["isvalid"] = qu.IntAll(1)
+	data["comeintime"] = time.Unix(time.Now().Unix(), 0).Format(class.TimeLayout)
 
 	return data
 }
@@ -107,3 +111,18 @@ func cleanErrDateTime(datetime string) bool {
 	}
 	return false
 }
+
+func temporaryRepair() {
+	arr := []string{
+		"61f0eb909c2559e454683bba",
+		"61f0eb949c2559e4546840e7",
+		"61f0eb999c2559e45468486c",
+	}
+
+	for _, tmpid := range arr {
+		tmp := class.Save_Mgo.FindById("zktest_mysql_product_info", tmpid)
+		dict := treatProductInfo(tmp)
+		//插入sql
+		class.InsertMysqlData("medical_equipment_productinfo", dict, tmpid)
+	}
+}

+ 48 - 0
filedproject_medical/data_preparation/src/repair/repairclass.go

@@ -7,6 +7,54 @@ import (
 	"unicode/utf8"
 )
 
+//修复产品的企业是否存在id
+func RepairProductCompany() {
+	sess := class.Save_Mgo.GetMgoConn()
+	defer class.Save_Mgo.DestoryMongoConn(sess)
+	q := map[string]interface{}{
+		"company_id": "",
+	}
+	it := sess.DB(class.Save_Mgo.DbName).C("zktest_mysql_product_info").Find(&q).Select(map[string]interface{}{
+		"company_name": 1,
+	}).Sort("_id").Iter()
+	total, isok := 0, 0
+	for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
+		if total%10000 == 0 {
+			log.Debug("cur index ", total, isok)
+		}
+		company_name := qu.ObjToString(tmp["company_name"])
+		company_new_id := querycompany(company_name)
+		tmpid := class.BsonTOStringId(tmp["_id"])
+		if company_new_id != "" {
+			isok++
+			class.Save_Mgo.UpdateById("zktest_mysql_product_info", tmpid, map[string]interface{}{
+				"$set": map[string]interface{}{
+					"company_id": company_new_id,
+				},
+			})
+		}
+		tmp = make(map[string]interface{})
+	}
+
+	log.Debug("is over ", total, "~", isok)
+}
+func querycompany(name string) string {
+	company_id := ""
+	query := map[string]interface{}{
+		"company_name": name,
+	}
+	data_base := class.Spi_Mgo.FindOne("company_base", query)
+	if data_base != nil && len(data_base) > 2 {
+		company_id = qu.ObjToString(data_base["company_id"])
+	} else {
+		data_spec := class.Spi_Mgo.FindOne("special_enterprise", query)
+		if data_spec != nil && len(data_spec) > 2 {
+			company_id = qu.ObjToString(data_spec["company_id"])
+		}
+	}
+	return company_id
+}
+
 //修复产品分类表
 func repairProductClass() {
 	sess := class.Save_Mgo.GetMgoConn()

Diferenças do arquivo suprimidas por serem muito extensas
+ 6 - 10
filedproject_medical/data_preparation/src/vcode/vcode.go


Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff