xyxie 11 ماه پیش
والد
کامیت
cfa723750b

+ 2 - 2
models/chart_info.go

@@ -353,7 +353,7 @@ type DeleteChartInfoReq struct {
 }
 
 type EdbDataList struct {
-	EdbDataId     int     `description:" 指标数据ID"`
+	EdbDataId     string  `description:" 指标数据ID"`
 	EdbInfoId     int     `description:"指标ID"`
 	DataTime      string  //`json:"-" description:"数据日期"`
 	DataTimestamp int64   `description:"数据日期"`
@@ -361,7 +361,7 @@ type EdbDataList struct {
 }
 
 type EdbDataListByUniqueCode struct {
-	EdbDataId     int     `description:" 指标数据ID" json:"-"`
+	EdbDataId     string  `description:" 指标数据ID" json:"-"`
 	EdbInfoId     int     `description:"指标ID" json:"-"`
 	DataTime      string  //`json:"-" description:"数据日期"`
 	DataTimestamp int64   `description:"数据日期"`

+ 14 - 17
models/mgodb/edb_data_base.go

@@ -4,24 +4,21 @@ import (
 	"context"
 	"eta/eta_forum_admin/utils"
 	"go.mongodb.org/mongo-driver/bson"
+	"go.mongodb.org/mongo-driver/bson/primitive"
 	"go.mongodb.org/mongo-driver/mongo/options"
+	"time"
 )
 
 type EdbDataBase struct {
-	EdbInfoId     int    `bson:"edb_info_id"`
-	EdbCode       string `bson:"edb_code"`
-	DataTime      string `bson:"data_time"`
-	Value         string `bson:"value"`
-	Status        int    `bson:"status"`
-	CreateTime    string `bson:"create_time"`
-	ModifyTime    string `bson:"modify_time"`
-	DataTimestamp int64  `bson:"data_timestamp"`
-}
-
-type EdbInfoSearchData struct {
-	DataTime string  `description:"数据日期" bson:"data_time"`
-	Value    float64 `description:"数据" bson:"value"`
-	EdbCode  string  `description:"指标编码" bson:"edb_code"`
+	EdbDataId     primitive.ObjectID `bson:"_id,omitempty"`
+	EdbInfoId     int                `bson:"edb_info_id"`
+	EdbCode       string             `bson:"edb_code"`
+	DataTime      time.Time          `bson:"data_time"`
+	Value         float64            `bson:"value"`
+	Status        int                `bson:"status"`
+	CreateTime    time.Time          `bson:"create_time"`
+	ModifyTime    time.Time          `bson:"modify_time"`
+	DataTimestamp int64              `bson:"data_timestamp"`
 }
 
 func GetEdbDataBaseByEdbInfoId(edbInfoId int) (items []*EdbDataBase, err error) {
@@ -53,15 +50,15 @@ func GetEdbDataBaseByEdbInfoId(edbInfoId int) (items []*EdbDataBase, err error)
 }
 
 // GetEdbDataList 获取指标的数据(日期正序返回)
-func GetEdbDataList(endInfoId int, startDate, endDate string) (list []*EdbDataBase, err error) {
+func GetEdbDataList(endInfoId int, startDate, endDate time.Time) (list []*EdbDataBase, err error) {
 	findOptions := options.Find()
 	findOptions.SetSort(bson.D{{"data_time", 1}})
 	db := NewMgo(utils.MONGODB_COMMUNITY, "edb_data_base", MgoClient)
 	filter := bson.D{{"edb_info_id", endInfoId}}
-	if startDate != "" {
+	if !startDate.IsZero() {
 		filter = append(filter, bson.E{"data_time", bson.M{"$gte": startDate}})
 	}
-	if endDate != "" {
+	if !endDate.IsZero() {
 		filter = append(filter, bson.E{"data_time", bson.M{"$lte": endDate}})
 	}
 	ctx := context.TODO()

+ 4 - 3
models/mgodb/edb_data_calculate.go

@@ -5,6 +5,7 @@ import (
 	"eta/eta_forum_admin/utils"
 	"go.mongodb.org/mongo-driver/bson"
 	"go.mongodb.org/mongo-driver/mongo/options"
+	"time"
 )
 
 func GetEdbDataCalculateByEdbInfoId(edbInfoId int) (items []*EdbDataBase, err error) {
@@ -36,15 +37,15 @@ func GetEdbDataCalculateByEdbInfoId(edbInfoId int) (items []*EdbDataBase, err er
 }
 
 // GetEdbCalculateDataList 获取指标的数据(日期正序返回)
-func GetEdbCalculateDataList(endInfoId int, startDate, endDate string) (list []*EdbDataBase, err error) {
+func GetEdbCalculateDataList(endInfoId int, startDate, endDate time.Time) (list []*EdbDataBase, err error) {
 	findOptions := options.Find()
 	findOptions.SetSort(bson.D{{"data_time", 1}})
 	db := NewMgo(utils.MONGODB_COMMUNITY, "edb_data_calculate", MgoClient)
 	filter := bson.D{{"edb_info_id", endInfoId}}
-	if startDate != "" {
+	if !startDate.IsZero() {
 		filter = append(filter, bson.E{"data_time", bson.M{"$gte": startDate}})
 	}
-	if endDate != "" {
+	if !endDate.IsZero() {
 		filter = append(filter, bson.E{"data_time", bson.M{"$lte": endDate}})
 	}
 	ctx := context.TODO()

+ 3 - 11
services/chart_info_show.go

@@ -285,18 +285,10 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 			startDateReal = newStartDateReal.Format(utils.FormatDate)
 		}
 		dataList := make([]*models.EdbDataList, 0)
-		//fmt.Println("chart:", v.Source, v.EdbInfoId, startDateReal, endDate)
-		//fmt.Println("calendarPreYear:", calendarPreYear)
-		//var newEdbInfo *models.EdbInfo
-		switch v.EdbInfoCategoryType {
-		case 0:
-			dataList, err = GetEdbDataList(v.EdbInfoId, v.EdbType, startDateReal, endDate)
-		case 1:
-		//	_, dataList, _, _, err, _ = GetPredictDataListByPredictEdbInfoId(v.EdbInfoId, startDateReal, endDate, true)
-		default:
-			err = errors.New(fmt.Sprint("获取失败,指标类型异常", v.EdbInfoCategoryType))
-		}
+		dataList, err = GetEdbDataList(v.EdbInfoId, v.EdbType, startDateReal, endDate)
 		if err != nil {
+			// 获取指标数据失败
+			err = fmt.Errorf("获取指标数据失败 GetEdbDataList error, %v", err)
 			return
 		}
 

+ 0 - 555
services/chart_theme.go

@@ -1,565 +1,10 @@
 package services
 
 import (
-	"encoding/json"
-	"errors"
 	"eta/eta_forum_admin/models"
 	"eta/eta_forum_admin/utils"
-	"fmt"
-	"github.com/shopspring/decimal"
-	"math"
-	"time"
 )
 
-// GetThemePreviewChartEdbData 获取图表的指标数据
-func GetThemePreviewChartEdbData(chartType int, calendar, startDate, endDate string, mappingList []*models.ChartEdbInfoMapping, extraConfigStr string, seasonExtraConfig string) (edbList []*models.ChartEdbInfoMapping, xEdbIdValue []int, yDataList []models.YData, dataResp interface{}, err error, errMsg string) {
-	edbList = make([]*models.ChartEdbInfoMapping, 0)
-	xEdbIdValue = make([]int, 0)
-	yDataList = make([]models.YData, 0)
-
-	var extraConfig interface{}
-	switch chartType {
-	case 7: // 柱形图
-		var barConfig models.BarChartInfoReq
-		if extraConfigStr == `` {
-			errMsg = "柱方图未配置"
-			err = errors.New(errMsg)
-			return
-		}
-		err = json.Unmarshal([]byte(extraConfigStr), &barConfig)
-		if err != nil {
-			errMsg = "柱方图配置异常"
-			err = errors.New(errMsg)
-			return
-		}
-		extraConfig = barConfig
-	case 10: // 截面散点图
-		var tmpExtraConfig models.SectionScatterReq
-		if extraConfigStr == `` {
-			errMsg = "截面散点图未配置"
-			err = errors.New(errMsg)
-			return
-		}
-		err = json.Unmarshal([]byte(extraConfigStr), &tmpExtraConfig)
-		if err != nil {
-			errMsg = "截面散点配置异常"
-			err = errors.New(errMsg)
-			return
-		}
-
-		extraConfig = tmpExtraConfig
-	case utils.CHART_TYPE_RADAR:
-		var barConfig models.RadarChartInfoReq
-		if extraConfigStr == `` {
-			errMsg = "雷达图未配置"
-			err = errors.New(errMsg)
-			return
-		}
-		err = json.Unmarshal([]byte(extraConfigStr), &barConfig)
-		if err != nil {
-			errMsg = "雷达图配置异常"
-			err = errors.New(errMsg)
-			return
-		}
-		extraConfig = barConfig
-	default:
-		xEdbIdValue = make([]int, 0)
-		yDataList = make([]models.YData, 0)
-	}
-
-	// 指标对应的所有数据
-	edbDataListMap, edbList, err := getThemePreviewEdbDataMapList(chartType, calendar, startDate, endDate, mappingList, seasonExtraConfig)
-	if err != nil {
-		return
-	}
-
-	// 特殊图形数据处理
-	switch chartType {
-	case 7: // 柱形图
-		barChartConf := extraConfig.(models.BarChartInfoReq)
-		xEdbIdValue, yDataList, err = BarChartData(mappingList, edbDataListMap, barChartConf.DateList, barChartConf.Sort)
-
-		for k := range yDataList {
-			yDataList[k].Unit = barChartConf.Unit
-			yDataList[k].UnitEn = barChartConf.UnitEn
-		}
-
-		for _, v := range edbList {
-			// 指标别名
-			if barChartConf.EdbInfoIdList != nil && len(barChartConf.EdbInfoIdList) > 0 {
-				for _, reqEdb := range barChartConf.EdbInfoIdList {
-					if v.EdbInfoId == reqEdb.EdbInfoId {
-						v.EdbAliasName = reqEdb.Name
-					}
-				}
-			}
-		}
-	case 10: // 截面散点图
-		sectionScatterConf := extraConfig.(models.SectionScatterReq)
-		xEdbIdValue, dataResp, err = getThemePreviewSectionScatterChartData(mappingList, edbDataListMap, sectionScatterConf)
-
-		var tmpExtraConfig models.SectionScatterReq
-		if extraConfigStr == `` {
-			errMsg = "截面散点图未配置"
-			err = errors.New(errMsg)
-			return
-		}
-		err = json.Unmarshal([]byte(extraConfigStr), &tmpExtraConfig)
-		if err != nil {
-			errMsg = "截面散点配置异常"
-			err = errors.New(errMsg)
-			return
-		}
-
-		// 这个数据没有必要返回给前端
-		for _, v := range edbList {
-			v.DataList = nil
-		}
-
-	case utils.CHART_TYPE_RADAR: //雷达图
-		radarConf := extraConfig.(models.RadarChartInfoReq)
-		xEdbIdValue, dataResp, err = RadarChartData(mappingList, edbDataListMap, radarConf)
-	}
-	return
-}
-
-func getThemePreviewEdbDataMapList(chartType int, calendar, startDate, endDate string, mappingList []*models.ChartEdbInfoMapping, seasonExtraConfig string) (edbDataListMap map[int][]*models.EdbDataList, edbList []*models.ChartEdbInfoMapping, err error) {
-	// 指标对应的所有数据
-	edbDataListMap = make(map[int][]*models.EdbDataList)
-
-	for _, v := range mappingList {
-		//fmt.Println("v:", v.EdbInfoId)
-		item := new(models.ChartEdbInfoMapping)
-		item.EdbInfoId = v.EdbInfoId
-		item.SourceName = v.SourceName
-		item.Source = v.Source
-		item.EdbCode = v.EdbCode
-		item.EdbName = v.EdbName
-		item.EdbNameEn = v.EdbNameEn
-		item.Frequency = v.Frequency
-		item.EdbType = v.EdbType
-		item.FrequencyEn = GetFrequencyEn(v.Frequency)
-		if v.Unit != `无` {
-			item.Unit = v.Unit
-		}
-		item.UnitEn = v.UnitEn
-		item.StartDate = v.StartDate
-		item.EndDate = v.EndDate
-		item.ModifyTime = v.ModifyTime
-		item.EdbInfoCategoryType = v.EdbInfoCategoryType
-		item.PredictChartColor = v.PredictChartColor
-		item.ClassifyId = v.ClassifyId
-		item.IsAxis = 1
-		item.EdbInfoType = 1
-		item.LeadValue = v.LeadValue
-		item.LeadUnit = v.LeadUnit
-		item.LeadUnitEn = GetLeadUnitEn(v.LeadUnit)
-		item.ChartEdbMappingId = v.ChartEdbMappingId
-		item.ChartInfoId = v.ChartInfoId
-		item.ChartStyle = v.ChartStyle
-		item.ChartColor = v.ChartColor
-		item.ChartWidth = 0
-		item.IsOrder = false
-		item.MaxData = v.MaxValue
-		item.MinData = v.MinValue
-		item.LatestValue = v.LatestValue
-		item.LatestDate = v.LatestDate
-		item.UniqueCode = v.UniqueCode
-		item.MoveLatestDate = v.LatestDate
-
-		var startDateReal string
-		var diffSeconds int64
-		if chartType == 2 { //季节性图
-			startDateReal = startDate
-		} else {
-			if v.EdbInfoType == 0 && v.LeadUnit != "" && v.LeadValue > 0 { //领先指标
-				var startTimeRealTemp time.Time
-				startDateParse, _ := time.Parse(utils.FormatDate, startDate)
-				switch v.LeadUnit {
-				case "天":
-					startTimeRealTemp = startDateParse.AddDate(0, 0, -v.LeadValue)
-				case "月":
-					startTimeRealTemp = startDateParse.AddDate(0, -v.LeadValue, 0)
-				case "季":
-					startTimeRealTemp = startDateParse.AddDate(0, -3*v.LeadValue, 0)
-				case "周":
-					startTimeRealTemp = startDateParse.AddDate(0, 0, -7*v.LeadValue)
-				case "年":
-					startTimeRealTemp = startDateParse.AddDate(-v.LeadValue, 0, 0)
-				}
-				if startTimeRealTemp.Before(startDateParse) {
-					startDateReal = startTimeRealTemp.Format(utils.FormatDate)
-					diffSeconds = (int64(startTimeRealTemp.UnixNano()) - int64(startDateParse.UnixNano())) / 1e6
-				} else {
-					startDateReal = startDate
-					diffSeconds = 0
-				}
-
-				// 预测指标的开始日期也要偏移
-				{
-					day, tmpErr := utils.GetDaysBetween2Date(utils.FormatDate, startDate, startDateReal)
-					if tmpErr != nil {
-						err = tmpErr
-						return
-					}
-					moveLatestDateTime, tmpErr := time.ParseInLocation(utils.FormatDate, item.MoveLatestDate, time.Local)
-					if tmpErr != nil {
-						err = tmpErr
-						return
-					}
-					item.MoveLatestDate = moveLatestDateTime.AddDate(0, 0, day).Format(utils.FormatDate)
-				}
-			} else {
-				startDateReal = startDate
-			}
-		}
-
-		dataList := make([]*models.EdbDataList, 0)
-		dataList, err = models.GetChartThemeDefaultDataItemList(v.EdbInfoId, startDateReal)
-		if err != nil {
-			return
-		}
-		edbDataListMap[v.EdbInfoId] = dataList
-
-		if diffSeconds != 0 && v.EdbInfoType == 0 {
-			dataListLen := len(dataList)
-			for i := 0; i < dataListLen; i++ {
-				dataList[i].DataTimestamp = dataList[i].DataTimestamp - diffSeconds
-			}
-		}
-
-		if chartType == 2 {
-			latestDate, tmpErr := time.Parse(utils.FormatDate, v.LatestDate)
-			if tmpErr != nil {
-				//item.DataList = dataList
-				item.IsNullData = true
-				edbList = append(edbList, item)
-				continue
-			}
-
-			quarterDataList, tErr := GetSeasonEdbInfoDataListByXDate(dataList, latestDate, seasonExtraConfig)
-			if tErr != nil {
-				err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
-				return
-			}
-			item.DataList = quarterDataList
-		} else if chartType == 7 || chartType == utils.CHART_TYPE_RADAR { //柱方图
-			//item.DataList = dataList
-		} else {
-			item.DataList = dataList
-		}
-		edbList = append(edbList, item)
-	}
-
-	return
-}
-
-func getThemePreviewSectionScatterChartData(mappingList []*models.ChartEdbInfoMapping, edbDataListMap map[int][]*models.EdbDataList, extraConfig models.SectionScatterReq) (edbIdList []int, chartDataResp models.SectionScatterInfoResp, err error) {
-	// 指标数据数组(10086:{"2022-12-02":100.01,"2022-12-01":102.3})
-	edbDataMap := make(map[int]map[string]float64)
-	for edbInfoId, edbDataList := range edbDataListMap {
-		edbDateData := make(map[string]float64)
-		for _, edbData := range edbDataList {
-			edbDateData[edbData.DataTime] = edbData.Value
-		}
-		edbDataMap[edbInfoId] = edbDateData
-	}
-
-	// edbIdList 指标展示顺序;x轴的指标顺序
-	edbIdList = make([]int, 0)
-	edbMappingMap := make(map[int]*models.ChartEdbInfoMapping)
-	for _, v := range mappingList {
-		edbIdList = append(edbIdList, v.EdbInfoId)
-		edbMappingMap[v.EdbInfoId] = v
-	}
-	//SectionScatterSeriesInfoResp
-
-	dataListResp := make([]models.SectionScatterSeriesItemResp, 0) //y轴的数据列表
-
-	for _, seriesItem := range extraConfig.SeriesList {
-		var maxDate time.Time
-		// 系列中的指标数据
-		tmpSeriesEdbInfoList := make([]models.SectionScatterEdbItemResp, 0)
-
-		var minXVal, maxXVal, minYVal, maxYVal float64
-		for _, edbConf := range seriesItem.EdbInfoList {
-			tmpItem := models.SectionScatterEdbItemResp{
-				IsShow: edbConf.IsShow,
-				Name:   edbConf.Name,
-				NameEn: edbConf.NameEn,
-			} //单个坐标点的数据
-
-			//X轴的数据
-			{
-				edbInfoId := edbConf.XEdbInfoId //X轴的指标
-				edbMappingInfo, ok := edbMappingMap[edbInfoId]
-				if !ok {
-					continue
-				}
-				findDate := edbConf.XDate             //需要的日期值
-				dataList := edbDataListMap[edbInfoId] //指标的所有数据值
-				if len(dataList) <= 0 {
-					// 没有数据的指标id
-					//findDataList = append(findDataList, 0)
-					continue
-				}
-
-				tmpItem.XEdbInfoId = edbInfoId
-				tmpItem.XName = edbMappingInfo.EdbName
-				tmpItem.XNameEn = edbMappingInfo.EdbNameEn
-
-				switch edbConf.XDateType {
-				case 1: //最新值
-					findDate = dataList[len(dataList)-1].DataTime
-				case 2: //近期几天
-					findDateTime, tmpErr := time.ParseInLocation(utils.FormatDate, dataList[len(dataList)-1].DataTime, time.Local)
-					if tmpErr != nil {
-						err = tmpErr
-						return
-					}
-					findDateTime = findDateTime.AddDate(0, 0, -edbConf.XDateValue)
-
-					lenData := len(dataList) - 1
-					for i := lenData; i >= 0; i-- {
-						currDateTime, tmpErr := time.ParseInLocation(utils.FormatDate, dataList[i].DataTime, time.Local)
-						if tmpErr != nil {
-							err = tmpErr
-							return
-						}
-						if currDateTime.Equal(findDateTime) || currDateTime.Before(findDateTime) {
-							findDate = dataList[i].DataTime
-							break
-						}
-					}
-				case 3: // 固定日期
-					//最早的日期
-					minDateTime, tmpErr := time.ParseInLocation(utils.FormatDate, dataList[0].DataTime, time.Local)
-					if tmpErr != nil {
-						err = tmpErr
-						return
-					}
-					//寻找固定日期的数据
-					findDateTime, tmpErr := time.ParseInLocation(utils.FormatDate, edbConf.XDate, time.Local)
-					if tmpErr != nil {
-						err = tmpErr
-						return
-					}
-					for tmpDateTime := findDateTime; tmpDateTime.After(minDateTime) || tmpDateTime.Equal(minDateTime); tmpDateTime = tmpDateTime.AddDate(0, 0, -1) {
-						tmpDate := tmpDateTime.Format(utils.FormatDate)
-						if _, ok := edbDataMap[edbInfoId][tmpDate]; ok { //如果能找到数据,那么就返回
-							findDate = tmpDate
-							break
-						}
-					}
-				default:
-					err = errors.New(fmt.Sprint("日期类型异常,Type:", edbConf.XDate))
-					return
-				}
-				findDateTime, _ := time.ParseInLocation(utils.FormatDate, findDate, time.Local)
-				if maxDate.IsZero() {
-					maxDate = findDateTime
-				} else {
-					if findDateTime.After(maxDate) {
-						maxDate = findDateTime
-					}
-				}
-				if tmpValue, ok := edbDataMap[edbInfoId][findDate]; ok {
-					tmpItem.XDate = findDate
-					tmpItem.XValue = tmpValue
-				} else {
-					continue
-				}
-			}
-
-			//Y轴的数据
-			{
-				edbInfoId := edbConf.YEdbInfoId //Y轴的指标
-				edbMappingInfo, ok := edbMappingMap[edbInfoId]
-				if !ok {
-					continue
-				}
-				findDate := edbConf.YDate             //需要的日期值
-				dataList := edbDataListMap[edbInfoId] //指标的所有数据值
-				if len(dataList) <= 0 {
-					// 没有数据的指标id
-					//findDataList = append(findDataList, 0)
-					continue
-				}
-
-				tmpItem.YEdbInfoId = edbInfoId
-				tmpItem.YName = edbMappingInfo.EdbName
-				tmpItem.YNameEn = edbMappingInfo.EdbNameEn
-
-				switch edbConf.YDateType {
-				case 1: //最新值
-					findDate = dataList[len(dataList)-1].DataTime
-				case 2: //近期几天
-					findDateTime, tmpErr := time.ParseInLocation(utils.FormatDate, dataList[len(dataList)-1].DataTime, time.Local)
-					if tmpErr != nil {
-						err = tmpErr
-						return
-					}
-					findDateTime = findDateTime.AddDate(0, 0, -edbConf.YDateValue)
-
-					lenData := len(dataList) - 1
-					for i := lenData; i >= 0; i-- {
-						currDateTime, tmpErr := time.ParseInLocation(utils.FormatDate, dataList[i].DataTime, time.Local)
-						if tmpErr != nil {
-							err = tmpErr
-							return
-						}
-						if currDateTime.Equal(findDateTime) || currDateTime.Before(findDateTime) {
-							findDate = dataList[i].DataTime
-							break
-						}
-					}
-				case 3: // 固定日期
-					//最早的日期
-					minDateTime, tmpErr := time.ParseInLocation(utils.FormatDate, dataList[0].DataTime, time.Local)
-					if tmpErr != nil {
-						err = tmpErr
-						return
-					}
-					//寻找固定日期的数据
-					findDateTime, tmpErr := time.ParseInLocation(utils.FormatDate, edbConf.YDate, time.Local)
-					if tmpErr != nil {
-						err = tmpErr
-						return
-					}
-					for tmpDateTime := findDateTime; tmpDateTime.After(minDateTime) || tmpDateTime.Equal(minDateTime); tmpDateTime = tmpDateTime.AddDate(0, 0, -1) {
-						tmpDate := tmpDateTime.Format(utils.FormatDate)
-						if _, ok := edbDataMap[edbInfoId][tmpDate]; ok { //如果能找到数据,那么就返回
-							findDate = tmpDate
-							break
-						}
-					}
-				default:
-					err = errors.New(fmt.Sprint("日期类型异常,Type:", edbConf.YDate))
-					return
-				}
-				findDateTime, _ := time.ParseInLocation(utils.FormatDate, findDate, time.Local)
-				if maxDate.IsZero() {
-					maxDate = findDateTime
-				} else {
-					if findDateTime.After(maxDate) {
-						maxDate = findDateTime
-					}
-				}
-				if tmpValue, ok := edbDataMap[edbInfoId][findDate]; ok {
-					tmpItem.YDate = findDate
-					tmpItem.YValue = tmpValue
-				} else {
-					continue
-				}
-			}
-
-			// 获取当前系列的X轴的最大最小值
-			{
-				if tmpItem.XValue < minXVal {
-					minXVal = tmpItem.XValue
-				}
-				if tmpItem.XValue > maxXVal {
-					maxXVal = tmpItem.XValue
-				}
-				if tmpItem.YValue < minYVal {
-					minYVal = tmpItem.YValue
-				}
-				if tmpItem.YValue > maxYVal {
-					maxYVal = tmpItem.YValue
-				}
-			}
-			tmpSeriesEdbInfoList = append(tmpSeriesEdbInfoList, tmpItem)
-		}
-
-		trendLimitData := make([]models.CoordinatePoint, 0) //趋势线的前后坐标点
-		var trendLine, rSquare string
-		// 生成线性方程式
-		var a, b float64
-		{
-			coordinateData := make([]utils.Coordinate, 0)
-			for _, tmpSeriesEdbInfo := range tmpSeriesEdbInfoList {
-				tmpCoordinate1 := utils.Coordinate{
-					X: tmpSeriesEdbInfo.XValue,
-					Y: tmpSeriesEdbInfo.YValue,
-				}
-				coordinateData = append(coordinateData, tmpCoordinate1)
-			}
-
-			// 只有存在两个坐标点的时候,才能去计算线性方程和R平方
-			if len(coordinateData) >= 2 {
-				a, b = utils.GetLinearResult(coordinateData)
-				if !math.IsNaN(a) && !math.IsNaN(b) {
-					if b > 0 {
-						trendLine = fmt.Sprintf("y=%sx+%s", utils.SubFloatToString(a, 4), utils.SubFloatToString(b, 4))
-					} else {
-						trendLine = fmt.Sprintf("y=%sx%s", utils.SubFloatToString(a, 4), utils.SubFloatToString(b, 4))
-					}
-
-					minYVal, _ = decimal.NewFromFloat(a).Mul(decimal.NewFromFloat(minXVal)).Add(decimal.NewFromFloat(b)).Round(4).Float64()
-					maxYVal, _ = decimal.NewFromFloat(a).Mul(decimal.NewFromFloat(maxXVal)).Add(decimal.NewFromFloat(b)).Round(4).Float64()
-				}
-
-				// 计算R平方
-				rSquare = fmt.Sprint(utils.CalculationDecisive(coordinateData))
-			}
-
-			trendLimitData = append(trendLimitData, models.CoordinatePoint{
-				X: minXVal,
-				Y: minYVal,
-			}, models.CoordinatePoint{
-				X: maxXVal,
-				Y: maxYVal,
-			})
-		}
-
-		dataListResp = append(dataListResp, models.SectionScatterSeriesItemResp{
-			Name:            seriesItem.Name,
-			NameEn:          seriesItem.NameEn,
-			IsNameDefault:   seriesItem.IsNameDefault,
-			Color:           seriesItem.Color,
-			EdbInfoList:     tmpSeriesEdbInfoList,
-			ShowTrendLine:   seriesItem.ShowTrendLine,
-			ShowFitEquation: seriesItem.ShowFitEquation,
-			ShowRSquare:     seriesItem.ShowRSquare,
-			TrendLine:       trendLine,
-			RSquare:         rSquare,
-			TrendLimitData:  trendLimitData,
-		})
-	}
-
-	// 截面散点图点击详情时自动更新系列名
-	if len(extraConfig.SeriesList) > 0 {
-		// 默认名字的时候才自动更新
-		if extraConfig.SeriesList[0].IsNameDefault {
-			firstXEdbInfoId := extraConfig.SeriesList[0].EdbInfoList[0].XEdbInfoId
-			if v, ok := edbMappingMap[firstXEdbInfoId]; ok {
-				extraConfig.SeriesList[0].Name = v.LatestDate
-				extraConfig.SeriesList[0].NameEn = v.LatestDate
-				dataListResp[0].Name = v.LatestDate
-				dataListResp[0].NameEn = v.LatestDate
-			}
-
-		}
-	}
-
-	chartDataResp = models.SectionScatterInfoResp{
-		XName:       extraConfig.XName,
-		XNameEn:     extraConfig.XNameEn,
-		XUnitName:   extraConfig.XUnitName,
-		XUnitNameEn: extraConfig.XUnitNameEn,
-		YName:       extraConfig.YName,
-		YNameEn:     extraConfig.YNameEn,
-		YUnitName:   extraConfig.YUnitName,
-		YUnitNameEn: extraConfig.YUnitNameEn,
-		XMinValue:   extraConfig.XMinValue,
-		XMaxValue:   extraConfig.XMaxValue,
-		YMinValue:   extraConfig.YMinValue,
-		YMaxValue:   extraConfig.YMaxValue,
-		DataList:    dataListResp,
-	}
-	return
-}
-
 // GetChartThemeConfig
 // @Description: 根据主题id获取主题信息,如果获取不到的话,那么就获取默认的主题
 // @author: Roc

+ 21 - 7
services/edb_data.go

@@ -3,21 +3,37 @@ package services
 import (
 	"eta/eta_forum_admin/models"
 	"eta/eta_forum_admin/models/mgodb"
+	"eta/eta_forum_admin/utils"
 	"fmt"
-	"strconv"
+	"time"
 )
 
 // GetEdbDataList 获取指标的数据(日期正序返回)
 func GetEdbDataList(endInfoId, edbType int, startDate, endDate string) (list []*models.EdbDataList, err error) {
 	dataList := make([]*mgodb.EdbDataBase, 0)
+	var startDateT, endDateT time.Time
+	if startDate != "" {
+		startDateT, err = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
+		if err != nil {
+			err = fmt.Errorf("日期格式错误 error, %v", err)
+			return
+		}
+	}
+	if endDate != "" {
+		endDateT, err = time.ParseInLocation(utils.FormatDate, endDate, time.Local)
+		if err != nil {
+			err = fmt.Errorf("日期格式错误 error, %v", err)
+			return
+		}
+	}
 	if edbType == 1 {
-		dataList, err = mgodb.GetEdbDataList(endInfoId, startDate, endDate)
+		dataList, err = mgodb.GetEdbDataList(endInfoId, startDateT, endDateT)
 		if err != nil {
 			err = fmt.Errorf("查询指标数据出错 error, %v", err)
 			return
 		}
 	} else {
-		dataList, err = mgodb.GetEdbCalculateDataList(endInfoId, startDate, endDate)
+		dataList, err = mgodb.GetEdbCalculateDataList(endInfoId, startDateT, endDateT)
 		if err != nil {
 			err = fmt.Errorf("查询指标数据出错 error, %v", err)
 			return
@@ -26,13 +42,11 @@ func GetEdbDataList(endInfoId, edbType int, startDate, endDate string) (list []*
 	list = make([]*models.EdbDataList, 0)
 	for _, v := range dataList {
 		// 字符串转成浮点数
-		f, _ := strconv.ParseFloat(v.Value, 64)
 		list = append(list, &models.EdbDataList{
-			EdbDataId:     0,
 			EdbInfoId:     v.EdbInfoId,
-			DataTime:      v.DataTime,
+			DataTime:      v.DataTime.Format(utils.FormatDate),
 			DataTimestamp: v.DataTimestamp,
-			Value:         f,
+			Value:         v.Value,
 		},
 		)
 	}

+ 3 - 3
utils/redis/cluster_redis.go

@@ -149,12 +149,12 @@ func (rc *ClusterRedisClient) Put(key string, val interface{}, timeout time.Dura
 // @param timeout
 // @return bool
 func (rc *ClusterRedisClient) SetNX(key string, val interface{}, timeout time.Duration) bool {
-	result, err := rc.redisClient.SetEX(context.TODO(), key, val, timeout).Result()
-	if err != nil || result != "OK" {
+	result, err := rc.redisClient.SetNX(context.TODO(), key, val, timeout).Result()
+	if err != nil {
 		return false
 	}
 
-	return true
+	return result
 }
 
 // Delete

+ 3 - 3
utils/redis/standalone_redis.go

@@ -141,12 +141,12 @@ func (rc *StandaloneRedisClient) Put(key string, val interface{}, timeout time.D
 // @param timeout
 // @return bool
 func (rc *StandaloneRedisClient) SetNX(key string, val interface{}, timeout time.Duration) bool {
-	result, err := rc.redisClient.SetEX(context.TODO(), key, val, timeout).Result()
-	if err != nil || result != "OK" {
+	result, err := rc.redisClient.SetNX(context.TODO(), key, val, timeout).Result()
+	if err != nil {
 		return false
 	}
 
-	return true
+	return result
 }
 
 // Delete