|
@@ -391,7 +391,12 @@ func fillMappingChartInfo(config ResidualAnalysisConfig, req *EdbInfo, edbInfoMa
|
|
|
}
|
|
|
|
|
|
dataList := edbInfoMappingB.DataList
|
|
|
+ sort.Sort(ByDataTime(dataList))
|
|
|
+ for _, indexData := range dataList {
|
|
|
+ fmt.Printf("%s--%s\n", indexData.Value, indexData.DataTime)
|
|
|
+ }
|
|
|
|
|
|
+ fmt.Println("========================================================================================================")
|
|
|
// 指标B数据补充
|
|
|
// 新建一个切片来保存补充的数据
|
|
|
var replenishDataList []*EdbData
|
|
@@ -425,7 +430,13 @@ func fillMappingChartInfo(config ResidualAnalysisConfig, req *EdbInfo, edbInfoMa
|
|
|
|
|
|
// 排序
|
|
|
sort.Sort(ByDataTime(dataList))
|
|
|
+ // 排序
|
|
|
+ sort.Sort(ByDataTime(dataList))
|
|
|
+ for _, indexData := range dataList {
|
|
|
+ fmt.Printf("%s--%s\n", indexData.Value, indexData.DataTime)
|
|
|
+ }
|
|
|
|
|
|
+ fmt.Println("========================================================================================================")
|
|
|
// 拟合残差 计算a,b
|
|
|
var coordinateList []utils.Coordinate
|
|
|
var replenishADataList []*EdbDataList
|
|
@@ -525,7 +536,9 @@ func fillMappingChartInfo(config ResidualAnalysisConfig, req *EdbInfo, edbInfoMa
|
|
|
|
|
|
// 填充映射指标值 使得时间长度一致
|
|
|
dataList = FillDataBList(dataList, edbInfoMappingA)
|
|
|
-
|
|
|
+ for _, indexData := range dataList {
|
|
|
+ fmt.Printf("%s--%s\n", indexData.Value, indexData.DataTime)
|
|
|
+ }
|
|
|
// 根据指标A的时间key,在B的映射指标中筛选出对应的值
|
|
|
var dataBList []*EdbDataList
|
|
|
|
|
@@ -539,9 +552,10 @@ func fillMappingChartInfo(config ResidualAnalysisConfig, req *EdbInfo, edbInfoMa
|
|
|
indexDataCopy := *indexData
|
|
|
|
|
|
// 计算指标B映射值
|
|
|
- f, _ := strconv.ParseFloat(indexData.Value, 64)
|
|
|
- indexDataCopy.Value = fmt.Sprintf("%f", math.Round((a*f+b)*10000)/10000)
|
|
|
-
|
|
|
+ //f, _ := strconv.ParseFloat(indexData.Value, 64)
|
|
|
+ f, _ := decimal.NewFromString(indexData.Value)
|
|
|
+ indexDataCopy.Value = fmt.Sprintf("%f", math.Round((a*f.InexactFloat64()+b)*10000)/10000)
|
|
|
+ //fmt.Printf("%s--%s%s\n", indexData.Value, indexDataCopy.Value, indexData.DataTime)
|
|
|
// 比较最大值
|
|
|
if indexData.Value > indexMax {
|
|
|
indexMax = indexData.Value
|
|
@@ -592,6 +606,7 @@ func FillDataBList(dataList []*EdbData, edbInfoMappingA *EdbInfoList) []*EdbData
|
|
|
dataAList := edbInfoMappingA.DataList
|
|
|
|
|
|
if len(dataList) > 0 && len(dataAList) > 0 {
|
|
|
+ fmt.Println("len(dataList):", len(dataList), "len(dataAList):", len(dataAList))
|
|
|
for utils.StringToTime(dataList[len(dataList)-1].DataTime).Before(utils.StringToTime(dataAList[len(dataAList)-1].DataTime)) {
|
|
|
// 使用A的时间填充时间差
|
|
|
timeDiff := utils.GetNextDayN(dataList[len(dataList)-1].DataTime, 1)
|
|
@@ -637,7 +652,7 @@ func fillOriginalChart(config ResidualAnalysisConfig, req *EdbInfo, mappingList
|
|
|
return nil, nil, nil, fmt.Errorf("领先值不能小于0")
|
|
|
} else if config.LeadValue > 0 {
|
|
|
edbInfoMapping.EdbName = v.EdbName + "(领先" + strconv.Itoa(config.LeadValue) + config.LeadFrequency + ")"
|
|
|
- for _, indexData := range dataList {
|
|
|
+ for _, indexData := range data {
|
|
|
switch config.LeadFrequency {
|
|
|
case "天":
|
|
|
indexData.DataTime = utils.GetNextDayN(indexData.DataTime, config.LeadValue)
|