소스 검색

区间计算指标

xyxie 8 달 전
부모
커밋
b8956d3804
1개의 변경된 파일22개의 추가작업 그리고 14개의 파일을 삭제
  1. 22 14
      models/edb_data_calculate_qjjs.go

+ 22 - 14
models/edb_data_calculate_qjjs.go

@@ -31,6 +31,8 @@ type RangeAnalysisCalculateFormula struct {
 type ChartRangeAnalysisAutoDateConf struct { //智能划分
 	IsAutoStartDate int                                  `description:"起始日期是否是动态设置:0固定,1动态"`
 	StartDate       string                               `description:"起始日期"` //固定模式下,截止日期为指标的最新日期
+	EndDate         string                               `description:"固定模式下的截止日期"`
+	IsAutoEndDate   int                                  `description:"截止日期是否是动态设置:0固定,1动态"`
 	StartDateConf   ChartRangeAnalysisAutoDateChangeConf `description:"动态起始日期配置"`
 	EndDateConf     ChartRangeAnalysisAutoDateChangeConf `description:"动态截止日期配置"`
 }
@@ -61,8 +63,9 @@ type ChartRangeAnalysisYearDateConf struct {
 }
 
 type ChartRangeAnalysisDeleteDataConf struct {
-	Formula string
-	Value   float64
+	Formula      string
+	Value        float64
+	ReplaceValue float64 `description:"替换的值"`
 }
 
 type ChartRangeAnalysisDataConvertConf struct {
@@ -116,7 +119,7 @@ func (obj CalculateRangeAnalysis) Add(params AddCalculateBatchParams) (edbInfo *
 	edbInfo.CreateTime = time.Now()
 	edbInfo.ModifyTime = time.Now()
 	edbInfo.UniqueCode = uniqueCode
-	edbInfo.CalculateFormula = req.Formula
+	edbInfo.CalculateFormula = req.CalculateFormula
 	edbInfo.EdbNameEn = req.EdbName
 	edbInfo.UnitEn = req.Unit
 	edbInfo.EdbType = obj.GetEdbType()
@@ -184,7 +187,7 @@ func (obj CalculateRangeAnalysis) Edit(params EditCalculateBatchParams) (err err
 	edbInfo.Frequency = req.Frequency
 	edbInfo.Unit = req.Unit
 	edbInfo.ClassifyId = req.ClassifyId
-	edbInfo.CalculateFormula = req.Formula
+	edbInfo.CalculateFormula = req.CalculateFormula
 	edbInfo.EdbNameEn = req.EdbNameEn
 	edbInfo.UnitEn = req.UnitEn
 	edbInfo.ModifyTime = time.Now()
@@ -299,6 +302,7 @@ func (obj CalculateRangeAnalysis) refresh(to orm.TxOrmer, edbInfoId, source, sub
 	//fmt.Println("calculateFormula:", calculateFormula)
 	err = json.Unmarshal([]byte(calculateFormula), &rangeAnalysisConf)
 	if err != nil {
+		err = fmt.Errorf("解析区间计算公式失败 %s", err.Error())
 		return
 	}
 
@@ -397,12 +401,9 @@ func GetRangeAnalysisChartDataByEdbInfo(to orm.TxOrmer, fromEdbInfo *EdbInfo, ca
 				startDate = "2020-01-01"
 			}
 			startDateTime, _ = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
-			endDateTime = edbEndDateTime
 		} else {
 			startConf := calculateFormula.AutoDateConf.StartDateConf
-			endConf := calculateFormula.AutoDateConf.EndDateConf
 			startDate := ""
-			endDate := ""
 			if startConf.BaseDateType == 0 { //
 				startDate = edbEndDate
 			} else if startConf.BaseDateType == 1 {
@@ -418,12 +419,20 @@ func GetRangeAnalysisChartDataByEdbInfo(to orm.TxOrmer, fromEdbInfo *EdbInfo, ca
 					return
 				}
 			}
+			startDateTime, _ = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
+		}
 
-			if endConf.BaseDateType == 0 { //
-				endDate = edbEndDate
-			} else if endConf.BaseDateType == 2 {
-				endDate = "2020-01-01"
+		if calculateFormula.AutoDateConf.IsAutoEndDate == 0 { //固定设置
+			endDate := calculateFormula.AutoDateConf.EndDate
+			if endDate == "" {
+				err = fmt.Errorf("智能划分截止日期处理失败:请输入截止日期")
+				return
 			}
+			// todo 如果截止日期比指标日期还要大,则用指标的最新日期
+			endDateTime, _ = time.ParseInLocation(utils.FormatDate, endDate, time.Local)
+		} else {
+			endConf := calculateFormula.AutoDateConf.EndDateConf
+			endDate := edbEndDate
 			if endConf.MoveForward > 0 {
 				endDate = GetEdbDateByMoveForward(endConf.MoveForward, dataList)
 			}
@@ -434,10 +443,9 @@ func GetRangeAnalysisChartDataByEdbInfo(to orm.TxOrmer, fromEdbInfo *EdbInfo, ca
 					return
 				}
 			}
-
-			startDateTime, _ = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
 			endDateTime, _ = time.ParseInLocation(utils.FormatDate, endDate, time.Local)
 		}
+
 		dateList = append(dateList, &ChartRangeAnalysisDateDataItem{
 			StartDate: startDateTime,
 			EndDate:   endDateTime})
@@ -502,7 +510,7 @@ func GetRangeAnalysisChartDataByEdbInfo(to orm.TxOrmer, fromEdbInfo *EdbInfo, ca
 		case 2:
 			for i, v := range newDataList {
 				if utils.CompareFloatByOpStrings(calculateFormula.UnNormalDataConf.Formula, v.Value, calculateFormula.UnNormalDataConf.Value) {
-					newDataList[i].Value = calculateFormula.UnNormalDataConf.Value
+					newDataList[i].Value = calculateFormula.UnNormalDataConf.ReplaceValue
 				}
 			}
 		}