Przeglądaj źródła

Merge branch 'dev3.2' of http://192.168.3.207:10080/qmx/jy-data-extract into dev3.2

zhangjinkun 6 lat temu
rodzic
commit
c323b39b4e
2 zmienionych plików z 50 dodań i 3 usunięć
  1. 42 2
      src/jy/pretreated/analystep.go
  2. 8 1
      src/jy/pretreated/analytable.go

+ 42 - 2
src/jy/pretreated/analystep.go

@@ -4,6 +4,7 @@
 package pretreated
 
 import (
+	"encoding/json"
 	"jy/util"
 	qutil "qfw/util"
 	"strings"
@@ -29,7 +30,7 @@ func AnalyStart(job *util.Job) {
 		}
 	}
 	blockArrays, _ := DivideBlock(job.CategorySecond, con, 1, job.RuleBlock) //分块
-	if len(blockArrays) > 0 {                                                //有分块
+	if len(blockArrays) > 0 { //有分块
 		//从块里面找分包
 		job.BlockPackage = FindPackageFromBlocks(&blockArrays, job.Title) //从块里面找分包
 		for _, bl := range blockArrays {
@@ -76,7 +77,7 @@ func AnalyStart(job *util.Job) {
 		if job.Winnerorder == nil || len(job.Winnerorder) == 0 {
 			bl.Winnerorder = winnerOrderEntity.Find(bl.Text, true, 1)
 		}
-
+		findProjectCode(newCon, job) //匹配项目编号
 		//调用kv解析
 		bl.ColonKV = GetKVAll(newCon, "", nil, 1)
 		bl.SpaceKV = SspacekvEntity.Entrance(newCon, "", nil)
@@ -93,6 +94,45 @@ func AnalyStart(job *util.Job) {
 	}
 }
 
+//匹配项目编号
+func findProjectCode(newCon string, job *util.Job) {
+	newCon = TextAfterRemoveTable(newCon)
+	if strings.TrimSpace(newCon) == "" {
+		return
+	}
+
+	var proCode string
+	proCode = projectcodeReg.FindString(newCon)
+	blCode := &util.Block{}
+	if proCode != "" {
+		ckv := GetKVAll(proCode, job.Title, nil, 1)
+		blCode.Text = proCode
+		blCode.ColonKV = ckv
+		job.Block = append(job.Block, blCode)
+	}else if proCode = projectcodeReg2.FindString(newCon);proCode !=""{
+		ckv := GetKVAll(proCode, job.Title, nil, 1)
+		blCode.Text = proCode
+		blCode.ColonKV = ckv
+		job.Block = append(job.Block, blCode)
+	}else if proCode = jsonReg.FindString(newCon);proCode != ""{
+		jsonMap := make(map[string]string)
+		json.Unmarshal([]byte(proCode),&jsonMap)
+		blCode.Text = proCode
+		jobKv := util.NewJobKv()
+		for k,v := range jsonMap{
+			tmpkv := new(util.Kv)
+			tmpkv.Line = k+v
+			tmpkv.Key = k
+			tmpkv.Value = v
+			jobKv.Kvs = append(jobKv.Kvs, tmpkv)
+		}
+		jobKv.Kv = jsonMap
+		blCode.ColonKV = jobKv
+		job.Block = append(job.Block, blCode)
+	}
+
+}
+
 //分析table解析结果
 func processTableResult(tabres *TableResult, block *util.Block, job *util.Job) {
 	//解析结果中的kv

+ 8 - 1
src/jy/pretreated/analytable.go

@@ -107,6 +107,9 @@ var (
 	underline                   = regexp.MustCompile("_+$")
 	iswinnertabletag            = regexp.MustCompile("(中标|候选人|成交|结果)")
 	nswinnertabletag            = regexp.MustCompile("[评得分估]+")
+	projectcodeReg              = regexp.MustCompile(`((|\(|\[){1}(编号|项目编号|标段编号){1}(:|:)(.){4,30}()|\)|\])`)
+	projectcodeReg2             = regexp.MustCompile(`(编号|项目编号|标段编号){1}(:|:)(.){4,30}[0-9]`)
+	jsonReg						= regexp.MustCompile(`\{".*\":\".+\"}`)
 )
 
 //在解析时,判断表格元素是否隐藏
@@ -751,6 +754,7 @@ func (table *Table) createTabe(trs *goquery.Selection) {
 		tds := sel.ChildrenFiltered("td,th")
 		TR := NewTR(table)
 		tdTextIsNull := false
+		var empty int
 		tds.Each(func(m int, selm *goquery.Selection) {
 			//对隐藏列不处理!!!
 			if IsHide(selm) {
@@ -761,7 +765,10 @@ func (table *Table) createTabe(trs *goquery.Selection) {
 			//num++
 			TR.AddTD(td)
 			if td.Val == "" && td.SonTableResult == nil { //删除一个tr,tr中所有td是空值的
-				tdTextIsNull = true
+				empty++
+				if tds.Size() == empty {
+					tdTextIsNull = true
+				}
 			}
 		})
 		//向table添加每行不为空的tr