Bladeren bron

备份-金额优化-区间
下阶段:新增抽取字段

zhengkun 3 jaren geleden
bovenliggende
commit
133a5add8f

+ 1 - 1
src/config.json

@@ -32,7 +32,7 @@
     "iscltlog": false,
     "brandgoods": false,
     "pricenumber":true,
-    "udptaskid": "612c80fcff8a32117625b289",
+    "udptaskid": "60b493c2e138234cb4adb640",
     "nextNode": [],
     "udpport": "6601",
     "esconfig": {

+ 7 - 0
src/jy/clear/tonumber.go

@@ -194,6 +194,13 @@ func ObjToMoney(data []interface{}, spidercode ...string) []interface{} {
 			(data)[0] = totmpstr
 		}
 	}
+
+	if utf8.RuneCountInString(totmpstr) > 100 { //过长-字符无有效金额
+		(data)[0] = 0
+		data = append(data, false)
+		return data
+	}
+
 	if utf8.RuneCountInString(totmpstr) > 20 {
 		if numCapitals.MatchString(totmpstr) {
 			tmpstr = numCapitals.FindString(totmpstr)

+ 17 - 5
src/jy/extract/extract.go

@@ -609,6 +609,7 @@ func (e *ExtractTask) ExtractProcess(j, jf *ju.Job, isSite bool) {
 			//if jf != nil && jf.IsFile {
 			//	e.ExtractFile(jf, false, "")
 			//}
+
 			//合并数据
 			j.Block = append(j.Block, tmpj.Block...)
 			j.Winnerorder = append(j.Winnerorder, tmpj.Winnerorder...)
@@ -2211,17 +2212,28 @@ func AnalysisSaveResult(j, jf *ju.Job, e *ExtractTask) {
 				tmp["s_winner"] = tmp["winner"]
 				fieldSource["s_winner"] = fieldSource["winner"]
 			} else if savewinner != nil {
-				savewinner = RemoveReplicaSliceString(savewinner)
-				tmp["s_winner"] = strings.Join(savewinner, ",")
-
-				if len(savewinner)==1 {
+				if len(savewinner)==1 && tmp["winner"] != nil {
+					tmp["s_winner"] = tmp["winner"]
 					fieldSource["s_winner"] = fieldSource["winner"]
-				}else if len(savewinner)>1{
+				}else {
+					savewinner = RemoveReplicaSliceString(savewinner)
+					tmp["s_winner"] = strings.Join(savewinner, ",")
 					fieldSource["s_winner"] = map[string]interface{}{
 						"ext_type":"",
 						"ext_from":"package",
 					}
 				}
+
+				//savewinner = RemoveReplicaSliceString(savewinner)
+				//tmp["s_winner"] = strings.Join(savewinner, ",")
+				//if len(savewinner)==1 {
+				//	fieldSource["s_winner"] = fieldSource["winner"]
+				//}else if len(savewinner)>1{
+				//	fieldSource["s_winner"] = map[string]interface{}{
+				//		"ext_type":"",
+				//		"ext_from":"package",
+				//	}
+				//}
 			}
 		} else if tmp["winner"] != nil && tmp["winner"] != "" {
 			//没有分包取winner

+ 4 - 1
src/jy/pretreated/analystep.go

@@ -17,6 +17,9 @@ import (
 //投标文件格式 技术评分明细表
 var yjReg *regexp.Regexp = regexp.MustCompile("(打分表|负责人|单位|个人|投标人|项目|企业)业绩|主要人员相关资料|唱标记录|标的名称|否决投标的?情况说明")
 var blTextReg *regexp.Regexp = regexp.MustCompile("(打分表|负责人|单位|个人|投标人|项目|企业)业绩|主要人员相关资料|唱标记录|否决投标的?情况说明")
+var unblTextReg *regexp.Regexp = regexp.MustCompile("(项目业绩案例)")
+
+
 var hisReg = regexp.MustCompile("(开标记录|开标记录及投标报价|类似业绩|历史业绩|填报项目业绩|[得评]+[审打]{0,2}分情况|无效标)[::\n]*.*?[\n]?(</td>)")
 var hisReg2 = regexp.MustCompile("(开标记录|(中标候选人)?业绩|[得评]+[审打]{0,2}分情况|无效标)[::\n]*.*?[\n]?(.*原因及其依据.*[::]?)?[\n]?.*?[\n]?(</tr>|</table>|</td>)")
 
@@ -228,7 +231,7 @@ func AnalyStart(job *util.Job, isSite bool, codeSite string) {
 		}
 		bl.Text = HtmlToText(con)
 		FindProjectCode(bl.Text, job) //匹配项目编号
-		if blTextReg.MatchString(bl.Text) {
+		if blTextReg.MatchString(bl.Text) && !unblTextReg.MatchString(bl.Text)   {
 			if strings.Index(bl.Text, "业绩") > 1 {
 				bl.Text = bl.Text[:strings.Index(bl.Text, "业绩")]
 			}

+ 2 - 2
src/jy/pretreated/analytable.go

@@ -409,7 +409,7 @@ func (table *Table) KVFilter(isSite bool, codeSite string) {
 	}
 }
 
-var winMoneyReg *regexp.Regexp = regexp.MustCompile("(报价|投标价|投标总价|总金额)")
+var winMoneyReg *regexp.Regexp = regexp.MustCompile("(报价|投标价|投标总价|含税总价[((]元[))]|总金额)")
 var winNoMoneyReg *regexp.Regexp = regexp.MustCompile("(得分|时间|序号)")
 //处理table.SortKV.value为数组的情况
 func (table *Table) sortKVArr(as *SortMap, isSite bool, codeSite string) {
@@ -1018,7 +1018,7 @@ func (tn *Table) AnalyTables(contactFormat *u.ContactFormat, isSite bool, codeSi
 				table.extractPriceNumber()
 			}
 			res, _, _, _, _ := CheckCommon(table.Tag, "abandontable")
-			if !res {
+			if !res {//调试
 				//过滤、标准化、合并kv,table.StandKV,table.StandKVWeight
 				table.KVFilter(isSite, codeSite)
 			}

+ 17 - 5
src/jy/pretreated/winnerorder.go

@@ -53,7 +53,11 @@ var (
     winnerReg17 = regexp.MustCompile("(报价金额|投标金额|应答含税总价|预期中标价格)[::]?[\n]?([¥〇0-9\\.人民币零点壹贰叁肆伍陆柒捌玖拾佰仟万亿元圆角分整]+)")
     winnerReg18 = regexp.MustCompile("([中|投]标候选人[弟|第])([1-9一二三四五])[\\s]?名[::]([\u4E00-\u9FA5]{4,20})([((].*公司[))])?[,,\\s]+投标报价[::]([0-9\\.\\s 万元]+)")
     winnerReg19 = regexp.MustCompile("([弟|第][1-9一二三四五]名(中标候选人)?|[弟|第][1-9一二三四五]中标候选人)[::]?([\u4E00-\u9FA5]{4,20}公司)[((]?[,,]?(报价|投标报价|投标含税总价)[::]?([0-9\\.\\s万元]+)")
-    winnerReg19_1 = regexp.MustCompile("(第[一二三1-3]候选人)[::]([\u4E00-\u9FA5()()]{4,25}公司)[((]([0-9.,,万元]+)[))]")
+
+    //名称-金额
+    winnerReg_1 = regexp.MustCompile("(第[一二三1-3]候选人)[::]([\u4E00-\u9FA5()()]{4,25}公司)[((]([0-9.,,万元]+)[))]")
+    winnerReg_2 = regexp.MustCompile("(中标候选人第[一二三1-3][\\s]?名)[::]([\u4E00-\u9FA5()()]{4,25}公司)[,,]其他类型投标报价[::][不]?含税报价[\n]?[((]元[))][::][\n]?([0-9.,,万元]+)[,,]质量")
+    winnerReg_3 = regexp.MustCompile("([弟|第][1-9一二三四五]名(中标候选人)?|[弟|第][1-9一二三四五](中标|成交)候选人)[::\\s]+([\u4E00-\u9FA5]{4,20}公司)[,,;]?(报价|投标报价|投标含税总价|投标报含税总价)[为]?[::]?([0-9\\.\\s万元]+)")
 
 
 
@@ -61,8 +65,10 @@ var (
 
 	//特殊格式转化
 	winnerReg50 = regexp.MustCompile("(第[一二三]名)\n单位名称\n(.{4,20}公司)[\n\\s]+投标报价\n大写\n([\u4E00-\u9FA5]+)\n")
+
 	winnerReg51 = regexp.MustCompile("(中标候选人第[1-9一二三四五])[\\s](名)")
 	winnerReg52 = regexp.MustCompile("(中标金额[::][0-9.]+)\n([万元]+)")
+
     winnerReg53 = regexp.MustCompile("中标候选人[\\s ](第一候选人)[\\s ](第二候选人)[\\s ]?(第三候选人)?\n单位名称[\\s ](.{4,20}公司)[\\s ](.{4,20}公司)[\\s ]?(.{4,20}公司)?\n投标价[((]万元[))]([\\s  ]+)([0-9.]+)([\\s  ]+)([0-9.]+)([\\s  ]+)?([0-9.]+)?")
     winnerReg54 = regexp.MustCompile("(第[一二三1-3]中标候选人)[ \\s]([\u4E00-\u9FA5,]{4,20}公司)[ \\s](人民币|¥)([0-9,,.万元]+)")
     winnerReg55 = regexp.MustCompile("排序\\s(中标候选人)名称\\s投标报价.*\n([1一])[\\s]+(.{4,20}公司)[\\s]+([0-9.]+).*\n([2二])[\\s]+(.{4,20}公司)[\\s]+([0-9.]+).*\n")
@@ -145,7 +151,7 @@ func (wo *WinnerOrderEntity) Find(text string, flag bool, from int, isSite bool,
 	text = cleanWinnerReg2.ReplaceAllString(text,"${1}中标候选人:")
 
 
-
+	//单位类型
 	text = winnerReg5.ReplaceAllString(text, "\n${3}:${1}\n")
 	text = winnerReg20.ReplaceAllString(text,"\n${4}:${2}\n")
 	text = winnerReg21.ReplaceAllString(text,"\n${3}成交候选人:${1}\n")
@@ -154,7 +160,7 @@ func (wo *WinnerOrderEntity) Find(text string, flag bool, from int, isSite bool,
 	text = winnerReg23.ReplaceAllString(text,"\n${3}:${1}${2}\n")
 	text = winnerReg24.ReplaceAllString(text,"\n${4}:${1}\n")
 
-
+	//带金额
 	text = winnerReg8.ReplaceAllString(text,"\n${1}:${3}\n中标金额:${5}\n")
 	text = winnerReg9.ReplaceAllString(text,"\n${1}:${3}\n中标金额:${5}\n")
 	text = winnerReg10.ReplaceAllString(text,"\n${1}:${3}\n中标金额:${2}\n")
@@ -166,7 +172,13 @@ func (wo *WinnerOrderEntity) Find(text string, flag bool, from int, isSite bool,
 	text = winnerReg17.ReplaceAllString(text,"\n中标金额:${2}\n")
 	text = winnerReg18.ReplaceAllString(text,"\n${1}${2}名:${3}\n中标金额:${5}\n")
 	text = winnerReg19.ReplaceAllString(text,"\n${1}:${3}\n中标金额:${5}\n")
-	text = winnerReg19_1.ReplaceAllString(text,"\n${1}:${2} 中标金额:${3}\n")
+
+
+
+	//带金额
+	text = winnerReg_1.ReplaceAllString(text,"\n${1}:${2} 中标金额:${3}\n")
+	text = winnerReg_2.ReplaceAllString(text,"\n${1}:${2} 中标金额:${3}\n")
+	text = winnerReg_3.ReplaceAllString(text,"\n${1}:${4} 中标金额:${6}\n")
 
 
 
@@ -185,7 +197,7 @@ func (wo *WinnerOrderEntity) Find(text string, flag bool, from int, isSite bool,
 		text = winnerReg50.ReplaceAllString(text,"\n中标候选人${1}\n中标单位:${2}\n中标金额:${3}\n")
 	}
 
-	text = winnerReg51.ReplaceAllString(text,"${1}${2}\n中标金额:${3}\n")
+	text = winnerReg51.ReplaceAllString(text,"${1}${2}")
 	text = winnerReg52.ReplaceAllString(text,"${1}${2}")
 
 	text = winnerReg53.ReplaceAllString(text,"\n${1}:${4} 中标金额:${8} 万元\n${2}:${5} 中标金额:${10} 万元\n")

+ 6 - 6
src/main.go

@@ -68,7 +68,7 @@ func main() {
 	}()
 
 	//临时调试
-	testMain()
+	//testMain()
 
 	lock := make(chan bool)
 	<-lock
@@ -77,13 +77,13 @@ func main() {
 //验证规则
 func testMain()  {
 	text :=`
-第一中标候选人:中国联合网络通信有限公司东莞市分公司,投标含税总价:111.36万元
-第二中标候选人:中国移动通信集团广东有限公司东莞分公司,投标含税总价:108.576万元
+第一成交候选人: 上海英立视数字科技有限公司;投标报含税总价为483000.00元,含税增值税税率为13%,工期为合同签订后7天内完成项目建设、试运行及项目验收
+第二成交候选人: 广州函粤网络科技有限公司;投标报含税总价为487000.00元,含税增值税税率为13%,工期为合同签订后7天内完成项目建设、试运行及项目验收
 
 `
-	var winnerReg19 = regexp.MustCompile("([弟|第][1-9一二三四五]名(中标候选人)?|[弟|第][1-9一二三四五]中标候选人)[::]?([\u4E00-\u9FA5]{4,20}公司)[((]?[,,]?(报价|投标报价|投标含税总价)[::]?([0-9\\.\\s万元]+)")
-	if 	winnerReg19.MatchString(text) {
-		text = winnerReg19.ReplaceAllString(text,"\n${2}:${1}${4} 中标金额:${3} 万元\n${6}:${5}${8} 中标金额:${7} 万元\n")
+	var winnerReg_3 = regexp.MustCompile("([弟|第][1-9一二三四五]名(中标候选人)?|[弟|第][1-9一二三四五](中标|成交)候选人)[::\\s]+([\u4E00-\u9FA5]{4,20}公司)[,,;]?(报价|投标报价|投标含税总价|投标报含税总价)[为]?[::]?([0-9\\.\\s万元]+)")
+	if 	winnerReg_3.MatchString(text) {
+		text = winnerReg_3.ReplaceAllString(text,"\n${1}:${4} 中标金额:${6}\n")
 		log.Debug(text)
 	}else {
 		log.Debug("不匹配")