|
@@ -395,6 +395,73 @@ func AddPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName, dataDateType st
|
|
|
EndDate: v.EndDate,
|
|
|
EdbInfoIdArr: v.EdbInfoIdArr,
|
|
|
}
|
|
|
+ case 17, 18:
|
|
|
+ //关联的指标信息
|
|
|
+ edbInfoList := make([]*models.EdbInfo, 0)
|
|
|
+ // 动态环差规则 关系表
|
|
|
+ trendsMappingList := make([]*models.PredictEdbConfCalculateMapping, 0)
|
|
|
+ edbInfoId, parseErr := strconv.Atoi(v.Value)
|
|
|
+ if parseErr != nil {
|
|
|
+ errMsg = "请填写正确的指标id"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ fromEdbInfo, tmpErr := models.GetEdbInfoById(edbInfoId)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ if err.Error() == utils.ErrNoRow() {
|
|
|
+ errMsg = "指标 " + strconv.Itoa(edbInfoId) + " 不存在"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ errMsg = "获取指标失败:Err:" + err.Error()
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ edbInfoList = append(edbInfoList, fromEdbInfo)
|
|
|
+
|
|
|
+ //总的 预测指标与所有相关联指标的关系表(不仅仅该条规则)
|
|
|
+ calculateMappingItem = &models.EdbInfoCalculateMapping{
|
|
|
+ EdbInfoCalculateMappingId: 0,
|
|
|
+ EdbInfoId: 0,
|
|
|
+ Source: edbInfo.Source,
|
|
|
+ SourceName: edbInfo.SourceName,
|
|
|
+ EdbCode: "",
|
|
|
+ FromEdbInfoId: fromEdbInfo.EdbInfoId,
|
|
|
+ FromEdbCode: fromEdbInfo.EdbCode,
|
|
|
+ FromEdbName: fromEdbInfo.EdbName,
|
|
|
+ FromSource: fromEdbInfo.Source,
|
|
|
+ FromSourceName: fromEdbInfo.SourceName,
|
|
|
+ //FromTag: tmpEdbInfoId.FromTag,
|
|
|
+ Sort: 1,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ }
|
|
|
+
|
|
|
+ calculateMappingList = append(calculateMappingList, calculateMappingItem)
|
|
|
+ // 动态同比同差规则 关系表
|
|
|
+ tmpPredictEdbConfCalculateMapping := &models.PredictEdbConfCalculateMapping{
|
|
|
+ //PredictEdbConfCalculateMappingId: 0,
|
|
|
+ EdbInfoId: 0,
|
|
|
+ ConfigId: 0,
|
|
|
+ FromEdbInfoId: fromEdbInfo.EdbInfoId,
|
|
|
+ FromEdbCode: fromEdbInfo.EdbCode,
|
|
|
+ FromEdbName: fromEdbInfo.EdbName,
|
|
|
+ FromSource: fromEdbInfo.Source,
|
|
|
+ FromSourceName: fromEdbInfo.SourceName,
|
|
|
+ Sort: 1,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ }
|
|
|
+ trendsMappingList = append(trendsMappingList, tmpPredictEdbConfCalculateMapping)
|
|
|
+ calculateRuleMap[ruleIndex] = models.CalculateRule{
|
|
|
+ TrendsCalculateMappingList: trendsMappingList,
|
|
|
+ EdbInfoList: edbInfoList,
|
|
|
+ RuleType: v.RuleType,
|
|
|
+ EndDate: v.EndDate,
|
|
|
+ EdbInfoIdArr: v.EdbInfoIdArr,
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
tmpPredictEdbConf := &models.PredictEdbConf{
|
|
@@ -416,10 +483,23 @@ func AddPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName, dataDateType st
|
|
|
|
|
|
predictEdbConfList = append(predictEdbConfList, tmpPredictEdbConf)
|
|
|
}
|
|
|
+ //calculateMappingList是映射关系,只需要记录一条,因此对list需要去重复
|
|
|
+ calculateMappingList = RemoveDuplicateCalculateMappingList(calculateMappingList)
|
|
|
err, errMsg = models.AddPredictEdb(edbInfo, calculateMappingList, predictEdbConfList, calculateRuleMap)
|
|
|
|
|
|
return
|
|
|
}
|
|
|
+func RemoveDuplicateCalculateMappingList(list []*models.EdbInfoCalculateMapping) (newList []*models.EdbInfoCalculateMapping) {
|
|
|
+ newList = make([]*models.EdbInfoCalculateMapping, 0)
|
|
|
+ tmpMap := make(map[int]bool)
|
|
|
+ for _, v := range list {
|
|
|
+ if _, ok := tmpMap[v.FromEdbInfoId]; !ok {
|
|
|
+ tmpMap[v.FromEdbInfoId] = true
|
|
|
+ newList = append(newList, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
|
|
|
// EditPredictEdbInfo 编辑预测指标
|
|
|
func EditPredictEdbInfo(edbInfoId, classifyId int, edbName, dataDateType string, endDateType int, ruleList []models.RuleConfig, minValue, maxValue float64, lang string) (edbInfo *models.EdbInfo, err error, errMsg string) {
|
|
@@ -801,7 +881,73 @@ func EditPredictEdbInfo(edbInfoId, classifyId int, edbName, dataDateType string,
|
|
|
EndDate: v.EndDate,
|
|
|
EdbInfoIdArr: v.EdbInfoIdArr,
|
|
|
}
|
|
|
+ case 17, 18:
|
|
|
+ //关联的指标信息
|
|
|
+ edbInfoList := make([]*models.EdbInfo, 0)
|
|
|
+ // 动态 关系表
|
|
|
+ trendsMappingList := make([]*models.PredictEdbConfCalculateMapping, 0)
|
|
|
+ relateEdbInfoId, parseErr := strconv.Atoi(v.Value)
|
|
|
+ if parseErr != nil {
|
|
|
+ errMsg = "请填写正确的指标id"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ fromEdbInfo, tmpErr := models.GetEdbInfoById(relateEdbInfoId)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ if err.Error() == utils.ErrNoRow() {
|
|
|
+ errMsg = "指标 " + strconv.Itoa(relateEdbInfoId) + " 不存在"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ errMsg = "获取指标失败:Err:" + err.Error()
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
+ edbInfoList = append(edbInfoList, fromEdbInfo)
|
|
|
+
|
|
|
+ //总的 预测指标与所有相关联指标的关系表(不仅仅该条规则)
|
|
|
+ fromEdbMap[relateEdbInfoId] = relateEdbInfoId
|
|
|
+ calculateMappingItem = &models.EdbInfoCalculateMapping{
|
|
|
+ EdbInfoCalculateMappingId: 0,
|
|
|
+ EdbInfoId: 0,
|
|
|
+ Source: edbInfo.Source,
|
|
|
+ SourceName: edbInfo.SourceName,
|
|
|
+ EdbCode: "",
|
|
|
+ FromEdbInfoId: fromEdbInfo.EdbInfoId,
|
|
|
+ FromEdbCode: fromEdbInfo.EdbCode,
|
|
|
+ FromEdbName: fromEdbInfo.EdbName,
|
|
|
+ FromSource: fromEdbInfo.Source,
|
|
|
+ FromSourceName: fromEdbInfo.SourceName,
|
|
|
+ //FromTag: tmpEdbInfoId.FromTag,
|
|
|
+ Sort: 1,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ }
|
|
|
+ calculateMappingList = append(calculateMappingList, calculateMappingItem)
|
|
|
+ // 动态同比同差规则 关系表
|
|
|
+ tmpPredictEdbConfCalculateMapping := &models.PredictEdbConfCalculateMapping{
|
|
|
+ //PredictEdbConfCalculateMappingId: 0,
|
|
|
+ EdbInfoId: 0,
|
|
|
+ ConfigId: 0,
|
|
|
+ FromEdbInfoId: fromEdbInfo.EdbInfoId,
|
|
|
+ FromEdbCode: fromEdbInfo.EdbCode,
|
|
|
+ FromEdbName: fromEdbInfo.EdbName,
|
|
|
+ FromSource: fromEdbInfo.Source,
|
|
|
+ FromSourceName: fromEdbInfo.SourceName,
|
|
|
+ Sort: 1,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ }
|
|
|
+ trendsMappingList = append(trendsMappingList, tmpPredictEdbConfCalculateMapping)
|
|
|
+ calculateRuleMap[ruleIndex] = models.CalculateRule{
|
|
|
+ TrendsCalculateMappingList: trendsMappingList,
|
|
|
+ EdbInfoList: edbInfoList,
|
|
|
+ RuleType: v.RuleType,
|
|
|
+ EndDate: v.EndDate,
|
|
|
+ EdbInfoIdArr: v.EdbInfoIdArr,
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
tmpPredictEdbConf := &models.PredictEdbConf{
|
|
@@ -823,7 +969,8 @@ func EditPredictEdbInfo(edbInfoId, classifyId int, edbName, dataDateType string,
|
|
|
|
|
|
predictEdbConfList = append(predictEdbConfList, tmpPredictEdbConf)
|
|
|
}
|
|
|
-
|
|
|
+ //编辑的时候也需要去重复calcuateMappingList
|
|
|
+ calculateMappingList = RemoveDuplicateCalculateMappingList(calculateMappingList)
|
|
|
err, errMsg = models.EditPredictEdb(edbInfo, updateEdbInfoCol, calculateMappingList, predictEdbConfList, calculateRuleMap)
|
|
|
|
|
|
return
|