|
@@ -20,7 +20,7 @@ type edbDataResidualAnalysis struct {
|
|
|
Value float64 `gorm:"column:value;type:double;comment:数据值;default:NULL;"`
|
|
|
CreateTime time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;default:NULL;" `
|
|
|
ModifyTime time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;default:NULL;"`
|
|
|
- DataTimestamp int64 `gorm:"column:data_timestamp;type:bigint(20);comment:数据日期时间戳;default:0;"`
|
|
|
+ DataTimeStamp int64 `gorm:"column:data_timestamp;type:bigint(20);comment:数据日期时间戳;default:0;"`
|
|
|
}
|
|
|
|
|
|
|
|
@@ -64,19 +64,31 @@ func RefreshAllCalculateResidualAnalysis(edbInfoId, source, subSource, formulaIn
|
|
|
_ = to.Commit()
|
|
|
}
|
|
|
}()*/
|
|
|
+
|
|
|
configMapping, err := GetConfigMappingListByConditionNotBase(edbInfoId)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- var edbInfoIdList []int64
|
|
|
- for _, v := range configMapping {
|
|
|
- edbInfoIdList = append(edbInfoIdList, v.EdbInfoId)
|
|
|
- }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
- sql := ` DELETE FROM edb_data_residual_analysis WHERE edb_info_id in (` + utils.GetOrmInReplace(len(edbInfoIdList)) + `) `
|
|
|
- err = to.Exec(sql, edbInfoIdList).Error
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ var params []interface{}
|
|
|
+ sql := ` DELETE FROM edb_data_residual_analysis WHERE edb_info_id = ?`
|
|
|
+ params = append(params, edbInfoId)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ err = to.Exec(sql, params...).Error
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
@@ -90,13 +102,23 @@ func RefreshAllCalculateResidualAnalysis(edbInfoId, source, subSource, formulaIn
|
|
|
|
|
|
func refreshAllCalculateResidualAnalysis(edbInfoId, source, subSource, formulaInt, moveType int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, moveFrequency string, configMapping []CalculateResidualAnalysisConfigMapping) (err error) {
|
|
|
fmt.Println("refreshAllCalculateResidualAnalysis startDate:", startDate)
|
|
|
-
|
|
|
+ configMap := make(map[int64]CalculateResidualAnalysisConfigMapping, len(configMapping))
|
|
|
+ for _, v := range configMapping {
|
|
|
+ configMap[v.EdbInfoId] = v
|
|
|
+ }
|
|
|
calculateMappingList, err := GetCalculateMappingListByEdbInfoId(edbInfoId)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- edbInfoIdA := calculateMappingList[0].FromEdbInfoId
|
|
|
- edbInfoIdB := calculateMappingList[1].FromEdbInfoId
|
|
|
+
|
|
|
+ var edbInfoIdA, edbInfoIdB int
|
|
|
+ if configMap[int64(calculateMappingList[0].FromEdbInfoId)].IndexType == 3 {
|
|
|
+ edbInfoIdA = calculateMappingList[0].FromEdbInfoId
|
|
|
+ edbInfoIdB = calculateMappingList[1].FromEdbInfoId
|
|
|
+ } else {
|
|
|
+ edbInfoIdA = calculateMappingList[1].FromEdbInfoId
|
|
|
+ edbInfoIdB = calculateMappingList[0].FromEdbInfoId
|
|
|
+ }
|
|
|
|
|
|
mappingList, err := GetEdbInfoListByIds([]int{edbInfoIdA, edbInfoIdB})
|
|
|
if err != nil {
|
|
@@ -134,10 +156,10 @@ func refreshAllCalculateResidualAnalysis(edbInfoId, source, subSource, formulaIn
|
|
|
|
|
|
|
|
|
switch config.DateType {
|
|
|
- case 0:
|
|
|
+ case -1:
|
|
|
startDate = config.StartDate
|
|
|
endDate = config.EndDate
|
|
|
- case 1:
|
|
|
+ case 0:
|
|
|
startDate = config.StartDate
|
|
|
endDate = ""
|
|
|
default:
|
|
@@ -168,54 +190,54 @@ func refreshAllCalculateResidualAnalysis(edbInfoId, source, subSource, formulaIn
|
|
|
residualEdbList, _, err := fillResidualChartInfo(config, fromEdbInfo, edbInfoMappingA, edbInfoMappingB, mappingEdbList)
|
|
|
|
|
|
|
|
|
- for _, mapping := range configMapping {
|
|
|
- var edbDataResidualAnalysisList []edbDataResidualAnalysis
|
|
|
- if mapping.IndexType == 1 {
|
|
|
- edbInfo, err := GetEdbInfoById(int(mapping.EdbInfoId))
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
+
|
|
|
+ mapping := configMap[int64(edbInfoId)]
|
|
|
+ var edbDataResidualAnalysisList []edbDataResidualAnalysis
|
|
|
+ if mapping.IndexType == 1 {
|
|
|
+ edbInfo, err := GetEdbInfoById(int(mapping.EdbInfoId))
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
|
|
|
- for _, edbData := range mappingEdbList[1].DataList {
|
|
|
- value, _ := strconv.ParseFloat(edbData.Value, 64)
|
|
|
- edbDataResidualAnalysisList = append(edbDataResidualAnalysisList, edbDataResidualAnalysis{
|
|
|
- EdbInfoId: int(mapping.EdbInfoId),
|
|
|
- EdbCode: edbInfo.EdbCode,
|
|
|
- DataTime: edbData.DataTime,
|
|
|
- Value: value,
|
|
|
- CreateTime: time.Now(),
|
|
|
- ModifyTime: time.Now(),
|
|
|
- DataTimestamp: edbData.DataTimestamp,
|
|
|
- })
|
|
|
- }
|
|
|
+ for _, edbData := range mappingEdbList[0].DataList {
|
|
|
+ value, _ := strconv.ParseFloat(edbData.Value, 64)
|
|
|
+ edbDataResidualAnalysisList = append(edbDataResidualAnalysisList, edbDataResidualAnalysis{
|
|
|
+ EdbInfoId: int(mapping.EdbInfoId),
|
|
|
+ EdbCode: edbInfo.EdbCode,
|
|
|
+ DataTime: edbData.DataTime,
|
|
|
+ Value: value,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ DataTimeStamp: edbData.DataTimestamp,
|
|
|
+ })
|
|
|
+ }
|
|
|
|
|
|
- err = AddResidualAnalysisData(edbDataResidualAnalysisList)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- } else if mapping.IndexType == 2 {
|
|
|
- edbInfo, err := GetEdbInfoById(int(mapping.EdbInfoId))
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
+ err = AddResidualAnalysisData(edbDataResidualAnalysisList)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ } else if mapping.IndexType == 2 {
|
|
|
+ edbInfo, err := GetEdbInfoById(int(mapping.EdbInfoId))
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
|
|
|
- for _, edbData := range residualEdbList[1].DataList {
|
|
|
- value, _ := strconv.ParseFloat(edbData.Value, 64)
|
|
|
- edbDataResidualAnalysisList = append(edbDataResidualAnalysisList, edbDataResidualAnalysis{
|
|
|
- EdbInfoId: int(mapping.EdbInfoId),
|
|
|
- EdbCode: edbInfo.EdbCode,
|
|
|
- DataTime: edbData.DataTime,
|
|
|
- Value: value,
|
|
|
- CreateTime: time.Now(),
|
|
|
- ModifyTime: time.Now(),
|
|
|
- DataTimestamp: edbData.DataTimestamp,
|
|
|
- })
|
|
|
- }
|
|
|
+ for _, edbData := range residualEdbList[0].DataList {
|
|
|
+ value, _ := strconv.ParseFloat(edbData.Value, 64)
|
|
|
+ edbDataResidualAnalysisList = append(edbDataResidualAnalysisList, edbDataResidualAnalysis{
|
|
|
+ EdbInfoId: int(mapping.EdbInfoId),
|
|
|
+ EdbCode: edbInfo.EdbCode,
|
|
|
+ DataTime: edbData.DataTime,
|
|
|
+ Value: value,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ DataTimeStamp: edbData.DataTimestamp,
|
|
|
+ })
|
|
|
+ }
|
|
|
|
|
|
- err = AddResidualAnalysisData(edbDataResidualAnalysisList)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
+ err = AddResidualAnalysisData(edbDataResidualAnalysisList)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -325,10 +347,20 @@ func fillResidualChartInfo(config ResidualAnalysisConfig, req *EdbInfo, edbInfoM
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return mappingEdb, R2, nil
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+func reverse(slice []EdbInfoList) {
|
|
|
+ left, right := 0, len(slice)-1
|
|
|
+ for left < right {
|
|
|
+
|
|
|
+ slice[left], slice[right] = slice[right], slice[left]
|
|
|
+ left++
|
|
|
+ right--
|
|
|
+ }
|
|
|
+}
|
|
|
func fillMappingChartInfo(config ResidualAnalysisConfig, req *EdbInfo, edbInfoMappingA *EdbInfoList, edbInfoMappingB *EdbInfoList, originalEdbList []EdbInfoList, indexADataMap map[string]*EdbData, startDate string, endDate string, fullADataList []*EdbDataList, fullBDataList []*EdbDataList) ([]EdbInfoList, float64, float64, float64, error) {
|
|
|
|
|
|
|
|
@@ -587,7 +619,7 @@ func fillOriginalChart(config ResidualAnalysisConfig, req *EdbInfo, mappingList
|
|
|
|
|
|
if v.EdbInfoId == edbInfoMappingB.EdbInfoId {
|
|
|
|
|
|
- if config.IndexType == 1 {
|
|
|
+ if config.IndexType == 2 {
|
|
|
if config.LeadValue < 0 {
|
|
|
return nil, nil, nil, fmt.Errorf("领先值不能小于0")
|
|
|
} else if config.LeadValue > 0 {
|