|
@@ -426,7 +426,6 @@ type RollingCorrelationChartDataResp struct {
|
|
|
DataList []data_manage.EdbDataList
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
// ChartInfoRefresh 图表刷新
|
|
|
func ChartInfoRefresh(chartInfoId int, uniqueCode string) (isAsync bool, err error) {
|
|
|
var errMsg string
|
|
@@ -437,127 +436,83 @@ func ChartInfoRefresh(chartInfoId int, uniqueCode string) (isAsync bool, err err
|
|
|
go alarm_msg.SendAlarmMsg(tips, 3)
|
|
|
}
|
|
|
}()
|
|
|
- correlationChart := new(data_manage.ChartInfoCorrelation)
|
|
|
- if err = correlationChart.GetItemById(chartInfoId); err != nil {
|
|
|
- errMsg = "获取区间计算图表失败, Err: " + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- // 多因子刷新-异步
|
|
|
- if correlationChart.AnalysisMode == 1 {
|
|
|
- isAsync = true
|
|
|
-
|
|
|
- go func() {
|
|
|
- // 1.刷新图表关联的指标
|
|
|
- mappings, e := data_manage.GetChartEdbMappingList(chartInfoId)
|
|
|
- if e != nil {
|
|
|
- utils.FileLog.Info(fmt.Sprintf("获取图表关联指标失败, err: %v", e))
|
|
|
- return
|
|
|
- }
|
|
|
- if len(mappings) == 0 {
|
|
|
- utils.FileLog.Info("图表无关联指标")
|
|
|
- return
|
|
|
- }
|
|
|
- var edbIds []int
|
|
|
- for _, v := range mappings {
|
|
|
- edbIds = append(edbIds, v.EdbInfoId)
|
|
|
- }
|
|
|
- if e, _ = data.EdbInfoRefreshAllFromBaseV3(edbIds, false, true, false); e != nil {
|
|
|
- utils.FileLog.Info(fmt.Sprintf("批量刷新指标失败, err: %v", e))
|
|
|
+ var chartInfo *data_manage.ChartInfo
|
|
|
+ if chartInfoId > 0 {
|
|
|
+ chartInfo, err = data_manage.GetChartInfoById(chartInfoId)
|
|
|
+ if err != nil {
|
|
|
+ if err.Error() == utils.ErrNoRow() {
|
|
|
+ errMsg = "图表已被删除,请刷新页面"
|
|
|
+ err = errors.New(errMsg)
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- // 2.刷新指标系列计算数据
|
|
|
- for _, v := range mappings {
|
|
|
- _, e = data.PostRefreshFactorEdbRecalculate(v.EdbInfoId, v.EdbCode)
|
|
|
- if e != nil {
|
|
|
- utils.FileLog.Info(fmt.Sprintf("PostRefreshFactorEdbRecalculate err: %v", e))
|
|
|
- continue
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 3.刷新图表矩阵
|
|
|
- _, e = data.PostRefreshFactorEdbChartRecalculate(chartInfoId)
|
|
|
- if e != nil {
|
|
|
- utils.FileLog.Info(fmt.Sprintf("PostRefreshFactorEdbRecalculate err: %v", e))
|
|
|
+ errMsg = "获取图表信息失败"
|
|
|
+ err = errors.New("获取图表信息失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ chartInfo, err = data_manage.GetChartInfoByUniqueCode(uniqueCode)
|
|
|
+ if err != nil {
|
|
|
+ if err.Error() == utils.ErrNoRow() {
|
|
|
+ errMsg = "图表已被删除,请刷新页面"
|
|
|
+ err = errors.New(errMsg)
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- // 4.清除图表缓存
|
|
|
- key := utils.HZ_CHART_LIB_DETAIL + uniqueCode
|
|
|
- _ = utils.Rc.Delete(key)
|
|
|
- }()
|
|
|
- return
|
|
|
+ errMsg = "获取图表信息失败"
|
|
|
+ err = errors.New("获取图表信息失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- // 批量刷新ETA指标
|
|
|
- err, _ = data.EdbInfoRefreshAllFromBaseV3([]int{correlationChart.EdbInfoIdFirst, correlationChart.EdbInfoIdSecond}, false, true, false)
|
|
|
- if err != nil {
|
|
|
+ // 1.刷新图表关联的指标
|
|
|
+ mappings, e := data_manage.GetChartEdbMappingList(chartInfoId)
|
|
|
+ if e != nil {
|
|
|
+ utils.FileLog.Info(fmt.Sprintf("获取图表关联指标失败, err: %v", e))
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- // 重新生成数据并更新
|
|
|
- edbInfoMappingA, err := data_manage.GetChartEdbMappingByEdbInfoId(correlationChart.EdbInfoIdFirst)
|
|
|
- if err != nil {
|
|
|
- errMsg = "获取区间计算图表, A指标mapping信息失败, Err:" + err.Error()
|
|
|
+ if len(mappings) == 0 {
|
|
|
+ utils.FileLog.Info("图表无关联指标")
|
|
|
return
|
|
|
}
|
|
|
- edbInfoMappingB, err := data_manage.GetChartEdbMappingByEdbInfoId(correlationChart.EdbInfoIdSecond)
|
|
|
- if err != nil {
|
|
|
- errMsg = "获取区间计算图表, B指标mapping信息失败, Err:" + err.Error()
|
|
|
- return
|
|
|
+ var edbIds []int
|
|
|
+ for _, v := range mappings {
|
|
|
+ edbIds = append(edbIds, v.EdbInfoId)
|
|
|
}
|
|
|
- periodData, correlationData, err := GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB, correlationChart.LeadValue, correlationChart.LeadUnit, correlationChart.StartDate.Format(utils.FormatDate), correlationChart.EndDate.Format(utils.FormatDate), "")
|
|
|
- if err != nil {
|
|
|
- errMsg = "获取区间计算图表, 图表计算值失败, Err:" + err.Error()
|
|
|
+ if e, _ = data.EdbInfoRefreshAllFromBaseV3(edbIds, false, true, false); e != nil {
|
|
|
+ utils.FileLog.Info(fmt.Sprintf("批量刷新指标失败, err: %v", e))
|
|
|
return
|
|
|
}
|
|
|
- periodDataByte, err := json.Marshal(periodData)
|
|
|
+
|
|
|
+ // todo 重新计算
|
|
|
+ // 区间计算图表配置校验
|
|
|
+ var extraConfig data_manage.ChartRangeAnalysisExtraConf
|
|
|
+ err = json.Unmarshal([]byte(chartInfo.ExtraConfig), &extraConfig)
|
|
|
if err != nil {
|
|
|
- errMsg = "区间计算图表, X轴信息有误, Err:" + err.Error()
|
|
|
+ errMsg = "配置信息错误"
|
|
|
+ err = errors.New(errMsg + ", Err: " + err.Error())
|
|
|
return
|
|
|
}
|
|
|
- correlationDataByte, err := json.Marshal(correlationData[0].Value)
|
|
|
+ chartSeriesOb := new(data_manage.FactorEdbSeriesChartMapping)
|
|
|
+ seriesMappingItem, err := chartSeriesOb.GetItemByChartInfoId(chartInfo.ChartInfoId)
|
|
|
if err != nil {
|
|
|
- errMsg = "区间计算图表, Y轴信息有误, Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- correlationChart.PeriodData = string(periodDataByte)
|
|
|
- correlationChart.CorrelationData = string(correlationDataByte)
|
|
|
- correlationChart.ModifyTime = time.Now().Local()
|
|
|
- correlationUpdateCols := []string{"PeriodData", "CorrelationData", "ModifyTime"}
|
|
|
- if err = correlationChart.Update(correlationUpdateCols); err != nil {
|
|
|
- errMsg = "更新区间计算图表失败, Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-// GetChartAndCorrelationInfo 获取图表信息和相关信息信息
|
|
|
-func GetChartAndCorrelationInfo(chartInfoId int) (chartInfo *data_manage.ChartInfo, correlationInfo *data_manage.ChartInfoCorrelation, tips string, err error) {
|
|
|
- item, e := data_manage.GetChartInfoById(chartInfoId)
|
|
|
- if e != nil {
|
|
|
- if e.Error() == utils.ErrNoRow() {
|
|
|
- tips = "图表已被删除, 请刷新页面"
|
|
|
- err = fmt.Errorf("图表已被删除, 请刷新页面")
|
|
|
+ if err.Error() == utils.ErrNoRow() {
|
|
|
+ err = nil
|
|
|
+ } else {
|
|
|
+ err = fmt.Errorf("获取图表关联失败, Err: " + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ _, e = FactorEdbStepCalculateRange(seriesMappingItem.FactorEdbSeriesId, edbIds, extraConfig, true)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("计算因子指标失败, Err: " + e.Error())
|
|
|
return
|
|
|
}
|
|
|
- err = fmt.Errorf("获取图表信息失败, Err: %s", e.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- if item.Source != utils.CHART_SOURCE_RANGE_ANALYSIS {
|
|
|
- tips = "该图不是区间计算图表"
|
|
|
- err = fmt.Errorf("该图不是区间计算图表")
|
|
|
- return
|
|
|
- }
|
|
|
- chartInfo = item
|
|
|
- correlationInfo = new(data_manage.ChartInfoCorrelation)
|
|
|
- if e = correlationInfo.GetItemById(chartInfo.ChartInfoId); e != nil {
|
|
|
- err = fmt.Errorf("获取图表区间计算信息失败, Err: %s", e.Error())
|
|
|
- return
|
|
|
}
|
|
|
+ // 4.清除图表缓存
|
|
|
+ key := utils.HZ_CHART_LIB_DETAIL + uniqueCode
|
|
|
+ _ = utils.Rc.Delete(key)
|
|
|
+
|
|
|
return
|
|
|
-}*/
|
|
|
+}
|
|
|
|
|
|
// AddChartInfo 添加图表
|
|
|
func AddChartInfo(req data_manage.AddChartInfoReq, source int, sysUser *system.Admin, lang string) (chartInfo *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
|
|
@@ -1012,57 +967,127 @@ func EditChartInfo(req data_manage.EditChartInfoReq, sysUser *system.Admin, lang
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
// CopyChartInfo 复制图表
|
|
|
-func CopyChartInfo(configId, classifyId int, chartName string, correlationChartInfoReq data_manage.CorrelationChartInfoReq, oldChartInfo *data_manage.ChartInfo, sysUser *system.Admin, lang string) (chartInfo *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
|
|
|
- configSource := 2
|
|
|
+func CopyChartInfo(classifyId int, chartName string, oldChartInfo *data_manage.ChartInfo, sysUser *system.Admin, lang string) (chartInfo *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
|
|
|
isSendEmail = true
|
|
|
- // 获取区间计算图的配置
|
|
|
- multipleGraphConfigChartMapping, err := data_manage.GetMultipleGraphConfigChartMappingByIdAndSource(configId, configSource)
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
- multipleGraphConfig, err := data_manage.GetMultipleGraphConfigById(configId)
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
- multipleGraphConfig.MultipleGraphConfigId = 0
|
|
|
- err = data_manage.AddMultipleGraphConfig(multipleGraphConfig)
|
|
|
+ timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
|
|
|
+ chartInfo = &data_manage.ChartInfo{
|
|
|
+ ChartInfoId: 0,
|
|
|
+ ChartName: chartName,
|
|
|
+ ChartClassifyId: classifyId,
|
|
|
+ SysUserId: sysUser.AdminId,
|
|
|
+ SysUserRealName: sysUser.RealName,
|
|
|
+ UniqueCode: utils.MD5(utils.CHART_PREFIX + "_" + timestamp),
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ DateType: oldChartInfo.DateType,
|
|
|
+ StartDate: oldChartInfo.StartDate,
|
|
|
+ EndDate: oldChartInfo.EndDate,
|
|
|
+ IsSetName: oldChartInfo.IsSetName,
|
|
|
+ EdbInfoIds: oldChartInfo.EdbInfoIds,
|
|
|
+ ChartType: oldChartInfo.ChartType,
|
|
|
+ Calendar: oldChartInfo.Calendar,
|
|
|
+ SeasonStartDate: oldChartInfo.SeasonStartDate,
|
|
|
+ SeasonEndDate: oldChartInfo.SeasonEndDate,
|
|
|
+ ChartImage: oldChartInfo.ChartImage,
|
|
|
+ BarConfig: oldChartInfo.BarConfig,
|
|
|
+ //Sort: sort,
|
|
|
+ LeftMin: oldChartInfo.LeftMin,
|
|
|
+ LeftMax: oldChartInfo.LeftMax,
|
|
|
+ RightMin: oldChartInfo.RightMin,
|
|
|
+ RightMax: oldChartInfo.RightMax,
|
|
|
+ Right2Min: oldChartInfo.Right2Min,
|
|
|
+ Right2Max: oldChartInfo.Right2Max,
|
|
|
+ Disabled: oldChartInfo.Disabled,
|
|
|
+ Source: oldChartInfo.Source,
|
|
|
+ ExtraConfig: oldChartInfo.ExtraConfig,
|
|
|
+ SeasonExtraConfig: oldChartInfo.SeasonExtraConfig,
|
|
|
+ StartYear: oldChartInfo.StartYear,
|
|
|
+ Unit: oldChartInfo.Unit,
|
|
|
+ UnitEn: oldChartInfo.UnitEn,
|
|
|
+ ChartThemeId: oldChartInfo.ChartThemeId,
|
|
|
+ SourcesFrom: oldChartInfo.SourcesFrom,
|
|
|
+ Instructions: oldChartInfo.Instructions,
|
|
|
+ MarkersLines: oldChartInfo.MarkersLines,
|
|
|
+ MarkersAreas: oldChartInfo.MarkersAreas,
|
|
|
+ }
|
|
|
+ newId, err := data_manage.AddChartInfo(chartInfo)
|
|
|
if err != nil {
|
|
|
+ err = fmt.Errorf("保存失败,Err:%s", err.Error())
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- // 添加图
|
|
|
- addChartReq := data_manage.AddChartInfoReq{
|
|
|
- ChartClassifyId: classifyId,
|
|
|
- ChartName: chartName,
|
|
|
- ChartType: utils.CHART_TYPE_CURVE,
|
|
|
- Calendar: "公历",
|
|
|
- CorrelationChartInfo: correlationChartInfoReq,
|
|
|
- ChartThemeId: oldChartInfo.ChartThemeId,
|
|
|
- SourcesFrom: oldChartInfo.SourcesFrom,
|
|
|
- Instructions: oldChartInfo.Instructions,
|
|
|
- MarkersLines: oldChartInfo.MarkersLines,
|
|
|
- MarkersAreas: oldChartInfo.MarkersAreas,
|
|
|
- }
|
|
|
- chartSource := utils.CHART_SOURCE_RANGE_ANALYSIS // 默认是区间计算图
|
|
|
- chartInfo, err, errMsg, isSendEmail = AddChartInfo(addChartReq, chartSource, sysUser, lang)
|
|
|
+ chartInfo.ChartInfoId = int(newId)
|
|
|
+ edbInfoMappingList, err := data_manage.GetChartEdbMappingList(oldChartInfo.ChartInfoId)
|
|
|
if err != nil {
|
|
|
+ err = fmt.Errorf("获取图表,指标信息失败,Err:" + err.Error())
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- // 添加关系
|
|
|
- multipleGraphConfigChartMapping = &data_manage.MultipleGraphConfigChartMapping{
|
|
|
- //Id: 0,
|
|
|
- MultipleGraphConfigId: multipleGraphConfig.MultipleGraphConfigId,
|
|
|
- ChartInfoId: chartInfo.ChartInfoId,
|
|
|
- Source: configSource,
|
|
|
- ModifyTime: time.Now(),
|
|
|
- CreateTime: time.Now(),
|
|
|
+ // 添加图表与指标的关联关系
|
|
|
+ edbInfoIdArr := make([]int, 0)
|
|
|
+ {
|
|
|
+ mapList := make([]*data_manage.ChartEdbMapping, 0)
|
|
|
+ for _, v := range edbInfoMappingList {
|
|
|
+ edbInfoIdArr = append(edbInfoIdArr, v.EdbInfoId)
|
|
|
+ timestamp = strconv.FormatInt(time.Now().UnixNano(), 10)
|
|
|
+ mapItem := &data_manage.ChartEdbMapping{
|
|
|
+ //ChartEdbMappingId: 0,
|
|
|
+ ChartInfoId: chartInfo.ChartInfoId,
|
|
|
+ EdbInfoId: v.EdbInfoId,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ UniqueCode: utils.MD5(utils.CHART_PREFIX + "_" + timestamp),
|
|
|
+ MaxData: v.MaxData,
|
|
|
+ MinData: v.MinData,
|
|
|
+ IsOrder: v.IsOrder,
|
|
|
+ IsAxis: v.IsAxis,
|
|
|
+ EdbInfoType: v.EdbInfoType,
|
|
|
+ LeadValue: v.LeadValue,
|
|
|
+ LeadUnit: v.LeadUnit,
|
|
|
+ ChartStyle: v.ChartStyle,
|
|
|
+ ChartColor: v.ChartColor,
|
|
|
+ ChartWidth: v.ChartWidth,
|
|
|
+ Source: v.Source,
|
|
|
+ EdbAliasName: v.EdbAliasName,
|
|
|
+ IsConvert: v.IsConvert,
|
|
|
+ ConvertType: v.ConvertType,
|
|
|
+ ConvertValue: v.ConvertValue,
|
|
|
+ ConvertUnit: v.ConvertEnUnit,
|
|
|
+ ConvertEnUnit: v.ConvertEnUnit,
|
|
|
+ }
|
|
|
+ mapList = append(mapList, mapItem)
|
|
|
+ }
|
|
|
+ err = data_manage.AddChartEdbMapping(mapList)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("保存失败,Err:%s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
- err = data_manage.AddMultipleGraphConfigChartMapping(multipleGraphConfigChartMapping)
|
|
|
+ // 添加系列和图表映射
|
|
|
+ chartSeriesOb := new(data_manage.FactorEdbSeriesChartMapping)
|
|
|
+ _, err = chartSeriesOb.GetItemByChartInfoId(oldChartInfo.ChartInfoId)
|
|
|
if err != nil {
|
|
|
- return
|
|
|
+ if err.Error() == utils.ErrNoRow() {
|
|
|
+ err = nil
|
|
|
+ } else {
|
|
|
+ err = fmt.Errorf("获取图表关联失败, Err: " + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 新增指标系列
|
|
|
+ // 区间计算图表配置校验
|
|
|
+ var extraConfig data_manage.ChartRangeAnalysisExtraConf
|
|
|
+ err = json.Unmarshal([]byte(chartInfo.ExtraConfig), &extraConfig)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "配置信息错误"
|
|
|
+ err = errors.New(errMsg + ", Err: " + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = AddSeries(edbInfoIdArr, chartInfo.ChartInfoId, utils.CHART_SOURCE_RANGE_ANALYSIS, extraConfig, chartInfo.ExtraConfig)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "操作失败"
|
|
|
+ err = errors.New("新增区间计算图表失败, Err: " + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//添加es数据
|
|
@@ -1071,6 +1096,7 @@ func CopyChartInfo(configId, classifyId int, chartName string, correlationChartI
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
// CalculateCorrelation 计算区间计算-获取x轴和y轴
|
|
|
func CalculateCorrelation(leadValue int, leadUnit, frequencyA, frequencyB string, dataListA, dataListB []*data_manage.EdbDataList) (xEdbIdValue []int, yDataList []data_manage.YData, err error) {
|
|
|
xData := make([]int, 0)
|