|
@@ -1599,71 +1599,65 @@ func GetChartPredictEdbInfoDataListByRuleDynamicYOYComparisonOrDifference(ruleTy
|
|
|
return
|
|
|
}
|
|
|
if len(dynamicYOYComparisonIndexDataList) <= 0 {
|
|
|
- err = errors.New(fmt.Sprintf("选择%s指标没有预测数据", yoyType))
|
|
|
+ //err = errors.New(fmt.Sprintf("选择%s指标没有预测数据", yoyType))
|
|
|
return
|
|
|
} else {
|
|
|
for _, v := range dynamicYOYComparisonIndexDataList {
|
|
|
DynamicCalculateDataList[v.DataTime] = decimal.NewFromFloat(v.Value)
|
|
|
}
|
|
|
}
|
|
|
- //检查是不存在同期数据
|
|
|
- for _, date := range dayList {
|
|
|
- dayStr := date.Format(utils.FormatDate)
|
|
|
- if _, ok := DynamicCalculateDataList[dayStr]; !ok {
|
|
|
- err = errors.New(fmt.Sprintf("选择%s指标没有同期预测数据,日期:[%s]", yoyType, dayStr))
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
+ var predictDayList []time.Time
|
|
|
//获取上一期的同期数据
|
|
|
for _, date := range dayList {
|
|
|
preDate := date.AddDate(-1, 0, 0)
|
|
|
preDateStr := preDate.Format(utils.FormatDate)
|
|
|
if preValue, ok := existMap[preDateStr]; ok { //上一年同期找到
|
|
|
baseDynamicDataList[preDateStr] = decimal.NewFromFloat(preValue)
|
|
|
+ predictDayList = append(predictDayList, date)
|
|
|
} else {
|
|
|
if baseDynamicDataList[preDateStr], ok = getReplaceValue(existMap, 0, -1, preDate); !ok {
|
|
|
- err = errors.New(fmt.Sprintf("指标没有历史同期数据,Date:[%s]", preDateStr))
|
|
|
- return
|
|
|
+ continue
|
|
|
}
|
|
|
+ predictDayList = append(predictDayList, date)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//获取后面的预测数据
|
|
|
|
|
|
- for k, currentDate := range dayList {
|
|
|
+ for k, currentDate := range predictDayList {
|
|
|
var calculateValue decimal.Decimal
|
|
|
var dateStr = currentDate.Format(utils.FormatDate)
|
|
|
- switch ruleType {
|
|
|
- case 17:
|
|
|
- calculateValue = baseDynamicDataList[dateStr].Mul(DynamicCalculateDataList[dateStr].Add(decimal.NewFromInt(1)))
|
|
|
- case 18:
|
|
|
- calculateValue = baseDynamicDataList[dateStr].Add(DynamicCalculateDataList[dateStr])
|
|
|
- default:
|
|
|
- err = errors.New("计算规则不存在")
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- tmpData := &data_manage.EdbDataList{
|
|
|
- EdbDataId: edbInfoId + 100000 + index + k,
|
|
|
- EdbInfoId: edbInfoId,
|
|
|
- DataTime: currentDate.Format(utils.FormatDate),
|
|
|
- DataTimestamp: currentDate.UnixNano() / 1e6,
|
|
|
- }
|
|
|
- //currentItem := existMap[av]
|
|
|
- var val = calculateValue.InexactFloat64()
|
|
|
- tmpData.Value = val
|
|
|
- newPredictEdbInfoData = append(newPredictEdbInfoData, tmpData)
|
|
|
- existMap[tmpData.DataTime] = val
|
|
|
- if k == 0 {
|
|
|
- minValue = val
|
|
|
- maxValue = val
|
|
|
- } else {
|
|
|
- // 最大最小值
|
|
|
- if val < minValue {
|
|
|
- minValue = val
|
|
|
+ if _, ok := DynamicCalculateDataList[dateStr]; !ok {
|
|
|
+ switch ruleType {
|
|
|
+ case 17:
|
|
|
+ calculateValue = baseDynamicDataList[dateStr].Mul(DynamicCalculateDataList[dateStr].Add(decimal.NewFromInt(1)))
|
|
|
+ case 18:
|
|
|
+ calculateValue = baseDynamicDataList[dateStr].Add(DynamicCalculateDataList[dateStr])
|
|
|
+ default:
|
|
|
+ err = errors.New("计算规则不存在")
|
|
|
+ return
|
|
|
}
|
|
|
- if val > maxValue {
|
|
|
+ tmpData := &data_manage.EdbDataList{
|
|
|
+ EdbDataId: edbInfoId + 100000 + index + k,
|
|
|
+ EdbInfoId: edbInfoId,
|
|
|
+ DataTime: currentDate.Format(utils.FormatDate),
|
|
|
+ DataTimestamp: currentDate.UnixNano() / 1e6,
|
|
|
+ }
|
|
|
+ var val = calculateValue.InexactFloat64()
|
|
|
+ tmpData.Value = val
|
|
|
+ newPredictEdbInfoData = append(newPredictEdbInfoData, tmpData)
|
|
|
+ existMap[tmpData.DataTime] = val
|
|
|
+ if k == 0 {
|
|
|
+ minValue = val
|
|
|
maxValue = val
|
|
|
+ } else {
|
|
|
+ // 最大最小值
|
|
|
+ if val < minValue {
|
|
|
+ minValue = val
|
|
|
+ }
|
|
|
+ if val > maxValue {
|
|
|
+ maxValue = val
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|