|
@@ -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
|
|
|
}
|
|
|
|