main.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package main
  2. import (
  3. "log"
  4. "mongodb"
  5. "os"
  6. qu "qfw/util"
  7. "regexp"
  8. "strconv"
  9. // "github.com/lauyoume/gopinyin"
  10. "time"
  11. "github.com/tealeg/xlsx"
  12. )
  13. type Config struct {
  14. MgoAddr string `json:"mgoAddr"`
  15. MgoDbName string `json:"mgoDbName"`
  16. MgoColl string `json:"mgoColl"`
  17. MgoSize int `json:"mgoSize"`
  18. DataType int `json:"dataType"`
  19. ExportType int `json:"exportType"`
  20. TermFind map[string]interface{} `json:"termFind"`
  21. KeyWordFind map[string]map[string]interface{} `json:"keyWordFind"`
  22. Fields map[string]string `json:"fields"`
  23. FieldSort []string `json:"fieldSort"`
  24. }
  25. var (
  26. sysConfig Config
  27. Mgo *mongodb.MongodbSim
  28. SE = qu.SimpleEncrypt{Key: "topJYBX2019"}
  29. ClearHtml = regexp.MustCompile("<[^>]*>")
  30. ClearOther = regexp.MustCompile("[\n\r\\s\u3000\u2003\u00a0]")
  31. MaxWorker = os.Getenv("MAX_WORKERS")
  32. MaxQueue = os.Getenv("MAX_QUEUE")
  33. // industry = []string{"烟草", "军队", "教育", "公安", "税务", "能源", "金融", "数字政府", "水利", "应急管理", "公路", "生态环境", "纪委", "自然资源", "运营商", "机场", "法院", "检察院", "铁路", "轨道交通"}
  34. )
  35. func init() {
  36. qu.ReadConfig(&sysConfig)
  37. log.Println("配置加载成功")
  38. Mgo = &mongodb.MongodbSim{
  39. MongodbAddr: "172.17.145.163:27083",
  40. DbName: "mixdata",
  41. Size: 20,
  42. UserName: "JS3Z_Rbid_ProG",
  43. Password: "JS3Z@B5I3aR7Ch",
  44. }
  45. Mgo.InitPool()
  46. log.Println("数据库加载成功")
  47. }
  48. func GetXlsxs(mMap []map[string]interface{}) {
  49. xf := xlsx.NewFile()
  50. sh, _ := xf.AddSheet("详细数据")
  51. for _, v := range mMap {
  52. row := sh.AddRow()
  53. cell1 := row.AddCell()
  54. cell2 := row.AddCell()
  55. cell1.SetString(qu.ObjToString(v["company_name"]))
  56. cell2.SetString(qu.ObjToString(v["credit_no"]))
  57. }
  58. //生文件
  59. t := strconv.FormatInt(time.Now().Unix(), 10)
  60. dir := "./xlsx/" + t + "/"
  61. if b, _ := PathExists(dir); !b {
  62. err1 := os.MkdirAll(dir, os.ModePerm)
  63. if err1 != nil {
  64. log.Println("mkdir err", dir)
  65. }
  66. }
  67. fname := "_" + t + ".xlsx"
  68. err := xf.Save(dir + fname)
  69. if err != nil {
  70. log.Println("xls error", fname)
  71. }
  72. }
  73. func PathExists(path string) (bool, error) {
  74. _, err := os.Stat(path)
  75. if err == nil {
  76. return true, nil
  77. }
  78. if os.IsNotExist(err) {
  79. return false, nil
  80. }
  81. return false, err
  82. }
  83. func main() {
  84. query := map[string]interface{}{}
  85. count, session := 0, Mgo.GetMgoConn()
  86. defer func() {
  87. Mgo.DestoryMongoConn(session)
  88. }()
  89. iter := session.DB("mixdata").C("winner_enterprise").Find(&query).Select(map[string]interface{}{"company_name": 1, "credit_no": 1}).Sort("_id").Iter()
  90. data := []map[string]interface{}{}
  91. datas := []map[string]interface{}{}
  92. datass := []map[string]interface{}{}
  93. thisData := map[string]interface{}{}
  94. for {
  95. if !iter.Next(&thisData) {
  96. break
  97. }
  98. count++
  99. log.Println("第", count, "条")
  100. company_name := qu.ObjToString(thisData["company_name"])
  101. credit_no := qu.ObjToString(thisData["credit_no"])
  102. if company_name != "" && credit_no != "" {
  103. a := map[string]interface{}{
  104. "company_name": company_name,
  105. "credit_no": credit_no,
  106. }
  107. if count > 900000 {
  108. if count > 1800000 {
  109. datass = append(datass, a)
  110. } else {
  111. datas = append(datas, a)
  112. }
  113. } else {
  114. data = append(data, a)
  115. }
  116. } else {
  117. log.Println("信息为空", company_name, credit_no)
  118. }
  119. }
  120. if len(data) > 0 {
  121. log.Println("数据条数 ", len(data))
  122. log.Println("数据条数 ", len(datas))
  123. log.Println("数据条数 ", len(datass))
  124. GetXlsxs(data)
  125. GetXlsxs(datas)
  126. GetXlsxs(datass)
  127. log.Println("生成excel成功")
  128. }
  129. }