|
@@ -250,14 +250,7 @@ func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *data_manage.ChartEd
|
|
|
err = errors.New("指标change类型异常")
|
|
|
return
|
|
|
}
|
|
|
- //changeDataMap := make(map[string]float64)
|
|
|
- //newChangeDataList, e := HandleDataByLinearRegression(bDataList, changeDataMap)
|
|
|
- //if e != nil {
|
|
|
- // err = fmt.Errorf("获取变频指标插值法Map失败, Err: %s", e.Error())
|
|
|
- // return
|
|
|
- //}
|
|
|
|
|
|
- // 2023-03-17 时间序列始终以指标A为基准, 始终是B进行平移
|
|
|
baseDataList := make([]*data_manage.EdbDataList, 0)
|
|
|
baseDataMap := make(map[string]float64)
|
|
|
changeDataList := make([]*data_manage.EdbDataList, 0)
|
|
@@ -321,35 +314,13 @@ func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *data_manage.ChartEd
|
|
|
baseCalculateData = append(baseCalculateData, baseDataList[i].Value)
|
|
|
}
|
|
|
|
|
|
- //zeroBaseData := make([]float64, 0)
|
|
|
- //zeroCalculateData := make([]float64, 0)
|
|
|
- //for i := range baseDataTimeArr {
|
|
|
- // tmpBaseVal, ok1 := baseDataMap[baseDataTimeArr[i]]
|
|
|
- // tmpCalculateVal, ok2 := changeDataMap[baseDataTimeArr[i]]
|
|
|
- // if ok1 && ok2 {
|
|
|
- // zeroBaseData = append(zeroBaseData, tmpBaseVal)
|
|
|
- // zeroCalculateData = append(zeroCalculateData, tmpCalculateVal)
|
|
|
- // }
|
|
|
- //}
|
|
|
- //if len(zeroBaseData) != len(zeroCalculateData) {
|
|
|
- // err = fmt.Errorf("相关系数两组序列元素数不一致, %d-%d", len(baseCalculateData), len(zeroCalculateData))
|
|
|
- // return
|
|
|
- //}
|
|
|
- //zeroRatio := utils.CalculateCorrelationByIntArr(zeroBaseData, zeroCalculateData)
|
|
|
- //if leadValue == 0 {
|
|
|
- // yData = append(yData, zeroRatio)
|
|
|
- //}
|
|
|
-
|
|
|
// 计算领先/滞后N期
|
|
|
if leadValue > 0 {
|
|
|
// 平移变频指标领先/滞后的日期(单位天)
|
|
|
moveUnitDays := utils.FrequencyDaysMap[leadUnit]
|
|
|
|
|
|
for i := range xData {
|
|
|
- //if xData[i] == 0 {
|
|
|
- // yData = append(yData, zeroRatio)
|
|
|
- // continue
|
|
|
- //}
|
|
|
+
|
|
|
xCalculateData := make([]float64, 0)
|
|
|
yCalculateData := make([]float64, 0)
|
|
|
|
|
@@ -366,9 +337,6 @@ func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *data_manage.ChartEd
|
|
|
}
|
|
|
}
|
|
|
if len(yCalculateData) <= 0 {
|
|
|
- //err = fmt.Errorf("领先滞后相关系数两组序列元素数不一致, %d-%d", len(baseCalculateData), len(yCalculateData))
|
|
|
- //return
|
|
|
- // 领先滞后后,没有可以计算的数据了
|
|
|
continue
|
|
|
}
|
|
|
|
|
@@ -474,7 +442,6 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *d
|
|
|
|
|
|
// 数据平移变频指标领先/滞后的日期(单位天)
|
|
|
// 2023-03-17 时间序列始终以指标A为基准, 始终是B进行平移
|
|
|
- //baseDataList := make([]*data_manage.EdbDataList, 0)
|
|
|
baseDataMap := make(map[string]float64)
|
|
|
changeDataList := make([]*data_manage.EdbDataList, 0)
|
|
|
changeDataMap := make(map[string]float64)
|
|
@@ -486,7 +453,6 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *d
|
|
|
err = fmt.Errorf("获取变频指标插值法Map失败, Err: %s", e.Error())
|
|
|
return
|
|
|
}
|
|
|
- //baseDataList = tmpNewChangeDataList
|
|
|
}
|
|
|
// B指标不管三七二十一,先变个频再说
|
|
|
{
|
|
@@ -743,26 +709,6 @@ func AddChartInfo(req data_manage.AddChartInfoReq, source int, sysUser *system.A
|
|
|
isSendEmail = false
|
|
|
return
|
|
|
}
|
|
|
- //if req.CorrelationChartInfo.StartDate == "" || req.CorrelationChartInfo.EndDate == "" {
|
|
|
- // errMsg = "请填写开始结束日期"
|
|
|
- // err = errors.New(errMsg)
|
|
|
- // isSendEmail = false
|
|
|
- // return
|
|
|
- //}
|
|
|
- //startDate, e := time.Parse(utils.FormatDate, req.CorrelationChartInfo.StartDate)
|
|
|
- //if e != nil {
|
|
|
- // errMsg = "开始日期格式有误"
|
|
|
- // err = errors.New(errMsg)
|
|
|
- // isSendEmail = false
|
|
|
- // return
|
|
|
- //}
|
|
|
- //endDate, e := time.Parse(utils.FormatDate, req.CorrelationChartInfo.EndDate)
|
|
|
- //if e != nil {
|
|
|
- // errMsg = "结束日期格式有误"
|
|
|
- // err = errors.New(errMsg)
|
|
|
- // isSendEmail = false
|
|
|
- // return
|
|
|
- //}
|
|
|
if len(req.CorrelationChartInfo.EdbInfoIdList) != 2 {
|
|
|
errMsg = "请选择AB指标"
|
|
|
err = errors.New(errMsg)
|
|
@@ -941,40 +887,6 @@ func AddChartInfo(req data_manage.AddChartInfoReq, source int, sysUser *system.A
|
|
|
correlationChart.EdbInfoIdSecond = req.CorrelationChartInfo.EdbInfoIdList[1].EdbInfoId
|
|
|
correlationChart.CreateTime = time.Now().Local()
|
|
|
correlationChart.ModifyTime = time.Now().Local()
|
|
|
- //// 生成图表x轴y轴数据
|
|
|
- //edbInfoMappingA, e := data_manage.GetChartEdbMappingByEdbInfoId(req.CorrelationChartInfo.EdbInfoIdList[0].EdbInfoId)
|
|
|
- //if e != nil {
|
|
|
- // errMsg = "获取失败"
|
|
|
- // err = errors.New("获取相关性图表, A指标mapping信息失败, Err:" + e.Error())
|
|
|
- // return
|
|
|
- //}
|
|
|
- //edbInfoMappingB, e := data_manage.GetChartEdbMappingByEdbInfoId(req.CorrelationChartInfo.EdbInfoIdList[1].EdbInfoId)
|
|
|
- //if e != nil {
|
|
|
- // errMsg = "获取失败"
|
|
|
- // err = errors.New("获取相关性图表, B指标mapping信息失败, Err:" + e.Error())
|
|
|
- // return
|
|
|
- //}
|
|
|
- //periodData, correlationData, e := GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, req.CorrelationChartInfo.LeadValue, req.CorrelationChartInfo.LeadUnit, req.CorrelationChartInfo.StartDate, req.CorrelationChartInfo.EndDate)
|
|
|
- //if e != nil {
|
|
|
- // errMsg = "获取失败"
|
|
|
- // err = errors.New("获取相关性图表, 图表计算值失败, Err:" + e.Error())
|
|
|
- // return
|
|
|
- //}
|
|
|
- //periodDataByte, e := json.Marshal(periodData)
|
|
|
- //if e != nil {
|
|
|
- // errMsg = "获取失败"
|
|
|
- // err = errors.New("相关性图表, X轴信息有误, Err:" + e.Error())
|
|
|
- // return
|
|
|
- //}
|
|
|
- //correlationDataByte, e := json.Marshal(correlationData[0].Value)
|
|
|
- //if e != nil {
|
|
|
- // errMsg = "获取失败"
|
|
|
- // err = errors.New("相关性图表, Y轴信息有误, Err:" + e.Error())
|
|
|
- // return
|
|
|
- //}
|
|
|
- //correlationChart.PeriodData = string(periodDataByte)
|
|
|
- //correlationChart.CorrelationData = string(correlationDataByte)
|
|
|
-
|
|
|
// 新增图表和指标mapping
|
|
|
chartInfoId, e := data_manage.CreateCorrelationChartAndEdb(chartInfo, mapList, correlationChart)
|
|
|
if e != nil {
|
|
@@ -1035,12 +947,6 @@ func EditChartInfo(req data_manage.EditChartInfoReq, sysUser *system.Admin, lang
|
|
|
isSendEmail = false
|
|
|
return
|
|
|
}
|
|
|
- //if req.CorrelationChartInfo.StartDate == "" || req.CorrelationChartInfo.EndDate == "" {
|
|
|
- // errMsg = "请填写开始结束日期"
|
|
|
- // err = errors.New(errMsg)
|
|
|
- // isSendEmail = false
|
|
|
- // return
|
|
|
- //}
|
|
|
startDate, e := time.Parse(utils.FormatDate, req.CorrelationChartInfo.StartDate)
|
|
|
if e != nil {
|
|
|
errMsg = "开始日期格式有误"
|
|
@@ -1160,38 +1066,6 @@ func EditChartInfo(req data_manage.EditChartInfoReq, sysUser *system.Admin, lang
|
|
|
|
|
|
// 图表启用与否
|
|
|
disableVal := data.CheckIsDisableChart(edbInfoIdArr)
|
|
|
-
|
|
|
- // 重新生成图表值, 并修改相关性图表扩展信息
|
|
|
- //edbInfoMappingA, e := data_manage.GetChartEdbMappingByEdbInfoId(req.CorrelationChartInfo.EdbInfoIdList[0].EdbInfoId)
|
|
|
- //if e != nil {
|
|
|
- // errMsg = "获取失败"
|
|
|
- // err = errors.New("获取相关性图表, A指标mapping信息失败, Err:" + e.Error())
|
|
|
- // return
|
|
|
- //}
|
|
|
- //edbInfoMappingB, e := data_manage.GetChartEdbMappingByEdbInfoId(req.CorrelationChartInfo.EdbInfoIdList[1].EdbInfoId)
|
|
|
- //if e != nil {
|
|
|
- // errMsg = "获取失败"
|
|
|
- // err = errors.New("获取相关性图表, B指标mapping信息失败, Err:" + e.Error())
|
|
|
- // return
|
|
|
- //}
|
|
|
- //periodData, correlationData, e := GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, req.CorrelationChartInfo.LeadValue, req.CorrelationChartInfo.LeadUnit, req.CorrelationChartInfo.StartDate, req.CorrelationChartInfo.EndDate)
|
|
|
- //if e != nil {
|
|
|
- // errMsg = "获取失败"
|
|
|
- // err = errors.New("获取相关性图表, 图表计算值失败, Err:" + e.Error())
|
|
|
- // return
|
|
|
- //}
|
|
|
- //periodDataByte, e := json.Marshal(periodData)
|
|
|
- //if e != nil {
|
|
|
- // errMsg = "获取失败"
|
|
|
- // err = errors.New("相关性图表, X轴信息有误, Err:" + e.Error())
|
|
|
- // return
|
|
|
- //}
|
|
|
- //correlationDataByte, e := json.Marshal(correlationData[0].Value)
|
|
|
- //if e != nil {
|
|
|
- // errMsg = "获取失败"
|
|
|
- // err = errors.New("相关性图表, Y轴信息有误, Err:" + e.Error())
|
|
|
- // return
|
|
|
- //}
|
|
|
correlationChart.LeadValue = req.CorrelationChartInfo.LeadValue
|
|
|
correlationChart.LeadUnit = req.CorrelationChartInfo.LeadUnit
|
|
|
correlationChart.CalculateValue = req.CorrelationChartInfo.CalculateValue
|
|
@@ -1205,10 +1079,8 @@ func EditChartInfo(req data_manage.EditChartInfoReq, sysUser *system.Admin, lang
|
|
|
if chartItem.Source == utils.CHART_SOURCE_ROLLING_CORRELATION {
|
|
|
correlationChart.DateType = req.CorrelationChartInfo.DateType
|
|
|
}
|
|
|
- //correlationChart.PeriodData = string(periodDataByte)
|
|
|
- //correlationChart.CorrelationData = string(correlationDataByte)
|
|
|
+
|
|
|
correlationChart.ModifyTime = time.Now().Local()
|
|
|
- //correlationUpdateCols := []string{"LeadValue", "LeadUnit", "StartDate", "EndDate", "EdbInfoIdFirst", "EdbInfoIdSecond", "PeriodData","CorrelationData", "ModifyTime"}
|
|
|
correlationUpdateCols := []string{"LeadValue", "LeadUnit", "CalculateValue", "CalculateUnit", "DateType", "StartDate", "EndDate", "EdbInfoIdFirst", "EdbInfoIdSecond", "ModifyTime"}
|
|
|
|
|
|
// 修改图表与指标mapping
|
|
@@ -1311,46 +1183,6 @@ func CalculateCorrelation(leadValue int, leadUnit, frequencyA, frequencyB string
|
|
|
}
|
|
|
|
|
|
// 计算窗口,不包含第一天
|
|
|
- //startDateTime, _ := time.ParseInLocation(utils.FormatDate, startDate, time.Local)
|
|
|
- //startDate = startDateTime.AddDate(0, 0, 1).Format(utils.FormatDate)
|
|
|
-
|
|
|
- //// 2023-03-02 时间序列始终以指标B为基准, 始终是A进行平移
|
|
|
- //baseEdbInfo := edbInfoMappingB
|
|
|
- //changeEdbInfo := edbInfoMappingA
|
|
|
- // 2023-03-17 时间序列始终以指标A为基准, 始终是B进行平移
|
|
|
- //baseEdbInfo := edbInfoMappingA
|
|
|
- //changeEdbInfo := edbInfoMappingB
|
|
|
-
|
|
|
- // 获取时间基准指标在时间区间内的值
|
|
|
- //aDataList := make([]*data_manage.EdbDataList, 0)
|
|
|
- //switch baseEdbInfo.EdbInfoCategoryType {
|
|
|
- //case 0:
|
|
|
- // aDataList, err = data_manage.GetEdbDataList(baseEdbInfo.Source, baseEdbInfo.SubSource, baseEdbInfo.EdbInfoId, startDate, endDate)
|
|
|
- //case 1:
|
|
|
- // _, aDataList, _, _, err, _ = data.GetPredictDataListByPredictEdbInfoId(baseEdbInfo.EdbInfoId, startDate, endDate, false)
|
|
|
- //default:
|
|
|
- // err = errors.New("指标base类型异常")
|
|
|
- // return
|
|
|
- //}
|
|
|
- //
|
|
|
- //// 获取变频指标所有日期的值, 插值法完善数据
|
|
|
- //bDataList := make([]*data_manage.EdbDataList, 0)
|
|
|
- //switch changeEdbInfo.EdbInfoCategoryType {
|
|
|
- //case 0:
|
|
|
- // bDataList, err = data_manage.GetEdbDataList(changeEdbInfo.Source, changeEdbInfo.SubSource, changeEdbInfo.EdbInfoId, "", "")
|
|
|
- //case 1:
|
|
|
- // _, bDataList, _, _, err, _ = data.GetPredictDataListByPredictEdbInfoId(changeEdbInfo.EdbInfoId, "", "", false)
|
|
|
- //default:
|
|
|
- // err = errors.New("指标change类型异常")
|
|
|
- // return
|
|
|
- //}
|
|
|
- //changeDataMap := make(map[string]float64)
|
|
|
- //newChangeDataList, e := HandleDataByLinearRegression(bDataList, changeDataMap)
|
|
|
- //if e != nil {
|
|
|
- // err = fmt.Errorf("获取变频指标插值法Map失败, Err: %s", e.Error())
|
|
|
- // return
|
|
|
- //}
|
|
|
-
|
|
|
// 2023-03-17 时间序列始终以指标A为基准, 始终是B进行平移
|
|
|
baseDataList := make([]*data_manage.EdbDataList, 0)
|
|
|
baseDataMap := make(map[string]float64)
|
|
@@ -1415,35 +1247,13 @@ func CalculateCorrelation(leadValue int, leadUnit, frequencyA, frequencyB string
|
|
|
baseCalculateData = append(baseCalculateData, baseDataList[i].Value)
|
|
|
}
|
|
|
|
|
|
- //zeroBaseData := make([]float64, 0)
|
|
|
- //zeroCalculateData := make([]float64, 0)
|
|
|
- //for i := range baseDataTimeArr {
|
|
|
- // tmpBaseVal, ok1 := baseDataMap[baseDataTimeArr[i]]
|
|
|
- // tmpCalculateVal, ok2 := changeDataMap[baseDataTimeArr[i]]
|
|
|
- // if ok1 && ok2 {
|
|
|
- // zeroBaseData = append(zeroBaseData, tmpBaseVal)
|
|
|
- // zeroCalculateData = append(zeroCalculateData, tmpCalculateVal)
|
|
|
- // }
|
|
|
- //}
|
|
|
- //if len(zeroBaseData) != len(zeroCalculateData) {
|
|
|
- // err = fmt.Errorf("相关系数两组序列元素数不一致, %d-%d", len(baseCalculateData), len(zeroCalculateData))
|
|
|
- // return
|
|
|
- //}
|
|
|
- //zeroRatio := utils.CalculateCorrelationByIntArr(zeroBaseData, zeroCalculateData)
|
|
|
- //if leadValue == 0 {
|
|
|
- // yData = append(yData, zeroRatio)
|
|
|
- //}
|
|
|
-
|
|
|
// 计算领先/滞后N期
|
|
|
if leadValue > 0 {
|
|
|
// 平移变频指标领先/滞后的日期(单位天)
|
|
|
moveUnitDays := utils.FrequencyDaysMap[leadUnit]
|
|
|
|
|
|
for i := range xData {
|
|
|
- //if xData[i] == 0 {
|
|
|
- // yData = append(yData, zeroRatio)
|
|
|
- // continue
|
|
|
- //}
|
|
|
+
|
|
|
xCalculateData := make([]float64, 0)
|
|
|
yCalculateData := make([]float64, 0)
|
|
|
|
|
@@ -1460,9 +1270,6 @@ func CalculateCorrelation(leadValue int, leadUnit, frequencyA, frequencyB string
|
|
|
}
|
|
|
}
|
|
|
if len(yCalculateData) <= 0 {
|
|
|
- //err = fmt.Errorf("领先滞后相关系数两组序列元素数不一致, %d-%d", len(baseCalculateData), len(yCalculateData))
|
|
|
- //return
|
|
|
- // 领先滞后后,没有可以计算的数据了
|
|
|
continue
|
|
|
}
|
|
|
|