|
@@ -580,26 +580,68 @@ func ExtRuleCore(doc map[string]interface{}, e *ExtractTask, vc *RuleCore, j *ju
|
|
|
ExtRuleCoreByReg(vc.ExtFrom, doc, j, v, e)
|
|
|
}
|
|
|
}
|
|
|
- for k, v := range kvMap {
|
|
|
- if j.Result[k] == nil {
|
|
|
- j.Result[k] = [](*ju.ExtField){}
|
|
|
+ //如果只有一个分包,预算没有抽取到,把分包中的预算保存到外面
|
|
|
+ if vc.Field == "budget" && len(kvMap) == 0 {
|
|
|
+ if len(j.BlockPackage) == 1 {
|
|
|
+ for _, bp := range j.BlockPackage {
|
|
|
+ for fieldname, field := range vc.LFields {
|
|
|
+ if field != vc.Field {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ tp := ""
|
|
|
+ for k, v := range []*ju.JobKv{bp.ColonKV, bp.SpaceKV, bp.TableKV} {
|
|
|
+ if k == 0 {
|
|
|
+ tp = "colon"
|
|
|
+ } else if k == 1 {
|
|
|
+ tp = "space"
|
|
|
+ } else if k == 2 {
|
|
|
+ tp = "table"
|
|
|
+ }
|
|
|
+ if v == nil || v.KvTags == nil {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ for _, vv := range v.KvTags[fieldname] {
|
|
|
+ text := ju.TrimLRSpace(vv.Value, "")
|
|
|
+ if text != "" {
|
|
|
+ j.Result[vc.Field] = append(j.Result[vc.Field], &ju.ExtField{
|
|
|
+ Field: vc.Field,
|
|
|
+ Code: "CL_分包",
|
|
|
+ Type: tp,
|
|
|
+ MatchType: "package",
|
|
|
+ RuleText: bp.Text,
|
|
|
+ SourceValue: vv.Key,
|
|
|
+ Value: text,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break
|
|
|
+ }
|
|
|
}
|
|
|
- for _, tmp := range v {
|
|
|
- field := &ju.ExtField{Weight: qu.IntAll(tmp["weight"]), Field: k, Code: qu.ObjToString(tmp["code"]), Type: qu.ObjToString(tmp["type"]), MatchType: qu.ObjToString(tmp["matchtype"]), RuleText: qu.ObjToString(tmp["ruletext"]), SourceValue: tmp["sourcevalue"], Value: tmp["value"]}
|
|
|
- if tmp["blocktag"] != nil {
|
|
|
- btag := make(map[string]string)
|
|
|
- for k := range tmp["blocktag"].(map[string]bool) {
|
|
|
- blocktag.Lock()
|
|
|
- if TagConfigDesc[k] != "" {
|
|
|
- btag[k] = TagConfigDesc[k]
|
|
|
+ } else {
|
|
|
+ for k, v := range kvMap {
|
|
|
+ if j.Result[k] == nil {
|
|
|
+ j.Result[k] = [](*ju.ExtField){}
|
|
|
+ }
|
|
|
+ for _, tmp := range v {
|
|
|
+ field := &ju.ExtField{Weight: qu.IntAll(tmp["weight"]), Field: k, Code: qu.ObjToString(tmp["code"]), Type: qu.ObjToString(tmp["type"]), MatchType: qu.ObjToString(tmp["matchtype"]), RuleText: qu.ObjToString(tmp["ruletext"]), SourceValue: tmp["sourcevalue"], Value: tmp["value"]}
|
|
|
+ if tmp["blocktag"] != nil {
|
|
|
+ btag := make(map[string]string)
|
|
|
+ for k := range tmp["blocktag"].(map[string]bool) {
|
|
|
+ blocktag.Lock()
|
|
|
+ if TagConfigDesc[k] != "" {
|
|
|
+ btag[k] = TagConfigDesc[k]
|
|
|
+ }
|
|
|
+ blocktag.Unlock()
|
|
|
}
|
|
|
- blocktag.Unlock()
|
|
|
+ field.BlockTag = btag
|
|
|
}
|
|
|
- field.BlockTag = btag
|
|
|
+ j.Result[k] = append(j.Result[k], field)
|
|
|
}
|
|
|
- j.Result[k] = append(j.Result[k], field)
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//抽取-规则-kv
|