Browse Source

检查指标更新个数

xyxie 1 năm trước cách đây
mục cha
commit
d882f36adb
4 tập tin đã thay đổi với 115 bổ sung3 xóa
  1. 6 0
      init_serve/task.go
  2. 54 0
      services/index.go
  3. 4 3
      utils/constants.go
  4. 51 0
      watch/edb_lib.go

+ 6 - 0
init_serve/task.go

@@ -75,6 +75,12 @@ func InitTask() {
 		global.LOG.Info("ServerCheck err" + err.Error())
 	}
 
+	// 指标更新检测
+	_, err = c.AddFunc("0 30 17 * * *", services.IndexUpdateCheck)
+	if err != nil {
+		global.LOG.Info("IndexUpdateCheck err" + err.Error())
+	}
+
 	c.Start()
 
 	////go watch.ListenFolderNew()

+ 54 - 0
services/index.go

@@ -454,3 +454,57 @@ func AddIndexRefreshToLpush(filePath string) {
 	pushLock.Unlock()
 	return
 }
+
+func IndexUpdateCheck() {
+	//day:周一至周六
+	//week,周三至周五
+	//month:每月月中和月底
+	//season:每个季度的下一个月,月中和月底
+	//year:每个月月初
+	// 频度:日度,周度,月度,季度,年度
+	frequencyBatch := []string{"日度"}
+	//today, _ := time.Parse(utils.FormatDate, "2023-09-01")
+	today := time.Now()
+	todayDate := today.Format(utils.FormatDate)
+	// 是否是周度指标更新的日子
+	if today.Weekday() >= 3 {
+		frequencyBatch = append(frequencyBatch, "周度")
+	}
+
+	// 判断是否是月度指标更新的日子
+	/*tmpT, _ := time.ParseInLocation(utils.FormatDate, today.Format(utils.FormatYearMonth)+"-01", time.Local)
+	lastDate := tmpT.AddDate(0, 1, -1).Format(utils.FormatDate)
+	if lastDate == todayDate {
+		frequencyBatch = append(frequencyBatch, "月度")
+	}
+
+	//判断是否是季度指标更新的日子
+	if lastDate == todayDate && today.Month()%3 == 0 {
+		frequencyBatch = append(frequencyBatch, "季度")
+	}
+	//判断是否是年度指标更新的日子
+	tmpT, _ = time.ParseInLocation(utils.FormatDate, today.Format(utils.FormatYearMonth)+"-01", time.Local)
+	if tmpT.Format(utils.FormatDate) == todayDate {
+		frequencyBatch = append(frequencyBatch, "年度")
+	}*/
+	var req watch.RefreshCheckByDayReq
+	req.Source = 15
+	req.LatestDate = todayDate
+	req.FrequencyBatch = strings.Join(frequencyBatch, ",")
+	ret, err := watch.RefreshCheckByDay(req)
+	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)
+		return
+	}
+	fmt.Println(ret.UnUpdateNum)
+	fmt.Println(ret.UpdateNum)
+	halfNum := ret.UpdateNum / 2
+	if ret.UnUpdateNum > halfNum {
+		tip := fmt.Sprintf("%s 钢联指标更新检查:更新数据过少; %s :已更新指标个数:%d, 未更新指标个数%d", utils.APPNAME, todayDate, ret.UpdateNum, ret.UnUpdateNum)
+		global.LOG.Info(tip)
+		go alarm_msg.SendAlarmMsg(tip, 3)
+		return
+	}
+	return
+}

+ 4 - 3
utils/constants.go

@@ -1,6 +1,6 @@
 package utils
 
-//常量定义
+// 常量定义
 const (
 	FormatTime            = "15:04:05"                //时间格式
 	FormatDate            = "2006-01-02"              //日期格式
@@ -9,6 +9,7 @@ const (
 	FormatDateTime        = "2006-01-02 15:04:05"     //完整时间格式
 	HlbFormatDateTime     = "2006-01-02_15:04:05.999" //完整时间格式
 	FormatDateTimeUnSpace = "20060102150405"          //完整时间格式
+	FormatYearMonth       = "2006-01"                 //日期格式
 	PageSize15            = 15                        //列表页每页数据量
 	PageSize5             = 5
 	PageSize10            = 10
@@ -16,7 +17,7 @@ const (
 	PageSize30            = 30
 )
 
-//手机号,电子邮箱正则
+// 手机号,电子邮箱正则
 const (
 	RegularMobile = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0-9])|(17[0-9])|(16[0-9])|(19[0-9]))\\d{8}$" //手机号码
 	RegularEmail  = `\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*`                                             //匹配电子邮箱
@@ -30,7 +31,7 @@ const (
 const DefaultPwd = "9cbf8a4dcb8e30682b927f352d6559a0" //初始密码:123456a
 
 const (
-	REFRESH_INDEX = "REFRESH_INDEX_LIST"
+	REFRESH_INDEX      = "REFRESH_INDEX_LIST"
 	REFRESH_INDEX_CODE = "REFRESH_INDEX_CODE_"
 )
 

+ 51 - 0
watch/edb_lib.go

@@ -471,6 +471,57 @@ func MultiUpdateIndex(req []UpdateIndexReq) (err error) {
 	return
 }
 
+type RefreshCheckByDayReq struct {
+	Source         int    `description:"来源id"`
+	LatestDate     string `description:"数据最新日期"`
+	FrequencyBatch string `description:"更新频度"`
+}
+
+type RefreshCheckByDayData struct {
+	UpdateNum   int `description:"已更新指标数"`
+	UnUpdateNum int `description:"未更新指标数"`
+}
+
+type RefreshCheckByDayResponse struct {
+	Ret     int
+	Msg     string
+	ErrMsg  string
+	ErrCode string
+	Data    RefreshCheckByDayData
+	Success bool `description:"true 执行成功,false 执行失败"`
+}
+
+// RefreshCheckByDay  每日更新检查
+func RefreshCheckByDay(req RefreshCheckByDayReq) (data RefreshCheckByDayData, err error) {
+	if global.CONFIG.Serve.EdbLibUrl == `` {
+		err = errors.New("刷新未配置")
+		return
+	}
+
+	urlStr := "/edb_info/refresh_check"
+	postUrl := global.CONFIG.Serve.EdbLibUrl + urlStr
+	postData, err := json.Marshal(req)
+	if err != nil {
+		return
+	}
+	result, err := HttpPost(postUrl, string(postData), "application/json")
+	if err != nil {
+		return
+	}
+
+	var resp RefreshCheckByDayResponse
+	global.LOG.Info(" RefreshCheckByDay Result: " + string(result))
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+	if resp.Ret != 200 {
+		err = fmt.Errorf(resp.ErrMsg)
+	}
+	data = resp.Data
+	return
+}
+
 func HttpPost(url, postData string, params ...string) ([]byte, error) {
 	body := ioutil.NopCloser(strings.NewReader(postData))
 	client := &http.Client{}