|
@@ -67,7 +67,7 @@ func biddingTask(mapInfo map[string]interface{}) {
|
|
for tmp := make(map[string]interface{}); it.Next(tmp); c1++ {
|
|
for tmp := make(map[string]interface{}); it.Next(tmp); c1++ {
|
|
if c1%1000 == 0 {
|
|
if c1%1000 == 0 {
|
|
log.Info("biddingTask", zap.Int("current:", c1))
|
|
log.Info("biddingTask", zap.Int("current:", c1))
|
|
- log.Info("biddingAllTask", zap.Any("current:_id =>", tmp["_id"]))
|
|
|
|
|
|
+ log.Info("biddingTask", zap.Any("current:_id =>", tmp["_id"]))
|
|
}
|
|
}
|
|
ch <- true
|
|
ch <- true
|
|
wg.Add(1)
|
|
wg.Add(1)
|
|
@@ -353,6 +353,7 @@ func biddingTaskById(mapInfo map[string]interface{}) {
|
|
}
|
|
}
|
|
saveEsPool <- newTmp
|
|
saveEsPool <- newTmp
|
|
}
|
|
}
|
|
|
|
+ log.Info("biddingTaskById over", zap.Any("mapInfo", mapInfo))
|
|
}
|
|
}
|
|
|
|
|
|
// GetEsField @Description ES字段
|
|
// GetEsField @Description ES字段
|
|
@@ -360,8 +361,9 @@ func biddingTaskById(mapInfo map[string]interface{}) {
|
|
func GetEsField(tmp map[string]interface{}, stype string) (map[string]interface{}, map[string]interface{}) {
|
|
func GetEsField(tmp map[string]interface{}, stype string) (map[string]interface{}, map[string]interface{}) {
|
|
newTmp := make(map[string]interface{})
|
|
newTmp := make(map[string]interface{})
|
|
update := make(map[string]interface{}) // bidding 修改字段
|
|
update := make(map[string]interface{}) // bidding 修改字段
|
|
- saveErr := make(map[string]interface{})
|
|
|
|
- for field, ftype := range config.Conf.DB.Es.FieldEs {
|
|
|
|
|
|
+ //saveErr := make(map[string]interface{})
|
|
|
|
+ //for field, ftype := range config.Conf.DB.Es.FieldEs {
|
|
|
|
+ for field, ftype := range BiddingField {
|
|
if tmp[field] != nil { //
|
|
if tmp[field] != nil { //
|
|
if field == "purchasinglist" { //标的物处理
|
|
if field == "purchasinglist" { //标的物处理
|
|
purchasinglist_new := []map[string]interface{}{}
|
|
purchasinglist_new := []map[string]interface{}{}
|
|
@@ -369,7 +371,7 @@ func GetEsField(tmp map[string]interface{}, stype string) (map[string]interface{
|
|
for _, ls := range pcl {
|
|
for _, ls := range pcl {
|
|
lsm_new := make(map[string]interface{})
|
|
lsm_new := make(map[string]interface{})
|
|
lsm := ls.(map[string]interface{})
|
|
lsm := ls.(map[string]interface{})
|
|
- for pf, pftype := range config.Conf.DB.Es.FieldPurchasingList {
|
|
|
|
|
|
+ for pf, pftype := range BiddingLevelField[field] {
|
|
lsmv := lsm[pf]
|
|
lsmv := lsm[pf]
|
|
if lsmv != nil && reflect.TypeOf(lsmv).String() == pftype {
|
|
if lsmv != nil && reflect.TypeOf(lsmv).String() == pftype {
|
|
lsm_new[pf] = lsm[pf]
|
|
lsm_new[pf] = lsm[pf]
|
|
@@ -390,7 +392,7 @@ func GetEsField(tmp map[string]interface{}, stype string) (map[string]interface{
|
|
for _, p := range plist {
|
|
for _, p := range plist {
|
|
p1 := p.(map[string]interface{})
|
|
p1 := p.(map[string]interface{})
|
|
p2 := make(map[string]interface{})
|
|
p2 := make(map[string]interface{})
|
|
- for k, v := range config.Conf.DB.Es.FieldProcurementList {
|
|
|
|
|
|
+ for k, v := range BiddingLevelField[field] {
|
|
if k == "projectname" && util.ObjToString(p1[k]) == "" {
|
|
if k == "projectname" && util.ObjToString(p1[k]) == "" {
|
|
p2[k] = util.ObjToString(tmp["projectname"])
|
|
p2[k] = util.ObjToString(tmp["projectname"])
|
|
} else if k == "buyer" && util.ObjToString(p1[k]) == "" && util.ObjToString(tmp["buyer"]) != "" {
|
|
} else if k == "buyer" && util.ObjToString(p1[k]) == "" && util.ObjToString(tmp["buyer"]) != "" {
|
|
@@ -425,7 +427,7 @@ func GetEsField(tmp map[string]interface{}, stype string) (map[string]interface{
|
|
for _, win := range winnerorder {
|
|
for _, win := range winnerorder {
|
|
winMap_new := make(map[string]interface{})
|
|
winMap_new := make(map[string]interface{})
|
|
winMap := win.(map[string]interface{})
|
|
winMap := win.(map[string]interface{})
|
|
- for wf, wftype := range config.Conf.DB.Es.FieldWinnerOrder {
|
|
|
|
|
|
+ for wf, wftype := range BiddingLevelField[field] {
|
|
wfv := winMap[wf]
|
|
wfv := winMap[wf]
|
|
if wfv != nil && reflect.TypeOf(wfv).String() == wftype {
|
|
if wfv != nil && reflect.TypeOf(wfv).String() == wftype {
|
|
if wf == "sort" && util.Int64All(wfv) > 100 {
|
|
if wf == "sort" && util.Int64All(wfv) > 100 {
|
|
@@ -496,6 +498,13 @@ func GetEsField(tmp map[string]interface{}, stype string) (map[string]interface{
|
|
if tmp[field] != nil && util.Int64All(tmp[field]) > 0 {
|
|
if tmp[field] != nil && util.Int64All(tmp[field]) > 0 {
|
|
newTmp[field] = util.Int64All(tmp[field])
|
|
newTmp[field] = util.Int64All(tmp[field])
|
|
}
|
|
}
|
|
|
|
+ } else if field == "package" {
|
|
|
|
+ //分包信息处理
|
|
|
|
+ packages := dealPackage(tmp)
|
|
|
|
+ if len(packages) > 0 {
|
|
|
|
+ newTmp["package"] = packages
|
|
|
|
+ newTmp["subpackage"] = 1
|
|
|
|
+ }
|
|
} else { //其它字段判断数据类型,不正确舍弃
|
|
} else { //其它字段判断数据类型,不正确舍弃
|
|
if fieldval := tmp[field]; reflect.TypeOf(fieldval).String() != ftype {
|
|
if fieldval := tmp[field]; reflect.TypeOf(fieldval).String() != ftype {
|
|
continue
|
|
continue
|
|
@@ -523,10 +532,10 @@ func GetEsField(tmp map[string]interface{}, stype string) (map[string]interface{
|
|
update["pici"] = time.Now().Unix()
|
|
update["pici"] = time.Now().Unix()
|
|
}
|
|
}
|
|
|
|
|
|
- if len(saveErr) > 0 {
|
|
|
|
- saveErr["infoid"] = mongodb.BsonIdToSId(tmp["_id"])
|
|
|
|
- saveErrBidPool <- saveErr
|
|
|
|
- }
|
|
|
|
|
|
+ //if len(saveErr) > 0 {
|
|
|
|
+ // saveErr["infoid"] = mongodb.BsonIdToSId(tmp["_id"])
|
|
|
|
+ // saveErrBidPool <- saveErr
|
|
|
|
+ //}
|
|
return newTmp, update
|
|
return newTmp, update
|
|
}
|
|
}
|
|
|
|
|
|
@@ -749,3 +758,69 @@ func MatchService(tmp map[string]interface{}) (res string) {
|
|
|
|
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+//dealPackage 处理package 字段
|
|
|
|
+func dealPackage(tmp map[string]interface{}) (newpackages []map[string]interface{}) {
|
|
|
|
+ package1, ok1 := tmp["package"]
|
|
|
|
+ s_winner, ok2 := tmp["s_winner"]
|
|
|
|
+ bidamount, ok3 := tmp["bidamount"]
|
|
|
|
+ var innerWinners = make([]string, 0)
|
|
|
|
+ var biaoAmounts = make([]float64, 0)
|
|
|
|
+ // 三个字段都存在
|
|
|
|
+ if ok3 && ok2 && ok1 {
|
|
|
|
+ packageMap, ok := package1.(map[string]interface{})
|
|
|
|
+ if ok {
|
|
|
|
+ if len(packageMap) > 2 {
|
|
|
|
+ var packages = make([]map[string]interface{}, 0)
|
|
|
|
+ //var newTmp = make(map[string]interface{})
|
|
|
|
+ winner_amount_count := 0
|
|
|
|
+ for _, pack := range packageMap {
|
|
|
|
+ var newPackage = make(map[string]interface{})
|
|
|
|
+ pac, okk := pack.(map[string]interface{})
|
|
|
|
+ if okk {
|
|
|
|
+ _, okk1 := pac["winner"]
|
|
|
|
+ _, okk2 := pac["bidamount"]
|
|
|
|
+ _, okk3 := pac["name"]
|
|
|
|
+
|
|
|
|
+ if okk1 {
|
|
|
|
+ innerWinners = append(innerWinners, util.ObjToString(pac["winner"]))
|
|
|
|
+ }
|
|
|
|
+ if okk2 {
|
|
|
|
+ biaoAmounts = append(biaoAmounts, util.Float64All(pac["bidamount"]))
|
|
|
|
+ }
|
|
|
|
+ //winner bidamount 二个字段都存在
|
|
|
|
+ if okk1 && okk2 {
|
|
|
|
+ winner_amount_count++
|
|
|
|
+ newPackage["winner"] = pac["winner"]
|
|
|
|
+ newPackage["bidamount"] = pac["bidamount"]
|
|
|
|
+ if okk3 {
|
|
|
|
+ newPackage["name"] = pac["name"]
|
|
|
|
+ }
|
|
|
|
+ packages = append(packages, newPackage)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //出现次数大于1
|
|
|
|
+ if winner_amount_count > 1 {
|
|
|
|
+ swinner := util.ObjToString(s_winner)
|
|
|
|
+ swinners := strings.Split(swinner, ",")
|
|
|
|
+ //判断里外 winner 是否相等
|
|
|
|
+ eq := StringSliceValuesEqual(swinners, innerWinners)
|
|
|
|
+ if eq {
|
|
|
|
+ //判断金额相等
|
|
|
|
+ if Float64Equal1Precision(Float64SliceSum(biaoAmounts), util.Float64All(bidamount)) {
|
|
|
|
+ newpackages = packages
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return
|
|
|
|
+}
|