|
@@ -1,15 +1,81 @@
|
|
|
package main
|
|
|
|
|
|
import (
|
|
|
+ "fmt"
|
|
|
log "github.com/donnie4w/go-logger/logger"
|
|
|
+ "github.com/tealeg/xlsx"
|
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
|
+ "os"
|
|
|
qu "qfw/util"
|
|
|
- "regexp"
|
|
|
"sync"
|
|
|
+ "time"
|
|
|
)
|
|
|
|
|
|
-var P_NameReg *regexp.Regexp = regexp.MustCompile(`(项目)`)
|
|
|
+func exportExcle(){
|
|
|
+ sess := save_mgo.GetMgoConn()
|
|
|
+ defer save_mgo.DestoryMongoConn(sess)
|
|
|
+ q,total := map[string]interface{}{},0
|
|
|
+
|
|
|
+ os.Remove("rj_data.xlsx")
|
|
|
+ f :=xlsx.NewFile()
|
|
|
+ sheet, _ := f.AddSheet("标的物项目信息")
|
|
|
+ row := sheet.AddRow()
|
|
|
+ row.AddCell().Value = "信息匹配词"
|
|
|
+ row.AddCell().Value = "大区"
|
|
|
+ row.AddCell().Value = "省份(锐捷划分)"
|
|
|
+ row.AddCell().Value = "省份"
|
|
|
+ row.AddCell().Value = "城市"
|
|
|
+ row.AddCell().Value = "行业"
|
|
|
+ row.AddCell().Value = "项目名称"
|
|
|
+ row.AddCell().Value = "项目金额(万元)"
|
|
|
+ row.AddCell().Value = "公告地址"
|
|
|
+ row.AddCell().Value = "剑鱼标讯地址"
|
|
|
+ row.AddCell().Value = "采购意向名称"
|
|
|
+ row.AddCell().Value = "采购内容"
|
|
|
+ row.AddCell().Value = "采购单位"
|
|
|
+ row.AddCell().Value = "采购时间"
|
|
|
+ row.AddCell().Value = "附件下载地址"
|
|
|
+ row.AddCell().Value = "采购单位联系人"
|
|
|
+ row.AddCell().Value = "采购单位联系电话"
|
|
|
+ row.AddCell().Value = "发布时间"
|
|
|
+
|
|
|
+
|
|
|
+ it := sess.DB(save_mgo.DbName).C(export_coll).Find(&q).Sort("_id").Iter()
|
|
|
+ for tmp := make(map[string]interface{}); it.Next(&tmp);total++ {
|
|
|
+ if total%1000 == 0 {
|
|
|
+ log.Debug("curent index ", total, tmp["_id"])
|
|
|
+ }
|
|
|
+ row = sheet.AddRow()
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["matchkey"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["region"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["region_pro"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["area"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["city"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["buyerclass"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["p_name"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["p_price"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["href"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["jybxhref"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["title"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["p_scope"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["buyer"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["p_time"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["file_url"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["buyerperson"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["buyertel"])
|
|
|
+ row.AddCell().Value = qu.ObjToString(tmp["publishtime"])
|
|
|
+
|
|
|
+ tmp = make(map[string]interface{})
|
|
|
+ }
|
|
|
+
|
|
|
+ err := f.Save("rj_data.xlsx")
|
|
|
+ if err != nil {
|
|
|
+ log.Debug("保存xlsx失败:", err)
|
|
|
+ }else {
|
|
|
+ log.Debug("保存xlsx成功:", err)
|
|
|
+ }
|
|
|
|
|
|
+}
|
|
|
|
|
|
func dealWithCgyxData() {
|
|
|
|
|
@@ -46,20 +112,70 @@ func dealWithCgyxData() {
|
|
|
p_list = qu.ObjArrToMapArr(purchasinglist)
|
|
|
}
|
|
|
}
|
|
|
- //清理正文-标签
|
|
|
- //detail := cleandetail(qu.ObjToString(tmp["detail"]))
|
|
|
- //tmp["detail"] = detail
|
|
|
|
|
|
- if len(p_list)>0 {
|
|
|
- new_list := comparisonList(p_list,tmp)
|
|
|
- if len(new_list)>0 {
|
|
|
- isok+=len(new_list)
|
|
|
+ f_list := []map[string]interface{}{}
|
|
|
+ if filehref, ok := tmp["filehref"].(primitive.A); ok {
|
|
|
+ f_list = qu.ObjArrToMapArr(filehref)
|
|
|
+ }else {
|
|
|
+ if filehref, ok := tmp["filehref"].([]interface{}); ok {
|
|
|
+ f_list = qu.ObjArrToMapArr(filehref)
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
+ //其他字段需要
|
|
|
+ file_url := ""
|
|
|
+ if len(f_list)>0 {
|
|
|
+ file_url = qu.ObjToString(f_list[0]["url"])
|
|
|
+ }
|
|
|
+ area := qu.ObjToString(tmp["area"])
|
|
|
+ city := qu.ObjToString(tmp["city"])
|
|
|
+ publishtime := qu.Int64All(tmp["publishtime"])
|
|
|
+ p_time_str := time.Unix(publishtime, 0).Format(timeLayout_1)
|
|
|
|
|
|
|
|
|
+ region := ""
|
|
|
+ region_pro := ""
|
|
|
+
|
|
|
+ if city_map[city]!=nil {
|
|
|
+ region = city_map[city]["region"]
|
|
|
+ region_pro = city_map[city]["region_pro"]
|
|
|
+ }else {
|
|
|
+ if area_map[area]!=nil {
|
|
|
+ region = area_map[area]["region"]
|
|
|
+ region_pro = area_map[area]["region_pro"]
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ if len(p_list)>0 {
|
|
|
+ new_list := comparisonList(p_list,tmp)
|
|
|
+ if len(new_list)>0 {
|
|
|
+ isok+=len(new_list) //计数使用
|
|
|
+ for _,list := range new_list {
|
|
|
+ data := map[string]interface{}{}
|
|
|
+ data["matchkey"] = qu.ObjToString(tmp["matchkey"])
|
|
|
+ data["region"] = region
|
|
|
+ data["region_pro"] = region_pro
|
|
|
+ data["area"] = area
|
|
|
+ data["city"] = city
|
|
|
+ data["buyerclass"] = qu.ObjToString(tmp["buyerclass"])
|
|
|
+ data["p_name"] = qu.ObjToString(list["p_name"])
|
|
|
+ data["p_price"] = qu.ObjToString(list["p_price"])
|
|
|
+ data["href"] = qu.ObjToString(tmp["href"])
|
|
|
+ data["jybxhref"] = qu.ObjToString(tmp["jybxhref"])
|
|
|
+ data["title"] = qu.ObjToString(tmp["title"])
|
|
|
+ data["p_scope"] = qu.ObjToString(list["p_scope"])
|
|
|
+ data["buyer"] = qu.ObjToString(tmp["buyer"])
|
|
|
+ data["p_time"] = qu.ObjToString(list["p_time"])
|
|
|
+ data["file_url"] = file_url
|
|
|
+ data["buyerperson"] = qu.ObjToString(tmp["buyerperson"])
|
|
|
+ data["buyertel"] = qu.ObjToString(tmp["buyertel"])
|
|
|
+ data["publishtime"] = p_time_str
|
|
|
+ save_mgo.Save(export_coll,data)
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}(tmp)
|
|
|
tmp = make(map[string]interface{})
|
|
@@ -74,51 +190,51 @@ func dealWithCgyxData() {
|
|
|
func comparisonList(p_list []map[string]interface{} ,tmp map[string]interface{}) []map[string]interface{} {
|
|
|
new_list := []map[string]interface{}{}
|
|
|
for _,list := range p_list {
|
|
|
- b := isValidList(list,tmp)
|
|
|
+ b,data := isValidList(list,tmp)
|
|
|
if b {
|
|
|
- new_list = append(new_list,list)
|
|
|
+ new_list = append(new_list,data)
|
|
|
}
|
|
|
}
|
|
|
return new_list
|
|
|
}
|
|
|
|
|
|
|
|
|
-func isValidList(list map[string]interface{},tmp map[string]interface{}) bool {
|
|
|
+func isValidList(list map[string]interface{},tmp map[string]interface{}) (bool,map[string]interface{}) {
|
|
|
publishtime := qu.Int64All(tmp["publishtime"])
|
|
|
-
|
|
|
- field_dataArr :=[]string{}
|
|
|
- field_dataArr = append(field_dataArr,qu.ObjToString(tmp["title"]))
|
|
|
- field_dataArr = append(field_dataArr,qu.ObjToString(tmp["projectname"]))
|
|
|
- field_dataArr = append(field_dataArr,qu.ObjToString(list["itemname"]))
|
|
|
- field_dataArr = append(field_dataArr,qu.ObjToString(list["projectname"]))
|
|
|
-
|
|
|
expurasingtime := qu.ObjToString(list["expurasingtime"])
|
|
|
totalprice := qu.Float64All(list["totalprice"])
|
|
|
if expurasingtime=="" {
|
|
|
- return false
|
|
|
+ return false,nil
|
|
|
}
|
|
|
//时间格式转换
|
|
|
exp_time := cleanStrToTimestamp(expurasingtime,publishtime)
|
|
|
if exp_time>0 && exp_time<end_time && exp_time>=start_time{
|
|
|
}else {
|
|
|
- return false
|
|
|
+ return false,nil
|
|
|
}
|
|
|
//时间格式转换
|
|
|
if totalprice<300000.0 {
|
|
|
- return false
|
|
|
+ return false,nil
|
|
|
}
|
|
|
|
|
|
//项目名称-过滤词相关 tmp 任意可选
|
|
|
- for _,v :=range words_arr {
|
|
|
- projectname:=""
|
|
|
- keywords := qu.ObjToString(v["keywords"])
|
|
|
- outwords := qu.ObjToString(v["outwords"])
|
|
|
- k_reg := regexp.MustCompile(keywords)
|
|
|
- o_reg := regexp.MustCompile(outwords)
|
|
|
- if k_reg.MatchString(projectname) && !o_reg.MatchString(projectname) {
|
|
|
- return true
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return false
|
|
|
+ //for _,v :=range words_arr {
|
|
|
+ // projectname:=""
|
|
|
+ // keywords := qu.ObjToString(v["keywords"])
|
|
|
+ // outwords := qu.ObjToString(v["outwords"])
|
|
|
+ // k_reg := regexp.MustCompile(keywords)
|
|
|
+ // o_reg := regexp.MustCompile(outwords)
|
|
|
+ // if k_reg.MatchString(projectname) && !o_reg.MatchString(projectname) {
|
|
|
+ // return true
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+
|
|
|
+ data := map[string]interface{}{}
|
|
|
+ exp_time_str := time.Unix(exp_time, 0).Format(timeLayout)
|
|
|
+ data["p_name"]= qu.ObjToString(list["projectname"])
|
|
|
+ data["p_price"]= fmt.Sprintf("%.2f",totalprice/10000.0)
|
|
|
+ data["p_scope"]= qu.ObjToString(list["projectscope"])
|
|
|
+ data["p_time"] = exp_time_str
|
|
|
+
|
|
|
+ return true,data
|
|
|
}
|