Jianghan 4 yıl önce
ebeveyn
işleme
276641a065

+ 17 - 1
fullproject/src_v1/config.json

@@ -34,5 +34,21 @@
             "port": 14833,
             "memo": "修改项目创建new"
         }
-    ]
+    ],
+    "blacklist": ["采购项目", "项目", "工程", "开标", "建设项目", "改造", "扩容", "中标", "公告", "中标公告", "成交", "入围", "招标", "变更", "开标结果", "入围招标变更", "成交信息", "PPP", "资格预审", "资格", "预审", "采购", "供应商", "工程",
+        "结果", "购置合同", "购置", "五标段", "六标段", "合同", "竞争性谈判", "竞争性", "谈判", "公示时间", "采购", "公开", "招标公告", "废标", "流标", "废标公告", "流标公告", "磋商", "询价", "项目联系人", "中标工期", "随机抽取", "全过程",
+        "中标信息", "定标日期", "单价", "中标标的名称", "单位名称", "经济类", "法律类", "云南", "贵州", "其他事项", "其它事项", "法律", "行政法规", "单位", "学历", "修改", "澄清", "无法律", "法规", "成员", "说明", "公示期", "时至", "时止)",
+        "中标候选人", "中标结果", "招标人名称", "项目名称", "业主代表", "中标金额", "本项目", "不接受", "招标人代表", "项目实施", "信誉", "业绩", "合法", "完整", "有效", "在此", "资格标", "商务标", "公告期", "成交价", "检测", "检疫", "经评审",
+        "招标人", "道路", "水利", "田径", "游泳", "羽毛球", "求真", "务实", "无气泡", "毛刺", "进场安排", "合理", "由技术", "公平", "经济", "公正", "但是", "支付条件", "税费", "索赔", "安全", "税费", "管理费用", "中行", "农行", "南京", "平安",
+        "合格", "天内", "高风险", "终止合同", "任何加行", "涂改", "其它费", "改期的", "运输", "税收等", "第一名", "第二名", "第三名", "时间较紧", "能评", "洪评", "包装费", "安装费", "保险费", "运输费", "第400章", "清单", "第200章", "合计",
+        "第100章", "应及", "印存", "大华", "宇视", "法令", "公正廉洁", "不徇私", "法令", "公正廉洁", "但是", "支付条件", "税费", "索赔", "务费", "国内", "年份", "宣传费", "出口", "业务总额", "包装", "包装物料", "商务", "第四部分", "委员会由",
+        "其余", "检验", "空调", "台式电脑", "税金", "安装", "成本", "渠道", "公告期限", "第十八条", "项目用途", "随时", "利润", "年1", "保险", "时3", "包号", "开户行", "户名", "安装调试", "时0", "万元", "运费", "建筑面积", "平方米", "成交金额",
+        "其他", "通过", "支票", "谈判小组", "本票", "业主评委", "年0", "计划员", "大写", "合价", "安全员", "资质", "其他要求", "施工员", "中标单位", "答疑", "方式", "第十条", "性能", "五.", "施工", "洪水", "暴风", "滑坡", "保险负责赔偿", "石油石化",
+        "保险", "万元", "大写", "利润", "节能", "其它费用", "机械", "张**", "第二包", "甲方", "已方", "业主专家", "中国官网", "文件", "检验报告", "劳保", "同时", "第四条", "答复", "王**", "严格", "丰收", "时间", "银行支票", "生产厂家", "资料",
+        "第二章", "权值", "有无发热", "干咳", "姓名", "权值", "在各评委", "首先", "务条款", "应以支票", "本票", "有效性", "符合性", "完整性", "公告期限", "合价", "类别", "市政", "房建", "楼民", "性别", "保险费等", "运费", "以最", "行评审", "经查实",
+        "同时", "文件", "合同包", "来源地", "介绍", "通讯", "答复", "利润", "税收", "支票", "年龄", "本票", "用途", "徐**", "合同内容", "金额为", "建设", "不限", "世达", "陆**", "须在", "范围", "招标方式", "合同履约", "进度", "方法", "包料", "其中",
+        "出厂单价", "接管", "查封", "天线", "开关电源", "无源器件", "海商等)", "第二条", "元整", "生产加工", "管理", "运杂", "税前价格", "税额", "计划", "羊口", "管理费", "税金等", "项目概况", "风险费", "山寨", "都不", "母公司", "但银行", "将以",
+        "委托", "第五部分", "平顶山", "禹州", "郏县", "包括晋钢", "计划号", "大件运输", "合资", "商标", "国产", "茂名", "旅工", "燕山", "真实", "完整的", "不围标", "不造假", "双水", "台山", "合山", "大槐", "开平", "阳西", "公司", "通过询价", "税率",
+        "计量单位", "包括价格", "华润", "融创", "龙湖", "世茂", "保利", "碧桂园", "中海", "中南置地", "华夏幸福", "招商", "营业执照", "中主", "五环", "以水电", "包件", "九德路", "保管", "包件号", "包件售价", "国标", "类型", "检修", "保养", "保函",
+        "信用证", "化工", "商业秘密", "大宗商品", "应付", "应收", "中共党员", "不可卸载", "商的澄清", "项目编号", "运杂费", "台风", "严重火灾", "初审表", "酒店", "商业"]
 }

+ 8 - 1
fullproject/src_v1/init.go

@@ -24,6 +24,8 @@ var (
 	UpdateColl                                     string                 // 金额修改数据表
 	Thread                                         int                    //配置项线程数
 	//NextNode                 []interface{}
+	BlackList    								   []interface{}
+	BlaskListMap								   map[string]bool
 )
 
 var (
@@ -74,8 +76,13 @@ func init() {
 	udpclient.Listen(processUdpMsg)
 	log.Println("Udp服务监听", udpport)
 
-	//加载项目数据
+	BlackList = Sysconfig["blacklist"].([]interface{})
+	BlaskListMap = make(map[string]bool)
+	for _, v := range BlackList {
+		BlaskListMap[util.ObjToString(v)] = true
+	}
 
+	//加载项目数据
 	//---不能通过
 	vm := []string{"C", "D"}
 	for i := 0; i < 2; i++ {

+ 4 - 4
fullproject/src_v1/main.go

@@ -71,7 +71,7 @@ func DealSign() {
 	}
 }
 
-func mainT() {
+func main() {
 	//udp跑增量  id段   project
 	//udp跑全量			qlT
 	//udp跑历史数据  信息id1,id2/或id段  ls
@@ -90,9 +90,9 @@ func mainT() {
 }
 
 //测试组人员使用
-func main() {
-	sid = "5721bfb6eabf8ffeff6081e3"
-	eid = "58d94230e1382336074b3197"
+func mainT() {
+	sid = "5a4909cf40d2d9bbe8ab328a"
+	eid = "5f512d1fc0145440737580da"
 	//flag.StringVar(&sid, "sid", "", "开始id")
 	//flag.StringVar(&eid, "eid", "", "结束id")
 	//flag.Parse()

+ 58 - 34
fullproject/src_v1/project.go

@@ -3,14 +3,15 @@ package main
 import (
 	"encoding/json"
 	"log"
-	"time"
-
-	"go.mongodb.org/mongo-driver/bson"
-	"go.mongodb.org/mongo-driver/bson/primitive"
 	"math"
 	qu "qfw/util"
+	"regexp"
 	"sort"
 	"strings"
+	"time"
+
+	"go.mongodb.org/mongo-driver/bson"
+	"go.mongodb.org/mongo-driver/bson/primitive"
 )
 
 /**
@@ -225,7 +226,7 @@ func (p *ProjectTask) startProjectMerge(info *Info, tmp map[string]interface{})
 	}
 
 	if !bFindProject {
-		if info.SubType == "" || info.SubType == "变更" || info.SubType == "验收" || info.SubType == "违规"  ||
+		if info.SubType == "" || info.SubType == "变更" || info.SubType == "验收" || info.SubType == "违规" ||
 			info.SubType == "结果变更" || info.SubType == "其它" {
 			return
 		}
@@ -489,7 +490,7 @@ func (p *ProjectTask) NewProject(tmp map[string]interface{}, thisinfo *Info) (st
 	} else {
 		if bidtype[bs] != "" {
 			set["bidtype"] = bidtype[bs]
-		}else {
+		} else {
 			set["bidtype"] = "招标"
 		}
 		if bt == "招标" {
@@ -522,7 +523,7 @@ func (p *ProjectTask) NewProject(tmp map[string]interface{}, thisinfo *Info) (st
 	//增量用系统时间,全量(历史)入库时间
 	if p.currentType == "project" {
 		set["pici"] = p.pici
-	}else {
+	} else {
 		set["pici"] = tmp["comeintime"]
 	}
 	set["ids"] = []string{thisinfo.Id}
@@ -532,8 +533,8 @@ func (p *ProjectTask) NewProject(tmp map[string]interface{}, thisinfo *Info) (st
 			p1.Zbtime = qu.Int64All(tmp["publishtime"])
 		}
 	} else if thisinfo.TopType == "结果" || thisinfo.SubType == "合同" {
-			set["jgtime"] = tmp["publishtime"]
-			p1.Jgtime = thisinfo.Publishtime
+		set["jgtime"] = tmp["publishtime"]
+		p1.Jgtime = thisinfo.Publishtime
 	}
 
 	if len(thisinfo.Subscopeclass) > 0 {
@@ -558,7 +559,7 @@ func (p *ProjectTask) NewProject(tmp map[string]interface{}, thisinfo *Info) (st
 	}
 	if p1.Bidamount > 0 {
 		set["sortprice"] = p1.Bidamount
-	}else if p1.Budget > 0 {
+	} else if p1.Budget > 0 {
 		set["sortprice"] = p1.Budget
 	}
 
@@ -574,8 +575,13 @@ func (p *ProjectTask) NewProject(tmp map[string]interface{}, thisinfo *Info) (st
 	}
 	//项目评审专家
 	if len(thisinfo.ReviewExperts) > 0 {
-		set["review_experts"] = thisinfo.ReviewExperts
-		p1.ReviewExperts = thisinfo.ReviewExperts
+		arr := FormatRp(thisinfo.ReviewExperts)
+		if len(arr) > 0 {
+			set["review_experts"] = thisinfo.ReviewExperts
+			p1.ReviewExperts = thisinfo.ReviewExperts
+		} else {
+			p1.ReviewExperts = arr
+		}
 	}
 	//标的物
 	if thisinfo.Purchasing != "" {
@@ -585,7 +591,7 @@ func (p *ProjectTask) NewProject(tmp map[string]interface{}, thisinfo *Info) (st
 	//中标候选人
 	if len(thisinfo.WinnerOrder) > 0 {
 		var list = []string{}
-		for _, v := range thisinfo.WinnerOrder{
+		for _, v := range thisinfo.WinnerOrder {
 			list = append(list, qu.ObjToString(v["entname"]))
 		}
 		set["winnerorder"] = list
@@ -699,7 +705,7 @@ func (p *ProjectTask) NewCachePinfo(id primitive.ObjectID, thisinfo *Info, bidty
 		Bidtype:       bidtype,
 		Winners:       thisinfo.Winners,
 		ReviewExperts: thisinfo.ReviewExperts,
-		Purchasing:	   thisinfo.Purchasing,
+		Purchasing:    thisinfo.Purchasing,
 	}
 	if thisinfo.LenPTC > 5 {
 		p1.MPC = append(p1.MPC, thisinfo.PTC)
@@ -743,14 +749,14 @@ func (p *ProjectTask) UpdateProject(tmp map[string]interface{}, thisinfo *Info,
 						set["jgtime"] = tmp["publishtime"]
 						pInfo.Jgtime = thisinfo.Publishtime
 					}
-				//公告状态和项目状态同样是流标或者废标
-				}else if (thisinfo.SubType == "流标" || thisinfo.SubType == "废标") && (pInfo.Bidstatus == "流标" || pInfo.Bidstatus == "废标") {
+					//公告状态和项目状态同样是流标或者废标
+				} else if (thisinfo.SubType == "流标" || thisinfo.SubType == "废标") && (pInfo.Bidstatus == "流标" || pInfo.Bidstatus == "废标") {
 					if jg1 > p.jgTime {
 						set["jgtime"] = tmp["publishtime"]
 						pInfo.Jgtime = thisinfo.Publishtime
 					}
 				}
-			}else {
+			} else {
 				set["jgtime"] = tmp["publishtime"]
 				pInfo.Jgtime = thisinfo.Publishtime
 			}
@@ -758,7 +764,7 @@ func (p *ProjectTask) UpdateProject(tmp map[string]interface{}, thisinfo *Info,
 	} else if thisinfo.SubType == "合同" {
 		if pInfo.Bidstatus == "中标" || pInfo.Bidstatus == "成交" || pInfo.Bidstatus == "" {
 			//中标、成交不更新jgtime
-		}else {
+		} else {
 			set["jgtime"] = tmp["publishtime"]
 			pInfo.Jgtime = thisinfo.Publishtime
 		}
@@ -781,7 +787,7 @@ func (p *ProjectTask) UpdateProject(tmp map[string]interface{}, thisinfo *Info,
 		if bidtype[bs] != "" {
 			set["bidtype"] = bidtype[bs]
 			pInfo.Bidtype = bidtype[bs]
-		}else {
+		} else {
 			set["bidtype"] = "招标"
 			pInfo.Bidtype = "招标"
 		}
@@ -792,7 +798,7 @@ func (p *ProjectTask) UpdateProject(tmp map[string]interface{}, thisinfo *Info,
 		} else if thisinfo.Infoformat == 2 {
 			set["bidstatus"] = "拟建"
 			pInfo.Bidstatus = "拟建"
-		}else if bs == "" && bt == "结果" {
+		} else if bs == "" && bt == "结果" {
 			if pInfo.Bidstatus == "招标" {
 				set["bidstatus"] = ""
 				pInfo.Bidstatus = ""
@@ -852,7 +858,7 @@ func (p *ProjectTask) UpdateProject(tmp map[string]interface{}, thisinfo *Info,
 	if thisinfo.Buyerperson != "" {
 		pInfo.Buyerperson = thisinfo.Buyerperson
 		set["buyerperson"] = pInfo.Buyerperson
-	}else {
+	} else {
 		pInfo.Buyerperson = ""
 		set["buyerperson"] = ""
 	}
@@ -860,7 +866,7 @@ func (p *ProjectTask) UpdateProject(tmp map[string]interface{}, thisinfo *Info,
 	if thisinfo.Buyertel != "" {
 		pInfo.Buyertel = thisinfo.Buyertel
 		set["buyertel"] = pInfo.Buyertel
-	}else {
+	} else {
 		pInfo.Buyertel = ""
 		set["buyertel"] = ""
 	}
@@ -887,19 +893,20 @@ func (p *ProjectTask) UpdateProject(tmp map[string]interface{}, thisinfo *Info,
 
 	//项目评审专家
 	if len(thisinfo.ReviewExperts) > 0 {
-		for _, k := range thisinfo.ReviewExperts {
-			if BinarySearch(pInfo.ReviewExperts, k) == -1 {
-				pInfo.ReviewExperts = append(pInfo.ReviewExperts, k)
-				sort.Strings(pInfo.ReviewExperts)
-			}
+		arr := FormatRp(thisinfo.ReviewExperts)
+		if len(arr) > 0 {
+			set["review_experts"] = thisinfo.ReviewExperts
+			pInfo.ReviewExperts = thisinfo.ReviewExperts
+		} else {
+			pInfo.ReviewExperts = arr
+			set["review_experts"] = arr
 		}
-		set["review_experts"] = pInfo.ReviewExperts
 	}
 	if thisinfo.Purchasing != "" {
 		if pInfo.Purchasing == "" {
 			pInfo.Purchasing = thisinfo.Purchasing
 			set["purchasing"] = thisinfo.Purchasing
-		}else {
+		} else {
 			list := strings.Split(pInfo.Purchasing, ",")
 			for _, k := range list {
 				if BinarySearch(strings.Split(thisinfo.Purchasing, ","), k) == -1 {
@@ -914,7 +921,7 @@ func (p *ProjectTask) UpdateProject(tmp map[string]interface{}, thisinfo *Info,
 	//中标候选人
 	if len(thisinfo.WinnerOrder) > 0 {
 		var list = []string{}
-		for _, v := range thisinfo.WinnerOrder{
+		for _, v := range thisinfo.WinnerOrder {
 			list = append(list, qu.ObjToString(v["entname"]))
 		}
 		set["winnerorder"] = list
@@ -945,7 +952,7 @@ func (p *ProjectTask) UpdateProject(tmp map[string]interface{}, thisinfo *Info,
 					deleteSlice(pInfo.Winners, k, "")
 					sort.Strings(pInfo.Winners)
 				}
-			}else {
+			} else {
 				if BinarySearch(pInfo.Winners, k) == -1 {
 					pInfo.Winners = append(pInfo.Winners, k)
 					sort.Strings(pInfo.Winners)
@@ -973,7 +980,7 @@ func (p *ProjectTask) UpdateProject(tmp map[string]interface{}, thisinfo *Info,
 	}
 	if pInfo.Bidamount >= pInfo.Budget {
 		set["sortprice"] = pInfo.Bidamount
-	}else if pInfo.Budget >= pInfo.Bidamount {
+	} else if pInfo.Budget >= pInfo.Bidamount {
 		set["sortprice"] = pInfo.Budget
 	}
 
@@ -999,7 +1006,7 @@ func (p *ProjectTask) UpdateProject(tmp map[string]interface{}, thisinfo *Info,
 	set["mpc"] = pInfo.MPC
 	if p.currentType == "project" {
 		set["pici"] = p.pici
-	}else {
+	} else {
 		set["pici"] = tmp["comeintime"]
 	}
 	update := map[string]interface{}{}
@@ -1164,7 +1171,7 @@ func PackageFormat(info *Info, project *ProjectInfo) map[string]interface{} {
 	return p1
 }
 
-//计算预算(budget)、中标金额(bidamount)
+// 计算预算(budget)、中标金额(bidamount)
 func CountAmount(project *ProjectInfo, info *Info, tmp map[string]interface{}) {
 	if info.HasPackage {
 		budget := 0.0
@@ -1330,3 +1337,20 @@ func ClearData(clearMap, tmp map[string]interface{}) {
 		}
 	}
 }
+
+//校验评审专家
+func FormatRp(tmp []string) []string {
+	arrTmp := []string{}
+	for _, v := range tmp {
+		// 汉字过滤(全汉字,2-4个字)
+		if ok, _ := regexp.MatchString("^[\\p{Han}]{2,4}$", v); !ok {
+			continue
+		}
+		//黑名单过滤
+		if BlaskListMap[v] {
+			continue
+		}
+		arrTmp = append(arrTmp, v)
+	}
+	return arrTmp
+}