|
@@ -911,6 +911,10 @@ func AssembelSave(tmp map[string]interface{}, IsSearchHosp, IsSearchEnps bool, a
|
|
|
}
|
|
|
tmp["industry"] = buyerclass
|
|
|
}
|
|
|
+ //三一重工
|
|
|
+ if appid == "jyGy5XQAEEAgRbTUNPKyRU" {
|
|
|
+ Optimization(tmp)
|
|
|
+ }
|
|
|
tmp["datasource"] = "增量匹配"
|
|
|
if dataSave != "" {
|
|
|
rdata := MgoSave.Save(dataSave, tmp)
|
|
@@ -1495,3 +1499,125 @@ func GetWinnerStyle(s_winner string, v map[string]interface{}) {
|
|
|
v["winner_style"] = ""
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+/*
|
|
|
+href_zb 第一条招标地址
|
|
|
+competitor 竞对友商
|
|
|
+manaCustomer 直管客户
|
|
|
+publishtime_zb 第一条招标发布时间
|
|
|
+isOptimization 是否优选 :优选规则:招标都非优选,结果数据有项目标识且与当前标讯ID不一致则为优选
|
|
|
+*/
|
|
|
+func Optimization(tmp map[string]interface{}) {
|
|
|
+ buyer := qu.ObjToString(tmp["buyer"])
|
|
|
+ s_winner := qu.ObjToString(tmp["s_winner"])
|
|
|
+ if buyer != "" {
|
|
|
+ tmp["manaCustomer"] = get50Partner(buyer)
|
|
|
+ }
|
|
|
+ if s_winner != "" {
|
|
|
+ tmp["competitor"] = get50Partner(s_winner)
|
|
|
+ }
|
|
|
+ bid := qu.ObjToString(tmp["id"])
|
|
|
+ pid := qu.ObjToString(tmp["projectId"])
|
|
|
+ subtype := qu.ObjToString(tmp["subtype"])
|
|
|
+
|
|
|
+ subtypeMap := map[string]bool{
|
|
|
+ "中标": true,
|
|
|
+ "合同": true,
|
|
|
+ "成交": true,
|
|
|
+ "单一": true,
|
|
|
+ }
|
|
|
+ tmp["isOptimization"] = 0
|
|
|
+ //中标数据需要找,招标地址,招标发布时间
|
|
|
+ if subtypeMap[subtype] {
|
|
|
+ if bid != pid {
|
|
|
+ tmp["isOptimization"] = 1
|
|
|
+ }
|
|
|
+ query := `{"query": {"bool": {"must": [{"term": {"ids": "%s"}}],"must_not": [],"should": []}}}`
|
|
|
+ querys := fmt.Sprintf(query, pid)
|
|
|
+ data := Es.Get("projectset", "projectset", querys)
|
|
|
+ if data != nil && len(*data) > 0 {
|
|
|
+ //内部字段
|
|
|
+ for _, v := range *data {
|
|
|
+ if list, ok := v["list"].([]interface{}); ok {
|
|
|
+ for _, l := range list {
|
|
|
+ if vs, oks := l.(map[string]interface{}); oks {
|
|
|
+ toptype := qu.ObjToString(vs["toptype"])
|
|
|
+ if toptype == "招标" {
|
|
|
+ infoid := qu.ObjToString(vs["infoid"])
|
|
|
+ publishtime := qu.Int64All(vs["publishtime"])
|
|
|
+ href := qu.ObjToString(vs["href"])
|
|
|
+ budget := qu.Float64All(vs["budget"])
|
|
|
+
|
|
|
+ tmp["infoid_zb"] = infoid
|
|
|
+ tmp["href_zb"] = href
|
|
|
+ tmp["budget_zb"] = budget
|
|
|
+ tmp["publishtime_zb"] = publishtime
|
|
|
+ break
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// getParentsByPartner 获取母公司
|
|
|
+func getParentsByPartner(companyId string) (res []map[string]interface{}) {
|
|
|
+ q := map[string]interface{}{"company_id": companyId}
|
|
|
+ info, _ := MgoEnps.Find("company_partner", q, nil, nil)
|
|
|
+ return info
|
|
|
+}
|
|
|
+
|
|
|
+func get50Partner(name string) string {
|
|
|
+ if name == "" {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ pname := ""
|
|
|
+
|
|
|
+ for _, vname := range strings.Split(name, ",") {
|
|
|
+ cdata, _ := MgoEnps.Find("company_base", map[string]interface{}{
|
|
|
+ "company_name": vname,
|
|
|
+ }, nil, nil)
|
|
|
+
|
|
|
+ companyId := ""
|
|
|
+ if cdata != nil && len(cdata) > 0 {
|
|
|
+ for _, v := range cdata {
|
|
|
+ use_flag := qu.IntAll(v["use_flag"])
|
|
|
+ if use_flag != 0 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ companyId = qu.ObjToString(v["company_id"])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if companyId != "" {
|
|
|
+ pdata := getParentsByPartner(companyId)
|
|
|
+
|
|
|
+ for _, v := range pdata {
|
|
|
+ stock_proportion := qu.Float64All(v["stock_proportion"])
|
|
|
+ //, "use_flag": 0, "is_history": 0
|
|
|
+ if qu.IntAll(v["use_flag"]) != 0 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if qu.IntAll(v["is_history"]) != 0 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if stock_proportion > 0.5 {
|
|
|
+ pname += qu.ObjToString(v["company_name"]) + ","
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return RemoveLastComma(pname)
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+// RemoveLastComma 如果字符串的最后一个字符是逗号,则移除它。
|
|
|
+func RemoveLastComma(str string) string {
|
|
|
+ if strings.HasSuffix(str, ",") {
|
|
|
+ return str[:len(str)-1]
|
|
|
+ }
|
|
|
+ return str
|
|
|
+}
|