Преглед на файлове

fix:自定义分析表格保存时,自动生成excel文件

Roc преди 1 година
родител
ревизия
6c4a27967f
променени са 3 файла, в които са добавени 105 реда и са изтрити 45 реда
  1. 76 42
      controllers/data_manage/excel/custom_analysis_edb.go
  2. 2 1
      models/data_manage/edb_info_calculate.go
  3. 27 2
      services/data/excel/custom_analysis_edb.go

+ 76 - 42
controllers/data_manage/excel/custom_analysis_edb.go

@@ -3,9 +3,10 @@ package excel
 import (
 	"encoding/json"
 	"eta/eta_api/models"
+	"eta/eta_api/models/data_manage"
 	excelModel "eta/eta_api/models/data_manage/excel"
 	"eta/eta_api/models/data_manage/excel/request"
-	"eta/eta_api/models/data_manage/excel/response"
+	"eta/eta_api/services/data"
 	"eta/eta_api/services/data/excel"
 	"eta/eta_api/utils"
 	"strconv"
@@ -16,7 +17,7 @@ import (
 // AddEdb
 // @Title 新增指标接口
 // @Description 新增指标接口
-// @Param	request	body request.AddExcelInfoReq true "type json string"
+// @Param	request	body request.AddEdb true "type json string"
 // @Success 200 {object} response.AddExcelInfoResp
 // @router /edb/add [post]
 func (c *CustomAnalysisController) AddEdb() {
@@ -34,7 +35,7 @@ func (c *CustomAnalysisController) AddEdb() {
 		return
 	}
 	deleteCache := true
-	cacheKey := "CACHE_EXCEL_TABLE_INFO_ADD_" + strconv.Itoa(sysUser.AdminId)
+	cacheKey := "CACHE_EXCEL_TABLE_INFO_ADD_EDB_" + strconv.Itoa(sysUser.AdminId)
 	defer func() {
 		if deleteCache {
 			_ = utils.Rc.Delete(cacheKey)
@@ -85,45 +86,78 @@ func (c *CustomAnalysisController) AddEdb() {
 		return
 	}
 
-	excel.GetCustomAnalysisExcelData(excelInfo)
-
-	//err, errMsg, isSendEmail := excel.SaveCustomAnalysisTable(excelInfo, utils.TrimLRStr(req.ExcelName), req.Content, req.ExcelImage, req.ExcelClassifyId, req.OpSheetList)
-	//if err != nil {
-	//	br.Msg = "保存失败"
-	//	if errMsg != `` {
-	//		br.Msg = errMsg
-	//	}
-	//	br.ErrMsg = "保存失败,Err:" + err.Error()
-	//	br.IsSendEmail = isSendEmail
-	//	return
-	//}
-
-	// 更新excel下载地址(默认的EXCEL需要更新,自定义表格不需要更新)
-	//if req.Source == 1 {
-	//	go UpdateExcelInfoFileUrl(excelInfo)
-	//}
-	//
-	resp := new(response.AddExcelInfoResp)
-	resp.ExcelInfoId = excelInfo.ExcelInfoId
-	resp.UniqueCode = excelInfo.UniqueCode
-
-	//新增操作日志
-	//{
-	//	excelLog := &data_manage.ExcelInfoLog{
-	//		//ExcelInfoLogId:  0,
-	//		ExcelInfoId:     excelInfo.ExcelInfoId,
-	//		ExcelName:       req.ExcelName,
-	//		ExcelClassifyId: req.ExcelClassifyId,
-	//		SysUserId:       sysUser.AdminId,
-	//		SysUserRealName: sysUser.RealName,
-	//		UniqueCode:      excelInfo.UniqueCode,
-	//		CreateTime:      time.Now(),
-	//		Content:         string(c.Ctx.Input.RequestBody),
-	//		Status:          "新增表格",
-	//		Method:          c.Ctx.Input.URI(),
-	//	}
-	//	go data_manage.AddExcelInfoLog(excelLog)
-	//}
+	//excel.GetCustomAnalysisExcelData(excelInfo)
+
+	dateList, dataList, err, errMsg := excel.HandleEdbSequenceVal(req.DateSequenceVal, req.DataSequenceVal)
+	if err != nil {
+		br.Msg = "时间序列或数据序列异常!"
+		if errMsg != `` {
+			br.Msg = errMsg
+		}
+		br.ErrMsg = "时间序列或数据序列处理异常!err:" + err.Error()
+		return
+	}
+
+	type CustomAnalysisData struct {
+		ExcelInfoId int `description:"excel的id"`
+		DateList    []string
+		DataList    []float64
+	}
+
+	type Formula struct {
+		DateSequenceStr string `description:"日期序列"`
+		DataSequenceStr string `description:"数据序列"`
+	}
+
+	formulaByte, err := json.Marshal(Formula{
+		DateSequenceStr: req.DateSequenceStr,
+		DataSequenceStr: req.DataSequenceStr,
+	})
+	if err != nil {
+		br.Msg = "时间序列或数据序列配置异常!"
+		br.ErrMsg = "json序列化时间序列或数据序列异常!err:" + err.Error()
+		return
+	}
+
+	req2 := &data_manage.EdbInfoCalculateBatchSaveReqByEdbLib{
+		AdminId:    sysUser.AdminId,
+		AdminName:  sysUser.RealName,
+		EdbName:    req.EdbName,
+		Frequency:  req.Frequency,
+		Unit:       req.Unit,
+		ClassifyId: req.ClassifyId,
+		Formula:    string(formulaByte), //N数值移动平均计算、环比值、环差值
+		Source:     utils.DATA_SOURCE_PREDICT_CALCULATE_TBZ,
+		Data: CustomAnalysisData{
+			ExcelInfoId: req.ExcelInfoId,
+			DateList:    dateList,
+			DataList:    dataList,
+		},
+	}
+
+	// 调用指标库去更新
+	reqJson, err := json.Marshal(req2)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	respItem, err := data.BatchSaveEdbCalculateData(string(reqJson))
+	if err != nil {
+		br.Msg = "新增失败"
+		br.ErrMsg = "新增失败,Err:" + err.Error()
+		return
+	}
+	if respItem.Ret != 200 {
+		br.Msg = respItem.Msg
+		br.ErrMsg = respItem.ErrMsg
+		return
+	}
+
+	resp := respItem.Data
+
+	//添加es
+	data.AddOrEditEdbInfoToEs(resp.EdbInfoId)
 
 	br.Ret = 200
 	br.Success = true

+ 2 - 1
models/data_manage/edb_info_calculate.go

@@ -2,10 +2,10 @@ package data_manage
 
 import (
 	"errors"
+	"eta/eta_api/utils"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/yidane/formula"
-	"eta/eta_api/utils"
 	"strconv"
 	"strings"
 	"time"
@@ -196,6 +196,7 @@ type EdbInfoCalculateBatchSaveReqByEdbLib struct {
 	MoveType         int              `description:"移动方式:1:领先(默认),2:滞后"`
 	MoveFrequency    string           `description:"移动频度:天/周/月/季/年"`
 	Calendar         string           `description:"公历/农历"`
+	Data             interface{}      `description:"数据列"`
 }
 
 // EdbInfoCalculateBatchEditReq 编辑计算指标的请求参数

+ 27 - 2
services/data/excel/custom_analysis_edb.go

@@ -86,8 +86,11 @@ func GenerateExcelCustomAnalysisExcel(excelInfo *excel.ExcelInfo) (downloadFileP
 	return
 }
 
-// HandleEdbSequenceVal 处理日期集和数据集
-func HandleEdbSequenceVal(dateSequenceVal, dataSequenceVal []string) {
+// HandleEdbSequenceVal 处理日期集和数据集(获取可用的日期、数据集)
+func HandleEdbSequenceVal(dateSequenceVal, dataSequenceVal []string) (newDateList []string, newDataList []float64, err error, errMsg string) {
+	newDateList = make([]string, 0)
+	newDataList = make([]float64, 0)
+
 	// 数据集
 	type dataStruct struct {
 		Value float64
@@ -150,5 +153,27 @@ func HandleEdbSequenceVal(dateSequenceVal, dataSequenceVal []string) {
 		}
 	}
 
+	lenData := len(dataList)
+	lenDate := len(dateList)
+
+	// 最小个数
+	num := lenDate
+	if num > lenData {
+		num = lenData
+	}
+
+	for i := 0; i < num; i++ {
+		date := dateList[i]
+		data := dataList[i]
+
+		// 日期为空、数据为空
+		if !data.Ok || date == `` {
+			continue
+		}
+
+		newDateList = append(newDateList, date)
+		newDataList = append(newDataList, data.Value)
+	}
+
 	return
 }