|
@@ -5,21 +5,35 @@ import (
|
|
|
qu "qfw/util"
|
|
|
"strings"
|
|
|
"sync"
|
|
|
+ "time"
|
|
|
"unicode/utf8"
|
|
|
)
|
|
|
|
|
|
var data_hospitals = map[string][]map[string]interface{}{}
|
|
|
|
|
|
-//重复数据~判断
|
|
|
-func repeatHospital() {
|
|
|
+//整合医院数据
|
|
|
+func confirmHospitalData(save_coll string) {
|
|
|
+ //处理~医院信息
|
|
|
+ log.Debug("整合医院信息~", len(data_hospitals))
|
|
|
+ for _, v := range data_hospitals {
|
|
|
+ data := mergeHospitalInfo(v)
|
|
|
+ save_mgo.Save(save_coll, data)
|
|
|
+ }
|
|
|
+ log.Debug("待判重数据存储完毕~")
|
|
|
+ time.Sleep(10 * time.Second)
|
|
|
+ repeatHospital(save_coll)
|
|
|
+}
|
|
|
+
|
|
|
+//判重~医院数据
|
|
|
+func repeatHospital(save_coll string) {
|
|
|
+ log.Debug("开始判重医院数据...")
|
|
|
sess := save_mgo.GetMgoConn()
|
|
|
defer save_mgo.DestoryMongoConn(sess)
|
|
|
data_hospitals_alias := make(map[string][]string, 0)
|
|
|
data_hospitals_id := make(map[string]string, 0)
|
|
|
data_hospitals_region := make(map[string]map[string]string, 0)
|
|
|
-
|
|
|
q := map[string]interface{}{}
|
|
|
- it := sess.DB(save_mgo.DbName).C("zzzzzz").Find(&q).Sort("name").Select(map[string]interface{}{
|
|
|
+ it := sess.DB(save_mgo.DbName).C(save_coll).Find(&q).Sort("_id").Select(map[string]interface{}{
|
|
|
"name": 1,
|
|
|
"alias": 1,
|
|
|
}).Iter()
|
|
@@ -38,7 +52,7 @@ func repeatHospital() {
|
|
|
alias_arr := strings.Split(alias, ",")
|
|
|
alias_arr = append(alias_arr, name)
|
|
|
|
|
|
- //减少重复
|
|
|
+ //减少重复...待
|
|
|
|
|
|
tmpid := BsonTOStringId(tmp["_id"])
|
|
|
if data_hospitals_alias[name] == nil {
|
|
@@ -77,13 +91,12 @@ func repeatHospital() {
|
|
|
if is_r_n != "" {
|
|
|
|
|
|
}
|
|
|
- //log.Debug(name, "~", is_r_n)
|
|
|
- //save_mgo.UpdateById("zzzzzz", tmpid, map[string]interface{}{
|
|
|
- // "$set": map[string]interface{}{
|
|
|
- // "repeat": 1,
|
|
|
- // "repeat_id": data_hospitals_id[is_r_n],
|
|
|
- // },
|
|
|
- //})
|
|
|
+ save_mgo.UpdateById(save_coll, tmpid, map[string]interface{}{
|
|
|
+ "$set": map[string]interface{}{
|
|
|
+ "repeat": 1,
|
|
|
+ "repeat_id": data_hospitals_id[is_r_n],
|
|
|
+ },
|
|
|
+ })
|
|
|
}
|
|
|
data_hospitals_id[name] = tmpid
|
|
|
data_hospitals_region[name] = region
|
|
@@ -92,46 +105,33 @@ func repeatHospital() {
|
|
|
tmp = make(map[string]interface{})
|
|
|
}
|
|
|
log.Debug("is over ", total, "~", isok)
|
|
|
-}
|
|
|
|
|
|
-//是否相同地域
|
|
|
-func repeatRegion(region map[string]string, data map[string]string) bool {
|
|
|
- if region["district"] != "" && data["district"] != "" &&
|
|
|
- region["district"] != data["district"] {
|
|
|
- return false
|
|
|
- }
|
|
|
- if region["city"] != "" && data["city"] != "" &&
|
|
|
- region["city"] != data["city"] {
|
|
|
- return false
|
|
|
- }
|
|
|
- if region["area"] != "" && data["area"] != "" &&
|
|
|
- region["area"] != data["area"] &&
|
|
|
- region["area"] != "全国" && data["area"] != "全国" {
|
|
|
- return false
|
|
|
- }
|
|
|
-
|
|
|
- return true
|
|
|
+ //合并判重后的数据
|
|
|
+ mergeRepeatHospital(save_coll)
|
|
|
}
|
|
|
|
|
|
-//整合医院数据
|
|
|
-func confirmhHospitalData() {
|
|
|
- //处理~医院信息
|
|
|
- log.Debug("is ", len(data_hospitals))
|
|
|
- for k, v := range data_hospitals {
|
|
|
- data := mergeHospitalInfo(v)
|
|
|
- if data != nil && len(data) > 2 {
|
|
|
- //保存新表~
|
|
|
- save_mgo.Save("zzzzzz", data)
|
|
|
- } else {
|
|
|
- log.Debug("异常数据...", k)
|
|
|
- save_mgo.Save("kkkkkk", data)
|
|
|
+//最终合并判重后的医院数据
|
|
|
+func mergeRepeatHospital(save_coll string) {
|
|
|
+ log.Debug("开始合并重复后的数据~待")
|
|
|
+ return
|
|
|
+ sess := save_mgo.GetMgoConn()
|
|
|
+ defer save_mgo.DestoryMongoConn(sess)
|
|
|
+ q := map[string]interface{}{}
|
|
|
+ it := sess.DB(save_mgo.DbName).C(save_coll).Find(&q).Sort("_id").Iter()
|
|
|
+ total, isok := 0, 0
|
|
|
+ for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
|
|
|
+ if total%1000 == 0 {
|
|
|
+ log.Debug("cur index ", total, "~", isok)
|
|
|
}
|
|
|
+ //最终保存
|
|
|
+
|
|
|
+ tmp = make(map[string]interface{})
|
|
|
}
|
|
|
- log.Debug("最终~", len(data_hospitals))
|
|
|
+ log.Debug("is over ", total, "~", isok)
|
|
|
}
|
|
|
|
|
|
//处理医院基本信息~涉及多张表
|
|
|
-func dealWithHospitalInfo(hos_coll string, depart_coll string) {
|
|
|
+func dealWithHospitalBaseInfo(hos_coll string, depart_coll string) {
|
|
|
log.Debug("处理医疗~医院基本信息")
|
|
|
sess := save_mgo.GetMgoConn()
|
|
|
defer save_mgo.DestoryMongoConn(sess)
|
|
@@ -188,16 +188,10 @@ func treatHospitalInfo(tmp map[string]interface{}) map[string]interface{} {
|
|
|
hospitalname := qu.ObjToString(tmp["hospitalname"])
|
|
|
hospitalname = strings.ReplaceAll(hospitalname, " ", "")
|
|
|
//医院名称~
|
|
|
- data["mi_name"] = hospitalname
|
|
|
+ data["name"] = hospitalname
|
|
|
//医院简介
|
|
|
data["introduce"] = qu.ObjToString(tmp["introduce"])
|
|
|
|
|
|
- //等级~性质~代码
|
|
|
- n_level, n_type, n_bus_type := inquirHospitalLevelType(qu.ObjToString(tmp["level"]), qu.ObjToString(tmp["type"]), qu.ObjToString(tmp["business_type"]))
|
|
|
- data["level"] = n_level
|
|
|
- data["type"] = n_type
|
|
|
- data["business_type"] = n_bus_type
|
|
|
-
|
|
|
//医院地址
|
|
|
data["address"] = qu.ObjToString(tmp["address"])
|
|
|
//医院设备
|
|
@@ -223,19 +217,31 @@ func treatHospitalInfo(tmp map[string]interface{}) map[string]interface{} {
|
|
|
data["fax_number"] = qu.ObjToString(tmp["fax_number"])
|
|
|
//医院网站
|
|
|
data["website"] = qu.ObjToString(tmp["website"])
|
|
|
+
|
|
|
+ //等级~性质~代码
|
|
|
+ //n_level, n_type, n_bus_type := inquirHospitalLevelType(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["business_type"] = qu.IntAll(n_bus_type)
|
|
|
+ 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"]))
|
|
|
+ //supplementRegionally(&area, &city, &district, hospitalname, qu.ObjToString(tmp["address"]))
|
|
|
}
|
|
|
data["area"] = area
|
|
|
data["city"] = city
|
|
|
data["district"] = district
|
|
|
|
|
|
+ company_id := ""
|
|
|
//关联企业信息~查询顺序~企业~特殊~自生
|
|
|
- inquirBaseInfoid(hospitalname)
|
|
|
+ //company_id = inquirBaseInfoid(hospitalname)
|
|
|
+ data["company_id"] = company_id
|
|
|
|
|
|
//入库时间
|
|
|
//data["comeintime"] = time.Unix(qu.Int64All(tmp["comeintime"]), 0).Format(timeLayout)
|
|
@@ -281,6 +287,10 @@ func mergeHospitalInfo(dataArr []map[string]interface{}) map[string]interface{}
|
|
|
temp := dataArr[0]
|
|
|
for k, v := range temp {
|
|
|
isMerge := false
|
|
|
+ //合并别名~
|
|
|
+
|
|
|
+ //合并科室信息
|
|
|
+
|
|
|
//选取最优值
|
|
|
if new_v, ok := v.(string); ok {
|
|
|
if new_v == "" { //查询其他数据~补充
|