Browse Source

fix: SMM指标已存在的日期数据更新

hsun 1 năm trước cách đây
mục cha
commit
742c839ee6
2 tập tin đã thay đổi với 61 bổ sung7 xóa
  1. 27 0
      models/base_from_smm.go
  2. 34 7
      services/base_from_smm.go

+ 27 - 0
models/base_from_smm.go

@@ -265,3 +265,30 @@ type HandleSmmExcelDataReq struct {
 	Frequency      string
 	ExcelDataMap   map[string]string
 }
+
+// MultiUpdateBaseFromSmmDataValue 批量更新SMM指标数据
+func MultiUpdateBaseFromSmmDataValue(items []*BaseFromSmmData) (err error) {
+	if len(items) == 0 {
+		return
+	}
+
+	o := orm.NewOrm()
+	sql := `UPDATE base_from_smm_data SET value = ?, modify_time = NOW() WHERE index_code = ? AND data_time = ? LIMIT 1`
+	p, err := o.Raw(sql).Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close()
+	}()
+	for _, v := range items {
+		if v.IndexCode == "" || v.DataTime == "" {
+			continue
+		}
+		_, err = p.Exec(v.Value, v.IndexCode, v.DataTime)
+		if err != nil {
+			return
+		}
+	}
+	return
+}

+ 34 - 7
services/base_from_smm.go

@@ -25,6 +25,7 @@ func SmmIndexHandle(baseFilePath, renameFilePath, indexName, indexCode, unit, fr
 	var indexId int64
 
 	addDataList := make([]*models.BaseFromSmmData, 0)
+	updateDataList := make([]*models.BaseFromSmmData, 0)
 
 	exitDataMap := make(map[string]*models.BaseFromSmmData)
 
@@ -90,12 +91,12 @@ func SmmIndexHandle(baseFilePath, renameFilePath, indexName, indexCode, unit, fr
 
 	// 遍历excel数据,然后跟现有的数据做校验,不存在则入库
 	for date, value := range excelDataMap {
+		dateTime, e := time.ParseInLocation(utils.FormatDate, date, time.Local)
+		if e != nil {
+			fmt.Println("time.ParseInLocation Err:" + e.Error())
+			return
+		}
 		if _, ok := exitDataMap[date]; !ok {
-			dateTime, err := time.ParseInLocation(utils.FormatDate, date, time.Local)
-			if err != nil {
-				fmt.Println("time.ParseInLocation Err:" + err.Error())
-				return
-			}
 			if !strings.Contains(value, "#N/A") {
 				var saveDataTime time.Time
 				if strings.Contains(date, "00:00:00") {
@@ -120,19 +121,45 @@ func SmmIndexHandle(baseFilePath, renameFilePath, indexName, indexCode, unit, fr
 				dataItem.DataTimestamp = timestamp
 				addDataList = append(addDataList, dataItem)
 			}
+		} else {
+			// 更新对应日期数据
+			if strings.Contains(value, "#N/A") {
+				continue
+			}
+
+			dataItem := new(models.BaseFromSmmData)
+			dataItem.IndexCode = indexCode
+			dataItem.DataTime = dateTime.Format(utils.FormatDate)
+			dataItem.Value = value
+			dataItem.ModifyTime = time.Now()
+			updateDataList = append(updateDataList, dataItem)
 		}
 	}
 
 	if len(addDataList) > 0 {
 		err = models.AddBaseFromSmmData(addDataList)
 		if err != nil {
-			fmt.Println("dataObj.Add() Err:" + err.Error())
+			fmt.Println("AddBaseFromSmmData Err:" + err.Error())
+			errMsgList = append(errMsgList, "AddBaseFromSmmData err: "+err.Error())
+		}
+	}
+
+	// 已存在的日期数据更新
+	if len(updateDataList) > 0 {
+		err = models.MultiUpdateBaseFromSmmDataValue(updateDataList)
+		if err != nil {
+			fmt.Println("MultiUpdateBaseFromSmmDataValue Err:" + err.Error())
+			errMsgList = append(errMsgList, "MultiUpdateBaseFromSmmDataValue err: "+err.Error())
 		}
 	}
 
 	itemInfo, err := models.GetSmmIndexInfoMaxAndMinInfo(indexCode)
 	if err == nil && item != nil {
-		go models.ModifySmmIndexMaxAndMinInfo(indexCode, itemInfo)
+		e := models.ModifySmmIndexMaxAndMinInfo(indexCode, itemInfo)
+		if e != nil {
+			fmt.Println("ModifySmmIndexMaxAndMinInfo Err:" + e.Error())
+			errMsgList = append(errMsgList, "ModifySmmIndexMaxAndMinInfo err: "+e.Error())
+		}
 	}
 
 	// 同步刷新ETA图库有色的指标