浏览代码

Merge branch 'ETA_1.9.4' into debug

# Conflicts:
#	controllers/data_manage/chart_info.go
#	models/data_manage/chart_info.go
zwxi 9 月之前
父节点
当前提交
070e5f4445
共有 2 个文件被更改,包括 96 次插入0 次删除
  1. 95 0
      controllers/data_manage/chart_info.go
  2. 1 0
      models/data_manage/chart_info.go

+ 95 - 0
controllers/data_manage/chart_info.go

@@ -15,6 +15,8 @@ import (
 	etaTrialService "eta/eta_api/services/eta_trial"
 	"eta/eta_api/utils"
 	"fmt"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"github.com/shopspring/decimal"
 	"os"
 	"os/exec"
 	"sort"
@@ -1426,6 +1428,99 @@ func (this *ChartInfoController) PreviewChartInfoDetail() {
 	chartInfo.ChartSource = strings.Join(sourceNameList, ",")
 	chartInfo.ChartSourceEn = strings.Join(sourceNameEnList, ",")
 
+	// 标识线计算
+	if req.MarkersLines != "" {
+		markerLines := make([]data_manage.MarkersLine, 0)
+		err = json.Unmarshal([]byte(req.MarkersLines), &markerLines)
+		if err != nil {
+			br.Msg = "标识线配置异常"
+			br.ErrMsg = "标识线配置异常"
+			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)
+						}
+					}
+				}
+			} 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 if markerLines[i].Calculation == 3 {
+				// 区间分位
+			}
+		}
+
+		markerLineStr, err := json.Marshal(markerLines)
+		if err != nil {
+			br.Msg = "标识线配置异常"
+			br.ErrMsg = "标识线配置异常"
+			return
+		}
+
+		chartInfo.MarkersLines = string(markerLineStr)
+	}
+
+
+
 	resp := new(data_manage.ChartInfoDetailResp)
 	resp.ChartInfo = chartInfo
 	resp.EdbInfoList = edbList

+ 1 - 0
models/data_manage/chart_info.go

@@ -1537,6 +1537,7 @@ type PreviewChartInfoReq struct {
 	StartYear         int              `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
 	ChartSource       int
 	ExtraConfig       string `description:"图表额外配置信息,json字符串"`
+	MarkersLines      string `description:"标识线"`
 }
 
 type SeasonExtraItem struct {