|
@@ -808,7 +808,6 @@ func (this *CorrelationChartInfoController) Detail() {
|
|
|
chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList[0:1], chartInfo.Source, chartInfo.ChartType)
|
|
|
chartInfo.UnitEn = edbInfoMappingA.UnitEn
|
|
|
|
|
|
- // TODO:图表来源
|
|
|
sourceNameList, sourceNameEnList := data.GetEdbSourceByEdbInfoIdList(edbList)
|
|
|
chartInfo.ChartSource = strings.Join(sourceNameList, ",")
|
|
|
chartInfo.ChartSourceEn = strings.Join(sourceNameEnList, ",")
|
|
@@ -1097,10 +1096,12 @@ func (this *CorrelationChartInfoController) Refresh() {
|
|
|
func (this *CorrelationChartInfoController) Copy() {
|
|
|
br := new(models.BaseResponse).Init()
|
|
|
defer func() {
|
|
|
+ if br.ErrMsg == "" {
|
|
|
+ br.IsSendEmail = false
|
|
|
+ }
|
|
|
this.Data["json"] = br
|
|
|
this.ServeJSON()
|
|
|
}()
|
|
|
-
|
|
|
sysUser := this.SysUser
|
|
|
if sysUser == nil {
|
|
|
br.Msg = "请登录"
|
|
@@ -1108,6 +1109,28 @@ func (this *CorrelationChartInfoController) Copy() {
|
|
|
br.Ret = 408
|
|
|
return
|
|
|
}
|
|
|
+ var req data_manage.CopyAddChartInfoReq
|
|
|
+ err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if req.ChartInfoId <= 0 {
|
|
|
+ br.Msg = "参数有误"
|
|
|
+ br.ErrMsg = fmt.Sprintf("参数有误, ChartInfoId: %d", req.ChartInfoId)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ req.ChartName = strings.TrimSpace(req.ChartName)
|
|
|
+ if req.ChartName == "" {
|
|
|
+ br.Msg = "请输入图表名称"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if req.ChartClassifyId <= 0 {
|
|
|
+ br.Msg = "请选择图表分类"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
deleteCache := true
|
|
|
cacheKey := "CACHE_CHART_INFO_ADD_" + strconv.Itoa(sysUser.AdminId)
|
|
|
defer func() {
|
|
@@ -1121,76 +1144,215 @@ func (this *CorrelationChartInfoController) Copy() {
|
|
|
br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(this.Ctx.Input.RequestBody)
|
|
|
return
|
|
|
}
|
|
|
- var req data_manage.CopyAddChartInfoReq
|
|
|
- err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
- if err != nil {
|
|
|
- br.Msg = "参数解析异常!"
|
|
|
- br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
- return
|
|
|
+
|
|
|
+ chartSource := utils.CHART_SOURCE_CORRELATION
|
|
|
+ // 校验分类、图表名称
|
|
|
+ {
|
|
|
+ var cond string
|
|
|
+ var pars []interface{}
|
|
|
+ switch this.Lang {
|
|
|
+ case utils.EnLangVersion:
|
|
|
+ cond += " AND chart_name_en = ? AND source = ? "
|
|
|
+ default:
|
|
|
+ cond += " AND chart_name = ? AND source = ? "
|
|
|
+ }
|
|
|
+ pars = append(pars, req.ChartName, chartSource)
|
|
|
+ count, e := data_manage.GetChartInfoCountByCondition(cond, pars)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "保存失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取同名图表失败, Err: %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if count > 0 {
|
|
|
+ br.Msg = "图表名称已存在, 请重新填写"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ _, e = data_manage.GetChartClassifyById(req.ChartClassifyId)
|
|
|
+ if e != nil {
|
|
|
+ if e.Error() == utils.ErrNoRow() {
|
|
|
+ br.Msg = "分类不存在"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ br.Msg = "保存失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取图表分类失败, Err: %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- // 获取原图表信息
|
|
|
- oldChartInfo, err := data_manage.GetChartInfoById(req.ChartInfoId)
|
|
|
- if err != nil {
|
|
|
- br.Msg = "获取原图表信息失败"
|
|
|
- br.ErrMsg = "获取原图表信息失败,Err:" + err.Error()
|
|
|
+ // 图表信息
|
|
|
+ originChart, e := data_manage.GetChartInfoById(req.ChartInfoId)
|
|
|
+ if e != nil {
|
|
|
+ if e.Error() == utils.ErrNoRow() {
|
|
|
+ br.Msg = "原图表不存在"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ br.Msg = "保存失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取原图表信息失败, Err: %v", e)
|
|
|
return
|
|
|
}
|
|
|
- if oldChartInfo.Source == utils.CHART_SOURCE_ROLLING_CORRELATION {
|
|
|
+ if originChart.Source == utils.CHART_SOURCE_ROLLING_CORRELATION {
|
|
|
br.Msg = `滚动相关性图不支持另存为`
|
|
|
br.IsSendEmail = false
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- multipleGraphConfigChartMapping, err := data_manage.GetMultipleGraphConfigChartMappingByChartId(req.ChartInfoId)
|
|
|
- if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
- br.Msg = `保存失败`
|
|
|
- br.ErrMsg = "获取配置与图表的关联关系失败,ERR:" + err.Error()
|
|
|
+ // 相关性图
|
|
|
+ originCorrelate := new(data_manage.ChartInfoCorrelation)
|
|
|
+ if e = originCorrelate.GetItemById(req.ChartInfoId); e != nil {
|
|
|
+ if e.Error() == utils.ErrNoRow() {
|
|
|
+ br.Msg = "原相关性图表不存在"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ br.Msg = "保存失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取原相关性图表信息失败, Err: %v", e)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- correlationChart := new(data_manage.ChartInfoCorrelation)
|
|
|
- if e := correlationChart.GetItemById(req.ChartInfoId); e != nil {
|
|
|
- br.Msg = "另存为失败"
|
|
|
- br.ErrMsg = "获取原图表相关性信息失败, Err:" + e.Error()
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- correlationChartInfoReq := data_manage.CorrelationChartInfoReq{
|
|
|
- LeadValue: correlationChart.LeadValue,
|
|
|
- LeadUnit: correlationChart.LeadUnit,
|
|
|
- CalculateValue: correlationChart.CalculateValue,
|
|
|
- CalculateUnit: correlationChart.CalculateUnit,
|
|
|
- BaseCalculateUnit: correlationChart.BaseCalculateUnit,
|
|
|
- BaseCalculateValue: correlationChart.BaseCalculateValue,
|
|
|
- StartDate: correlationChart.StartDate.Format(utils.FormatDate),
|
|
|
- EndDate: correlationChart.EndDate.Format(utils.FormatDate),
|
|
|
- EdbInfoIdList: []data_manage.CorrelationChartInfoEdbItemReq{
|
|
|
- {
|
|
|
- EdbInfoId: correlationChart.EdbInfoIdFirst,
|
|
|
- Name: "",
|
|
|
- NameEn: "",
|
|
|
- }, {
|
|
|
- EdbInfoId: correlationChart.EdbInfoIdSecond,
|
|
|
- Name: "",
|
|
|
- NameEn: "",
|
|
|
+ // 普通相关性图表
|
|
|
+ chartInfo := new(data_manage.ChartInfo)
|
|
|
+ if originCorrelate.AnalysisMode != 1 {
|
|
|
+ multipleGraphConfigChartMapping, err := data_manage.GetMultipleGraphConfigChartMappingByChartId(req.ChartInfoId)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ br.Msg = `保存失败`
|
|
|
+ br.ErrMsg = "获取配置与图表的关联关系失败,ERR:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ correlationChartInfoReq := data_manage.CorrelationChartInfoReq{
|
|
|
+ LeadValue: originCorrelate.LeadValue,
|
|
|
+ LeadUnit: originCorrelate.LeadUnit,
|
|
|
+ CalculateValue: originCorrelate.CalculateValue,
|
|
|
+ CalculateUnit: originCorrelate.CalculateUnit,
|
|
|
+ BaseCalculateUnit: originCorrelate.BaseCalculateUnit,
|
|
|
+ BaseCalculateValue: originCorrelate.BaseCalculateValue,
|
|
|
+ StartDate: originCorrelate.StartDate.Format(utils.FormatDate),
|
|
|
+ EndDate: originCorrelate.EndDate.Format(utils.FormatDate),
|
|
|
+ EdbInfoIdList: []data_manage.CorrelationChartInfoEdbItemReq{
|
|
|
+ {
|
|
|
+ EdbInfoId: originCorrelate.EdbInfoIdFirst,
|
|
|
+ Name: "",
|
|
|
+ NameEn: "",
|
|
|
+ }, {
|
|
|
+ EdbInfoId: originCorrelate.EdbInfoIdSecond,
|
|
|
+ Name: "",
|
|
|
+ NameEn: "",
|
|
|
+ },
|
|
|
},
|
|
|
- },
|
|
|
+ }
|
|
|
+
|
|
|
+ newChart, err, errMsg, isSendEmail := correlationServ.CopyChartInfo(multipleGraphConfigChartMapping.MultipleGraphConfigId, req.ChartClassifyId, req.ChartName, correlationChartInfoReq, originChart, sysUser, this.Lang)
|
|
|
+ chartInfo = newChart
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "保存失败"
|
|
|
+ if errMsg != `` {
|
|
|
+ br.Msg = errMsg
|
|
|
+ }
|
|
|
+ br.ErrMsg = err.Error()
|
|
|
+ br.IsSendEmail = isSendEmail
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- chartInfo, err, errMsg, isSendEmail := correlationServ.CopyChartInfo(multipleGraphConfigChartMapping.MultipleGraphConfigId, req.ChartClassifyId, req.ChartName, correlationChartInfoReq, oldChartInfo, sysUser, this.Lang)
|
|
|
+ // 多因子相关性图表
|
|
|
+ if originCorrelate.AnalysisMode == 1 {
|
|
|
+ chartInfo.ChartName = req.ChartName
|
|
|
+ chartInfo.ChartNameEn = req.ChartName
|
|
|
+ chartInfo.ChartClassifyId = req.ChartClassifyId
|
|
|
+ chartInfo.SysUserId = sysUser.AdminId
|
|
|
+ chartInfo.SysUserRealName = sysUser.RealName
|
|
|
+ chartInfo.CreateTime = time.Now()
|
|
|
+ chartInfo.ModifyTime = time.Now()
|
|
|
+ timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
|
|
|
+ chartInfo.UniqueCode = utils.MD5(utils.CHART_PREFIX + "_" + timestamp)
|
|
|
+ chartInfo.ChartType = originChart.ChartType
|
|
|
+ chartInfo.Calendar = originChart.Calendar
|
|
|
+ chartInfo.DateType = originChart.DateType
|
|
|
+ chartInfo.StartDate = originChart.StartDate
|
|
|
+ chartInfo.EndDate = originChart.EndDate
|
|
|
+ chartInfo.SeasonStartDate = originChart.StartDate
|
|
|
+ chartInfo.SeasonEndDate = originChart.EndDate
|
|
|
+ chartInfo.Disabled = originChart.Disabled
|
|
|
+ chartInfo.Source = originChart.Source
|
|
|
+ chartInfo.ChartThemeId = originChart.ChartThemeId
|
|
|
+ chartInfo.ExtraConfig = originChart.ExtraConfig
|
|
|
+ chartInfo.SourcesFrom = originChart.SourcesFrom
|
|
|
+ chartInfo.Instructions = originChart.Instructions
|
|
|
+ chartInfo.MarkersLines = originChart.MarkersLines
|
|
|
+ chartInfo.MarkersAreas = originChart.MarkersAreas
|
|
|
+
|
|
|
+ // 相关性图
|
|
|
+ chartCorrelate := new(data_manage.ChartInfoCorrelation)
|
|
|
+ chartCorrelate.LeadValue = originCorrelate.LeadValue
|
|
|
+ chartCorrelate.LeadUnit = originCorrelate.LeadUnit
|
|
|
+ chartCorrelate.CalculateValue = originCorrelate.CalculateValue
|
|
|
+ chartCorrelate.CalculateUnit = originCorrelate.CalculateUnit
|
|
|
+ chartCorrelate.EdbInfoIdFirst = originCorrelate.EdbInfoIdFirst
|
|
|
+ chartCorrelate.AnalysisMode = 1
|
|
|
+ chartCorrelate.CreateTime = time.Now().Local()
|
|
|
+ chartCorrelate.ModifyTime = time.Now().Local()
|
|
|
+
|
|
|
+ // 图表指标关联
|
|
|
+ edbMappings := make([]*data_manage.ChartEdbMapping, 0)
|
|
|
+ {
|
|
|
+ mappings, e := data_manage.GetChartMappingList(req.ChartInfoId)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "保存失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取图表指标关联失败, Err: %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range mappings {
|
|
|
+ m := new(data_manage.ChartEdbMapping)
|
|
|
+ m.EdbInfoId = v.EdbInfoId
|
|
|
+ edbTimestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
|
|
|
+ m.UniqueCode = utils.MD5(utils.CHART_PREFIX + "_" + edbTimestamp + "_" + strconv.Itoa(v.EdbInfoId))
|
|
|
+ m.IsOrder = true
|
|
|
+ m.IsAxis = 1
|
|
|
+ m.EdbInfoType = 1
|
|
|
+ m.Source = utils.CHART_SOURCE_CORRELATION
|
|
|
+ m.CreateTime = time.Now()
|
|
|
+ m.ModifyTime = time.Now()
|
|
|
+ edbMappings = append(edbMappings, m)
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if err != nil {
|
|
|
- br.Msg = "保存失败"
|
|
|
- if errMsg != `` {
|
|
|
- br.Msg = errMsg
|
|
|
+ // 指标系列-图表关联
|
|
|
+ seriesMappings := make([]*data_manage.FactorEdbSeriesChartMapping, 0)
|
|
|
+ {
|
|
|
+ ob := new(data_manage.FactorEdbSeriesChartMapping)
|
|
|
+ cond := fmt.Sprintf(" AND %s = ?", ob.Cols().ChartInfoId)
|
|
|
+ pars := make([]interface{}, 0)
|
|
|
+ pars = append(pars, req.ChartInfoId)
|
|
|
+ mappings, e := ob.GetItemsByCondition(cond, pars, []string{}, "")
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "保存失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取指标系列-图表关联失败, Err: %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range mappings {
|
|
|
+ seriesMappings = append(seriesMappings, &data_manage.FactorEdbSeriesChartMapping{
|
|
|
+ FactorEdbSeriesId: v.FactorEdbSeriesId,
|
|
|
+ ChartInfoId: req.ChartInfoId,
|
|
|
+ EdbInfoId: v.EdbInfoId,
|
|
|
+ Source: v.Source,
|
|
|
+ CreateTime: time.Now().Local(),
|
|
|
+ ModifyTime: time.Now().Local(),
|
|
|
+ })
|
|
|
+ }
|
|
|
}
|
|
|
- br.ErrMsg = err.Error()
|
|
|
- br.IsSendEmail = isSendEmail
|
|
|
- return
|
|
|
+
|
|
|
+ // 新增图表/相关性图表/图表指标关联/指标系列图表关联
|
|
|
+ chartInfoId, e := data_manage.CreateMultiFactorCorrelationChartAndEdb(chartInfo, edbMappings, chartCorrelate, seriesMappings)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "保存失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("新增多因子相关性图表失败, Err: %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ go data.EsAddOrEditChartInfo(chartInfoId)
|
|
|
}
|
|
|
|
|
|
- //新增操作日志
|
|
|
+ // 新增操作日志
|
|
|
{
|
|
|
chartLog := new(data_manage.ChartInfoLog)
|
|
|
chartLog.ChartInfoId = chartInfo.ChartInfoId
|