Parcourir la source

清洗备份更新

zhengkun il y a 2 ans
Parent
commit
ef5ad66880
8 fichiers modifiés avec 310 ajouts et 173 suppressions
  1. 2 2
      sensitive/src/config.json
  2. 6 9
      sensitive/src/main.go
  3. 38 8
      sensitive/src/util/test.go
  4. 50 0
      src/check_category.go
  5. 75 74
      src/check_city.go
  6. 0 1
      src/check_publishtime.go
  7. 2 2
      src/config.json
  8. 137 77
      src/main.go

+ 2 - 2
sensitive/src/config.json

@@ -2,8 +2,8 @@
   "udpport": ":1762",
   "save_mgodb": {
     "addr": "127.0.0.1:27017",
-    "db": "qfw",
-    "coll": "result_20210109",
+    "db": "zhengkun",
+    "coll": "zktest_hospital",
     "pool": 10
   },
   "qfw_mgodb": {

+ 6 - 9
sensitive/src/main.go

@@ -6,26 +6,23 @@ import (
 	ul "util"
 )
 
-func init()  {
+func init() {
 	ul.InitC()
 }
 func main() {
-	//ul.TestData()
-	//go ul.AddTaskSensitiveWordsData() //增量-新增
-	ul.SentiveUdp()  //数据流程-增量
+	ul.TestData()
+	go ul.AddTaskSensitiveWordsData() //增量-新增
+	ul.SentiveUdp()                   //数据流程-增量
 
 	lock := make(chan bool)
 	<-lock
 }
 
-
-
-
-func ttttt()  {
+func ttttt() {
 	log.Println("。。。。。。")
 	for {
 		tick := time.Tick(time.Second * 10)
 		<-tick
 		log.Println("执行一次")
 	}
-}
+}

+ 38 - 8
sensitive/src/util/test.go

@@ -1,14 +1,44 @@
 package util
 
-import "log"
+import (
+	"log"
+	qu "qfw/util"
+	"strings"
+)
 
 //测试方法
 func TestData() {
-	//
-	log.Println("测试一下...")
-	name:="四川灵猫王有害生物防治有限公司"
-	fok, flog, fname := cheakname(name)
-	log.Println(fok,flog,fname)
-	rname, isok, _ ,datas := dealWithNameScoreRules(name)
-	log.Println(rname,isok,len(datas))
+	sess := Save_Mgo.GetMgoConn()
+	defer Save_Mgo.DestoryMongoConn(sess)
+	q := map[string]interface{}{
+		"exists":0,
+	}
+	iter := sess.DB(Save_Mgo.DbName).C(SaveCollName).Find(&q).Iter()
+	total,isok:=0,0
+	for tmp := map[string]interface{}{}; iter.Next(&tmp); total++{
+		if total%100==0 {
+			log.Println("cur index ",total,isok)
+		}
+		if total<12000 {
+			tmp = map[string]interface{}{}
+			continue
+		}
+		name:=qu.ObjToString(tmp["name"])
+		rname, b, _ ,_ := dealWithNameScoreRules(name)
+		if strings.Contains(name,"医院") {
+			if !strings.Contains(rname,"医院") {
+				b = false
+			}
+		}
+		if b {
+			isok++
+			Save_Mgo.UpdateById(SaveCollName,BsonTOStringId(tmp["_id"]), map[string]interface{}{
+				"$set":map[string]interface{}{
+					"exists":3,
+				},
+			})
+		}
+		tmp = map[string]interface{}{}
+	}
+	log.Println("is over ",total,isok)
 }

+ 50 - 0
src/check_category.go

@@ -0,0 +1,50 @@
+package main
+
+import (
+	"github.com/go-xweb/log"
+	qu "qfw/util"
+)
+
+//逻辑校验分类数据~
+func getCheckDataCategory(tmp map[string]interface{},update_check *map[string]interface{}) bool {
+	modifycheck := make(map[string]interface{},0)
+	if (*update_check)["modifycheck"] != nil {
+		modifycheck  = *qu.ObjToMap((*update_check)["modifycheck"])
+	}
+	log.Debug(BsonTOStringId(tmp["_id"]))
+	toptype := qu.ObjToString(tmp["toptype"])
+	subtype := qu.ObjToString(tmp["subtype"])
+	winner := qu.ObjToString(tmp["winner"])
+	is_del := false
+	if toptype=="招标" && subtype!="单一" {
+		if winner!="" { //校验~合理性
+			if confirmValidEnt(winner) {
+				(*update_check)["toptype"] = "结果"
+				if tmp["winnerorder"]!=nil {
+					(*update_check)["subtype"] = "中标"
+				}else {
+					(*update_check)["subtype"] = "成交"
+				}
+				modifycheck["top_subtype"] = "分类修复"
+				(*update_check)["modifycheck"] = modifycheck
+			}else {
+				is_del = true
+				delete(*update_check,"bidamount")
+			}
+		}else {
+			is_del = true
+			delete(*update_check,"bidamount")
+		}
+	}
+	return is_del
+}
+
+func confirmValidEnt(name string) bool {
+	tmp := qy_mgo.FindOne(qy_coll_name, map[string]interface{}{
+		"company_name":name,
+	})
+	if tmp != nil && len(tmp)> 2 {
+		return true
+	}
+	return false
+}

+ 75 - 74
src/check_city.go

@@ -9,48 +9,48 @@ import (
 
 var cityEndReg *regexp.Regexp = regexp.MustCompile("(区|县|市)$")
 
-func getCheckDataCity(tmp map[string]interface{},update_check *map[string]interface{}) {
+func getCheckDataCity(tmp map[string]interface{}, update_check *map[string]interface{}) {
 
 	area := qu.ObjToString(tmp["area"])
 	city := qu.ObjToString(tmp["city"])
 	district := qu.ObjToString(tmp["district"])
 	buyer := qu.ObjToString(tmp["buyer"])
 
-	if(district!="" && city!="" && area!="" && area!="全国") || buyer=="" {
+	if (district != "" && city != "" && area != "" && area != "全国") || buyer == "" {
 		//标准城市-校验
-		rdata := standardCheckCity(area,city,district)
-		if len(rdata)>0 {
-			umap:=updateLogging(tmp,rdata,"标准信息")
-			copyUpdateData(umap,update_check)
+		rdata := standardCheckCity(area, city, district)
+		if len(rdata) > 0 {
+			umap := updateLogging(tmp, rdata, "标准信息")
+			copyUpdateData(umap, update_check)
 		}
 		return
 	}
 	rdata := cityMarshal(tmp) //企业表-补城市
 	if len(rdata) > 0 {
-		new_area,new_city,new_district := area,city,district
-		if rdata["area"]!="" {
+		new_area, new_city, new_district := area, city, district
+		if rdata["area"] != "" {
 			new_area = qu.ObjToString(rdata["area"])
 		}
-		if rdata["city"]!="" {
+		if rdata["city"] != "" {
 			new_city = qu.ObjToString(rdata["city"])
 		}
-		if rdata["district"]!="" {
+		if rdata["district"] != "" {
 			new_district = qu.ObjToString(rdata["district"])
 		}
-		umap:=updateLogging(tmp,rdata,"企业信息")
-		n_rdata := standardCheckCity(new_area,new_city,new_district)
-		if len(n_rdata)>0 {
+		umap := updateLogging(tmp, rdata, "企业信息")
+		n_rdata := standardCheckCity(new_area, new_city, new_district)
+		if len(n_rdata) > 0 {
 			for rk, rv := range n_rdata {
 				umap[rk] = rv
-				umap["modifycheck"].(map[string]interface{})[rk] = fmt.Sprintf("企业标准信息~%s~%s",qu.ObjToString(tmp[rk]),rv)
+				umap["modifycheck"].(map[string]interface{})[rk] = fmt.Sprintf("企业标准信息~%s~%s", qu.ObjToString(tmp[rk]), rv)
 			}
 		}
-		copyUpdateData(umap,update_check)
-	}else {
-		n_rdata := standardCheckCity(area,city,district)
-		if len(n_rdata)>0 {
-			umap:=updateLogging(tmp,n_rdata,"标准信息")
-			copyUpdateData(umap,update_check)
+		copyUpdateData(umap, update_check)
+	} else {
+		n_rdata := standardCheckCity(area, city, district)
+		if len(n_rdata) > 0 {
+			umap := updateLogging(tmp, n_rdata, "标准信息")
+			copyUpdateData(umap, update_check)
 		}
 	}
 }
@@ -63,16 +63,16 @@ func cityMarshal(data map[string]interface{}) map[string]string {
 	biddistrict := qu.ObjToString(data["district"])
 	rdata := make(map[string]string)
 	query_name := map[string]interface{}{
-		"company_name":buyer,
+		"company_name": buyer,
 	}
 	tmp := qy_mgo.FindOne(qy_coll_name, query_name)
-	if tmp == nil || len(tmp)<2 {
+	if tmp == nil || len(tmp) < 2 {
 		return rdata
 	}
 	company_code := fmt.Sprint(tmp["company_code"])
 	if len(company_code) > 5 {
-		province_city_district:= qy_mgo.FindOne("address", map[string]interface{}{
-			"code":company_code[:6],
+		province_city_district := qy_mgo.FindOne("address", map[string]interface{}{
+			"code": company_code[:6],
 		})
 		remarks := fmt.Sprint((province_city_district)["Remarks"])
 		if remarks == "" || remarks == "废除" || remarks == "已作废" {
@@ -101,18 +101,19 @@ func cityMarshal(data map[string]interface{}) map[string]string {
 			} else if biddistrict == "" && codedistrict != "" && bidarea == codeprovince && codecity == bidcity {
 				rdata["district"] = codedistrict
 			}
-			return rdata
+
+			if rdata["city"] != "" || rdata["district"] != "" {
+				return rdata
+			}
 		}
 	}
 
 	entprovince := qu.ObjToString(tmp["company_area"])
-	//entprovince = strings.TrimRight(entprovince, "省")
-	//entprovince = strings.TrimRight(entprovince, "市")
 	entcity := qu.ObjToString(tmp["company_city"])
 	entdistrict := qu.ObjToString(tmp["company_district"])
 
 	//新增特殊处理-港澳台数据
-	if bidarea == "" || bidarea=="香港" || bidarea=="澳门" || bidarea=="台湾" || bidarea == "全国" {
+	if bidarea == "" || bidarea == "香港" || bidarea == "澳门" || bidarea == "台湾" || bidarea == "全国" {
 		if entprovince != "" {
 			rdata["area"] = entprovince
 			if entcity != "" && entcity != entprovince {
@@ -133,23 +134,24 @@ func cityMarshal(data map[string]interface{}) map[string]string {
 
 	return rdata
 }
+
 //标准校验
-func standardCheckCity(area string,city string,district string) map[string]string{
+func standardCheckCity(area string, city string, district string) map[string]string {
 
-	rdata := make(map[string]string,0)
-	if area=="香港"||area=="澳门"||area=="台湾" || (area=="全国"&&(city==""&&district=="")) {
+	rdata := make(map[string]string, 0)
+	if area == "香港" || area == "澳门" || area == "台湾" || (area == "全国" && (city == "" && district == "")) {
 		return rdata
 	}
 	//第一步:区校验
-	if district!="" {
+	if district != "" {
 		districtArr := DistrictDict[district]
-		if districtArr==nil {//涉及了 个别别名相关的数据
-			trim_arr := aliasDataDistrict(district)//拆分后缀
-			if len(trim_arr)>0 {
-				for _,alias_district := range trim_arr {
+		if districtArr == nil { //涉及了 个别别名相关的数据
+			trim_arr := aliasDataDistrict(district) //拆分后缀
+			if len(trim_arr) > 0 {
+				for _, alias_district := range trim_arr {
 					alias_districtArr := DistrictDict[alias_district]
-					for _,v:=range alias_districtArr{
-						if  city == v.C_Name && area == v.P_Name {
+					for _, v := range alias_districtArr {
+						if city == v.C_Name && area == v.P_Name {
 							rdata["district"] = alias_district
 							return rdata
 						}
@@ -157,23 +159,23 @@ func standardCheckCity(area string,city string,district string) map[string]strin
 				}
 			}
 			rdata["district"] = ""
-		}else {
+		} else {
 			isTrue := false
-			for _,v:=range districtArr{
-				if  city == v.C_Name && area == v.P_Name {
+			for _, v := range districtArr {
+				if city == v.C_Name && area == v.P_Name {
 					isTrue = true
 					break
 				}
 			}
 			if isTrue { //完全匹配
 				return rdata
-			}else { //未完全匹配
-				if len(districtArr)==1 {
+			} else { //未完全匹配
+				if len(districtArr) == 1 {
 					rdata["area"] = districtArr[0].P_Name
 					rdata["city"] = districtArr[0].C_Name
 					rdata["district"] = districtArr[0].D_Name
 					return rdata
-				}else {
+				} else {
 					rdata["district"] = ""
 				}
 			}
@@ -183,11 +185,11 @@ func standardCheckCity(area string,city string,district string) map[string]strin
 	//第二步:区校验-失败   市-校验
 	if city != "" {
 		cityArr := CityDict[city]
-		if cityArr==nil {
+		if cityArr == nil {
 			//把市当成区,匹配三级   - 存在优化空间- city:郑州  别名
 			districtArr := DistrictDict[city]
-			for _,v:=range districtArr{
-				if  city == v.C_Name && area == v.P_Name {
+			for _, v := range districtArr {
+				if city == v.C_Name && area == v.P_Name {
 					rdata["area"] = districtArr[0].P_Name
 					rdata["city"] = districtArr[0].C_Name
 					rdata["district"] = districtArr[0].D_Name
@@ -195,23 +197,23 @@ func standardCheckCity(area string,city string,district string) map[string]strin
 				}
 			}
 			rdata["city"] = ""
-		}else {
+		} else {
 			isTrue := false
-			for _,v:=range cityArr{
-				if  area == v.P_Name {
+			for _, v := range cityArr {
+				if area == v.P_Name {
 					isTrue = true
 					break
 				}
 			}
 			if isTrue { //完全匹配
 				return rdata
-			}else { //未完全匹配
-				if len(cityArr)==1 {
+			} else { //未完全匹配
+				if len(cityArr) == 1 {
 					rdata["area"] = cityArr[0].P_Name
 					rdata["city"] = cityArr[0].C_Name
 					rdata["district"] = ""
 					return rdata
-				}else {
+				} else {
 					rdata["city"] = ""
 				}
 			}
@@ -219,7 +221,7 @@ func standardCheckCity(area string,city string,district string) map[string]strin
 	}
 
 	//第三步:省份校验
-	if ProvinceDict[area]==nil {
+	if ProvinceDict[area] == nil {
 		rdata["area"] = "全国"
 		rdata["city"] = ""
 		rdata["district"] = ""
@@ -229,7 +231,7 @@ func standardCheckCity(area string,city string,district string) map[string]strin
 }
 
 //更新日志
-func updateLogging(tmp map[string]interface{},rdata map[string]string,desc string) map[string]interface{} {
+func updateLogging(tmp map[string]interface{}, rdata map[string]string, desc string) map[string]interface{} {
 	umap := make(map[string]interface{})
 	if tmp["modifycheck"] == nil {
 		umap["modifycheck"] = make(map[string]interface{})
@@ -238,40 +240,39 @@ func updateLogging(tmp map[string]interface{},rdata map[string]string,desc strin
 	}
 	for rk, rv := range rdata {
 		umap[rk] = rv
-		umap["modifycheck"].(map[string]interface{})[rk] = fmt.Sprintf("%s~%s~%s",desc,qu.ObjToString(tmp[rk]),rv)
+		umap["modifycheck"].(map[string]interface{})[rk] = fmt.Sprintf("%s~%s~%s", desc, qu.ObjToString(tmp[rk]), rv)
 	}
 	return umap
 }
 
-func copyUpdateData(tmp map[string]interface{},update_check *map[string]interface{}) {
-	for k,v := range tmp {
+func copyUpdateData(tmp map[string]interface{}, update_check *map[string]interface{}) {
+	for k, v := range tmp {
 		(*update_check)[k] = v
 	}
 }
 
 //拆分三级县
 func aliasDataDistrict(district string) []string {
-	arr :=[]string{}
+	arr := []string{}
 	if cityEndReg.MatchString(district) {
 		str := cityEndReg.FindString(district)
 		strings.TrimRight(district, str)
-		if str=="县"{
-			arr = append(arr,fmt.Sprintf("%s区",strings.TrimRight(district, str)))
-			arr = append(arr,fmt.Sprintf("%s市",strings.TrimRight(district, str)))
-		}else if str=="区"{
-			arr = append(arr,fmt.Sprintf("%s县",strings.TrimRight(district, str)))
-			arr = append(arr,fmt.Sprintf("%s市",strings.TrimRight(district, str)))
-		} else if str=="市"{
-			arr = append(arr,fmt.Sprintf("%s县",strings.TrimRight(district, str)))
-			arr = append(arr,fmt.Sprintf("%s区",strings.TrimRight(district, str)))
-		}else {
+		if str == "县" {
+			arr = append(arr, fmt.Sprintf("%s区", strings.TrimRight(district, str)))
+			arr = append(arr, fmt.Sprintf("%s市", strings.TrimRight(district, str)))
+		} else if str == "区" {
+			arr = append(arr, fmt.Sprintf("%s县", strings.TrimRight(district, str)))
+			arr = append(arr, fmt.Sprintf("%s市", strings.TrimRight(district, str)))
+		} else if str == "市" {
+			arr = append(arr, fmt.Sprintf("%s县", strings.TrimRight(district, str)))
+			arr = append(arr, fmt.Sprintf("%s区", strings.TrimRight(district, str)))
+		} else {
 
 		}
-	}else { //未找到 district- 区县市  例: district : 金水
-		arr = append(arr,fmt.Sprintf("%s区",district))
-		arr = append(arr,fmt.Sprintf("%s县",district))
-		arr = append(arr,fmt.Sprintf("%s市",district))
+	} else { //未找到 district- 区县市  例: district : 金水
+		arr = append(arr, fmt.Sprintf("%s区", district))
+		arr = append(arr, fmt.Sprintf("%s县", district))
+		arr = append(arr, fmt.Sprintf("%s市", district))
 	}
 	return arr
 }
-

+ 0 - 1
src/check_publishtime.go

@@ -26,5 +26,4 @@ func getCheckDataPublishtime(tmp map[string]interface{},update_check *map[string
 			(*update_check)["pt_modify"] = publishtime
 		}
 	}
-
 }

+ 2 - 2
src/config.json

@@ -3,7 +3,7 @@
   "mongodb": {
     "addrName": "127.0.0.1:27017",
     "dbName": "zhengkun",
-    "collName": "extract_test",
+    "collName": "zzzzz_uncity_new",
     "pool": 10
   },
   "qy_mongodb": {
@@ -14,7 +14,7 @@
     "qy_password": "",
     "pool": 10
   },
-  "jy_collName": "address_jy_2021",
+  "jy_collName": "address_jy_2022",
   "check_thread" : 1,
   "nextNode": []
 }

+ 137 - 77
src/main.go

@@ -3,16 +3,19 @@ package main
 import (
 	"encoding/json"
 	"fmt"
+	"io/ioutil"
 	"log"
 	mu "mfw/util"
 	"net"
+	"net/http"
 	qu "qfw/util"
+	"strings"
 	"sync"
 	"time"
 )
 
 type Province struct {
-	P_Name    string
+	P_Name string
 }
 type City struct {
 	P_Name string
@@ -25,37 +28,41 @@ type District struct {
 }
 
 var (
-	Sysconfig    map[string]interface{} 			//配置文件
-	mconf        map[string]interface{} 			//mongodb配置信息
-	data_mgo,qy_mgo   *MongodbSim            		//mongodb操作对象
-	udpclient 	mu.UdpClient 						//udp对象
-	nextNode 	[]map[string]interface{}			//节点信息
-	coll_name,qy_coll_name,jy_coll_name 	string	//表名
-	check_lock 		sync.Mutex   					//更新锁
-	check_thread	int								//线程数
-	UpdateTask		 *updateInfo					//更新池
-
-	ProvinceDict	map[string][]Province				//省份-map
-	CityDict		map[string][]City					//城市-map
-	DistrictDict	map[string][]District				//区县-map
+	Sysconfig                             map[string]interface{} //配置文件
+	mconf                                 map[string]interface{} //mongodb配置信息
+	data_mgo, qy_mgo                      *MongodbSim
+	bid_mgo                               *MongodbSim              //mongodb操作对象
+	udpclient                             mu.UdpClient             //udp对象
+	nextNode                              []map[string]interface{} //节点信息
+	coll_name, qy_coll_name, jy_coll_name string                   //表名
+	check_lock                            sync.Mutex               //更新锁
+	check_thread                          int                      //线程数
+	UpdateTask                            *updateInfo              //更新池
+
+	ProvinceDict map[string][]Province //省份-map
+	CityDict     map[string][]City     //城市-map
+	DistrictDict map[string][]District //区县-map
+
+	//删除字段
+	unset_dict = map[string]interface{}{"winner": 1, "s_winner": 1, "bidamount": 1, "winnerorder": 1}
 )
 
 //初始化城市
-func initCheckCity()  {
+func initCheckCity() {
 	//初始化-城市配置
-	ProvinceDict = make(map[string][]Province,0)
-	CityDict = make(map[string][]City,0)
-	DistrictDict = make(map[string][]District,0)
+	ProvinceDict = make(map[string][]Province, 0)
+	CityDict = make(map[string][]City, 0)
+	DistrictDict = make(map[string][]District, 0)
 
 	q := map[string]interface{}{
-		"town_code":map[string]interface{}{
-			"$exists":0,
+		"town_code": map[string]interface{}{
+			"$exists": 0,
 		},
 	}
 	sess := qy_mgo.GetMgoConn()
 	defer qy_mgo.DestoryMongoConn(sess)
 	it := sess.DB(qy_mgo.DbName).C(jy_coll_name).Find(&q).Iter()
-	total  := 0
+	total := 0
 	for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
 		if total%1000 == 0 {
 			log.Println("当前数量:", total)
@@ -66,46 +73,46 @@ func initCheckCity()  {
 			province := qu.ObjToString(tmp["province"])
 			city := qu.ObjToString(tmp["city"])
 			district := qu.ObjToString(tmp["district"])
-			data := District{province,city,district}
-			if DistrictDict[district]==nil {
+			data := District{province, city, district}
+			if DistrictDict[district] == nil {
 				DistrictDict[district] = []District{data}
-			}else {
+			} else {
 				arr := DistrictDict[district]
-				arr = append(arr,data)
+				arr = append(arr, data)
 				DistrictDict[district] = arr
 			}
-		}else {
-			if city_code>0 {
+		} else {
+			if city_code > 0 {
 				province := qu.ObjToString(tmp["province"])
 				city := qu.ObjToString(tmp["city"])
-				data := City{province,city}
-				if CityDict[city]==nil {
+				data := City{province, city}
+				if CityDict[city] == nil {
 					CityDict[city] = []City{data}
-				}else {
+				} else {
 					arr := CityDict[city]
-					arr = append(arr,data)
+					arr = append(arr, data)
 					CityDict[city] = arr
 				}
-			}else {
+			} else {
 				province := qu.ObjToString(tmp["province"])
 				data := Province{province}
-				if ProvinceDict[province]==nil {
+				if ProvinceDict[province] == nil {
 					ProvinceDict[province] = []Province{data}
-				}else {
+				} else {
 					arr := ProvinceDict[province]
-					arr = append(arr,data)
+					arr = append(arr, data)
 					ProvinceDict[province] = arr
 				}
 			}
 		}
 		tmp = make(map[string]interface{})
 	}
-	log.Println(fmt.Sprintf("城市配置加载完毕...省~%d 市~%d 区~%d",len(ProvinceDict),len(CityDict),len(DistrictDict)))
+	log.Println(fmt.Sprintf("城市配置加载完毕...省~%d 市~%d 区~%d", len(ProvinceDict), len(CityDict), len(DistrictDict)))
 }
 
 //mgo-配置等
-func initMgo()  {
-	mconf := Sysconfig["mongodb"].(map[string]interface{})
+func initMgo() {
+	mconf = Sysconfig["mongodb"].(map[string]interface{})
 	log.Println(mconf)
 	data_mgo = &MongodbSim{
 		MongodbAddr: mconf["addrName"].(string),
@@ -119,11 +126,19 @@ func initMgo()  {
 		MongodbAddr: qy_mconf["qy_addrName"].(string),
 		DbName:      qy_mconf["qy_dbName"].(string),
 		Size:        qu.IntAllDef(qy_mconf["pool"], 10),
-		UserName: qy_mconf["qy_username"].(string),
-		Password: qy_mconf["qy_password"].(string),
+		UserName:    qy_mconf["qy_username"].(string),
+		Password:    qy_mconf["qy_password"].(string),
 	}
 	qy_mgo.InitPool()
 
+	bid_mgo = &MongodbSim{
+		MongodbAddr: "172.17.145.163:27083,172.17.4.187:27082",
+		DbName:      "qfw",
+		Size:        10,
+		UserName:    "zhengkun",
+		Password:    "zk@123123",
+	}
+	bid_mgo.InitPool()
 
 	coll_name = mconf["collName"].(string)
 	qy_coll_name = qy_mconf["qy_collName"].(string)
@@ -150,7 +165,7 @@ func init() {
 	go UpdateTask.updateData()
 }
 
-func main()  {
+func main() {
 	updport := Sysconfig["udpport"].(string)
 	udpclient = mu.UdpClient{Local: updport, BufSize: 1024}
 	udpclient.Listen(processUdpMsg)
@@ -159,11 +174,10 @@ func main()  {
 }
 
 //临时校验
-func mainT()  {
-	sid := "624ed2324f7bde5444f1e973"
-	eid := "624ed35e4f7bde5444f1ec1d"
-
-	startCheckData(sid,eid)
+func mainT() {
+	sid := "12982d658fa2ac55ba96517d"
+	eid := "92982d658fa2ac55ba96517e"
+	startCheckData(sid, eid)
 	time.Sleep(99999 * time.Hour)
 }
 
@@ -177,7 +191,7 @@ func startCheckData(sid, eid string) {
 			"$lte": StringTOBsonId(eid),
 		},
 	}
-	log.Println("查询条件:",q)
+	log.Println("查询条件:", q)
 
 	check_pool := make(chan bool, check_thread)
 	check_wg := &sync.WaitGroup{}
@@ -185,57 +199,54 @@ func startCheckData(sid, eid string) {
 	sess := data_mgo.GetMgoConn()
 	defer data_mgo.DestoryMongoConn(sess)
 	it := sess.DB(data_mgo.DbName).C(coll_name).Find(&q).Iter()
-	total,isRepair := 0,0
+	total, isRepair := 0, 0
 	for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
 		if total%10000 == 0 {
-			log.Println("当前数量:", total,isRepair,tmp["_id"])
+			log.Println("当前数量:", total, isRepair, tmp["_id"])
 		}
-		update_id := map[string]interface{}{"_id":tmp["_id"]}
+		update_id := map[string]interface{}{"_id": tmp["_id"]}
 		check_pool <- true
 		check_wg.Add(1)
-		go func(tmp map[string]interface{},update_id map[string]interface{}) {
+		go func(tmp map[string]interface{}, update_id map[string]interface{}) {
 			defer func() {
 				<-check_pool
 				check_wg.Done()
 			}()
 			//更新-
-			update_check := make(map[string]interface{},0)
+			update_check := make(map[string]interface{}, 0)
 			//审查-城市
-			getCheckDataCity(tmp,&update_check)
+			getCheckDataCity(tmp, &update_check)
 			//审查-中标金额
-			getCheckDataBidamount(tmp,&update_check)
+			getCheckDataBidamount(tmp, &update_check)
 			//验证是否修复发布时间 - 对比开标日期,投标截止日期
-			getCheckDataPublishtime(tmp,&update_check)
-
-
-
-
-			if len(update_check)>0 {
+			getCheckDataPublishtime(tmp, &update_check)
+			//清洗分类~
+			//is_category:= getCheckDataCategory(tmp,&update_check)
+
+			//最终计算是否清洗
+			update_dict := make(map[string]interface{}, 0)
+			if len(update_check) > 0 {
+				update_dict["$set"] = update_check
+			}
+			//if is_category {
+			//	update_dict["$unset"] = unset_dict
+			//}
+			if len(update_dict) > 0 {
+				//注意事项~更新key 不能与 删除key  同时存在
 				isRepair++
 				UpdateTask.updatePool <- []map[string]interface{}{
 					update_id,
-					map[string]interface{}{
-						"$set": update_check,
-					},
+					update_dict,
 				}
 			}
-
-
-		}(tmp,update_id)
+		}(tmp, update_id)
 		tmp = make(map[string]interface{})
 	}
 	check_wg.Wait()
 
-	log.Println("check is over - 总计数量",total,isRepair)
+	log.Println("check is over - 总计数量", total, isRepair)
 }
 
-
-
-
-
-
-
-
 //udp监听
 func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) {
 	switch act {
@@ -254,6 +265,7 @@ func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) {
 				go udpclient.WriteUdp(data, mu.OP_NOOP, ra)
 				log.Println("udp通知id段-审查数据", sid, "~", eid)
 				startCheckData(sid, eid)
+
 				log.Println("udp通知审查数据完成,下节点响应")
 				for _, m := range nextNode {
 					by, _ := json.Marshal(map[string]interface{}{
@@ -261,19 +273,67 @@ func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) {
 						"lteid": eid,
 						"stype": qu.ObjToString(m["stype"]),
 					})
-					err := udpclient.WriteUdp(by, mu.OP_TYPE_DATA, &net.UDPAddr{
+					new_err := udpclient.WriteUdp(by, mu.OP_TYPE_DATA, &net.UDPAddr{
 						IP:   net.ParseIP(m["addr"].(string)),
 						Port: qu.IntAll(m["port"]),
 					})
-					if err != nil {
+					if new_err != nil {
 						log.Println(err)
 					}
 				}
+
+				//更新记录状态
+				updateProcessUdpIdsInfo(sid, eid)
+
 			}
 		}
 	case mu.OP_NOOP: //下个节点回应
-		log.Println("下节点回应",string(data))
+		log.Println("下节点回应", string(data))
 	}
 }
 
+//更新流程记录id段落
+func updateProcessUdpIdsInfo(sid string, eid string) {
+	query := map[string]interface{}{
+		"gtid":  sid,
+		"lteid": eid,
+	}
+	log.Println("开始更新流程段落记录~~", query)
+	data := bid_mgo.FindOne("bidding_processing_ids", query)
+	if len(data) > 0 {
+		up_id := BsonTOStringId(data["_id"])
+		if up_id != "" {
+			update := map[string]interface{}{
+				"$set": map[string]interface{}{
+					"dataprocess": 4,
+					"updatetime":  time.Now().Unix(),
+				},
+			}
+			bid_mgo.UpdateById("bidding_processing_ids", up_id, update)
+			log.Println("流程段落记录~~更新完毕~", update)
+		}
+	} else {
+		log.Println("未查询到记录id段落~", query)
+	}
+}
 
+func httpDo(detail string) (e error) {
+	client := &http.Client{}
+	req, err := http.NewRequest("POST", "http://127.0.0.1:9991/get",
+		strings.NewReader("detail="+detail))
+	if err != nil {
+		return err
+	}
+	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
+	resp, err := client.Do(req)
+	if err != nil {
+		return err
+	}
+	defer resp.Body.Close()
+	body, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		return err
+	}
+	log.Println("put ", string(body))
+	return nil
+}