|
@@ -52,9 +52,6 @@ func kvparse(p *ju.JobKv, e *ExtractTask, sonJobResult *map[string]interface{},
|
|
}
|
|
}
|
|
tags := ju.GetTags(pk, isSite, codeSite)
|
|
tags := ju.GetTags(pk, isSite, codeSite)
|
|
if tags.Len() > 0 {
|
|
if tags.Len() > 0 {
|
|
- if ((*sonJobResult)["name"] == nil || (*sonJobResult)["name"] == "") && tags[0].Key == "项目名称" {
|
|
|
|
- (*sonJobResult)["name"] = pv[0].Value
|
|
|
|
- }
|
|
|
|
if qu.Float64All((*sonJobResult)["budget"]) == 0 && tags[0].Key == "预算" {
|
|
if qu.Float64All((*sonJobResult)["budget"]) == 0 && tags[0].Key == "预算" {
|
|
lock.Lock()
|
|
lock.Lock()
|
|
cfn := e.ClearFn["budget"]
|
|
cfn := e.ClearFn["budget"]
|
|
@@ -81,18 +78,24 @@ func kvparse(p *ju.JobKv, e *ExtractTask, sonJobResult *map[string]interface{},
|
|
if winnerorderNotReg.MatchString(pv[0].Value) {
|
|
if winnerorderNotReg.MatchString(pv[0].Value) {
|
|
continue
|
|
continue
|
|
}
|
|
}
|
|
- (*sonJobResult)["winner"] = pv[0].Value
|
|
|
|
|
|
+ for _, ev := range e.PkgRuleCores {
|
|
|
|
+ for _, evb := range ev.RuleBacks {
|
|
|
|
+ if evb.Field == "winner" && !evb.IsLua && pv[0].Value != "" {
|
|
|
|
+ pv[0].Value = evb.RegPreBac.Reg.ReplaceAllString(pv[0].Value, evb.RegPreBac.Replace)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if pv[0].Value != "" {
|
|
|
|
+ (*sonJobResult)["winner"] = pv[0].Value
|
|
|
|
+ }
|
|
}
|
|
}
|
|
-
|
|
|
|
- }
|
|
|
|
- if (*sonJobResult)["name"] == nil && pk == "名称" {
|
|
|
|
- (*sonJobResult)["name"] = pv[0].Value
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
var winnerorderNotReg = regexp.MustCompile(`(附件|否决原因|候选|招标失败|注册表|交易中心|序号内容|不足|公告|变更|采购|招标|废标|废止|流标|中标|投标|评标|开标|供应商|金额|万元|元整|预算|报价|单价|第(\d|一|二|三|四|五)(名|包)|排名|候选|确定|标段|(标|一|二|三|四|五)包|中选|成交|包号|(A|B|C|D|E|F|G)包|地址|详情|要求|推荐|名称|评审|得分|合同|平方米|公示期|结果|备注|说明|单位|代表|委托|工作日|营业(执|期)|通过|代码|电话|联系|条件|合理|费率|以上|以下|拟定|为|注:|\d[\s]{0,10}(\.|元|包|米|平米|平方米|吨|辆|千克|克|毫克|毫升|公升|套|件|瓶|箱|只|台|年|月|日|天|号)|(:|:|;|;|?|¥|\*|%)|^[a-zA-Z0-9-]{5,100}|^[a-zA-Z0-9-]{1,100}$|[a-zA-Z0-9-]{10,100})`)
|
|
var winnerorderNotReg = regexp.MustCompile(`(附件|否决原因|候选|招标失败|注册表|交易中心|序号内容|不足|公告|变更|采购|招标|废标|废止|流标|中标|投标|评标|开标|供应商|金额|万元|元整|预算|报价|单价|第(\d|一|二|三|四|五)(名|包)|排名|候选|确定|标段|(标|一|二|三|四|五)包|中选|成交|包号|(A|B|C|D|E|F|G)包|地址|详情|要求|推荐|名称|评审|得分|合同|平方米|公示期|结果|备注|说明|单位|代表|委托|工作日|营业(执|期)|通过|代码|电话|联系|条件|合理|费率|以上|以下|拟定|为|注:|\d[\s]{0,10}(\.|元|包|米|平米|平方米|吨|辆|千克|克|毫克|毫升|公升|套|件|瓶|箱|只|台|年|月|日|天|号)|(:|:|;|;|?|¥|\*|%)|^[a-zA-Z0-9-]{5,100}|^[a-zA-Z0-9-]{1,100}$|[a-zA-Z0-9-]{10,100})`)
|
|
|
|
+
|
|
//处理分包信息
|
|
//处理分包信息
|
|
func PackageDetail(j *ju.Job, e *ExtractTask, isSite bool, codeSite string) {
|
|
func PackageDetail(j *ju.Job, e *ExtractTask, isSite bool, codeSite string) {
|
|
qu.Try(func() {
|
|
qu.Try(func() {
|
|
@@ -110,7 +113,7 @@ func PackageDetail(j *ju.Job, e *ExtractTask, isSite bool, codeSite string) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
ordertmp := map[int][]map[string]interface{}{}
|
|
ordertmp := map[int][]map[string]interface{}{}
|
|
- ordertmpint := []int{}//中标排序人一共几组
|
|
|
|
|
|
+ ordertmpint := []int{} //中标排序人一共几组
|
|
//中标候选人
|
|
//中标候选人
|
|
for _, v := range j.Winnerorder {
|
|
for _, v := range j.Winnerorder {
|
|
if vtype, ok := v["type"].(int); ok {
|
|
if vtype, ok := v["type"].(int); ok {
|
|
@@ -134,7 +137,7 @@ func PackageDetail(j *ju.Job, e *ExtractTask, isSite bool, codeSite string) {
|
|
sort.Strings(tmpkeys)
|
|
sort.Strings(tmpkeys)
|
|
packageResult := map[string]map[string]interface{}{}
|
|
packageResult := map[string]map[string]interface{}{}
|
|
//packagenum := len(j.BlockPackage)
|
|
//packagenum := len(j.BlockPackage)
|
|
- tmpindex :=-1
|
|
|
|
|
|
+ tmpindex := -1
|
|
for _, pkName := range tmpkeys {
|
|
for _, pkName := range tmpkeys {
|
|
tmpindex++
|
|
tmpindex++
|
|
pkg, ok := j.BlockPackage[pkName]
|
|
pkg, ok := j.BlockPackage[pkName]
|
|
@@ -148,27 +151,27 @@ func PackageDetail(j *ju.Job, e *ExtractTask, isSite bool, codeSite string) {
|
|
sonJobResult["origin"] = pkg.Origin
|
|
sonJobResult["origin"] = pkg.Origin
|
|
sonJobResult["text"] = pkg.Text
|
|
sonJobResult["text"] = pkg.Text
|
|
sonJobResult["name"] = pkg.Name
|
|
sonJobResult["name"] = pkg.Name
|
|
- if pkg.Winner!= ""{
|
|
|
|
|
|
+ if pkg.Winner != "" {
|
|
sonJobResult["winner"] = pkg.Winner
|
|
sonJobResult["winner"] = pkg.Winner
|
|
}
|
|
}
|
|
if pkg.WinnerPerson != "" {
|
|
if pkg.WinnerPerson != "" {
|
|
sonJobResult["winnertel"] = pkg.WinnerTel
|
|
sonJobResult["winnertel"] = pkg.WinnerTel
|
|
sonJobResult["winnerperson"] = pkg.WinnerPerson
|
|
sonJobResult["winnerperson"] = pkg.WinnerPerson
|
|
}
|
|
}
|
|
- if pkg.IsTrueBudget{
|
|
|
|
|
|
+ if pkg.IsTrueBudget {
|
|
sonJobResult["budget"] = pkg.Budget
|
|
sonJobResult["budget"] = pkg.Budget
|
|
}
|
|
}
|
|
if pkg.IsTrueBidamount {
|
|
if pkg.IsTrueBidamount {
|
|
sonJobResult["bidamount"] = pkg.Bidamount
|
|
sonJobResult["bidamount"] = pkg.Bidamount
|
|
}
|
|
}
|
|
if pkg.Winner == "" && len(j.Winnerorder) > 0 {
|
|
if pkg.Winner == "" && len(j.Winnerorder) > 0 {
|
|
- if sonJobResult["winnerorder"] == nil && len(tmpkeys) == len(ordertmpint) {//分包和中标候选人长度一样
|
|
|
|
|
|
+ if sonJobResult["winnerorder"] == nil && len(tmpkeys) == len(ordertmpint) { //分包和中标候选人长度一样
|
|
//ordertmp[ordertmpint[tmpindex]] 取中标候选人组
|
|
//ordertmp[ordertmpint[tmpindex]] 取中标候选人组
|
|
sonJobResult["winnerorder"] = ordertmp[ordertmpint[tmpindex]]
|
|
sonJobResult["winnerorder"] = ordertmp[ordertmpint[tmpindex]]
|
|
if sonJobResult["bidamount"] == nil || sonJobResult["bidamount"].(float64) <= 0 {
|
|
if sonJobResult["bidamount"] == nil || sonJobResult["bidamount"].(float64) <= 0 {
|
|
if j.Winnerorder[0]["price"] != nil {
|
|
if j.Winnerorder[0]["price"] != nil {
|
|
- moneys := clear.ObjToMoney([]interface{}{j.Winnerorder[0]["price"],""})
|
|
|
|
- if len(moneys) > 0 &&moneys[len(moneys)-1].(bool){
|
|
|
|
|
|
+ moneys := clear.ObjToMoney([]interface{}{j.Winnerorder[0]["price"], ""})
|
|
|
|
+ if len(moneys) > 0 && moneys[len(moneys)-1].(bool) {
|
|
if vf, ok := moneys[0].(float64); ok {
|
|
if vf, ok := moneys[0].(float64); ok {
|
|
sonJobResult["bidamount"] = vf
|
|
sonJobResult["bidamount"] = vf
|
|
}
|
|
}
|