瀏覽代碼

feat:百川盈弗刷新时,需要根据情况处理手工配置的值

Roc 2 年之前
父節點
當前提交
7b67032b6c
共有 1 個文件被更改,包括 43 次插入13 次删除
  1. 43 13
      models/base_from_baiinfo.go

+ 43 - 13
models/base_from_baiinfo.go

@@ -13,12 +13,12 @@ import (
 type BaseFromBaiinfoData struct {
 	BaiinfoDataId          int `orm:"column(baiinfo_data_id);pk"`
 	BaseFromBaiinfoIndexId int
-	IndexCode          string
-	DataTime           string
-	Value              string
-	CreateTime         time.Time
-	ModifyTime         time.Time
-	DataTimestamp      int64
+	IndexCode              string
+	DataTime               string
+	Value                  string
+	CreateTime             time.Time
+	ModifyTime             time.Time
+	DataTimestamp          int64
 }
 
 func GetBaseFromBaiinfoDataByCondition(condition string, pars []interface{}) (list []*BaseFromBaiinfoData, err error) {
@@ -31,7 +31,7 @@ func GetBaseFromBaiinfoDataByCondition(condition string, pars []interface{}) (li
 	return
 }
 
-//新增有色指标数据
+// 新增有色指标数据
 func AddEdbDataFromBaiinfo(edbCode string) (err error) {
 	o := orm.NewOrm()
 
@@ -73,7 +73,7 @@ func AddEdbDataFromBaiinfo(edbCode string) (err error) {
 	return
 }
 
-//刷新有色指标数据
+// RefreshEdbDataFromBaiinfo 刷新百川盈弗指标数据
 func RefreshEdbDataFromBaiinfo(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_BAIINFO
 	o := orm.NewOrm()
@@ -96,6 +96,23 @@ func RefreshEdbDataFromBaiinfo(edbInfoId int, edbCode, startDate string) (err er
 	}
 
 	baiinfoDataList, err := GetBaseFromBaiinfoDataByCondition(condition, pars)
+	if err != nil {
+		return
+	}
+
+	// 真实数据的最大日期  , 插入规则配置的日期
+	var realDataMaxDate, edbDataInsertConfigDate time.Time
+	var edbDataInsertConfig *EdbDataInsertConfig
+	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
+	{
+		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			return
+		}
+		if edbDataInsertConfig != nil {
+			edbDataInsertConfigDate = edbDataInsertConfig.Date
+		}
+	}
 
 	var existCondition string
 	var existPars []interface{}
@@ -119,14 +136,14 @@ func RefreshEdbDataFromBaiinfo(edbInfoId int, edbCode, startDate string) (err er
 	var isAdd bool
 	for _, v := range baiinfoDataList {
 		item := v
+		eDate := item.DataTime
+		dataTime, err := time.ParseInLocation(utils.FormatDate, eDate, time.Local)
+		if err != nil {
+			return err
+		}
 		if findItem, ok := existMap[v.DataTime]; !ok {
-			eDate := item.DataTime
 			sValue := item.Value
 
-			dataTime, err := time.Parse(utils.FormatDate, eDate)
-			if err != nil {
-				return err
-			}
 			timestamp := dataTime.UnixNano() / 1e6
 			timeStr := fmt.Sprintf("%d", timestamp)
 
@@ -140,8 +157,21 @@ func RefreshEdbDataFromBaiinfo(edbInfoId int, edbCode, startDate string) (err er
 				}
 			}
 		}
+
+		// 下面代码主要目的是处理掉手动插入的数据判断
+		{
+			if realDataMaxDate.IsZero() || dataTime.After(realDataMaxDate) {
+				realDataMaxDate = dataTime
+			}
+			if edbDataInsertConfigDate.IsZero() || dataTime.Equal(edbDataInsertConfigDate) {
+				isFindConfigDateRealData = true
+			}
+		}
 	}
 
+	// 处理手工数据补充的配置
+	HandleConfigInsertEdbData(realDataMaxDate, edbDataInsertConfig, edbInfoId, source, existMap, isFindConfigDateRealData)
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()