Jianghan пре 4 година
родитељ
комит
8b4b3d60a8
3 измењених фајлова са 59 додато и 79 уклоњено
  1. 3 2
      fullproject/src_v1/config.json
  2. 6 2
      fullproject/src_v1/project.go
  3. 50 75
      fullproject/src_v1/task.go

+ 3 - 2
fullproject/src_v1/config.json

@@ -60,9 +60,10 @@
             "中标供应商如下:", "中标供应商为", "中标供应商联系地址中标金额(万元)\\d", "基本情况名称:", "基本情况中标候选人第\\d+名:", "______", "第一中标侯选人名称: \\d", "第一中标侯选单位:", "第一中标供应商-", "第一中标排序人:", "第一中标排序人",
             "第一成交侯选人:", "第一成交供应商-", "第一成交候选供应商及报价:", "拟定供应商名称:", "名单及其排序名次第一名单位名称", "名单及其排序名\\d次第一名单位名称", "名单及其排序推荐中标人单位名称", "名单及其排序", "名称:", "是:", "\\(成交\\)", "\\)¥41100.00",
             "\\)为:", "预成交单位:", "最终报价第(二|三)低的", "同意推荐最终报价最低的", "单位名称", "的供应商", "推荐", "第一名", "\\([A-Z]\\)", "([A-Z])", "<[^>]*>", "[^a-zA-Z\\p{Han}]{1,}", "[A-Z](-|、)", "A\\d+", "B\\d+", "?[a-zA-Z]?[包|段]",
-            "①"],
+            "①", "投标人被人民法院[,]{0,}"],
         "back_regexp": ["为中标人$", "为预中标供应商$", "为成交候选人$", "为该项目的预成交单位$", "为成交单位$", "为本次招标项目的中标单位$", "(公司$", "工期:0质量要求:null保证金金额:null$", ",报价:182391224.2900工期$", "786000元$", "预成交人地址",
-            "为该项目的预成交单位$", "为成交单位$", "预成交单位$", ",?(投标报价|报价)\\d{1,}\\.\\d{1,}(万?)元$", ",?(投标报价|报价)\\d+.?\\d+(万?)元$", ",?(投标报价|报价)\\d+.?\\d+(万?)元/平方米$", ",\\[慧通主要产品报价点击下载\\]$", ",$", ",?中标金额\\d{1,}(万?)元$", ",?中标金额\\d{1,}\\.\\d{1,}(万?)元$",
+            "为该项目的预成交单位$", "为成交单位$", "预成交单位$", ",投标人被人民法院$",
+            ",?(投标报价|报价)\\d{1,}\\.\\d{1,}(万?)元$", ",?(投标报价|报价)\\d+.?\\d+(万?)元$", ",?(投标报价|报价)\\d+.?\\d+(万?)元/平方米$", ",\\[慧通主要产品报价点击下载\\]$", ",$", ",?中标金额\\d{1,}(万?)元$",",?中标金额\\d{1,}\\.\\d{1,}(万?)元$",
             ",_$", "单位名称$", ",为本项目.*$", "[^a-zA-Z\\p{Han}]{1,}$"],
         "back_rep_regexp": ["(有限公$)#有限公司", "(有限责任公$)#有限责任公司", "(公司公司&)#公司", "(公司等&)#公司"],
         "blacklist": ["项目废标", "标项内容", "单位名称", "null", "不足3家", "中标单位", "公告时间", "(或印鉴)", "中标金额", "法定代表人", "员会名单", "含全部内", "工期", "报价", "名称得分", "元)备注", "的全部内", "地址", "\\.\\.", "法定家数", "的投标人",

+ 6 - 2
fullproject/src_v1/project.go

@@ -556,7 +556,9 @@ func (p *ProjectTask) NewProject(tmp map[string]interface{}, thisinfo *Info) (st
 	if len(thisinfo.WinnerOrder) > 0 {
 		var list = []string{}
 		for _, v := range thisinfo.WinnerOrder {
-			list = append(list, qu.ObjToString(v["entname"]))
+			if BinarySearch(list, qu.ObjToString(v["entname"])) == -1 {
+				list = append(list, qu.ObjToString(v["entname"]))
+			}
 		}
 		set["winnerorder"] = list
 		p1.Winnerorder = list
@@ -912,7 +914,9 @@ func (p *ProjectTask) UpdateProject(tmp map[string]interface{}, thisinfo *Info,
 	if len(thisinfo.WinnerOrder) > 0 {
 		var list = []string{}
 		for _, v := range thisinfo.WinnerOrder {
-			list = append(list, qu.ObjToString(v["entname"]))
+			if BinarySearch(list, qu.ObjToString(v["entname"])) == -1 {
+				list = append(list, qu.ObjToString(v["entname"]))
+			}
 		}
 		set["winnerorder"] = list
 		pInfo.Winnerorder = list

+ 50 - 75
fullproject/src_v1/task.go

@@ -322,29 +322,18 @@ func (p *ProjectTask) taskZl(udpInfo map[string]interface{}) {
 //招标字段更新
 func (p *ProjectTask) taskUpdateInfo(udpInfo map[string]interface{}) {
 	defer util.Catch()
-	db := MongoTool.DbName
-	coll, _ := udpInfo["coll"].(string)
-	if coll == "" {
-		coll = ExtractColl
-	}
-	thread := util.IntAllDef(Thread, 4)
-	if thread > 0 {
-		p.thread = thread
-	}
-	q, _ := udpInfo["query"].(map[string]interface{})
-	gtid := udpInfo["gtid"].(string)
-	lteid := udpInfo["lteid"].(string)
-	if q == nil {
-		q = map[string]interface{}{
-			"_id": map[string]interface{}{
-				"$gte": StringTOBsonId(gtid),
-				"$lte": StringTOBsonId(lteid),
-			},
-			"is_m": 1,
-		}
+	infoid := udpInfo["infoid"].(string)
+	infoMap := MongoTool.FindById(ExtractColl, infoid)
+	client := Es.GetEsConn()
+	defer Es.DestoryEsConn(client)
+	esquery := `{"query": {"bool": {"must": [{"term": {"list.infoid": "`+infoid+`"}}]}}}`
+	data := Es.Get(Index, Itype, esquery)
+	if len(*data) > 0 {
+		info := ParseInfo(infoMap)
+		p.updateJudge(infoMap, info, util.ObjToString((*data)[0]["_id"]))
+	}else {
+		util.Debug("Not find project---", infoid)
 	}
-	log.Println("查询语句:", q)
-	p.enter(db, coll, q)
 }
 
 func (p *ProjectTask) taskQuery() {
@@ -588,13 +577,8 @@ func (p *ProjectTask) enter(db, coll string, q map[string]interface{}) {
 						p.fillInPlace(tmp)
 						info := ParseInfo(tmp)
 						p.currentTime = info.Publishtime
-						if p.currentType == "updateInfo" {
-							//招标信息更改合并
-							p.updateJudge(tmp, info)
-						} else {
-							//普通合并
-							p.CommonMerge(tmp, info)
-						}
+						//普通合并
+						p.CommonMerge(tmp, info)
 					} else {
 						//信息错误,进行更新
 						util.Debug(tmp["_id"])
@@ -828,65 +812,56 @@ func ParseInfo(tmp map[string]interface{}) (info *Info) {
 	return thisinfo
 }
 
-func (p *ProjectTask) updateJudge(tmp map[string]interface{}, info *Info) {
-	index := -1
-	pInfoId := ""
-	p.AllIdsMapLock.Lock()
-	F:
-		for k, ID := range p.AllIdsMap {
-			for i, id := range ID.P.Ids {
-				if info.Id == id {
-					pInfoId = k
-					index = i
-					break F
-				}
+func (p *ProjectTask) updateJudge(infoMap map[string]interface{}, info *Info, pInfoId string) {
+	var index = -1		//0:第一个,1:中间,2:最后一个
+	tmpPro := MongoTool.FindById(ProjectColl, pInfoId)
+	ids := []interface{}(tmpPro["ids"].(primitive.A))
+	infoList := []interface{}(tmpPro["list"].(primitive.A))
+	for i, v := range ids {
+		if util.ObjToString(v) == util.ObjToString(infoMap["_id"]) {
+			if i == 0 {
+				index = 0
+			}else if i == len(ids) - 1 {
+				index = 2
+			}else {
+				index = 1
 			}
 		}
-	p.AllIdsMapLock.Unlock()
-	//未找到招标信息
-	if index == -1 {
-		if info != nil && !((info.pnbval == 1 && info.Buyer != "") || info.pnbval == 0) {
-			p.currentTime = info.Publishtime
-			p.startProjectMerge(info, tmp)
-		}
-	} else {
-		tmpPro := MongoTool.FindById(ProjectColl, pInfoId)
-		infoList := []interface{}(tmpPro["list"].(primitive.A))
-		infoMap := infoList[index].(map[string]interface{})
-		modifyMap, f := modifyEle(infoMap, tmp)
-		//projecthref字段
-		jsonData := tmp["jsondata"].(map[string]interface{})
-		if jsonData != nil && jsonData["projecthref"] != nil {
-			proHref := jsonData["projecthref"].(string)
-			tmp["projecthref"] = proHref
-			p.mapHrefLock.Lock()
-			pid := p.mapHref[proHref]
-			p.mapHrefLock.Unlock()
-			if pid == pInfoId {
-				p.modifyUpdate(pInfoId, index, info, tmp, tmpPro, modifyMap)
-				return
-			}
+	}
+	proListMap := infoList[index].(map[string]interface{})
+	modifyMap, f := modifyEle(proListMap, infoMap)
+	//projecthref字段
+	jsonData := infoMap["jsondata"].(map[string]interface{})
+	if jsonData != nil && jsonData["projecthref"] != nil {
+		proHref := jsonData["projecthref"].(string)
+		infoMap["projecthref"] = proHref
+		p.mapHrefLock.Lock()
+		pid := p.mapHref[proHref]
+		p.mapHrefLock.Unlock()
+		if pid == pInfoId {
+			p.modifyUpdate(pInfoId, index, info, infoMap, tmpPro, modifyMap)
+			return
 		}
+	}
 
-		if f {
-			//合并、修改
-			log.Println("合并修改更新", "----------------------------")
-			p.mergeAndModify(pInfoId, index, info, tmp, tmpPro, modifyMap)
-		} else {
-			//修改
-			log.Println("修改更新", "----------------------------")
-			p.modifyUpdate(pInfoId, index, info, tmp, tmpPro, modifyMap)
-		}
+	if f {
+		//合并、修改
+		log.Println("合并修改更新", "----------------------------")
+		p.mergeAndModify(pInfoId, index, info, infoMap, tmpPro, modifyMap)
+	} else {
+		//修改
+		log.Println("修改更新", "----------------------------")
+		p.modifyUpdate(pInfoId, index, info, infoMap, tmpPro, modifyMap)
 	}
 }
 
 var Elements = []string{
 	"projectname",
 	"projectcode",
+	"buyer",
 	"agency",
 	"budget",
 	"bidamount",
-	"buyerperson",
 	"area",
 	"city",
 	"publishtime",