Browse Source

fix:指标保存

zqbao 5 months ago
parent
commit
85637174a0
2 changed files with 394 additions and 121 deletions
  1. 28 0
      models/data_manage/stl/edb_data_calculate_stl.go
  2. 366 121
      services/data/stl/stl.go

+ 28 - 0
models/data_manage/stl/edb_data_calculate_stl.go

@@ -18,6 +18,34 @@ type EdbDataCalculateStl struct {
 	DataTimestamp int64     `description:"数据时间戳"`
 }
 
+func GetEdbDataCalculateStlByEdbCode(edbCode string) (items []*EdbDataCalculateStl, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT * FROM edb_data_calculate_stl WHERE edb_code =? ORDER BY data_time`
+	_, err = o.Raw(sql, edbCode).QueryRows(&items)
+	return
+}
+
+func DeleteAndInsertEdbDataCalculateStl(edbCode string, dataList []*EdbDataCalculateStl) (err error) {
+	tx, err := orm.NewOrmUsingDB("data").Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			tx.Rollback()
+		} else {
+			tx.Commit()
+		}
+	}()
+	sql := `DELETE FROM edb_data_calculate_stl WHERE edb_code =?`
+	_, err = tx.Raw(sql, edbCode).Exec()
+	if err != nil {
+		return
+	}
+	_, err = tx.InsertMulti(utils.MultiAddNum, dataList)
+	return
+}
+
 func (m *EdbDataCalculateStl) GetMaxId() (maxId int, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT max(edb_data_id) id FROM edb_data_calculate_stl limit 1`

+ 366 - 121
services/data/stl/stl.go

@@ -727,6 +727,11 @@ func SaveStlEdbInfo(req *request.SaveStlEdbInfoReq, adminId int, adminRealName,
 		msg = "获取失败"
 		return
 	}
+	var stlConfig request.StlConfigReq
+	if err = json.Unmarshal([]byte(conf.Config), &stlConfig); err != nil {
+		msg = "获取失败"
+		return
+	}
 	var edbInfoData []*response.EdbData
 	switch req.StlEdbType {
 	case 1:
@@ -788,154 +793,394 @@ func SaveStlEdbInfo(req *request.SaveStlEdbInfoReq, adminId int, adminRealName,
 		err = fmt.Errorf("未知的计算类型")
 		return
 	}
+	var opEdbInfoId int
+	if req.EdbInfoId > 0 {
+		opEdbInfoId = req.EdbInfoId
+		// 检查指标名称是否存在
+		var condition string
+		var pars []interface{}
 
-	indexObj := new(stl.EdbDataCalculateStl)
-	edbCode, err := utils.GenerateEdbCode(1, "stl")
-	if err != nil {
-		msg = "生成指标代码失败"
-		return
-	}
+		switch lang {
+		case utils.EnLangVersion:
+			condition += " AND edb_name_en = ? "
+		default:
+			condition += " AND edb_name=? "
+		}
+		pars = append(pars, req.EdbName)
 
-	//判断指标名称是否存在
-	ok, err := CheckDulplicateEdbInfoName(req.EdbName, lang)
-	if err != nil {
-		msg = "保存失败"
-		return
-	}
-	if ok {
-		msg = "指标名称已存在"
-		err = fmt.Errorf("指标名称已存在")
-		return
+		existEdbInfo, er := data_manage.GetEdbInfoByCondition(condition, pars)
+		if er != nil && er.Error() != utils.ErrNoRow() {
+			msg = "获取失败"
+			return
+		}
+		switch lang {
+		case utils.EnLangVersion:
+			if existEdbInfo != nil && existEdbInfo.EdbNameEn == req.EdbName && req.EdbInfoId != existEdbInfo.EdbInfoId {
+				msg = "指标名称已存在"
+				err = fmt.Errorf("指标名称已存在")
+				return
+			}
+		default:
+			if existEdbInfo != nil && existEdbInfo.EdbName == req.EdbName && req.EdbInfoId != existEdbInfo.EdbInfoId {
+				msg = "指标名称已存在"
+				err = fmt.Errorf("指标名称已存在")
+				return
+			}
+		}
+
+		// 更新指标
+		edbInfo, er := data_manage.GetEdbInfoById(req.EdbInfoId)
+		if er != nil {
+			if er.Error() == utils.ErrNoRow() {
+				msg = "未找到指标,请刷新后重试"
+				err = er
+				return
+			}
+			msg = "获取失败"
+			err = er
+			return
+		}
+		var updateCols []string
+		switch lang {
+		case utils.EnLangVersion:
+			if edbInfo.EdbName != req.EdbName {
+				edbInfo.EdbNameEn = req.EdbName
+				updateCols = append(updateCols, "edb_name_en")
+			}
+		default:
+			if edbInfo.EdbName != req.EdbName {
+				edbInfo.EdbName = req.EdbName
+				updateCols = append(updateCols, "edb_name")
+			}
+		}
+		if edbInfo.ClassifyId != req.ClassifyId {
+			// 更新分类
+			maxSort, er := data.GetEdbClassifyMaxSort(req.ClassifyId, 0)
+			if er != nil {
+				msg = "获取失败"
+				err = fmt.Errorf("获取最大排序失败,Err:" + er.Error())
+				return
+			}
+			edbInfo.ClassifyId = req.ClassifyId
+			edbInfo.Sort = maxSort + 1
+			updateCols = append(updateCols, "classify_id", "sort")
+		}
+		if edbInfo.Frequency != req.Frequency {
+			edbInfo.Frequency = req.Frequency
+			updateCols = append(updateCols, "frequency")
+		}
+		if edbInfo.Unit != req.Unit {
+			edbInfo.Unit = req.Unit
+			updateCols = append(updateCols, "unit")
+		}
+		edbInfo.CalculateFormula = conf.Config
+		updateCols = append(updateCols, "calculate_formula")
+		if len(updateCols) > 0 {
+			edbInfo.ModifyTime = time.Now()
+			updateCols = append(updateCols, "modify_time")
+			err = edbInfo.Update(updateCols)
+			if err != nil {
+				msg = "保存失败"
+				return
+			}
+		}
+
+		var dataList []*stl.EdbDataCalculateStl
+		for _, v := range edbInfoData {
+			dataTime, _ := time.Parse(utils.FormatDate, v.DataTime)
+			dataList = append(dataList, &stl.EdbDataCalculateStl{
+				EdbInfoId:     edbInfo.EdbInfoId,
+				EdbCode:       edbInfo.EdbCode,
+				DataTime:      dataTime,
+				Value:         v.Value,
+				CreateTime:    time.Now(),
+				ModifyTime:    time.Now(),
+				DataTimestamp: dataTime.UnixMilli(),
+			})
+		}
+		err = stl.DeleteAndInsertEdbDataCalculateStl(edbInfo.EdbCode, dataList)
+		if err != nil {
+			msg = "保存失败"
+			return
+		}
+
+		data_manage.ModifyEdbInfoDataStatus(int64(edbInfo.EdbInfoId), edbInfo.Source, edbInfo.SubSource, edbInfo.EdbCode)
+
+		maxAndMinItem, _ := data_manage.GetEdbInfoMaxAndMinInfo(edbInfo.Source, edbInfo.SubSource, edbInfo.EdbCode)
+		if maxAndMinItem != nil {
+			err = data_manage.ModifyEdbInfoMaxAndMinInfo(edbInfo.EdbInfoId, maxAndMinItem)
+			if err != nil {
+				msg = "保存失败"
+				err = errors.New("保存失败,Err:" + err.Error())
+				return
+			}
+		}
+	} else {
+		indexObj := new(stl.EdbDataCalculateStl)
+		edbCode, er := utils.GenerateEdbCode(1, "stl")
+		if er != nil {
+			msg = "生成指标代码失败"
+			err = fmt.Errorf("生成指标代码失败,Err:" + er.Error())
+			return
+		}
+
+		//判断指标名称是否存在
+		ok, er := CheckDulplicateEdbInfoName(req.EdbName, lang)
+		if er != nil {
+			msg = "保存失败"
+			err = fmt.Errorf("检查指标名称是否存在失败,Err:" + er.Error())
+			return
+		}
+		if ok {
+			msg = "指标名称已存在"
+			err = fmt.Errorf("指标名称已存在")
+			return
+		}
+
+		source := utils.DATA_SOURCE_CALCULATE_STL
+		subSource := utils.DATA_SUB_SOURCE_EDB
+		edbInfo := new(data_manage.EdbInfo)
+		//获取该层级下最大的排序数
+		maxSort, er := data.GetEdbClassifyMaxSort(req.ClassifyId, 0)
+		if er != nil {
+			msg = "获取失败"
+			err = fmt.Errorf("获取最大排序失败,Err:" + er.Error())
+			return
+		}
+
+		edbInfo.EdbCode = edbCode
+		edbInfo.EdbName = req.EdbName
+		edbInfo.EdbNameEn = req.EdbName
+		edbInfo.EdbNameSource = req.EdbName
+		edbInfo.Frequency = req.Frequency
+		edbInfo.Unit = req.Unit
+		edbInfo.UnitEn = req.Unit
+		edbInfo.CalculateFormula = conf.Config
+		edbInfo.ClassifyId = req.ClassifyId
+		edbInfo.SysUserId = adminId
+		edbInfo.SysUserRealName = adminRealName
+		edbInfo.CreateTime = time.Now()
+		edbInfo.ModifyTime = time.Now()
+		edbInfo.Sort = maxSort + 1
+		edbInfo.DataDateType = `交易日`
+		timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
+		edbInfo.UniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
+		itemVal, er := data_manage.GetEdbInfoMaxAndMinInfo(source, subSource, edbCode)
+		if itemVal != nil && er == nil {
+			edbInfo.MaxValue = itemVal.MaxValue
+			edbInfo.MinValue = itemVal.MinValue
+		}
+		edbInfo.EdbType = 2
+		edbInfo.Source = source
+		edbInfo.SubSource = subSource
+		extra, _ := json.Marshal(req)
+		edbInfo.Extra = string(extra)
+		edbInfoId, er := data_manage.AddEdbInfo(edbInfo)
+		if er != nil {
+			msg = "保存失败"
+			err = errors.New("保存失败,Err:" + er.Error())
+			return
+		}
+		edbInfo.EdbInfoId = int(edbInfoId)
+
+		var dataList []*stl.EdbDataCalculateStl
+		for _, v := range edbInfoData {
+			dataTime, _ := time.Parse(utils.FormatDate, v.DataTime)
+			dataList = append(dataList, &stl.EdbDataCalculateStl{
+				EdbInfoId:     int(edbInfoId),
+				EdbCode:       edbCode,
+				DataTime:      dataTime,
+				Value:         v.Value,
+				CreateTime:    time.Now(),
+				ModifyTime:    time.Now(),
+				DataTimestamp: dataTime.UnixMilli(),
+			})
+		}
+		err = indexObj.BatchInsert(dataList)
+		if err != nil {
+			msg = "保存失败"
+			return
+		}
+
+		//保存数据
+		data_manage.ModifyEdbInfoDataStatus(edbInfoId, source, subSource, edbCode)
+
+		maxAndMinItem, _ := data_manage.GetEdbInfoMaxAndMinInfo(source, subSource, edbCode)
+		if maxAndMinItem != nil {
+			err = data_manage.ModifyEdbInfoMaxAndMinInfo(int(edbInfoId), maxAndMinItem)
+			if err != nil {
+				msg = "保存失败"
+				err = errors.New("保存失败,Err:" + err.Error())
+				return
+			}
+		}
+		// 保存配置映射
+		{
+			stlMapping := new(stl.CalculateStlConfigMapping)
+			stlMapping.EdbInfoId = int(edbInfoId)
+			stlMapping.CalculateStlConfigId = req.CalculateStlConfigId
+			stlMapping.StlEdbType = req.StlEdbType
+			stlMapping.CreateTime = time.Now()
+			stlMapping.ModifyTime = time.Now()
+			_, err = stlMapping.Insert()
+			if err != nil {
+				msg = "保存失败"
+				err = errors.New("保存配置映射失败,Err:" + err.Error())
+				return
+			}
+		}
+		// 保存溯源信息
+		{
+			fromEdbInfo, er := data_manage.GetEdbInfoById(stlConfig.EdbInfoId)
+			if er != nil {
+				if er.Error() == utils.ErrNoRow() {
+					msg = "未找到指标,请刷新后重试"
+					err = fmt.Errorf("指标不存在,err:" + er.Error())
+					return
+				}
+				msg = "获取失败"
+				err = er
+				return
+			}
+
+			edbCalculateMappingInfo := new(data_manage.EdbInfoCalculateMapping)
+			edbCalculateMappingInfo.EdbInfoId = int(edbInfoId)
+			edbCalculateMappingInfo.Source = source
+			edbCalculateMappingInfo.SourceName = "STL趋势分解"
+			edbCalculateMappingInfo.EdbCode = edbCode
+			edbCalculateMappingInfo.FromEdbInfoId = fromEdbInfo.EdbInfoId
+			edbCalculateMappingInfo.FromEdbCode = fromEdbInfo.EdbCode
+			edbCalculateMappingInfo.FromEdbName = fromEdbInfo.EdbName
+			edbCalculateMappingInfo.FromSource = fromEdbInfo.Source
+			edbCalculateMappingInfo.FromSourceName = fromEdbInfo.SourceName
+			edbCalculateMappingInfo.CreateTime = time.Now()
+			edbCalculateMappingInfo.ModifyTime = time.Now()
+			err = edbCalculateMappingInfo.Insert()
+			if err != nil {
+				msg = "保存失败"
+				err = errors.New("保存溯源信息失败,Err:" + err.Error())
+				return
+			}
+		}
+
+		//添加es
+		data.AddOrEditEdbInfoToEs(int(edbInfoId))
+		opEdbInfoId = int(edbInfoId)
 	}
 
-	source := utils.DATA_SOURCE_CALCULATE_STL
-	subSource := utils.DATA_SUB_SOURCE_EDB
-	edbInfo := new(data_manage.EdbInfo)
-	//获取该层级下最大的排序数
-	maxSort, err := data.GetEdbClassifyMaxSort(req.ClassifyId, 0)
+	// 更新关联的同配置的指标
+	err = SyncUpdateRelationEdbInfo(req.CalculateStlConfigId, opEdbInfoId)
 	if err != nil {
-		msg = "获取失败"
-		err = fmt.Errorf("获取最大排序失败,Err:" + err.Error())
+		msg = "更新关联的同配置的指标失败"
 		return
 	}
+	return
+}
 
-	edbInfo.EdbCode = edbCode
-	edbInfo.EdbName = req.EdbName
-	edbInfo.EdbNameEn = req.EdbName
-	edbInfo.EdbNameSource = req.EdbName
-	edbInfo.Frequency = req.Frequency
-	edbInfo.Unit = req.Unit
-	edbInfo.UnitEn = req.Unit
-	edbInfo.CalculateFormula = conf.Config
-	edbInfo.ClassifyId = req.ClassifyId
-	edbInfo.SysUserId = adminId
-	edbInfo.SysUserRealName = adminRealName
-	edbInfo.CreateTime = time.Now()
-	edbInfo.ModifyTime = time.Now()
-	edbInfo.Sort = maxSort + 1
-	edbInfo.DataDateType = `交易日`
-	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
-	edbInfo.UniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
-	itemVal, err := data_manage.GetEdbInfoMaxAndMinInfo(source, subSource, edbCode)
-	if itemVal != nil && err == nil {
-		edbInfo.MaxValue = itemVal.MaxValue
-		edbInfo.MinValue = itemVal.MinValue
-	}
-	edbInfo.EdbType = 2
-	edbInfo.Source = source
-	edbInfo.SubSource = subSource
-	extra, _ := json.Marshal(req)
-	edbInfo.Extra = string(extra)
-	edbInfoId, err := data_manage.AddEdbInfo(edbInfo)
+func SyncUpdateRelationEdbInfo(configId int, excludeId int) (err error) {
+	mappingList, err := stl.GetCalculateStlConfigMappingByConfigId(configId)
 	if err != nil {
-		msg = "保存失败"
-		err = errors.New("保存失败,Err:" + err.Error())
 		return
 	}
-	edbInfo.EdbInfoId = int(edbInfoId)
-
-	var dataList []*stl.EdbDataCalculateStl
-	for _, v := range edbInfoData {
-		dataTime, _ := time.Parse(utils.FormatDate, v.DataTime)
-		dataList = append(dataList, &stl.EdbDataCalculateStl{
-			EdbInfoId:     int(edbInfoId),
-			EdbCode:       edbCode,
-			DataTime:      dataTime,
-			Value:         v.Value,
-			CreateTime:    time.Now(),
-			ModifyTime:    time.Now(),
-			DataTimestamp: dataTime.UnixMilli(),
-		})
-	}
-	err = indexObj.BatchInsert(dataList)
+	conf, err := stl.GetCalculateStlConfigById(configId)
 	if err != nil {
-		msg = "保存失败"
 		return
 	}
+	for _, v := range mappingList {
+		edbInfo, er := data_manage.GetEdbInfoById(v.EdbInfoId)
+		if er != nil {
+			continue
+		}
+		if v.EdbInfoId == excludeId {
+			continue
+		}
+		var edbInfoData []*response.EdbData
+		switch v.StlEdbType {
+		case 1:
+			// 趋势指标
+			if ok := utils.Rc.IsExist(EDB_DATA_CALCULATE_STL_TREND_CACHE + strconv.Itoa(v.CalculateStlConfigId)); !ok {
+				utils.FileLog.Info(EDB_DATA_CALCULATE_STL_TREND_CACHE + strconv.Itoa(v.CalculateStlConfigId) + "指标数据不存在")
+				continue
+			}
+			trendData, er := utils.Rc.RedisBytes(EDB_DATA_CALCULATE_STL_TREND_CACHE + strconv.Itoa(v.CalculateStlConfigId))
+			if er != nil {
+				utils.FileLog.Info(EDB_DATA_CALCULATE_STL_TREND_CACHE + strconv.Itoa(v.CalculateStlConfigId) + "redis获取失败,err:" + er.Error())
+				continue
+			}
+			if er := json.Unmarshal(trendData, &edbInfoData); er != nil {
+				utils.FileLog.Info("redis获取解析, body:%s,err:%s", string(trendData), er.Error())
+				continue
+			}
+		case 2:
+			// 季节性指标
+			if ok := utils.Rc.IsExist(EDB_DATA_CALCULATE_STL_SEASONAL_CACHE + strconv.Itoa(v.CalculateStlConfigId)); !ok {
+				utils.FileLog.Info(EDB_DATA_CALCULATE_STL_SEASONAL_CACHE + strconv.Itoa(v.CalculateStlConfigId) + "指标数据不存在")
+				continue
+			}
+			seasonalData, er := utils.Rc.RedisBytes(EDB_DATA_CALCULATE_STL_SEASONAL_CACHE + strconv.Itoa(v.CalculateStlConfigId))
+			if er != nil {
+				utils.FileLog.Info(EDB_DATA_CALCULATE_STL_SEASONAL_CACHE + strconv.Itoa(v.CalculateStlConfigId) + "redis获取失败,err:" + er.Error())
+				continue
+			}
+			if er := json.Unmarshal(seasonalData, &edbInfoData); er != nil {
+				utils.FileLog.Info("redis数据解析失败, body:%s,err:%s", string(seasonalData), er.Error())
+				continue
+			}
+		case 3:
+			// 残差性指标
+			if ok := utils.Rc.IsExist(EDB_DATA_CALCULATE_STL_RESIDUAL_CACHE + strconv.Itoa(v.CalculateStlConfigId)); !ok {
+				utils.FileLog.Info(EDB_DATA_CALCULATE_STL_RESIDUAL_CACHE + strconv.Itoa(v.CalculateStlConfigId) + "指标数据不存在")
+				continue
+			}
+			residualData, er := utils.Rc.RedisBytes(EDB_DATA_CALCULATE_STL_RESIDUAL_CACHE + strconv.Itoa(v.CalculateStlConfigId))
+			if er != nil {
+				utils.FileLog.Info(EDB_DATA_CALCULATE_STL_RESIDUAL_CACHE + strconv.Itoa(v.CalculateStlConfigId) + "redis获取失败,err:" + er.Error())
+				continue
+			}
+			if er := json.Unmarshal(residualData, &edbInfoData); er != nil {
+				utils.FileLog.Info("redis数据解析失败, body:%s,err:%s", string(residualData), er.Error())
+				continue
+			}
+		default:
+			utils.FileLog.Info("未知的stlEdbType类型, mapping:%v", v)
+			continue
+		}
 
-	//保存数据
-	data_manage.ModifyEdbInfoDataStatus(edbInfoId, source, subSource, edbCode)
-
-	maxAndMinItem, _ := data_manage.GetEdbInfoMaxAndMinInfo(source, subSource, edbCode)
-	if maxAndMinItem != nil {
-		err = data_manage.ModifyEdbInfoMaxAndMinInfo(int(edbInfoId), maxAndMinItem)
-		if err != nil {
-			msg = "保存失败"
-			err = errors.New("保存失败,Err:" + err.Error())
-			return
+		var dataList []*stl.EdbDataCalculateStl
+		for _, v := range edbInfoData {
+			dataTime, _ := time.Parse(utils.FormatDate, v.DataTime)
+			dataList = append(dataList, &stl.EdbDataCalculateStl{
+				EdbInfoId:     edbInfo.EdbInfoId,
+				EdbCode:       edbInfo.EdbCode,
+				DataTime:      dataTime,
+				Value:         v.Value,
+				CreateTime:    time.Now(),
+				ModifyTime:    time.Now(),
+				DataTimestamp: dataTime.UnixMilli(),
+			})
 		}
-	}
-	// 保存配置映射
-	{
-		stlMapping := new(stl.CalculateStlConfigMapping)
-		stlMapping.EdbInfoId = int(edbInfoId)
-		stlMapping.CalculateStlConfigId = req.CalculateStlConfigId
-		stlMapping.StlEdbType = req.StlEdbType
-		stlMapping.CreateTime = time.Now()
-		stlMapping.ModifyTime = time.Now()
-		_, err = stlMapping.Insert()
+		err = stl.DeleteAndInsertEdbDataCalculateStl(edbInfo.EdbCode, dataList)
 		if err != nil {
-			msg = "保存失败"
-			err = errors.New("保存配置映射失败,Err:" + err.Error())
 			return
 		}
-	}
-	// 保存溯源信息
-	{
-		fromEdbInfo, er := data_manage.GetEdbInfoById(req.EdbInfoId)
-		if er != nil {
-			if er.Error() == utils.ErrNoRow() {
-				msg = "未找到指标,请刷新后重试"
-				err = fmt.Errorf("指标不存在,err:" + er.Error())
+
+		data_manage.ModifyEdbInfoDataStatus(int64(edbInfo.EdbInfoId), edbInfo.Source, edbInfo.SubSource, edbInfo.EdbCode)
+
+		maxAndMinItem, _ := data_manage.GetEdbInfoMaxAndMinInfo(edbInfo.Source, edbInfo.SubSource, edbInfo.EdbCode)
+		if maxAndMinItem != nil {
+			err = data_manage.ModifyEdbInfoMaxAndMinInfo(edbInfo.EdbInfoId, maxAndMinItem)
+			if err != nil {
 				return
 			}
-			msg = "获取失败"
-			err = er
-			return
 		}
 
-		edbCalculateMappingInfo := new(data_manage.EdbInfoCalculateMapping)
-		edbCalculateMappingInfo.EdbInfoId = int(edbInfoId)
-		edbCalculateMappingInfo.Source = source
-		edbCalculateMappingInfo.SourceName = "STL趋势分解"
-		edbCalculateMappingInfo.EdbCode = edbCode
-		edbCalculateMappingInfo.FromEdbInfoId = req.EdbInfoId
-		edbCalculateMappingInfo.FromEdbCode = fromEdbInfo.EdbCode
-		edbCalculateMappingInfo.FromEdbName = fromEdbInfo.EdbName
-		edbCalculateMappingInfo.FromSource = fromEdbInfo.Source
-		edbCalculateMappingInfo.FromSourceName = fromEdbInfo.SourceName
-		edbCalculateMappingInfo.CreateTime = time.Now()
-		edbCalculateMappingInfo.ModifyTime = time.Now()
-		err = edbCalculateMappingInfo.Insert()
+		edbInfo.CalculateFormula = conf.Config
+		edbInfo.ModifyTime = time.Now()
+		err = edbInfo.Update([]string{"calculate_formula", "modify_time"})
 		if err != nil {
-			msg = "保存失败"
-			err = errors.New("保存溯源信息失败,Err:" + err.Error())
 			return
 		}
 	}
-
-	//添加es
-	data.AddOrEditEdbInfoToEs(int(edbInfoId))
 	return
 }