Browse Source

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

Roc 1 year ago
parent
commit
34b70664a6

+ 6 - 0
controllers/data_manage/excel/custom_analysis.go

@@ -162,6 +162,9 @@ func (c *CustomAnalysisController) Add() {
 	resp.ExcelInfoId = excelInfo.ExcelInfoId
 	resp.UniqueCode = excelInfo.UniqueCode
 
+	// 生成excel文件
+	go UpdateExcelInfoFileUrl(excelInfo)
+
 	//新增操作日志
 	//{
 	//	excelLog := &data_manage.ExcelInfoLog{
@@ -279,6 +282,9 @@ func (c *CustomAnalysisController) Save() {
 	resp.ExcelInfoId = excelInfo.ExcelInfoId
 	resp.UniqueCode = excelInfo.UniqueCode
 
+	// 生成excel文件
+	go UpdateExcelInfoFileUrl(excelInfo)
+
 	//新增操作日志
 	//{
 	//	excelLog := &data_manage.ExcelInfoLog{

+ 145 - 0
controllers/data_manage/excel/custom_analysis_edb.go

@@ -0,0 +1,145 @@
+package excel
+
+import (
+	"encoding/json"
+	"eta/eta_api/models"
+	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/excel"
+	"eta/eta_api/utils"
+	"fmt"
+	"strconv"
+	"strings"
+	"time"
+)
+
+// AddEdb
+// @Title 新增指标接口
+// @Description 新增指标接口
+// @Param	request	body request.AddExcelInfoReq true "type json string"
+// @Success 200 {object} response.AddExcelInfoResp
+// @router /edb/add [post]
+func (c *CustomAnalysisController) AddEdb() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+
+	sysUser := c.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	deleteCache := true
+	cacheKey := "CACHE_EXCEL_TABLE_INFO_ADD_" + strconv.Itoa(sysUser.AdminId)
+	defer func() {
+		if deleteCache {
+			_ = utils.Rc.Delete(cacheKey)
+		}
+	}()
+	if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
+		deleteCache = false
+		br.Msg = "系统处理中,请稍后重试!"
+		br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(c.Ctx.Input.RequestBody)
+		return
+	}
+	var req request.SaveExcelInfoReq
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	req.ExcelName = strings.Trim(req.ExcelName, " ")
+	if req.ExcelName == "" {
+		br.Msg = "请填写表格名称!"
+		br.IsSendEmail = false
+		return
+	}
+
+	if req.ExcelInfoId <= 0 {
+		br.Msg = "请选择excel!"
+		br.IsSendEmail = false
+		return
+	}
+
+	if req.ExcelClassifyId <= 0 {
+		br.Msg = "分类参数错误!"
+		br.IsSendEmail = false
+		return
+	}
+
+	excelInfo, err := excelModel.GetExcelInfoById(req.ExcelInfoId)
+	if err != nil {
+		br.Msg = "找不到该EXCEL!"
+		br.ErrMsg = "找不到该EXCEL!err:" + err.Error()
+		return
+	}
+
+	if excelInfo.Source != utils.CUSTOM_ANALYSIS_TABLE {
+		br.Msg = "EXCEL异常!"
+		br.IsSendEmail = false
+		return
+	}
+
+	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)
+	//}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "保存成功"
+	br.Data = resp
+	br.IsAddLog = false //数据量太大了,不写入日志吧
+}
+
+func init() {
+	excelInfo, err := excelModel.GetExcelInfoById(160)
+	if err != nil {
+		fmt.Println("查找excel失败:", err)
+		return
+	}
+	_, err, _ = excel.GenerateExcelCustomAnalysisExcel(excelInfo)
+	if err != nil {
+		fmt.Println("生成excel失败:", err)
+		return
+	}
+}

+ 1 - 1
controllers/data_manage/excel_classify.go → controllers/data_manage/excel/excel_classify.go

@@ -1,4 +1,4 @@
-package data_manage
+package excel
 
 import (
 	"encoding/json"

+ 18 - 8
controllers/data_manage/excel_info.go → controllers/data_manage/excel/excel_info.go

@@ -1,4 +1,4 @@
-package data_manage
+package excel
 
 import (
 	"archive/zip"
@@ -1146,20 +1146,30 @@ func UpdateExcelInfoFileUrl(excelInfo *excel3.ExcelInfo) {
 		}
 	}()
 	fileName := excelInfo.ExcelName + "_" + excelInfo.UniqueCode + ".xlsx"
-	luckySheetData, err := excel.GetLuckySheetData(excelInfo.Content)
+
+	var downloadFilePath string // excel文件下载地址
+
+	switch excelInfo.Source {
+	case utils.EXCEL_DEFAULT: // 自定义表格
+		luckySheetData, err := excel.GetLuckySheetData(excelInfo.Content)
+		if err != nil {
+			fmt.Println("err:", err)
+			return
+		}
+		//_, err = luckySheetData.GetTableDataByLuckySheetDataStr()
+		downloadFilePath, err = luckySheetData.ToExcel()
+	case utils.CUSTOM_ANALYSIS_TABLE: // 自定义分析表格
+		downloadFilePath, err, _ = excel2.GenerateExcelCustomAnalysisExcel(excelInfo)
+	}
+
 	if err != nil {
 		fmt.Println("err:", err)
 		return
 	}
-	//_, err = luckySheetData.GetTableDataByLuckySheetDataStr()
-	downloadFilePath, err := luckySheetData.ToExcel()
 	defer func() {
 		_ = os.Remove(downloadFilePath)
 	}()
-	if err != nil {
-		fmt.Println("err:", err)
-		return
-	}
+
 	//上传到阿里云
 	resourceUrl, err := services.UploadAliyunV2(fileName, downloadFilePath)
 	if err != nil {

+ 12 - 2
models/data_manage/excel/excel_sheet_data.go

@@ -39,7 +39,7 @@ func AddExcelSheetData(excelInfo *ExcelSheetData) (err error) {
 }
 
 // GetSheetDataListBySheetIdListAndPage 根据sheet_id列表和页码获取所有的sheet数据详情
-func GetSheetDataListBySheetIdListAndPage(excelSheetIdList []int, page int) (item []*ExcelSheetData, err error) {
+func GetSheetDataListBySheetIdListAndPage(excelSheetIdList []int, page int) (items []*ExcelSheetData, err error) {
 	num := len(excelSheetIdList)
 	if num <= 0 {
 		return
@@ -47,7 +47,17 @@ func GetSheetDataListBySheetIdListAndPage(excelSheetIdList []int, page int) (ite
 	o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT *
 FROM excel_sheet_data WHERE 1=1 AND excel_sheet_id in (` + utils.GetOrmInReplace(num) + `) AND sort = ? `
-	_, err = o.Raw(sql, excelSheetIdList, page).QueryRows(&item)
+	_, err = o.Raw(sql, excelSheetIdList, page).QueryRows(&items)
+
+	return
+}
+
+// GetSheetDataListByExcelInfoId 根据表格id获取所有的sheet的所有数据详情
+func GetSheetDataListByExcelInfoId(excelInfoId int) (items []*ExcelSheetData, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT *
+FROM excel_sheet_data WHERE 1=1 AND excel_info_id = ? ORDER BY sort ASC `
+	_, err = o.Raw(sql, excelInfoId).QueryRows(&items)
 
 	return
 }

+ 11 - 0
models/data_manage/excel/request/excel.go

@@ -24,8 +24,19 @@ type SaveExcelInfoReq struct {
 	TableData       interface{} `description:"自定义表格的数据内容"`
 	OpSheetList     []SheetOp   `description:"sheet操作"`
 }
+
 type SheetOp struct {
 	SheetIndex int    `description:"对应的sheet下标"`
 	SheetName  string `description:"对应的sheet名称"`
 	OpType     string `description:"操作类型,新增:add;替换:replace,追加:append"`
 }
+
+type AddEdb struct {
+	ExcelInfoId  int    `description:"表格ID"`
+	DateSequence string `description:"日期序列"`
+	DataSequence string `description:"数据序列"`
+	EdbName      string `description:"指标名称"`
+	ClassifyId   int    `description:"分类id"`
+	Frequency    string `description:"频率"`
+	Unit         string `description:"单位"`
+}

+ 216 - 207
routers/commentsRouter.go

@@ -187,6 +187,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:CustomAnalysisController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:CustomAnalysisController"],
+        beego.ControllerComments{
+            Method: "AddEdb",
+            Router: `/edb/add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:CustomAnalysisController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:CustomAnalysisController"],
         beego.ControllerComments{
             Method: "BaseExcelDetail",
@@ -223,6 +232,213 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelClassifyController"],
+        beego.ControllerComments{
+            Method: "AddExcelClassify",
+            Router: `/excel_classify/add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelClassifyController"],
+        beego.ControllerComments{
+            Method: "DeleteExcelClassify",
+            Router: `/excel_classify/delete`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelClassifyController"],
+        beego.ControllerComments{
+            Method: "DeleteExcelClassifyCheck",
+            Router: `/excel_classify/delete/check`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelClassifyController"],
+        beego.ControllerComments{
+            Method: "EditExcelClassify",
+            Router: `/excel_classify/edit`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelClassifyController"],
+        beego.ControllerComments{
+            Method: "ExcelClassifyItems",
+            Router: `/excel_classify/items`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelClassifyController"],
+        beego.ControllerComments{
+            Method: "List",
+            Router: `/excel_classify/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelClassifyController"],
+        beego.ControllerComments{
+            Method: "ExcelClassifyMove",
+            Router: `/excel_classify/move`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "Add",
+            Router: `/excel_info/add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "Copy",
+            Router: `/excel_info/copy`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "Delete",
+            Router: `/excel_info/delete`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "Detail",
+            Router: `/excel_info/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "AddDraft",
+            Router: `/excel_info/draft/add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "Edit",
+            Router: `/excel_info/edit`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "List",
+            Router: `/excel_info/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "Move",
+            Router: `/excel_info/move`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "Calculate",
+            Router: `/excel_info/table/calculate`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "Download",
+            Router: `/excel_info/table/download`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "GetFirstEdbData",
+            Router: `/excel_info/table/first_edb_data_list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "GetFutureDateData",
+            Router: `/excel_info/table/future_date_list`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "GetHistoryDateData",
+            Router: `/excel_info/table/history_date_list`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "GetOtherEdbData",
+            Router: `/excel_info/table/other_edb_data_list`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "Refresh",
+            Router: `/excel_info/table/refresh`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "GetExcelTableData",
+            Router: `/excel_info/table_data`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/future_good:FutureGoodChartClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/future_good:FutureGoodChartClassifyController"],
         beego.ControllerComments{
             Method: "AddChartClassify",
@@ -2698,213 +2914,6 @@ func init() {
             Filters: nil,
             Params: nil})
 
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelClassifyController"],
-        beego.ControllerComments{
-            Method: "AddExcelClassify",
-            Router: `/excel_classify/add`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelClassifyController"],
-        beego.ControllerComments{
-            Method: "DeleteExcelClassify",
-            Router: `/excel_classify/delete`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelClassifyController"],
-        beego.ControllerComments{
-            Method: "DeleteExcelClassifyCheck",
-            Router: `/excel_classify/delete/check`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelClassifyController"],
-        beego.ControllerComments{
-            Method: "EditExcelClassify",
-            Router: `/excel_classify/edit`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelClassifyController"],
-        beego.ControllerComments{
-            Method: "ExcelClassifyItems",
-            Router: `/excel_classify/items`,
-            AllowHTTPMethods: []string{"get"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelClassifyController"],
-        beego.ControllerComments{
-            Method: "List",
-            Router: `/excel_classify/list`,
-            AllowHTTPMethods: []string{"get"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelClassifyController"],
-        beego.ControllerComments{
-            Method: "ExcelClassifyMove",
-            Router: `/excel_classify/move`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "Add",
-            Router: `/excel_info/add`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "Copy",
-            Router: `/excel_info/copy`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "Delete",
-            Router: `/excel_info/delete`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "Detail",
-            Router: `/excel_info/detail`,
-            AllowHTTPMethods: []string{"get"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "AddDraft",
-            Router: `/excel_info/draft/add`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "Edit",
-            Router: `/excel_info/edit`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "List",
-            Router: `/excel_info/list`,
-            AllowHTTPMethods: []string{"get"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "Move",
-            Router: `/excel_info/move`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "Calculate",
-            Router: `/excel_info/table/calculate`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "Download",
-            Router: `/excel_info/table/download`,
-            AllowHTTPMethods: []string{"get"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "GetFirstEdbData",
-            Router: `/excel_info/table/first_edb_data_list`,
-            AllowHTTPMethods: []string{"get"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "GetFutureDateData",
-            Router: `/excel_info/table/future_date_list`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "GetHistoryDateData",
-            Router: `/excel_info/table/history_date_list`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "GetOtherEdbData",
-            Router: `/excel_info/table/other_edb_data_list`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "Refresh",
-            Router: `/excel_info/table/refresh`,
-            AllowHTTPMethods: []string{"get"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ExcelInfoController"],
-        beego.ControllerComments{
-            Method: "GetExcelTableData",
-            Router: `/excel_info/table_data`,
-            AllowHTTPMethods: []string{"get"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ManualController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ManualController"],
         beego.ControllerComments{
             Method: "ClassifyList",

+ 2 - 2
routers/router.go

@@ -149,8 +149,8 @@ func init() {
 				&data_manage.ChartInfoController{},
 				&data_manage.ManualController{},
 				&data_manage.BaseFromChangesVisitorsCovidController{},
-				&data_manage.ExcelClassifyController{},
-				&data_manage.ExcelInfoController{},
+				&excel.ExcelClassifyController{},
+				&excel.ExcelInfoController{},
 				&data_manage.PredictEdbClassifyController{},
 				&data_manage.PredictEdbInfoController{},
 				&data_manage.BaseFromNationalStatisticsController{},

+ 19 - 16
services/data/excel/custom_analysis.go

@@ -138,7 +138,7 @@ func AddCustomAnalysisTable(excelName, content, excelImage string, excelClassify
 			CalcChain:    string(sheetCalcChain),
 		}
 
-		lenCellData := len(sheetInfo.Celldata)
+		lenCellData := len(sheetInfo.CellData)
 
 		splitLen := lenCellData / cellSplitNum
 		residue := lenCellData % cellSplitNum
@@ -155,7 +155,7 @@ func AddCustomAnalysisTable(excelName, content, excelImage string, excelClassify
 				endRow = lenCellData
 			}
 
-			tmpData := sheetInfo.Celldata[startRow:endRow]
+			tmpData := sheetInfo.CellData[startRow:endRow]
 			tmpDataByte, tmpErr := json.Marshal(tmpData)
 			if tmpErr != nil {
 				errMsg = "保存失败"
@@ -339,7 +339,7 @@ func SaveCustomAnalysisTable(excelInfo *excel.ExcelInfo, excelName, content, exc
 			CalcChain:    string(sheetCalcChain),
 		}
 
-		lenCellData := len(sheetInfo.Celldata)
+		lenCellData := len(sheetInfo.CellData)
 
 		splitLen := lenCellData / cellSplitNum
 		residue := lenCellData % cellSplitNum
@@ -356,7 +356,7 @@ func SaveCustomAnalysisTable(excelInfo *excel.ExcelInfo, excelName, content, exc
 				endRow = lenCellData
 			}
 
-			tmpData := sheetInfo.Celldata[startRow:endRow]
+			tmpData := sheetInfo.CellData[startRow:endRow]
 			tmpDataByte, tmpErr := json.Marshal(tmpData)
 			if tmpErr != nil {
 				errMsg = "保存失败"
@@ -395,21 +395,24 @@ type LuckySheet struct {
 	//	} `json:"columnlen"`
 	//} `json:"config"`
 	Config           interface{}
-	Index            string `json:"index"`
-	Order            string `json:"order"`
-	ZoomRatio        int    `json:"zoomRatio"`
-	ShowGridLines    string `json:"showGridLines"`
-	DefaultColWidth  int    `json:"defaultColWidth"`
-	DefaultRowHeight int    `json:"defaultRowHeight"`
-	Celldata         []struct {
-		R int         `json:"r"`
-		C int         `json:"c"`
-		V interface{} `json:"v,omitempty"`
-	} `json:"celldata"`
-	CalcChain []interface{} `json:"calcChain"`
+	Index            string               `json:"index"`
+	Order            string               `json:"order"`
+	ZoomRatio        int                  `json:"zoomRatio"`
+	ShowGridLines    string               `json:"showGridLines"`
+	DefaultColWidth  int                  `json:"defaultColWidth"`
+	DefaultRowHeight int                  `json:"defaultRowHeight"`
+	CellData         []LuckySheetCellData `json:"celldata"`
+	CalcChain        []interface{}        `json:"calcChain"`
 	//DataVerification struct {
 	//} `json:"dataVerification"`
 	//Hyperlink struct {
 	//} `json:"hyperlink"`
 	//Hide int `json:"hide"`
 }
+
+// LuckySheetCellData 单元格数据
+type LuckySheetCellData struct {
+	R int         `json:"r"`
+	C int         `json:"c"`
+	V interface{} `json:"v,omitempty"`
+}

+ 84 - 0
services/data/excel/custom_analysis_edb.go

@@ -0,0 +1,84 @@
+package excel
+
+import (
+	"encoding/json"
+	"errors"
+	"eta/eta_api/models/data_manage/excel"
+	excelServices "eta/eta_api/services/excel"
+	"fmt"
+)
+
+// GetCustomAnalysisExcelData 获取自定义分析的表格data数据
+func GetCustomAnalysisExcelData(excelInfo *excel.ExcelInfo) (luckySheet excelServices.LuckySheet, err error, errMsg string) {
+	// 查找当前excel的sheet列表
+	sheetList, err := excel.GetAllSheetList(excelInfo.ExcelInfoId)
+	if err != nil {
+		errMsg = "保存失败"
+		err = errors.New("查找当前excel的sheet列表失败,Err:" + err.Error())
+		return
+	}
+	currSheetMap := make(map[string]string)
+	for _, sheet := range sheetList {
+		currSheetMap[sheet.SheetName] = sheet.SheetName
+	}
+
+	sheetCellDataMapList := make(map[int][]excelServices.LuckySheetCellData)
+
+	// 通过excel的id获取各个sheet的单元格数据map
+	{
+		dataList, tmpErr := excel.GetSheetDataListByExcelInfoId(excelInfo.ExcelInfoId)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+
+		for _, cellData := range dataList {
+			sheetDataList, ok := sheetCellDataMapList[cellData.ExcelSheetId]
+			if !ok {
+				sheetDataList = make([]excelServices.LuckySheetCellData, 0)
+			}
+
+			tmpSheetDataList := make([]excelServices.LuckySheetCellData, 0)
+			err = json.Unmarshal([]byte(cellData.Data), &tmpSheetDataList)
+			if err != nil {
+				return
+			}
+			sheetCellDataMapList[cellData.ExcelSheetId] = append(sheetDataList, tmpSheetDataList...)
+		}
+	}
+
+	// 转成luckySheet的数据格式
+	luckySheet = excelServices.LuckySheet{
+		SheetList: make([]excelServices.LuckySheetData, 0),
+	}
+
+	for _, sheet := range sheetList {
+		var luckySheetDataConfig excelServices.LuckySheetDataConfig
+		err = json.Unmarshal([]byte(sheet.Config), &luckySheetDataConfig)
+		if err != nil {
+			return
+		}
+		tmpLuckySheetDataInfo := excelServices.LuckySheetData{
+			Name:     sheet.SheetName,
+			Index:    sheet.Sort,
+			CellData: sheetCellDataMapList[sheet.ExcelSheetId],
+			Config:   luckySheetDataConfig,
+		}
+		luckySheet.SheetList = append(luckySheet.SheetList, tmpLuckySheetDataInfo)
+	}
+
+	return
+}
+
+// GenerateExcelCustomAnalysisExcel 根据自定义分析的表格data数据生成excel
+func GenerateExcelCustomAnalysisExcel(excelInfo *excel.ExcelInfo) (downloadFilePath string, err error, errMsg string) {
+	luckySheet, err, errMsg := GetCustomAnalysisExcelData(excelInfo)
+	if err != nil {
+		return
+	}
+
+	downloadFilePath, err = luckySheet.ToExcel()
+	fmt.Println("生成的文件地址:", downloadFilePath)
+
+	return
+}

+ 49 - 18
services/excel/lucky_sheet.go

@@ -115,14 +115,14 @@ type LuckySheetData struct {
 	ChWidth  int64                `json:"ch_width" description:"工作表区域的宽度"`
 	Config   LuckySheetDataConfig `json:"config" description:""`
 	//Index             int                  `json:"index" description:"工作表索引"`
-	RhHeight   float64 `json:"rh_height" description:"工作表区域的高度"`
-	ScrollLeft float64 `json:"scrollLeft" description:"左右滚动条位置"`
-	ScrollTop  float64 `json:"scrollTop" description:"上下滚动条位置"`
-	//CalcChain         float64 `json:"calcChain" description:"公式链"`
-	Status            int64   `json:"status" description:"激活状态"`
-	VisibleDataColumn []int64 `json:"visibledatacolumn" description:"所有列的位置信息,递增的列位置数据,初始化无需设置"`
-	VisibleDataRow    []int64 `json:"visibledatarow" description:"所有行的位置信息,递增的行位置数据,初始化无需设置"`
-	ZoomRatio         float64 `json:"zoomRatio" description:"sheet缩放比例"`
+	RhHeight          float64       `json:"rh_height" description:"工作表区域的高度"`
+	ScrollLeft        float64       `json:"scrollLeft" description:"左右滚动条位置"`
+	ScrollTop         float64       `json:"scrollTop" description:"上下滚动条位置"`
+	CalcChain         []interface{} `json:"calcChain" description:"公式链"`
+	Status            int64         `json:"status" description:"激活状态"`
+	VisibleDataColumn []int64       `json:"visibledatacolumn" description:"所有列的位置信息,递增的列位置数据,初始化无需设置"`
+	VisibleDataRow    []int64       `json:"visibledatarow" description:"所有行的位置信息,递增的行位置数据,初始化无需设置"`
+	ZoomRatio         float64       `json:"zoomRatio" description:"sheet缩放比例"`
 }
 
 // LuckySheetDataConfig sheet表单的配置
@@ -336,6 +336,27 @@ func (tableData TableData) ToExcel() (downloadFilePath string, err error) {
 	if err != nil {
 		return
 	}
+
+	// 将单个sheet的数据写入到excel
+	err = tableData.WriteExcelSheetData(xlsxFile, "sheet1")
+	if err != nil {
+		return
+	}
+
+	//return
+	err = xlsxFile.Save(downloadFilePath)
+	if err != nil {
+		return
+	}
+	//randStr := time.Now().Format(utils.FormatDateTimeUnSpace)
+	//downloadFileName := "即将到期客户数据_" + randStr + ".xlsx"
+	//this.Ctx.Output.Download(downLoadnFilePath, downloadFileName)
+
+	return
+}
+
+// WriteExcelSheetData 通过 TableData生成excel表格数据
+func (tableData TableData) WriteExcelSheetData(xlsxFile *xlsx.File, sheetName string) (err error) {
 	style := xlsx.NewStyle()
 	alignment := xlsx.Alignment{
 		Horizontal: "center",
@@ -346,7 +367,7 @@ func (tableData TableData) ToExcel() (downloadFilePath string, err error) {
 	style.Alignment = alignment
 	style.ApplyAlignment = true
 
-	sheet, err := xlsxFile.AddSheet("sheet1")
+	sheet, err := xlsxFile.AddSheet(sheetName)
 	if err != nil {
 		return
 	}
@@ -424,7 +445,24 @@ func (tableData TableData) ToExcel() (downloadFilePath string, err error) {
 					}
 				}
 			}
-			tmpRow.SetString(valueStr)
+			//tmpRow.SetString(valueStr)
+			switch cellInfo.CellType.Fa {
+			case "General":
+				if cellInfo.CellType.S != nil {
+					tmpRow.SetString(valueStr)
+				} else {
+					tmpRow.SetValue(cellInfo.Value)
+				}
+			case "@":
+				tmpRow.SetString(valueStr)
+			default:
+				tmpRow.SetString(valueStr)
+			}
+			if cellInfo.Function != `` {
+				//xlsxFile.
+				//xlsxFile.SetCellFormula
+				tmpRow.SetFormula(cellInfo.Function)
+			}
 			//if cellInfo.Function != `` {
 			//	tmpRow.SetFormula(cellInfo.Function)
 			//}
@@ -438,14 +476,7 @@ func (tableData TableData) ToExcel() (downloadFilePath string, err error) {
 			}
 		}
 	}
-	//return
-	err = xlsxFile.Save(downloadFilePath)
-	if err != nil {
-		return
-	}
-	//randStr := time.Now().Format(utils.FormatDateTimeUnSpace)
-	//downloadFileName := "即将到期客户数据_" + randStr + ".xlsx"
-	//this.Ctx.Output.Download(downLoadnFilePath, downloadFileName)
+
 	return
 }
 

+ 49 - 0
services/excel/lucky_sheet_excel.go

@@ -0,0 +1,49 @@
+package excel
+
+import "github.com/tealeg/xlsx"
+
+type LuckySheet struct {
+	SheetList []LuckySheetData `description:"sheet数据"`
+}
+
+// GetExcelData 通过 luckySheetData获取excel表格数据
+func (item *LuckySheet) GetExcelData() (xlsxFile *xlsx.File, err error) {
+	xlsxFile = xlsx.NewFile()
+	if err != nil {
+		return
+	}
+
+	for _, sheet := range item.SheetList {
+		tableData, tmpErr := sheet.GetTableDataByLuckySheetDataStr()
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		err = tableData.WriteExcelSheetData(xlsxFile, sheet.Name)
+		if err != nil {
+			return
+		}
+	}
+
+	return
+}
+
+// ToExcel 通过 luckySheetData生成excel表格文件
+func (item *LuckySheet) ToExcel() (downloadFilePath string, err error) {
+	// 获取生成的excel路径
+	downloadFilePath, err = getDownloadPath()
+	if err != nil {
+		return
+	}
+
+	// 获取excel表格数据
+	xlsxFile, err := item.GetExcelData()
+	if err != nil {
+		return
+	}
+
+	// 文件保存
+	err = xlsxFile.Save(downloadFilePath)
+
+	return
+}