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 }