Browse Source

设置定时任务时间

xyxie 6 months ago
parent
commit
03081598a3
2 changed files with 25 additions and 17 deletions
  1. 2 2
      services/task.go
  2. 23 15
      services/usda_psd.go

+ 2 - 2
services/task.go

@@ -23,8 +23,8 @@ func Task() {
 	//FileCoalCoastal()
 	//FileCoalInland()
 	if utils.BusinessCode == utils.BusinessCodeRelease {
-		refreshUsdaPsd := task.NewTask("RefreshUsdaPsd", "0 0 3,21 1 * *", DownloadUsdaPsdDataTask)
-		refreshUsdaFms := task.NewTask("RefreshUsdaFms", "0 0,30 16-23 * * *", DownloadUsdaFmsDataTask)
+		refreshUsdaPsd := task.NewTask("RefreshUsdaPsd", "0 0 16 * * 5", DownloadUsdaPsdDataTask) //每周五下午16点
+		refreshUsdaFms := task.NewTask("RefreshUsdaFms", "0 0 16 * * 5", DownloadUsdaFmsDataTask) //每周五下午16点
 		refreshData := task.NewTask("refreshData", "0 0,30 16-18 * * *", RefreshData)
 		refreshEic := task.NewTask("RefreshEic", "0 0 2,6 * * *", RefreshEic)
 		refreshCoal := task.NewTask("RefreshCoal", "0 0,30 16-23 * * *", RefreshCoal)

+ 23 - 15
services/usda_psd.go

@@ -72,7 +72,9 @@ type UsdaFasIndex struct {
 func DownloadUsdaPsdDataTask(cont context.Context) (err error) {
 	//月度供需,年度和月度
 	//todo 设置下载频率
-	err = DownloadUsdaPsdData()
+	// 获取最近两年的年份
+	years := []int{time.Now().Year() + 1, time.Now().Year()}
+	err = DownloadUsdaPsdData(years)
 	return
 }
 
@@ -107,7 +109,7 @@ func DownloadUsdaFmsDataTask(cont context.Context) (err error) {
 // Oilseed, Soybean:2222000
 // Oilseed, Sunflowerseed:2224000
 // 美国农业部月度供需平衡表数据
-func DownloadUsdaPsdData() (err error) {
+func DownloadUsdaPsdData(years []int) (err error) {
 	defer func() {
 		if err != nil {
 			msg := "失败提醒" + "downloadUsdaPsdData ErrMsg:" + err.Error()
@@ -151,7 +153,8 @@ func DownloadUsdaPsdData() (err error) {
 	var countries []string
 	countries = append(countries, "R00", "ALL")
 	var marketYears []int
-	marketYears = append(marketYears, 2025, 2024, 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014)
+	//marketYears = append(marketYears, 2025, 2024, 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014)
+	marketYears = append(marketYears, years...)
 	// {"queryId":0,"commodityGroupCode":null,"commodities":["0430000"],"attributes":[4,20,28,57,81,84,86,88,113,130,192,125,176,178,184],"countries":["R00","ALL"],"marketYears":[2024,2023,2022,2021,2020,2019,2018,2017,2016,2015,2014],"chkCommoditySummary":false,"chkAttribSummary":false,"chkCountrySummary":false,"commoditySummaryText":"","attribSummaryText":"","countrySummaryText":"","optionColumn":"year","chkTopCountry":false,"topCountryCount":"","chkfileFormat":false,"chkPrevMonth":true,"chkMonthChange":false,"chkCodes":false,"chkYearChange":false,"queryName":"","sortOrder":"Commodity/Attribute/Country","topCountryState":false}
 	var req UsdaPsdDataQueryParams
 	req.Commodities = commodities
@@ -194,9 +197,9 @@ func DownloadUsdaPsdData() (err error) {
 			err = fmt.Errorf("handleUsdaFasPsd, Err:%w", err)
 			return
 		}
-	case <-time.After(20 * time.Minute): // 假设20分钟超时
+		/*case <-time.After(20 * time.Minute): // 假设20分钟超时
 		err = fmt.Errorf("parse excel timed out")
-		return
+		return*/
 	}
 
 	return
@@ -213,7 +216,7 @@ func DownloadUsdaFmsData(startDate, endDate string) (err error) {
 			go alarm_msg.SendAlarmMsg(msg, 3)
 		}
 	}()
-	downloadFile := fmt.Sprintf("./static/usda_fms_excel_%s.xls", time.Now().Format(utils.FormatDateTime))
+	downloadFile := fmt.Sprintf("./static/usda_fms_excel_%s.xls", time.Now().Format(utils.FormatDateTimeUnSpace))
 	//请求首页,获取入参
 	dataUrl := "https://apps.fas.usda.gov/esrquery/esrq.aspx"
 	body1, err := utils.HttpGetNoCookie(dataUrl)
@@ -362,9 +365,9 @@ func DownloadUsdaFmsData(startDate, endDate string) (err error) {
 			err = fmt.Errorf("parse excel, Err:%w", err)
 			return
 		}
-	case <-time.After(20 * time.Minute): // 假设20分钟超时
+		/*case <-time.After(20 * time.Minute): // 假设20分钟超时
 		err = fmt.Errorf("parse excel timed out")
-		return
+		return*/
 	}
 
 	fmt.Println("Excel file downloaded successfully")
@@ -424,7 +427,7 @@ func ParseUsdaFmsExcel(path string) (err error) {
 			dataVal := ""
 			unit := "Metric Tons"
 			for k, text := range row {
-				fmt.Println("第", i, "行,第", k, "列,内容:", text)
+				//fmt.Println("第", i, "行,第", k, "列,内容:", text)
 				kind := ""
 				indexName := ""
 				if k == 1 { // 品种名称Commodity
@@ -499,10 +502,10 @@ func ParseUsdaFmsExcel(path string) (err error) {
 	//}
 
 	for _, v := range indexMap {
-		fmt.Printf("IndexName: %s \n", v.IndexName)
-		fmt.Printf("IndexCode: %s \n", v.IndexCode)
+		//fmt.Printf("IndexName: %s \n", v.IndexName)
+		//fmt.Printf("IndexCode: %s \n", v.IndexCode)
 		indexList = append(indexList, v)
-		if len(indexList) > 500 {
+		if len(indexList) > 100 {
 			err = addUsdaFasPsdData(indexList, "出口销售")
 			if err != nil {
 				return
@@ -519,9 +522,13 @@ func ParseUsdaFmsExcel(path string) (err error) {
 
 func handleUsdaFasPsd(item *UsdaPsdData) (err error) {
 	//设置缓存key,防止重复处理
+	errMsg := ""
 	defer func() {
 		if err != nil {
-			msg := "失败提醒" + "downloadUsdaPsdData_handleUsdaFasPsd ErrMsg:" + err.Error()
+			errMsg += err.Error()
+		}
+		if errMsg != "" {
+			msg := "失败提醒" + "downloadUsdaPsdData_handleUsdaFasPsd ErrMsg:" + errMsg
 			fmt.Println("msg:", msg)
 			utils.FileLog.Info(msg)
 			go alarm_msg.SendAlarmMsg(msg, 3)
@@ -548,7 +555,7 @@ func handleUsdaFasPsd(item *UsdaPsdData) (err error) {
 	commodityRow := ""
 	countriesRow := ""
 	attributesRow := ""
-	errMsg := ""
+
 	for _, row := range item.QueryResult {
 		unitK := headerSlice[len(headerSlice)-1]
 		unit := row[unitK].(string)
@@ -558,6 +565,7 @@ func handleUsdaFasPsd(item *UsdaPsdData) (err error) {
 		for _, k := range headerSlice {
 			col, ok := row[k]
 			if !ok || col == nil {
+				utils.FileLog.Info("col is nil")
 				continue
 			}
 			if k == "commodity" {
@@ -641,7 +649,7 @@ func handleUsdaFasPsd(item *UsdaPsdData) (err error) {
 		fmt.Printf("IndexName: %s \n", v.IndexName)
 		fmt.Printf("IndexCode: %s \n", v.IndexCode)
 		indexList = append(indexList, v)
-		if len(indexList) > 500 {
+		if len(indexList) > 100 {
 			err = addUsdaFasPsdData(indexList, "月度供需")
 			if err != nil {
 				return