|
@@ -304,6 +304,7 @@ func (obj BaseCalculate) Tbz() (dateDataMap map[time.Time]float64, err error, er
|
|
|
var dateArr []time.Time
|
|
|
dataMap := make(map[string]*EdbInfoData) // 避免因为时间戳导致的日期不对,还是用string来表示比较合适
|
|
|
for _, v := range dataList {
|
|
|
+ v.DataTime = time.Date(v.DataTime.Year(), v.DataTime.Month(), v.DataTime.Day(), 0, 0, 0, 0, v.DataTime.Location())
|
|
|
dateArr = append(dateArr, v.DataTime)
|
|
|
dataMap[v.DataTime.Format(utils.FormatDate)] = v
|
|
|
}
|
|
@@ -416,6 +417,7 @@ func (obj BaseCalculate) Tcz() (dateDataMap map[time.Time]float64, err error, er
|
|
|
var dateArr []time.Time
|
|
|
dataMap := make(map[string]*EdbInfoData)
|
|
|
for _, v := range dataList {
|
|
|
+ v.DataTime = time.Date(v.DataTime.Year(), v.DataTime.Month(), v.DataTime.Day(), 0, 0, 0, 0, v.DataTime.Location())
|
|
|
dateArr = append(dateArr, v.DataTime)
|
|
|
dataMap[v.DataTime.Format(utils.FormatDate)] = v
|
|
|
}
|
|
@@ -587,6 +589,7 @@ func (obj BaseCalculate) Hbz() (dateDataMap map[time.Time]float64, err error, er
|
|
|
|
|
|
var dateArr []time.Time
|
|
|
for _, v := range dataList {
|
|
|
+ v.DataTime = time.Date(v.DataTime.Year(), v.DataTime.Month(), v.DataTime.Day(), 0, 0, 0, 0, v.DataTime.Location())
|
|
|
dateArr = append(dateArr, v.DataTime)
|
|
|
}
|
|
|
|
|
@@ -662,11 +665,12 @@ func (obj BaseCalculate) Hcz() (dateDataMap map[time.Time]float64, err error, er
|
|
|
|
|
|
var dateArr []time.Time
|
|
|
for _, v := range dataList {
|
|
|
+ v.DataTime = time.Date(v.DataTime.Year(), v.DataTime.Month(), v.DataTime.Day(), 0, 0, 0, 0, v.DataTime.Location())
|
|
|
dateArr = append(dateArr, v.DataTime)
|
|
|
}
|
|
|
|
|
|
dataLen := len(dataList)
|
|
|
- fmt.Println("dataLen:", dataLen)
|
|
|
+ //fmt.Println("dataLen:", dataLen)
|
|
|
for i := 0; i < dataLen; i++ {
|
|
|
j := i + formulaInt
|
|
|
if j < dataLen {
|
|
@@ -722,6 +726,7 @@ func (obj BaseCalculate) UpFrequency() (dateDataMap map[time.Time]float64, err e
|
|
|
fromDataMap := make(map[time.Time]float64)
|
|
|
//来源指指标数据
|
|
|
for _, v := range dataList {
|
|
|
+ v.DataTime = time.Date(v.DataTime.Year(), v.DataTime.Month(), v.DataTime.Day(), 0, 0, 0, 0, v.DataTime.Location())
|
|
|
dateArr = append(dateArr, v.DataTime)
|
|
|
dataMap[v.DataTime] = v
|
|
|
fromDataMap[v.DataTime] = v.Value
|
|
@@ -733,8 +738,12 @@ func (obj BaseCalculate) UpFrequency() (dateDataMap map[time.Time]float64, err e
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ nowDay := time.Now()
|
|
|
+ nowDay = time.Date(nowDay.Year(), nowDay.Month(), nowDay.Day(), 0, 0, 0, 0, nowDay.Location())
|
|
|
+
|
|
|
// 数据计算
|
|
|
dataLen := len(dataList)
|
|
|
+ lastI := dataLen - 1
|
|
|
for i := 0; i < dataLen; i++ {
|
|
|
//当期
|
|
|
currentItem := dataList[i]
|
|
@@ -742,22 +751,39 @@ func (obj BaseCalculate) UpFrequency() (dateDataMap map[time.Time]float64, err e
|
|
|
var day int
|
|
|
var preItem *EdbInfoData
|
|
|
var preDate time.Time
|
|
|
+
|
|
|
+ // 如果是第一期的数据,那么直接赋值
|
|
|
if i == 0 {
|
|
|
- day = int(time.Now().Sub(currentDate).Hours() / float64(24))
|
|
|
- preDate = time.Now()
|
|
|
- } else {
|
|
|
- j := i - 1
|
|
|
- if j < dataLen {
|
|
|
- preItem = dataList[j]
|
|
|
- day = int(preItem.DataTime.Sub(currentDate).Hours() / float64(24))
|
|
|
- utils.FileLog.Info("preItem.DataTime:" + preItem.DataTime.Format(utils.FormatDate) + ";currentItem.DataTime" + currentItem.DataTime.Format(utils.FormatDate))
|
|
|
- }
|
|
|
+ dateDataMap[currentItem.DataTime] = currentItem.Value
|
|
|
+ continue
|
|
|
}
|
|
|
- for k := 0; k <= day; k++ {
|
|
|
- needDay := preDate.AddDate(0, 0, -k)
|
|
|
- dateDataMap[needDay] = currentItem.Value
|
|
|
+
|
|
|
+ // 上一期
|
|
|
+ j := i - 1
|
|
|
+
|
|
|
+ preItem = dataList[j]
|
|
|
+ preDate = preItem.DataTime
|
|
|
+ day = int(currentDate.Sub(preItem.DataTime).Hours() / float64(24))
|
|
|
+ //utils.FileLog.Info("preItem.DataTime:" + preItem.DataTime.Format(utils.FormatDate) + ";currentItem.DataTime" + currentItem.DataTime.Format(utils.FormatDate))
|
|
|
+ //fmt.Println("preItem.DataTime:" + preItem.DataTime.Format(utils.FormatDate) + ";currentItem.DataTime:" + currentItem.DataTime.Format(utils.FormatDate))
|
|
|
+
|
|
|
+ for k := 1; k < day; k++ {
|
|
|
+ needDay := preDate.AddDate(0, 0, k)
|
|
|
+ dateDataMap[needDay] = preItem.Value
|
|
|
}
|
|
|
dateDataMap[currentItem.DataTime] = currentItem.Value
|
|
|
+
|
|
|
+ // 如果是最后一期的数据
|
|
|
+ if i == lastI {
|
|
|
+ day = int(nowDay.Sub(currentDate).Hours() / float64(24))
|
|
|
+ //utils.FileLog.Info("preItem.DataTime:" + currentDate.Format(utils.FormatDate) + ";currentItem.DataTime" + nowDay.Format(utils.FormatDate))
|
|
|
+
|
|
|
+ for k := 1; k <= day; k++ {
|
|
|
+ needDay := currentDate.AddDate(0, 0, k)
|
|
|
+ dateDataMap[needDay] = currentItem.Value
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
return
|
|
@@ -788,6 +814,7 @@ func (obj BaseCalculate) DownFrequency() (dateDataMap map[time.Time]float64, err
|
|
|
fromDataMap := make(map[time.Time]float64)
|
|
|
//来源指指标数据
|
|
|
for _, v := range dataList {
|
|
|
+ v.DataTime = time.Date(v.DataTime.Year(), v.DataTime.Month(), v.DataTime.Day(), 0, 0, 0, 0, v.DataTime.Location())
|
|
|
dateArr = append(dateArr, v.DataTime)
|
|
|
dataMap[v.DataTime] = v
|
|
|
fromDataMap[v.DataTime] = v.Value
|
|
@@ -954,6 +981,7 @@ func (obj BaseCalculate) TimeShift() (dateDataMap map[time.Time]float64, err err
|
|
|
var dateArr []time.Time
|
|
|
dataMap := make(map[time.Time]*EdbInfoData)
|
|
|
for _, v := range dataList {
|
|
|
+ v.DataTime = time.Date(v.DataTime.Year(), v.DataTime.Month(), v.DataTime.Day(), 0, 0, 0, 0, v.DataTime.Location())
|
|
|
dateArr = append(dateArr, v.DataTime)
|
|
|
dataMap[v.DataTime] = v
|
|
|
}
|
|
@@ -1017,6 +1045,7 @@ func (obj BaseCalculate) Cjjx() (dateDataMap map[time.Time]float64, err error, e
|
|
|
var dateArr []time.Time
|
|
|
dataMap := make(map[time.Time]*EdbInfoData)
|
|
|
for _, v := range dataList {
|
|
|
+ v.DataTime = time.Date(v.DataTime.Year(), v.DataTime.Month(), v.DataTime.Day(), 0, 0, 0, 0, v.DataTime.Location())
|
|
|
dateArr = append(dateArr, v.DataTime)
|
|
|
dataMap[v.DataTime] = v
|
|
|
}
|
|
@@ -1260,6 +1289,7 @@ func (obj BaseCalculate) Ljz() (dateDataMap map[time.Time]float64, err error, er
|
|
|
yearMap := make(map[int]float64)
|
|
|
yearList := make([]int, 0)
|
|
|
for _, item := range dataList {
|
|
|
+ item.DataTime = time.Date(item.DataTime.Year(), item.DataTime.Month(), item.DataTime.Day(), 0, 0, 0, 0, item.DataTime.Location())
|
|
|
year := item.DataTime.Year()
|
|
|
yearVal, ok := yearMap[year]
|
|
|
if ok {
|
|
@@ -1278,6 +1308,7 @@ func (obj BaseCalculate) Ljz() (dateDataMap map[time.Time]float64, err error, er
|
|
|
yearMonthMap := make(map[string]float64)
|
|
|
yearMonthList := make([]string, 0)
|
|
|
for _, item := range dataList {
|
|
|
+ item.DataTime = time.Date(item.DataTime.Year(), item.DataTime.Month(), item.DataTime.Day(), 0, 0, 0, 0, item.DataTime.Location())
|
|
|
itemDate := item.DataTime
|
|
|
year := itemDate.Year()
|
|
|
var tmpK string
|
|
@@ -1309,6 +1340,7 @@ func (obj BaseCalculate) Ljz() (dateDataMap map[time.Time]float64, err error, er
|
|
|
yearMonthMap := make(map[string]float64)
|
|
|
yearMonthList := make([]string, 0)
|
|
|
for _, item := range dataList {
|
|
|
+ item.DataTime = time.Date(item.DataTime.Year(), item.DataTime.Month(), item.DataTime.Day(), 0, 0, 0, 0, item.DataTime.Location())
|
|
|
itemDate := item.DataTime
|
|
|
year := itemDate.Year()
|
|
|
var tmpK string
|
|
@@ -1344,6 +1376,7 @@ func (obj BaseCalculate) Ljz() (dateDataMap map[time.Time]float64, err error, er
|
|
|
yearMonthMap := make(map[string]float64)
|
|
|
yearMonthList := make([]string, 0)
|
|
|
for _, item := range dataList {
|
|
|
+ item.DataTime = time.Date(item.DataTime.Year(), item.DataTime.Month(), item.DataTime.Day(), 0, 0, 0, 0, item.DataTime.Location())
|
|
|
itemDate := item.DataTime
|
|
|
year := itemDate.Year()
|
|
|
var tmpK string
|
|
@@ -1371,6 +1404,7 @@ func (obj BaseCalculate) Ljz() (dateDataMap map[time.Time]float64, err error, er
|
|
|
tmpDateDataMap := make(map[time.Time]float64)
|
|
|
tmpDateList := make([]time.Time, 0)
|
|
|
for _, item := range dataList {
|
|
|
+ item.DataTime = time.Date(item.DataTime.Year(), item.DataTime.Month(), item.DataTime.Day(), 0, 0, 0, 0, item.DataTime.Location())
|
|
|
itemDate := item.DataTime
|
|
|
dayInt := itemDate.Year()*100 + int(itemDate.Month())
|
|
|
var currTime time.Time
|
|
@@ -1414,6 +1448,7 @@ func (obj BaseCalculate) Ljz() (dateDataMap map[time.Time]float64, err error, er
|
|
|
tmpDateDataMap := make(map[time.Time]float64)
|
|
|
tmpDateList := make([]time.Time, 0)
|
|
|
for _, item := range dataList {
|
|
|
+ item.DataTime = time.Date(item.DataTime.Year(), item.DataTime.Month(), item.DataTime.Day(), 0, 0, 0, 0, item.DataTime.Location())
|
|
|
itemDate := item.DataTime
|
|
|
var currTime time.Time
|
|
|
// 周六周日,这是下一个周五的数据
|
|
@@ -1504,6 +1539,7 @@ func (obj BaseCalculate) LjzNczj() (dateDataMap map[time.Time]float64, err error
|
|
|
tmpDateDataMap := make(map[time.Time]float64)
|
|
|
tmpDateList := make([]time.Time, 0)
|
|
|
for _, item := range dataList {
|
|
|
+ item.DataTime = time.Date(item.DataTime.Year(), item.DataTime.Month(), item.DataTime.Day(), 0, 0, 0, 0, item.DataTime.Location())
|
|
|
itemDate := item.DataTime
|
|
|
var currTime time.Time
|
|
|
// 周六周日,这是下一个周五的数据
|
|
@@ -1534,6 +1570,7 @@ func (obj BaseCalculate) LjzNczj() (dateDataMap map[time.Time]float64, err error
|
|
|
}
|
|
|
default:
|
|
|
for _, item := range dataList {
|
|
|
+ item.DataTime = time.Date(item.DataTime.Year(), item.DataTime.Month(), item.DataTime.Day(), 0, 0, 0, 0, item.DataTime.Location())
|
|
|
itemDate := item.DataTime
|
|
|
year := itemDate.Year()
|
|
|
yearVal, ok := yearMap[year]
|
|
@@ -1624,6 +1661,7 @@ func calculateExponentialSmoothingData(dataList []*EdbInfoData, alpha float64) (
|
|
|
alphaDecimal := decimal.NewFromFloat(alpha)
|
|
|
subAlpha := decimal.NewFromFloat(1).Sub(alphaDecimal)
|
|
|
for k, d := range dataList {
|
|
|
+ d.DataTime = time.Date(d.DataTime.Year(), d.DataTime.Month(), d.DataTime.Day(), 0, 0, 0, 0, d.DataTime.Location())
|
|
|
// 首期的值以原始值作为指数修匀的计算值
|
|
|
if k == 0 {
|
|
|
newDataList = append(newDataList, EdbInfoData{
|
|
@@ -1684,6 +1722,7 @@ func (obj BaseCalculate) Rjz() (dateDataMap map[time.Time]float64, err error, er
|
|
|
var dateArr []time.Time
|
|
|
dataMap := make(map[time.Time]*EdbInfoData)
|
|
|
for _, v := range dataList {
|
|
|
+ v.DataTime = time.Date(v.DataTime.Year(), v.DataTime.Month(), v.DataTime.Day(), 0, 0, 0, 0, v.DataTime.Location())
|
|
|
dateArr = append(dateArr, v.DataTime)
|
|
|
dataMap[v.DataTime] = v
|
|
|
}
|