Browse Source

fix:preview返回值类型

zqbao 4 months ago
parent
commit
998894235e
3 changed files with 53 additions and 10 deletions
  1. 3 1
      models/data_manage/stl/response/stl.go
  2. 9 0
      routers/commentsRouter.go
  3. 41 9
      services/data/stl/stl.go

+ 3 - 1
models/data_manage/stl/response/stl.go

@@ -12,6 +12,8 @@ type ChartEdbInfo struct {
 	Title        string
 	Unit         string
 	Frequency    string
+	MaxData      float64
+	MinData      float64
 	ClassifyId   string
 	ClassifyPath string
 	DataList     []*EdbData
@@ -25,7 +27,7 @@ type EvaluationResult struct {
 }
 
 type EdbData struct {
-	Value         string
+	Value         float64
 	DataTime      string
 	DataTimestamp int64
 }

+ 9 - 0
routers/commentsRouter.go

@@ -2311,6 +2311,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/stl:STLController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/stl:STLController"],
+        beego.ControllerComments{
+            Method: "ConfigDetail",
+            Router: `/config/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/stl:STLController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/stl:STLController"],
         beego.ControllerComments{
             Method: "SaveConf",

+ 41 - 9
services/data/stl/stl.go

@@ -149,6 +149,7 @@ func GenerateStlEdbData(req *request.StlConfigReq, adminId int) (resp *response.
 	result, err := execStlPythonCode(loadFilePath, saveFilePath, confReq.Period, confReq.Seasonal, confReq.Trend, confReq.TrendDeg, confReq.SeasonalDeg, confReq.LowPassDeg, confReq.Fraction, confReq.Robust)
 	if err != nil {
 		msg = "计算失败,请重新选择指标和参数后计算"
+		return
 	}
 	trendChart, seasonalChart, residualChart, err := ParseStlExcel(saveFilePath)
 	if err != nil {
@@ -158,18 +159,26 @@ func GenerateStlEdbData(req *request.StlConfigReq, adminId int) (resp *response.
 	defer os.Remove(saveFilePath)
 	resp = new(response.StlPreviewResp)
 	resp.OriginEdbInfo.Title = edbInfo.EdbName
+	resp.OriginEdbInfo.MaxData = edbInfo.MaxValue
+	resp.OriginEdbInfo.MinData = edbInfo.MinValue
 	resp.OriginEdbInfo.Frequency = edbInfo.Frequency
 	resp.OriginEdbInfo.Unit = edbInfo.Unit
 	resp.OriginEdbInfo.DataList = formatEdbData(edbData)
 	resp.TrendChartInfo.DataList = trendChart.DataList
+	resp.TrendChartInfo.MaxData = trendChart.MaxData
+	resp.TrendChartInfo.MinData = trendChart.MinData
 	resp.TrendChartInfo.Title = edbInfo.EdbName + "Trend"
 	resp.TrendChartInfo.Frequency = edbInfo.Frequency
 	resp.TrendChartInfo.Unit = edbInfo.Unit
 	resp.SeasonalChartInfo.DataList = seasonalChart.DataList
+	resp.SeasonalChartInfo.MaxData = seasonalChart.MaxData
+	resp.SeasonalChartInfo.MinData = seasonalChart.MinData
 	resp.SeasonalChartInfo.Title = edbInfo.EdbName + "Seasonal"
 	resp.SeasonalChartInfo.Frequency = edbInfo.Frequency
 	resp.SeasonalChartInfo.Unit = edbInfo.Unit
 	resp.ResidualChartInfo.DataList = residualChart.DataList
+	resp.ResidualChartInfo.MaxData = residualChart.MaxData
+	resp.ResidualChartInfo.MinData = residualChart.MinData
 	resp.ResidualChartInfo.Title = edbInfo.EdbName + "Residual"
 	resp.ResidualChartInfo.Frequency = edbInfo.Frequency
 	resp.ResidualChartInfo.Unit = edbInfo.Unit
@@ -194,7 +203,7 @@ func formatEdbData(items []*data_manage.EdbData) []*response.EdbData {
 		t, _ := time.Parse(utils.FormatDate, item.DataTime)
 		res = append(res, &response.EdbData{
 			DataTime:      item.DataTime,
-			Value:         strconv.FormatFloat(item.Value, 'f', -1, 64),
+			Value:         item.Value,
 			DataTimestamp: t.UnixMilli(),
 		})
 	}
@@ -216,6 +225,7 @@ func ParseStlExcel(excelPath string) (TrendChart, SeasonalChart, ResidualChart r
 	for _, sheet := range file.Sheets {
 		switch sheet.Name {
 		case "季节":
+			var MinData, MaxData float64
 			for i, row := range sheet.Rows {
 				if i == 0 {
 					continue
@@ -233,10 +243,18 @@ func ParseStlExcel(excelPath string) (TrendChart, SeasonalChart, ResidualChart r
 					dataTimestamp = timeDate.UnixMilli()
 				}
 				fv, _ := row.Cells[1].Float()
-				value := strconv.FormatFloat(fv, 'f', 4, 64)
-				SeasonalChart.DataList = append(SeasonalChart.DataList, &response.EdbData{DataTime: date, Value: value, DataTimestamp: dataTimestamp})
+				if MinData == 0 || fv < MinData {
+					MinData = fv
+				}
+				if MaxData == 0 || fv > MaxData {
+					MaxData = fv
+				}
+				SeasonalChart.DataList = append(SeasonalChart.DataList, &response.EdbData{DataTime: date, Value: fv, DataTimestamp: dataTimestamp})
 			}
+			SeasonalChart.MinData = MinData
+			SeasonalChart.MaxData = MaxData
 		case "趋势":
+			var MinData, MaxData float64
 			for i, row := range sheet.Rows {
 				if i == 0 {
 					continue
@@ -254,10 +272,18 @@ func ParseStlExcel(excelPath string) (TrendChart, SeasonalChart, ResidualChart r
 					dataTimestamp = timeDate.UnixMilli()
 				}
 				fv, _ := row.Cells[1].Float()
-				value := strconv.FormatFloat(fv, 'f', 4, 64)
-				TrendChart.DataList = append(TrendChart.DataList, &response.EdbData{DataTime: date, Value: value, DataTimestamp: dataTimestamp})
+				if MinData == 0 || fv < MinData {
+					MinData = fv
+				}
+				if MaxData == 0 || fv > MaxData {
+					MaxData = fv
+				}
+				TrendChart.DataList = append(TrendChart.DataList, &response.EdbData{DataTime: date, Value: fv, DataTimestamp: dataTimestamp})
 			}
+			TrendChart.MaxData = MaxData
+			TrendChart.MinData = MinData
 		case "残差":
+			var MinData, MaxData float64
 			for i, row := range sheet.Rows {
 				if i == 0 {
 					continue
@@ -275,9 +301,16 @@ func ParseStlExcel(excelPath string) (TrendChart, SeasonalChart, ResidualChart r
 					dataTimestamp = timeDate.UnixMilli()
 				}
 				fv, _ := row.Cells[1].Float()
-				value := strconv.FormatFloat(fv, 'f', 4, 64)
-				ResidualChart.DataList = append(ResidualChart.DataList, &response.EdbData{DataTime: date, Value: value, DataTimestamp: dataTimestamp})
+				if MinData == 0 || fv < MinData {
+					MinData = fv
+				}
+				if MaxData == 0 || fv > MaxData {
+					MaxData = fv
+				}
+				ResidualChart.DataList = append(ResidualChart.DataList, &response.EdbData{DataTime: date, Value: fv, DataTimestamp: dataTimestamp})
 			}
+			ResidualChart.MaxData = MaxData
+			ResidualChart.MinData = MinData
 		}
 	}
 	return
@@ -742,7 +775,6 @@ func SaveStlEdbInfo(req *request.SaveStlEdbInfoReq, adminId int, adminRealName,
 	var startDate, endDate time.Time
 	for _, v := range edbInfoData {
 		dataTime, _ := time.Parse(utils.FormatDate, v.DataTime)
-		value, _ := strconv.ParseFloat(v.Value, 64)
 		if startDate.IsZero() || dataTime.Before(startDate) {
 			startDate = dataTime
 		}
@@ -753,7 +785,7 @@ func SaveStlEdbInfo(req *request.SaveStlEdbInfoReq, adminId int, adminRealName,
 			EdbInfoId:     req.EdbInfoId,
 			EdbCode:       edbCode,
 			DataTime:      dataTime,
-			Value:         value,
+			Value:         v.Value,
 			CreateTime:    time.Now(),
 			ModifyTime:    time.Now(),
 			DataTimestamp: dataTime.UnixMilli(),