Browse Source

平衡表画图

xyxie 10 months ago
parent
commit
7022b99cb9

+ 1 - 2
controllers/data_manage/excel/excel_info.go

@@ -230,7 +230,6 @@ func (c *ExcelInfoController) Add() {
 		ModifyTime:         time.Now(),
 		CreateTime:         time.Now(),
 		ParentId:           req.ParentId,
-		BalanceType:        req.BalanceType,
 		UpdateUserId:       sysUser.AdminId,
 		UpdateUserRealName: sysUser.RealName,
 	}
@@ -695,7 +694,7 @@ func (c *ExcelInfoController) Edit() {
 			return
 		}
 		content = string(contentByte)
-	case utils.MIXED_TABLE: // 混合表格
+	case utils.MIXED_TABLE, utils.BALANCE_TABLE: // 混合表格, 平衡表
 		contentByte, err := json.Marshal(req.TableData)
 		if err != nil {
 			br.Msg = "混合表格数据获取失败"

+ 44 - 0
models/data_manage/excel/excel_chart_data.go

@@ -0,0 +1,44 @@
+package excel
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type ExcelChartData struct {
+	ExcelChartDataId int `orm:"column(excel_chart_data_id);pk"`
+	ExcelInfoId      int `description:"表格id"`
+	ExcelChartEdbId  int `description:"指标ID"`
+	DataTime         string
+	Value            float64
+	ModifyTime       time.Time `description:"修改时间"`
+	CreateTime       time.Time `description:"创建时间"`
+	DataTimestamp    int64
+}
+
+func (e *ExcelChartData) TableName() string {
+	return "excel_chart_data"
+}
+
+// 新增
+func (e *ExcelChartData) Add() (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Insert(e)
+	return
+}
+
+// 修改
+func (e *ExcelChartData) Update(cols []string) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Update(e, cols...)
+	return
+}
+
+// 删除
+func (e *ExcelChartData) Delete() (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Delete(e)
+	return
+}
+
+// 查询

+ 108 - 0
models/data_manage/excel/excel_chart_edb.go

@@ -0,0 +1,108 @@
+package excel
+
+import (
+	"eta/eta_api/utils"
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type ExcelChartEdb struct {
+	ExcelChartEdbId int       `orm:"column(excel_chart_edb_id);pk"`
+	ExcelInfoId     int       `description:"表格id"`
+	EdbCode         string    `description:"指标编码"`
+	EdbName         string    `description:"指标名称"`
+	DateSequence    string    `description:"日期序列选区"`
+	DataSequence    string    `description:"数据序列选区"`
+	SysUserId       int       `description:"创建人"`
+	SysUserRealName string    `description:"创建人姓名"`
+	ModifyTime      time.Time `description:"修改时间"`
+	CreateTime      time.Time `description:"创建时间"`
+}
+
+func (e *ExcelChartEdb) TableName() string {
+	return "excel_chart_edb"
+}
+
+// 新增
+func (e *ExcelChartEdb) Add() (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Insert(e)
+	return
+}
+
+// 修改
+func (e *ExcelChartEdb) Update(cols []string) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Update(e, cols...)
+	return
+}
+
+// 删除
+func (e *ExcelChartEdb) Delete() (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Delete(e)
+	return
+}
+
+// 同时添加指标和指标数据
+func (e *ExcelChartEdb) AddChartEdb(chartEdb *ExcelChartEdb, dateList []string, valList []float64) (err error) {
+	o, err := orm.NewOrmUsingDB("data").Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = o.Rollback()
+		} else {
+			_ = o.Commit()
+		}
+	}()
+
+	// 图表指标信息入库
+	lastId, err := o.Insert(chartEdb)
+	if err != nil {
+		return
+	}
+	chartEdb.ExcelChartEdbId = int(lastId)
+
+	// 图表指标数据入库
+	addList := make([]*ExcelChartData, 0)
+	for k, v := range dateList {
+		chartData := &ExcelChartData{
+			ExcelInfoId:     chartEdb.ExcelInfoId,
+			ExcelChartEdbId: chartEdb.ExcelChartEdbId,
+			DataTime:        v,
+			Value:           valList[k],
+			ModifyTime:      time.Now(),
+			CreateTime:      time.Now(),
+		}
+		//时间戳
+		currentDate, er := time.Parse(utils.FormatDate, v)
+		if er != nil {
+			err = fmt.Errorf("时间格式化失败 err:%v", er)
+			return
+		}
+		timestamp := currentDate.UnixNano() / 1e6
+		chartData.DataTimestamp = timestamp
+		addList = append(addList, chartData)
+		// data信息入库
+		if len(addList) > 1000 {
+			_, err = o.InsertMulti(len(addList), len(addList))
+			if err != nil {
+				return
+			}
+			addList = addList[:0]
+		}
+	}
+
+	// data信息入库
+	if len(addList) > 0 {
+		_, err = o.InsertMulti(len(addList), len(addList))
+		if err != nil {
+			return
+		}
+	}
+
+	return
+}

+ 10 - 0
models/data_manage/excel/request/balance_table.go

@@ -0,0 +1,10 @@
+package request
+
+type AddBalanceTableChart struct {
+	ExcelInfoId     int      `description:"表格ID"`
+	DateSequenceStr string   `description:"日期序列"`
+	DateSequenceVal []string `description:"日期序列的值列表"`
+	DataSequenceStr string   `description:"数据序列"`
+	DataSequenceVal []string `description:"数据序列的值列表"`
+	EdbName         string   `description:"指标名称"`
+}

+ 0 - 1
models/data_manage/excel/request/excel_info.go

@@ -24,7 +24,6 @@ type AddExcelInfoReq struct {
 	Content         string      `description:"Excel表格内容"`
 	TableData       interface{} `description:"自定义表格的数据内容"`
 	ParentId        int         `description:"表格的父级id"`
-	BalanceType     int         `description:"平衡表类型:0 动态表,1静态表"`
 }
 
 // EditExcelInfoReq 编辑表格请求

+ 46 - 0
services/data/excel/balance_table.go

@@ -0,0 +1,46 @@
+package excel
+
+import (
+	excelModel "eta/eta_api/models/data_manage/excel"
+	"eta/eta_api/models/data_manage/excel/request"
+	"eta/eta_api/models/system"
+	"eta/eta_api/utils"
+	"fmt"
+)
+
+// AddBalanceTableChart 添加平衡表图表
+func AddBalanceTableChart(req request.AddBalanceTableChart, sysUser *system.Admin) (err error, errMsg string) {
+	// 获取表格信息
+	excelInfo, err := excelModel.GetExcelInfoById(req.ExcelInfoId)
+	if err != nil {
+		err = fmt.Errorf("找不到该EXCEL!")
+		errMsg = "找不到该EXCEL!err:" + err.Error()
+		return
+	}
+
+	if excelInfo.Source != utils.BALANCE_TABLE {
+		err = fmt.Errorf("EXCEL类型错误!")
+		return
+	}
+	excelEdb := new(excelModel.ExcelChartEdb)
+	excelEdb.EdbName = req.EdbName
+	// todo 新增指标编码
+	excelEdb.EdbCode = ""
+	excelEdb.ExcelInfoId = excelInfo.ExcelInfoId
+	excelEdb.DateSequence = req.DateSequenceStr
+	excelEdb.DataSequence = req.DataSequenceStr
+	excelEdb.SysUserId = sysUser.AdminId
+	excelEdb.SysUserRealName = sysUser.RealName
+	// 如果是静态表,则直接使用前端传输的数据落到数据库里
+	if excelInfo.BalanceType == 0 {
+
+	} else if excelInfo.BalanceType == 1 {
+		// 如果是静态表,则直接使用前端传输的数据落到数据库里
+	}
+
+	// 将平衡表图表添加到工作表中
+	// 新增指标数据
+
+	// 新增图表
+	return
+}