|
@@ -9,6 +9,7 @@ import (
|
|
|
"eta/eta_api/models/system"
|
|
|
"eta/eta_api/services/alarm_msg"
|
|
|
"eta/eta_api/services/data/data_manage_permission"
|
|
|
+ "eta/eta_api/services/data/excel"
|
|
|
"eta/eta_api/utils"
|
|
|
"fmt"
|
|
|
"github.com/shopspring/decimal"
|
|
@@ -4129,7 +4130,34 @@ func MarkerLineCalculate(markerLine data_manage.MarkersLine, dataList interface{
|
|
|
for _, quarterData := range quarterDataList[len(quarterDataList)-1:] {
|
|
|
for _, vv := range quarterData.DataList {
|
|
|
if markerLine.TimeIntervalType == 1 {
|
|
|
- if vv.DataTime >= markerLine.StartDate.Date && vv.DataTime <= markerLine.EndDate.Date {
|
|
|
+ startDate := markerLine.StartDate.Date
|
|
|
+ endDate := time.Now().Format(utils.FormatDate)
|
|
|
+ if markerLine.StartDate.TimeType == 2 {
|
|
|
+ // 动态
|
|
|
+ if markerLine.StartDate.Conf.BaseDate == 1 {
|
|
|
+ // 指标最新日期
|
|
|
+ startDate = quarterData.DataList[len(quarterData.DataList)-1].DataTime
|
|
|
+ } else {
|
|
|
+ // 系统日期
|
|
|
+ startDate = time.Now().Format(utils.FormatDate)
|
|
|
+ }
|
|
|
+ startDate, err = HandleDateChange(startDate, markerLine.StartDate.Conf)
|
|
|
+ }
|
|
|
+ if markerLine.EndDate.TimeType == 1 {
|
|
|
+ // 固定
|
|
|
+ endDate = markerLine.EndDate.Date
|
|
|
+ } else if markerLine.EndDate.TimeType == 2 {
|
|
|
+ // 动态
|
|
|
+ if markerLine.StartDate.Conf.BaseDate == 1 {
|
|
|
+ // 指标最新日期
|
|
|
+ endDate = quarterData.DataList[len(quarterData.DataList)-1].DataTime
|
|
|
+ } else {
|
|
|
+ // 系统日期
|
|
|
+ endDate = time.Now().Format(utils.FormatDate)
|
|
|
+ }
|
|
|
+ endDate, err = HandleDateChange(endDate, markerLine.StartDate.Conf)
|
|
|
+ }
|
|
|
+ if vv.DataTime >= startDate && vv.DataTime <= endDate {
|
|
|
averge += vv.Value
|
|
|
}
|
|
|
} else {
|
|
@@ -4143,7 +4171,34 @@ func MarkerLineCalculate(markerLine data_manage.MarkersLine, dataList interface{
|
|
|
dataList := dataList.([]*data_manage.EdbDataList)
|
|
|
for _, dataItem := range dataList {
|
|
|
if markerLine.TimeIntervalType == 1 {
|
|
|
- if dataItem.DataTime >= markerLine.StartDate.Date && dataItem.DataTime <= markerLine.EndDate.Date {
|
|
|
+ startDate := markerLine.StartDate.Date
|
|
|
+ endDate := time.Now().Format(utils.FormatDate)
|
|
|
+ if markerLine.StartDate.TimeType == 2 {
|
|
|
+ // 动态
|
|
|
+ if markerLine.StartDate.Conf.BaseDate == 1 {
|
|
|
+ // 指标最新日期
|
|
|
+ startDate = dataList[len(dataList)-1].DataTime
|
|
|
+ } else {
|
|
|
+ // 系统日期
|
|
|
+ startDate = time.Now().Format(utils.FormatDate)
|
|
|
+ }
|
|
|
+ startDate, err = HandleDateChange(startDate, markerLine.StartDate.Conf)
|
|
|
+ }
|
|
|
+ if markerLine.EndDate.TimeType == 1 {
|
|
|
+ // 固定
|
|
|
+ endDate = markerLine.EndDate.Date
|
|
|
+ } else if markerLine.EndDate.TimeType == 2 {
|
|
|
+ // 动态
|
|
|
+ if markerLine.StartDate.Conf.BaseDate == 1 {
|
|
|
+ // 指标最新日期
|
|
|
+ endDate = dataList[len(dataList)-1].DataTime
|
|
|
+ } else {
|
|
|
+ // 系统日期
|
|
|
+ endDate = time.Now().Format(utils.FormatDate)
|
|
|
+ }
|
|
|
+ endDate, err = HandleDateChange(endDate, markerLine.StartDate.Conf)
|
|
|
+ }
|
|
|
+ if dataItem.DataTime >= startDate && dataItem.DataTime <= endDate {
|
|
|
averge += dataItem.Value
|
|
|
}
|
|
|
} else {
|
|
@@ -4165,7 +4220,34 @@ func MarkerLineCalculate(markerLine data_manage.MarkersLine, dataList interface{
|
|
|
for _, quarterData := range quarterDataList[len(quarterDataList)-1:] {
|
|
|
for _, vv := range quarterData.DataList {
|
|
|
if markerLine.TimeIntervalType == 1 {
|
|
|
- if vv.DataTime >= markerLine.StartDate.Date && vv.DataTime <= markerLine.EndDate.Date {
|
|
|
+ startDate := markerLine.StartDate.Date
|
|
|
+ endDate := time.Now().Format(utils.FormatDate)
|
|
|
+ if markerLine.StartDate.TimeType == 2 {
|
|
|
+ // 动态
|
|
|
+ if markerLine.StartDate.Conf.BaseDate == 1 {
|
|
|
+ // 指标最新日期
|
|
|
+ startDate = quarterData.DataList[len(quarterData.DataList)-1].DataTime
|
|
|
+ } else {
|
|
|
+ // 系统日期
|
|
|
+ startDate = time.Now().Format(utils.FormatDate)
|
|
|
+ }
|
|
|
+ startDate, err = HandleDateChange(startDate, markerLine.StartDate.Conf)
|
|
|
+ }
|
|
|
+ if markerLine.EndDate.TimeType == 1 {
|
|
|
+ // 固定
|
|
|
+ endDate = markerLine.EndDate.Date
|
|
|
+ } else if markerLine.EndDate.TimeType == 2 {
|
|
|
+ // 动态
|
|
|
+ if markerLine.StartDate.Conf.BaseDate == 1 {
|
|
|
+ // 指标最新日期
|
|
|
+ endDate = quarterData.DataList[len(quarterData.DataList)-1].DataTime
|
|
|
+ } else {
|
|
|
+ // 系统日期
|
|
|
+ endDate = time.Now().Format(utils.FormatDate)
|
|
|
+ }
|
|
|
+ endDate, err = HandleDateChange(endDate, markerLine.StartDate.Conf)
|
|
|
+ }
|
|
|
+ if vv.DataTime >= startDate && vv.DataTime <= endDate {
|
|
|
dataList = append(faloatList, vv.Value)
|
|
|
averge += vv.Value
|
|
|
}
|
|
@@ -4178,7 +4260,7 @@ func MarkerLineCalculate(markerLine data_manage.MarkersLine, dataList interface{
|
|
|
stdev := utils.CalculateStandardDeviation(faloatList)
|
|
|
stdev, _ = decimal.NewFromFloat(stdev).Round(4).Float64()
|
|
|
|
|
|
- value = fmt.Sprintf("%.2f", averge+stdev*float64(markerLine.CalculationValue))
|
|
|
+ value = fmt.Sprintf("%.2f", averge+stdev*markerLine.CalculationValue)
|
|
|
}
|
|
|
|
|
|
} else {
|
|
@@ -4186,7 +4268,34 @@ func MarkerLineCalculate(markerLine data_manage.MarkersLine, dataList interface{
|
|
|
floatList := make([]float64, 0)
|
|
|
for _, dataItem := range dataList {
|
|
|
if markerLine.TimeIntervalType == 1 {
|
|
|
- if dataItem.DataTime >= markerLine.StartDate.Date && dataItem.DataTime <= markerLine.EndDate.Date {
|
|
|
+ startDate := markerLine.StartDate.Date
|
|
|
+ endDate := time.Now().Format(utils.FormatDate)
|
|
|
+ if markerLine.StartDate.TimeType == 2 {
|
|
|
+ // 动态
|
|
|
+ if markerLine.StartDate.Conf.BaseDate == 1 {
|
|
|
+ // 指标最新日期
|
|
|
+ startDate = dataList[len(dataList)-1].DataTime
|
|
|
+ } else {
|
|
|
+ // 系统日期
|
|
|
+ startDate = time.Now().Format(utils.FormatDate)
|
|
|
+ }
|
|
|
+ startDate, err = HandleDateChange(startDate, markerLine.StartDate.Conf)
|
|
|
+ }
|
|
|
+ if markerLine.EndDate.TimeType == 1 {
|
|
|
+ // 固定
|
|
|
+ endDate = markerLine.EndDate.Date
|
|
|
+ } else if markerLine.EndDate.TimeType == 2 {
|
|
|
+ // 动态
|
|
|
+ if markerLine.StartDate.Conf.BaseDate == 1 {
|
|
|
+ // 指标最新日期
|
|
|
+ endDate = dataList[len(dataList)-1].DataTime
|
|
|
+ } else {
|
|
|
+ // 系统日期
|
|
|
+ endDate = time.Now().Format(utils.FormatDate)
|
|
|
+ }
|
|
|
+ endDate, err = HandleDateChange(endDate, markerLine.StartDate.Conf)
|
|
|
+ }
|
|
|
+ if dataItem.DataTime >= startDate && dataItem.DataTime <= endDate {
|
|
|
floatList = append(floatList, dataItem.Value)
|
|
|
averge += dataItem.Value
|
|
|
}
|
|
@@ -4200,7 +4309,7 @@ func MarkerLineCalculate(markerLine data_manage.MarkersLine, dataList interface{
|
|
|
stdev := utils.CalculateStandardDeviation(floatList)
|
|
|
stdev, _ = decimal.NewFromFloat(stdev).Round(4).Float64()
|
|
|
|
|
|
- value = fmt.Sprintf("%.2f", averge+stdev*float64(markerLine.CalculationValue))
|
|
|
+ value = fmt.Sprintf("%.2f", averge+stdev*markerLine.CalculationValue)
|
|
|
}
|
|
|
} else if markerLine.Calculation == 3 {
|
|
|
// 区间个数分位
|
|
@@ -4212,7 +4321,34 @@ func MarkerLineCalculate(markerLine data_manage.MarkersLine, dataList interface{
|
|
|
for _, quarterData := range quarterDataList[len(quarterDataList)-1:] {
|
|
|
for _, vv := range quarterData.DataList {
|
|
|
if markerLine.TimeIntervalType == 1 {
|
|
|
- if vv.DataTime >= markerLine.StartDate.Date && vv.DataTime <= markerLine.EndDate.Date {
|
|
|
+ startDate := markerLine.StartDate.Date
|
|
|
+ endDate := time.Now().Format(utils.FormatDate)
|
|
|
+ if markerLine.StartDate.TimeType == 2 {
|
|
|
+ // 动态
|
|
|
+ if markerLine.StartDate.Conf.BaseDate == 1 {
|
|
|
+ // 指标最新日期
|
|
|
+ startDate = quarterData.DataList[len(quarterData.DataList)-1].DataTime
|
|
|
+ } else {
|
|
|
+ // 系统日期
|
|
|
+ startDate = time.Now().Format(utils.FormatDate)
|
|
|
+ }
|
|
|
+ startDate, err = HandleDateChange(startDate, markerLine.StartDate.Conf)
|
|
|
+ }
|
|
|
+ if markerLine.EndDate.TimeType == 1 {
|
|
|
+ // 固定
|
|
|
+ endDate = markerLine.EndDate.Date
|
|
|
+ } else if markerLine.EndDate.TimeType == 2 {
|
|
|
+ // 动态
|
|
|
+ if markerLine.StartDate.Conf.BaseDate == 1 {
|
|
|
+ // 指标最新日期
|
|
|
+ endDate = quarterData.DataList[len(quarterData.DataList)-1].DataTime
|
|
|
+ } else {
|
|
|
+ // 系统日期
|
|
|
+ endDate = time.Now().Format(utils.FormatDate)
|
|
|
+ }
|
|
|
+ endDate, err = HandleDateChange(endDate, markerLine.StartDate.Conf)
|
|
|
+ }
|
|
|
+ if vv.DataTime >= startDate && vv.DataTime <= endDate {
|
|
|
faloatList = append(faloatList, vv.Value)
|
|
|
}
|
|
|
} else {
|
|
@@ -4220,7 +4356,7 @@ func MarkerLineCalculate(markerLine data_manage.MarkersLine, dataList interface{
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- markerLineValue = PercentileAlgorithm(float64(markerLine.CalculationValue), faloatList)
|
|
|
+ markerLineValue = PercentileAlgorithm(markerLine.CalculationValue, faloatList)
|
|
|
value = fmt.Sprintf("%.2f", markerLineValue)
|
|
|
}
|
|
|
|
|
@@ -4229,7 +4365,34 @@ func MarkerLineCalculate(markerLine data_manage.MarkersLine, dataList interface{
|
|
|
floatList := make([]float64, 0)
|
|
|
for _, dataItem := range dataList {
|
|
|
if markerLine.TimeIntervalType == 1 {
|
|
|
- if dataItem.DataTime >= markerLine.StartDate.Date && dataItem.DataTime <= markerLine.EndDate.Date {
|
|
|
+ startDate := markerLine.StartDate.Date
|
|
|
+ endDate := time.Now().Format(utils.FormatDate)
|
|
|
+ if markerLine.StartDate.TimeType == 2 {
|
|
|
+ // 动态
|
|
|
+ if markerLine.StartDate.Conf.BaseDate == 1 {
|
|
|
+ // 指标最新日期
|
|
|
+ startDate = dataList[len(dataList)-1].DataTime
|
|
|
+ } else {
|
|
|
+ // 系统日期
|
|
|
+ startDate = time.Now().Format(utils.FormatDate)
|
|
|
+ }
|
|
|
+ startDate, err = HandleDateChange(startDate, markerLine.StartDate.Conf)
|
|
|
+ }
|
|
|
+ if markerLine.EndDate.TimeType == 1 {
|
|
|
+ // 固定
|
|
|
+ endDate = markerLine.EndDate.Date
|
|
|
+ } else if markerLine.EndDate.TimeType == 2 {
|
|
|
+ // 动态
|
|
|
+ if markerLine.StartDate.Conf.BaseDate == 1 {
|
|
|
+ // 指标最新日期
|
|
|
+ endDate = dataList[len(dataList)-1].DataTime
|
|
|
+ } else {
|
|
|
+ // 系统日期
|
|
|
+ endDate = time.Now().Format(utils.FormatDate)
|
|
|
+ }
|
|
|
+ endDate, err = HandleDateChange(endDate, markerLine.StartDate.Conf)
|
|
|
+ }
|
|
|
+ if dataItem.DataTime >= startDate && dataItem.DataTime <= endDate {
|
|
|
floatList = append(floatList, dataItem.Value)
|
|
|
}
|
|
|
} else {
|
|
@@ -4237,9 +4400,42 @@ func MarkerLineCalculate(markerLine data_manage.MarkersLine, dataList interface{
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- markerLineValue = PercentileAlgorithm(float64(markerLine.CalculationValue), floatList)
|
|
|
+ markerLineValue = PercentileAlgorithm(markerLine.CalculationValue, floatList)
|
|
|
value = fmt.Sprintf("%.2f", markerLineValue)
|
|
|
}
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+// HandleDateChange 处理日期变换
|
|
|
+func HandleDateChange(date string, edbDateConf data_manage.EdbDateChangeConf) (newDate string, err error) {
|
|
|
+ newDate = date
|
|
|
+ if newDate != "" {
|
|
|
+ if len(edbDateConf.DateChange) > 0 {
|
|
|
+ var dateTime time.Time
|
|
|
+ dateTime, err = time.ParseInLocation(utils.FormatDate, newDate, time.Local)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("日期解析失败: %s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range edbDateConf.DateChange {
|
|
|
+ if v.ChangeType == 1 {
|
|
|
+ dateTime = dateTime.AddDate(v.Year, v.Month, v.Day)
|
|
|
+ newDate = dateTime.Format(utils.FormatDate)
|
|
|
+ } else if v.ChangeType == 2 {
|
|
|
+ newDate, err, _ = excel.HandleSystemAppointDateT(dateTime, v.FrequencyDay, v.Frequency)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ dateTime, err = time.ParseInLocation(utils.FormatDate, newDate, time.Local)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("日期解析失败: %s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|