Преглед на файлове

修改-各种-企业城市-标准

zhengkun преди 3 години
родител
ревизия
27443cd09f

+ 4 - 4
data_monitoring/listen_data/src/main.go

@@ -78,19 +78,19 @@ func init() {
 
 func main()  {
 
-	//save_mgo = &MongodbSim{
+	//python_mgo = &MongodbSim{
 	//	MongodbAddr: "172.17.145.163:27083,172.17.4.187:27082",
 	//	DbName:      "qfw",
 	//	Size:        20,
 	//	UserName: "zhengkun",
 	//	Password: "zk@123123",
 	//}
-	//save_mgo.InitPool()
+	//python_mgo.InitPool()
 
 	//save_mgo = &MongodbSim{
 	//	MongodbAddr: "172.17.4.85:27080",
 	//	DbName:      "qfw",
-	//	Size:        10,
+	//	Size:        20,
 	//	UserName: "",
 	//	Password: "",
 	//}
@@ -114,7 +114,7 @@ func main()  {
 	}
 	save_mgo.InitPool()
 
-	exportFieldScoreIDBIdding()
+	exportErrQuanGuoData()
 
 	return
 

+ 1084 - 1
data_monitoring/listen_data/src/zkmethod.go

@@ -12,6 +12,7 @@ import (
 	"io/ioutil"
 	"net/http"
 	"os"
+	es_elastic "qfw/common/src/gopkg.in/olivere/elastic.v1"
 	qu "qfw/util"
 	"qfw/util/elastic"
 	"qfw/util/redis"
@@ -80,7 +81,19 @@ func decodeJyUrl()  {
 	612933b21a75b8f44654fa38
 	*/
 
-	test := "AbyY1wEdDxYOyYsNHtxZ3IkCCQCIDFjcWhwKCgkPT0efGdzfl5UCjI%3D"
+
+	var conformWinnerKVReg3 = regexp.MustCompile("(.*)?拟定供应商信息[::\\s]+名称[::](.*(公司|厂|台))[\\s]+地址(.*)?")
+	con := `11111拟定供应商信息:
+	名称:郑州人民广播电台
+	地址:郑州市金水区内环路17号A座。232323`
+	if conformWinnerKVReg3.MatchString(con) {
+		con = conformWinnerKVReg3.ReplaceAllString(con,"${2}")
+	}
+	log.Debug(con)
+	return
+
+
+	test := "AirY1wJZS44BSo7Amd6Z3IzJicvASJgdnxxKTgFKy5FWXtwDgVUCP0%3D"
 	var Decode  = qu.CommonDecodeArticle("content", test)
 	log.Debug(Decode[0])
 	return
@@ -93,8 +106,1078 @@ func encodeJyUrl()  {
 	log.Debug(Encode)
 }
 
+//遍历es 导出异常数据
+func exportErrQuanGuoData()  {
+	elastic.InitElasticSize("http://127.0.0.1:12003",10)
+	//elastic.InitElasticSize("http://172.17.145.170:9800", 10)
+
+	log.Debug("开始导出......")
+	//遍历索引
+	esclient := elastic.GetEsConn()
+	defer elastic.DestoryEsConn(esclient)
+
+	if esclient == nil {
+		log.Debug("连接池异常")
+	}
+	//q :=es_elastic.NewTermQuery("area","全国")
+
+
+	arr := []map[string]interface{}{
+		{"key": "广东","count": 9793435,"aaabbb":"1"},
+		{"key": "广州市","count": 1753303},
+		{"key": "深圳市","count": 943391},
+		{"key": "佛山市","count": 878137},
+		{"key": "惠州市","count": 588756},
+		{"key": "中山市","count": 511753},
+		{"key": "清远市","count": 408415},
+		{"key": "韶关市","count": 401834},
+		{"key": "东莞市","count": 399658},
+		{"key": "肇庆市","count": 371789},
+		{"key": "茂名市","count": 355259},
+		{"key": "珠海市","count": 352554},
+		{"key": "湛江市","count": 348396},
+		{"key": "汕头市","count": 330634},
+		{"key": "梅州市","count": 280759},
+		{"key": "江门市","count": 234517},
+		{"key": "潮州市","count": 190182},
+		{"key": "云浮市","count": 190009},
+		{"key": "河源市","count": 173828},
+		{"key": "汕尾市","count": 160951},
+		{"key": "阳江市","count": 159198},
+		{"key": "揭阳市","count": 152241},
+		{"key": "佛山","count": 104},
+		{"key": "中山","count": 15},
+		{"key": "深圳","count": 14},
+		{"key": "东莞","count": 13},
+		{"key": "江门","count": 9},
+		{"key": "广东省","count": 8},
+		{"key": "广州","count": 4},
+		{"key": "惠州","count": 3},
+		{"key": "北京市","count": 1},
+		{"key": "珠海","count": 1},
+		{"key": "阳江","count": 1},
+		{"key": "山东","count": 6269916,"aaabbb":"1"},
+		{"key": "济南市","count": 1215749},
+		{"key": "青岛市","count": 783079},
+		{"key": "潍坊市","count": 493730},
+		{"key": "临沂市","count": 407297},
+		{"key": "济宁市","count": 367980},
+		{"key": "烟台市","count": 337735},
+		{"key": "聊城市","count": 317560},
+		{"key": "淄博市","count": 292306},
+		{"key": "日照市","count": 279839},
+		{"key": "德州市","count": 254100},
+		{"key": "泰安市","count": 243043},
+		{"key": "滨州市","count": 229494},
+		{"key": "威海市","count": 224879},
+		{"key": "菏泽市","count": 215532},
+		{"key": "东营市","count": 150344},
+		{"key": "枣庄市","count": 136861},
+		{"key": "莱芜市","count": 9186},
+		{"key": "寿光市","count": 137},
+		{"key": "济南","count": 30},
+		{"key": "潍坊","count": 20},
+		{"key": "山东省","count": 14},
+		{"key": "东营","count": 12},
+		{"key": "莱芜","count": 12},
+		{"key": "威海","count": 8},
+		{"key": "济宁","count": 5},
+		{"key": "聊城","count": 5},
+		{"key": "北京市","count": 3},
+		{"key": "青岛","count": 2},
+		{"key": "曲阜市","count": 1},
+		{"key": "西安市","count": 1},
+		{"key": "全国","count": 5483318,"aaabbb":"1"},
+		{"key": "哈密地区","count": 12},
+		{"key": "唐山市","count": 11},
+		{"key": "绍兴市","count": 10},
+		{"key": "泰州市","count": 9},
+		{"key": "石家庄市","count": 8},
+		{"key": "台湾省","count": 6},
+		{"key": "合肥市","count": 6},
+		{"key": "广州市","count": 6},
+		{"key": "舟山市","count": 6},
+		{"key": "黄冈市","count": 6},
+		{"key": "福州市","count": 5},
+		{"key": "仙桃市","count": 3},
+		{"key": "北京市","count": 3},
+		{"key": "廊坊市","count": 3},
+		{"key": "成都市","count": 3},
+		{"key": "十堰市","count": 2},
+		{"key": "南宁市","count": 2},
+		{"key": "日照市","count": 2},
+		{"key": "沧州市","count": 2},
+		{"key": "六盘水市","count": 1},
+		{"key": "南京市","count": 1},
+		{"key": "南昌市","count": 1},
+		{"key": "周口市","count": 1},
+		{"key": "呼伦贝尔市","count": 1},
+		{"key": "大连市","count": 1},
+		{"key": "太原市","count": 1},
+		{"key": "宁波市","count": 1},
+		{"key": "宜昌市","count": 1},
+		{"key": "宣城市","count": 1},
+		{"key": "宿迁市","count": 1},
+		{"key": "崇左市","count": 1},
+		{"key": "张家口市","count": 1},
+		{"key": "承德市","count": 1},
+		{"key": "无锡市","count": 1},
+		{"key": "池州市","count": 1},
+		{"key": "泉州市","count": 1},
+		{"key": "泸州市","count": 1},
+		{"key": "济南市","count": 1},
+		{"key": "深圳市","count": 1},
+		{"key": "湘潭市","count": 1},
+		{"key": "滁州市","count": 1},
+		{"key": "漳州市","count": 1},
+		{"key": "盐城市","count": 1},
+		{"key": "秦皇岛市","count": 1},
+		{"key": "西安市","count": 1},
+		{"key": "贺州市","count": 1},
+		{"key": "金华市","count": 1},
+		{"key": "铜陵市","count": 1},
+		{"key": "防城港市","count": 1},
+		{"key": "香港","count": 1},
+		{"key": "黄山市","count": 1},
+		{"key": "安徽","count": 4632338,"aaabbb":"1"},
+		{"key": "合肥市","count": 1141306},
+		{"key": "芜湖市","count": 353318},
+		{"key": "滁州市","count": 338535},
+		{"key": "安庆市","count": 300115},
+		{"key": "阜阳市","count": 284622},
+		{"key": "蚌埠市","count": 272222},
+		{"key": "六安市","count": 264551},
+		{"key": "马鞍山市","count": 198801},
+		{"key": "淮南市","count": 167301},
+		{"key": "宣城市","count": 166202},
+		{"key": "宿州市","count": 159114},
+		{"key": "淮北市","count": 147424},
+		{"key": "铜陵市","count": 139928},
+		{"key": "亳州市","count": 130658},
+		{"key": "黄山市","count": 112832},
+		{"key": "池州市","count": 106672},
+		{"key": "安徽省","count": 40},
+		{"key": "六安","count": 11},
+		{"key": "明光市","count": 6},
+		{"key": "北京市","count": 5},
+		{"key": "成都市","count": 5},
+		{"key": "池州","count": 5},
+		{"key": "芜湖","count": 3},
+		{"key": "铜陵","count": 3},
+		{"key": "宁国市","count": 2},
+		{"key": "宿州","count": 2},
+		{"key": "巢湖市","count": 2},
+		{"key": "桐城市","count": 2},
+		{"key": "天长市","count": 1},
+		{"key": "宁波市","count": 1},
+		{"key": "淮南","count": 1},
+		{"key": "江苏","count": 4435667,"aaabbb":"1"},
+		{"key": "苏州市","count": 842243},
+		{"key": "南京市","count": 824043},
+		{"key": "南通市","count": 403431},
+		{"key": "无锡市","count": 317612},
+		{"key": "徐州市","count": 299127},
+		{"key": "盐城市","count": 258593},
+		{"key": "泰州市","count": 251034},
+		{"key": "常州市","count": 214472},
+		{"key": "扬州市","count": 187995},
+		{"key": "淮安市","count": 175585},
+		{"key": "宿迁市","count": 163395},
+		{"key": "连云港市","count": 133076},
+		{"key": "镇江市","count": 107756},
+		{"key": "南通","count": 51},
+		{"key": "徐州","count": 25},
+		{"key": "盐城","count": 14},
+		{"key": "江苏省","count": 8},
+		{"key": "张家港市","count": 6},
+		{"key": "苏州","count": 6},
+		{"key": "泰州","count": 4},
+		{"key": "淮安","count": 3},
+		{"key": "启东市","count": 2},
+		{"key": "常州","count": 2},
+		{"key": "省级","count": 2},
+		{"key": "南昌市","count": 1},
+		{"key": "宿迁","count": 1},
+		{"key": "扬州","count": 1},
+		{"key": "昆山市","count": 1},
+		{"key": "深圳市","count": 1},
+		{"key": "浙江","count": 4401850,"aaabbb":"1"},
+		{"key": "杭州市","count": 992043},
+		{"key": "宁波市","count": 700214},
+		{"key": "温州市","count": 414879},
+		{"key": "绍兴市","count": 352198},
+		{"key": "金华市","count": 324588},
+		{"key": "台州市","count": 316565},
+		{"key": "嘉兴市","count": 310341},
+		{"key": "湖州市","count": 271288},
+		{"key": "衢州市","count": 201524},
+		{"key": "丽水市","count": 152489},
+		{"key": "舟山市","count": 107685},
+		{"key": "浙江省","count": 46},
+		{"key": "杭州","count": 11},
+		{"key": "舟山","count": 9},
+		{"key": "西安市","count": 9},
+		{"key": "湖州","count": 5},
+		{"key": "嘉兴","count": 4},
+		{"key": "温州","count": 4},
+		{"key": "市辖区","count": 3},
+		{"key": "宁波","count": 2},
+		{"key": "北京市","count": 1},
+		{"key": "台州","count": 1},
+		{"key": "金华","count": 1},
+		{"key": "河南","count": 3666362,"aaabbb":"1"},
+		{"key": "郑州市","count": 673491},
+		{"key": "洛阳市","count": 328491},
+		{"key": "新乡市","count": 237255},
+		{"key": "南阳市","count": 223247},
+		{"key": "安阳市","count": 218754},
+		{"key": "驻马店市","count": 217813},
+		{"key": "平顶山市","count": 186979},
+		{"key": "三门峡市","count": 167211},
+		{"key": "信阳市","count": 154336},
+		{"key": "商丘市","count": 153689},
+		{"key": "焦作市","count": 149721},
+		{"key": "周口市","count": 144066},
+		{"key": "许昌市","count": 135852},
+		{"key": "开封市","count": 118859},
+		{"key": "漯河市","count": 94887},
+		{"key": "濮阳市","count": 88297},
+		{"key": "鹤壁市","count": 76808},
+		{"key": "济源市","count": 43054},
+		{"key": "河南省直辖县","count": 863},
+		{"key": "安阳","count": 4},
+		{"key": "新乡","count": 4},
+		{"key": "开封","count": 3},
+		{"key": "焦作","count": 3},
+		{"key": "郑州","count": 3},
+		{"key": "商丘","count": 2},
+		{"key": "平顶山","count": 2},
+		{"key": "河南省","count": 2},
+		{"key": "北京市","count": 1},
+		{"key": "湖北","count": 3654839,"aaabbb":"1"},
+		{"key": "武汉市","count": 1258813},
+		{"key": "宜昌市","count": 279842},
+		{"key": "黄冈市","count": 254597},
+		{"key": "襄阳市","count": 193143},
+		{"key": "荆州市","count": 165337},
+		{"key": "十堰市","count": 161218},
+		{"key": "黄石市","count": 160628},
+		{"key": "荆门市","count": 149306},
+		{"key": "恩施土家族苗族自治州","count": 148460},
+		{"key": "孝感市","count": 135179},
+		{"key": "咸宁市","count": 89598},
+		{"key": "鄂州市","count": 66172},
+		{"key": "随州市","count": 65980},
+		{"key": "潜江市","count": 29670},
+		{"key": "仙桃市","count": 28311},
+		{"key": "天门市","count": 20242},
+		{"key": "神农架林区","count": 10130},
+		{"key": "湖北省直辖县","count": 2865},
+		{"key": "湖北省","count": 70},
+		{"key": "武汉","count": 65},
+		{"key": "宜昌","count": 18},
+		{"key": "常德市","count": 12},
+		{"key": "恩施市","count": 11},
+		{"key": "绍兴市","count": 5},
+		{"key": "恩施","count": 4},
+		{"key": "汉川市","count": 3},
+		{"key": "荆州","count": 3},
+		{"key": "北京市","count": 2},
+		{"key": "黄冈","count": 2},
+		{"key": "无锡","count": 1},
+		{"key": "四川","count": 3470092,"aaabbb":"1"},
+		{"key": "成都市","count": 1064778},
+		{"key": "绵阳市","count": 185539},
+		{"key": "宜宾市","count": 170502},
+		{"key": "凉山彝族自治州","count": 143691},
+		{"key": "泸州市","count": 135888},
+		{"key": "乐山市","count": 131874},
+		{"key": "广安市","count": 131567},
+		{"key": "德阳市","count": 129990},
+		{"key": "攀枝花市","count": 121624},
+		{"key": "阿坝藏族羌族自治州","count": 117478},
+		{"key": "南充市","count": 109340},
+		{"key": "达州市","count": 108798},
+		{"key": "内江市","count": 103166},
+		{"key": "遂宁市","count": 91889},
+		{"key": "雅安市","count": 88964},
+		{"key": "巴中市","count": 86702},
+		{"key": "眉山市","count": 80066},
+		{"key": "甘孜藏族自治州","count": 74544},
+		{"key": "广元市","count": 73446},
+		{"key": "自贡市","count": 69646},
+		{"key": "资阳市","count": 53426},
+		{"key": "赣州市","count": 15},
+		{"key": "泸州","count": 11},
+		{"key": "成都","count": 3},
+		{"key": "乐山","count": 2},
+		{"key": "内江","count": 2},
+		{"key": "四川省","count": 2},
+		{"key": "重庆市","count": 2},
+		{"key": "阿坝","count": 2},
+		{"key": " 阿坝藏族羌族自治州","count": 1},
+		{"key": "康定市","count": 1},
+		{"key": "达州","count": 1},
+		{"key": "河北","count": 3294115,"aaabbb":"1"},
+		{"key": "石家庄市","count": 543675},
+		{"key": "唐山市","count": 417066},
+		{"key": "保定市","count": 330757},
+		{"key": "邯郸市","count": 278732},
+		{"key": "张家口市","count": 267044},
+		{"key": "邢台市","count": 250413},
+		{"key": "沧州市","count": 240797},
+		{"key": "廊坊市","count": 193701},
+		{"key": "承德市","count": 168829},
+		{"key": "衡水市","count": 144723},
+		{"key": "秦皇岛市","count": 139254},
+		{"key": "雄安新区","count": 624},
+		{"key": "中国","count": 254},
+		{"key": "定州市","count": 238},
+		{"key": "辛集市","count": 176},
+		{"key": "河北省","count": 80},
+		{"key": "衡水","count": 35},
+		{"key": "保定","count": 22},
+		{"key": "天津市","count": 12},
+		{"key": "沧州","count": 8},
+		{"key": "北京市","count": 7},
+		{"key": "鄂尔多斯市","count": 7},
+		{"key": "通辽市","count": 5},
+		{"key": "宣化区","count": 4},
+		{"key": "阿克苏地区","count": 3},
+		{"key": "吕梁市","count": 2},
+		{"key": "曹妃甸区","count": 2},
+		{"key": "赤峰市","count": 2},
+		{"key": "兴安盟","count": 1},
+		{"key": "内蒙古自治区","count": 1},
+		{"key": "山西省","count": 1},
+		{"key": "晋中市","count": 1},
+		{"key": "景德镇市","count": 1},
+		{"key": "芜湖市","count": 1},
+		{"key": "锡林郭勒盟","count": 1},
+		{"key": "北京","count": 3124715,"aaabbb":"1"},
+		{"key": "北京市","count": 2845500},
+		{"key": "北京","count": 175},
+		{"key": "台湾省","count": 1},
+		{"key": "湖南","count": 3107662,"aaabbb":"1"},
+		{"key": "长沙市","count": 420310},
+		{"key": "常德市","count": 346770},
+		{"key": "衡阳市","count": 236878},
+		{"key": "岳阳市","count": 228627},
+		{"key": "株洲市","count": 216311},
+		{"key": "邵阳市","count": 211242},
+		{"key": "郴州市","count": 204226},
+		{"key": "永州市","count": 187618},
+		{"key": "湘潭市","count": 184341},
+		{"key": "娄底市","count": 160831},
+		{"key": "怀化市","count": 158138},
+		{"key": "益阳市","count": 153986},
+		{"key": "湘西土家族苗族自治州","count": 85236},
+		{"key": "张家界市","count": 68379},
+		{"key": "常德","count": 47},
+		{"key": "湖南省","count": 10},
+		{"key": "郴州","count": 7},
+		{"key": "长沙","count": 6},
+		{"key": "株洲","count": 5},
+		{"key": "岳阳","count": 4},
+		{"key": "北京市","count": 1},
+		{"key": "广西","count": 2763650,"aaabbb":"1"},
+		{"key": "南宁市","count": 577313},
+		{"key": "柳州市","count": 263512},
+		{"key": "桂林市","count": 226579},
+		{"key": "玉林市","count": 218418},
+		{"key": "百色市","count": 209251},
+		{"key": "河池市","count": 138393},
+		{"key": "梧州市","count": 127526},
+		{"key": "贵港市","count": 121144},
+		{"key": "贺州市","count": 118424},
+		{"key": "崇左市","count": 118201},
+		{"key": "钦州市","count": 113341},
+		{"key": "北海市","count": 108664},
+		{"key": "来宾市","count": 88909},
+		{"key": "防城港市","count": 72234},
+		{"key": "南宁","count": 22},
+		{"key": "柳州","count": 18},
+		{"key": "桂林","count": 13},
+		{"key": "崇左","count": 4},
+		{"key": "贵港","count": 3},
+		{"key": "北京市","count": 2},
+		{"key": "广西壮族自治区","count": 2},
+		{"key": "云南","count": 2170568,"aaabbb":"1"},
+		{"key": "昆明市","count": 629160},
+		{"key": "红河哈尼族彝族自治州","count": 167863},
+		{"key": "曲靖市","count": 136756},
+		{"key": "大理白族自治州","count": 127998},
+		{"key": "文山壮族苗族自治州","count": 116749},
+		{"key": "玉溪市","count": 109365},
+		{"key": "保山市","count": 100408},
+		{"key": "昭通市","count": 89061},
+		{"key": "楚雄彝族自治州","count": 88131},
+		{"key": "德宏傣族景颇族自治州","count": 77106},
+		{"key": "普洱市","count": 70504},
+		{"key": "临沧市","count": 64399},
+		{"key": "丽江市","count": 60618},
+		{"key": "西双版纳傣族自治州","count": 39556},
+		{"key": "怒江傈僳族自治州","count": 33019},
+		{"key": "迪庆藏族自治州","count": 27329},
+		{"key": "云南省","count": 18},
+		{"key": "昆明","count": 9},
+		{"key": "德宏市","count": 1},
+		{"key": "怒江","count": 1},
+		{"key": "红河州","count": 1},
+		{"key": "黔南布依族苗族自治州","count": 1},
+		{"key": "内蒙古","count": 2103716,"aaabbb":"1"},
+		{"key": "呼和浩特市","count": 328682},
+		{"key": "包头市","count": 317351},
+		{"key": "鄂尔多斯市","count": 235804},
+		{"key": "呼伦贝尔市","count": 221260},
+		{"key": "赤峰市","count": 181006},
+		{"key": "通辽市","count": 154464},
+		{"key": "锡林郭勒盟","count": 135571},
+		{"key": "乌兰察布市","count": 82661},
+		{"key": "巴彦淖尔市","count": 77601},
+		{"key": "乌海市","count": 77036},
+		{"key": "兴安盟","count": 57710},
+		{"key": "阿拉善盟","count": 43380},
+		{"key": "内蒙古自治区","count": 8},
+		{"key": "鄂尔多斯","count": 6},
+		{"key": "乌兰察布市本级","count": 2},
+		{"key": "巴彦淖尔","count": 2},
+		{"key": "丰镇市","count": 1},
+		{"key": "山西","count": 2096988,"aaabbb":"1"},
+		{"key": "太原市","count": 429754},
+		{"key": "运城市","count": 223795},
+		{"key": "长治市","count": 203082},
+		{"key": "大同市","count": 181022},
+		{"key": "临汾市","count": 158430},
+		{"key": "忻州市","count": 155193},
+		{"key": "晋中市","count": 142101},
+		{"key": "吕梁市","count": 126085},
+		{"key": "晋城市","count": 109804},
+		{"key": "阳泉市","count": 81033},
+		{"key": "朔州市","count": 77921},
+		{"key": "山西省","count": 16},
+		{"key": "运城","count": 8},
+		{"key": "河北省","count": 5},
+		{"key": "海南省","count": 4},
+		{"key": "综改示范区","count": 4},
+		{"key": "吕梁","count": 2},
+		{"key": "忻州","count": 2},
+		{"key": "应县","count": 1},
+		{"key": "福建","count": 2070469,"aaabbb":"1"},
+		{"key": "福州市","count": 564782},
+		{"key": "厦门市","count": 352850},
+		{"key": "漳州市","count": 225186},
+		{"key": "泉州市","count": 198332},
+		{"key": "南平市","count": 129467},
+		{"key": "龙岩市","count": 128762},
+		{"key": "宁德市","count": 127930},
+		{"key": "三明市","count": 114405},
+		{"key": "莆田市","count": 107855},
+		{"key": "包头市","count": 52},
+		{"key": "龙岩","count": 12},
+		{"key": "福州","count": 8},
+		{"key": "福建省","count": 4},
+		{"key": "宁德","count": 2},
+		{"key": "平潭综合实验区","count": 1},
+		{"key": "陕西","count": 1902928,"aaabbb":"1"},
+		{"key": "西安市","count": 675710},
+		{"key": "榆林市","count": 178579},
+		{"key": "延安市","count": 146406},
+		{"key": "咸阳市","count": 113056},
+		{"key": "宝鸡市","count": 111059},
+		{"key": "安康市","count": 106603},
+		{"key": "渭南市","count": 96026},
+		{"key": "汉中市","count": 86647},
+		{"key": "铜川市","count": 43244},
+		{"key": "商洛市","count": 39509},
+		{"key": "陕西省市","count": 1944},
+		{"key": "陕西省","count": 40},
+		{"key": "西安","count": 10},
+		{"key": "榆林","count": 2},
+		{"key": "北京市","count": 1},
+		{"key": "渭南","count": 1},
+		{"key": "辽宁","count": 1851028,"aaabbb":"1"},
+		{"key": "沈阳市","count": 556549},
+		{"key": "大连市","count": 328224},
+		{"key": "鞍山市","count": 127900},
+		{"key": "锦州市","count": 91088},
+		{"key": "朝阳市","count": 87185},
+		{"key": "阜新市","count": 74302},
+		{"key": "抚顺市","count": 74102},
+		{"key": "丹东市","count": 70618},
+		{"key": "营口市","count": 69206},
+		{"key": "葫芦岛市","count": 60550},
+		{"key": "铁岭市","count": 57758},
+		{"key": "盘锦市","count": 57059},
+		{"key": "辽阳市","count": 55859},
+		{"key": "本溪市","count": 41575},
+		{"key": "沈阳市铁西区","count": 20},
+		{"key": "沈阳","count": 9},
+		{"key": "凌源市","count": 4},
+		{"key": "沈阳市辽中区","count": 4},
+		{"key": "葫芦岛","count": 4},
+		{"key": "大连","count": 3},
+		{"key": "沈阳市沈河区","count": 2},
+		{"key": "沈阳市法库县","count": 2},
+		{"key": "沈阳市浑南区","count": 2},
+		{"key": "辽阳","count": 2},
+		{"key": "北京市","count": 1},
+		{"key": "沈阳市于洪区","count": 1},
+		{"key": "沈阳市和平区","count": 1},
+		{"key": "沈阳市康平县","count": 1},
+		{"key": "沈阳市新民市","count": 1},
+		{"key": "沈阳市皇姑区","count": 1},
+		{"key": "沈阳市经济技术开发区","count": 1},
+		{"key": "沈阳市自贸区","count": 1},
+		{"key": "深圳市","count": 1},
+		{"key": "鞍山","count": 1},
+		{"key": "天津","count": 1802752,"aaabbb":"1"},
+		{"key": "天津市","count": 1771141},
+		{"key": "天津","count": 67},
+		{"key": "市辖区","count": 2},
+		{"key": "江西","count": 1756655,"aaabbb":"1"},
+		{"key": "南昌市","count": 343937},
+		{"key": "赣州市","count": 321017},
+		{"key": "九江市","count": 170996},
+		{"key": "上饶市","count": 167291},
+		{"key": "吉安市","count": 114272},
+		{"key": "宜春市","count": 108016},
+		{"key": "抚州市","count": 96319},
+		{"key": "新余市","count": 69877},
+		{"key": "景德镇市","count": 54104},
+		{"key": "萍乡市","count": 52328},
+		{"key": "鹰潭市","count": 46340},
+		{"key": "赣州","count": 8},
+		{"key": "南昌","count": 6},
+		{"key": "jx_srsqsxrmzfw_zt_ggzyjyzx","count": 2},
+		{"key": "江西省","count": 2},
+		{"key": "吉安","count": 1},
+		{"key": "宜春","count": 1},
+		{"key": "上海","count": 1743476,"aaabbb":"1"},
+		{"key": "上海市","count": 1704903},
+		{"key": "上海","count": 20},
+		{"key": "甘肃","count": 1617088,"aaabbb":"1"},
+		{"key": "兰州市","count": 361451},
+		{"key": "酒泉市","count": 135240},
+		{"key": "临夏回族自治州","count": 131968},
+		{"key": "天水市","count": 114734},
+		{"key": "张掖市","count": 109374},
+		{"key": "平凉市","count": 108370},
+		{"key": "庆阳市","count": 90630},
+		{"key": "白银市","count": 82210},
+		{"key": "陇南市","count": 76131},
+		{"key": "武威市","count": 75513},
+		{"key": "定西市","count": 71037},
+		{"key": "甘南藏族自治州","count": 56897},
+		{"key": "嘉峪关市","count": 40115},
+		{"key": "金昌市","count": 27609},
+		{"key": "张掖","count": 15},
+		{"key": "甘肃省","count": 6},
+		{"key": "厦门市","count": 3},
+		{"key": "北京市","count": 1},
+		{"key": "西安","count": 1},
+		{"key": "新疆","count": 1610315,"aaabbb":"1"},
+		{"key": "乌鲁木齐市","count": 323937},
+		{"key": "喀什地区","count": 167416},
+		{"key": "巴音郭楞蒙古自治州","count": 144437},
+		{"key": "阿克苏地区","count": 119623},
+		{"key": "昌吉回族自治州","count": 106320},
+		{"key": "伊犁哈萨克自治州","count": 86560},
+		{"key": "阿勒泰地区","count": 79443},
+		{"key": "克拉玛依市","count": 60455},
+		{"key": "塔城地区","count": 59067},
+		{"key": "和田地区","count": 55855},
+		{"key": "哈密市","count": 50247},
+		{"key": "克孜勒苏柯尔克孜自治州","count": 34835},
+		{"key": "博尔塔拉蒙古自治州","count": 33795},
+		{"key": "石河子市","count": 33203},
+		{"key": "吐鲁番市","count": 28939},
+		{"key": "阿拉尔市","count": 19590},
+		{"key": "五家渠市","count": 8152},
+		{"key": "图木舒克市","count": 8006},
+		{"key": "铁门关市","count": 7600},
+		{"key": "新疆自治区","count": 4025},
+		{"key": "哈密地区","count": 1796},
+		{"key": "北屯市","count": 1360},
+		{"key": "双河市","count": 1238},
+		{"key": "阿克苏地区市","count": 1081},
+		{"key": "新疆自治区直辖县","count": 1020},
+		{"key": "昆玉市","count": 943},
+		{"key": "可克达拉市","count": 920},
+		{"key": "库车市","count": 455},
+		{"key": "胡杨河市","count": 35},
+		{"key": "北京市","count": 5},
+		{"key": "自治区直辖县级行政区划","count": 3},
+		{"key": "伊犁州市","count": 1},
+		{"key": "和田","count": 1},
+		{"key": "重庆","count": 1459563,"aaabbb":"1"},
+		{"key": "重庆市","count": 1436528},
+		{"key": "彭水县","count": 94},
+		{"key": "垫江县","count": 16},
+		{"key": "重庆","count": 9},
+		{"key": "石柱土家族自治县","count": 7},
+		{"key": "丰都县","count": 5},
+		{"key": "巫溪县","count": 5},
+		{"key": "城口县","count": 3},
+		{"key": "奉节县","count": 2},
+		{"key": "云阳县","count": 1},
+		{"key": "巫山县","count": 1},
+		{"key": "忠县","count": 1},
+		{"key": "秀山土家族苗族自治县","count": 1},
+		{"key": "贵州","count": 1448229,"aaabbb":"1"},
+		{"key": "贵阳市","count": 331903},
+		{"key": "遵义市","count": 189588},
+		{"key": "黔南布依族苗族自治州","count": 147396},
+		{"key": "黔东南苗族侗族自治州","count": 138726},
+		{"key": "毕节市","count": 132889},
+		{"key": "六盘水市","count": 98443},
+		{"key": "铜仁市","count": 88046},
+		{"key": "黔西南布依族苗族自治州","count": 83106},
+		{"key": "安顺市","count": 73824},
+		{"key": "贵州市","count": 2659},
+		{"key": "凯里市","count": 24},
+		{"key": " 黔西南布依族苗族自治州","count": 11},
+		{"key": "贵州省","count": 8},
+		{"key": "黑龙江","count": 1164337,"aaabbb":"1"},
+		{"key": "哈尔滨市","count": 377749},
+		{"key": "大庆市","count": 149320},
+		{"key": "齐齐哈尔市","count": 91197},
+		{"key": "牡丹江市","count": 69058},
+		{"key": "佳木斯市","count": 62370},
+		{"key": "绥化市","count": 61667},
+		{"key": "鸡西市","count": 59334},
+		{"key": "七台河市","count": 44406},
+		{"key": "鹤岗市","count": 43695},
+		{"key": "黑河市","count": 42376},
+		{"key": "双鸭山市","count": 40651},
+		{"key": "伊春市","count": 32857},
+		{"key": "大兴安岭地区","count": 16792},
+		{"key": "大兴安岭市","count": 15},
+		{"key": "哈尔滨","count": 7},
+		{"key": "黑龙江省","count": 6},
+		{"key": "绥化","count": 5},
+		{"key": "农垦总局市","count": 3},
+		{"key": "双鸭山","count": 2},
+		{"key": "大庆","count": 2},
+		{"key": "牡丹江","count": 1},
+		{"key": "吉林","count": 954260,"aaabbb":"1"},
+		{"key": "长春市","count": 339720},
+		{"key": "吉林市","count": 126511},
+		{"key": "通化市","count": 68217},
+		{"key": "延边朝鲜族自治州","count": 63886},
+		{"key": "松原市","count": 62519},
+		{"key": "白城市","count": 60969},
+		{"key": "白山市","count": 55340},
+		{"key": "四平市","count": 53381},
+		{"key": "辽源市","count": 36715},
+		{"key": "吉林","count": 16},
+		{"key": "白城","count": 4},
+		{"key": "吉林省","count": 2},
+		{"key": "延边州","count": 2},
+		{"key": "延吉","count": 1},
+		{"key": "松原","count": 1},
+		{"key": "辽源","count": 1},
+		{"key": "海南","count": 720772,"aaabbb":"1"},
+		{"key": "海口市","count": 179605},
+		{"key": "东方市","count": 98845},
+		{"key": "三亚市","count": 77256},
+		{"key": "儋州市","count": 31381},
+		{"key": "文昌市","count": 26727},
+		{"key": "琼海市","count": 18232},
+		{"key": "陵水黎族自治县","count": 17549},
+		{"key": "白沙黎族自治县","count": 15966},
+		{"key": "乐东黎族自治县","count": 15217},
+		{"key": "万宁市","count": 14035},
+		{"key": "临高县","count": 13624},
+		{"key": "昌江黎族自治县","count": 13506},
+		{"key": "澄迈县","count": 13403},
+		{"key": "五指山市","count": 13253},
+		{"key": "定安县","count": 10738},
+		{"key": "琼中黎族苗族自治县","count": 9320},
+		{"key": "保亭黎族苗族自治县","count": 8862},
+		{"key": "屯昌县","count": 8232},
+		{"key": "三沙市","count": 6276},
+		{"key": "海南省直辖县","count": 2383},
+		{"key": "海南省","count": 168},
+		{"key": "长沙","count": 40},
+		{"key": "海口","count": 6},
+		{"key": "青海","count": 577879,"aaabbb":"1"},
+		{"key": "西宁市","count": 198423},
+		{"key": "海西蒙古族藏族自治州","count": 68038},
+		{"key": "海东市","count": 61490},
+		{"key": "海南藏族自治州","count": 45547},
+		{"key": "玉树藏族自治州","count": 36160},
+		{"key": "海北藏族自治州","count": 32598},
+		{"key": "黄南藏族自治州","count": 29613},
+		{"key": "果洛藏族自治州","count": 29166},
+		{"key": "海西州","count": 427},
+		{"key": "北京市","count": 2},
+		{"key": "宁夏","count": 568655,"aaabbb":"1"},
+		{"key": "银川市","count": 214652},
+		{"key": "吴忠市","count": 94042},
+		{"key": "固原市","count": 58146},
+		{"key": "中卫市","count": 49298},
+		{"key": "石嘴山市","count": 40393},
+		{"key": "宁夏回族自治区","count": 4},
+		{"key": "固原","count": 2},
+		{"key": "北京市","count": 1},
+		{"key": "西藏","count": 237494,"aaabbb":"1"},
+		{"key": "拉萨市","count": 63551},
+		{"key": "日喀则市","count": 43698},
+		{"key": "林芝市","count": 24358},
+		{"key": "昌都市","count": 23398},
+		{"key": "山南市","count": 21746},
+		{"key": "那曲市","count": 21672},
+		{"key": "阿里地区","count": 13523},
+		{"key": "日喀则","count": 15},
+		{"key": "昌都","count": 9},
+		{"key": "那曲","count": 8},
+		{"key": "山南","count": 6},
+		{"key": "拉萨","count": 3},
+		{"key": "阿里","count": 2},
+		{"key": "香港","count": 534,"aaabbb":"1"},
+		{"key": "香港岛","count": 7},
+		{"key": "新界区","count": 2},
+		{"key": "澳门","count": 211,"aaabbb":"1"},
+		{"key": "澳门半岛","count": 2},
+		{"key": "台湾","count": 126,"aaabbb":"1"},
+		{"key": "河北省","count": 22,"aaabbb":"1"},
+		{"key": "唐山市","count": 16},
+		{"key": "邯郸市","count": 2},
+		{"key": "石家庄市","count": 1},
+		{"key": "广东省","count": 21,"aaabbb":"1"},
+		{"key": "佛山市","count": 7},
+		{"key": "湛江市","count": 3},
+		{"key": "广州市","count": 2},
+		{"key": "韶关市","count": 2},
+		{"key": "中山市","count": 1},
+		{"key": "揭阳市","count": 1},
+		{"key": "汕尾市","count": 1},
+		{"key": "深圳市","count": 1},
+		{"key": "潮州市","count": 1},
+		{"key": "山东省","count": 18,"aaabbb":"1"},
+		{"key": "济宁市","count": 11},
+		{"key": "威海市","count": 2},
+		{"key": "临沂市","count": 1},
+		{"key": "泰安市","count": 1},
+		{"key": "潍坊市","count": 1},
+		{"key": "青岛市","count": 1},
+		{"key": "江苏省","count": 17,"aaabbb":"1"},
+		{"key": "苏州市","count": 6},
+		{"key": "扬州市","count": 5},
+		{"key": "南京市","count": 1},
+		{"key": "南通市","count": 1},
+		{"key": "泰州市","count": 1},
+		{"key": "石家庄市","count": 1},
+		{"key": "河南省","count": 14,"aaabbb":"1"},
+		{"key": "郑州市","count": 5},
+		{"key": "三门峡市","count": 2},
+		{"key": "信阳市","count": 2},
+		{"key": "商丘市","count": 1},
+		{"key": "济源市","count": 1},
+		{"key": "濮阳市","count": 1},
+		{"key": "驻马店市","count": 1},
+		{"key": "安徽省","count": 11,"aaabbb":"1"},
+		{"key": "安庆市","count": 3},
+		{"key": "滁州市","count": 2},
+		{"key": "芜湖市","count": 2},
+		{"key": "合肥市","count": 1},
+		{"key": "池州市","count": 1},
+		{"key": "蚌埠市","count": 1},
+		{"key": "甘肃省","count": 9,"aaabbb":"1"},
+		{"key": "平凉市","count": 3},
+		{"key": "甘南藏族自治州","count": 2},
+		{"key": "酒泉市","count": 2},
+		{"key": "庆阳市","count": 1},
+		{"key": "白银市","count": 1},
+		{"key": "陕西省","count": 9,"aaabbb":"1"},
+		{"key": "榆林市","count": 3},
+		{"key": "西安市","count": 2},
+		{"key": "宝鸡市","count": 1},
+		{"key": "延安市","count": 1},
+		{"key": "汉中市","count": 1},
+		{"key": "辽宁省","count": 8,"aaabbb":"1"},
+		{"key": "辽阳市","count": 3},
+		{"key": "朝阳市","count": 2},
+		{"key": "本溪市","count": 2},
+		{"key": "葫芦岛市","count": 1},
+		{"key": "吉林省","count": 7,"aaabbb":"1"},
+		{"key": "松原市","count": 2},
+		{"key": "通化市","count": 2},
+		{"key": "长春市","count": 2},
+		{"key": "吉林市","count": 1},
+		{"key": "四川省","count": 7,"aaabbb":"1"},
+		{"key": "内江市","count": 2},
+		{"key": "达州市","count": 2},
+		{"key": "巴中市","count": 1},
+		{"key": "广安市","count": 1},
+		{"key": "成都市","count": 1},
+		{"key": "浙江省","count": 7,"aaabbb":"1"},
+		{"key": "温州市","count": 3},
+		{"key": "嘉兴市","count": 1},
+		{"key": "成都市","count": 1},
+		{"key": "衢州市","count": 1},
+		{"key": "铜陵市","count": 1},
+		{"key": "山西省","count": 6,"aaabbb":"1"},
+		{"key": "晋中市","count": 2},
+		{"key": "太原市","count": 1},
+		{"key": "忻州市","count": 1},
+		{"key": "晋城市","count": 1},
+		{"key": "运城市","count": 1},
+		{"key": "江西省","count": 6,"aaabbb":"1"},
+		{"key": "萍乡市","count": 3},
+		{"key": "南昌市","count": 1},
+		{"key": "宜春市","count": 1},
+		{"key": "赣州市","count": 1},
+		{"key": "湖南省","count": 6,"aaabbb":"1"},
+		{"key": "益阳市","count": 2},
+		{"key": "长沙市","count": 2},
+		{"key": "常德市","count": 1},
+		{"key": "福建省","count": 6,"aaabbb":"1"},
+		{"key": "厦门市","count": 2},
+		{"key": "漳州市","count": 2},
+		{"key": "南平市","count": 1},
+		{"key": "宁德市","count": 1},
+		{"key": "北京市","count": 5,"aaabbb":"1"},
+		{"key": "北京市","count": 5},
+		{"key": "湖北省","count": 5,"aaabbb":"1"},
+		{"key": "宜昌市","count": 2},
+		{"key": "武汉市","count": 2},
+		{"key": "荆门市","count": 1},
+		{"key": "贵州省","count": 5,"aaabbb":"1"},
+		{"key": "铜仁市","count": 1},
+		{"key": "重庆市","count": 5,"aaabbb":"1"},
+		{"key": "重庆市","count": 5},
+		{"key": "云南省","count": 3,"aaabbb":"1"},
+		{"key": "保山市","count": 1},
+		{"key": "大理白族自治州","count": 1},
+		{"key": "玉溪市","count": 1},
+		{"key": "海南省","count": 3,"aaabbb":"1"},
+		{"key": "海口市","count": 1},
+		{"key": "黑龙江省","count": 2,"aaabbb":"1"},
+		{"key": "哈尔滨市","count": 1},
+		{"key": "绥化市","count": 1},
+	}
+
+	all_data := make(map[string]map[string]string,0)
+	data := make(map[string]string,0)
+	area := ""
+	for _,v := range arr  {
+		tmp := *qu.ObjToMap(v)
+		isArea := qu.IntAll(tmp["aaabbb"])
+		if isArea>0 {
+			if len(data)>0 {
+				all_data[area] = data
+			}
+			data = make(map[string]string,0)
+			area = qu.ObjToString(tmp["key"])
+		}else {
+			key := qu.ObjToString(tmp["key"])
+			count := qu.IntAll(tmp["count"])
+			if count<10000 {
+				data[key] = ""
+			}
+		}
+	}
+	total := int64(0)
+	for area,cityArr := range all_data{
+		for city,_ :=range cityArr{
+			cursor, err := esclient.Scan("bidding_v1").Query(es_elastic.NewBoolQuery().Must(es_elastic.NewTermQuery("area", area), es_elastic.NewTermQuery("city", city))).
+				Size(200).Do()
+			if err != nil {
+				log.Debug("cursor",err)
+			}
+			if cursor.Results == nil {
+				log.Debug("results != nil; got nil")
+			}
+			if cursor.Results.Hits == nil {
+				log.Debug("expected results.Hits != nil; got nil")
+			}
+			total+=cursor.TotalHits()
+			log.Debug("当前查询正常数:",cursor.TotalHits(),"总数:",total)
+
+			//多线程 - 处理数据
+			pool_es := make(chan bool, 5)
+			wg_es := &sync.WaitGroup{}
+			pages,numDocs := 0,0
+			for {
+				searchResult, err := cursor.Next()
+				if err != nil {
+					if err.Error() == "EOS" {
+						break
+					}else {
+						log.Debug("cursor searchResult",err)
+					}
+				}
+				pages++
+				isLog := false
+				for _, hit := range searchResult.Hits.Hits {
+					tmp := make(map[string]interface{})
+					err := json.Unmarshal(*hit.Source, &tmp)
+					if err != nil {
+						log.Debug("json Unmarshal error")
+						continue
+					}
+					if !isLog && numDocs%10000==0 {
+						//log.Debug("当前条数:", numDocs, "Es数据:", tmp["_id"])
+						isLog = true
+					}
+
+					numDocs++
+					area := qu.ObjToString(tmp["area"])
+					city := qu.ObjToString(tmp["city"])
+					district := qu.ObjToString(tmp["district"])
+					tmpid := qu.ObjToString(tmp["_id"])
+					pool_es <- true
+					wg_es.Add(1)
+					go func(area string ,city string, district string ,tmpid string ) {
+						defer func() {
+							<-pool_es
+							wg_es.Done()
+						}()
+						if city!=""||district!="" {
+							save_mgo.Save("zktest_erracd_data", map[string]interface{}{
+								"_id":StringTOBsonId(tmpid),
+								"area":area,
+								"city":city,
+								"district":district,
+							})
+						}
+					}(area,city, district,tmpid)
+				}
+			}
+			wg_es.Wait()
+		}
+	}
+
+
+	log.Debug("is all over :",total)
+
+}
+
+
+//导出差额数据--省市区 bidding 与 85
+func exportErrAreaCityDistrictData()  {
 
+	//导出相关-分包数据-ck!=1 , 包含,
+	sess := python_mgo.GetMgoConn()
+	defer python_mgo.DestoryMongoConn(sess)
+	q,total,iserr:=map[string]interface{}{},0,0
+	is_pool := make(chan bool, 20)
+	is_wg := &sync.WaitGroup{}
+	//repair_acd_data
+	it := sess.DB(python_mgo.DbName).C("bidding_back").Find(&q).Select(map[string]interface{}{
+		"area":1,
+		"city":1,
+		"district":1,
+		"extracttype":1,
+	}).Iter()
+	for tmp := make(map[string]interface{}); it.Next(&tmp);total++{
+		if total%10000==0 {
+			log.Debug("index",total,iserr,tmp["_id"])
+		}
+		extracttype := qu.IntAll(tmp["extracttype"])
+		if extracttype==-1 {
+			tmp = make(map[string]interface{})
+			continue
+		}
+		//开线程-去校验
+		is_pool <- true
+		is_wg.Add(1)
+		go func(tmp map[string]interface{}) {
+			defer func() {
+				<-is_pool
+				is_wg.Done()
+			}()
+			//更新-
+			area_old := qu.ObjToString(tmp["area"])
+			city_old := qu.ObjToString(tmp["city"])
+			district_old := qu.ObjToString(tmp["district"])
+			tmpid := BsonTOStringId(tmp["_id"])
 
+			data := save_mgo.FindById("result_20210108",tmpid)
+			if data!=nil && len(data)>2 {
+				new_area := qu.ObjToString(data["area"])
+				new_city := qu.ObjToString(data["city"])
+				new_district := qu.ObjToString(data["district"])
+				if area_old!=new_area || city_old!=new_city|| district_old!=new_district {
+					iserr++
+					save_mgo.Save("zktest_acd_data",tmp)
+				}
+			}
+		}(tmp)
+		tmp = make(map[string]interface{})
+	}
+	log.Debug("is over ",total,iserr)
+}
+
+
+
+
+//导出-长度数据
+func exportBuyerWinnerLengthData()  {
+	sess := save_mgo.GetMgoConn()
+	defer save_mgo.DestoryMongoConn(sess)
+	q,total,isok:=map[string]interface{}{
+		"_id": map[string]interface{}{
+			"$gte":  StringTOBsonId("610573800000000000000000"),
+		},
+	},0,0
+	it := sess.DB(save_mgo.DbName).C("result_20210108").Find(&q).Iter()
+	for tmp := make(map[string]interface{}); it.Next(&tmp);total++{
+		if total%10000==0 {
+			log.Debug("current index",total,tmp["_id"])
+		}
+		repeat := qu.IntAll(tmp["repeat"])
+		if repeat>0 {
+			tmp = make(map[string]interface{})
+			continue
+		}
+		buyer:= qu.ObjToString(tmp["buyer"])
+		winner:=qu.ObjToString(tmp["winner"])
+		if (utf8.RuneCountInString(buyer) < 5 && buyer!="")||
+			(utf8.RuneCountInString(winner)<5 && winner!=""){
+			isok++
+		}
+		tmp = make(map[string]interface{})
+	}
+	log.Debug("export unit is over",total,isok)
+}
+
+
+//导出新城市数据
+func exportNewCKPackageData()  {
+	//导出相关-分包数据-ck!=1 , 包含,
+	sess := save_mgo.GetMgoConn()
+	defer save_mgo.DestoryMongoConn(sess)
+	q,total:=map[string]interface{}{
+		"ck_s_winner":map[string]interface{}{
+			"$ne":1,
+		},
+	},0
+	isok:=0
+	it := sess.DB(save_mgo.DbName).C("zktest_package_data").Find(&q).Select(map[string]interface{}{
+		"s_winner":1,
+		"href":1,
+	}).Iter()
+	for tmp := make(map[string]interface{}); it.Next(&tmp);total++{
+		s_winner := qu.ObjToString(tmp["s_winner"])
+		if strings.Contains(s_winner,",") {
+			data :=save_mgo.FindById("zktest_package_data_old",BsonTOStringId(tmp["_id"]))
+			old_s_winner := qu.ObjToString(data["s_winner"])
+			if old_s_winner!=s_winner {
+				dict :=tmp
+				jyhref  := fmt.Sprintf(Url, qu.CommonEncodeArticle("content", BsonTOStringId(tmp["_id"])))
+				dict["jyhref"] = jyhref
+				dict["old_s_winner"] = old_s_winner
+				save_mgo.Save("111222",dict)
+			}
+		}
+		tmp = make(map[string]interface{})
+	}
+
+	log.Debug("is over ",total,isok)
+}
 
 
 

+ 0 - 1
src/jy/extract/extpackage.go

@@ -142,7 +142,6 @@ func PackageDetail(j *ju.Job, e *ExtractTask, isSite bool, codeSite string) {
 						j.BlockPackage[kk] = vv
 					}
 				}
-
 			}
 			for _, ev := range e.PkgRuleCores {
 				for _, eve := range ev.RuleCores {

+ 11 - 4
src/jy/extract/extract.go

@@ -1876,6 +1876,9 @@ type FieldValue struct {
 }
 
 var clearWinnerReg = regexp.MustCompile("名称|施工|拟定供应商名称|:|:")
+var unPackageWinnerReg = regexp.MustCompile("(重新招标)")
+
+
 
 //分析抽取结果并保存
 func AnalysisSaveResult(j, jf *ju.Job, e *ExtractTask) {
@@ -2082,12 +2085,16 @@ func AnalysisSaveResult(j, jf *ju.Job, e *ExtractTask) {
 			//s_winner逗号分隔拼接,分包中标人
 			sort.Strings(tmpstr)
 			for _, v := range tmpstr {
-				svvvv := qu.ObjToString(j.PackageInfo[v]["winner"])
-				savevvv := clearWinnerReg.ReplaceAllString(svvvv, "")
-				if savevvv == "" {
+				winner := qu.ObjToString(j.PackageInfo[v]["winner"])
+				new_winner := clearWinnerReg.ReplaceAllString(winner, "")
+				if new_winner == "" {
+					continue
+				}
+				//名称黑名单
+				if unPackageWinnerReg.MatchString(new_winner)  {
 					continue
 				}
-				savewinner = append(savewinner, savevvv)
+				savewinner = append(savewinner, new_winner)
 			}
 			if (savewinner == nil || len(savewinner) == 0) && tmp["winner"] != nil {
 				tmp["s_winner"] = tmp["winner"]

+ 11 - 2
src/jy/pretreated/analystep.go

@@ -24,6 +24,10 @@ var formattext = regexp.MustCompile("(投标总价)([0-9,.万元]*)")
 var formattext2 = regexp.MustCompile("中标单价.*(中标总价.*)")
 var formattext3 = regexp.MustCompile("(同类项目业绩、|[1-9].[0-9]包段划分)")
 
+//特别处理-表格数据
+var tablePackageWinnerReg = regexp.MustCompile("[\n]?(成交侯选人|第一中标候选人)[::](.{4,15}(公司|厂))")
+
+
 func AnalyStart(job *util.Job, isSite bool, codeSite string) {
 	con := job.Content
 	//全文的需要修复表格
@@ -57,7 +61,6 @@ func AnalyStart(job *util.Job, isSite bool, codeSite string) {
 			job.BlockPackage = FindPackageFromBlocks(&blockArrays, isSite, codeSite) //从块里面找分包
 		}
 		for _, bl := range blockArrays {
-			//log.Println(bl.Text)
 			if len([]rune(bl.Text)) > 80 {
 				bl.Block, _ = DivideBlock(job.CategorySecond, bl.Text, 1, job.RuleBlock, isSite, codeSite)
 				for _, bl_bl := range bl.Block {
@@ -65,6 +68,7 @@ func AnalyStart(job *util.Job, isSite bool, codeSite string) {
 				}
 			}
 			FindProjectCode(bl.Text, job) //匹配项目编号
+			//表格找分包相关---
 			processTableInBlock(bl, job, isSite, codeSite) //处理表格
 
 			//新加 未分块table中未能解析到中标候选人,从正文中解析
@@ -135,7 +139,7 @@ func processTableInBlock(bl *util.Block, job *util.Job, isSite bool, codeSite st
 	for i, tab := range tabs {
 		job.HasTable = 1
 		tmptag := ""
-		if i == 0 && bl.Title != "" && len(bl.Title) < 20 {
+		if i == 0 && bl.Title != "" && bl.Title!="评标情况" && len(bl.Title) < 20 {
 			tmptag = bl.Title
 		} else if tab.Nodes[0] != nil && tab.Nodes[0].PrevSibling != nil {
 			tmptag = strings.TrimSpace(tab.Nodes[0].PrevSibling.Data)
@@ -342,6 +346,11 @@ func processTableResult(tabres *TableResult, block *util.Block, job *util.Job, i
 		for tk, tv := range tablePackage {
 			bv := job.BlockPackage[tk]
 			if bv == nil {
+				//特别处理...针对性处理
+				res := tablePackageWinnerReg.FindAllStringSubmatch(tv.Text, -1)
+				if len(res) > 0 {
+					tv.Winner = res[0][2]
+				}
 				pkgMap[tk] = tv
 				continue
 			}

+ 9 - 4
src/jy/pretreated/analytable.go

@@ -47,13 +47,14 @@ var (
 	//在判断分包打分前过虑表格key
 	FilterKey_2 = regexp.MustCompile("招标|投标|项目")
 	//根据表格的key进行分包打分
-	FindKey_2 = regexp.MustCompile("([分子][包标](号)?|标[号项段包](划分)?|包件?[号段名数]|包组)")
+	FindKey_2 = regexp.MustCompile("([分子][包标](号)?|标[号项段包](划分)?|包件?[号段名数]|包[件])")
 	FindKey_3 = regexp.MustCompile("(标段编号|标包)")
 	//对值进行分包判断
 	FindVal_1  = regexp.MustCompile("[第]?([一二三四五六七八九十0-9A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ]+)((子|合同|分|施工|监理)?(标段?|包|合同段|标包))|((子|合同|分|施工|监理)?(标|包)(段|号)?)[  \u3000\u2003\u00a0]*([一二三四五六七八九十0-9A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ]+)")
 	FindVal2_1 = regexp.MustCompile("([一二三四五六七八九十0-9A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ\\-]+)|^(设计|施工|监理|验收)[分子]?[标包]?[段号]?$")
-	//判断分包前排除
-	excludeKey  = regexp.MustCompile("(标识|数量|分包个数|标段代码|涉及包号|分包数量|包件号?|项目标号|规格|型号|招标范围|业绩|废标|标段选择要求)|(^编号$)|([^包段标]编号)") //编号|划分
+
+	//判断分包前排除  包件号?
+	excludeKey  = regexp.MustCompile("(标识|数量|分包个数|标段代码|涉及包号|分包数量|项目标号|规格|型号|招标范围|业绩|废标|标段选择要求)|(^编号$)|([^包段标]编号)") //编号|划分
 	excludeKey2 = regexp.MustCompile("包/[0-9]{0,4}[箱纸张]")
 	excludeKey3 = regexp.MustCompile("(分包个数|每包[0-9]*元|标线|国标|享受一包服务)")
 	//-------------
@@ -2426,7 +2427,11 @@ func foundPacBySortKV(tn *Table, val int, index []string, index_pos []int, keyEx
 					}
 				}
 			}
-			break
+			if k1=="标段" && len(index)==0 {
+				continue
+			}else {
+				break
+			}
 		}
 	}
 	return val, index, index_pos

+ 46 - 1
src/jy/pretreated/division.go

@@ -94,6 +94,21 @@ var (
 		"20843_12289": true,
 		"20061_46":    true,
 	}
+
+	//非分包中标单位值
+ 	unPackageWinnerReg = regexp.MustCompile("(重新招标)")
+	conformWinnerKVReg = regexp.MustCompile("^(中标人|中标银行|第一名)[::](.{4,20}(分行|公司))")
+	conformWinnerKVReg1 = regexp.MustCompile("^[-].{4,15}公司$")
+	conformWinnerKVReg2 = regexp.MustCompile("(.*)?确定(.*公司)为中标人(.*)?")
+
+    conformWinnerTextReg3 = regexp.MustCompile("拟定供应商信息[::\\s]+名称[::](.*)[\\s]+地址")
+
+
+	/*
+	拟定供应商信息:
+	名称:郑州人民广播电台
+	地址:郑州市金水区内环路17号A座。
+	*/
 )
 
 //分块
@@ -644,7 +659,37 @@ func findWinnerBugetBidmountByKv(v *util.BlockPackage, blockPackage map[string]*
 					}
 				}
 			} else if (kc == "中标单位"||kc=="各包中标/成交候选供应商及报价") && v.Winner == "" {
-				blockPackage[k].Winner = cv[0].Value
+				if !unPackageWinnerReg.MatchString(cv[0].Value) {
+					blockPackage[k].Winner = cv[0].Value
+				}
+			}else { //特殊情况-特殊处理
+				res := conformWinnerKVReg.FindAllStringSubmatch(cv[0].Value, -1)
+				if len(res) > 0 {
+					text := res[0][2]
+					if text!="" {
+						blockPackage[k].Winner = text
+						continue
+					}
+				}
+				if kc=="中标信息" && conformWinnerKVReg1.MatchString(cv[0].Value){
+					blockPackage[k].Winner = cv[0].Value
+					continue
+				}
+				if conformWinnerKVReg2.MatchString(cv[0].Value) {
+					blockPackage[k].Winner = conformWinnerKVReg2.ReplaceAllString(cv[0].Value,"${2}")
+					continue
+				}
+
+				//全文找
+				res = conformWinnerTextReg3.FindAllStringSubmatch(v.Text, -1)
+				if len(res) > 0 {
+					text := res[0][1]
+					if text!="" {
+						blockPackage[k].Winner = text
+						continue
+					}
+				}
+
 			}
 		}
 	}

+ 24 - 27
src/jy/pretreated/multipackage.go

@@ -18,10 +18,11 @@ var (
 	//替换容易混淆的词
 	PreCon  = regexp.MustCompile("([\r\n]|^)[\u3000\u2003\u00a0\\s]*(^标项)(\\d\\.)+\\d|[一二三四五1-9、.]+[  \u3000\u2003\u00a0]*((标段|分包)(划分|情况)|(标书))|([上下]一[条页篇][::]?[^,,。\\n]{0,120}|备注[::][^\\n]{0,120}|业绩[::][^\\n,。,]{0,80}|三包(手册|服务|政策|凭证|期|标准|规定|责任|要求|售后)|(要求|提供|质量|国家|享受|负责|实行|执行|承诺|门前|法定|规定).{0,6}三包|“三包”|\\d+万?([个套只支分名][^标包])|[?]|[((]请?注意[::][^((]+[))])")
 	PreCon2 = regexp.MustCompile("[评中开定]\\s?标\\s?[0-9一二三四五六七八九十]+|标[准尺高书注]|[^中]标价|[开鼠投招军指企目]标|包[括含装为内]|[承树]包|CA证书|地点[::].*标|.{30,}合同段")
-	//替换容易混淆的词
-	PreCon1 = regexp.MustCompile("(施工)*([一二三四五六七八九十0-9A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ\\-]+标段)")
+	PreCon3 = regexp.MustCompile("(标段[一二三四五六七八九十0-9A-Za-z])[((].*[))][::]")
+
+
 	//提取分包标识
-	MultiReg = regexp.MustCompile("(([一二三四五六七八九十0-9A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ\\-])+(包|标段|分标))[::]?|(?:^|\\n)([一二三四五六七八九十0-9A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ\\-]+(包))|([第]?([一二三四五六七八九十0-9A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ\\-]+)#?((子|合同|分|施工|监理)?(标段?|合同段|标包)))|(((子|分|合同|施工|监理|标包|标|包)(标|包段|项|组)?)[     ]*([一二三四五六七八九十0-9A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ\\-]+))[::]?|(子项目[0-9]+)|(包组)[::\\s]+?([一二三四五六七八九十0-9A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ\\-]+)")
+	MultiReg = regexp.MustCompile("(([一二三四五六七八九十0-9A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ\\-])+(包|标段|分标))[::]?|(?:^|\\n)([一二三四五六七八九十0-9A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ\\-]+(包))|([第]?([一二三四五六七八九十0-9A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ\\-]+)#?((子|合同|分|施工|监理)?(标段?|合同段|标包)))|(((子|分|合同|施工|监理|标包|标|包)(标|包段|项|段|组)?)[     ]*([一二三四五六七八九十0-9A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ\\-]+))[::]?|((项目)([一二三四五六七八九十A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ]+))|(包组|包件)[::\\s]+?([一二三四五六七八九十0-9A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ\\-]+)|((施工|监理)(标段))[::\n]")
 	PreCon4 = regexp.MustCompile("([一二三四五六七八九十]标段[::¥0-9.]*(万元)?)[、]?")
 	Precon4dw = regexp.MustCompile("(万元|元)")
 	//匹配到的包格式分类统计
@@ -50,52 +51,48 @@ func CheckMultiPackage(con, title string) (content string, m map[string][]string
 	m = map[string][]string{}
 	con = PreReg.ReplaceAllString(con, "")
 	con = PreReg1.ReplaceAllString(con, "")
-	pres := PreCheckMulti.FindStringSubmatch(con) //找分包
-	if len(pres) == 10 {
-		//log.Println(pres)
-		k := pres[1]
-		if k == "" {
-			k = pres[6]
-		}
-		if k == "1" || k == "一" {
-			return
-		} else {
-			//log.Println("all: ", k)
-		}
-	}
+
 	content = con
 	con = PreCheckMulti.ReplaceAllString(con, "")
 	con = PreCon.ReplaceAllString(con, "\n")
 	con = PreCon2.ReplaceAllString(con, "")
+	con = PreCon3.ReplaceAllString(con, "${1}:")
 	//修改 \nX标段
 	res := MultiReg.FindAllStringSubmatch(con, -1)
-	if len(res) > 0 { //5 6
+	if len(res) > 0 {
+		//1-3 45 6-10 11-15 16-18 1920 21-23
 		mindex := map[string]int{}
 		for index, v := range res {
 			k := v[1]
 			vindex := 2
 			if k == "" {
-				k = v[11]
-				vindex = 12
-			}
-			if k == "" {
-				k = v[9]
+				k = v[4]
 				vindex = 5
 			}
 			if k == "" {
-				k = v[4]
-				vindex = 5
+				k = v[19]
+				vindex = 20
 			}
 			if k == "" {
 				k = v[6]
-				vindex = 8
+				vindex = 7
 			}
 			if k == "" {
-				k = v[0]
+				k = v[11]
+				vindex = 12
+			}
+
+			if k == "" {
+				k = v[16]
 				vindex = 17
 			}
 
-			if k != "" && v[vindex] != ""  {
+			if k == "" {
+				k = v[21]
+				vindex = 22
+			}
+
+			if k != "" && v[vindex] != "" &&  vindex!=5 && vindex!=20 {
 				vindex += 1
 			}
 			if len(m[k]) == 0 && k != "" && v[vindex] != "" {

+ 1 - 0
src/web/templates/admin/track.html

@@ -104,6 +104,7 @@
 <script>
 	$(function(){
 		var tracks = {{.tracks}};
+		console.log(tracks)
 		var n = 0;
 		var oneboxhtml = "";
 		var finishhtml = "";

+ 1 - 1
standardata/src/config.json

@@ -9,7 +9,7 @@
   "mgoentsize":5,
   "mgoentdb":"mixdata",
   "extractcoll":"bidding",
-  "extractdb": "extract_v3xs",
+  "extractdb": "extract_v3_new",
   "versioncoll": "tagdetailinfo",
   "extractversion": "V3.1.2",
   "standardata":{

+ 1 - 2
standardata/src/main.go

@@ -59,8 +59,6 @@ func init() {
 		MongodbAddr: qu.ObjToString(sysconfig["mgofrom"]),
 		Size:        qu.IntAll(sysconfig["mgofromsize"]),
 		DbName:      qu.ObjToString(sysconfig["mgofromdb"]),
-		UserName:    qu.ObjToString(sysconfig["username"]),
-		PassWord:    qu.ObjToString(sysconfig["password"]),
 	}
 	MongoFrom.InitPool()
 
@@ -155,6 +153,7 @@ func main() {
 	// query := map[string]interface{}{}
 	// buyerStandarData(mgofromdb, query)
 
+	log.Println("部署...增量")
 	go task_standarData()
 	c := make(chan int, 1)
 	<-c

+ 35 - 0
standardata/src/mark

@@ -0,0 +1,35 @@
+{
+  "mgofrom": "172.17.4.85:27080",
+  "mgofromsize":3,
+  "mgofromdb":"qfw",
+  "mgoto": "172.17.4.187:27082,172.17.145.163:27083",
+  "mgotosize":3,
+  "mgotodb":"mixdata",
+  "mgoent": "172.17.4.187:27082,172.17.145.163:27083",
+  "mgoentsize":3,
+  "mgoentdb":"mixdata",
+  "extractcoll":"result_20210109",
+  "extractdb": "extract_v3_new",
+  "versioncoll": "tagdetailinfo",
+  "extractversion": "V3.1.2",
+  "standardata":{
+	"winner":{
+		"standarent":"winner_enterprise",
+		"standarerr":"winner_err",
+		"redisdb":1
+	},
+    "buyer":{
+      "standarent":"buyer_enterprise",
+      "standarerr":"buyer_err",
+      "redisdb":2
+    },
+    "agency":{
+      "standarent":"agency_enterprise",
+      "standarerr":"agency_err",
+      "redisdb":3
+    }
+  },
+  "redis": "winner=172.17.4.87:2679,buyer=172.17.4.87:2679,agency=172.17.4.87:2679",
+ "username": "SJZY_RWbid_ES",
+  "password": "SJZY@B4i4D5e6S"
+}

+ 1 - 1
standardata/src/standaragency.go

@@ -107,7 +107,7 @@ func agencyStandarData(db string, query map[string]interface{}) {
 			}
 		}
 		tmp = map[string]interface{}{}
-		if index%100 == 0 {
+		if index%1000 == 0 {
 			log.Println("agency index", index)
 		}
 	}

+ 5 - 4
standardata/src/standarbuyer.go

@@ -19,14 +19,15 @@ func buyerStandarData(db string, query map[string]interface{}) {
 	defer qu.Catch()
 	sess := MongoFrom.GetMgoConn()
 	defer MongoFrom.Close()
-	it := sess.DB(db).C(extractcoll).Find(query).Select(bson.M{"repeat": 1, "buyer": 1, "buyertel": 1, "buyerperson": 1, "buyerclass": 1, "topscopeclass": 1}).Sort("_id").Iter()
+	it := sess.DB(db).C(extractcoll).Find(query).Select(bson.M{"repeat": 1, "buyer": 1, "buyertel": 1,
+		"buyerperson": 1, "buyerclass": 1, "topscopeclass": 1}).Sort("_id").Iter()
 	index := 0
 	for tmp := make(map[string]interface{}); it.Next(&tmp); index++ {
 		if qu.IntAll(tmp["repeat"]) > 0 { //重复数据跳过
 			continue
 		}
 		buyer := qu.ObjToString(tmp["buyer"])
-		if utf8.RuneCountInString(buyer) < 5 {
+		if utf8.RuneCountInString(buyer) < 4 {
 			continue
 		}
 		infoid := mongo.BsonTOStringId(tmp["_id"])
@@ -110,7 +111,7 @@ func buyerStandarData(db string, query map[string]interface{}) {
 			}
 		}
 		tmp = map[string]interface{}{}
-		if index%100 == 0 {
+		if index%1000 == 0 {
 			log.Println("buyer index", index)
 		}
 	}
@@ -147,7 +148,7 @@ func historybuyer(db, fromcoll string) {
 
 			}
 			topscopeclass, _ := tmp["topscopeclass"].(primitive.A)
-			if buyer != "" && utf8.RuneCountInString(buyer) > 4 {
+			if buyer != "" && utf8.RuneCountInString(buyer) > 3 {
 				buyerperson := qu.ObjToString(tmp["buyerperson"])
 				buyertel := qu.ObjToString(tmp["buyertel"])
 				b, _ := redis.ExistRedis("buyer", buyerbd, buyer)

+ 31 - 9
standardata/src/standarwinner.go

@@ -20,14 +20,15 @@ func winnerStandarData(db string, query map[string]interface{}) {
 	defer qu.Catch()
 	sess := MongoFrom.GetMgoConn()
 	defer MongoFrom.Close()
-	it := sess.DB(db).C(extractcoll).Find(query).Select(bson.M{"repeat": 1, "winner": 1, "winnertel": 1, "winnerperson": 1, "topscopeclass": 1, "package": 1}).Sort("_id").Iter()
+	it := sess.DB(db).C(extractcoll).Find(query).Select(bson.M{"repeat": 1, "winner": 1, "winnertel": 1,
+		"winnerperson": 1, "topscopeclass": 1, "package": 1}).Sort("_id").Iter()
 	index := 0
 	for tmp := make(map[string]interface{}); it.Next(&tmp); index++ {
 		if qu.IntAll(tmp["repeat"]) > 0 { //重复数据跳过
 			continue
 		}
 		winner := qu.ObjToString(tmp["winner"])
-		if utf8.RuneCountInString(winner) < 5 {
+		if utf8.RuneCountInString(winner) < 4 {
 			continue
 		}
 		infoid := mongo.BsonTOStringId(tmp["_id"])
@@ -129,7 +130,7 @@ func winnerStandarData(db string, query map[string]interface{}) {
 			}
 		}
 		tmp = map[string]interface{}{}
-		if index%100 == 0 {
+		if index%1000 == 0 {
 			log.Println("winner index", index)
 		}
 	}
@@ -157,7 +158,7 @@ func historywinner(db, fromcoll string) {
 			}()
 			winner := qu.ObjToString(tmp["winner"])
 			topscopeclass, _ := tmp["topscopeclass"].(primitive.A)
-			if winner != "" && utf8.RuneCountInString(winner) > 4 {
+			if winner != "" && utf8.RuneCountInString(winner) > 3 {
 				winnerperson := qu.ObjToString(tmp["winnerperson"])
 				winnertel := qu.ObjToString(tmp["winnertel"])
 				//存在...更新
@@ -310,7 +311,7 @@ func getWinnerPacks(infoid string, packs map[string]interface{}, topscopeclass [
 	for _, v := range packs {
 		if tmp, ok := v.(map[string]interface{}); ok {
 			winner := qu.ObjToString(tmp["winner"])
-			if utf8.RuneCountInString(winner) < 5 {
+			if utf8.RuneCountInString(winner) < 4 {
 				continue
 			}
 			winnerperson := qu.ObjToString(tmp["winnerperson"])
@@ -332,16 +333,37 @@ func getWinnerPacks(infoid string, packs map[string]interface{}, topscopeclass [
 
 //数据整合
 func comHisMegerNewData(name, datatype string, ps []map[string]interface{}) map[string]interface{} {
-	tmp := MongoEnt.FindOne("qyxy", map[string]interface{}{"company_name": name})
-	if len(tmp) < 1 {
+	//tmp := MongoEnt.FindOne("qyxy_std", map[string]interface{}{"company_name": name})
+	//if len(tmp) < 1 {
+	//	return nil
+	//}
+	tmpArr,_ := MongoEnt.Find("qyxy_std", map[string]interface{}{"company_name": name},nil,nil)
+	tmp := make(map[string]interface{},0)
+	if len(tmpArr) < 1{
 		return nil
+	}else if len(tmpArr)==1 {
+		tmp = tmpArr[0]
+	}else {
+		isUse := false
+		for _,v := range tmpArr{
+			use_flag := qu.IntAll(v["use_flag"])
+			if use_flag!=10 {
+				tmp = v
+				isUse = true
+				break
+			}
+		}
+		if !isUse  {
+			tmp = tmpArr[0]
+		}
 	}
+	//qu.ObjToString(tmp["area_code"])
 	data := map[string]interface{}{
 		"history_name":    "",
 		"credit_no":       "",
 		"company_email":   "",
-		"area_code":       qu.ObjToString(tmp["area_code"]),
-		"province":        qu.ObjToString(tmp["province"]),
+		"area_code":       "",
+		"province":        qu.ObjToString(tmp["company_area"]),
 		"city":            "",
 		"district":        "",
 		"company_type":    qu.ObjToString(tmp["company_type"]),

+ 20 - 0
standardata/src/task.go

@@ -30,4 +30,24 @@ func task_standarData() {
 		go agencyStandarData(mgofromdb, query)
 	})
 	c.Start()
+
 }
+
+func runOnce()  {
+	mgofromdb := qu.ObjToString(sysconfig["mgofromdb"])
+	t := time.Now()
+	pici := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Local).Unix()
+	query := map[string]interface{}{
+		"comeintime": map[string]interface{}{
+			"$gt":  pici - 86400,
+			"$lte": pici,
+		},
+	}
+	log.Println(mgofromdb, query)
+	go winnerStandarData(mgofromdb, query)
+	time.Sleep(1 * time.Minute)
+	go buyerStandarData(mgofromdb, query)
+	time.Sleep(1 * time.Minute)
+	go agencyStandarData(mgofromdb, query)
+}
+

+ 7 - 7
udp_datacheck/src/check_bidamount.go

@@ -10,9 +10,9 @@ var classScopeReg *regexp.Regexp = regexp.MustCompile("(建筑工程|交通工
 //中标金额
 func getCheckDataBidamount(tmp map[string]interface{},update_check *map[string]interface{})  {
 
-	modifyinfo := make(map[string]interface{},0)
-	if (*update_check)["modifyinfo"] != nil {
-		modifyinfo  = *qu.ObjToMap((*update_check)["modifyinfo"])
+	modifycheck := make(map[string]interface{},0)
+	if (*update_check)["modifycheck"] != nil {
+		modifycheck  = *qu.ObjToMap((*update_check)["modifycheck"])
 	}
 	bidamount := qu.Float64All(tmp["bidamount"])
 	spidercode := qu.ObjToString("spidercode")
@@ -28,8 +28,8 @@ func getCheckDataBidamount(tmp map[string]interface{},update_check *map[string]i
 		if bidamount>1000000000.0 {
 			new_bidamount := bidamount/float64(10000)
 			(*update_check)["bidamount"] = new_bidamount
-			modifyinfo["bidamount"] = "爬虫倍率"
-			(*update_check)["modifyinfo"] = modifyinfo
+			modifycheck["bidamount"] = "爬虫倍率"
+			(*update_check)["modifycheck"] = modifycheck
 			return
 		}
 	}
@@ -48,8 +48,8 @@ func getCheckDataBidamount(tmp map[string]interface{},update_check *map[string]i
 	//	if !isTrue && bidamount>1000000000.0 {
 	//		new_bidamount := bidamount/float64(10000)
 	//		(*update_check)["bidamount"] = new_bidamount
-	//		modifyinfo["bidamount"] = "行业倍率"
-	//		(*update_check)["modifyinfo"] = modifyinfo
+	//		modifycheck["bidamount"] = "行业倍率"
+	//		(*update_check)["modifycheck"] = modifycheck
 	//		return
 	//	}
 	//}

+ 38 - 21
udp_datacheck/src/check_city.go

@@ -7,7 +7,7 @@ import (
 	"strings"
 )
 
-var cityEndReg *regexp.Regexp = regexp.MustCompile("(区|县)$")
+var cityEndReg *regexp.Regexp = regexp.MustCompile("(区|县|市)$")
 
 func getCheckDataCity(tmp map[string]interface{},update_check *map[string]interface{}) {
 
@@ -42,7 +42,7 @@ func getCheckDataCity(tmp map[string]interface{},update_check *map[string]interf
 		if len(n_rdata)>0 {
 			for rk, rv := range n_rdata {
 				umap[rk] = rv
-				umap["modifyinfo"].(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)
@@ -137,21 +137,17 @@ func cityMarshal(data map[string]interface{}) 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=="台湾" {
+	if area=="香港"||area=="澳门"||area=="台湾" || (area=="全国"&&(city==""||district=="")) {
 		return rdata
 	}
 	//第一步:区校验
 	if district!="" {
 		districtArr := DistrictDict[district]
 		if districtArr==nil {//涉及了 个别别名相关的数据
-			alias_district := aliasDataDistrict(district)
-			if alias_district == "" {
-				rdata["district"] = ""
-			}else {
-				alias_districtArr := DistrictDict[alias_district]
-				if alias_districtArr==nil {
-					rdata["district"] = ""
-				}else {
+			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 {
 							rdata["district"] = alias_district
@@ -160,6 +156,7 @@ func standardCheckCity(area string,city string,district string) map[string]strin
 					}
 				}
 			}
+			rdata["district"] = ""
 		}else {
 			isTrue := false
 			for _,v:=range districtArr{
@@ -176,15 +173,18 @@ func standardCheckCity(area string,city string,district string) map[string]strin
 					rdata["city"] = districtArr[0].C_Name
 					rdata["district"] = districtArr[0].D_Name
 					return rdata
+				}else {
+					rdata["district"] = ""
 				}
 			}
 		}
 	}
 
 	//第二步:区校验-失败   市-校验
-	if city!="" {
+	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 {
@@ -194,6 +194,7 @@ func standardCheckCity(area string,city string,district string) map[string]strin
 					return rdata
 				}
 			}
+			rdata["city"] = ""
 		}else {
 			isTrue := false
 			for _,v:=range cityArr{
@@ -210,6 +211,8 @@ func standardCheckCity(area string,city string,district string) map[string]strin
 					rdata["city"] = cityArr[0].C_Name
 					rdata["district"] = ""
 					return rdata
+				}else {
+					rdata["city"] = ""
 				}
 			}
 		}
@@ -228,14 +231,14 @@ 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{} {
 	umap := make(map[string]interface{})
-	if tmp["modifyinfo"] == nil {
-		umap["modifyinfo"] = make(map[string]interface{})
+	if tmp["modifycheck"] == nil {
+		umap["modifycheck"] = make(map[string]interface{})
 	} else {
-		umap["modifyinfo"] = tmp["modifyinfo"]
+		umap["modifycheck"] = tmp["modifycheck"]
 	}
 	for rk, rv := range rdata {
 		umap[rk] = rv
-		umap["modifyinfo"].(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
 }
@@ -246,15 +249,29 @@ func copyUpdateData(tmp map[string]interface{},update_check *map[string]interfac
 	}
 }
 
-func aliasDataDistrict(district string) string {
+//拆分三级县
+func aliasDataDistrict(district string) []string {
+	arr :=[]string{}
 	if cityEndReg.MatchString(district) {
 		str := cityEndReg.FindString(district)
+		strings.TrimRight(district, str)
 		if str=="县"{
-			return strings.ReplaceAll(district,str,"区")
+			arr = append(arr,fmt.Sprintf("%s区",strings.TrimRight(district, str)))
+			arr = append(arr,fmt.Sprintf("%s市",strings.TrimRight(district, str)))
 		}else if str=="区"{
-			return strings.ReplaceAll(district,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))
 	}
-	return ""
+	return arr
 }
 

+ 2 - 2
udp_datacheck/src/config.json

@@ -3,7 +3,7 @@
   "mongodb": {
     "addrName": "127.0.0.1:27017",
     "dbName": "zhengkun",
-    "collName": "zktest_check_data",
+    "collName": "zktest_erracd_data",
     "pool": 10
   },
   "qy_mongodb": {
@@ -15,6 +15,6 @@
     "pool": 10
   },
   "jy_collName": "address_jy_2021",
-  "check_thread" : 4,
+  "check_thread" : 1,
   "nextNode": []
 }

+ 20 - 38
udp_datacheck/src/main.go

@@ -29,7 +29,7 @@ var (
 	mconf        map[string]interface{} 			//mongodb配置信息
 	data_mgo,qy_mgo   *MongodbSim            		//mongodb操作对象
 	udpclient 	mu.UdpClient 						//udp对象
-	nextNodes 	[]map[string]interface{}			//节点信息
+	nextNode 	[]map[string]interface{}			//节点信息
 	coll_name,qy_coll_name,jy_coll_name 	string	//表名
 	check_lock 		sync.Mutex   					//更新锁
 	check_thread	int								//线程数
@@ -129,7 +129,7 @@ func initMgo()  {
 	qy_coll_name = qy_mconf["qy_collName"].(string)
 
 	jy_coll_name = Sysconfig["jy_collName"].(string)
-	nextNodes = qu.ObjArrToMapArr(Sysconfig["nextNode"].([]interface{}))
+	nextNode = qu.ObjArrToMapArr(Sysconfig["nextNode"].([]interface{}))
 	check_thread = qu.IntAll(Sysconfig["check_thread"])
 
 	log.Println("mgo 等配置,加载完毕...")
@@ -150,27 +150,22 @@ func init() {
 	go UpdateTask.updateData()
 }
 
-func main()  {
+func mainT()  {
 	updport := Sysconfig["udpport"].(string)
 	udpclient = mu.UdpClient{Local: updport, BufSize: 1024}
 	udpclient.Listen(processUdpMsg)
 	log.Println("Udp服务监听", updport)
+	time.Sleep(99999 * time.Hour)
+}
 
-
-
-	//临时调试
+//临时校验
+func main()  {
 	sid := "1fffffffffffffffffffffff"
-	eid := "9fffffffffffffffffffffff"
+	eid := "618aef9745a326c6c3eb7e50"
 	startCheckData(sid,eid)
-
-
-
-
 	time.Sleep(99999 * time.Hour)
-
 }
 
-
 //开始审查数据
 func startCheckData(sid, eid string) {
 	log.Println("开始审查数据...")
@@ -191,8 +186,8 @@ func startCheckData(sid, eid string) {
 	it := sess.DB(data_mgo.DbName).C(coll_name).Find(&q).Iter()
 	total,isRepair := 0,0
 	for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
-		if total%1000 == 0 {
-			log.Println("当前数量:", total,isRepair)
+		if total%50000 == 0 {
+			log.Println("当前数量:", total,isRepair,tmp["_id"])
 		}
 		update_id := map[string]interface{}{"_id":tmp["_id"]}
 		check_pool <- true
@@ -211,25 +206,12 @@ func startCheckData(sid, eid string) {
 
 			if len(update_check)>0 {
 				isRepair++
-				//正式
-				//UpdateTask.updatePool <- []map[string]interface{}{
-				//	update_id,
-				//	map[string]interface{}{
-				//		"$set": update_check,
-				//	},
-				//}
-				//if update_check["bidamount"]!=nil {
-				//	log.Println("金额变化~",tmp["_id"])
-				//}
-				//测试
-				//UpdateTask.updatePool <- []map[string]interface{}{
-				//	update_id,
-				//	map[string]interface{}{
-				//		"$set": map[string]interface{}{
-				//			"modifyinfo":update_check["modifyinfo"],
-				//		},
-				//	},
-				//}
+				UpdateTask.updatePool <- []map[string]interface{}{
+					update_id,
+					map[string]interface{}{
+						"$set": update_check,
+					},
+				}
 			}
 		}(tmp,update_id)
 		tmp = make(map[string]interface{})
@@ -262,10 +244,10 @@ func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) {
 				return
 			} else {
 				go udpclient.WriteUdp(data, mu.OP_NOOP, ra)
-				log.Println("udp通知抽取id段-审查数据", sid, " ", eid)
+				log.Println("udp通知id段-审查数据", sid, "~", eid)
 				startCheckData(sid, eid)
-				log.Println("udp通知审查数据完成,eid", eid)
-				for _, m := range nextNodes {
+				log.Println("udp通知审查数据完成,下节点响应")
+				for _, m := range nextNode {
 					by, _ := json.Marshal(map[string]interface{}{
 						"gtid":  sid,
 						"lteid": eid,
@@ -282,7 +264,7 @@ func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) {
 			}
 		}
 	case mu.OP_NOOP: //下个节点回应
-		log.Println(string(data))
+		log.Println("下节点回应",string(data))
 	}
 }
 

+ 29 - 5
udp_datacheck/src/zk_mark

@@ -1,11 +1,11 @@
 
-
+//线上
 {
-  "udpport": ":11109",
+  "udpport": ":1799",
   "mongodb": {
     "addrName": "172.17.4.85:27080",
     "dbName": "qfw",
-    "collName": "zktest_check_data",
+    "collName": "result_20210109",
     "pool": 10
   },
   "qy_mongodb": {
@@ -17,7 +17,7 @@
     "pool": 10
   },
   "jy_collName": "address_jy_2021",
-  "check_thread" : 4,
+  "check_thread" : 1,
   "nextNode": [
     {
       "addr": "127.0.0.1",
@@ -26,4 +26,28 @@
       "memo": "生kv招标分类"
     }
   ]
-}
+}
+
+
+
+//本地
+{
+  "udpport": ":11109",
+  "mongodb": {
+    "addrName": "127.0.0.1:27017",
+    "dbName": "zhengkun",
+    "collName": "zktest_check_data",
+    "pool": 10
+  },
+  "qy_mongodb": {
+    "qy_addrName": "127.0.0.1:27017",
+    "qy_dbName": "mixdata",
+    "qy_collName": "qyxy_std",
+    "qy_username": "",
+    "qy_password": "",
+    "pool": 10
+  },
+  "jy_collName": "address_jy_2021",
+  "check_thread" : 1,
+  "nextNode": []
+}