123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- package main
- import (
- "log"
- "mongodb"
- "os"
- qu "qfw/util"
- "regexp"
- "strconv"
- // "github.com/lauyoume/gopinyin"
- "time"
- "github.com/tealeg/xlsx"
- )
- type Config struct {
- MgoAddr string `json:"mgoAddr"`
- MgoDbName string `json:"mgoDbName"`
- MgoColl string `json:"mgoColl"`
- MgoSize int `json:"mgoSize"`
- DataType int `json:"dataType"`
- ExportType int `json:"exportType"`
- TermFind map[string]interface{} `json:"termFind"`
- KeyWordFind map[string]map[string]interface{} `json:"keyWordFind"`
- Fields map[string]string `json:"fields"`
- FieldSort []string `json:"fieldSort"`
- }
- var (
- sysConfig Config
- Mgo *mongodb.MongodbSim
- SE = qu.SimpleEncrypt{Key: "topJYBX2019"}
- ClearHtml = regexp.MustCompile("<[^>]*>")
- ClearOther = regexp.MustCompile("[\n\r\\s\u3000\u2003\u00a0]")
- MaxWorker = os.Getenv("MAX_WORKERS")
- MaxQueue = os.Getenv("MAX_QUEUE")
- // industry = []string{"烟草", "军队", "教育", "公安", "税务", "能源", "金融", "数字政府", "水利", "应急管理", "公路", "生态环境", "纪委", "自然资源", "运营商", "机场", "法院", "检察院", "铁路", "轨道交通"}
- )
- func init() {
- qu.ReadConfig(&sysConfig)
- log.Println("配置加载成功")
- Mgo = &mongodb.MongodbSim{
- MongodbAddr: "172.17.145.163:27083",
- DbName: "mixdata",
- Size: 20,
- UserName: "JS3Z_Rbid_ProG",
- Password: "JS3Z@B5I3aR7Ch",
- }
- Mgo.InitPool()
- log.Println("数据库加载成功")
- }
- func GetXlsxs(mMap []map[string]interface{}) {
- xf := xlsx.NewFile()
- sh, _ := xf.AddSheet("详细数据")
- for _, v := range mMap {
- row := sh.AddRow()
- cell1 := row.AddCell()
- cell2 := row.AddCell()
- cell1.SetString(qu.ObjToString(v["company_name"]))
- cell2.SetString(qu.ObjToString(v["credit_no"]))
- }
- //生文件
- t := strconv.FormatInt(time.Now().Unix(), 10)
- dir := "./xlsx/" + t + "/"
- if b, _ := PathExists(dir); !b {
- err1 := os.MkdirAll(dir, os.ModePerm)
- if err1 != nil {
- log.Println("mkdir err", dir)
- }
- }
- fname := "_" + t + ".xlsx"
- err := xf.Save(dir + fname)
- if err != nil {
- log.Println("xls error", fname)
- }
- }
- func PathExists(path string) (bool, error) {
- _, err := os.Stat(path)
- if err == nil {
- return true, nil
- }
- if os.IsNotExist(err) {
- return false, nil
- }
- return false, err
- }
- func main() {
- query := map[string]interface{}{}
- count, session := 0, Mgo.GetMgoConn()
- defer func() {
- Mgo.DestoryMongoConn(session)
- }()
- iter := session.DB("mixdata").C("winner_enterprise").Find(&query).Select(map[string]interface{}{"company_name": 1, "credit_no": 1}).Sort("_id").Iter()
- data := []map[string]interface{}{}
- datas := []map[string]interface{}{}
- datass := []map[string]interface{}{}
- thisData := map[string]interface{}{}
- for {
- if !iter.Next(&thisData) {
- break
- }
- count++
- log.Println("第", count, "条")
- company_name := qu.ObjToString(thisData["company_name"])
- credit_no := qu.ObjToString(thisData["credit_no"])
- if company_name != "" && credit_no != "" {
- a := map[string]interface{}{
- "company_name": company_name,
- "credit_no": credit_no,
- }
- if count > 900000 {
- if count > 1800000 {
- datass = append(datass, a)
- } else {
- datas = append(datas, a)
- }
- } else {
- data = append(data, a)
- }
- } else {
- log.Println("信息为空", company_name, credit_no)
- }
- }
- if len(data) > 0 {
- log.Println("数据条数 ", len(data))
- log.Println("数据条数 ", len(datas))
- log.Println("数据条数 ", len(datass))
- GetXlsxs(data)
- GetXlsxs(datas)
- GetXlsxs(datass)
- log.Println("生成excel成功")
- }
- }
|