|
@@ -16,7 +16,6 @@ import (
|
|
|
"eta/eta_api/utils"
|
|
|
"fmt"
|
|
|
"github.com/rdlucklib/rdluck_tools/paging"
|
|
|
- "github.com/shopspring/decimal"
|
|
|
"os"
|
|
|
"os/exec"
|
|
|
"sort"
|
|
@@ -1430,106 +1429,42 @@ func (this *ChartInfoController) PreviewChartInfoDetail() {
|
|
|
err = json.Unmarshal([]byte(req.MarkersLines), &markerLines)
|
|
|
if err != nil {
|
|
|
br.Msg = "标识线配置异常"
|
|
|
- br.ErrMsg = "标识线配置异常"+err.Error()
|
|
|
+ br.ErrMsg = "标识线配置异常" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
for i := range markerLines {
|
|
|
- if markerLines[i].Calculation == 1 {
|
|
|
- // 区间均值
|
|
|
- averge := 0.0
|
|
|
- for _, v := range edbList {
|
|
|
- if v.IsAxis == 1{
|
|
|
- // 计算左轴
|
|
|
- if chartInfo.ChartType == 2 && markerLines[i].EdbType == 0 {
|
|
|
- //季节性图结构体不一样
|
|
|
- quarterDataList := v.DataList.(data_manage.QuarterDataList)
|
|
|
- for _, quarterData := range quarterDataList[len(quarterDataList) - 1:] {
|
|
|
- for _, vv := range quarterData.DataList {
|
|
|
- averge += vv.Value
|
|
|
- }
|
|
|
- averge = averge / float64(len(quarterData.DataList))
|
|
|
- markerLines[i].Value = fmt.Sprintf("%.2f", averge)
|
|
|
- }
|
|
|
- } else {
|
|
|
- dataList := v.DataList.([]*data_manage.EdbDataList)
|
|
|
- for _, dataItem := range dataList {
|
|
|
- averge += dataItem.Value
|
|
|
- }
|
|
|
- averge = averge / float64(len(dataList))
|
|
|
-
|
|
|
- markerLines[i].Value = fmt.Sprintf("%.2f", averge)
|
|
|
- }
|
|
|
+ if markerLines[i].MarkLineType == 1 {
|
|
|
+ // 跟随图表
|
|
|
+ if edbList[0].IsAxis == 1 {
|
|
|
+ value, err := data.MarkerLineCalculate(markerLines[i], edbList[0].DataList, chartInfo)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "标识线配置异常"
|
|
|
+ br.ErrMsg = "标识线配置异常" + err.Error()
|
|
|
+ return
|
|
|
}
|
|
|
+ markerLines[i].Value = value
|
|
|
}
|
|
|
- } else if markerLines[i].Calculation == 2 {
|
|
|
- // 区间均值加N倍标准差
|
|
|
- averge := 0.0
|
|
|
-
|
|
|
- for _, v := range edbList {
|
|
|
- if v.IsAxis == 1{
|
|
|
- // 计算左轴
|
|
|
- if chartInfo.ChartType == 2 && markerLines[i].EdbType == 0 {
|
|
|
- //季节性图结构体不一样
|
|
|
- dataList := make([]float64,0)
|
|
|
- quarterDataList := v.DataList.(data_manage.QuarterDataList)
|
|
|
- for _, quarterData := range quarterDataList[len(quarterDataList) - 1:] {
|
|
|
- for _, vv := range quarterData.DataList {
|
|
|
- dataList = append(dataList, vv.Value)
|
|
|
- averge += vv.Value
|
|
|
- }
|
|
|
- averge = averge / float64(len(quarterData.DataList))
|
|
|
- stdev := utils.CalculateStandardDeviation(dataList)
|
|
|
- stdev, _ = decimal.NewFromFloat(stdev).Round(4).Float64()
|
|
|
-
|
|
|
- markerLines[i].Value = fmt.Sprintf("%.2f", averge + stdev * float64(markerLines[i].CalculationValue))
|
|
|
- }
|
|
|
-
|
|
|
- } else {
|
|
|
- dataList := v.DataList.([]*data_manage.EdbDataList)
|
|
|
- floatList := make([]float64,0)
|
|
|
- for _, dataItem := range dataList {
|
|
|
- floatList = append(floatList, dataItem.Value)
|
|
|
- averge += dataItem.Value
|
|
|
- }
|
|
|
- averge = averge / float64(len(dataList))
|
|
|
-
|
|
|
- stdev := utils.CalculateStandardDeviation(floatList)
|
|
|
- stdev, _ = decimal.NewFromFloat(stdev).Round(4).Float64()
|
|
|
-
|
|
|
- markerLines[i].Value = fmt.Sprintf("%.2f", averge + stdev * float64(markerLines[i].CalculationValue))
|
|
|
- }
|
|
|
- }
|
|
|
+ } else {
|
|
|
+ // 指标计算
|
|
|
+ edbInfo, err := data_manage.GetEdbInfoById(markerLines[i].EdbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "指标计算标识线获取指标信息异常"
|
|
|
+ br.ErrMsg = "指标计算标识线获取指标信息异常" + err.Error()
|
|
|
+ return
|
|
|
}
|
|
|
- } else if markerLines[i].Calculation == 3 {
|
|
|
- // 区间个数分位
|
|
|
- markerLineValue := 0.0
|
|
|
- for _, v := range edbList {
|
|
|
- if v.IsAxis == 1 {
|
|
|
- if chartInfo.ChartType == 2 && markerLines[i].EdbType == 0 {
|
|
|
- //季节性图结构体不一样
|
|
|
- dataList := make([]float64,0)
|
|
|
- quarterDataList := v.DataList.(data_manage.QuarterDataList)
|
|
|
- for _, quarterData := range quarterDataList[len(quarterDataList) - 1:] {
|
|
|
- for _, vv := range quarterData.DataList {
|
|
|
- dataList = append(dataList, vv.Value)
|
|
|
- }
|
|
|
-
|
|
|
- markerLineValue = data.PercentileAlgorithm(float64(markerLines[i].CalculationValue), dataList)
|
|
|
- markerLines[i].Value = fmt.Sprintf("%.2f", markerLineValue)
|
|
|
- }
|
|
|
-
|
|
|
- } else {
|
|
|
- dataList := v.DataList.([]*data_manage.EdbDataList)
|
|
|
- floatList := make([]float64,0)
|
|
|
- for _, dataItem := range dataList {
|
|
|
- floatList = append(floatList, dataItem.Value)
|
|
|
- }
|
|
|
-
|
|
|
- markerLineValue = data.PercentileAlgorithm(float64(markerLines[i].CalculationValue), dataList)
|
|
|
- markerLines[i].Value = fmt.Sprintf("%.2f", markerLineValue)
|
|
|
- }
|
|
|
- }
|
|
|
+ dataList, err := data_manage.GetEdbDataList(edbInfo.Source, edbInfo.SubSource, edbInfo.EdbInfoId, markerLines[i].StartDate.Date, markerLines[i].EndDate.Date)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "指标计算标识线获取指标数据异常"
|
|
|
+ br.ErrMsg = "指标计算标识线获取指标数据异常" + err.Error()
|
|
|
+ return
|
|
|
}
|
|
|
+ value, err := data.MarkerLineCalculate(markerLines[i], dataList, chartInfo)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "标识线配置异常"
|
|
|
+ br.ErrMsg = "标识线配置异常" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ markerLines[i].Value = value
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1543,8 +1478,6 @@ func (this *ChartInfoController) PreviewChartInfoDetail() {
|
|
|
chartInfo.MarkersLines = string(markerLineStr)
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
resp := new(data_manage.ChartInfoDetailResp)
|
|
|
resp.ChartInfo = chartInfo
|
|
|
resp.EdbInfoList = edbList
|
|
@@ -4494,4 +4427,4 @@ func (this *ChartInfoController) PreviewSeasonChartInfo() {
|
|
|
br.Success = true
|
|
|
br.Msg = "获取成功"
|
|
|
br.Data = resp
|
|
|
-}
|
|
|
+}
|