Browse Source

时间戳处理

gmy 2 months ago
parent
commit
0f0270d3fb

+ 10 - 0
controllers/data_manage/chart_info.go

@@ -1543,6 +1543,16 @@ func fillAreaGraphData(extraConfigStr string, edbDataList []*data_manage.ChartEd
 		if err != nil {
 			return err, err.Error()
 		}
+
+		// 时间戳处理
+		for _, mapping := range edbDataList {
+			if dataList, ok := mapping.DataList.([]*data_manage.EdbDataList); ok {
+				for _, dataInfo := range dataList {
+					toFormatTime := utils.StringToFormatTime(dataInfo.DataTime, utils.FormatDate)
+					dataInfo.DataTimestamp = toFormatTime.UnixMilli()
+				}
+			}
+		}
 	}
 
 	return nil, ""

+ 9 - 9
services/data/area_graph/processor_business_logic.go

@@ -53,25 +53,25 @@ func (i *InterpolateStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataL
 
 				// 插值法补充数据
 				var startEdbInfoData *data_manage.EdbDataList
-				for index := 0; index < len(dataList)-1; index++ {
+				for index := 0; index < len(dataList); index++ {
 					// 获取当前数据和下一个数据
-					beforeIndexData := dataList[index]
-					afterIndexData := dataList[index+1]
+					currentIndexData := dataList[index]
+					//afterIndexData := dataList[index+1]
 
 					if startEdbInfoData == nil {
-						startEdbInfoData = beforeIndexData
+						startEdbInfoData = currentIndexData
 						continue
 					}
 
 					// 获取两条数据之间相差的天数
 					startDataTime, _ := time.ParseInLocation(utils.FormatDate, startEdbInfoData.DataTime, time.Local)
-					currDataTime, _ := time.ParseInLocation(utils.FormatDate, afterIndexData.DataTime, time.Local)
+					currDataTime, _ := time.ParseInLocation(utils.FormatDate, currentIndexData.DataTime, time.Local)
 					betweenHour := int(currDataTime.Sub(startDataTime).Hours())
 					betweenDay := betweenHour / 24
 
 					// 如果相差一天,那么过滤
 					if betweenDay <= 1 {
-						startEdbInfoData = afterIndexData
+						startEdbInfoData = currentIndexData
 						continue
 					}
 
@@ -86,7 +86,7 @@ func (i *InterpolateStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataL
 						coordinateData = append(coordinateData, tmpCoordinate1)
 						tmpCoordinate2 := utils.Coordinate{
 							X: float64(betweenDay) + 1,
-							Y: afterIndexData.Value,
+							Y: currentIndexData.Value,
 						}
 						coordinateData = append(coordinateData, tmpCoordinate2)
 
@@ -108,7 +108,7 @@ func (i *InterpolateStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataL
 						nextDay := tmpDataTime.Format(utils.FormatDate)
 
 						replenishIndexData := data_manage.EdbDataList{
-							EdbDataId:     afterIndexData.EdbDataId,
+							EdbDataId:     currentIndexData.EdbDataId,
 							DataTime:      nextDay,
 							DataTimestamp: tmpDataTime.UnixMilli(),
 							Value:         val,
@@ -117,7 +117,7 @@ func (i *InterpolateStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataL
 						// 将补充数据加入补充数据列表
 						replenishDataList = append(replenishDataList, &replenishIndexData)
 					}
-					startEdbInfoData = afterIndexData
+					startEdbInfoData = currentIndexData
 				}
 
 				// 处理从最后一个数据到 endDate 的日期补充

+ 8 - 2
utils/date_util.go

@@ -42,7 +42,7 @@ func GetNextDay(date string) string {
 
 // GetNextDayN 获取 yyyy-MM-dd 类型的时间的下n天
 func GetNextDayN(date string, n int) string {
-	t, _ := time.Parse("2006-01-02", date)
+	t, _ := time.ParseInLocation("2006-01-02", date, time.Local)
 	nextDay := t.AddDate(0, 0, n)
 	return nextDay.Format("2006-01-02")
 }
@@ -111,7 +111,13 @@ func isLeap(year int) bool {
 
 // StringToTime string 类型时间 转换为 time.Time 类型
 func StringToTime(date string) time.Time {
-	t, _ := time.Parse("2006-01-02", date)
+	t, _ := time.ParseInLocation("2006-01-02", date, time.Local)
+	return t
+}
+
+// StringToFormatTime string 类型时间 转换为指定格式的 time.Time类型
+func StringToFormatTime(data string, format string) time.Time {
+	t, _ := time.ParseInLocation(format, data, time.Local)
 	return t
 }