main.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/robfig/cron"
  5. "github.com/spf13/cobra"
  6. "github.com/tealeg/xlsx"
  7. "go.uber.org/zap"
  8. util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  9. "jygit.jydev.jianyu360.cn/data_processing/common_utils/log"
  10. "net/http"
  11. "tieta_data/config"
  12. )
  13. func init() {
  14. config.Init("./common.toml")
  15. InitLog()
  16. }
  17. func main() {
  18. rootCmd := &cobra.Command{Use: "my cmd"}
  19. rootCmd.AddCommand(exportB())
  20. rootCmd.AddCommand(exportP())
  21. rootCmd.AddCommand(project())
  22. if err := rootCmd.Execute(); err != nil {
  23. fmt.Println("rootCmd.Execute failed", err.Error())
  24. }
  25. rootCmd.InitDefaultCompletionCmd()
  26. }
  27. func exportB() *cobra.Command {
  28. cmdClient := &cobra.Command{
  29. Use: "export-bidding",
  30. Short: "Start export task",
  31. Run: func(cmd *cobra.Command, args []string) {
  32. //InitMgo()
  33. sess := MongoTool.GetMgoConn()
  34. defer MongoTool.DestoryMongoConn(sess)
  35. file := xlsx.NewFile()
  36. sheet, err := file.AddSheet("sheet1")
  37. if err != nil {
  38. panic(err)
  39. }
  40. row := sheet.AddRow()
  41. for _, v := range FieldArr1 {
  42. row.AddCell().SetValue(v)
  43. }
  44. query := sess.DB(config.Conf.DB.Mongo.Dbname).C(config.Conf.DB.Mongo.Coll).Find(nil).Select(nil).Iter()
  45. count := 0
  46. for tmp := make(map[string]interface{}); query.Next(&tmp); count++ {
  47. if count%1000 == 0 {
  48. util.Debug("current ---", count)
  49. }
  50. func(tmp map[string]interface{}) {
  51. row := sheet.AddRow()
  52. taskExcelB(tmp, row)
  53. }(tmp)
  54. }
  55. util.Debug("over ---", count)
  56. fname := fmt.Sprintf("./数据导出-标文%s.xlsx", util.NowFormat(util.DATEFORMAT))
  57. err = file.Save(fname)
  58. if err != nil {
  59. panic(err)
  60. }
  61. },
  62. }
  63. return cmdClient
  64. }
  65. func exportP() *cobra.Command {
  66. cmdClient := &cobra.Command{
  67. Use: "export-project",
  68. Short: "Start export task",
  69. Run: func(cmd *cobra.Command, args []string) {
  70. //InitMgo()
  71. sess := MongoTool.GetMgoConn()
  72. defer MongoTool.DestoryMongoConn(sess)
  73. file := xlsx.NewFile()
  74. sheet, err := file.AddSheet("sheet1")
  75. if err != nil {
  76. panic(err)
  77. }
  78. row := sheet.AddRow()
  79. for _, v := range FieldArr {
  80. row.AddCell().SetValue(v)
  81. }
  82. query := sess.DB(config.Conf.DB.Mongo.Dbname).C(config.Conf.DB.Mongo.Pcoll).Find(nil).Select(nil).Iter()
  83. count := 0
  84. for tmp := make(map[string]interface{}); query.Next(&tmp); count++ {
  85. if count%1000 == 0 {
  86. util.Debug("current ---", count)
  87. }
  88. func(tmp map[string]interface{}) {
  89. row := sheet.AddRow()
  90. taskExcelP(tmp, row)
  91. }(tmp)
  92. }
  93. util.Debug("over ---", count)
  94. fname := fmt.Sprintf("./数据导出-捏合%s.xlsx", util.NowFormat(util.DATEFORMAT))
  95. err = file.Save(fname)
  96. if err != nil {
  97. panic(err)
  98. }
  99. },
  100. }
  101. return cmdClient
  102. }
  103. func project() *cobra.Command {
  104. cmdClient := &cobra.Command{
  105. Use: "project",
  106. Short: "Start project task",
  107. Run: func(cmd *cobra.Command, args []string) {
  108. InitMysql()
  109. InitEs()
  110. go ApiMethod()
  111. loadData()
  112. taskProject()
  113. crn := cron.New()
  114. cronstr := "0 0 10 * * ?"
  115. _ = crn.AddFunc(cronstr, func() {
  116. taskProject()
  117. })
  118. crn.Start()
  119. ch := make(chan bool, 1)
  120. <-ch
  121. },
  122. }
  123. return cmdClient
  124. }
  125. func ApiMethod() {
  126. http.HandleFunc("/mergeProject", MergeProject)
  127. http.HandleFunc("/updateProject", UpdateInfo)
  128. err := http.ListenAndServe(config.Conf.Serve.LocPort, nil)
  129. if err != nil {
  130. log.Fatal("ListenAndServe: ", zap.Error(err))
  131. }
  132. }