|
@@ -1,39 +1,51 @@
|
|
|
package main
|
|
|
|
|
|
import (
|
|
|
+ "fmt"
|
|
|
"github.com/cron"
|
|
|
+ "github.com/tealeg/xlsx"
|
|
|
"log"
|
|
|
+ "os"
|
|
|
qu "qfw/util"
|
|
|
"time"
|
|
|
-
|
|
|
)
|
|
|
|
|
|
|
|
|
var (
|
|
|
sysconfig map[string]interface{} //配置文件
|
|
|
- data_mgo,jp_mgo,st_mgo *MongodbSim //mongodb操作对象
|
|
|
+ save_mgo,qy_mgo,jp_mgo,st_mgo *MongodbSim //mongodb操作对象
|
|
|
qy_c_name,jp_c_name,st_c_name string
|
|
|
es_index_st,es_type_st string
|
|
|
save_other_name,save_site_name string
|
|
|
+ xlsx_name string
|
|
|
)
|
|
|
|
|
|
func initMgo() {
|
|
|
|
|
|
- dconf := sysconfig["data_mgodb"].(map[string]interface{})
|
|
|
- qy_c_name = qu.ObjToString(dconf["coll"])
|
|
|
- data_mgo = &MongodbSim{
|
|
|
- MongodbAddr: dconf["addr"].(string),
|
|
|
- DbName: dconf["db"].(string),
|
|
|
- Size: qu.IntAllDef(dconf["pool"], 10),
|
|
|
+ saveconf := sysconfig["save_mgodb"].(map[string]interface{})
|
|
|
+ qy_c_name = qu.ObjToString(saveconf["coll"])
|
|
|
+ save_mgo = &MongodbSim{
|
|
|
+ MongodbAddr: saveconf["addr"].(string),
|
|
|
+ DbName: saveconf["db"].(string),
|
|
|
+ Size: qu.IntAllDef(saveconf["pool"], 5),
|
|
|
+ }
|
|
|
+ save_mgo.InitPool()
|
|
|
+
|
|
|
+ qconf := sysconfig["qy_mgodb"].(map[string]interface{})
|
|
|
+ qy_c_name = qu.ObjToString(qconf["coll"])
|
|
|
+ qy_mgo = &MongodbSim{
|
|
|
+ MongodbAddr: qconf["addr"].(string),
|
|
|
+ DbName: qconf["db"].(string),
|
|
|
+ Size: qu.IntAllDef(qconf["pool"], 5),
|
|
|
}
|
|
|
- data_mgo.InitPool()
|
|
|
+ qy_mgo.InitPool()
|
|
|
|
|
|
jconf := sysconfig["jp_mgodb"].(map[string]interface{})
|
|
|
jp_c_name = qu.ObjToString(jconf["coll"])
|
|
|
jp_mgo = &MongodbSim{
|
|
|
MongodbAddr: jconf["addr"].(string),
|
|
|
DbName: jconf["db"].(string),
|
|
|
- Size: qu.IntAllDef(jconf["pool"], 10),
|
|
|
+ Size: qu.IntAllDef(jconf["pool"], 5),
|
|
|
}
|
|
|
jp_mgo.InitPool()
|
|
|
|
|
@@ -42,7 +54,7 @@ func initMgo() {
|
|
|
st_mgo = &MongodbSim{
|
|
|
MongodbAddr: sconf["addr"].(string),
|
|
|
DbName: sconf["db"].(string),
|
|
|
- Size: qu.IntAllDef(sconf["pool"], 10),
|
|
|
+ Size: qu.IntAllDef(sconf["pool"], 5),
|
|
|
}
|
|
|
st_mgo.InitPool()
|
|
|
|
|
@@ -54,7 +66,7 @@ func initMgo() {
|
|
|
save_site_name = qu.ObjToString(sysconfig["save_site_name"])
|
|
|
|
|
|
|
|
|
-
|
|
|
+ xlsx_name = qu.ObjToString(sysconfig["xlsx_name"])
|
|
|
}
|
|
|
|
|
|
|
|
@@ -74,27 +86,138 @@ func mainT() {
|
|
|
//测试使用
|
|
|
func main() {
|
|
|
|
|
|
- //dealWithJPData()
|
|
|
- //dealWithQYData()
|
|
|
- dealWithSTData()
|
|
|
-
|
|
|
+ dealWithOtherData()
|
|
|
}
|
|
|
|
|
|
func taskTime() {
|
|
|
|
|
|
+
|
|
|
+
|
|
|
log.Println("部署定时任务")
|
|
|
c := cron.New()
|
|
|
- //竞品-mongo
|
|
|
- c.AddFunc("0 30 9 ? * *", func() { dealWithJPData() })
|
|
|
-
|
|
|
- //企业变更-mongo
|
|
|
- c.AddFunc("0 0 9 ? * *", func() { dealWithQYData() })
|
|
|
|
|
|
- //站点相关-es-mongo
|
|
|
+ //站点相关全量-es-mongo
|
|
|
c.AddFunc("0 30 8 ? * *", func() { dealWithSTData() })
|
|
|
|
|
|
+
|
|
|
+ //企业变更-站点-mongo
|
|
|
+ c.AddFunc("0 0 9 ? * *", func() { dealWithOtherData() })
|
|
|
+
|
|
|
c.Start()
|
|
|
|
|
|
}
|
|
|
|
|
|
+func dealWithOtherData() {
|
|
|
+
|
|
|
+ log.Println("开始统计相关数据...")
|
|
|
+
|
|
|
+ start := int(time.Now().Unix())
|
|
|
+ data :=dealWithJPData()//站点数据
|
|
|
+ qy_date,qy_total := dealWithQYData()//企业数据
|
|
|
+
|
|
|
+ comeintime :=qu.Int64All(time.Now().Unix())
|
|
|
+ save_mgo.Save(save_other_name, map[string]interface{}{
|
|
|
+ "name":"企业",
|
|
|
+ "num":qu.IntAll(qy_total),
|
|
|
+ "comeintime":comeintime,
|
|
|
+ "date":qy_date,
|
|
|
+ })
|
|
|
+
|
|
|
+ save_mgo.Save(save_other_name, map[string]interface{}{
|
|
|
+ "name":"站点",
|
|
|
+ "num":qu.IntAll(data["total"]),
|
|
|
+ "comeintime":comeintime,
|
|
|
+ "date":qu.ObjToString(data["date"]),
|
|
|
+ "data":data["data"],
|
|
|
+ })
|
|
|
+
|
|
|
+
|
|
|
+ //获取前两天数据
|
|
|
+ qy_arr ,st_arr:= make([]map[string]string,0),make([]map[string]interface{},0)
|
|
|
+ now:=time.Now() //当前天
|
|
|
+ curtime:= time.Date(now.Year(), now.Month(), now.Day()-2, 0, 0, 0, 0, time.Local).Unix()
|
|
|
+ before_date :=qu.FormatDateByInt64(&curtime, qu.DATEFORMAT)
|
|
|
+ //企业数据
|
|
|
+ before_qy_data :=save_mgo.FindOne(save_other_name, map[string]interface{}{
|
|
|
+ "name":"企业",
|
|
|
+ "date":before_date,
|
|
|
+ })
|
|
|
+ if before_qy_data!=nil && len(before_qy_data)>2 {
|
|
|
+ qy_arr = append(qy_arr, map[string]string{
|
|
|
+ "date":qu.ObjToString(before_qy_data["date"]),
|
|
|
+ "num":fmt.Sprintf("%d",before_qy_data["num"]),
|
|
|
+ })
|
|
|
+ }
|
|
|
+ qy_arr = append(qy_arr, map[string]string{
|
|
|
+ "date":qy_date,
|
|
|
+ "num":qy_total,
|
|
|
+ })
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //站点数据
|
|
|
+ before_st_data :=save_mgo.FindOne(save_other_name, map[string]interface{}{
|
|
|
+ "name":"站点",
|
|
|
+ "date":before_date,
|
|
|
+ })
|
|
|
+ if before_st_data!=nil && len(before_st_data)>2 {
|
|
|
+ st_arr = append(st_arr, map[string]interface{}{
|
|
|
+ "date":qu.ObjToString(before_st_data["date"]),
|
|
|
+ "total":fmt.Sprintf("%d",before_st_data["num"]),
|
|
|
+ "data":before_st_data["data"],
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ st_arr = append(st_arr, map[string]interface{}{
|
|
|
+ "date":qu.ObjToString(data["date"]),
|
|
|
+ "total":fmt.Sprintf("%d",data["total"]),
|
|
|
+ "data":data["data"],
|
|
|
+ })
|
|
|
+
|
|
|
+ //写excle
|
|
|
+ os.Remove("统计.xlsx")
|
|
|
+ f :=xlsx.NewFile()
|
|
|
+ sheet, _ := f.AddSheet("统计")
|
|
|
+
|
|
|
+ //第一行先写标题
|
|
|
+ row := sheet.AddRow()
|
|
|
+ row.AddCell().Value = "企业分类/日期"
|
|
|
+ row.AddCell().Value = "总数量"
|
|
|
+ for _,tmp := range qy_arr {
|
|
|
+ row = sheet.AddRow()
|
|
|
+ row.AddCell().SetString(tmp["date"])
|
|
|
+ row.AddCell().SetString(tmp["num"])
|
|
|
+ }
|
|
|
+ sheet.AddRow()
|
|
|
+ row = sheet.AddRow()
|
|
|
+ row.AddCell().Value = "站点分类/日期"
|
|
|
+ row.AddCell().Value = "总数量"
|
|
|
+ row.AddCell().Value = "站点名称"
|
|
|
+ row.AddCell().Value = "站点数量"
|
|
|
+ for _, v:= range st_arr {
|
|
|
+ tmp := *qu.ObjToMap(v)
|
|
|
+ row = sheet.AddRow()
|
|
|
+ row.AddCell().SetString(qu.ObjToString(tmp["date"]))
|
|
|
+ row.AddCell().SetString(qu.ObjToString(tmp["total"]))
|
|
|
+
|
|
|
+ data := *qu.ObjToMap(tmp["data"])
|
|
|
+ if data!=nil {
|
|
|
+ for k,v := range data {
|
|
|
+ row.AddCell().SetString(k)
|
|
|
+ row.AddCell().SetString(fmt.Sprintf("%d",v))
|
|
|
+ row = sheet.AddRow()
|
|
|
+ row.AddCell().Value = ""
|
|
|
+ row.AddCell().Value = ""
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ err := f.Save(xlsx_name)
|
|
|
+ if err != nil {
|
|
|
+ log.Println("保存xlsx失败:", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ sendErrMailSmtp("统计-站点-企业","详情请查阅附件")
|
|
|
|
|
|
+ log.Println("定时处理完毕...",int(time.Now().Unix())-start,"秒")
|
|
|
+}
|