Roc 2 weeks ago
parent
commit
f6017e1dc3
3 changed files with 93 additions and 1 deletions
  1. 3 0
      controllers/commodity_coal.go
  2. 1 1
      models/base_from_coalmine.go
  3. 89 0
      utils/common.go

+ 3 - 0
controllers/commodity_coal.go

@@ -1806,6 +1806,9 @@ func (this *CoalMineDataController) Firm() {
 					err = fmt.Errorf("查询指标最新日期失败 Err:%s", err)
 					return
 				}
+				dateItem.LatestDate, _ = utils.FormatZhDate(dateItem.LatestDate)
+				dateItem.MinDate, _ = utils.FormatZhDate(dateItem.MinDate)
+				dateItem.MaxDate, _ = utils.FormatZhDate(dateItem.MaxDate)
 				obj.ModifyIndexMaxAndMinDate(indexCode, dateItem)
 			}
 		}()

+ 1 - 1
models/base_from_coalmine.go

@@ -160,7 +160,7 @@ func (m *BaseFromCoalmineMapping) GetMaxAndMinDateByIndexCode(indexCode, tableNa
 	}
 
 	// 获取最新值
-	sql = ` SELECT value AS latest_value FROM %s WHERE index_code=? ORDER BY data_time DESC LIMIT 1 `
+	sql = ` SELECT deal_value AS latest_value FROM %s WHERE index_code=? ORDER BY data_time DESC LIMIT 1 `
 	sql = fmt.Sprintf(sql, tableName)
 	//err = o.Raw(sql, indexCode).QueryRow(&latest_value)
 	var latestValueNull sql2.NullFloat64

+ 89 - 0
utils/common.go

@@ -1810,3 +1810,92 @@ func GormDateStrToDateStr(originalString string) (formatStr string) {
 
 	return
 }
+
+func FormatZhDateBak(dateTimeStr string) (newDateTimeStr string, err error) {
+	if dateTimeStr == `` {
+		return
+	}
+	if strings.Contains(dateTimeStr, "年") {
+		dateTimeStr = strings.ReplaceAll(dateTimeStr, "年", "-")
+	}
+	if strings.Contains(dateTimeStr, "月份") {
+		dateTimeStr = strings.ReplaceAll(dateTimeStr, "月份", "-")
+		dateTimeStrList := strings.Split(dateTimeStr, "-")
+		if len(dateTimeStrList) == 3 {
+			monthInt, tmpErr := strconv.Atoi(dateTimeStrList[1])
+			if tmpErr != nil {
+				return ``, tmpErr
+			}
+			if monthInt < 10 {
+				dateTimeStrList[1] = fmt.Sprint("0", dateTimeStrList[1])
+				dateTimeStr = strings.Join(dateTimeStrList, `-`)
+			}
+		}
+	} else if strings.Contains(dateTimeStr, "月") {
+		dateTimeStr = strings.ReplaceAll(dateTimeStr, "月", "-")
+		dateTimeStrList := strings.Split(dateTimeStr, "-")
+		if len(dateTimeStrList) == 3 {
+			monthInt, tmpErr := strconv.Atoi(dateTimeStrList[1])
+			if tmpErr != nil {
+				return ``, tmpErr
+			}
+			if monthInt < 10 {
+				dateTimeStrList[1] = fmt.Sprint("0", dateTimeStrList[1])
+				dateTimeStr = strings.Join(dateTimeStrList, `-`)
+			}
+		}
+	}
+
+	if strings.Contains(dateTimeStr, "上旬") {
+		dateTimeStr = strings.ReplaceAll(dateTimeStr, "上旬", "10")
+	} else if strings.Contains(dateTimeStr, "中旬") {
+		dateTimeStr = strings.ReplaceAll(dateTimeStr, "中旬", "20")
+	} else if strings.Contains(dateTimeStr, "本月") {
+		dateTimeStr = strings.ReplaceAll(dateTimeStr, "本月", "")
+		dateTime, tmpErr := time.ParseInLocation(FormatYearMonthDate, dateTimeStr, time.Local)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		dateTimeStr = time.Date(dateTime.Year(), dateTime.Month(), 1, 0, 0, 0, 0, time.Local).AddDate(0, 1, -1).Format(FormatDate)
+	}
+
+	return dateTimeStr, nil
+}
+
+func FormatZhDate(dateStr string) (newDateTimeStr string, err error) {
+	// Regular expression to extract year, month, and period
+	re := regexp.MustCompile(`(\d{4})年?(\d{1,2})月(?:份)?(上旬|中旬|本月)`)
+	matches := re.FindStringSubmatch(dateStr)
+
+	if len(matches) != 4 {
+		return "", fmt.Errorf("unsupported date string format: %s", dateStr)
+	}
+
+	year, err := strconv.Atoi(matches[1])
+	if err != nil {
+		return
+	}
+	month, err := strconv.Atoi(matches[2])
+	if err != nil {
+		return
+	}
+	period := matches[3]
+
+	var day int
+	switch period {
+	case "上旬":
+		day = 10
+	case "中旬":
+		day = 20
+	case "本月":
+		// Get the last day of the month
+		lastDayOfMonth := time.Date(year, time.Month(month+1), 0, 0, 0, 0, 0, time.UTC).Day()
+		day = lastDayOfMonth
+	default:
+		return "", fmt.Errorf("unsupported period in date string: %s", dateStr)
+	}
+
+	targetDate := time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.UTC)
+	return targetDate.Format(FormatDate), nil
+}