|
@@ -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
|
|
|
+}
|