Przeglądaj źródła

fix:最新值数据操作调整兼容mongo

Roc 10 miesięcy temu
rodzic
commit
6e47b165a8
2 zmienionych plików z 84 dodań i 1 usunięć
  1. 57 1
      models/base_from_manual.go
  2. 27 0
      models/edb_data_business.go

+ 57 - 1
models/base_from_manual.go

@@ -1,10 +1,12 @@
 package models
 
 import (
+	"eta/eta_index_lib/models/mgo"
 	"eta/eta_index_lib/utils"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
+	"go.mongodb.org/mongo-driver/bson"
 	"strconv"
 	"strings"
 	"time"
@@ -219,7 +221,17 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 	return
 }
 
-// HandleConfigInsertEdbData 处理手工数据补充的配置
+// HandleConfigInsertEdbData
+// @Description: 处理人工数据补充的配置(mysql)
+// @author: Roc
+// @datetime 2024-05-09 13:07:32
+// @param realDataMaxDate time.Time
+// @param edbDataInsertConfig *EdbDataInsertConfig
+// @param edbInfoId int
+// @param source int
+// @param subSource int
+// @param existMap map[string]*EdbInfoSearchData
+// @param isFindConfigDateRealData bool
 func HandleConfigInsertEdbData(realDataMaxDate time.Time, edbDataInsertConfig *EdbDataInsertConfig, edbInfoId, source, subSource int, existMap map[string]*EdbInfoSearchData, isFindConfigDateRealData bool) {
 	if edbDataInsertConfig == nil {
 		return
@@ -249,3 +261,47 @@ func HandleConfigInsertEdbData(realDataMaxDate time.Time, edbDataInsertConfig *E
 
 	return
 }
+
+// HandleConfigInsertEdbDataByMongo
+// @Description: 处理人工数据补充的配置(mongo)
+// @author: Roc
+// @datetime 2024-05-09 13:07:12
+// @param realDataMaxDate time.Time
+// @param edbDataInsertConfig *EdbDataInsertConfig
+// @param edbInfoId int
+// @param source int
+// @param subSource int
+// @param existMap map[string]*mgo.EdbDataBusiness
+// @param isFindConfigDateRealData bool
+func HandleConfigInsertEdbDataByMongo(realDataMaxDate time.Time, edbDataInsertConfig *EdbDataInsertConfig, edbInfoId, source, subSource int, existMap map[string]*mgo.EdbDataBusiness, isFindConfigDateRealData bool) {
+	if edbDataInsertConfig == nil {
+		return
+	}
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println("处理手工数据补充的配置失败,err:", err)
+		}
+	}()
+
+	edbDataInsertConfigDate := edbDataInsertConfig.Date // 配置的日期
+
+	// 如果存在真实数据的最大日期  && 存在配置插入数据的最大日期  && 真实数据的最大日期 晚于/等于 配置插入数据的最大日期
+	if realDataMaxDate.After(edbDataInsertConfigDate) || realDataMaxDate.Equal(edbDataInsertConfigDate) {
+		go DeleteEdbDataInsertConfigByEdbId(edbInfoId)
+
+		mogDataObj := mgo.EdbDataBusiness{}
+		coll := mogDataObj.GetCollection()
+		edbDataInsertConfigDateStr := edbDataInsertConfigDate.Format(utils.FormatDate)
+		// 如果没有找到找到配置日期的实际数据,那么就直接删除
+		if item, ok := existMap[edbDataInsertConfigDateStr]; ok && !isFindConfigDateRealData {
+			mogDataObj.RemoveManyByColl(coll, bson.M{"_id": item.ID})
+		}
+	} else {
+		o := orm.NewOrm()
+		edbDataInsertConfig.RealDate = realDataMaxDate
+		_, err = o.Update(edbDataInsertConfig, "RealDate")
+	}
+
+	return
+}

+ 27 - 0
models/edb_data_business.go

@@ -195,6 +195,20 @@ func (obj Business) GetEdbType() int {
 }
 
 func (obj Business) refresh(edbInfo *EdbInfo, startDate string) (err error) {
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfo.EdbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
+
 	//获取已存在的所有数据
 	baseDataList, err := obj.getBaseBusinessData(edbInfo, startDate)
 
@@ -245,6 +259,16 @@ func (obj Business) refresh(edbInfo *EdbInfo, startDate string) (err error) {
 		// 当前的实际值
 		saveValue := decimal.NewFromFloat(tmpData.Value).Round(4).String()
 
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || currDate.After(realDataMaxDate) {
+				realDataMaxDate = currDate
+			}
+			if edbDataInsertConfigDate.IsZero() || currDate.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
+
 		existData, ok := existDataMap[currDateStr]
 		// 如果库中已经存在该数据的话,那么就进行值的变更操作
 		if ok {
@@ -329,6 +353,9 @@ func (obj Business) refresh(edbInfo *EdbInfo, startDate string) (err error) {
 		}
 	}
 
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbDataByMongo(realDataMaxDate, edbDataInsertConfig, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, existDataMap, isFindConfigDateRealData)
+
 	return
 }