Ver código fonte

分包金额

fengweiqiang 5 anos atrás
pai
commit
965ac3ff32

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

@@ -17,8 +17,8 @@ var regStrUnit *regexp.Regexp  //提取单位
 
 var moneyRegChar *regexp.Regexp //提取中文数字
 var numCapitals *regexp.Regexp  //中文大写金额过滤
-
-var regQianw *regexp.Regexp //部分千万单位
+var regStrJe *regexp.Regexp     //匹配数字金额
+var regQianw *regexp.Regexp     //部分千万单位
 
 var moneyChar = map[string]interface{}{ //"〇": "0", "零": "0",
 	"一": float64(1), "壹": float64(1), "二": float64(2), "贰": float64(2), "三": float64(3), "叁": float64(3), "四": float64(4), "肆": float64(4), "五": float64(5), "伍": float64(5),
@@ -34,7 +34,7 @@ func init() {
 	regOperator, _ = regexp.Compile(`[*|+|)*)]`)
 	regNumFloat, _ = regexp.Compile(`([1-9]\d*|0)(\.\d+)?`)
 	regStrUnit, _ = regexp.Compile(`[元|万|亿]`)
-
+	regStrJe = regexp.MustCompile(`([1-9]\d*|0)(\.\d+)?[\s|元|万|亿]{0,3}`)
 	regStrChar := `[〇|零|点|壹|贰|叁|肆|伍|陆|柒|捌|玖|拾|百|佰|千|仟|万|亿|億|元|圆|角|分|整|正]`
 	moneyRegChar, _ = regexp.Compile(regStrChar)
 	contentUnit, _ = regexp.Compile(`(万元|单位/万)`)
@@ -82,10 +82,17 @@ func ObjToFloat(data []interface{}) []interface{} {
 func ObjToMoney(data []interface{}) []interface{} {
 	isfindUnit := true
 	tmpstr := (data)[0]
-	if utf8.RuneCountInString(util.ObjToString(tmpstr)) > 20 {
-		(data)[0] = 0
-		data = append(data, false)
-		return data
+	totmpstr := util.ObjToString(tmpstr)
+	if utf8.RuneCountInString(totmpstr) > 20 {
+		if numCapitals.MatchString(totmpstr) {
+			tmpstr = numCapitals.FindString(totmpstr)
+		} else if regStrJe.MatchString(totmpstr) {
+			tmpstr = regStrJe.FindString(totmpstr)
+		} else {
+			(data)[0] = 0
+			data = append(data, false)
+			return data
+		}
 	}
 	ret := capitalMoney(data)[0]
 	if ret.(float64) < float64(10000) || ret.(float64) > float64(50000000000) {

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

@@ -162,7 +162,12 @@ func PackageDetail(j *ju.Job, e *ExtractTask, isSite bool, codeSite string) {
 							sonJobResult["winnerorder"] = ordertmp[ordertmpint[tmpindex]]
 							if sonJobResult["bidamount"] == nil || sonJobResult["bidamount"].(float64) <= 0 {
 								if j.Winnerorder[0]["price"] != nil {
-									sonJobResult["bidamount"] = qu.Float64All(j.Winnerorder[0]["price"])
+									moneys := clear.ObjToMoney([]interface{}{j.Winnerorder[0]["price"],""})
+									if len(moneys) > 0 &&moneys[len(moneys)-1].(bool){
+										if vf, ok := moneys[0].(float64); ok {
+											sonJobResult["bidamount"] = vf
+										}
+									}
 								}
 							}
 							if sonJobResult["winner"] == "" {

+ 6 - 0
src/jy/extract/score_jsondata.go

@@ -29,6 +29,9 @@ func JsonDataMergeProcessing(j *util.Job, e *ExtractTask) map[string][]*util.Ext
 				lockclear.Lock()
 				cfn := e.ClearFn[v]
 				lockclear.Unlock()
+				if len(cfn) == 0 {
+					continue
+				}
 				newNum := clear.DoClearFn(cfn, []interface{}{(*j.Jsondata)[v], ""})
 				//if util2.IntAll(newNum[0]) != 0 {
 					extFields := make([]*util.ExtField, 0)
@@ -125,6 +128,9 @@ func JsonDataMergeProcessing(j *util.Job, e *ExtractTask) map[string][]*util.Ext
 				lockclear.Lock()
 				cfn := e.ClearFn[v]
 				lockclear.Unlock()
+				if len(cfn) == 0 {
+					continue
+				}
 				newNum := clear.DoClearFn(cfn, []interface{}{(*j.Jsondata)[v], ""})
 				//if util2.IntAll(newNum[0]) != 0 {
 					extFields := make([]*util.ExtField, 0)

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

@@ -240,6 +240,7 @@ func (table *Table) KVFilter(isSite bool, codeSite string) {
 		}
 		v := table.SortKV.Map[k]
 		if _, ok := v.(string); ok { //table.SortKV.Value为字符串,匹配抽取关键词table.SortKV.Key,匹配到添加k,v到table.StandKV,table.StandKVWeight
+			k = pkgFilter.ReplaceAllString(k, "")
 			k = regSpliteSegment.ReplaceAllString(regReplAllSpace.ReplaceAllString(k, ""), "")
 			if k == "2、建设规模" {
 				k = "预算"
@@ -2166,6 +2167,9 @@ func (tn *Table) manyPackageProcessByIndex(index []string, standIndex_pos []int,
 							}
 						}
 					}
+					if k1 == "单价"{
+						continue
+					}
 					tn.assemblePackage(k1, v, sv2, isSite, codeSite)
 				}
 			}

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

@@ -60,6 +60,7 @@ var (
 	replSerial         = regexp.MustCompile("(\r\n|^)([\\d一二三四五六七八九十][、..::,])+\\d")
 	moreColonReg       = regexp.MustCompile("[::]+")
 	regFilter          = regexp.MustCompile("等$")
+	pkgFilter          = regexp.MustCompile("第[一二三四五六七八九十0-9A-Za-zⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ](子|合同|分|施工|监理)?(标段?|包|合同段|标包)|(子|合同|分|施工|监理)?(标|包)(段|号)?")
 	confusion          = map[string]string{
 		"参与": "canyu",
 	}