|
@@ -3,14 +3,12 @@ package main
|
|
|
import (
|
|
|
"data_tidb/config"
|
|
|
"fmt"
|
|
|
- "github.com/shopspring/decimal"
|
|
|
util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
|
|
|
"jygit.jydev.jianyu360.cn/data_processing/common_utils/log"
|
|
|
"jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
|
|
|
"reflect"
|
|
|
"regexp"
|
|
|
"sort"
|
|
|
- "strconv"
|
|
|
"strings"
|
|
|
"sync"
|
|
|
"time"
|
|
@@ -45,12 +43,12 @@ func TaskBidding() {
|
|
|
wg.Done()
|
|
|
}()
|
|
|
if util.IntAll(tmp["extracttype"]) != -1 {
|
|
|
- taskBase(tmp) //基础标讯数据
|
|
|
- taskExpand(tmp) //扩展数据
|
|
|
- taskDetail(tmp) //正文信息
|
|
|
- taskAtts(tmp) //附件信息
|
|
|
- taskIntent(tmp) //采购意向
|
|
|
- taskPackage(tmp) //分包
|
|
|
+ taskBase(tmp) //基础标讯数据
|
|
|
+ taskExpand(tmp) //扩展数据
|
|
|
+ //taskDetail(tmp) //正文信息
|
|
|
+ //taskAtts(tmp) //附件信息
|
|
|
+ //taskIntent(tmp) //采购意向
|
|
|
+ //taskPackage(tmp) //分包
|
|
|
}
|
|
|
}(tmp)
|
|
|
tmp = make(map[string]interface{})
|
|
@@ -59,78 +57,54 @@ func TaskBidding() {
|
|
|
log.Info(fmt.Sprintf("is over --- %d", count))
|
|
|
}
|
|
|
|
|
|
-// @Description 基本信息
|
|
|
func taskBase(tmp map[string]interface{}) {
|
|
|
- saveM := make(map[string]interface{})
|
|
|
- for _, nf := range BaseField {
|
|
|
- f := nf[2:]
|
|
|
- if f == "info_id" {
|
|
|
- saveM[nf] = mongodb.BsonIdToSId(tmp["_id"])
|
|
|
- } else if f == "area_code" {
|
|
|
- if tmp["area"] != nil {
|
|
|
- saveM[nf] = AreaCode[util.ObjToString(tmp["area"])]
|
|
|
- }
|
|
|
- } else if f == "city_code" {
|
|
|
- if tmp["area"] != nil && tmp["city"] != nil {
|
|
|
- c := util.ObjToString(tmp["area"]) + "," + util.ObjToString(tmp["city"])
|
|
|
- saveM[nf] = AreaCode[c]
|
|
|
- }
|
|
|
- } else if f == "district_code" {
|
|
|
- if tmp["area"] != nil && tmp["city"] != nil && tmp["district"] != nil {
|
|
|
- c := util.ObjToString(tmp["area"]) + "," + util.ObjToString(tmp["city"]) + "," + util.ObjToString(tmp["district"])
|
|
|
- saveM[nf] = AreaCode[c]
|
|
|
- }
|
|
|
- } else if f == "toptype_code" {
|
|
|
- if obj := util.ObjToString(tmp["toptype"]); obj != "" {
|
|
|
- saveM[nf] = TopTypeCode[obj]
|
|
|
- }
|
|
|
- } else if f == "subtype_code" {
|
|
|
- if obj := util.ObjToString(tmp["subtype"]); obj != "" {
|
|
|
- saveM[nf] = SubTypeCode[obj]
|
|
|
- }
|
|
|
- } else if f == "buyerclass_code" {
|
|
|
- if obj := util.ObjToString(tmp["buyerclass"]); obj != "" {
|
|
|
- saveM[nf] = BuyerCode[obj]
|
|
|
- }
|
|
|
- } else if f == "createtime" || f == "updatetime" {
|
|
|
- saveM[nf] = time.Now().Format(util.Date_Full_Layout)
|
|
|
- } else if f == "comeintime" || f == "publishtime" || f == "bidopentime" || f == "bidendtime" {
|
|
|
- if tmp[f] != nil && util.IntAll(tmp[f]) > 0 {
|
|
|
- t := util.Int64All(tmp[f])
|
|
|
- saveM[nf] = util.FormatDateByInt64(&t, util.Date_Full_Layout)
|
|
|
- }
|
|
|
- } else if f == "multipackage" || f == "isValidFile" {
|
|
|
- if tmp[f] == nil {
|
|
|
- saveM[nf] = 0
|
|
|
- } else {
|
|
|
- saveM[nf] = tmp[f]
|
|
|
- }
|
|
|
- } else if f == "buyer_id" {
|
|
|
- if b := util.ObjToString(tmp["buyer"]); b != "" {
|
|
|
- if code := getNameId(b); code != "" {
|
|
|
- saveM[nf] = code
|
|
|
- }
|
|
|
- }
|
|
|
- } else if f == "agency_id" {
|
|
|
- if b := util.ObjToString(tmp["agency"]); b != "" {
|
|
|
- if code := getNameId(b); code != "" {
|
|
|
- saveM[nf] = code
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- if tmp[f] != nil {
|
|
|
- if BaseVMap[f] != nil {
|
|
|
- saveM[nf], _ = verifyF(f, tmp[f], BaseVMap[f])
|
|
|
- } else {
|
|
|
- saveM[nf] = util.ObjToString(tmp[f])
|
|
|
- }
|
|
|
+ tmpid := mongodb.BsonIdToSId(tmp["_id"])
|
|
|
+ info := map[string]interface{}{}
|
|
|
+ info["s_info_id"] = tmpid
|
|
|
+ area, city, district := util.ObjToString(tmp["area"]), util.ObjToString(tmp["city"]), util.ObjToString(tmp["district"])
|
|
|
+ if area != "" {
|
|
|
+ info["area_code"] = AreaCode[area]
|
|
|
+ if city != "" {
|
|
|
+ info["city_code"] = AreaCode[area+","+city]
|
|
|
+ if district != "" {
|
|
|
+ info["district_code"] = AreaCode[area+","+city+","+district]
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- InsertGlobalMysqlData("dwd_f_bid_baseinfo", saveM, mongodb.BsonIdToSId(tmp["_id"]))
|
|
|
+ if toptype := util.ObjToString(tmp["toptype"]); toptype != "" {
|
|
|
+ info["s_toptype_code"] = TopTypeCode["toptype"]
|
|
|
+ }
|
|
|
+ if subtype := util.ObjToString(tmp["subtype"]); subtype != "" {
|
|
|
+ info["s_subtype_code"] = SubTypeCode[subtype]
|
|
|
+ }
|
|
|
+ if buyerclass := util.ObjToString(tmp["buyerclass"]); buyerclass != "" {
|
|
|
+ info["s_buyerclass_code"] = BuyerCode[buyerclass]
|
|
|
+ }
|
|
|
+ //特别结构
|
|
|
+ info["i_isValidFile"] = util.IntAll(tmp["isValidFile"])
|
|
|
+ info["i_multipackage"] = util.IntAll(tmp["multipackage"])
|
|
|
+ //文本相关
|
|
|
+ transferTextInfo(tmp, &info, []string{"title", "projectname", "projectcode", "purchasing", "site", "href"}, []int{})
|
|
|
+ //金额相关
|
|
|
+ transferMoneyRateInfo(tmp, &info, []string{"budget", "bidamount", "biddiscount"}, []float64{1000000000.0, 1000000000.0, 100.0})
|
|
|
+ //时间相关
|
|
|
+ transferDateTimeInfo(tmp, &info, []string{"comeintime", "publishtime", "bidopentime", "bidendtime"})
|
|
|
+ //主体相关
|
|
|
+ if code := getNameId(util.ObjToString(tmp["buyer"])); code != "" {
|
|
|
+ info["s_buyer_id"] = code
|
|
|
+ }
|
|
|
+ if code := getNameId(util.ObjToString(tmp["agency"])); code != "" {
|
|
|
+ info["s_agency_id"] = code
|
|
|
+ }
|
|
|
+ info["d_updatetime"] = time.Now().Format(util.Date_Full_Layout)
|
|
|
+ info["d_createtime"] = time.Now().Format(util.Date_Full_Layout)
|
|
|
+ InsertGlobalMysqlData("dwd_f_bid_baseinfo", info, mongodb.BsonIdToSId(tmp["_id"]))
|
|
|
}
|
|
|
|
|
|
func getNameId(name string) string {
|
|
|
+ if name == "" {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
info := MysqlTool.FindOne("dws_f_ent_baseinfo", map[string]interface{}{"name": name}, "name_id", "")
|
|
|
if info != nil && (*info)["name_id"] != nil {
|
|
|
return util.ObjToString((*info)["name_id"])
|
|
@@ -139,75 +113,46 @@ func getNameId(name string) string {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// @Description 扩展信息
|
|
|
func taskExpand(tmp map[string]interface{}) {
|
|
|
- saveM := make(map[string]interface{})
|
|
|
- for _, nf := range ExpandField {
|
|
|
- f := nf[2:]
|
|
|
- if f == "info_id" {
|
|
|
- saveM[nf] = mongodb.BsonIdToSId(tmp["_id"])
|
|
|
- } else if f == "project_startdate" || f == "project_completedate" || f == "signstarttime" || f == "bidendtime" || f == "bidstarttime" || f == "docstarttime" ||
|
|
|
- f == "docendtime" || f == "signaturedate" || f == "signendtime" {
|
|
|
- if tmp[f] != nil && util.IntAll(tmp[f]) > 0 {
|
|
|
- t := util.Int64All(tmp[f])
|
|
|
- saveM[nf] = util.FormatDateByInt64(&t, util.Date_Full_Layout)
|
|
|
- }
|
|
|
- } else if f == "createtime" || f == "updatetime" {
|
|
|
- saveM[nf] = time.Now().Format(util.Date_Full_Layout)
|
|
|
- } else if f == "bidway" {
|
|
|
- if util.ObjToString(tmp[f]) == "电子投标" {
|
|
|
- saveM[nf] = 1
|
|
|
- } else if util.ObjToString(tmp[f]) == "纸质投标" {
|
|
|
- saveM[nf] = 0
|
|
|
- }
|
|
|
- } else if f == "review_experts" { //评标专家
|
|
|
- if tmp[f] != nil {
|
|
|
- if reflect.TypeOf(tmp[f]).String() == "string" {
|
|
|
- saveM[nf] = tmp[f]
|
|
|
- } else if reflect.TypeOf(tmp[f]).String() == "[]interface {}" {
|
|
|
- if arr, ok := tmp[f].([]interface{}); ok {
|
|
|
- saveM[nf] = strings.Join(util.ObjArrToStringArr(arr), ",")
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } else if f == "bid_guarantee" || f == "contract_guarantee" {
|
|
|
- if tmp[f] != nil {
|
|
|
- if tmp[f].(bool) {
|
|
|
- saveM[nf] = 1
|
|
|
- } else {
|
|
|
- saveM[nf] = 0
|
|
|
- }
|
|
|
- }
|
|
|
- } else if f == "agencyfee" {
|
|
|
- if tmp[f] != nil {
|
|
|
- if reflect.TypeOf(tmp[f]).String() == "string" {
|
|
|
- v2, err := strconv.ParseFloat(strings.ReplaceAll(util.ObjToString(tmp[f]), "%", ""), 64)
|
|
|
- if err != nil {
|
|
|
- v, _ := decimal.NewFromFloat(v2).Div(decimal.NewFromFloat(float64(100))).Float64()
|
|
|
- saveM[nf] = v
|
|
|
- }
|
|
|
- } else {
|
|
|
- saveM[nf], _ = util.FormatFloat(util.Float64All(tmp[f]), 4)
|
|
|
- }
|
|
|
- }
|
|
|
- } else if f == "project_duration" {
|
|
|
- if tmp[f] != nil {
|
|
|
- saveM[nf] = util.IntAll(tmp[f])
|
|
|
- }
|
|
|
- } else {
|
|
|
- if tmp[f] != nil {
|
|
|
- if ExpandVMap[f] != nil {
|
|
|
- saveM[nf], _ = verifyF(f, tmp[f], ExpandVMap[f])
|
|
|
- } else {
|
|
|
- saveM[nf] = util.ObjToString(tmp[f])
|
|
|
- }
|
|
|
+ tmpid := mongodb.BsonIdToSId(tmp["_id"])
|
|
|
+ info := map[string]interface{}{}
|
|
|
+ info["s_info_id"] = tmpid
|
|
|
+ //文本相关
|
|
|
+ transferTextInfo(tmp, &info, []string{"projectperiod", "project_scale", "project_timeunit", "bidmethod", "getdocmethod", "currency", "funds", "payway", "bid_bond", "contract_bond", "contractcode", "buyerzipcode", "bidopenaddress", "buyeraddr", "agencyaddr", "projectaddr", "enterprise_qualification", "personnel_qualification", "performance_qualification", "enterprise_credit"}, []int{1000, 5000, 50, 255, 500, 20, 5000, 500, 1000, 500, 100, 100, 1000, 1000, 1000, 1000, 20000, 20000, 20000, 20000})
|
|
|
+ //时间相关
|
|
|
+ transferDateTimeInfo(tmp, &info, []string{"project_startdate", "project_completedate", "signstarttime", "bidendtime", "bidstarttime", "docstarttime", "docendtime", "signaturedate", "signendtime"})
|
|
|
+ //布尔相关
|
|
|
+ transferBoolInfo(tmp, &info, []string{"bid_guarantee", "contract_guarantee"})
|
|
|
+ //金额相关
|
|
|
+ transferMoneyRateInfo(tmp, &info, []string{"docamount", "agencyfee", "agencyrate"}, []float64{10000000.0, 10000000.0, 10000000.0})
|
|
|
+ //投标方式
|
|
|
+ bidway := util.ObjToString(tmp["bidway"])
|
|
|
+ if bidway == "电子投标" {
|
|
|
+ info["i_bidway"] = 1
|
|
|
+ } else if bidway == "纸质投标" {
|
|
|
+ info["i_bidway"] = 0
|
|
|
+ } else {
|
|
|
+
|
|
|
+ }
|
|
|
+ //评审专家
|
|
|
+ if tmp["review_experts"] != nil {
|
|
|
+ if reflect.TypeOf(tmp["review_experts"]).String() == "string" {
|
|
|
+ info["s_review_experts"] = tmp["review_experts"]
|
|
|
+ } else if reflect.TypeOf(tmp["review_experts"]).String() == "[]interface {}" {
|
|
|
+ if arr, ok := tmp["review_experts"].([]interface{}); ok {
|
|
|
+ info["s_review_experts"] = strings.Join(util.ObjArrToStringArr(arr), ",")
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- InsertGlobalMysqlData("dwd_f_bid_expand_baseinfo", saveM, mongodb.BsonIdToSId(tmp["_id"]))
|
|
|
+ //工期时长
|
|
|
+ if tmp["project_duration"] != nil {
|
|
|
+ info["i_project_duration"] = util.IntAll(tmp["project_duration"])
|
|
|
+ }
|
|
|
+ info["d_updatetime"] = time.Now().Format(util.Date_Full_Layout)
|
|
|
+ info["d_createtime"] = time.Now().Format(util.Date_Full_Layout)
|
|
|
+ InsertGlobalMysqlData("dwd_f_bid_expand_baseinfo", info, tmpid)
|
|
|
}
|
|
|
|
|
|
-// @Description 正文信息
|
|
|
func taskDetail(tmp map[string]interface{}) {
|
|
|
tmpid := mongodb.BsonIdToSId(tmp["_id"])
|
|
|
s_detail := util.ObjToString(tmp["detail"])
|
|
@@ -222,7 +167,6 @@ func taskDetail(tmp map[string]interface{}) {
|
|
|
InsertGlobalMysqlData("dwd_f_bid_detail", info, tmpid)
|
|
|
}
|
|
|
|
|
|
-// @Description 附件
|
|
|
func taskAtts(tmp map[string]interface{}) {
|
|
|
tmpid := mongodb.BsonIdToSId(tmp["_id"])
|
|
|
f_baseInfo := map[string]interface{}{}
|
|
@@ -280,7 +224,6 @@ func taskAttsAttach(att_info map[string]interface{}, tmpid string, f_id int64) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// @Description 采购意向
|
|
|
func taskIntent(tmp map[string]interface{}) {
|
|
|
procurementlist := IsMarkInterfaceMap(tmp["procurementlist"])
|
|
|
tmpid := mongodb.BsonIdToSId(tmp["_id"])
|
|
@@ -315,7 +258,6 @@ func taskIntent(tmp map[string]interface{}) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// @Description 分包基本信息
|
|
|
func taskPackage(tmp map[string]interface{}) {
|
|
|
tmpid := mongodb.BsonIdToSId(tmp["_id"])
|
|
|
//筛选分包
|