Prechádzať zdrojové kódy

新增图表渠道,修改农历计算

hongze 3 rokov pred
rodič
commit
cc05cba685
4 zmenil súbory, kde vykonal 195 pridanie a 34 odobranie
  1. 2 2
      controllers/chart.go
  2. 174 0
      models/chart.go
  3. 13 32
      models/edb_data_base.go
  4. 6 0
      utils/constants.go

+ 2 - 2
controllers/chart.go

@@ -225,7 +225,7 @@ func (this *ChartController) ChartInfoDetail() {
 
 		if chartType == 2 {
 			if calendar == "农历" {
-				result, err := models.AddCalculateQuarterV4(dataList)
+				result, err := models.AddCalculateQuarterV5(dataList)
 				if err != nil {
 					br.Msg = "获取失败"
 					br.Msg = "获取农历数据失败,Err:" + err.Error()
@@ -289,7 +289,7 @@ func (this *ChartController) ChartInfoDetail() {
 	resp.EdbInfoList = edbList
 	if utils.Re == nil {
 		data, _ := json.Marshal(resp)
-		utils.Rc.Put(key, data, 5*time.Minute)
+		utils.Rc.Put(key, data, 10*time.Minute)
 	}
 	br.Ret = 200
 	br.Success = true

+ 174 - 0
models/chart.go

@@ -272,3 +272,177 @@ type ChartInfoDetailResp struct {
 	ChartInfo   *ChartInfo
 	EdbInfoList []*ChartEdbInfoMapping
 }
+
+//指标季度数据计算(公历转农历)
+func AddCalculateQuarterV5(dataList []*EdbDataList) (result *EdbDataResult, err error) {
+	var errMsg string
+	defer func() {
+		if errMsg != "" {
+			fmt.Println("errMsg:", errMsg)
+		}
+	}()
+
+	endDate := dataList[len(dataList)-1].DataTime
+	endDateForm, err := time.Parse(utils.FormatDate, endDate)
+	if err != nil {
+		return result, err
+	}
+	thisMonth := int(endDateForm.Month())
+
+	result = new(EdbDataResult)
+	var yearArr []int
+	yearMap := make(map[int]int)
+	var cureentDate time.Time
+	if thisMonth < 11 {
+		for k, v := range dataList {
+			dateTime, err := time.Parse(utils.FormatDate, v.DataTime)
+			if err != nil {
+				errMsg = "time.Parse Err:" + err.Error() + ";DataTime:" + v.DataTime
+				return result, err
+			}
+			if k == len(dataList)-1 {
+				cureentDate = dateTime
+			}
+			year := dateTime.Year()
+			if _, ok := yearMap[year]; !ok {
+				yearArr = append(yearArr, year)
+			}
+			yearMap[year] = year
+		}
+	} else {
+		for k, v := range dataList {
+			dateTime, err := time.Parse(utils.FormatDate, v.DataTime)
+			if err != nil {
+				errMsg = "time.Parse Err:" + err.Error() + ";DataTime:" + v.DataTime
+				return result, err
+			}
+			if k == len(dataList)-1 {
+				cureentDate = dateTime
+			}
+			year := dateTime.Year() + 1
+			if _, ok := yearMap[year]; !ok {
+				yearArr = append(yearArr, year)
+			}
+			yearMap[year] = year
+		}
+	}
+	//排序
+	fmt.Println("yearArr:", yearArr)
+	thisYear := cureentDate.Year()
+	//thisMonth := int(cureentDate.Month())
+
+	fmt.Println("thisMonth:", thisMonth)
+	for ky, vy := range yearArr {
+		fmt.Println("line 432:", ky, vy, thisYear, thisMonth)
+		if thisMonth < 11 {
+			currentYearCjnl := strconv.Itoa(thisYear) + "-01-01"               //当前年份春节农历
+			currentYearCjgl := solarlunar.LunarToSolar(currentYearCjnl, false) //当前年份春节公历
+			currentYearCjglDate, err := time.Parse(utils.FormatDate, currentYearCjgl)
+			if err != nil {
+				errMsg = "生成当前春节失败,Err:" + err.Error()
+				return result, err
+			}
+
+			preYear := vy
+			preYearCjnl := strconv.Itoa(preYear) + "-01-01"            //之前年份春节农历
+			preYearCjgl := solarlunar.LunarToSolar(preYearCjnl, false) //之前年份春节公历
+			preYearCjglDate, err := time.Parse(utils.FormatDate, preYearCjgl)
+			if err != nil {
+				errMsg = "生成历史年份春节失败,Err:" + err.Error()
+				return result, err
+			}
+			day := currentYearCjglDate.Sub(preYearCjglDate).Hours() / float64(24)
+
+			items := new(EdbDataItems)
+			items.Year = preYear
+			for _, v := range dataList {
+				dateTime, err := time.Parse(utils.FormatDate, v.DataTime)
+				if err != nil {
+					errMsg = "time.Parse Err:" + err.Error() + ";DataTime:" + v.DataTime
+					return result, err
+				}
+				newDate := dateTime.AddDate(0, 0, int(day))
+				selectDateStr := strconv.Itoa(thisYear) + "-11" + "-30"
+				selectDate, _ := time.Parse(utils.FormatDate, selectDateStr)
+				if newDate.Before(selectDate) || newDate == selectDate {
+					timestamp := newDate.UnixNano() / 1e6
+					item := new(EdbDataList)
+					item.DataTime = newDate.Format(utils.FormatDate)
+					item.EdbInfoId = v.EdbInfoId
+					item.Value = v.Value
+					item.EdbDataId = v.EdbDataId
+					item.DataTimestamp = timestamp
+					items.Items = append(items.Items, item)
+				}
+			}
+			result.List = append(result.List, items)
+		} else {
+			nextYear := thisYear + 1
+			nextYearCjnl := strconv.Itoa(nextYear) + "-01-01"            //当前年份春节农历
+			nextYearCjgl := solarlunar.LunarToSolar(nextYearCjnl, false) //当前年份春节公历
+
+			nextYearCjglDate, err := time.Parse(utils.FormatDate, nextYearCjgl)
+			if err != nil {
+				errMsg = "生成当前春节失败,Err:" + err.Error()
+				return result, err
+			}
+			preYear := vy
+			preYearCjnl := strconv.Itoa(preYear) + "-01-01"            //之前年份春节农历
+			preYearCjgl := solarlunar.LunarToSolar(preYearCjnl, false) //之前年份春节公历
+			preYearCjglDate, err := time.Parse(utils.FormatDate, preYearCjgl)
+			if err != nil {
+				errMsg = "生成历史年份春节失败,Err:" + err.Error()
+				return result, err
+			}
+			day := nextYearCjglDate.Sub(preYearCjglDate).Hours() / float64(24)
+
+			fmt.Println("day:", day, nextYearCjglDate, preYearCjglDate)
+
+			items := new(EdbDataItems)
+			items.Year = preYear - 1
+			fmt.Println("preYear:", preYear, "ky:", ky, "yearArrLen:", len(yearArr))
+			if ky+1 < len(yearArr) {
+				for _, v := range dataList {
+					dateTime, err := time.Parse(utils.FormatDate, v.DataTime)
+					if err != nil {
+						errMsg = "time.Parse Err:" + err.Error() + ";DataTime:" + v.DataTime
+						return result, err
+					}
+					newDate := dateTime.AddDate(0, 0, int(day))
+					selectDateStr := strconv.Itoa(nextYear) + "-05" + "-31"
+					selectDate, _ := time.Parse(utils.FormatDate, selectDateStr)
+
+					if newDate.Before(selectDate) || newDate == selectDate {
+						timestamp := newDate.UnixNano() / 1e6
+						item := new(EdbDataList)
+						item.DataTime = newDate.Format(utils.FormatDate)
+						item.EdbInfoId = v.EdbInfoId
+						item.Value = v.Value
+						item.EdbDataId = v.EdbDataId
+						item.DataTimestamp = timestamp
+						items.Items = append(items.Items, item)
+					}
+				}
+				result.List = append(result.List, items)
+			} else {
+				for _, v := range dataList {
+					dateTime, err := time.Parse(utils.FormatDate, v.DataTime)
+					if err != nil {
+						errMsg = "time.Parse Err:" + err.Error() + ";DataTime:" + v.DataTime
+						return result, err
+					}
+					timestamp := dateTime.UnixNano() / 1e6
+					item := new(EdbDataList)
+					item.DataTime = dateTime.Format(utils.FormatDate)
+					item.EdbInfoId = v.EdbInfoId
+					item.Value = v.Value
+					item.EdbDataId = v.EdbDataId
+					item.DataTimestamp = timestamp
+					items.Items = append(items.Items, item)
+				}
+				result.List = append(result.List, items)
+			}
+		}
+	}
+	return
+}

+ 13 - 32
models/edb_data_base.go

@@ -36,39 +36,20 @@ func GetEdbDataTableName(source int) (tableName string) {
 		tableName = "edb_data_calculate_bp"
 	case utils.DATA_SOURCE_GL:
 		tableName = "edb_data_gl"
+	case utils.DATA_SOURCE_ZZ:
+		tableName = "edb_data_zz"
+	case utils.DATA_SOURCE_DL:
+		tableName = "edb_data_dl"
+	case utils.DATA_SOURCE_SH:
+		tableName = "edb_data_sh"
+	case utils.DATA_SOURCE_CFFEX:
+		tableName = "edb_data_cffex"
+	case utils.DATA_SOURCE_SHFE:
+		tableName = "edb_data_ine"
+	case utils.DATA_SOURCE_GIE:
+		tableName = "edb_data_gie"
 	default:
 		tableName = ""
 	}
 	return
-}
-
-/*
-DATA_SOURCE_CALCULATE_HBZ                  //环比值->12
-	DATA_SOURCE_CALCULATE_HCZ                  //环差值->13
-	DATA_SOURCE_CALCULATE_BP                   //变频->14
-	DATA_SOURCE_GL                             //钢联->15
- */
-
-func GetEdbInfoCalculateTableName(source int) (tableName string) {
-	switch source {
-	case utils.DATA_SOURCE_CALCULATE:
-		tableName = "edb_info_calculate"
-	case utils.DATA_SOURCE_CALCULATE_LJZZY:
-		tableName = "edb_info_calculate_ljzzy"
-	case utils.DATA_SOURCE_CALCULATE_TBZ:
-		tableName = "edb_info_calculate_tbz"
-	case utils.DATA_SOURCE_CALCULATE_TCZ:
-		tableName = "edb_info_calculate_tcz"
-	case utils.DATA_SOURCE_CALCULATE_NSZYDPJJS:
-		tableName = "edb_info_calculate_nszydpjjs"
-	case utils.DATA_SOURCE_CALCULATE_HBZ:
-		tableName = "edb_info_calculate_hbz"
-	case utils.DATA_SOURCE_CALCULATE_HCZ:
-		tableName = "edb_info_calculate_hcz"
-	case utils.DATA_SOURCE_CALCULATE_BP:
-		tableName = "edb_info_calculate_bp"
-	default:
-		tableName = ""
-	}
-	return
-}
+}

+ 6 - 0
utils/constants.go

@@ -47,6 +47,12 @@ const (
 	DATA_SOURCE_CALCULATE_HCZ                  //环差值->13
 	DATA_SOURCE_CALCULATE_BP                   //变频->14
 	DATA_SOURCE_GL                             //钢联->15
+	DATA_SOURCE_ZZ                             //郑商所->16
+	DATA_SOURCE_DL                             //大商所->17
+	DATA_SOURCE_SH                             //上期所->18
+	DATA_SOURCE_CFFEX                          //中金所->19
+	DATA_SOURCE_SHFE                           //上期能源->20
+	DATA_SOURCE_GIE                            //欧洲天然气->21
 )
 
 const (