Browse Source

Merge branch 'eta_2.2.9_residual_analysis_1104@guomengyuan' into debug

gmy 4 months ago
parent
commit
d3d861b97c
1 changed files with 27 additions and 39 deletions
  1. 27 39
      services/residual_analysis_service/residual_analysis_service.go

+ 27 - 39
services/residual_analysis_service/residual_analysis_service.go

@@ -97,7 +97,7 @@ func ResidualAnalysisPreview(req residual_analysis_model.ResidualAnalysisReq) (r
 	}
 
 	// 残差图表信息
-	residualEdbList, R2, err := fillResidualChartInfo(edbInfoMappingA, edbInfoMappingB, mappingEdbList)
+	residualEdbList, R2, err := fillResidualChartInfo(req, edbInfoMappingA, edbInfoMappingB, mappingEdbList)
 	if err != nil {
 		return residual_analysis_model.ResidualAnalysisResp{}, err
 	}
@@ -131,7 +131,7 @@ func createChartInfoResp(req residual_analysis_model.ResidualAnalysisReq, startD
 	}
 }
 
-func fillResidualChartInfo(edbInfoMappingA *data_manage.ChartEdbInfoMapping, edbInfoMappingB *data_manage.ChartEdbInfoMapping, mappingEdbList []residual_analysis_model.ResidualAnalysisChartEdbInfoMapping) ([]residual_analysis_model.ResidualAnalysisChartEdbInfoMapping, float64, error) {
+func fillResidualChartInfo(req residual_analysis_model.ResidualAnalysisReq, edbInfoMappingA *data_manage.ChartEdbInfoMapping, edbInfoMappingB *data_manage.ChartEdbInfoMapping, mappingEdbList []residual_analysis_model.ResidualAnalysisChartEdbInfoMapping) ([]residual_analysis_model.ResidualAnalysisChartEdbInfoMapping, float64, error) {
 	// 计算公式 映射残差 = 因变量指标 - 映射指标
 	var edbInfoA, edbInfoB residual_analysis_model.ResidualAnalysisChartEdbInfoMapping
 	if mappingEdbList[0].EdbInfoId == edbInfoMappingA.EdbInfoId {
@@ -227,6 +227,11 @@ func fillResidualChartInfo(edbInfoMappingA *data_manage.ChartEdbInfoMapping, edb
 		if mapping.EdbInfoId != edbInfoMappingA.EdbInfoId {
 			mappingEdb[i].DataList = edbDataResp
 			mappingEdb[i].EdbName = edbInfoMappingA.EdbName + "映射残差/" + edbInfoMappingB.EdbName
+			if req.IndexType == 2 {
+				if req.LeadValue > 0 {
+					mappingEdb[i].EdbName = edbInfoMappingA.EdbName + "映射残差/" + edbInfoMappingB.EdbName + "(领先" + strconv.Itoa(req.LeadValue) + req.LeadFrequency + ")"
+				}
+			}
 			mappingEdb[i].IsAxis = 1
 			mappingEdb[i].ChartColor = `#00F`
 			mappingEdb[i].IsOrder = false
@@ -264,28 +269,22 @@ func fillMappingChartInfo(req residual_analysis_model.ResidualAnalysisReq, edbIn
 		return nil, a, b, r, fmt.Errorf("数据类型转换失败")
 	}
 
-	// 领先指标 dataList进行数据处理
-	/*if req.IndexType == 2 {
-		if req.LeadValue < 0 {
-			return nil, a, b, r, fmt.Errorf("领先值不能小于0")
-		} else if req.LeadValue > 0 {
-			for _, indexData := range dataList {
-				switch req.LeadFrequency {
-				case "天":
-					indexData.DataTime = utils.GetNextDayN(indexData.DataTime, req.LeadValue)
-				case "周":
-					indexData.DataTime = utils.GetNextDayN(indexData.DataTime, req.LeadValue*7)
-				case "月":
-					indexData.DataTime = utils.TimeToString(utils.AddDate(utils.StringToTime(indexData.DataTime), 0, req.LeadValue), utils.YearMonthDay)
-				case "季":
-					indexData.DataTime = utils.TimeToString(utils.AddDate(utils.StringToTime(indexData.DataTime), 0, req.LeadValue*3), utils.YearMonthDay)
-				case "年":
-					indexData.DataTime = utils.TimeToString(utils.AddDate(utils.StringToTime(indexData.DataTime), req.LeadValue, 0), utils.YearMonthDay)
+	// 拟合残差 计算a,b
+	var coordinateList []utils.Coordinate
+	if req.ResidualType == 2 {
+		for _, indexData := range dataList {
+			if _, ok := indexADataMap[indexData.DataTime]; ok {
+
+				coordinate := utils.Coordinate{
+					X: indexData.Value,
+					Y: indexADataMap[indexData.DataTime].Value,
 				}
-				indexData.DataTimestamp = utils.StringToTime(indexData.DataTime).UnixMilli()
+				coordinateList = append(coordinateList, coordinate)
 			}
 		}
-	}*/
+		a, b = utils.GetLinearResult(coordinateList)
+		r = utils.CalculationDecisive(coordinateList)
+	}
 
 	// 指标B数据补充
 	// 新建一个切片来保存补充的数据
@@ -324,23 +323,6 @@ func fillMappingChartInfo(req residual_analysis_model.ResidualAnalysisReq, edbIn
 	// 排序
 	sort.Sort(ByDataTime(dataList))
 
-	// 拟合残差 计算a,b
-	var coordinateList []utils.Coordinate
-	if req.ResidualType == 2 {
-		for _, indexData := range dataList {
-			if _, ok := indexADataMap[indexData.DataTime]; ok {
-
-				coordinate := utils.Coordinate{
-					X: indexData.Value,
-					Y: indexADataMap[indexData.DataTime].Value,
-				}
-				coordinateList = append(coordinateList, coordinate)
-			}
-		}
-		a, b = utils.GetLinearResult(coordinateList)
-		r = utils.CalculationDecisive(coordinateList)
-	}
-
 	// 根据指标A的时间key,在B的映射指标中筛选出对应的值
 	var dataBList []*data_manage.EdbDataList
 
@@ -381,6 +363,11 @@ func fillMappingChartInfo(req residual_analysis_model.ResidualAnalysisReq, edbIn
 			mappingEdbList[i].EdbCode = ""
 			mappingEdbList[i].IsAxis = 1
 			mappingEdbList[i].EdbName = edbInfoMappingB.EdbName + "映射" + edbInfoMappingA.EdbName
+			if req.IndexType == 2 {
+				if req.LeadValue > 0 {
+					mappingEdbList[i].EdbName = edbInfoMappingB.EdbName + "映射" + edbInfoMappingA.EdbName + "(领先" + strconv.Itoa(req.LeadValue) + req.LeadFrequency + ")"
+				}
+			}
 			mappingEdbList[i].DataList = dataBList
 			mappingEdbList[i].MinValue = indexMin
 			mappingEdbList[i].MaxValue = indexMax
@@ -453,12 +440,14 @@ func fillOriginalChart(req residual_analysis_model.ResidualAnalysisReq, mappingL
 			edbInfoMapping.IsAxis = 0
 			edbInfoMapping.ChartColor = `#F00`
 			edbInfoMapping.ChartWidth = 1
+			edbInfoMapping.EdbName = v.EdbName
 
 			// 领先指标 dataList进行数据处理
 			if req.IndexType == 2 {
 				if req.LeadValue < 0 {
 					return nil, fmt.Errorf("领先值不能小于0")
 				} else if req.LeadValue > 0 {
+					edbInfoMapping.EdbName = v.EdbName + "(领先" + strconv.Itoa(req.LeadValue) + req.LeadFrequency + ")"
 					for _, indexData := range dataList {
 						switch req.LeadFrequency {
 						case "天":
@@ -482,7 +471,6 @@ func fillOriginalChart(req residual_analysis_model.ResidualAnalysisReq, mappingL
 			edbInfoMappingA.DataList = dataList
 		}
 		edbInfoMapping.EdbInfoId = v.EdbInfoId
-		edbInfoMapping.EdbName = v.EdbName
 		edbInfoMapping.EdbCode = v.EdbCode
 		edbInfoMapping.Unit = v.Unit
 		edbInfoMapping.Frequency = v.Frequency