Explorar o código

0110-优化备份

zhengkun %!s(int64=3) %!d(string=hai) anos
pai
achega
a8a73db43e
Modificáronse 3 ficheiros con 44 adicións e 24 borrados
  1. 34 20
      src/jy/pretreated/analytable.go
  2. 5 0
      src/jy/pretreated/division.go
  3. 5 4
      src/main.go

+ 34 - 20
src/jy/pretreated/analytable.go

@@ -129,6 +129,11 @@ var (
 	winnerOrderAndBidResult     = regexp.MustCompile("((中标)?候选人|(中标|评标)结果)")
 	WinnerOrderStr              = regexp.MustCompile(`(集团|公司|学校|中心|家具城|门诊|[大中小]+学|部|院|局|厂|店|所|队|社|室|厅|段|会|场|行)$`)
 	DoubtReg                    = regexp.MustCompile("(我中心|有(疑问|质疑|异议|意见)|(书面)?提出|不再受理|投诉|质疑|书面形式|监督|公示期(限)?)")
+
+
+	//新增-分包-表格-sortKV
+	budgetSortKVReg = regexp.MustCompile("(预算)")
+	winnerSortKVReg = regexp.MustCompile("(投标人[((]供应商[))]名称)")
 )
 
 //在解析时,判断表格元素是否隐藏
@@ -233,7 +238,7 @@ func CommonDataAnaly(k, tabletag, tabledesc string, v interface{}, isSite bool,
 
 var glRex *regexp.Regexp = regexp.MustCompile("(成交|中标|候选|排名|名次|供应商排序|中标候选人|名单及其排序|排序)")
 var djReg *regexp.Regexp = regexp.MustCompile("^单价")
-var hxrRex *regexp.Regexp = regexp.MustCompile("((成交|中标|中选)候选人[弟|第][1-5一二三四五]名|[弟|第][1-5一二三四五][名]?(成交|中标|中选)候选人)")
+var hxrRex *regexp.Regexp = regexp.MustCompile("((成交|中标|中选)?候选人[弟|第][1-5一二三四五]名|[弟|第][1-5一二三四五][名]?(成交|中标|中选)?候选人)")
 
 
 //对解析后的表格的kv进行过滤
@@ -247,23 +252,6 @@ func (table *Table) KVFilter(isSite bool, codeSite string) {
 	table.analyTdKV() //1.遍历每行每列td的sortkv添加到table.SorkVK中;2.td有子表格的处理
 	as := NewSortMap()
 
-	//核心-候选人-相关-遍历拼接可能为候选人数据 - 有异常
-	//winsArr := []string{}
-	//sortsArr := []string{}
-	//for _, k := range table.SortKV.Keys {
-	//	if hxrRex.MatchString(k) {
-	//		v := table.SortKV.Map[k]
-	//		if new_v, ok := v.(string); ok {
-	//			winsArr = append(winsArr,new_v)
-	//			sortsArr = append(sortsArr,k)
-	//		}
-	//	}
-	//}
-	//if len(winsArr)>1 {
-		//as.AddKey("中标候选人名称", winsArr)
-		//as.AddKey("中标候选人排序", sortsArr)
-	//}
-
 	//遍历table.sortkv,进行过滤处理,并放入标准化KV中,如果值是数组跳到下一步处理
 	for _, k := range table.SortKV.Keys {
 		//遍历所有key sort.kv
@@ -291,6 +279,25 @@ func (table *Table) KVFilter(isSite bool, codeSite string) {
 	//处理值是数组的kv   放入标准化kv中 standKV //处理table.SortKV.value为数组的情况
 	table.sortKVArr(as, isSite, codeSite)
 
+	//if len(table.WinnerOrder) == 0 { //在计算一下是否拼接
+	//	winsArr := []string{}
+	//	sortsArr := []string{}
+	//	for _, k := range table.SortKV.Keys {
+	//		if hxrRex.MatchString(k) {
+	//			v := table.SortKV.Map[k]
+	//			if new_v, ok := v.(string); ok {
+	//				winsArr = append(winsArr,new_v)
+	//				sortsArr = append(sortsArr,k)
+	//			}
+	//		}
+	//	}
+	//	if len(winsArr)>1 {
+	//		as.AddKey("中标候选人名称", winsArr)
+	//		as.AddKey("中标候选人排序", sortsArr)
+	//		table.sortKVArr(as, isSite, codeSite)
+	//	}
+	//}
+
 	if len(table.WinnerOrder) > 0 || !table.BPackage {
 		winnerOrder := []map[string]interface{}{}
 		maxSort := 0
@@ -2264,9 +2271,9 @@ func (tn *Table) CheckMultiPackageByTable(isSite bool, codeSite string) (b bool,
 
 						}
 
-					}else { //新增 - 特殊情况 - 查找sortKV - 预算
+					}else { //新增 - 特殊情况 - 查找sortKV - 预算 - 中标单位
 						for k,v := range tn.SortKV.Map {
-							if strings.Contains(k,"预算") {
+							if budgetSortKVReg.MatchString(k) {
 								if vs, ok := v.([]string); ok {
 									if len(index)==len(vs)  {
 										moneys := clear.ObjToMoney([]interface{}{vs[nk], ""})
@@ -2282,6 +2289,13 @@ func (tn *Table) CheckMultiPackageByTable(isSite bool, codeSite string) (b bool,
 									}
 								}
 							}
+							if winnerSortKVReg.MatchString(k) {
+								if vs, ok := v.([]string); ok {
+									if len(index) == len(vs) {
+										bp.Winner = vs[nk]
+									}
+								}
+							}
 						}
 					}
 					tn.BlockPackage.AddKey(v, bp) //table子包数组

+ 5 - 0
src/jy/pretreated/division.go

@@ -116,6 +116,7 @@ var (
 	packageReg3 = regexp.MustCompile("(中标价格)[::]")
 	packageReg4 = regexp.MustCompile("([1-9](标段)[::])拟定供应商名称[::](.*公司)\n")
 	packageReg5 = regexp.MustCompile("(第[1-9一二三四五](标段))(中标人)[::](.*)\n")
+	packageReg6 = regexp.MustCompile("供应商名称[::](.{4,20}公司)[((]([0]?1包)[))][、,,](.{4,20}公司)[((]([0]?2包)[))]")
 
 	//预算
 	packageReg20 = regexp.MustCompile("(最高投标限价为|投资预算约[为]?)([0-9.万元人民币]+)")
@@ -790,6 +791,10 @@ func divisionPackageChild(blockPackage *map[string]*util.BlockPackage, content,
 	content = packageReg3.ReplaceAllString(content,"\n${1}:")
 	content = packageReg4.ReplaceAllString(content,"\n${1}\n中标单位:${3}\n")
 	content = packageReg5.ReplaceAllString(content,"\n${1}\n中标单位:${4}\n")
+	content  = packageReg6.ReplaceAllString(content,"\n$2\n中标单位:$1\n$4\n中标单位:$3")
+
+
+
 
 	content = packageReg20.ReplaceAllString(content,"\n预算金额:${2}\n")
 	content = packageReg21.ReplaceAllString(content,"\n${2}\n预算金额:${3}\n${4}\n预算金额:${5}")

+ 5 - 4
src/main.go

@@ -75,11 +75,12 @@ func main() {
 
 //验证规则
 func testMain()  {
-	text :=`二、项目名称:龙岩市自然资源局龙岩市不动产交易登记一体化平台建设服务类采购项目三、采购结果  [350800]LYCG[GK]2021867-1 包1
+	text :=`拟定的唯一供货商名称及地址:
+供应商名称:宁波康达鼎新医疗器械有限公司(01包)、北京盛世源康科技发展有限公司(02包)
 `
-	var aaaaa  = regexp.MustCompile("([一二三四五六七八九十1-9][、]项目名称[::].*采购项目)([一二三四五六七八九十1-9][、]采购结果)")
-	if aaaaa.MatchString(text) {
-		text  = aaaaa.ReplaceAllString(text,"$1\n$2")
+	var packageReg6  = regexp.MustCompile("供应商名称[::](.{4,20}公司)[((]([0]?1包)[))][、,,](.{4,20}公司)[((]([0]?2包)[))]")
+	if packageReg6.MatchString(text) {
+		text  = packageReg6.ReplaceAllString(text,"\n$2\n中标单位:$1\n$4\n中标单位:$3")
 		log.Debug(text)
 	}else {
 		log.Debug("不匹配")