|
@@ -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
|
|
|
}
|
|
|
}
|
|
|
}
|