123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- package main
- import (
- "fmt"
- "github.com/robfig/cron"
- "github.com/spf13/cobra"
- "github.com/tealeg/xlsx"
- "go.uber.org/zap"
- util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
- "jygit.jydev.jianyu360.cn/data_processing/common_utils/log"
- "net/http"
- "tieta_data/config"
- )
- func init() {
- config.Init("./common.toml")
- InitLog()
- }
- func main() {
- rootCmd := &cobra.Command{Use: "my cmd"}
- rootCmd.AddCommand(exportB())
- rootCmd.AddCommand(exportP())
- rootCmd.AddCommand(project())
- if err := rootCmd.Execute(); err != nil {
- fmt.Println("rootCmd.Execute failed", err.Error())
- }
- rootCmd.InitDefaultCompletionCmd()
- }
- func exportB() *cobra.Command {
- cmdClient := &cobra.Command{
- Use: "export-bidding",
- Short: "Start export task",
- Run: func(cmd *cobra.Command, args []string) {
- //InitMgo()
- sess := MongoTool.GetMgoConn()
- defer MongoTool.DestoryMongoConn(sess)
- file := xlsx.NewFile()
- sheet, err := file.AddSheet("sheet1")
- if err != nil {
- panic(err)
- }
- row := sheet.AddRow()
- for _, v := range FieldArr1 {
- row.AddCell().SetValue(v)
- }
- query := sess.DB(config.Conf.DB.Mongo.Dbname).C(config.Conf.DB.Mongo.Coll).Find(nil).Select(nil).Iter()
- count := 0
- for tmp := make(map[string]interface{}); query.Next(&tmp); count++ {
- if count%1000 == 0 {
- util.Debug("current ---", count)
- }
- func(tmp map[string]interface{}) {
- row := sheet.AddRow()
- taskExcelB(tmp, row)
- }(tmp)
- }
- util.Debug("over ---", count)
- fname := fmt.Sprintf("./数据导出-标文%s.xlsx", util.NowFormat(util.DATEFORMAT))
- err = file.Save(fname)
- if err != nil {
- panic(err)
- }
- },
- }
- return cmdClient
- }
- func exportP() *cobra.Command {
- cmdClient := &cobra.Command{
- Use: "export-project",
- Short: "Start export task",
- Run: func(cmd *cobra.Command, args []string) {
- //InitMgo()
- sess := MongoTool.GetMgoConn()
- defer MongoTool.DestoryMongoConn(sess)
- file := xlsx.NewFile()
- sheet, err := file.AddSheet("sheet1")
- if err != nil {
- panic(err)
- }
- row := sheet.AddRow()
- for _, v := range FieldArr {
- row.AddCell().SetValue(v)
- }
- query := sess.DB(config.Conf.DB.Mongo.Dbname).C(config.Conf.DB.Mongo.Pcoll).Find(nil).Select(nil).Iter()
- count := 0
- for tmp := make(map[string]interface{}); query.Next(&tmp); count++ {
- if count%1000 == 0 {
- util.Debug("current ---", count)
- }
- func(tmp map[string]interface{}) {
- row := sheet.AddRow()
- taskExcelP(tmp, row)
- }(tmp)
- }
- util.Debug("over ---", count)
- fname := fmt.Sprintf("./数据导出-捏合%s.xlsx", util.NowFormat(util.DATEFORMAT))
- err = file.Save(fname)
- if err != nil {
- panic(err)
- }
- },
- }
- return cmdClient
- }
- func project() *cobra.Command {
- cmdClient := &cobra.Command{
- Use: "project",
- Short: "Start project task",
- Run: func(cmd *cobra.Command, args []string) {
- InitMysql()
- InitEs()
- go ApiMethod()
- loadData()
- taskProject()
- crn := cron.New()
- cronstr := "0 0 10 * * ?"
- _ = crn.AddFunc(cronstr, func() {
- taskProject()
- })
- crn.Start()
- ch := make(chan bool, 1)
- <-ch
- },
- }
- return cmdClient
- }
- func ApiMethod() {
- http.HandleFunc("/mergeProject", MergeProject)
- http.HandleFunc("/updateProject", UpdateInfo)
- err := http.ListenAndServe(config.Conf.Serve.LocPort, nil)
- if err != nil {
- log.Fatal("ListenAndServe: ", zap.Error(err))
- }
- }
|