|
@@ -245,7 +245,6 @@ func CommonDataAnaly(k, tabletag, tabledesc string, v interface{}, isSite bool,
|
|
var glRex *regexp.Regexp = regexp.MustCompile("(成交|中标|候选|排名|名次|供应商排序|中标候选人|名单及其排序|排序)")
|
|
var glRex *regexp.Regexp = regexp.MustCompile("(成交|中标|候选|排名|名次|供应商排序|中标候选人|名单及其排序|排序)")
|
|
var djReg *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一二三四五][名]?(成交|中标|中选)?候选人)")
|
|
-var winnerRex *regexp.Regexp = regexp.MustCompile("(公司)$")
|
|
|
|
|
|
|
|
//判断数组string 是否重复
|
|
//判断数组string 是否重复
|
|
func isRepeatArrString(arr1,arr2 []string)bool{
|
|
func isRepeatArrString(arr1,arr2 []string)bool{
|
|
@@ -341,7 +340,7 @@ func (table *Table) KVFilter(isSite bool, codeSite string) {
|
|
for _, k := range table.SortKV.Keys {
|
|
for _, k := range table.SortKV.Keys {
|
|
if hxrRex.MatchString(k) {
|
|
if hxrRex.MatchString(k) {
|
|
v := table.SortKV.Map[k]
|
|
v := table.SortKV.Map[k]
|
|
- if new_v, ok := v.(string); ok && winnerRex.MatchString(new_v) {
|
|
|
|
|
|
+ if new_v, ok := v.(string); ok && findCandidate2.MatchString(new_v) {
|
|
winsArr = append(winsArr,new_v)
|
|
winsArr = append(winsArr,new_v)
|
|
sortsArr = append(sortsArr,k)
|
|
sortsArr = append(sortsArr,k)
|
|
}
|
|
}
|
|
@@ -944,7 +943,7 @@ func (table *Table) Analy(contactFormat *u.ContactFormat, isSite bool, codeSite
|
|
//if ztb >= 9 {
|
|
//if ztb >= 9 {
|
|
// return []*Table{}
|
|
// return []*Table{}
|
|
//}
|
|
//}
|
|
- if ztb > 10 {
|
|
|
|
|
|
+ if ztb > 20 {
|
|
return []*Table{}
|
|
return []*Table{}
|
|
}
|
|
}
|
|
//遍历节点,初始化table 结构 TRs Sorts
|
|
//遍历节点,初始化table 结构 TRs Sorts
|
|
@@ -1882,9 +1881,15 @@ func GetBidSort(str string, n int) int {
|
|
}
|
|
}
|
|
|
|
|
|
var cleardwReg *regexp.Regexp = regexp.MustCompile("[((]{1}\\d*[人元件个公斤户]/[人元件个公斤户][))]")
|
|
var cleardwReg *regexp.Regexp = regexp.MustCompile("[((]{1}\\d*[人元件个公斤户]/[人元件个公斤户][))]")
|
|
-var zbhxrReg *regexp.Regexp = regexp.MustCompile("(中标候选人|投标单位名称)")
|
|
|
|
-var zbhxrSortReg *regexp.Regexp = regexp.MustCompile("([第|弟][1-3一二三]名)")
|
|
|
|
-var zbhxrSortNameReg *regexp.Regexp = regexp.MustCompile("(中标候选人[第|弟][1-3一二三]名)|[第|弟][1-3一二三]中标候选人")
|
|
|
|
|
|
+var zbhxrReg *regexp.Regexp = regexp.MustCompile("(中标候选人|投标单位名称|候选人姓名)")
|
|
|
|
+var zbhxrSortReg_1 *regexp.Regexp = regexp.MustCompile("([第|弟][123一二三]名)")
|
|
|
|
+var zbhxrSortReg_2 *regexp.Regexp = regexp.MustCompile("^([123一二三])$")
|
|
|
|
+
|
|
|
|
+var zbhxrSortReg_3 *regexp.Regexp = regexp.MustCompile("^([123一二三])")
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+var zbhxrSortNameReg *regexp.Regexp = regexp.MustCompile("(中标候选人[第|弟][123一二三]名)|[第|弟][123一二三]中标候选人")
|
|
var zbhxrSecondReg *regexp.Regexp = regexp.MustCompile("(中标候选人[第|弟][2二]名)|[第|弟][2二]中标候选人")
|
|
var zbhxrSecondReg *regexp.Regexp = regexp.MustCompile("(中标候选人[第|弟][2二]名)|[第|弟][2二]中标候选人")
|
|
|
|
|
|
|
|
|
|
@@ -1899,6 +1904,10 @@ func (table *Table) FindTdVal(td *TD, direct, vdirect int) (b bool) {
|
|
near.KeyDirect = vdirect
|
|
near.KeyDirect = vdirect
|
|
td.KVDirect = direct
|
|
td.KVDirect = direct
|
|
key := repSpace.ReplaceAllString(near.Val, "")
|
|
key := repSpace.ReplaceAllString(near.Val, "")
|
|
|
|
+
|
|
|
|
+ //临时去掉换行-进行判断
|
|
|
|
+ tmp_tdVal := strings.ReplaceAll(td.Val,"\n","")
|
|
|
|
+
|
|
if key == "名称" && near.StartCol == 0 && near.Rowspan > 0 {
|
|
if key == "名称" && near.StartCol == 0 && near.Rowspan > 0 {
|
|
new_key := ""
|
|
new_key := ""
|
|
tr := table.TRs[:td.TR.RowPos]
|
|
tr := table.TRs[:td.TR.RowPos]
|
|
@@ -1927,50 +1936,52 @@ func (table *Table) FindTdVal(td *TD, direct, vdirect int) (b bool) {
|
|
}else {
|
|
}else {
|
|
key = new_key
|
|
key = new_key
|
|
}
|
|
}
|
|
- } else if zbhxrReg.MatchString(key) && findCandidate2.MatchString(td.Val) {
|
|
|
|
|
|
+ } else if zbhxrReg.MatchString(key) && findCandidate2.MatchString(tmp_tdVal){
|
|
new_key := "中标单位"
|
|
new_key := "中标单位"
|
|
tr_top := table.TRs[:td.TR.RowPos]
|
|
tr_top := table.TRs[:td.TR.RowPos]
|
|
if len(tr_top)>len(tr_top)-1 && len(tr_top)>0{ //上临查询
|
|
if len(tr_top)>len(tr_top)-1 && len(tr_top)>0{ //上临查询
|
|
tds := tr_top[len(tr_top)-1].TDs
|
|
tds := tr_top[len(tr_top)-1].TDs
|
|
- if len(tds)>td.EndCol && tds !=nil{
|
|
|
|
- td1 := tds[td.EndCol]
|
|
|
|
|
|
+ if len(tds)>td.ColPos && tds !=nil && len(tds)== len(td.TR.TDs){
|
|
|
|
+ td1 := tds[td.ColPos]
|
|
if zbhxrSortNameReg.MatchString(td1.Val) {
|
|
if zbhxrSortNameReg.MatchString(td1.Val) {
|
|
new_key = td1.Val
|
|
new_key = td1.Val
|
|
}else {
|
|
}else {
|
|
- if zbhxrSortReg.MatchString(td1.Val) {
|
|
|
|
- new_key = "中选候选人"+td1.Val
|
|
|
|
|
|
+ if zbhxrSortReg_1.MatchString(td1.Val) {
|
|
|
|
+ new_key = "中标候选人"+td1.Val
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- //if new_key=="中标单位" {
|
|
|
|
- // tr_left := table.TRs[:td.TR.RowPos+1] //左临查询
|
|
|
|
- // tds := tr_left[len(tr_left)-1].TDs
|
|
|
|
- // if td.EndCol-1 >=0 {
|
|
|
|
- // td1 := tds[td.EndCol-1]
|
|
|
|
- // if zbhxrSortNameReg.MatchString(td1.Val) {
|
|
|
|
- // new_key = td1.Val
|
|
|
|
- // }else {
|
|
|
|
- // if zbhxrSortReg.MatchString(td1.Val) {
|
|
|
|
- // new_key = "中选候选人"+td1.Val
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
|
|
+ if new_key=="中标单位" { //最左临查询
|
|
|
|
+ tr_left := table.TRs[:td.TR.RowPos+1]
|
|
|
|
+ tds_left := tr_left[len(tr_left)-1].TDs
|
|
|
|
+ if td.ColPos>0 {
|
|
|
|
+ td1 := tds_left[0]
|
|
|
|
+ if zbhxrSortReg_2.MatchString(td1.Val) { //针对排名情况
|
|
|
|
+ new_key = "中标候选人第"+td1.Val+"名"
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if new_key!="中标单位" {
|
|
|
|
+ td.Val = tmp_tdVal
|
|
|
|
+ }
|
|
key = new_key
|
|
key = new_key
|
|
- } else if key == "单位名称" {//左临上临-拼接
|
|
|
|
|
|
+ } else if key == "投标人名称" || key == "单位名称" {//左临上临-拼接
|
|
tmpnewnear := table.FindNear(near, 1)
|
|
tmpnewnear := table.FindNear(near, 1)
|
|
if tmpnewnear == nil {
|
|
if tmpnewnear == nil {
|
|
tmpnewnear = table.FindNear(near, 2)
|
|
tmpnewnear = table.FindNear(near, 2)
|
|
}
|
|
}
|
|
if tmpnewnear != nil {
|
|
if tmpnewnear != nil {
|
|
if (table.Tag=="成交候选人" || table.Tag=="中标候选人") &&
|
|
if (table.Tag=="成交候选人" || table.Tag=="中标候选人") &&
|
|
- zbhxrSortReg.MatchString(tmpnewnear.Val) {
|
|
|
|
|
|
+ zbhxrSortReg_1.MatchString(tmpnewnear.Val) {
|
|
key = "中选候选人"+tmpnewnear.Val
|
|
key = "中选候选人"+tmpnewnear.Val
|
|
}else {
|
|
}else {
|
|
if tmpnewnear.MustBH || tmpnewnear.BH {
|
|
if tmpnewnear.MustBH || tmpnewnear.BH {
|
|
- key = tmpnewnear.Val + near.Val
|
|
|
|
|
|
+ if tmpnewnear.Val == "中标候选人情况" && zbhxrSortReg_3.MatchString(td.Val){
|
|
|
|
+ key = "中标候选人第"+zbhxrSortReg_3.FindString(td.Val)+"名"
|
|
|
|
+ }else {
|
|
|
|
+ key = tmpnewnear.Val + near.Val
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -2077,13 +2088,8 @@ func (table *Table) FindTdVal(td *TD, direct, vdirect int) (b bool) {
|
|
tmapval := strings.TrimSpace(cleardwReg.ReplaceAllString(vals, ""))//已存在的kv
|
|
tmapval := strings.TrimSpace(cleardwReg.ReplaceAllString(vals, ""))//已存在的kv
|
|
tmapvaltd := strings.TrimSpace(cleardwReg.ReplaceAllString(td.Val, ""))
|
|
tmapvaltd := strings.TrimSpace(cleardwReg.ReplaceAllString(td.Val, ""))
|
|
if bvalfind {
|
|
if bvalfind {
|
|
- //if tmapvaltd == "" {
|
|
|
|
- // val = td.Val //vals + "__" + td.Val
|
|
|
|
- //} else {
|
|
|
|
- // val = tmapvaltd
|
|
|
|
- //}
|
|
|
|
- if key=="中标单位" {
|
|
|
|
- //不能覆盖---
|
|
|
|
|
|
+ if key=="中标单位" {//不能覆盖---
|
|
|
|
+
|
|
}else {
|
|
}else {
|
|
if tmapvaltd == "" {
|
|
if tmapvaltd == "" {
|
|
val = td.Val //vals + "__" + td.Val
|
|
val = td.Val //vals + "__" + td.Val
|
|
@@ -2092,24 +2098,27 @@ func (table *Table) FindTdVal(td *TD, direct, vdirect int) (b bool) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else{
|
|
} else{
|
|
- if key=="中标单位" {
|
|
|
|
- //新增不能数组
|
|
|
|
|
|
+ if key=="中标单位" { //新增不能数组
|
|
|
|
+
|
|
}else {
|
|
}else {
|
|
- tval := []string{}
|
|
|
|
- if tmapval == "" {
|
|
|
|
- tval = append(tval, vals)
|
|
|
|
- } else {
|
|
|
|
- tval = append(tval, tmapval)
|
|
|
|
- }
|
|
|
|
- if tmapvaltd == "" {
|
|
|
|
- tval = append(tval, td.Val)
|
|
|
|
- } else {
|
|
|
|
- tval = append(tval, tmapvaltd)
|
|
|
|
|
|
+ if zbhxrSortNameReg.MatchString(key){
|
|
|
|
+ //特殊~不构建数组
|
|
|
|
+ }else {
|
|
|
|
+ tval := []string{}
|
|
|
|
+ if tmapval == "" {
|
|
|
|
+ tval = append(tval, vals)
|
|
|
|
+ } else {
|
|
|
|
+ tval = append(tval, tmapval)
|
|
|
|
+ }
|
|
|
|
+ if tmapvaltd == "" {
|
|
|
|
+ tval = append(tval, td.Val)
|
|
|
|
+ } else {
|
|
|
|
+ tval = append(tval, tmapvaltd)
|
|
|
|
+ }
|
|
|
|
+ val = tval
|
|
|
|
+ varrpos = 1
|
|
}
|
|
}
|
|
- val = tval
|
|
|
|
- varrpos = 1
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
barr = true
|
|
barr = true
|
|
@@ -2172,7 +2181,7 @@ func (table *Table) FindNear(td *TD, direct int) *TD {
|
|
for _, td1 := range tds {
|
|
for _, td1 := range tds {
|
|
if td1.StartRow <= td.StartRow && td1.EndRow >= td.EndRow && td1.EndCol+1 == td.StartCol {
|
|
if td1.StartRow <= td.StartRow && td1.EndRow >= td.EndRow && td1.EndCol+1 == td.StartCol {
|
|
//找到左临节点
|
|
//找到左临节点
|
|
- if td1.BH || (zbhxrSortReg.MatchString(td1.Val)&&(table.Tag=="成交候选人"||table.Tag=="中标候选人")) {
|
|
|
|
|
|
+ if td1.BH || (zbhxrSortReg_1.MatchString(td1.Val)&&(table.Tag=="成交候选人"||table.Tag=="中标候选人")) {
|
|
return td1
|
|
return td1
|
|
} else {
|
|
} else {
|
|
if td1.HeadTd != nil && td1.HeadTd.KVDirect == direct {
|
|
if td1.HeadTd != nil && td1.HeadTd.KVDirect == direct {
|