|
@@ -9,8 +9,10 @@ import (
|
|
|
"eta/eta_api/controllers/data_manage/line_feature"
|
|
|
"eta/eta_api/controllers/data_manage/range_analysis"
|
|
|
"eta/eta_api/models"
|
|
|
+ aiPredictModel "eta/eta_api/models/ai_predict_model"
|
|
|
"eta/eta_api/models/data_manage"
|
|
|
"eta/eta_api/models/system"
|
|
|
+ "eta/eta_api/services"
|
|
|
"eta/eta_api/services/alarm_msg"
|
|
|
"eta/eta_api/services/data"
|
|
|
"eta/eta_api/services/data/excel"
|
|
@@ -289,6 +291,28 @@ func (this *ChartInfoController) CommonChartInfoDetailFromUniqueCode() {
|
|
|
br.Success = true
|
|
|
br.Msg = "获取成功"
|
|
|
br.Data = resp
|
|
|
+ case utils.CHART_SOURCE_AI_PREDICT_MODEL_DAILY, utils.CHART_SOURCE_AI_PREDICT_MODEL_MONTHLY:
|
|
|
+ resp, isOk, msg, errMsg := GetAiPredictChartInfoDetailFromUniqueCode(chartInfo, isCache)
|
|
|
+ if !isOk {
|
|
|
+ if strings.Contains(errMsg, utils.ErrNoRow()) {
|
|
|
+ endInfoList := make([]*data_manage.ChartEdbInfoMapping, 0)
|
|
|
+ resp.EdbInfoList = endInfoList
|
|
|
+ resp.ChartInfo = chartInfo
|
|
|
+
|
|
|
+ br.Data = resp
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ br.Msg = msg
|
|
|
+ br.ErrMsg = errMsg
|
|
|
+ return
|
|
|
+ }
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
default:
|
|
|
br.Msg = "错误的图表"
|
|
|
br.ErrMsg = "错误的图表"
|
|
@@ -351,3 +375,102 @@ func getBalanceChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoVie
|
|
|
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+// GetAiPredictChartInfoDetailFromUniqueCode 根据编码获取AI预测模型图表详情
|
|
|
+func GetAiPredictChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCache bool) (resp *data_manage.ChartInfoDetailResp, isOk bool, msg, errMsg string) {
|
|
|
+ var err error
|
|
|
+ msg = "获取成功"
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ tips := fmt.Sprintf("UniqueCode获取图表详情失败, %v", err)
|
|
|
+ msg = "获取失败"
|
|
|
+ errMsg = fmt.Sprintf(tips)
|
|
|
+ utils.FileLog.Info(tips)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ if chartInfo == nil {
|
|
|
+ err = fmt.Errorf("图表信息不存在")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if chartInfo.Source != utils.CHART_SOURCE_AI_PREDICT_MODEL_DAILY && chartInfo.Source != utils.CHART_SOURCE_AI_PREDICT_MODEL_MONTHLY {
|
|
|
+ err = fmt.Errorf("图表来源有误, Source: %d", chartInfo.Source)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp = new(data_manage.ChartInfoDetailResp)
|
|
|
+
|
|
|
+ // 获取图表标的
|
|
|
+ edbMappings, e := data_manage.GetChartEdbMappingsByChartInfoId(chartInfo.ChartInfoId)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("获取图表指标关联失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(edbMappings) == 0 {
|
|
|
+ err = fmt.Errorf("图表指标关联不存在, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ indexId := edbMappings[0].EdbInfoId
|
|
|
+ if indexId <= 0 {
|
|
|
+ err = fmt.Errorf("图表标的有误")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ indexOb := new(aiPredictModel.AiPredictModelIndex)
|
|
|
+ indexItem, e := indexOb.GetItemById(indexId)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("获取图表标的失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if indexItem != nil && indexItem.AiPredictModelIndexId <= 0 {
|
|
|
+ err = fmt.Errorf("图表标的不存在, IndexId: %d", indexId)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取标的数据
|
|
|
+ indexData := make([]*aiPredictModel.AiPredictModelData, 0)
|
|
|
+ dataSource := aiPredictModel.ModelDataSourceDaily
|
|
|
+ if chartInfo.Source == utils.CHART_SOURCE_AI_PREDICT_MODEL_MONTHLY {
|
|
|
+ dataSource = aiPredictModel.ModelDataSourceMonthly
|
|
|
+ }
|
|
|
+ dataOb := new(aiPredictModel.AiPredictModelData)
|
|
|
+ dataCond := fmt.Sprintf(` AND %s = ?`, dataOb.Cols().IndexCode)
|
|
|
+ dataPars := make([]interface{}, 0)
|
|
|
+ dataPars = append(dataPars, indexItem.IndexCode)
|
|
|
+ list, e := dataOb.GetItemsByCondition(dataCond, dataPars, []string{}, fmt.Sprintf("%s DESC", dataOb.Cols().DataTime))
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("获取标的数据失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range list {
|
|
|
+ if v.Source == dataSource {
|
|
|
+ indexData = append(indexData, v)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //判断是否存在缓存,如果存在缓存,那么直接从缓存中获取
|
|
|
+ key := data.GetChartInfoDataKey(chartInfo.ChartInfoId)
|
|
|
+ if utils.Re == nil && isCache {
|
|
|
+ if utils.Re == nil && utils.Rc.IsExist(key) {
|
|
|
+ if chartData, e := utils.Rc.RedisBytes(key); e == nil {
|
|
|
+ e = json.Unmarshal(chartData, &resp)
|
|
|
+ if e != nil || resp == nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ isOk = true
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 图表详情
|
|
|
+ resp, e = services.GetAiPredictChartDetailByData(indexItem, indexData, dataSource)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("获取图表详情失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if utils.Re == nil {
|
|
|
+ jsonData, _ := json.Marshal(resp)
|
|
|
+ _ = utils.Rc.Put(key, jsonData, 10*time.Minute)
|
|
|
+ }
|
|
|
+ isOk = true
|
|
|
+ return
|
|
|
+}
|