|
@@ -153,16 +153,29 @@ func main() {
|
|
|
}
|
|
|
}
|
|
|
bidtype := util.ObjToString(v["bidtype"])
|
|
|
+ toptype := util.ObjToString(v["toptype"])
|
|
|
+ subtype := util.ObjToString(v["subtype"])
|
|
|
if bidtype != "" {
|
|
|
bidtypeMap := map[string]string{
|
|
|
"招标": "0",
|
|
|
"邀标": "1",
|
|
|
- "竞价": "2",
|
|
|
"竞谈": "2",
|
|
|
"单一": "3",
|
|
|
"询价": "4",
|
|
|
+ "竞价": "6",
|
|
|
}
|
|
|
- v["bidtype"] = bidtypeMap["bidtype"]
|
|
|
+ v["bidtype"] = bidtypeMap[bidtype]
|
|
|
+ } else {
|
|
|
+ subtypeMap := map[string]string{
|
|
|
+ "招标": "0",
|
|
|
+ "邀标": "1",
|
|
|
+ "竞谈": "2",
|
|
|
+ "单一": "3",
|
|
|
+ "询价": "4",
|
|
|
+ "其它": "5",
|
|
|
+ "竞价": "6",
|
|
|
+ }
|
|
|
+ v["bidtype"] = subtypeMap[subtype]
|
|
|
}
|
|
|
bidway := util.ObjToString(v["bidway"])
|
|
|
if bidway == "电子投标" {
|
|
@@ -220,41 +233,55 @@ func main() {
|
|
|
v["buyerperson"] = strings.Split(buyerperson, ",")
|
|
|
v["buyertel"] = strings.Split(buyertel, ",")
|
|
|
winnerArr := strings.Split(s_winner, ",")
|
|
|
- v["s_winner"] = winnerArr
|
|
|
v["winnerperson"] = strings.Split(winnerperson, ",")
|
|
|
v["winnertel"] = strings.Split(winnertel, ",")
|
|
|
v["agency"] = strings.Split(agency, ",")
|
|
|
v["agencyperson"] = strings.Split(agencyperson, ",")
|
|
|
v["agencytel"] = strings.Split(agencytel, ",")
|
|
|
if v["budget"] != nil {
|
|
|
- v["budget"] = map[string]string{
|
|
|
- "unit": "",
|
|
|
- "amount": strconv.FormatFloat(util.Float64All(v["budget"]), 'f', -1, 64),
|
|
|
+ v["budget"] = []map[string]string{
|
|
|
+ map[string]string{
|
|
|
+ "unit": "",
|
|
|
+ "amount": strconv.FormatFloat(util.Float64All(v["budget"]), 'f', -1, 64),
|
|
|
+ },
|
|
|
}
|
|
|
} else {
|
|
|
- v["budget"] = map[string]string{
|
|
|
- "unit": "",
|
|
|
- "amount": "",
|
|
|
+ v["budget"] = []map[string]string{
|
|
|
+ map[string]string{
|
|
|
+ "unit": "",
|
|
|
+ "amount": "",
|
|
|
+ },
|
|
|
}
|
|
|
}
|
|
|
if v["bidamount"] != nil {
|
|
|
- v["bidamount"] = map[string]string{
|
|
|
- "unit": "",
|
|
|
- "amount": strconv.FormatFloat(util.Float64All(v["bidamount"]), 'f', -1, 64),
|
|
|
+ v["bidamount"] = []map[string]string{
|
|
|
+ map[string]string{
|
|
|
+ "unit": "",
|
|
|
+ "amount": strconv.FormatFloat(util.Float64All(v["bidamount"]), 'f', -1, 64),
|
|
|
+ },
|
|
|
}
|
|
|
} else {
|
|
|
- v["bidamount"] = map[string]string{
|
|
|
- "unit": "",
|
|
|
- "amount": "",
|
|
|
+ v["bidamount"] = []map[string]string{
|
|
|
+ map[string]string{
|
|
|
+ "unit": "",
|
|
|
+ "amount": "",
|
|
|
+ },
|
|
|
}
|
|
|
}
|
|
|
- if v["multipackage"] != nil {
|
|
|
- v["multipackage"] = 0
|
|
|
+ multipackage := 0
|
|
|
+ isOptimization := 0
|
|
|
+ if v["multipackage"] == nil {
|
|
|
+ v["multipackage"] = "0"
|
|
|
} else {
|
|
|
v["multipackage"] = fmt.Sprint(v["multipackage"])
|
|
|
+ multipackage = util.IntAll(v["multipackage"])
|
|
|
+ }
|
|
|
+ if v["isOptimization"] == nil {
|
|
|
+ v["isOptimization"] = "0"
|
|
|
+ } else {
|
|
|
+ v["isOptimization"] = fmt.Sprint(v["isOptimization"])
|
|
|
+ isOptimization = util.IntAll(v["isOptimization"])
|
|
|
}
|
|
|
- toptype := util.ObjToString(v["toptype"])
|
|
|
- subtype := util.ObjToString(v["subtype"])
|
|
|
if subtype == "其它" {
|
|
|
if toptype == "预告" {
|
|
|
v["toptype"] = "1"
|
|
@@ -275,72 +302,252 @@ func main() {
|
|
|
v["subtype"] = s
|
|
|
}
|
|
|
}
|
|
|
+ //多包合并
|
|
|
+ if isOptimization == 1 && multipackage == 1 && v["package"] != nil {
|
|
|
+ wArr := []string{}
|
|
|
+ bArr := []map[string]string{}
|
|
|
+ if packages, ok := v["package"].(map[string]interface{}); ok {
|
|
|
+ for _, vv := range packages {
|
|
|
+ if packages1, oks := vv.(map[string]interface{}); oks {
|
|
|
+ if winner_all, wok := packages1["winner_all"].([]map[string]interface{}); wok {
|
|
|
+ for _, win := range winner_all {
|
|
|
+ winnerStr := util.ObjToString(win["winner"])
|
|
|
+ bidamountStr := strconv.FormatFloat(util.Float64All(win["bidamount"]), 'f', -1, 64)
|
|
|
+ wArr = append(wArr, winnerStr)
|
|
|
+ bArr = append(bArr, map[string]string{"unit": "", "amount": bidamountStr})
|
|
|
+ }
|
|
|
+ } else if winner_all, wok := packages1["winner_all"].([]interface{}); wok {
|
|
|
+ for _, win := range winner_all {
|
|
|
+ if win1, wok1 := win.(map[string]interface{}); wok1 {
|
|
|
+ winnerStr := util.ObjToString(win1["winner"])
|
|
|
+ bidamountStr := strconv.FormatFloat(util.Float64All(win1["bidamount"]), 'f', -1, 64)
|
|
|
+ wArr = append(wArr, winnerStr)
|
|
|
+ bArr = append(bArr, map[string]string{"unit": "", "amount": bidamountStr})
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ winnerArr = wArr
|
|
|
+ v["winner"] = wArr
|
|
|
+ v["bidamount"] = bArr
|
|
|
+ }
|
|
|
+ } else if multipackage == 1 && v["package"] != nil {
|
|
|
+ wArr := []string{}
|
|
|
+ bArr := []map[string]string{}
|
|
|
+ if packages, ok := v["package"].([]map[string]interface{}); ok {
|
|
|
+ for _, vv := range packages {
|
|
|
+ winnerStr := util.ObjToString(vv["winner"])
|
|
|
+ bidamountStr := strconv.FormatFloat(util.Float64All(vv["bidamount"]), 'f', -1, 64)
|
|
|
+ wArr = append(wArr, winnerStr)
|
|
|
+ bArr = append(bArr, map[string]string{"unit": "", "amount": bidamountStr})
|
|
|
+ }
|
|
|
+ } else if packages, ok := v["package"].([]interface{}); ok {
|
|
|
+ for _, vv := range packages {
|
|
|
+ if packages1, vvok := vv.(map[string]interface{}); vvok {
|
|
|
+ winnerStr := util.ObjToString(packages1["winner"])
|
|
|
+ bidamountStr := strconv.FormatFloat(util.Float64All(packages1["bidamount"]), 'f', -1, 64)
|
|
|
+ wArr = append(wArr, winnerStr)
|
|
|
+ bArr = append(bArr, map[string]string{"unit": "", "amount": bidamountStr})
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ winnerArr = wArr
|
|
|
+ v["winner"] = wArr
|
|
|
+ v["bidamount"] = bArr
|
|
|
+ } else if strings.Contains(s_winner, ",") {
|
|
|
+ winnerArr = []string{s_winner}
|
|
|
+ }
|
|
|
+ //
|
|
|
+ delete(v, "package")
|
|
|
tagNameArr := []string{}
|
|
|
mainCompanyArr := []string{}
|
|
|
+ v["s_winner"] = winnerArr
|
|
|
for _, vv := range winnerArr {
|
|
|
isOk := false
|
|
|
- for _, yd := range strings.Split(ydkey, ",") {
|
|
|
- if strings.Contains(yd, "&&") {
|
|
|
- keys := strings.Split(yd, "&&")
|
|
|
- key1, key2 := keys[0], keys[1]
|
|
|
- if strings.Contains(vv, key1) && strings.Contains(vv, key2) {
|
|
|
- isOk = true
|
|
|
- tagNameArr = append(tagNameArr, ydtag)
|
|
|
- mainCompanyArr = append(mainCompanyArr, ydcompany)
|
|
|
+ if strings.Contains(vv, ",") {
|
|
|
+ v["multipackage"] = "2"
|
|
|
+ tagNameArr111 := []string{}
|
|
|
+ mainCompanyArr111 := []string{}
|
|
|
+ for _, vvv := range strings.Split(vv, ",") {
|
|
|
+ isOks := false
|
|
|
+ for _, yd := range strings.Split(ydkey, ",") {
|
|
|
+ if strings.Contains(yd, "&&") {
|
|
|
+ keys := strings.Split(yd, "&&")
|
|
|
+ key1, key2 := keys[0], keys[1]
|
|
|
+ if strings.Contains(vvv, key1) && strings.Contains(vvv, key2) {
|
|
|
+ if !isOks {
|
|
|
+ isOks = true
|
|
|
+ tagNameArr111 = append(tagNameArr111, ydtag)
|
|
|
+ mainCompanyArr111 = append(mainCompanyArr111, ydcompany)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if isOks {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if strings.Contains(vvv, yd) {
|
|
|
+ if !isOks {
|
|
|
+ isOks = true
|
|
|
+ tagNameArr111 = append(tagNameArr111, ydtag)
|
|
|
+ mainCompanyArr111 = append(mainCompanyArr111, ydcompany)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if isOks {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- } else {
|
|
|
- if strings.Contains(vv, yd) {
|
|
|
- isOk = true
|
|
|
- tagNameArr = append(tagNameArr, ydtag)
|
|
|
- mainCompanyArr = append(mainCompanyArr, ydcompany)
|
|
|
+ for _, yd := range strings.Split(ltkey, ",") {
|
|
|
+ if strings.Contains(yd, "&&") {
|
|
|
+ keys := strings.Split(yd, "&&")
|
|
|
+ key1, key2 := keys[0], keys[1]
|
|
|
+ if strings.Contains(vvv, key1) && strings.Contains(vvv, key2) {
|
|
|
+ if !isOks {
|
|
|
+ isOks = true
|
|
|
+ tagNameArr111 = append(tagNameArr111, lttag)
|
|
|
+ mainCompanyArr111 = append(mainCompanyArr111, ltcompany)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if isOks {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if strings.Contains(vvv, yd) {
|
|
|
+ if !isOks {
|
|
|
+ isOks = true
|
|
|
+ tagNameArr111 = append(tagNameArr111, lttag)
|
|
|
+ mainCompanyArr111 = append(mainCompanyArr111, ltcompany)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if isOks {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
- for _, yd := range strings.Split(ltkey, ",") {
|
|
|
- if strings.Contains(yd, "&&") {
|
|
|
- keys := strings.Split(yd, "&&")
|
|
|
- key1, key2 := keys[0], keys[1]
|
|
|
- if strings.Contains(vv, key1) && strings.Contains(vv, key2) {
|
|
|
- if !isOk {
|
|
|
- isOk = true
|
|
|
- tagNameArr = append(tagNameArr, lttag)
|
|
|
- mainCompanyArr = append(mainCompanyArr, ltcompany)
|
|
|
+ for _, yd := range strings.Split(dxkey, ",") {
|
|
|
+ if strings.Contains(yd, "&&") {
|
|
|
+ keys := strings.Split(yd, "&&")
|
|
|
+ key1, key2 := keys[0], keys[1]
|
|
|
+ if strings.Contains(vvv, key1) && strings.Contains(vvv, key2) {
|
|
|
+ if !isOks {
|
|
|
+ isOks = true
|
|
|
+ tagNameArr111 = append(tagNameArr111, dxtag)
|
|
|
+ mainCompanyArr111 = append(mainCompanyArr111, dxcompany)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if isOks {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if strings.Contains(vvv, yd) {
|
|
|
+ if !isOks {
|
|
|
+ isOks = true
|
|
|
+ tagNameArr111 = append(tagNameArr111, dxtag)
|
|
|
+ mainCompanyArr111 = append(mainCompanyArr111, dxcompany)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if isOks {
|
|
|
+ break
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- } else {
|
|
|
- if strings.Contains(vv, yd) {
|
|
|
- if !isOk {
|
|
|
- isOk = true
|
|
|
- tagNameArr = append(tagNameArr, lttag)
|
|
|
- mainCompanyArr = append(mainCompanyArr, ltcompany)
|
|
|
+ if !isOks {
|
|
|
+ tagNameArr111 = append(tagNameArr111, " ")
|
|
|
+ mainCompanyArr111 = append(mainCompanyArr111, " ")
|
|
|
+ }
|
|
|
+ log.Println("isOks ", isOks)
|
|
|
+ log.Println("tagNameArr111 ", tagNameArr111)
|
|
|
+ log.Println("mainCompanyArr111 ", mainCompanyArr111)
|
|
|
+ }
|
|
|
+ tagNameArr = append(tagNameArr, strings.Join(tagNameArr111, ","))
|
|
|
+ mainCompanyArr = append(mainCompanyArr, strings.Join(mainCompanyArr111, ","))
|
|
|
+ } else {
|
|
|
+ for _, yd := range strings.Split(ydkey, ",") {
|
|
|
+ if strings.Contains(yd, "&&") {
|
|
|
+ keys := strings.Split(yd, "&&")
|
|
|
+ key1, key2 := keys[0], keys[1]
|
|
|
+ if strings.Contains(vv, key1) && strings.Contains(vv, key2) {
|
|
|
+ if !isOk {
|
|
|
+ isOk = true
|
|
|
+ tagNameArr = append(tagNameArr, ydtag)
|
|
|
+ mainCompanyArr = append(mainCompanyArr, ydcompany)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if isOk {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if strings.Contains(vv, yd) {
|
|
|
+ if !isOk {
|
|
|
+ isOk = true
|
|
|
+ tagNameArr = append(tagNameArr, ydtag)
|
|
|
+ mainCompanyArr = append(mainCompanyArr, ydcompany)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if isOk {
|
|
|
+ break
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- for _, yd := range strings.Split(dxkey, ",") {
|
|
|
- if strings.Contains(yd, "&&") {
|
|
|
- keys := strings.Split(yd, "&&")
|
|
|
- key1, key2 := keys[0], keys[1]
|
|
|
- if strings.Contains(vv, key1) && strings.Contains(vv, key2) {
|
|
|
- if !isOk {
|
|
|
- isOk = true
|
|
|
- tagNameArr = append(tagNameArr, dxtag)
|
|
|
- mainCompanyArr = append(mainCompanyArr, dxcompany)
|
|
|
+ for _, yd := range strings.Split(ltkey, ",") {
|
|
|
+ if strings.Contains(yd, "&&") {
|
|
|
+ keys := strings.Split(yd, "&&")
|
|
|
+ key1, key2 := keys[0], keys[1]
|
|
|
+ if strings.Contains(vv, key1) && strings.Contains(vv, key2) {
|
|
|
+ if !isOk {
|
|
|
+ isOk = true
|
|
|
+ tagNameArr = append(tagNameArr, lttag)
|
|
|
+ mainCompanyArr = append(mainCompanyArr, ltcompany)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if isOk {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if strings.Contains(vv, yd) {
|
|
|
+ if !isOk {
|
|
|
+ isOk = true
|
|
|
+ tagNameArr = append(tagNameArr, lttag)
|
|
|
+ mainCompanyArr = append(mainCompanyArr, ltcompany)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if isOk {
|
|
|
+ break
|
|
|
}
|
|
|
}
|
|
|
- } else {
|
|
|
- if strings.Contains(vv, yd) {
|
|
|
- if !isOk {
|
|
|
- isOk = true
|
|
|
- tagNameArr = append(tagNameArr, dxtag)
|
|
|
- mainCompanyArr = append(mainCompanyArr, dxcompany)
|
|
|
+ }
|
|
|
+ for _, yd := range strings.Split(dxkey, ",") {
|
|
|
+ if strings.Contains(yd, "&&") {
|
|
|
+ keys := strings.Split(yd, "&&")
|
|
|
+ key1, key2 := keys[0], keys[1]
|
|
|
+ if strings.Contains(vv, key1) && strings.Contains(vv, key2) {
|
|
|
+ if !isOk {
|
|
|
+ isOk = true
|
|
|
+ tagNameArr = append(tagNameArr, dxtag)
|
|
|
+ mainCompanyArr = append(mainCompanyArr, dxcompany)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if isOk {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if strings.Contains(vv, yd) {
|
|
|
+ if !isOk {
|
|
|
+ isOk = true
|
|
|
+ tagNameArr = append(tagNameArr, dxtag)
|
|
|
+ mainCompanyArr = append(mainCompanyArr, dxcompany)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if isOk {
|
|
|
+ break
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- if !isOk {
|
|
|
- tagNameArr = append(tagNameArr, "")
|
|
|
- mainCompanyArr = append(mainCompanyArr, "")
|
|
|
+ if !isOk {
|
|
|
+ tagNameArr = append(tagNameArr, "")
|
|
|
+ mainCompanyArr = append(mainCompanyArr, "")
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
v["tagname"] = tagNameArr
|