|
@@ -12,7 +12,8 @@ import (
|
|
|
|
|
|
type InterpolateStrategy struct{}
|
|
|
|
|
|
-func (i *InterpolateStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataList []*data_manage.ChartEdbInfoMapping, standardIndexMap map[string]*data_manage.EdbDataList) (err error) {
|
|
|
+
|
|
|
+func (i *InterpolateStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataList []*data_manage.ChartEdbInfoMapping, standardIndexMap map[string]*data_manage.EdbDataList, startDate string, endDate string) (err error) {
|
|
|
for _, v := range edbDataList {
|
|
|
if v.EdbInfoId != tmpConfig.StandardEdbInfoId {
|
|
|
if dataList, ok := v.DataList.([]*data_manage.EdbDataList); ok {
|
|
@@ -108,11 +109,44 @@ func (i *InterpolateStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataL
|
|
|
|
|
|
type FillWithPreviousStrategy struct{}
|
|
|
|
|
|
-func (f *FillWithPreviousStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataList []*data_manage.ChartEdbInfoMapping, standardIndexMap map[string]*data_manage.EdbDataList) (err error) {
|
|
|
+
|
|
|
+func (f *FillWithPreviousStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataList []*data_manage.ChartEdbInfoMapping, standardIndexMap map[string]*data_manage.EdbDataList, startDate string, endDate string) (err error) {
|
|
|
|
|
|
for _, v := range edbDataList {
|
|
|
if v.EdbInfoId != tmpConfig.StandardEdbInfoId {
|
|
|
if dataList, ok := v.DataList.([]*data_manage.EdbDataList); ok {
|
|
|
+
|
|
|
+ var replenishDataList []*data_manage.EdbDataList
|
|
|
+
|
|
|
+
|
|
|
+ if len(dataList) > 0 {
|
|
|
+ firstData := dataList[0]
|
|
|
+
|
|
|
+ startDataTime, _ := time.ParseInLocation(utils.FormatDate, startDate, time.Local)
|
|
|
+ firstDataTime, _ := time.ParseInLocation(utils.FormatDate, firstData.DataTime, time.Local)
|
|
|
+
|
|
|
+
|
|
|
+ for startDataTime.Before(firstDataTime) {
|
|
|
+
|
|
|
+ nextDay := startDataTime.Format(utils.FormatDate)
|
|
|
+
|
|
|
+
|
|
|
+ replenishIndexData := data_manage.EdbDataList{
|
|
|
+ EdbInfoId: v.EdbInfoId,
|
|
|
+ DataTime: nextDay,
|
|
|
+ DataTimestamp: startDataTime.UnixMilli(),
|
|
|
+ Value: 0,
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ replenishDataList = append(replenishDataList, &replenishIndexData)
|
|
|
+
|
|
|
+
|
|
|
+ startDataTime = startDataTime.AddDate(0, 0, 1)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
for index := 0; index < len(dataList)-1; index++ {
|
|
|
|
|
|
beforeIndexData := dataList[index]
|
|
@@ -121,6 +155,7 @@ func (f *FillWithPreviousStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edb
|
|
|
for utils.IsMoreThanOneDay(beforeIndexData.DataTime, afterIndexData.DataTime) {
|
|
|
|
|
|
nextDay := utils.GetNextDay(beforeIndexData.DataTime)
|
|
|
+
|
|
|
toTime := utils.StringToTime(nextDay)
|
|
|
replenishIndexData := data_manage.EdbDataList{
|
|
|
EdbInfoId: v.EdbInfoId,
|
|
@@ -130,13 +165,47 @@ func (f *FillWithPreviousStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edb
|
|
|
}
|
|
|
|
|
|
|
|
|
- dataList = append(dataList[:index+1], append([]*data_manage.EdbDataList{&replenishIndexData}, dataList[index+1:]...)...)
|
|
|
+ replenishDataList = append(replenishDataList, &replenishIndexData)
|
|
|
+
|
|
|
|
|
|
|
|
|
beforeIndexData = &replenishIndexData
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ if len(dataList) > 0 {
|
|
|
+ lastData := dataList[len(dataList)-1]
|
|
|
+
|
|
|
+ lastDataTime, _ := time.ParseInLocation(utils.FormatDate, lastData.DataTime, time.Local)
|
|
|
+ endDataTime, _ := time.ParseInLocation(utils.FormatDate, endDate, time.Local)
|
|
|
+
|
|
|
+
|
|
|
+ if !lastDataTime.Equal(endDataTime) {
|
|
|
+
|
|
|
+ for !lastDataTime.After(endDataTime) {
|
|
|
+
|
|
|
+ nextDay := lastDataTime.Format(utils.FormatDate)
|
|
|
+
|
|
|
+
|
|
|
+ replenishIndexData := data_manage.EdbDataList{
|
|
|
+ EdbInfoId: v.EdbInfoId,
|
|
|
+ DataTime: nextDay,
|
|
|
+ DataTimestamp: lastDataTime.UnixMilli(),
|
|
|
+ Value: 0,
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ replenishDataList = append(replenishDataList, &replenishIndexData)
|
|
|
+
|
|
|
+
|
|
|
+ lastDataTime = lastDataTime.AddDate(0, 0, 1)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ dataList = append(dataList, replenishDataList...)
|
|
|
+
|
|
|
|
|
|
var resultDataList []*data_manage.EdbDataList
|
|
|
for _, dataObject := range dataList {
|
|
@@ -161,7 +230,8 @@ func (f *FillWithPreviousStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edb
|
|
|
|
|
|
type FillWithNextStrategy struct{}
|
|
|
|
|
|
-func (f *FillWithNextStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataList []*data_manage.ChartEdbInfoMapping, standardIndexMap map[string]*data_manage.EdbDataList) (err error) {
|
|
|
+
|
|
|
+func (f *FillWithNextStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataList []*data_manage.ChartEdbInfoMapping, standardIndexMap map[string]*data_manage.EdbDataList, startDate string, endDate string) (err error) {
|
|
|
|
|
|
for _, v := range edbDataList {
|
|
|
if v.EdbInfoId != tmpConfig.StandardEdbInfoId {
|
|
@@ -217,7 +287,8 @@ func (f *FillWithNextStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbData
|
|
|
|
|
|
type SetToZeroStrategy struct{}
|
|
|
|
|
|
-func (s *SetToZeroStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataList []*data_manage.ChartEdbInfoMapping, standardIndexMap map[string]*data_manage.EdbDataList) (err error) {
|
|
|
+
|
|
|
+func (s *SetToZeroStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataList []*data_manage.ChartEdbInfoMapping, standardIndexMap map[string]*data_manage.EdbDataList, startDate string, endDate string) (err error) {
|
|
|
|
|
|
for _, v := range edbDataList {
|
|
|
if v.EdbInfoId != tmpConfig.StandardEdbInfoId {
|
|
@@ -270,7 +341,8 @@ func (s *SetToZeroStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataLis
|
|
|
|
|
|
type DeleteDateStrategy struct{}
|
|
|
|
|
|
-func (d *DeleteDateStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataList []*data_manage.ChartEdbInfoMapping, standardIndexMap map[string]*data_manage.EdbDataList) error {
|
|
|
+
|
|
|
+func (d *DeleteDateStrategy) Deal(tmpConfig data_manage.AreaExtraConf, edbDataList []*data_manage.ChartEdbInfoMapping, standardIndexMap map[string]*data_manage.EdbDataList, startDate string, endDate string) error {
|
|
|
|
|
|
for _, v := range edbDataList {
|
|
|
if dataList, ok := v.DataList.([]*data_manage.EdbDataList); ok {
|