|
@@ -142,11 +142,11 @@ func AddPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName string, ruleList
|
|
|
calculateMappingList = append(calculateMappingList, calculateMappingItem)
|
|
|
|
|
|
// 动态环差 计算列表
|
|
|
- calculateRuleList := make([]models.CalculateRule, 0)
|
|
|
+ calculateRuleMap := make(map[int]models.CalculateRule, 0)
|
|
|
|
|
|
// 预测指标配置
|
|
|
predictEdbConfList := make([]*models.PredictEdbConf, 0)
|
|
|
- for _, v := range ruleList {
|
|
|
+ for ruleIndex, v := range ruleList {
|
|
|
// 预测指标配置
|
|
|
ruleEndDate, tmpErr := time.ParseInLocation(utils.FormatDate, v.EndDate, time.Local)
|
|
|
if tmpErr != nil {
|
|
@@ -161,6 +161,7 @@ func AddPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName string, ruleList
|
|
|
err = errors.New(errMsg)
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
switch v.RuleType {
|
|
|
case 8: //N期段线性外推值
|
|
|
valInt, tmpErr := strconv.Atoi(v.Value)
|
|
@@ -271,8 +272,7 @@ func AddPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName string, ruleList
|
|
|
err = errors.New(errMsg)
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- calculateRuleList = append(calculateRuleList, models.CalculateRule{
|
|
|
+ calculateRuleMap[ruleIndex] = models.CalculateRule{
|
|
|
TrendsCalculateMappingList: trendsMappingList,
|
|
|
EdbInfoList: edbInfoList,
|
|
|
EdbInfoIdBytes: edbInfoIdBytes,
|
|
@@ -280,7 +280,85 @@ func AddPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName string, ruleList
|
|
|
RuleType: v.RuleType,
|
|
|
EndDate: v.EndDate,
|
|
|
EdbInfoIdArr: v.EdbInfoIdArr,
|
|
|
- })
|
|
|
+ }
|
|
|
+ case 14: //14:根据 一元线性拟合 规则获取预测数据
|
|
|
+ if v.Value == "" {
|
|
|
+ errMsg = "请填写一元线性拟合规则"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //关联的指标信息
|
|
|
+ edbInfoList := make([]*models.EdbInfo, 0)
|
|
|
+ // 动态环差规则 关系表
|
|
|
+ trendsMappingList := make([]*models.PredictEdbConfCalculateMapping, 0)
|
|
|
+
|
|
|
+ for k, tmpEdbInfoId := range v.EdbInfoIdArr {
|
|
|
+ fromEdbInfo, tmpErr := models.GetEdbInfoById(tmpEdbInfoId.EdbInfoId)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ if err.Error() == utils.ErrNoRow() {
|
|
|
+ errMsg = "指标 " + strconv.Itoa(tmpEdbInfoId.EdbInfoId) + " 不存在"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ errMsg = "获取指标失败:Err:" + err.Error()
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ edbInfoList = append(edbInfoList, fromEdbInfo)
|
|
|
+
|
|
|
+ //总的 预测指标与所有相关联指标的关系表(不仅仅该条规则)
|
|
|
+ {
|
|
|
+ if _, ok := fromEdbMap[tmpEdbInfoId.EdbInfoId]; !ok {
|
|
|
+ fromEdbMap[tmpEdbInfoId.EdbInfoId] = tmpEdbInfoId.EdbInfoId
|
|
|
+ tmpCalculateMappingItem := &models.EdbInfoCalculateMapping{
|
|
|
+ EdbInfoCalculateMappingId: 0,
|
|
|
+ EdbInfoId: 0,
|
|
|
+ Source: utils.DATA_SOURCE_CALCULATE,
|
|
|
+ SourceName: "指标运算",
|
|
|
+ EdbCode: "",
|
|
|
+ FromEdbInfoId: fromEdbInfo.EdbInfoId,
|
|
|
+ FromEdbCode: fromEdbInfo.EdbCode,
|
|
|
+ FromEdbName: fromEdbInfo.EdbName,
|
|
|
+ FromSource: fromEdbInfo.Source,
|
|
|
+ FromSourceName: fromEdbInfo.SourceName,
|
|
|
+ //FromTag: tmpEdbInfoId.FromTag,
|
|
|
+ Sort: k + 1,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ }
|
|
|
+ calculateMappingList = append(calculateMappingList, tmpCalculateMappingItem)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 动态环差规则 关系表
|
|
|
+ tmpPredictEdbConfCalculateMapping := &models.PredictEdbConfCalculateMapping{
|
|
|
+ //PredictEdbConfCalculateMappingId: 0,
|
|
|
+ EdbInfoId: 0,
|
|
|
+ ConfigId: 0,
|
|
|
+ FromEdbInfoId: fromEdbInfo.EdbInfoId,
|
|
|
+ FromEdbCode: fromEdbInfo.EdbCode,
|
|
|
+ FromEdbName: fromEdbInfo.EdbName,
|
|
|
+ FromSource: fromEdbInfo.Source,
|
|
|
+ FromSourceName: fromEdbInfo.SourceName,
|
|
|
+ FromTag: tmpEdbInfoId.FromTag,
|
|
|
+ Sort: k + 1,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ }
|
|
|
+ trendsMappingList = append(trendsMappingList, tmpPredictEdbConfCalculateMapping)
|
|
|
+ }
|
|
|
+
|
|
|
+ calculateRuleMap[ruleIndex] = models.CalculateRule{
|
|
|
+ TrendsCalculateMappingList: trendsMappingList,
|
|
|
+ EdbInfoList: edbInfoList,
|
|
|
+ //EdbInfoIdBytes: edbInfoIdBytes,
|
|
|
+ //Formula: formula,
|
|
|
+ RuleType: v.RuleType,
|
|
|
+ EndDate: v.EndDate,
|
|
|
+ EdbInfoIdArr: v.EdbInfoIdArr,
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
tmpPredictEdbConf := &models.PredictEdbConf{
|
|
@@ -298,7 +376,7 @@ func AddPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName string, ruleList
|
|
|
|
|
|
predictEdbConfList = append(predictEdbConfList, tmpPredictEdbConf)
|
|
|
}
|
|
|
- err = models.AddPredictEdb(edbInfo, calculateMappingList, predictEdbConfList, calculateRuleList)
|
|
|
+ err = models.AddPredictEdb(edbInfo, calculateMappingList, predictEdbConfList, calculateRuleMap)
|
|
|
|
|
|
return
|
|
|
}
|
|
@@ -429,11 +507,11 @@ func EditPredictEdbInfo(edbInfoId, classifyId int, edbName string, ruleList []mo
|
|
|
calculateMappingList = append(calculateMappingList, calculateMappingItem)
|
|
|
|
|
|
// 动态环差 计算列表
|
|
|
- calculateRuleList := make([]models.CalculateRule, 0)
|
|
|
+ calculateRuleMap := make(map[int]models.CalculateRule, 0)
|
|
|
|
|
|
// 预测指标配置
|
|
|
predictEdbConfList := make([]*models.PredictEdbConf, 0)
|
|
|
- for _, v := range ruleList {
|
|
|
+ for ruleIndex, v := range ruleList {
|
|
|
// 预测指标配置
|
|
|
ruleEndDate, tmpErr := time.ParseInLocation(utils.FormatDate, v.EndDate, time.Local)
|
|
|
if tmpErr != nil {
|
|
@@ -559,7 +637,7 @@ func EditPredictEdbInfo(edbInfoId, classifyId int, edbName string, ruleList []mo
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- calculateRuleList = append(calculateRuleList, models.CalculateRule{
|
|
|
+ calculateRuleMap[ruleIndex] = models.CalculateRule{
|
|
|
TrendsCalculateMappingList: trendsMappingList,
|
|
|
EdbInfoList: edbInfoList,
|
|
|
EdbInfoIdBytes: edbInfoIdBytes,
|
|
@@ -567,7 +645,85 @@ func EditPredictEdbInfo(edbInfoId, classifyId int, edbName string, ruleList []mo
|
|
|
RuleType: v.RuleType,
|
|
|
EndDate: v.EndDate,
|
|
|
EdbInfoIdArr: v.EdbInfoIdArr,
|
|
|
- })
|
|
|
+ }
|
|
|
+ case 14: //14:根据 一元线性拟合 规则获取预测数据
|
|
|
+ if v.Value == "" {
|
|
|
+ errMsg = "请填写一元线性拟合规则"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //关联的指标信息
|
|
|
+ edbInfoList := make([]*models.EdbInfo, 0)
|
|
|
+ // 动态环差规则 关系表
|
|
|
+ trendsMappingList := make([]*models.PredictEdbConfCalculateMapping, 0)
|
|
|
+
|
|
|
+ for k, tmpEdbInfoId := range v.EdbInfoIdArr {
|
|
|
+ fromEdbInfo, tmpErr := models.GetEdbInfoById(tmpEdbInfoId.EdbInfoId)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ if err.Error() == utils.ErrNoRow() {
|
|
|
+ errMsg = "指标 " + strconv.Itoa(tmpEdbInfoId.EdbInfoId) + " 不存在"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ errMsg = "获取指标失败:Err:" + err.Error()
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ edbInfoList = append(edbInfoList, fromEdbInfo)
|
|
|
+
|
|
|
+ //总的 预测指标与所有相关联指标的关系表(不仅仅该条规则)
|
|
|
+ {
|
|
|
+ if _, ok := fromEdbMap[tmpEdbInfoId.EdbInfoId]; !ok {
|
|
|
+ fromEdbMap[tmpEdbInfoId.EdbInfoId] = tmpEdbInfoId.EdbInfoId
|
|
|
+ tmpCalculateMappingItem := &models.EdbInfoCalculateMapping{
|
|
|
+ EdbInfoCalculateMappingId: 0,
|
|
|
+ EdbInfoId: 0,
|
|
|
+ Source: utils.DATA_SOURCE_CALCULATE,
|
|
|
+ SourceName: "指标运算",
|
|
|
+ EdbCode: "",
|
|
|
+ FromEdbInfoId: fromEdbInfo.EdbInfoId,
|
|
|
+ FromEdbCode: fromEdbInfo.EdbCode,
|
|
|
+ FromEdbName: fromEdbInfo.EdbName,
|
|
|
+ FromSource: fromEdbInfo.Source,
|
|
|
+ FromSourceName: fromEdbInfo.SourceName,
|
|
|
+ //FromTag: tmpEdbInfoId.FromTag,
|
|
|
+ Sort: k + 1,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ }
|
|
|
+ calculateMappingList = append(calculateMappingList, tmpCalculateMappingItem)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 动态环差规则 关系表
|
|
|
+ tmpPredictEdbConfCalculateMapping := &models.PredictEdbConfCalculateMapping{
|
|
|
+ //PredictEdbConfCalculateMappingId: 0,
|
|
|
+ EdbInfoId: 0,
|
|
|
+ ConfigId: 0,
|
|
|
+ FromEdbInfoId: fromEdbInfo.EdbInfoId,
|
|
|
+ FromEdbCode: fromEdbInfo.EdbCode,
|
|
|
+ FromEdbName: fromEdbInfo.EdbName,
|
|
|
+ FromSource: fromEdbInfo.Source,
|
|
|
+ FromSourceName: fromEdbInfo.SourceName,
|
|
|
+ FromTag: tmpEdbInfoId.FromTag,
|
|
|
+ Sort: k + 1,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ }
|
|
|
+ trendsMappingList = append(trendsMappingList, tmpPredictEdbConfCalculateMapping)
|
|
|
+ }
|
|
|
+
|
|
|
+ calculateRuleMap[ruleIndex] = models.CalculateRule{
|
|
|
+ TrendsCalculateMappingList: trendsMappingList,
|
|
|
+ EdbInfoList: edbInfoList,
|
|
|
+ //EdbInfoIdBytes: edbInfoIdBytes,
|
|
|
+ //Formula: formula,
|
|
|
+ RuleType: v.RuleType,
|
|
|
+ EndDate: v.EndDate,
|
|
|
+ EdbInfoIdArr: v.EdbInfoIdArr,
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
tmpPredictEdbConf := &models.PredictEdbConf{
|
|
@@ -586,7 +742,7 @@ func EditPredictEdbInfo(edbInfoId, classifyId int, edbName string, ruleList []mo
|
|
|
predictEdbConfList = append(predictEdbConfList, tmpPredictEdbConf)
|
|
|
}
|
|
|
|
|
|
- err = models.EditPredictEdb(edbInfo, updateEdbInfoCol, calculateMappingList, predictEdbConfList, calculateRuleList)
|
|
|
+ err = models.EditPredictEdb(edbInfo, updateEdbInfoCol, calculateMappingList, predictEdbConfList, calculateRuleMap)
|
|
|
|
|
|
return
|
|
|
}
|