Procházet zdrojové kódy

粮油商务网数据对接

gmy před 8 měsíci
rodič
revize
d98319b26c

+ 5 - 3
cmd/commodity_liangyou.go

@@ -269,9 +269,11 @@ func processReport(ctx context.Context, product string, category string, reportU
 
 	}
 	// 新增指标数据
-	err = models.AddLyDataList(lyIndexDataList)
-	if err != nil {
-		return err
+	if len(lyIndexDataList) > 0 {
+		err = models.AddLyDataList(lyIndexDataList)
+		if err != nil {
+			return err
+		}
 	}
 
 	return nil

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 788 - 175
cmd/processor_business_logic.go


+ 17 - 0
cmd/processor_factory.go

@@ -51,6 +51,10 @@ func GetProcessor(product string, category string) (ReportProcessor, error) {
 		}
 	} else if product == "棕榈油" {
 		switch category {
+		case "国际价格":
+			return &InternationalPriceProcessor{}, nil
+		case "进口成本":
+			return &PalmOilImportCostProcessor{}, nil
 		case "库存分析":
 			return &InventoryAnalysisProcessor{}, nil
 		case "每日成交":
@@ -64,6 +68,10 @@ func GetProcessor(product string, category string) (ReportProcessor, error) {
 			return &ImportCostProcessor{}, nil
 		case "库存分析":
 			return &InventoryAnalysisProcessor{}, nil
+		case "加拿大统计局":
+			return &CanadaStatisticsBureauProcessor{}, nil
+		case "进出口分析":
+			return &ImportExportAnalysisProcessor{}, nil
 		default:
 			return nil, fmt.Errorf("unknown category: %s", category)
 		}
@@ -78,6 +86,15 @@ func GetProcessor(product string, category string) (ReportProcessor, error) {
 		switch category {
 		case "库存分析":
 			return &InventoryAnalysisProcessor{}, nil
+		case "每日成交":
+			return &DailyTransactionProcessor{}, nil
+		default:
+			return nil, fmt.Errorf("unknown category: %s", category)
+		}
+	} else if product == "葵花粕" {
+		switch category {
+		case "进口预估":
+			return &ImportEstimateProcessor{}, nil
 		default:
 			return nil, fmt.Errorf("unknown category: %s", category)
 		}

+ 10 - 17
static/liangyou.json

@@ -1,21 +1,14 @@
 {
-  "菜粕": {
-    "库存分析": {
-      "全国油厂进口压榨菜粕库存与合同统计周报": [
-        "全国油厂进口压榨菜粕库存量:广西地区:万吨:周度",
-        "全国油厂进口压榨菜粕库存量:广东地区:万吨:周度",
-        "全国油厂进口压榨菜粕库存量:福建地区:万吨:周度",
-        "全国油厂进口压榨菜粕库存量:江苏地区:万吨:周度",
-        "全国油厂进口压榨菜粕库存量:辽宁地区:万吨:周度",
-        "全国油厂进口压榨菜粕库存量:其他地区:万吨:周度",
-        "全国油厂进口压榨菜粕库存量:全国合计:万吨:周度",
-        "全国油厂进口压榨菜粕合同量:广西地区:万吨:周度",
-        "全国油厂进口压榨菜粕合同量:广东地区:万吨:周度",
-        "全国油厂进口压榨菜粕合同量:福建地区:万吨:周度",
-        "全国油厂进口压榨菜粕合同量:江苏地区:万吨:周度",
-        "全国油厂进口压榨菜粕合同量:辽宁地区:万吨:周度",
-        "全国油厂进口压榨菜粕合同量:其他地区:万吨:周度",
-        "全国油厂进口压榨菜粕合同量:全国合计:万吨:周度"
+  "大豆": {
+    "采购装船": {
+      "中国大豆采购进度周统计": [
+        "中国大豆计划采购量:计划采购量:万吨:周度",
+        "中国大豆已采购量:美国:已采购量美国:万吨:周度",
+        "中国大豆已采购量:巴西:已采购量巴西:万吨:周度",
+        "中国大豆已采购量:阿根廷/乌拉圭:已采购量阿根廷/乌拉圭:万吨:周度",
+        "中国大豆已采购量:小计:已采购量小计:万吨:周度",
+        "中国大豆未采购量:未采购量:万吨:周度",
+        "中国大豆采购进度:采购进度%:%:周度"
       ]
     }
   }

+ 71 - 1
utils/date_util.go

@@ -103,6 +103,31 @@ func ConvertTimeFormat(dateText string) (string, error) {
 	return reportDate.Format("2006-01-02"), nil
 }
 
+// GetNextThreeMonthsNoYear 获取当前月和后两月 不带年份,转换时间格式 dateText 格式为 2024-08-03 --> 8月,9月,10月
+func GetNextThreeMonthsNoYear(dateText string) ([]string, error) {
+	// 解析日期字符串为时间类型
+	date, err := time.Parse("2006-01-02", dateText)
+	if err != nil {
+		return nil, fmt.Errorf("日期解析错误: %v", err)
+	}
+
+	// 存储结果的切片
+	var result []string
+
+	// 获取本月及后两个月的月份
+	for i := 0; i < 3; i++ {
+		month := int(date.Month())
+
+		// 构建并添加当前年月到结果中
+		result = append(result, fmt.Sprintf("%d月", month))
+
+		// 将日期加一个月
+		date = date.AddDate(0, 1, 0)
+	}
+
+	return result, nil
+}
+
 // GetWeekdaysInSameWeek 拿到传入时间本周当前工作日的时间列表,时间格式 dataText 格式为 2024-08-03 --> 8月3日
 func GetWeekdaysInSameWeek(dateStr string) ([]string, error) {
 	// 解析输入日期字符串
@@ -169,6 +194,20 @@ func ConvertTimeFormatToYearMonthDay(dateText string) (string, error) {
 	return fmt.Sprintf("%02d年%d月%d日", shortYear, reportDate.Month(), reportDate.Day()), nil
 }
 
+// GetCurrentYear 获取当前年份 转换时间格式 dateText 格式为 2024-08-03 --> 2024年
+func GetCurrentYear(dateText string) (string, error) {
+	// 解析日期
+	reportDate, err := time.Parse("2006-01-02", strings.TrimSpace(dateText))
+	if err != nil {
+		return "", fmt.Errorf("failed to parse report date: %v", err)
+	}
+
+	// 获取年份的后两位
+	shortYear := reportDate.Year() % 100
+
+	return fmt.Sprintf("%02d年", shortYear), nil
+}
+
 // ConvertTimeFormatToYearMonth 转换时间格式 dateText 返回本月 和 后两月 格式为 2024-08-03 --> 2024年8月,2024-10-03 --> 2024年10月
 func ConvertTimeFormatToYearMonth(dateText string) ([]string, error) {
 
@@ -187,6 +226,23 @@ func ConvertTimeFormatToYearMonth(dateText string) ([]string, error) {
 	return months, nil
 }
 
+// GetYearMonthNoYear 获取本月和后两月的年月 2024-08-03 --> 24年8月,24年9月,24年10月
+func GetYearMonthNoYear(dateText string) ([]string, error) {
+	// 解析日期
+	reportDate, err := time.Parse("2006-01-02", strings.TrimSpace(dateText))
+	if err != nil {
+		return nil, fmt.Errorf("failed to parse report date: %v", err)
+	}
+
+	months := make([]string, 3)
+	for i := 0; i < 3; i++ {
+		month := reportDate.AddDate(0, i, 0).Format("06年1月")
+		months[i] = month
+	}
+
+	return months, nil
+}
+
 // GetCurrentYearAndNextYear 获取当时所在得年度和明年得年度列表 2024-08-03 --> 2023/24年度, 2024/25年度
 func GetCurrentYearAndNextYear(dateText string) ([]string, error) {
 	// 解析日期
@@ -206,7 +262,21 @@ func GetCurrentYearAndNextYear(dateText string) ([]string, error) {
 	return years, nil
 }
 
-// 获取传入时间的本月及后两月的年月 2024-08-03 --> 24年8月
+// ConvertMonthToNumber 时间转换 格式 8月 --> 08
+func ConvertMonthToNumber(dateText string) (string, error) {
+	// 去掉字符串中的 "月"
+	trimmed := strings.TrimSuffix(strings.TrimSpace(dateText), "月")
+
+	// 将月份转换为整数
+	month, err := strconv.Atoi(trimmed)
+	if err != nil {
+		return "", fmt.Errorf("failed to parse month: %v", err)
+	}
+
+	return fmt.Sprintf("%02d", month), nil
+}
+
+// GetNextThreeMonths 获取传入时间的本月及后两月的年月 2024-08-03 --> 24年8月
 func GetNextThreeMonths(dateText string) ([]string, error) {
 	// 解析日期字符串为时间类型
 	date, err := time.Parse("2006-01-02", dateText)

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů