Эх сурвалжийг харах

更新escheck;提高白天查询频率

wcc 5 өдөр өмнө
parent
commit
4a960305cc

+ 1 - 0
ent_info/init.go

@@ -106,6 +106,7 @@ func InitClickhouse() {
 
 // InitMgo 初始化标讯,mixdata.qyxy_std
 func InitMgo() {
+	// qyxy_std 数据
 	Mgo = &mongodb.MongodbSim{
 		MongodbAddr: GF.Mongo.Host,
 		//MongodbAddr: "127.0.0.1:27083",

+ 11 - 2
escheck/config.json

@@ -1,7 +1,15 @@
 {
     "task": [
         {
-            "cron": "0 51 8,10,12,14,16,18,20,22,0,2,4,6 ? * ?",
+            "cron": "0 0/10 8-20 ? * * ",
+            "tjscope": "-3,h",
+            "min": 100,
+            "max": 50000,
+            "type": "alert",
+            "name": "es工作日预警3小时内范围100~4万"
+        },
+        {
+            "cron": "0 51 0-7,21-23 ? * * ",
             "tjscope": "-3,h",
             "min": 100,
             "max": 50000,
@@ -44,5 +52,6 @@
     "jkmail": {
         "to":"renzheng@topnet.net.cn,zhangjinkun@topnet.net.cn,maxiaoshan@topnet.net.cn,wangjianghan@topnet.net.cn,chenmingzhu@jianyu360.com,zhengkun@topnet.net.cn,dongzhaorui@topnet.net.cn,lizongze@topnet.net.cn,wangchengcheng@topnet.net.cn",
         "api": "http://172.17.162.36:19281/_send/_mail"
-    }
+    },
+    "wxurl": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=82cbaa6d-53cd-4a02-82aa-877294d4a84f"
 }

BIN
escheck/escheck


+ 40 - 0
escheck/main.go

@@ -1,6 +1,7 @@
 package main
 
 import (
+	"bytes"
 	"encoding/json"
 	"fmt"
 	es "github.com/olivere/elastic/v7"
@@ -158,6 +159,10 @@ func (t *T) task() {
 		if count < t.Min || count > t.Max || countNew < t.Min || countNew > t.Max {
 			report = fmt.Sprintf("告警%s,最小%d,最大%d,统计结果:%d", t.Name, t.Min, t.Max, count)
 			t.SendMail(report)
+			wxurl := util.ObjToString(config["wxurl"])
+			if wxurl != "" {
+				SendBot(wxurl, report)
+			}
 		}
 	case "report":
 		//report = fmt.Sprintf("统计报告%s,【统计结果】,es库数量:%d", t.Name, count)
@@ -393,6 +398,11 @@ func (t *T) task() {
 		t.SendMail(report)
 		//t.SendMail("【竟品统计结果】")
 		//fmt.Println(report)
+		// 发送企业微信
+		wxurl := util.ObjToString(config["wxurl"])
+		if wxurl != "" {
+			SendBot(wxurl, report)
+		}
 
 	}
 	log.Println("task over:", t.Name, eq, count)
@@ -412,3 +422,33 @@ func (t *T) SendMail(report string) {
 func addTableRow(builder *strings.Builder, itemName string, esCount, mgoCount, diff, mgoTotal int) {
 	builder.WriteString(fmt.Sprintf(`<tr><th>%s</th><th>%d</th><th>%d</th><th>%d</th><th>%d</th></tr>`, itemName, esCount, mgoCount, diff, mgoTotal))
 }
+
+// SendBot 发送企业微信
+func SendBot(webhookURL, msg string) (b bool) {
+	// 构造请求体
+	payload := map[string]interface{}{
+		"msgtype": "text",
+		"text": map[string]string{
+			"content": msg,
+		},
+	}
+
+	// 转换为 JSON 字符串
+	payloadBytes, err := json.Marshal(payload)
+	if err != nil {
+		log.Println("Error:", err)
+		return
+	}
+
+	// 发送 POST 请求
+	resp, err := http.Post(webhookURL, "application/json", bytes.NewReader(payloadBytes))
+	if err != nil {
+		log.Println("Error:", err)
+		return
+	}
+	defer resp.Body.Close()
+	b = true
+	//打印响应结果
+	log.Println("send bot Status:", resp.Status)
+	return
+}

+ 6 - 0
org_tags/go.mod

@@ -6,6 +6,7 @@ require (
 	github.com/itcwc/go-zhipu v0.0.0-20241011031808-578f9ce4381c
 	github.com/olivere/elastic/v7 v7.0.32
 	github.com/spf13/viper v1.19.0
+	github.com/xuri/excelize/v2 v2.8.1
 	gorm.io/driver/clickhouse v0.6.1
 	gorm.io/gorm v1.25.12
 	jygit.jydev.jianyu360.cn/data_processing/common_utils v0.0.0-20240412074219-927f3f682cb3
@@ -33,11 +34,14 @@ require (
 	github.com/magiconair/properties v1.8.7 // indirect
 	github.com/mailru/easyjson v0.7.7 // indirect
 	github.com/mitchellh/mapstructure v1.5.0 // indirect
+	github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
 	github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
 	github.com/paulmach/orb v0.11.1 // indirect
 	github.com/pelletier/go-toml/v2 v2.2.2 // indirect
 	github.com/pierrec/lz4/v4 v4.1.21 // indirect
 	github.com/pkg/errors v0.9.1 // indirect
+	github.com/richardlehane/mscfb v1.0.4 // indirect
+	github.com/richardlehane/msoleps v1.0.3 // indirect
 	github.com/sagikazarmark/locafero v0.4.0 // indirect
 	github.com/sagikazarmark/slog-shim v0.1.0 // indirect
 	github.com/segmentio/asm v1.2.0 // indirect
@@ -50,6 +54,8 @@ require (
 	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
 	github.com/xdg-go/scram v1.1.1 // indirect
 	github.com/xdg-go/stringprep v1.0.3 // indirect
+	github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 // indirect
+	github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 // indirect
 	github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
 	go.mongodb.org/mongo-driver v1.11.4 // indirect
 	go.opentelemetry.io/otel v1.26.0 // indirect

+ 15 - 0
org_tags/go.sum

@@ -106,6 +106,8 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0
 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
 github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
+github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
 github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=
 github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
 github.com/nsqio/go-nsq v1.1.0/go.mod h1:vKq36oyeVXgsS5Q8YEO7WghqidAVXQlcFxzQbQTuDEY=
@@ -126,6 +128,11 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM=
+github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk=
+github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
+github.com/richardlehane/msoleps v1.0.3 h1:aznSZzrwYRl3rLKRT3gUk9am7T/mLNSnJINvN0AQoVM=
+github.com/richardlehane/msoleps v1.0.3/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
 github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
 github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
@@ -171,6 +178,12 @@ github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E=
 github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
 github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs=
 github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8=
+github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 h1:Chd9DkqERQQuHpXjR/HSV1jLZA6uaoiwwH3vSuF3IW0=
+github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI=
+github.com/xuri/excelize/v2 v2.8.1 h1:pZLMEwK8ep+CLIUWpWmvW8IWE/yxqG0I1xcN6cVMGuQ=
+github.com/xuri/excelize/v2 v2.8.1/go.mod h1:oli1E4C3Pa5RXg1TBXn4ENCXDV5JUMlBluUhG7c+CEE=
+github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 h1:qhbILQo1K3mphbwKh1vNm4oGezE1eF9fQWmNiIpSfI4=
+github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ=
 github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
 github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
 github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -201,6 +214,8 @@ golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOM
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g=
 golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k=
+golang.org/x/image v0.14.0 h1:tNgSxAFe3jC4uYqvZdTr84SZoM1KfwdC9SKIFrLjFn4=
+golang.org/x/image v0.14.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE=
 golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
 golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
 golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=

+ 77 - 0
org_tags/org_test.go

@@ -1,6 +1,10 @@
 package main
 
 import (
+	"encoding/json"
+	"fmt"
+	"github.com/xuri/excelize/v2"
+	"io/ioutil"
 	"log"
 	"testing"
 )
@@ -12,3 +16,76 @@ func TestZpName(t *testing.T) {
 	res := ZpName(key, model, sys2)
 	log.Println(res)
 }
+
+type Node struct {
+	Code     string `json:"code"`
+	Name     string `json:"name"`
+	Children []Node `json:"children"`
+}
+
+func TestA(t *testing.T) {
+	// 第一步:读取 JSON 文件
+	data, err := ioutil.ReadFile("./国民经济行业分类_2017.json")
+	if err != nil {
+		log.Fatalf("读取 JSON 文件失败: %v", err)
+	}
+
+	var root []Node
+	err = json.Unmarshal(data, &root)
+	if err != nil {
+		log.Fatalf("解析 JSON 失败: %v", err)
+	}
+
+	// 第二步:创建 Excel 文件
+	f := excelize.NewFile()
+	sheetName := "Sheet1"
+	f.NewSheet(sheetName)
+
+	// 写表头:每层用两列:code, name
+	f.SetCellValue(sheetName, "A1", "Level1 Code")
+	f.SetCellValue(sheetName, "B1", "Level1 Name")
+	f.SetCellValue(sheetName, "C1", "Level2 Code")
+	f.SetCellValue(sheetName, "D1", "Level2 Name")
+	f.SetCellValue(sheetName, "E1", "Level3 Code")
+	f.SetCellValue(sheetName, "F1", "Level3 Name")
+	f.SetCellValue(sheetName, "G1", "Level4 Code")
+	f.SetCellValue(sheetName, "H1", "Level4 Name")
+
+	// 第三步:递归写入
+	row := 2
+	for _, n := range root {
+		row = writeNode(f, sheetName, n, row, 0)
+	}
+
+	// 第四步:保存 Excel 文件
+	if err := f.SaveAs("output.xlsx"); err != nil {
+		log.Fatalf("保存 Excel 失败: %v", err)
+	}
+
+	fmt.Println("导出完成:output.xlsx")
+}
+
+func writeNode(f *excelize.File, sheet string, node Node, row int, level int) int {
+	// 每层用两列:level=0 用 A/B, level=1 用 C/D ...
+	// 列号从 1 开始:A=1, B=2, C=3...
+	colCodeNum := level*2 + 1 // 代码列
+	colNameNum := level*2 + 2 // 名称列
+
+	colCode, _ := excelize.ColumnNumberToName(colCodeNum)
+	colName, _ := excelize.ColumnNumberToName(colNameNum)
+
+	cellCode := fmt.Sprintf("%s%d", colCode, row)
+	cellName := fmt.Sprintf("%s%d", colName, row)
+
+	f.SetCellValue(sheet, cellCode, node.Code)
+	f.SetCellValue(sheet, cellName, node.Name)
+
+	if len(node.Children) > 0 {
+		for _, child := range node.Children {
+			row = writeNode(f, sheet, child, row, level+1)
+		}
+	} else {
+		row++
+	}
+	return row
+}

+ 2 - 2
zhaiquan/export.go

@@ -14,8 +14,8 @@ import (
 // exportData 导出专项债数据
 func exportData() {
 	//查询条件
-	area := "湖北省" //省份
-	area_list := "湖北"
+	area := "天津市" //省份
+	area_list := "天津市"
 	start := "2025" // 发售时间
 
 	//

+ 3 - 2
zhaiquan/main.go

@@ -17,9 +17,10 @@ var (
 )
 
 func main() {
-
-	return
 	Init()
+	exportData()
+	return
+	
 	local, _ := time.LoadLocation("Asia/Shanghai")
 	c := cron.New(cron.WithLocation(local), cron.WithSeconds())
 	eid, err := c.AddFunc(GF.Cron.Spec, importData) // 处理增量专项债