Bläddra i källkod

新增定时检测

longyu 2 år sedan
förälder
incheckning
b2594be8bf
8 ändrade filer med 163 tillägg och 34 borttagningar
  1. 28 8
      init_serve/task.go
  2. 1 14
      main.go
  3. 6 0
      models/index/index.go
  4. 6 4
      services/alarm_msg/alarm_msg.go
  5. 93 0
      services/index.go
  6. 25 4
      utils/common.go
  7. 2 2
      utils/constants.go
  8. 2 2
      watch/watch.go

+ 28 - 8
init_serve/task.go

@@ -1,17 +1,37 @@
 package init_serve
 
 import (
-	"hongze/mysteel_watch/task"
+	"github.com/robfig/cron/v3"
+	"hongze/mysteel_watch/services"
+	"hongze/mysteel_watch/utils"
 	"hongze/mysteel_watch/watch"
+	"time"
+
+	"hongze/mysteel_watch/global"
+	"hongze/mysteel_watch/services/alarm_msg"
 )
 
-func InitTask()  {
-	chlist := task.GetTaskList()
-	go func() {
-		for l := range chlist {
-			l.Exec()
-		}
-	}()
+func InitTask() {
+	c := cron.New(cron.WithSeconds())
+	_, err := c.AddFunc("0 */3 * * * *", CheckIndexCreate)
+	if err != nil {
+		global.LOG.Info("DownloadCvTask err" + err.Error())
+		panic("DownloadCvTask err" + err.Error())
+	}
+
+	c.Start()
 
 	go watch.ListenFolderNew()
 }
+
+//检测指标数据是否生成
+func CheckIndexCreate() {
+	var err error
+	defer func() {
+		if err != nil {
+			global.LOG.Info(utils.APPNAME + " 定时任务 出错" + time.Now().Format("2006-01-02 15:04:05") + ";Err:" + err.Error())
+			go alarm_msg.SendAlarmMsg(utils.APPNAME+" 定时任务 出错"+time.Now().Format("2006-01-02 15:04:05")+";Err:"+err.Error(), 3)
+		}
+	}()
+	err = services.IndexCreateCheck()
+}

+ 1 - 14
main.go

@@ -3,30 +3,17 @@ package main
 import (
 	"fmt"
 	"hongze/mysteel_watch/core"
-	"hongze/mysteel_watch/watch"
 	"os"
 	"path/filepath"
 	"strings"
 	"sync"
 )
 
-// @title 弘则人力资源管理系统API接口文档
-// @version 1.0
-// @description 弘则人力资源管理系统API接口文档
-// @termsOfService https://www.hzinsights.com/
 
-// @contact.name www.hzinsights.com/
-// @contact.url https://www.hzinsights.com/
-// @contact.email pyan@hzinsights.com
-
-// @license.name Apache 2.0
-// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
-
-// @host 127.0.0.1:8390
 // @BasePath /
 func main() {
+	fmt.Println("main")
 	core.RunServe()
-	go watch.ListenFolderNew()
 }
 
 //检测指标文件

+ 6 - 0
models/index/index.go

@@ -73,3 +73,9 @@ func (d *BaseFromMysteelChemicalIndex) GetIndexItem(runMod, indexCode string) (i
 type IndexDeleteReq struct {
 	IndexCode string `json:"IndexCode" binding:"required"` //指标编码
 }
+
+func (d *BaseFromMysteelChemicalIndex)GetIndexCreate()(item []*BaseFromMysteelChemicalIndex, err error)  {
+	err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
+		Where("index_name = '' ").Find(&item).Error
+	return
+}

+ 6 - 4
services/alarm_msg/alarm_msg.go

@@ -2,13 +2,14 @@ package alarm_msg
 
 import (
 	"encoding/json"
+	"fmt"
 	"github.com/rdlucklib/rdluck_tools/http"
 	"hongze/mysteel_watch/global"
 	"hongze/mysteel_watch/utils"
 )
 
 var (
-	AlarmMsgUrl = "http://127.0.0.1:8606/api/alarm/send"
+	AlarmMsgUrl = "http://47.102.213.75:8606/api/alarm/send"
 )
 
 //projectName-项目名称
@@ -18,7 +19,7 @@ var (
 func SendAlarmMsg(msgBody string, level int) {
 	params := make(map[string]interface{})
 	params["ProjectName"] = utils.APPNAME
-	params["RunMode"] = global.CONFIG.Serve.RunMode
+	params["RunMode"] = "release"//global.CONFIG.Serve.RunMode
 	params["MsgBody"] = msgBody
 	params["Level"] = level
 	param, err := json.Marshal(params)
@@ -26,5 +27,6 @@ func SendAlarmMsg(msgBody string, level int) {
 		global.LOG.Critical("SendAlarmMsg json.Marshal Err:" + err.Error())
 		return
 	}
-	http.Post(AlarmMsgUrl, string(param))
-}
+	r, e := http.Post(AlarmMsgUrl, string(param))
+	fmt.Println("SendAlarmMsg", string(r), e)
+}

+ 93 - 0
services/index.go

@@ -0,0 +1,93 @@
+package services
+
+import (
+	"encoding/json"
+	"fmt"
+	"github.com/xuri/excelize/v2"
+	"hongze/mysteel_watch/global"
+	"hongze/mysteel_watch/models/index"
+	"hongze/mysteel_watch/services/alarm_msg"
+	"hongze/mysteel_watch/utils"
+	"os"
+	"strings"
+	"time"
+)
+
+func IndexCreateCheck() (err error) {
+	fmt.Println("IndexCreateCheck")
+	indexObj := new(index.BaseFromMysteelChemicalIndex)
+	list, err := indexObj.GetIndexCreate()
+	if err != nil {
+		return
+	}
+	fmt.Println("listLen:", len(list))
+	if len(list) <= 0 {
+		return nil
+	}
+	var indexCode []string
+	for _, v := range list {
+		indexCode = append(indexCode, v.IndexCode)
+	}
+	indexCodeStr := strings.Join(indexCode, ";")
+	fmt.Println("indexCodeStr:" + indexCodeStr)
+	go alarm_msg.SendAlarmMsg(utils.APPNAME+" 存在指标数据未生成:"+indexCodeStr, 3)
+	for _, v := range list {
+		err := IndexCreate(v)
+		if err != nil {
+			go alarm_msg.SendAlarmMsg(utils.APPNAME+" 指标数据未生成检测失败:"+err.Error(), 3)
+		}
+	}
+	return nil
+}
+
+func IndexCreate(item *index.BaseFromMysteelChemicalIndex) (err error) {
+	item.UpdateWeek = utils.GetUpdateWeekEn(item.UpdateWeek)
+	global.LOG.Info("task IndexCreate:" + time.Now().Format(utils.FormatDateTime))
+
+	if utils.FileIsExist(item.FilePath) {
+		os.Remove(item.FilePath)
+	}
+	runMode := "release"
+	//fileName := req.IndexName + "_" + req.IndexCode + ".xlsx"
+	var fileName string
+	if item.UpdateWeek != "" {
+		fileName = item.IndexCode + "_" + item.UpdateWeek + "_" + runMode + ".xlsx" //保存的文件名称
+	} else {
+		fileName = item.IndexCode + "_" + runMode + ".xlsx" //保存的文件名称
+	}
+	filePath := utils.IndexSaveDir + fileName
+
+	templatePath := utils.IndexSaveDir + "index_template.xlsx"
+	templateFile, err := excelize.OpenFile(templatePath)
+	if err != nil {
+		return
+	}
+	defer func() {
+		templateFile.Close()
+	}()
+
+	startDate := "1990-01-01"
+	commentStr := `"BlankValue":"0","CanMark":true,"ChartLineType":"0","DateBlock":0,"DateBlockCount":1,"DateFormat":0,"DateTimeTag":"","EndDate":"","ExportType":0,"HasDescription":true,"HasEmptyRows":false,"HasFrequency":true,"HasIndexID":true,"HasLastDate":true,"HasSourceName":true,"HasTimeInterval":true,"HasUnit":true,"HasUpdateDate":true,"IsCreateChart":false,"IsDataSort":true,"IsNewSheet":false,"IsNewWorkbook":false,"Models":[{"DataFormat":0,"DataStartDate":"` + startDate + `","DefineName":"","DefineUnit":"","DisplayIndexCode":"` + item.IndexCode + `","IndexCode":"` + item.IndexCode + `","IndexFormula":"` + item.IndexCode + `","PointValue":0,"UnionStart":""}],"Position":"A1","RangeData":"A2:B280","ShowBlankLines":false,"StartDate":"","Transpose":false,"UpdateMode":0,"lookModel":{"IsLast":false,"LookValue":0,"lookType":0},"ver":3}
+`
+	commentMap := make(map[string]interface{})
+	commentMap["author"] = "{"
+	commentMap["text"] = commentStr
+	//commentMap["text"] = commentItem
+
+	commentJson, err := json.Marshal(commentMap)
+	if err != nil {
+		fmt.Println("json.Marshal err:" + err.Error())
+		return err
+	}
+
+	fmt.Println("commentJson")
+	fmt.Println(string(commentJson))
+	templateFile.DeleteComment("Sheet1", "A1")
+	templateFile.AddComment("Sheet1", "A1", string(commentJson))
+	if err := templateFile.SaveAs(filePath); err != nil {
+		fmt.Println(err)
+		return err
+	}
+	time.Sleep(1 * time.Minute)
+	return
+}

+ 25 - 4
utils/common.go

@@ -32,7 +32,7 @@ var ErrNoRow = gorm.ErrRecordNotFound
 )*/
 
 // 发放token
-func GenToken(account string)(accessToken string, err error) {
+func GenToken(account string) (accessToken string, err error) {
 	/*token := jwt.New(jwt.SigningMethodHS256)
 	token.Claims = &jwt.StandardClaims{
 		NotBefore: int64(time.Now().Unix()),
@@ -420,6 +420,7 @@ func TimeTransferString(format string, t time.Time) string {
 	}
 	return str
 }
+
 // ToUnicode
 func ToUnicode(text string) string {
 	textQuoted := strconv.QuoteToASCII(text)
@@ -991,8 +992,8 @@ func InArray(needle interface{}, hyStack interface{}) bool {
 
 // bit转MB 保留小数
 func Bit2MB(bitSize int64, prec int) (size float64) {
-	mb := float64(bitSize)/float64(1024*1024)
-	size, _ = strconv.ParseFloat(strconv.FormatFloat(mb,'f',prec,64), 64)
+	mb := float64(bitSize) / float64(1024*1024)
+	size, _ = strconv.ParseFloat(strconv.FormatFloat(mb, 'f', prec, 64), 64)
 	return
 }
 
@@ -1005,4 +1006,24 @@ func SubStr(str string, subLen int) string {
 	}
 	str = string(strRune[:bodyRuneLen])
 	return str
-}
+}
+
+func GetUpdateWeekEn(updateWeek string) string {
+	switch updateWeek {
+	case "周一":
+		updateWeek = "monday"
+	case "周二":
+		updateWeek = "tuesday"
+	case "周三":
+		updateWeek = "wednesday"
+	case "周四":
+		updateWeek = "thursday"
+	case "周五":
+		updateWeek = "friday"
+	case "周六":
+		updateWeek = "saturday"
+	case "周日":
+		updateWeek = "sunday"
+	}
+	return updateWeek
+}

+ 2 - 2
utils/constants.go

@@ -23,8 +23,8 @@ const (
 )
 
 const (
-	APPNAME          = "弘则人力资源管理系统"
-	EmailSendToUsers = "317699326@qq.com;984198890@qq.com;hsun@hzinsights.com;xyxie@hzinsights.com"
+	APPNAME          = "钢联化工数据生成服务"
+	EmailSendToUsers = "317699326@qq.com;984198890@qq.com;"
 )
 
 // 招聘流程状态:0待一面结果建议、1待一面结果确认、2待二面结果建议、3待二面结果确认、4已通过;5已淘汰

+ 2 - 2
watch/watch.go

@@ -179,12 +179,12 @@ func WatchIndexFile(filePath string) {
 							} else if strings.Contains(frequency, "年") {
 								frequencyStr = "year"
 							}
-
+							frequencyStr="_"+frequencyStr
 							if !strings.Contains(filePath, frequencyStr) {
 								fpArr := strings.Split(fp, "_")
 								for k, v := range fpArr {
 									if k == 0 {
-										newFilePath = v + "_" + frequencyStr
+										newFilePath = v +  frequencyStr
 									} else {
 										newFilePath = newFilePath + "_" + v
 									}