瀏覽代碼

分包处理

fengweiqiang 5 年之前
父節點
當前提交
c088b02c68
共有 2 個文件被更改,包括 30 次插入17 次删除
  1. 0 4
      udp_winner/timedTaskAgency.go
  2. 30 13
      udp_winner/timedTaskWinner.go

+ 0 - 4
udp_winner/timedTaskAgency.go

@@ -573,10 +573,6 @@ func TimedTaskAgency() {
 								savetmp[sk] = resulttmp[sk]
 							}
 						}
-						//判断分包
-						if tmp["package"] != nil {
-							PackageDealWith(&savetmp, tmp, erragency)
-						}
 						//tmps = append(tmps, savetmp)
 						savetmp["comeintime"] = time.Now().Unix()
 						savetmp["updatatime"] = time.Now().Unix()

+ 30 - 13
udp_winner/timedTaskWinner.go

@@ -80,19 +80,19 @@ func TaskWinner(mapinfo *map[string]interface{}) {
 							if pwinper, ok4 := vvv["winnerperson"].(string); ok4 && pwinper != "" {
 								ptmp := make(map[string]interface{})
 								ptmp["p_id"] = mgoId + "_pkg_" + i
-								ptmp["_id"] = bson.NewObjectId()
+								ptmp["_id"] = bson.NewObjectId().Hex()
 								ptmp["winner"] = winner
 								ptmp["winnerperson"] = pwinper
 								if pkgtel, ok6 := vvv["winnertel"].(string); ok6 {
 									ptmp["winnertel"] = pkgtel
 								}
-								if tmp["topscopeclass"]!=nil{
+								if tmp["topscopeclass"] != nil {
 									ptmp["topscopeclass"] = tmp["topscopeclass"]
 								}
 								//分包里中标单位和企业名一样
 								if pwinner == winner {
 									tmps = append(tmps, ptmp)
-								}else if conn.Exists(pwinner).Val() > 0 {
+								} else if conn.Exists(pwinner).Val() > 0 {
 									//分包里中标单位和企业名不一样,存量里匹配上了
 									bytes, _ := conn.Get(pwinner).Bytes()
 									cltmps := make([]map[string]interface{}, 0)
@@ -131,7 +131,7 @@ func TaskWinner(mapinfo *map[string]interface{}) {
 				log.Println(err)
 			}
 		}
-		log.Println("存量 winner mongo遍历完成:",num)
+		log.Println("存量 winner mongo遍历完成:", num)
 		SourceClient.DestoryMongoConn(SourceClientcc)
 		//遍历redis
 		if scan := conn.Scan(0, "", 100); scan.Err() != nil {
@@ -374,7 +374,7 @@ func Add(overid string, tmp map[string]interface{}) string {
 		}
 		//分包处理
 		if tmp["package"] != nil {
-			PackageDealWith(oldTmp, tmp, winner)
+			PackageDealWith(tmp, tmpConTopscopeclass, overid)
 		}
 		(*oldTmp)["contact"] = contactMaps
 		//mongo更新
@@ -660,7 +660,7 @@ func TimedTaskWinner() {
 						}
 						//判断分包
 						if tmp["package"] != nil {
-							PackageDealWith(&savetmp, tmp, errwinner)
+							PackageDealWith(tmp,tmpclass, tmpId)
 						}
 						//tmps = append(tmps, savetmp)
 						savetmp["comeintime"] = time.Now().Unix()
@@ -698,12 +698,29 @@ func TimedTaskWinner() {
 }
 
 //分包处理
-func PackageDealWith(contactMap *map[string]interface{}, tmp map[string]interface{}, comName string) []interface{} {
+func PackageDealWith(tmp map[string]interface{},  tmpclass []string,pkgid string) {
 	util.Catch()
-	//if v, ok := tmp["package"].(map[string]interface{}); ok {
-	//for i, pv := range v {
-	//	log.Println(i, pv)
-	//}
-	//}
-	return nil
+	if v, ok := tmp["package"].(map[string]interface{}); ok {
+		for i, pv := range v {
+			if ppv, ok2 := pv.(map[string]interface{}); ok2 {
+				pkgwinner, ok3 := ppv["winner"].(string)
+				if !ok3 || utf8.RuneCountInString(pkgwinner) < 4 {
+					continue
+				}
+				//创建中标单位放入临时表
+				vvv := make(map[string]interface{})
+				vvv["winner"] = pkgwinner
+				vvv["topscopeclass"] = tmpclass
+				vvv["pkg_id"] =pkgid+"_"+i
+				if winnerperson, ok := tmp["winnerperson"].(string); ok && winnerperson != "" &&
+					!Reg_xing.MatchString(winnerperson) && Reg_person.MatchString(winnerperson) {
+					vvv["winnerperson"] = winnerperson
+					if winnertel, ok := tmp["winnertel"].(string); ok && !Reg_xing.MatchString(winnertel) && Reg_tel.MatchString(winnertel) {
+						vvv["winnertel"] = winnertel
+					}
+				}
+				FClient.Save(Config["mgo_qyk_c_w_new"],vvv)
+			}
+		}
+	}
 }