Browse Source

更新指标数据

xyxie 1 week ago
parent
commit
f5b090ddd9

+ 87 - 9
controllers/edb_data.go

@@ -3,8 +3,11 @@ package controllers
 import (
 	"encoding/json"
 	"eta/eta_forum_hub/models"
+	"eta/eta_forum_hub/services"
+	"eta/eta_forum_hub/utils"
 	"fmt"
 	"strconv"
+	"time"
 )
 
 type EdbDataController struct {
@@ -47,9 +50,8 @@ func (this *EdbDataController) SaveByBinlog() {
 		var dataItem models.EdbDataBinlogItem
 		err := json.Unmarshal([]byte(item.Item), &dataItem)
 		if err != nil {
-			br.Msg = "参数解析异常!"
-			br.ErrMsg = "参数解析失败,Err:" + err.Error()
-			return
+			utils.FileLog.Info("解析binlog数据失败,Err:" + err.Error(), "item", item)
+			continue
 		}
 		dataItem.OpType = item.OpType
 		reqList = append(reqList, &dataItem)
@@ -66,7 +68,22 @@ func (this *EdbDataController) SaveByBinlog() {
 	for _, item := range edbInfoList {
 		existEdbInfoMap[item.EdbInfoId] = item
 	}
-	
+	// edbInfoList := []*models.EdbInfo{
+	// 	{
+	// 		EdbInfoId: 1,
+	// 		EdbCode:   "test_code_1",
+	// 		EdbType:   1,
+	// 	},
+	// 	{
+	// 		EdbInfoId: 2,
+	// 		EdbCode:   "test_code_2",
+	// 		EdbType:   1,
+	// 	},
+	// }
+	// existEdbInfoMap := make(map[int]*models.EdbInfo)
+	// for _, item := range edbInfoList {
+	// 	existEdbInfoMap[item.EdbInfoId] = item
+	// }
 	edbDataIdMap := make(map[string]*models.EdbDataBaseWithOpType)
 	for _, item := range reqList {
 		edbInfo, ok := existEdbInfoMap[item.EdbInfoId]
@@ -85,29 +102,90 @@ func (this *EdbDataController) SaveByBinlog() {
 		if !ok {
 			continue
 		}
-		
+		createTime, _ := time.ParseInLocation("2006-01-02 15:04:05", item.CreateTime, time.Local)
+		modifyTime, _ := time.ParseInLocation("2006-01-02 15:04:05", item.ModifyTime, time.Local)
 		dataItem := &models.EdbDataBaseWithOpType{
 			EdbDataBase: &models.EdbDataBase{
 				EdbInfoId: item.EdbInfoId,
 				EdbCode: item.EdbCode,
 				Value: strconv.FormatFloat(value, 'f', -1, 64),
 				DataTimestamp: item.DataTimestamp,
-				DataTime: item.DataTime.Format("2006-01-02 15:04:05"),
+				DataTime: item.DataTime,
+				CreateTime: createTime,
+				ModifyTime: modifyTime,
 			},
 			OpType: item.OpType,
 		}
-		if _, ok := edbDataIdMap[fmt.Sprintf("%d_%d", item.EdbInfoId, item.EdbDataId)]; ok {
-			edbDataIdMap[fmt.Sprintf("%d_%d", item.EdbInfoId, item.EdbDataId)] = dataItem
+		if _, ok := edbDataIdMap[fmt.Sprintf("%d_%s", item.EdbInfoId, item.DataTime)]; ok {
+			edbDataIdMap[fmt.Sprintf("%d_%s", item.EdbInfoId, item.DataTime)] = dataItem
 		} else {
-			edbDataIdMap[fmt.Sprintf("%d_%d", item.EdbInfoId, item.EdbDataId)] = dataItem
+			edbDataIdMap[fmt.Sprintf("%d_%s", item.EdbInfoId, item.DataTime)] = dataItem
 		}
 		//edbInfoIdMap[item.EdbInfoId].DataList = append(edbInfoIdMap[item.EdbInfoId].DataList, dataItem)
 	}
 
+	edbDataMinDataTimeMap := make(map[int]string)
+	edbDataMaxDataTimeMap := make(map[int]string)
 	for _, item := range edbDataIdMap {
 		edbInfoIdMap[item.EdbInfoId].DataList = append(edbInfoIdMap[item.EdbInfoId].DataList, item)
+		if edbDataMinDataTimeMap[item.EdbInfoId] == "" || edbDataMinDataTimeMap[item.EdbInfoId] > item.DataTime {
+			edbDataMinDataTimeMap[item.EdbInfoId] = item.DataTime
+		}
+		if edbDataMaxDataTimeMap[item.EdbInfoId] == "" || edbDataMaxDataTimeMap[item.EdbInfoId] < item.DataTime {
+			edbDataMaxDataTimeMap[item.EdbInfoId] = item.DataTime
+		}
+	}
+
+	for _, item := range edbInfoIdMap {
+		minDataTime := edbDataMinDataTimeMap[item.EdbInfoId]
+		maxDataTime := edbDataMaxDataTimeMap[item.EdbInfoId]
+		err := services.AddOrUpdateEdbDataWithOpType(item.EdbInfoId, item.DataList, minDataTime, maxDataTime)
+		if err != nil {
+			br.Msg = "更新指标数据失败!"
+			br.ErrMsg = "更新指标数据失败,Err:" + err.Error()
+			return
+		}
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "更新指标数据成功"
+	return
+}
+
+// TestSaveByBinlog 测试SaveByBinlog接口的测试数据
+// @Title 测试SaveByBinlog接口的测试数据
+// @Description 测试SaveByBinlog接口的测试数据
+// @Success 200 {object} models.BaseResponse
+// @router /test_save_by_binlog [get]
+func (this *EdbDataController) TestSaveByBinlog() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	// 构造测试数据
+	testData := models.EdbDataBinlogReq{
+		List: []*models.EdbDataBinlogDataReq{
+			{
+				OpType: "INSERT",
+				Item: `{"create_time":"2024-10-12 17:03:04","data_time":"2024-09-08","data_timestamp":1725724800000,"edb_code":"test_code_1","edb_data_id":1001,"edb_info_id":1,"modify_time":"2024-10-14 13:37:30","value":71988}`,
+			},
+			{
+				OpType: "UPDATE",
+				Item: `{"create_time":"2024-10-12 17:03:04","data_time":"2024-09-09","data_timestamp":1725811200000,"edb_code":"test_code_1","edb_data_id":1002,"edb_info_id":1,"modify_time":"2024-10-14 13:37:30","value":72500}`,
+			},
+			{
+				OpType: "DELETE",
+				Item: `{"create_time":"2024-10-12 17:03:04","data_time":"2024-09-10","data_timestamp":1725897600000,"edb_code":"test_code_2","edb_data_id":2001,"edb_info_id":2,"modify_time":"2024-10-14 13:37:30","value":85600}`,
+			},
+		},
 	}
 
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取测试数据成功"
+	br.Data = testData
 	return
 }
 

+ 9 - 9
models/chart_info.go

@@ -2175,15 +2175,15 @@ type ChartListResp struct {
 
 // {"create_time":"2024-10-12 17:03:04","data_time":"2024-09-08","data_timestamp":1725724800000,"edb_code":"smmsmmgd1djt","edb_data_id":88546,"edb_info_id":105933,"modify_time":"2024-10-14 13:37:30","value":71988}
 type EdbDataBinlogItem struct {
-	CreateTime    time.Time 
-	DataTime      time.Time 
-	DataTimestamp int64     
-	EdbCode       string    
-	EdbDataId     int      
-	EdbInfoId     int      
-	ModifyTime    time.Time 
-	Value         interface{}    
-	OpType        string    
+	CreateTime    string    	`json:"create_time"`
+	DataTime      string    	`json:"data_time"`
+	DataTimestamp int64     	`json:"data_timestamp"`
+	EdbCode       string    	`json:"edb_code"`
+	EdbDataId     int      	`json:"edb_data_id"`
+	EdbInfoId     int      	`json:"edb_info_id"`
+	ModifyTime    string    	`json:"modify_time"`
+	Value         interface{}    	`json:"value"`
+	OpType        string    	`json:"OpType"`
 }
 
 type EdbDataBinlogDataReq struct {

+ 5 - 5
models/mgodb/edb_data_base.go

@@ -86,24 +86,24 @@ func DeleteEdbInfoDataByEdbInfoId(edbInfoId int) (err error) {
 }
 
 // 删除
-func DeleteEdbInfoDataByEdbInfoIdAndDateList(edbCode string, dataTimeList []time.Time) (err error) {
+func DeleteEdbInfoDataByEdbCodeAndDateList(edbCode string, dataTimeList []time.Time) (err error) {
 	filter := bson.D{{"edb_code", edbCode}, {"data_time", bson.D{{"$in", dataTimeList}}}}
 	db := NewMgo(utils.MgoDataDbName, "edb_data_base", utils.MgoDataCli)
 	_, err = db.DeleteMany(filter)
 	return
 }
 
-func DeleteEdbInfoDataByEdbInfoIdAndDate(edbCode string, dataTime string) (err error) {
-	filter := bson.D{{"edb_code", edbCode}, {"data_time", dataTime}}
+func DeleteEdbInfoDataByEdbInfoIdAndDateList(edbInfoId int, dataTimeList []time.Time) (err error) {
+	filter := bson.D{{"edb_info_id", edbInfoId}, {"data_time", bson.D{{"$in", dataTimeList}}}}
 	db := NewMgo(utils.MgoDataDbName, "edb_data_base", utils.MgoDataCli)
 	_, err = db.DeleteMany(filter)
 	return
 }
 
 // 更新指标的值
-func ModifyValueEdbDataValue(edbDataId primitive.ObjectID, value float64) (err error) {
+func ModifyValueEdbDataValue(edbDataId primitive.ObjectID, value float64, modifyTime time.Time) (err error) {
 	filter := bson.D{{"_id", edbDataId}}
-	update := bson.D{{"$set", bson.D{{"value", value}, {"modify_time", time.Now()}}}}
+	update := bson.D{{"$set", bson.D{{"value", value}, {"modify_time", modifyTime}}}}
 	db := NewMgo(utils.MgoDataDbName, "edb_data_base", utils.MgoDataCli)
 	_, err = db.UpdateOne(filter, update)
 	return

+ 5 - 5
models/mgodb/edb_data_calculate.go

@@ -68,23 +68,23 @@ func DeleteEdbInfoCalculateDataByEdbInfoId(edbInfoId int) (err error) {
 }
 
 // 更新指标的值
-func ModifyValueEdbCalculateDataValue(edbDataId primitive.ObjectID, value float64) (err error) {
+func ModifyValueEdbCalculateDataValue(edbDataId primitive.ObjectID, value float64, modifyTime time.Time) (err error) {
 	filter := bson.D{{"_id", edbDataId}}
-	update := bson.D{{"$set", bson.D{{"value", value}, {"modify_time", time.Now()}}}}
+	update := bson.D{{"$set", bson.D{{"value", value}, {"modify_time", modifyTime}}}}
 	db := NewMgo(utils.MgoDataDbName, "edb_data_calculate", utils.MgoDataCli)
 	_, err = db.UpdateOne(filter, update)
 	return
 }
 
-func DeleteEdbCalculateDataByEdbInfoIdAndDateList(edbCode string, dataTime []time.Time) (err error) {
+func DeleteEdbCalculateDataByEdbCodeAndDateList(edbCode string, dataTime []time.Time) (err error) {
 	filter := bson.D{{"edb_code", edbCode}, {"data_time", bson.D{{"$in", dataTime}}}}
 	db := NewMgo(utils.MgoDataDbName, "edb_data_calculate", utils.MgoDataCli)
 	_, err = db.DeleteMany(filter)
 	return
 }
 
-func DeleteEdbCalculateDataByEdbInfoIdAndDate(edbCode string, dataTime string) (err error) {
-	filter := bson.D{{"edb_code", edbCode}, {"data_time", dataTime}}
+func DeleteEdbCalculateDataByEdbInfoIdAndDateList(edbInfoId int, dataTime []time.Time) (err error) {
+	filter := bson.D{{"edb_info_id", edbInfoId}, {"data_time", bson.D{{"$in", dataTime}}}}
 	db := NewMgo(utils.MgoDataDbName, "edb_data_calculate", utils.MgoDataCli)
 	_, err = db.DeleteMany(filter)
 	return

+ 9 - 0
routers/commentsRouter.go

@@ -349,4 +349,13 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_forum_hub/controllers:EdbDataController"] = append(beego.GlobalControllerRouter["eta/eta_forum_hub/controllers:EdbDataController"],
+        beego.ControllerComments{
+            Method: "TestSaveByBinlog",
+            Router: `/test_save_by_binlog`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
 }

+ 85 - 92
services/edb_data.go

@@ -64,8 +64,8 @@ func AddOrUpdateEdbData(edbCode string, dataList []*models.EdbDataBase) (err err
 				DataTime:      dataTime,
 				Value:         val,
 				Status:        v.Status,
-				CreateTime:    time.Now(),
-				ModifyTime:    time.Now(),
+				CreateTime:    v.CreateTime,
+				ModifyTime:    v.ModifyTime,
 				DataTimestamp: v.DataTimestamp,
 			}
 			addList = append(addList, tmp)
@@ -80,7 +80,7 @@ func AddOrUpdateEdbData(edbCode string, dataList []*models.EdbDataBase) (err err
 		} else {
 			delete(deleteMap, v.DataTime)
 			if val != oldObj.Value {
-				err = mgodb.ModifyValueEdbDataValue(oldObj.EdbDataId, val)
+				err = mgodb.ModifyValueEdbDataValue(oldObj.EdbDataId, val, v.ModifyTime)
 				if err != nil {
 					err = fmt.Errorf("更新指标数据出错 error, %v", err)
 					return
@@ -102,7 +102,7 @@ func AddOrUpdateEdbData(edbCode string, dataList []*models.EdbDataBase) (err err
 		}
 		removeNum := len(removeDateList)
 		if removeNum > 0 {
-			err = mgodb.DeleteEdbInfoDataByEdbInfoIdAndDateList(edbCode, removeDateList)
+			err = mgodb.DeleteEdbInfoDataByEdbCodeAndDateList(edbCode, removeDateList)
 			if err != nil {
 				err = fmt.Errorf("删除多余日期失败,error, %v", err)
 				return
@@ -153,8 +153,8 @@ func AddOrUpdateEdbDataCalculate(edbCode string, dataList []*models.EdbDataBase)
 				DataTime:      dataTime,
 				Value:         val,
 				Status:        v.Status,
-				CreateTime:    time.Now(),
-				ModifyTime:    time.Now(),
+				CreateTime:    v.CreateTime,
+				ModifyTime:    v.ModifyTime,
 				DataTimestamp: v.DataTimestamp,
 			}
 			addList = append(addList, tmp)
@@ -169,7 +169,7 @@ func AddOrUpdateEdbDataCalculate(edbCode string, dataList []*models.EdbDataBase)
 		} else {
 			delete(deleteMap, v.DataTime)
 			if val != oldObj.Value {
-				err = mgodb.ModifyValueEdbCalculateDataValue(oldObj.EdbDataId, val)
+				err = mgodb.ModifyValueEdbCalculateDataValue(oldObj.EdbDataId, val, v.ModifyTime)
 				if err != nil {
 					err = fmt.Errorf("更新指标数据出错 error, %v", err)
 					return
@@ -191,7 +191,7 @@ func AddOrUpdateEdbDataCalculate(edbCode string, dataList []*models.EdbDataBase)
 		}
 		removeNum := len(removeDateList)
 		if removeNum > 0 {
-			err = mgodb.DeleteEdbCalculateDataByEdbInfoIdAndDateList(edbCode, removeDateList)
+			err = mgodb.DeleteEdbCalculateDataByEdbCodeAndDateList(edbCode, removeDateList)
 			if err != nil {
 				err = fmt.Errorf("删除多余日期失败,error, %v", err)
 				return
@@ -372,23 +372,32 @@ func GetEdbDataTbzForSeason(frequency string, tmpDataList []*models.EdbDataList,
 }
 
 // AddOrUpdateEdbDataWithOpType 根据操作类型,更新指标数据
-func AddOrUpdateEdbDataWithOpType(edbCode string, dataList []*models.EdbDataBaseWithOpType) (err error) {
+func AddOrUpdateEdbDataWithOpType(edbInfoId int, dataList []*models.EdbDataBaseWithOpType, minDataTime string, maxDataTime string) (err error) {
 	// 指标数据为空则不更新
 	if len(dataList) == 0 {
 		return
 	}
 	addList := make([]interface{}, 0)
-	existList, err := mgodb.GetEdbDataBaseByEdbCode(edbCode)
+	minDataTimeT, err := time.ParseInLocation(utils.FormatDate, minDataTime, time.Local)
+	if err != nil {
+		err = fmt.Errorf("日期格式错误 error, %v", err)
+		return
+	}
+	maxDataTimeT, err := time.ParseInLocation(utils.FormatDate, maxDataTime, time.Local)
+	if err != nil {
+		err = fmt.Errorf("日期格式错误 error, %v", err)
+		return
+	}
+	existList, err := mgodb.GetEdbDataList(edbInfoId, minDataTimeT, maxDataTimeT)
 	if err != nil {
 		err = fmt.Errorf("查询指标数据出错 error, %v", err)
 		return
 	}
 	existMap := make(map[string]*mgodb.EdbDataBase, len(existList))
-	deleteMap := make(map[string]struct{}, len(existList))
+	removeDateList := make([]time.Time, 0)
 	for _, exist := range existList {
 		tmp := exist.DataTime.Format(utils.FormatDate)
 		existMap[tmp] = exist
-		deleteMap[tmp] = struct{}{}
 	}
 	for _, v := range dataList {
 		dataTime, e := time.ParseInLocation(utils.FormatDate, v.DataTime, time.Local)
@@ -402,66 +411,58 @@ func AddOrUpdateEdbDataWithOpType(edbCode string, dataList []*models.EdbDataBase
 			return
 		}
 		if oldObj, ok := existMap[v.DataTime]; !ok {
-			if len(addList) >0 && v.OpType == "delete" {
-				err = mgodb.InsertEdbDataBatch(addList)
-				if err != nil {
-					err = fmt.Errorf("批量新增指标数据失败 error, %v", e)
-					return
-				}
-				addList = make([]interface{}, 0)
-				continue
-			}
 			if v.OpType == "insert"  || v.OpType == "update" {
 				tmp := &mgodb.EdbDataBase{
-					EdbInfoId:     0,
+					EdbInfoId:     v.EdbInfoId,
 					EdbCode:       v.EdbCode,
 					DataTime:      dataTime,
 					Value:         val,
 					Status:        v.Status,
-					CreateTime:    time.Now(),
-					ModifyTime:    time.Now(),
+					CreateTime:    v.CreateTime,
+					ModifyTime:    v.ModifyTime,
 					DataTimestamp: v.DataTimestamp,
 				}
 				addList = append(addList, tmp)
+				if len(addList) >500 {
+					err = mgodb.InsertEdbDataBatch(addList)
+					if err != nil {
+						err = fmt.Errorf("批量新增指标数据失败 error, %v", e)
+						return
+					}
+					addList = make([]interface{}, 0)
+					continue
+				}
 			}
 		} else {
 			if v.OpType != "delete" {
-				if val != oldObj.Value {
-					err = mgodb.ModifyValueEdbDataValue(oldObj.EdbDataId, val)
+				if v.ModifyTime.After(oldObj.ModifyTime) {
+					err = mgodb.ModifyValueEdbDataValue(oldObj.EdbDataId, val, v.ModifyTime)
 					if err != nil {
 						err = fmt.Errorf("更新指标数据出错 error, %v", err)
 					return
 				}
 			}else if v.OpType == "delete" {
+				removeDateList = append(removeDateList, dataTime)
 				// 删除数据
-				err = mgodb.DeleteEdbInfoDataByEdbInfoIdAndDate(v.EdbCode, v.DataTime)
-				if err != nil {
-					err = fmt.Errorf("删除指标数据出错 error, %v", err)
-					return
+				// err = mgodb.DeleteEdbInfoDataByEdbInfoIdAndDate(v.EdbCode, v.DataTime)
+				// if err != nil {
+				// 	err = fmt.Errorf("删除指标数据出错 error, %v", err)
+				// 	return
 				}
 			}
 		}
 	}
 
 	//遍历deletemap,找出需要删除的日期
-	// {
-	// 	removeDateList := make([]time.Time, 0)
-	// 	for dateTime := range deleteMap {
-	// 		dateT, e := time.ParseInLocation(utils.FormatDate, dateTime, time.Local)
-	// 		if e != nil {
-	// 			err = fmt.Errorf("日期格式错误 error, %v", e)
-	// 			return
-	// 		}
-	// 		removeDateList = append(removeDateList, dateT)
-	// 	}
-	// 	removeNum := len(removeDateList)
-	// 	if removeNum > 0 {
-	// 		err = mgodb.DeleteEdbInfoDataByEdbInfoIdAndDate(edbCode, removeDateList)
-	// 		if err != nil {
-	// 			err = fmt.Errorf("删除多余日期失败,error, %v", err)
-	// 			return
-	// 		}
-	// 	}
+	{
+		removeNum := len(removeDateList)
+		if removeNum > 0 {
+			err = mgodb.DeleteEdbInfoDataByEdbInfoIdAndDateList(edbInfoId, removeDateList)
+			if err != nil {
+				err = fmt.Errorf("删除多余日期失败,error, %v", err)
+				return
+			}
+		}
 	}
 
 	if len(addList) > 0 {
@@ -471,23 +472,28 @@ func AddOrUpdateEdbDataWithOpType(edbCode string, dataList []*models.EdbDataBase
 	return
 }
 
-func AddOrUpdateEdbDataCalculateWithOpType(edbCode string, dataList []*models.EdbDataBaseWithOpType) (err error) {
+func AddOrUpdateEdbDataCalculateWithOpType(edbInfoId int, dataList []*models.EdbDataBaseWithOpType, minDataTime string, maxDataTime string) (err error) {
 	// 指标数据为空则不更新
 	if len(dataList) == 0 {
 		return
 	}
 	addList := make([]interface{}, 0)
-	existList, err := mgodb.GetEdbDataCalculateByEdbCode(edbCode)
+	minDataTimeT, err := time.ParseInLocation(utils.FormatDate, minDataTime, time.Local)
 	if err != nil {
-		err = fmt.Errorf("查询指标数据出错 error, %v", err)
+		err = fmt.Errorf("日期格式错误 error, %v", err)
+		return
+	}
+	maxDataTimeT, err := time.ParseInLocation(utils.FormatDate, maxDataTime, time.Local)
+	if err != nil {
+		err = fmt.Errorf("日期格式错误 error, %v", err)
 		return
 	}
+	existList, err := mgodb.GetEdbCalculateDataList(edbInfoId, minDataTimeT, maxDataTimeT)
 	existMap := make(map[string]*mgodb.EdbDataBase, len(existList))
-	deleteMap := make(map[string]struct{}, len(existList))
+	removeDateList := make([]time.Time, 0)
 	for _, exist := range existList {
 		tmp := exist.DataTime.Format(utils.FormatDate)
 		existMap[tmp] = exist
-		deleteMap[tmp] = struct{}{}
 	}
 	for _, v := range dataList {
 		dataTime, e := time.ParseInLocation(utils.FormatDate, v.DataTime, time.Local)
@@ -501,65 +507,52 @@ func AddOrUpdateEdbDataCalculateWithOpType(edbCode string, dataList []*models.Ed
 			return
 		}
 		if oldObj, ok := existMap[v.DataTime]; !ok {
-			if len(addList) >0 && v.OpType == "delete" {
-				err = mgodb.InsertEdbCalculateDataBatch(addList)
-				if err != nil {
-					err = fmt.Errorf("批量新增指标数据失败 error, %v", e)
-					return
-				}
-				addList = make([]interface{}, 0)
-				continue
-			}
 			if v.OpType == "insert"  || v.OpType == "update" {
 				tmp := &mgodb.EdbDataBase{
-						EdbInfoId:     0,
+						EdbInfoId:     v.EdbInfoId,
 						EdbCode:       v.EdbCode,
 						DataTime:      dataTime,
 						Value:         val,
 						Status:        v.Status,
-						CreateTime:    time.Now(),
-						ModifyTime:    time.Now(),
+						CreateTime:    v.CreateTime,
+						ModifyTime:    v.ModifyTime,
 						DataTimestamp: v.DataTimestamp,
 					}
 				addList = append(addList, tmp)
+				if len(addList) >500 {
+					err = mgodb.InsertEdbCalculateDataBatch(addList)
+					if err != nil {
+						err = fmt.Errorf("批量新增指标数据失败 error, %v", e)
+						return
+					}
+					addList = make([]interface{}, 0)
+					continue
+				}
 			}
 		} else {
 			if v.OpType != "delete" {
-				if val != oldObj.Value {
-					err = mgodb.ModifyValueEdbCalculateDataValue(oldObj.EdbDataId, val)
+				if v.ModifyTime.After(oldObj.ModifyTime) {
+					err = mgodb.ModifyValueEdbCalculateDataValue(oldObj.EdbDataId, val, v.ModifyTime)
 					if err != nil {
 						err = fmt.Errorf("更新指标数据出错 error, %v", err)
 						return
 					}
 				}
-			} else {
-				// 删除数据
-				err = mgodb.DeleteEdbCalculateDataByEdbInfoIdAndDate(v.EdbCode, v.DataTime)
-				if err != nil {
-					err = fmt.Errorf("删除指标数据出错 error, %v", err)
-					return
-				}
+			} else if v.OpType == "delete" {
+				removeDateList = append(removeDateList, dataTime)
 			}
 		}
+	}
 	//遍历deleteMap,找出需要删除的日期
-	// {
-	// 	removeDateList := make([]time.Time, 0)
-	// 	for dateTime := range deleteMap {
-	// 		dateT, e := time.ParseInLocation(utils.FormatDate, dateTime, time.Local)
-	// 		if e != nil {
-	// 			err = fmt.Errorf("日期格式错误 error, %v", e)
-	// 			return
-	// 		}
-	// 		removeDateList = append(removeDateList, dateT)
-	// 	}
-	// 	removeNum := len(removeDateList)
-	// 	if removeNum > 0 {
-	// 		err = mgodb.DeleteEdbCalculateDataByEdbInfoIdAndDateList(edbCode, removeDateList)
-	// 		if err != nil {
-	// 			err = fmt.Errorf("删除多余日期失败,error, %v", err)
-	// 			return
-	// 		}
-	// 	}
+	{
+		removeNum := len(removeDateList)
+		if removeNum > 0 {
+			err = mgodb.DeleteEdbCalculateDataByEdbInfoIdAndDateList(edbInfoId, removeDateList)
+			if err != nil {
+				err = fmt.Errorf("删除多余日期失败,error, %v", err)
+				return
+			}
+		}
 	}
 	if len(addList) > 0 {
 		err = mgodb.InsertEdbCalculateDataBatch(addList)