|
@@ -1,6 +1,7 @@
|
|
|
package excel
|
|
|
|
|
|
import (
|
|
|
+ "eta/eta_api/models/data_manage"
|
|
|
"eta/eta_api/utils"
|
|
|
"fmt"
|
|
|
"github.com/beego/beego/v2/client/orm"
|
|
@@ -10,12 +11,21 @@ import (
|
|
|
type ExcelChartEdb struct {
|
|
|
ExcelChartEdbId int `orm:"column(excel_chart_edb_id);pk"`
|
|
|
ExcelInfoId int `description:"表格id"`
|
|
|
+ ChartInfoId int `description:"图表id"`
|
|
|
EdbCode string `description:"指标编码"`
|
|
|
EdbName string `description:"指标名称"`
|
|
|
DateSequence string `description:"日期序列选区"`
|
|
|
DataSequence string `description:"数据序列选区"`
|
|
|
SysUserId int `description:"创建人"`
|
|
|
SysUserRealName string `description:"创建人姓名"`
|
|
|
+ MaxData float64 `description:"上限"`
|
|
|
+ MinData float64 `description:"下限"`
|
|
|
+ IsOrder bool `description:"true:正序,false:逆序"`
|
|
|
+ IsAxis int `description:"true:左轴,false:右轴"`
|
|
|
+ EdbInfoType int `description:"true:标准指标,false:领先指标"`
|
|
|
+ LeadValue int `description:"领先值"`
|
|
|
+ LeadUnit string `description:"领先单位"`
|
|
|
+ FromTag string `description:"标签"`
|
|
|
ModifyTime time.Time `description:"修改时间"`
|
|
|
CreateTime time.Time `description:"创建时间"`
|
|
|
}
|
|
@@ -45,8 +55,14 @@ func (e *ExcelChartEdb) Delete() (err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+type AddChartEdbAndDataItem struct {
|
|
|
+ ChartEdb *ExcelChartEdb
|
|
|
+ DateList []string `description:"日期列表"`
|
|
|
+ ValList []float64 `description:"数据列表"`
|
|
|
+}
|
|
|
+
|
|
|
// 同时添加指标和指标数据
|
|
|
-func (e *ExcelChartEdb) AddChartEdb(chartEdb *ExcelChartEdb, dateList []string, valList []float64) (err error) {
|
|
|
+func (e *ExcelChartEdb) AddChartEdbAndData(list []*AddChartEdbAndDataItem, chartInfo *data_manage.ChartInfo) (err error) {
|
|
|
o, err := orm.NewOrmUsingDB("data").Begin()
|
|
|
if err != nil {
|
|
|
return
|
|
@@ -59,6 +75,29 @@ func (e *ExcelChartEdb) AddChartEdb(chartEdb *ExcelChartEdb, dateList []string,
|
|
|
}
|
|
|
}()
|
|
|
|
|
|
+ // 图表指标信息入库
|
|
|
+ updateIds := make([]int, 0)
|
|
|
+ for _, item := range list {
|
|
|
+ err = addChartEdbAndData(o, item.ChartEdb, item.DateList, item.ValList)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ updateIds = append(updateIds, item.ChartEdb.ExcelChartEdbId)
|
|
|
+ }
|
|
|
+
|
|
|
+ //新增图表
|
|
|
+ chartInfoId, err := o.Insert(chartInfo)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新图表id
|
|
|
+ sql := `update excel_chart_edb set chart_info_id = ? where excel_chart_edb_id in (` + utils.GetOrmInReplace(len(updateIds)) + `)`
|
|
|
+ _, err = o.Raw(sql, chartInfoId).Exec()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func addChartEdbAndData(o orm.TxOrmer, chartEdb *ExcelChartEdb, dateList []string, valList []float64) (err error) {
|
|
|
// 图表指标信息入库
|
|
|
lastId, err := o.Insert(chartEdb)
|
|
|
if err != nil {
|
|
@@ -68,31 +107,33 @@ func (e *ExcelChartEdb) AddChartEdb(chartEdb *ExcelChartEdb, dateList []string,
|
|
|
|
|
|
// 图表指标数据入库
|
|
|
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 {
|
|
|
+ if len(dateList) > 0 && len(valList) > 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
|
|
|
}
|
|
|
- addList = addList[:0]
|
|
|
+ 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]
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -103,6 +144,5 @@ func (e *ExcelChartEdb) AddChartEdb(chartEdb *ExcelChartEdb, dateList []string,
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
return
|
|
|
}
|