|
@@ -129,6 +129,11 @@ var (
|
|
|
winnerOrderAndBidResult = regexp.MustCompile("((中标)?候选人|(中标|评标)结果)")
|
|
|
WinnerOrderStr = regexp.MustCompile(`(集团|公司|学校|中心|家具城|门诊|[大中小]+学|部|院|局|厂|店|所|队|社|室|厅|段|会|场|行)$`)
|
|
|
DoubtReg = regexp.MustCompile("(我中心|有(疑问|质疑|异议|意见)|(书面)?提出|不再受理|投诉|质疑|书面形式|监督|公示期(限)?)")
|
|
|
+
|
|
|
+
|
|
|
+ //新增-分包-表格-sortKV
|
|
|
+ budgetSortKVReg = regexp.MustCompile("(预算)")
|
|
|
+ winnerSortKVReg = regexp.MustCompile("(投标人[((]供应商[))]名称)")
|
|
|
)
|
|
|
|
|
|
//在解析时,判断表格元素是否隐藏
|
|
@@ -233,7 +238,7 @@ func CommonDataAnaly(k, tabletag, tabledesc string, v interface{}, isSite bool,
|
|
|
|
|
|
var glRex *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一二三四五][名]?(成交|中标|中选)?候选人)")
|
|
|
|
|
|
|
|
|
//对解析后的表格的kv进行过滤
|
|
@@ -247,23 +252,6 @@ func (table *Table) KVFilter(isSite bool, codeSite string) {
|
|
|
table.analyTdKV() //1.遍历每行每列td的sortkv添加到table.SorkVK中;2.td有子表格的处理
|
|
|
as := NewSortMap()
|
|
|
|
|
|
- //核心-候选人-相关-遍历拼接可能为候选人数据 - 有异常
|
|
|
- //winsArr := []string{}
|
|
|
- //sortsArr := []string{}
|
|
|
- //for _, k := range table.SortKV.Keys {
|
|
|
- // if hxrRex.MatchString(k) {
|
|
|
- // v := table.SortKV.Map[k]
|
|
|
- // if new_v, ok := v.(string); ok {
|
|
|
- // winsArr = append(winsArr,new_v)
|
|
|
- // sortsArr = append(sortsArr,k)
|
|
|
- // }
|
|
|
- // }
|
|
|
- //}
|
|
|
- //if len(winsArr)>1 {
|
|
|
- //as.AddKey("中标候选人名称", winsArr)
|
|
|
- //as.AddKey("中标候选人排序", sortsArr)
|
|
|
- //}
|
|
|
-
|
|
|
//遍历table.sortkv,进行过滤处理,并放入标准化KV中,如果值是数组跳到下一步处理
|
|
|
for _, k := range table.SortKV.Keys {
|
|
|
//遍历所有key sort.kv
|
|
@@ -291,6 +279,25 @@ func (table *Table) KVFilter(isSite bool, codeSite string) {
|
|
|
//处理值是数组的kv 放入标准化kv中 standKV //处理table.SortKV.value为数组的情况
|
|
|
table.sortKVArr(as, isSite, codeSite)
|
|
|
|
|
|
+ //if len(table.WinnerOrder) == 0 { //在计算一下是否拼接
|
|
|
+ // winsArr := []string{}
|
|
|
+ // sortsArr := []string{}
|
|
|
+ // for _, k := range table.SortKV.Keys {
|
|
|
+ // if hxrRex.MatchString(k) {
|
|
|
+ // v := table.SortKV.Map[k]
|
|
|
+ // if new_v, ok := v.(string); ok {
|
|
|
+ // winsArr = append(winsArr,new_v)
|
|
|
+ // sortsArr = append(sortsArr,k)
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // if len(winsArr)>1 {
|
|
|
+ // as.AddKey("中标候选人名称", winsArr)
|
|
|
+ // as.AddKey("中标候选人排序", sortsArr)
|
|
|
+ // table.sortKVArr(as, isSite, codeSite)
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+
|
|
|
if len(table.WinnerOrder) > 0 || !table.BPackage {
|
|
|
winnerOrder := []map[string]interface{}{}
|
|
|
maxSort := 0
|
|
@@ -2264,9 +2271,9 @@ func (tn *Table) CheckMultiPackageByTable(isSite bool, codeSite string) (b bool,
|
|
|
|
|
|
}
|
|
|
|
|
|
- }else { //新增 - 特殊情况 - 查找sortKV - 预算
|
|
|
+ }else { //新增 - 特殊情况 - 查找sortKV - 预算 - 中标单位
|
|
|
for k,v := range tn.SortKV.Map {
|
|
|
- if strings.Contains(k,"预算") {
|
|
|
+ if budgetSortKVReg.MatchString(k) {
|
|
|
if vs, ok := v.([]string); ok {
|
|
|
if len(index)==len(vs) {
|
|
|
moneys := clear.ObjToMoney([]interface{}{vs[nk], ""})
|
|
@@ -2282,6 +2289,13 @@ func (tn *Table) CheckMultiPackageByTable(isSite bool, codeSite string) (b bool,
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ if winnerSortKVReg.MatchString(k) {
|
|
|
+ if vs, ok := v.([]string); ok {
|
|
|
+ if len(index) == len(vs) {
|
|
|
+ bp.Winner = vs[nk]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
tn.BlockPackage.AddKey(v, bp) //table子包数组
|