Răsfoiți Sursa

fix:修复上下限问题

Roc 1 an în urmă
părinte
comite
4a205bf934
1 a modificat fișierele cu 26 adăugiri și 5 ștergeri
  1. 26 5
      services/chart/line_equation/chart_info.go

+ 26 - 5
services/chart/line_equation/chart_info.go

@@ -2,6 +2,7 @@ package line_equation
 
 import (
 	"errors"
+	"github.com/shopspring/decimal"
 	"hongze/hongze_yb/models/request"
 	chartEdbMappingModel "hongze/hongze_yb/models/tables/chart_edb_mapping"
 	edbDataModel "hongze/hongze_yb/models/tables/edb_data"
@@ -133,7 +134,7 @@ func GetChartEdbData(chartInfoId int, lineChartInfoConfig request.LineChartInfoR
 
 	// 指标对应的所有数据
 	chartType := 1 //1:普通图,2:季节性图
-	calendar := "历"
+	calendar := "历"
 	edbDataListMap, edbList, sourceArr, err := chart.GetEdbDataMapList(chartInfoId, chartType, calendar, startDate, endDate, mappingList)
 	if err != nil {
 		return
@@ -154,6 +155,7 @@ func GetChartEdbData(chartInfoId int, lineChartInfoConfig request.LineChartInfoR
 
 	lenX := len(xEdbInfoIdList)
 
+	var isNotAFirst, isNotBFirst, isNotR2First bool
 	for i, date := range dateList {
 		coordinateData := make([]utils.Coordinate, 0)
 		for k := 0; k < lenX; k++ {
@@ -175,6 +177,7 @@ func GetChartEdbData(chartInfoId int, lineChartInfoConfig request.LineChartInfoR
 			a, b := utils.GetLinearResult(coordinateData)
 			if !math.IsNaN(a) && !math.IsNaN(b) && !math.IsInf(a, 0) && !math.IsInf(b, 0) {
 				if getAData {
+					a, _ = decimal.NewFromFloat(a).Round(4).Float64()
 					dataResp.AData.DataList = append(dataResp.AData.DataList, edbDataModel.EdbDataList{
 						EdbDataId:     i,
 						EdbInfoId:     0,
@@ -182,6 +185,11 @@ func GetChartEdbData(chartInfoId int, lineChartInfoConfig request.LineChartInfoR
 						DataTimestamp: timestamp,
 						Value:         a,
 					})
+					if !isNotAFirst {
+						dataResp.AData.MinData = a
+						dataResp.AData.MaxData = a
+						isNotAFirst = true
+					}
 					if dataResp.AData.MinData > a {
 						dataResp.AData.MinData = a
 					}
@@ -190,6 +198,7 @@ func GetChartEdbData(chartInfoId int, lineChartInfoConfig request.LineChartInfoR
 					}
 				}
 				if getBData {
+					b, _ = decimal.NewFromFloat(b).Round(4).Float64()
 					dataResp.BData.DataList = append(dataResp.BData.DataList, edbDataModel.EdbDataList{
 						EdbDataId:     i,
 						EdbInfoId:     0,
@@ -197,11 +206,16 @@ func GetChartEdbData(chartInfoId int, lineChartInfoConfig request.LineChartInfoR
 						DataTimestamp: timestamp,
 						Value:         b,
 					})
-					if dataResp.BData.MinData > a {
-						dataResp.BData.MinData = a
+					if !isNotBFirst {
+						dataResp.BData.MinData = b
+						dataResp.BData.MaxData = b
+						isNotBFirst = true
+					}
+					if dataResp.BData.MinData > b {
+						dataResp.BData.MinData = b
 					}
-					if dataResp.BData.MaxData < a {
-						dataResp.BData.MaxData = a
+					if dataResp.BData.MaxData < b {
+						dataResp.BData.MaxData = b
 					}
 				}
 			}
@@ -212,6 +226,8 @@ func GetChartEdbData(chartInfoId int, lineChartInfoConfig request.LineChartInfoR
 				if math.IsNaN(tmpVal) || math.IsInf(tmpVal, 0) {
 					continue
 				}
+
+				tmpVal, _ = decimal.NewFromFloat(tmpVal).Round(4).Float64()
 				dataResp.R2Data.DataList = append(dataResp.R2Data.DataList, edbDataModel.EdbDataList{
 					EdbDataId:     i,
 					EdbInfoId:     0,
@@ -219,6 +235,11 @@ func GetChartEdbData(chartInfoId int, lineChartInfoConfig request.LineChartInfoR
 					DataTimestamp: timestamp,
 					Value:         tmpVal,
 				})
+				if !isNotR2First {
+					dataResp.R2Data.MinData = tmpVal
+					dataResp.R2Data.MaxData = tmpVal
+					isNotR2First = true
+				}
 				if dataResp.R2Data.MinData > tmpVal {
 					dataResp.R2Data.MinData = tmpVal
 				}