Bladeren bron

Merge branch 'bzq/dm' of eta_gn_server/eta_chart_lib into dm

鲍自强 5 maanden geleden
bovenliggende
commit
2e9c588a2e
51 gewijzigde bestanden met toevoegingen van 6655 en 1687 verwijderingen
  1. 96 0
      global/dm.go
  2. 17 0
      global/global.go
  3. 3 0
      go.mod
  4. 6 0
      go.sum
  5. 2 0
      main.go
  6. 67 13
      models/business_conf.go
  7. 728 129
      models/chart.go
  8. 92 13
      models/chart_edb_mapping.go
  9. 295 45
      models/chart_series.go
  10. 30 12
      models/chart_series_edb_mapping.go
  11. 94 44
      models/data_manage/chart_info.go
  12. 116 36
      models/data_manage/chart_info_correlation.go
  13. 198 54
      models/data_manage/chart_theme/chart_theme.go
  14. 95 22
      models/data_manage/chart_theme/chart_theme_type.go
  15. 68 16
      models/data_manage/cross_variety/chart_tag.go
  16. 47 12
      models/data_manage/cross_variety/chart_tag_variety.go
  17. 119 29
      models/data_manage/cross_variety/chart_variety.go
  18. 115 39
      models/data_manage/edb_info.go
  19. 93 26
      models/data_manage/edb_info_calculate.go
  20. 80 20
      models/data_manage/edb_source.go
  21. 136 27
      models/data_manage/excel/excel_chart_data.go
  22. 451 97
      models/data_manage/excel/excel_chart_edb.go
  23. 251 70
      models/data_manage/excel/excel_classify.go
  24. 22 16
      models/data_manage/excel/excel_draft.go
  25. 160 34
      models/data_manage/excel/excel_edb_mapping.go
  26. 673 155
      models/data_manage/excel/excel_info.go
  27. 112 44
      models/data_manage/excel/excel_sheet.go
  28. 73 18
      models/data_manage/excel/excel_sheet_data.go
  29. 138 32
      models/data_manage/factor_edb_series.go
  30. 162 40
      models/data_manage/factor_edb_series_chart_mapping.go
  31. 175 40
      models/data_manage/factor_edb_series_mapping.go
  32. 85 25
      models/data_manage/future_good/chart_info_future_good_profit.go
  33. 218 57
      models/data_manage/future_good/future_good_chart_classify.go
  34. 137 41
      models/data_manage/future_good/future_good_edb_info.go
  35. 146 43
      models/data_manage/future_good/future_good_edb_info_data.go
  36. 60 21
      models/data_manage/multiple_graph_config.go
  37. 74 21
      models/data_manage/multiple_graph_config_chart_mapping.go
  38. 72 21
      models/data_manage/multiple_graph_config_edb_mapping.go
  39. 167 41
      models/data_manage/predict_edb_conf.go
  40. 125 39
      models/data_manage/predict_edb_conf_calculate_mapping.go
  41. 39 11
      models/data_manage/predict_edb_rule_data.go
  42. 51 57
      models/db.go
  43. 16 0
      models/dm_base.go
  44. 337 87
      models/excel_info.go
  45. 124 46
      models/excel_info_rule_mapping.go
  46. 188 44
      models/factor_edb_series_calculate_data_qjjs.go
  47. 21 7
      models/share_chart_refresh_log.go
  48. 40 17
      models/table.go
  49. 33 26
      models/table_data.go
  50. 6 0
      utils/config.go
  51. 2 0
      utils/constants.go

+ 96 - 0
global/dm.go

@@ -0,0 +1,96 @@
+package global
+
+import (
+	_ "dm"
+	dm "dmgorm2"
+	"eta_gn/eta_chart_lib/utils"
+	"fmt"
+	"io"
+	"log"
+	"os"
+	"time"
+
+	"gorm.io/gorm"
+	"gorm.io/gorm/logger"
+	"gorm.io/gorm/schema"
+
+	_ "github.com/go-sql-driver/mysql"
+)
+
+// InitDm
+// @Description: 达梦数据库初始化
+func InitDm() {
+	dmSqlMap := make(map[string]*gorm.DB)
+
+	//开启日志
+	logWriter := io.MultiWriter(utils.Binlog) //binlog日志,记录到文件中去
+	if utils.RunMode == `dev` {               // 测试环境,默认输出在控制台,不需要的话,可以注释if里面下面的这行
+		logWriter = io.MultiWriter(utils.Binlog, os.Stdout)
+	}
+	newLogger := logger.New(log.New(logWriter, "\r\n", log.LstdFlags), logger.Config{
+		SlowThreshold:             200 * time.Millisecond, //慢sql :200ms
+		LogLevel:                  logger.Info,            //记录的日志类型,info代表所有信息都记录
+		IgnoreRecordNotFoundError: true,                   //是否忽略找不到数据错误信息(只是日志记录记录成err还是普通的输出的区别,并不影响业务代码中的:找不到数据行error)
+		Colorful:                  true,                   //是否颜色输出
+	})
+
+	// 默认库
+	connectDm(utils.DM_URL, "default", newLogger, dmSqlMap, true)
+
+	// 指标库
+	connectDm(utils.DM_URL_DATA, "data", newLogger, dmSqlMap, false)
+
+	//全局赋值数据库链接
+	DmSQL = dmSqlMap
+
+}
+
+// connectDm
+// @Description: 达梦数据库连接
+// @param dsn
+// @param aliasName
+// @param newLogger
+// @param dmSqlMap
+// @param isDefault
+func connectDm(dsn, aliasName string, newLogger logger.Interface, dmSqlMap map[string]*gorm.DB, isDefault bool) {
+	//fmt.Println("dsn:", dsn, "  ==  ;aliasName:", aliasName)
+	if dsn == `` {
+		return
+	}
+	//dsn := "dm://SYSDBA:SYSDBA001@8.136.199.33:30236?schema=\"eta_master\""
+	//dsn := "dm://ETA:Han6258199118%60@localhost:5236?schema=ECOLOGY_TARGET"
+	db, err := gorm.Open(dm.Open(dsn), &gorm.Config{
+		Logger: newLogger,
+		NamingStrategy: schema.NamingStrategy{
+			SingularTable: true, // 表示使用单数表名,启用该选项后,GORM 将不会对表名进行复数化处理
+		},
+	})
+	if err != nil {
+		//global.LOG.Errorf("mysql 启动异常,数据库:default;Err:", err)
+		panic(fmt.Errorf("mysql 启动异常,数据库:%s;Err:%s", aliasName, err))
+	}
+
+	//创建连接池
+	sqlDB, err := db.DB()
+	if err != nil {
+		//global.LOG.Errorf("mysql 创建连接池失败,数据库:default;Err:", err)
+		panic(fmt.Errorf("mysql 创建连接池失败,数据库:%s;Err:%s", aliasName, err))
+	}
+
+	dmSqlMap[aliasName] = db
+
+	//默认数据库连接
+	if isDefault {
+		DEFAULT_DmSQL = db
+	}
+
+	// SetMaxIdleConns 设置空闲连接池中连接的最大数量
+	sqlDB.SetMaxIdleConns(50)
+
+	// SetMaxOpenConns 设置打开数据库连接的最大数量。
+	sqlDB.SetMaxOpenConns(100)
+
+	// SetConnMaxLifetime 设置了连接可复用的最大时间。
+	sqlDB.SetConnMaxLifetime(10 * time.Minute)
+
+}

+ 17 - 0
global/global.go

@@ -0,0 +1,17 @@
+package global
+
+import (
+	_ "dm"
+	_ "github.com/go-sql-driver/mysql"
+	"gorm.io/gorm"
+)
+
+var (
+	DmSQL         map[string]*gorm.DB //数据库连接配置
+	DEFAULT_DmSQL *gorm.DB            //默认数据库连接配置
+)
+
+func init() {
+	// 初始化达梦连接
+	InitDm()
+}

+ 3 - 0
go.mod

@@ -16,6 +16,7 @@ require (
 	github.com/yidane/formula v0.0.0-20220322063702-c9da84ba3476
 	go.mongodb.org/mongo-driver v1.15.0
 	gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
+	gorm.io/gorm v1.25.12
 )
 
 require (
@@ -35,6 +36,8 @@ require (
 	github.com/gonum/lapack v0.0.0-20181123203213-e4cdc5a0bff9 // indirect
 	github.com/gonum/matrix v0.0.0-20181209220409-c518dec07be9 // indirect
 	github.com/hashicorp/golang-lru v0.5.4 // indirect
+	github.com/jinzhu/inflection v1.0.0 // indirect
+	github.com/jinzhu/now v1.1.5 // indirect
 	github.com/klauspost/compress v1.13.6 // indirect
 	github.com/kr/text v0.2.0 // indirect
 	github.com/leodido/go-urn v1.2.0 // indirect

+ 6 - 0
go.sum

@@ -109,6 +109,10 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/
 github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
 github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
 github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
+github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
+github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
+github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
 github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
 github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
 github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
@@ -342,3 +346,5 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8=
+gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=

+ 2 - 0
main.go

@@ -2,6 +2,7 @@ package main
 
 import (
 	"eta_gn/eta_chart_lib/controllers"
+	"eta_gn/eta_chart_lib/models"
 	_ "eta_gn/eta_chart_lib/routers"
 	"eta_gn/eta_chart_lib/services/alarm_msg"
 	"eta_gn/eta_chart_lib/utils"
@@ -20,6 +21,7 @@ func main() {
 		beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"
 	}
 
+	models.AfterInitTable()
 	// 异常处理
 	beego.ErrorController(&controllers.ErrorController{})
 

+ 67 - 13
models/business_conf.go

@@ -1,9 +1,9 @@
 package models
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"html"
 	"time"
 )
@@ -23,15 +23,26 @@ var FromSceneMap = map[int]string{
 	5: "EnPptSheetSize",
 }
 
+// BusinessConf 商户配置表
+// type BusinessConf struct {
+// 	Id         int    `orm:"column(id);pk"`
+// 	ConfKey    string `description:"配置Key"`
+// 	ConfVal    string `description:"配置值"`
+// 	ValType    int    `description:"1-字符串;2-数值;3-字符串数组;4-富文本;"`
+// 	Necessary  int    `description:"是否必填:0-否;1-是"`
+// 	Remark     string `description:"备注"`
+// 	CreateTime time.Time
+// }
+
 // BusinessConf 商户配置表
 type BusinessConf struct {
-	Id         int    `orm:"column(id);pk"`
-	ConfKey    string `description:"配置Key"`
-	ConfVal    string `description:"配置值"`
-	ValType    int    `description:"1-字符串;2-数值;3-字符串数组;4-富文本;"`
-	Necessary  int    `description:"是否必填:0-否;1-是"`
-	Remark     string `description:"备注"`
-	CreateTime time.Time
+	Id         int       `gorm:"column:id;primaryKey" description:"配置ID" orm:"column(id);pk"`
+	ConfKey    string    `gorm:"column:conf_key" description:"配置Key"`
+	ConfVal    string    `gorm:"column:conf_val" description:"配置值"`
+	ValType    int       `gorm:"column:val_type" description:"1-字符串;2-数值;3-字符串数组;4-富文本;"`
+	Necessary  int       `gorm:"column:necessary" description:"是否必填:0-否;1-是"`
+	Remark     string    `gorm:"column:remark" description:"备注"`
+	CreateTime time.Time `gorm:"column:create_time" description:"创建时间"`
 }
 
 // GetBusinessConf 获取商家配置
@@ -39,9 +50,9 @@ func GetBusinessConf() (list map[string]string, err error) {
 	list = make(map[string]string)
 
 	var items []*BusinessConf
-	o := orm.NewOrm()
+	o := global.DEFAULT_DmSQL
 	sql := `SELECT * FROM business_conf`
-	_, err = o.Raw(sql).QueryRows(&items)
+	err = o.Raw(sql).Scan(&items).Error
 	if err != nil {
 		return
 	}
@@ -57,9 +68,9 @@ func GetBusinessConf() (list map[string]string, err error) {
 }
 
 func GetBusinessConfByKey(key string) (item *BusinessConf, err error) {
-	o := orm.NewOrm()
-	sql := fmt.Sprintf(`SELECT * FROM business_conf WHERE conf_key = ? LIMIT 1`)
-	err = o.Raw(sql, key).QueryRow(&item)
+	o := global.DEFAULT_DmSQL
+	sql := fmt.Sprintf(`SELECT * FROM business_conf WHERE conf_key = ? `)
+	err = o.Raw(sql, key).First(&item).Error
 	return
 }
 
@@ -77,3 +88,46 @@ func InitUseMongoConf() {
 		utils.UseMongo = true
 	}
 }
+
+// func GetBusinessConf() (list map[string]string, err error) {
+// 	list = make(map[string]string)
+
+// 	var items []*BusinessConf
+// 	o := orm.NewOrm()
+// 	sql := `SELECT * FROM business_conf`
+// 	_, err = o.Raw(sql).QueryRows(&items)
+// 	if err != nil {
+// 		return
+// 	}
+
+// 	for _, v := range items {
+// 		if v.ValType == 4 {
+// 			list[v.ConfKey] = html.UnescapeString(v.ConfVal)
+// 			continue
+// 		}
+// 		list[v.ConfKey] = v.ConfVal
+// 	}
+// 	return
+// }
+
+// func GetBusinessConfByKey(key string) (item *BusinessConf, err error) {
+// 	o := orm.NewOrm()
+// 	sql := fmt.Sprintf(`SELECT * FROM business_conf WHERE conf_key = ? LIMIT 1`)
+// 	err = o.Raw(sql, key).QueryRow(&item)
+// 	return
+// }
+
+// // InitUseMongoConf
+// // @Description:
+// // @author: Roc
+// // @datetime 2024-07-01 13:49:09
+// func InitUseMongoConf() {
+// 	useMongo, e := GetBusinessConfByKey("UseMongo")
+// 	if e != nil {
+// 		return
+// 	}
+
+// 	if useMongo.ConfVal == `true` {
+// 		utils.UseMongo = true
+// 	}
+// }

+ 728 - 129
models/chart.go

@@ -2,129 +2,240 @@ package models
 
 import (
 	"errors"
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/models/mgo"
 	"eta_gn/eta_chart_lib/utils"
 	"fmt"
 	"strconv"
 	"time"
 
-	"github.com/beego/beego/v2/client/orm"
 	"go.mongodb.org/mongo-driver/bson"
 
 	"github.com/nosixtools/solarlunar"
 )
 
+//	type ChartInfo struct {
+//		ChartInfoId       int       `json:"-" orm:"column(chart_info_id);pk"`
+//		ChartName         string    `description:"来源名称"`
+//		ChartNameEn       string    `description:"英文图表名称"`
+//		ChartClassifyId   int       `json:"-" description:"图表分类id"`
+//		SysUserId         int       `json:"-"`
+//		SysUserRealName   string    `json:"-"`
+//		UniqueCode        string    `description:"图表唯一编码"`
+//		CreateTime        time.Time `json:"-"`
+//		ModifyTime        time.Time `json:"-"`
+//		DateType          int       `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间"`
+//		StartDate         string    `description:"自定义开始日期"`
+//		EndDate           string    `description:"自定义结束日期"`
+//		IsSetName         int       `description:"设置名称"`
+//		EdbInfoIds        string    `description:"指标id"`
+//		ChartType         int       `description:"生成样式:1:曲线图,2:季节性图"`
+//		Calendar          string    `description:"公历/农历"`
+//		SeasonStartDate   string    `description:"季节性图开始日期"`
+//		SeasonEndDate     string    `description:"季节性图开始日期"`
+//		ChartImage        string    `description:"图表图片"`
+//		BarConfig         string    `description:"柱方图的配置,json数据" json:"-"`
+//		XMin              string    `description:"图表X轴最小值"`
+//		XMax              string    `description:"图表X轴最大值"`
+//		LeftMin           string    `description:"图表左侧最小值"`
+//		LeftMax           string    `description:"图表左侧最大值"`
+//		RightMin          string    `description:"图表右侧最小值"`
+//		RightMax          string    `description:"图表右侧最大值"`
+//		Right2Min         string    `description:"图表右侧2最小值"`
+//		Right2Max         string    `description:"图表右侧2最大值"`
+//		MinMaxSave        int       `description:"是否手动保存过上下限:0-否;1-是"`
+//		Source            int       `description:"1:ETA图库;2:商品价格曲线"`
+//		Unit              string    `description:"中文单位名称"`
+//		UnitEn            string    `description:"英文单位名称"`
+//		ExtraConfig       string    `description:"图表额外配置,json数据" json:"-"`
+//		ChartSource       string    `description:"图表来源str"`
+//		ChartSourceEn     string    `description:"图表来源(英文)"`
+//		SeasonExtraConfig string    `description:"季节性图表中的配置,json数据"`
+//		StartYear         int       `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
+//		ChartThemeId      int       `description:"图表应用主题ID"`
+//		ChartThemeStyle   string    `description:"图表应用主题样式"`
+//		SourcesFrom       string    `description:"图表来源"`
+//		Instructions      string    `description:"图表说明"`
+//		MarkersLines      string    `description:"标识线"`
+//		MarkersAreas      string    `description:"标识区"`
+//	}
 type ChartInfo struct {
-	ChartInfoId       int       `json:"-" orm:"column(chart_info_id);pk"`
-	ChartName         string    `description:"来源名称"`
-	ChartNameEn       string    `description:"英文图表名称"`
-	ChartClassifyId   int       `json:"-" description:"图表分类id"`
-	SysUserId         int       `json:"-"`
-	SysUserRealName   string    `json:"-"`
-	UniqueCode        string    `description:"图表唯一编码"`
-	CreateTime        time.Time `json:"-"`
-	ModifyTime        time.Time `json:"-"`
-	DateType          int       `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间"`
-	StartDate         string    `description:"自定义开始日期"`
-	EndDate           string    `description:"自定义结束日期"`
-	IsSetName         int       `description:"设置名称"`
-	EdbInfoIds        string    `description:"指标id"`
-	ChartType         int       `description:"生成样式:1:曲线图,2:季节性图"`
-	Calendar          string    `description:"公历/农历"`
-	SeasonStartDate   string    `description:"季节性图开始日期"`
-	SeasonEndDate     string    `description:"季节性图开始日期"`
-	ChartImage        string    `description:"图表图片"`
-	BarConfig         string    `description:"柱方图的配置,json数据" json:"-"`
-	XMin              string    `description:"图表X轴最小值"`
-	XMax              string    `description:"图表X轴最大值"`
-	LeftMin           string    `description:"图表左侧最小值"`
-	LeftMax           string    `description:"图表左侧最大值"`
-	RightMin          string    `description:"图表右侧最小值"`
-	RightMax          string    `description:"图表右侧最大值"`
-	Right2Min         string    `description:"图表右侧2最小值"`
-	Right2Max         string    `description:"图表右侧2最大值"`
-	MinMaxSave        int       `description:"是否手动保存过上下限:0-否;1-是"`
-	Source            int       `description:"1:ETA图库;2:商品价格曲线"`
-	Unit              string    `description:"中文单位名称"`
-	UnitEn            string    `description:"英文单位名称"`
-	ExtraConfig       string    `description:"图表额外配置,json数据" json:"-"`
-	ChartSource       string    `description:"图表来源str"`
-	ChartSourceEn     string    `description:"图表来源(英文)"`
-	SeasonExtraConfig string    `description:"季节性图表中的配置,json数据"`
-	StartYear         int       `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
-	ChartThemeId      int       `description:"图表应用主题ID"`
-	ChartThemeStyle   string    `description:"图表应用主题样式"`
-	SourcesFrom       string    `description:"图表来源"`
-	Instructions      string    `description:"图表说明"`
-	MarkersLines      string    `description:"标识线"`
-	MarkersAreas      string    `description:"标识区"`
+	ChartInfoId       int       `gorm:"column:chart_info_id;primaryKey" json:"-" orm:"column(chart_info_id);pk"`
+	ChartName         string    `gorm:"column:chart_name" description:"来源名称"`
+	ChartNameEn       string    `gorm:"column:chart_name_en" description:"英文图表名称"`
+	ChartClassifyId   int       `gorm:"column:chart_classify_id" json:"-" description:"图表分类id"`
+	SysUserId         int       `gorm:"column:sys_user_id" json:"-"`
+	SysUserRealName   string    `gorm:"column:sys_user_real_name" json:"-"`
+	UniqueCode        string    `gorm:"column:unique_code" description:"图表唯一编码"`
+	CreateTime        time.Time `gorm:"column:create_time" json:"-"`
+	ModifyTime        time.Time `gorm:"column:modify_time" json:"-"`
+	DateType          int       `gorm:"column:date_type" description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间"`
+	StartDate         string    `gorm:"column:start_date" description:"自定义开始日期"`
+	EndDate           string    `gorm:"column:end_date" description:"自定义结束日期"`
+	IsSetName         int       `gorm:"column:is_set_name" description:"设置名称"`
+	EdbInfoIds        string    `gorm:"column:edb_info_ids" description:"指标id"`
+	ChartType         int       `gorm:"column:chart_type" description:"生成样式:1:曲线图,2:季节性图"`
+	Calendar          string    `gorm:"column:calendar" description:"公历/农历"`
+	SeasonStartDate   string    `gorm:"column:season_start_date" description:"季节性图开始日期"`
+	SeasonEndDate     string    `gorm:"column:season_end_date" description:"季节性图结束日期"`
+	ChartImage        string    `gorm:"column:chart_image" description:"图表图片"`
+	BarConfig         string    `gorm:"column:bar_config" description:"柱方图的配置,json数据" json:"-"`
+	XMin              string    `gorm:"column:x_min" description:"图表X轴最小值"`
+	XMax              string    `gorm:"column:x_max" description:"图表X轴最大值"`
+	LeftMin           string    `gorm:"column:left_min" description:"图表左侧最小值"`
+	LeftMax           string    `gorm:"column:left_max" description:"图表左侧最大值"`
+	RightMin          string    `gorm:"column:right_min" description:"图表右侧最小值"`
+	RightMax          string    `gorm:"column:right_max" description:"图表右侧最大值"`
+	Right2Min         string    `gorm:"column:right2_min" description:"图表右侧2最小值"`
+	Right2Max         string    `gorm:"column:right2_max" description:"图表右侧2最大值"`
+	MinMaxSave        int       `gorm:"column:min_max_save" description:"是否手动保存过上下限:0-否;1-是"`
+	Source            int       `gorm:"column:source" description:"1:ETA图库;2:商品价格曲线"`
+	Unit              string    `gorm:"column:unit" description:"中文单位名称"`
+	UnitEn            string    `gorm:"column:unit_en" description:"英文单位名称"`
+	ExtraConfig       string    `gorm:"column:extra_config" description:"图表额外配置,json数据" json:"-"`
+	ChartSource       string    `gorm:"column:chart_source" description:"图表来源"`
+	ChartSourceEn     string    `gorm:"column:chart_source_en" description:"图表来源(英文)"`
+	SeasonExtraConfig string    `gorm:"column:season_extra_config" description:"季节性图表中的配置,json数据"`
+	StartYear         int       `gorm:"column:start_year" description:"当选择的日期类型为最近N年类型时,即date_type=20,用start_year表示N"`
+	ChartThemeId      int       `gorm:"column:chart_theme_id" description:"图表应用主题ID"`
+	ChartThemeStyle   string    `gorm:"column:chart_theme_style" description:"图表应用主题样式"`
+	SourcesFrom       string    `gorm:"column:sources_from" description:"图表来源"`
+	Instructions      string    `gorm:"column:instructions" description:"图表说明"`
+	MarkersLines      string    `gorm:"column:markers_lines" description:"标识线"`
+	MarkersAreas      string    `gorm:"column:markers_areas" description:"标识区"`
+}
+
+func (c *ChartInfo) TableName() string {
+	return "chart_info"
 }
 
 func GetChartInfoByUniqueCode(uniqueCode string) (item *ChartInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM chart_info WHERE unique_code=? `
-	err = o.Raw(sql, uniqueCode).QueryRow(&item)
+	err = o.Raw(sql, uniqueCode).First(&item).Error
 	return
 }
 
+// func GetChartInfoByUniqueCode(uniqueCode string) (item *ChartInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM chart_info WHERE unique_code=? `
+// 	err = o.Raw(sql, uniqueCode).QueryRow(&item)
+// 	return
+// }
+
+// type ChartEdbInfoMapping struct {
+// 	EdbInfoId         int     `description:"指标id"`
+// 	SourceName        string  `description:"来源名称"`
+// 	Source            int     `description:"来源id"`
+// 	EdbCode           string  `description:"指标编码"`
+// 	EdbName           string  `description:"指标名称"`
+// 	EdbAliasName      string  `description:"指标名称(别名)"`
+// 	EdbAliasNameEn    string  `description:"英文指标名称(别名)"`
+// 	EdbNameEn         string  `description:"英文指标名称"`
+// 	Frequency         string  `description:"频率"`
+// 	FrequencyEn       string  `description:"英文频率"`
+// 	Unit              string  `description:"单位"`
+// 	UnitEn            string  `description:"英文单位"`
+// 	StartDate         string  `description:"起始日期"`
+// 	EndDate           string  `description:"终止日期"`
+// 	ModifyTime        string  `description:"指标最后更新时间"`
+// 	ChartEdbMappingId int     `description:"图表指标id" json:"-"`
+// 	ChartInfoId       int     `description:"图表id"`
+// 	MaxData           float64 `description:"上限"`
+// 	MinData           float64 `description:"下限"`
+// 	IsOrder           bool    `description:"true:正序,false:逆序"`
+// 	IsAxis            int     `description:"1:左轴,0:右轴"`
+// 	EdbInfoType       int     `description:"1:标准指标,0:领先指标"`
+// 	EdbType           int     `description:"指标类型:1:基础指标,2:计算指标"`
+// 	LeadValue         int     `description:"领先值"`
+// 	LeadUnit          string  `description:"领先单位"`
+// 	LeadUnitEn        string  `description:"领先英文单位"`
+// 	ChartStyle        string  `description:"图表类型"`
+// 	ChartColor        string  `description:"颜色"`
+// 	ChartWidth        float64 `description:"线条大小"`
+// 	DataList          interface{}
+
+// 	EdbInfoCategoryType int     `description:"0:普通指标,1:预测指标"`
+// 	PredictChartColor   string  `description:"预测数据的颜色"`
+// 	ChartType           int     `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图"`
+// 	LatestDate          string  `description:"数据最新日期"`
+// 	LatestValue         float64 `description:"数据最新值"`
+// 	MoveLatestDate      string  `description:"移动后的数据最新日期"`
+// 	UniqueCode          string  `description:"指标唯一编码"`
+// 	MinValue            float64 `json:"-" description:"最小值"`
+// 	MaxValue            float64 `json:"-" description:"最大值"`
+// 	IsNullData          bool    `json:"-" description:"是否空数据"`
+// 	MappingSource       int     `description:"1:ETA图库;2:商品价格曲线"`
+// 	SubSource           int     `description:"子数据来源:0:经济数据库,1:日期序列"`
+// 	SubSourceName       string  `description:"子数据来源名称"`
+// 	IndicatorCode       string  `description:"指标代码"`
+// 	StockCode           string  `description:"证券代码"`
+// 	IsConvert           int     `description:"是否数据转换 0不转 1转"`
+// 	ConvertType         int     `description:"数据转换类型 1乘 2除 3对数"`
+// 	ConvertValue        float64 `description:"数据转换值"`
+// 	ConvertUnit         string  `description:"数据转换单位"`
+// 	ConvertEnUnit       string  `description:"数据转换单位"`
+// 	ClassifyId          int     `description:"分类id"`
+// 	IsJoinPermission    int     `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
+// }
+
 type ChartEdbInfoMapping struct {
-	EdbInfoId         int     `description:"指标id"`
-	SourceName        string  `description:"来源名称"`
-	Source            int     `description:"来源id"`
-	EdbCode           string  `description:"指标编码"`
-	EdbName           string  `description:"指标名称"`
-	EdbAliasName      string  `description:"指标名称(别名)"`
-	EdbAliasNameEn    string  `description:"英文指标名称(别名)"`
-	EdbNameEn         string  `description:"英文指标名称"`
-	Frequency         string  `description:"频率"`
-	FrequencyEn       string  `description:"英文频率"`
-	Unit              string  `description:"单位"`
-	UnitEn            string  `description:"英文单位"`
-	StartDate         string  `description:"起始日期"`
-	EndDate           string  `description:"终止日期"`
-	ModifyTime        string  `description:"指标最后更新时间"`
-	ChartEdbMappingId int     `description:"图表指标id" json:"-"`
-	ChartInfoId       int     `description:"图表id"`
-	MaxData           float64 `description:"上限"`
-	MinData           float64 `description:"下限"`
-	IsOrder           bool    `description:"true:正序,false:逆序"`
-	IsAxis            int     `description:"1:左轴,0:右轴"`
-	EdbInfoType       int     `description:"1:标准指标,0:领先指标"`
-	EdbType           int     `description:"指标类型:1:基础指标,2:计算指标"`
-	LeadValue         int     `description:"领先值"`
-	LeadUnit          string  `description:"领先单位"`
-	LeadUnitEn        string  `description:"领先英文单位"`
-	ChartStyle        string  `description:"图表类型"`
-	ChartColor        string  `description:"颜色"`
-	ChartWidth        float64 `description:"线条大小"`
-	DataList          interface{}
-
-	EdbInfoCategoryType int     `description:"0:普通指标,1:预测指标"`
-	PredictChartColor   string  `description:"预测数据的颜色"`
-	ChartType           int     `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图"`
-	LatestDate          string  `description:"数据最新日期"`
-	LatestValue         float64 `description:"数据最新值"`
-	MoveLatestDate      string  `description:"移动后的数据最新日期"`
-	UniqueCode          string  `description:"指标唯一编码"`
-	MinValue            float64 `json:"-" description:"最小值"`
-	MaxValue            float64 `json:"-" description:"最大值"`
-	IsNullData          bool    `json:"-" description:"是否空数据"`
-	MappingSource       int     `description:"1:ETA图库;2:商品价格曲线"`
-	SubSource           int     `description:"子数据来源:0:经济数据库,1:日期序列"`
-	SubSourceName       string  `description:"子数据来源名称"`
-	IndicatorCode       string  `description:"指标代码"`
-	StockCode           string  `description:"证券代码"`
-	IsConvert           int     `description:"是否数据转换 0不转 1转"`
-	ConvertType         int     `description:"数据转换类型 1乘 2除 3对数"`
-	ConvertValue        float64 `description:"数据转换值"`
-	ConvertUnit         string  `description:"数据转换单位"`
-	ConvertEnUnit       string  `description:"数据转换单位"`
-	ClassifyId          int     `description:"分类id"`
-	IsJoinPermission    int     `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
+	EdbInfoId           int         `gorm:"column:edb_info_id;primaryKey" description:"指标id"`
+	SourceName          string      `gorm:"column:source_name" description:"来源名称"`
+	Source              int         `gorm:"column:source" description:"来源id"`
+	EdbCode             string      `gorm:"column:edb_code" description:"指标编码"`
+	EdbName             string      `gorm:"column:edb_name" description:"指标名称"`
+	EdbAliasName        string      `gorm:"column:edb_alias_name" description:"指标名称(别名)"`
+	EdbAliasNameEn      string      `gorm:"column:edb_alias_name_en" description:"英文指标名称(别名)"`
+	EdbNameEn           string      `gorm:"column:edb_name_en" description:"英文指标名称"`
+	Frequency           string      `gorm:"column:frequency" description:"频率"`
+	FrequencyEn         string      `gorm:"column:frequency_en" description:"英文频率"`
+	Unit                string      `gorm:"column:unit" description:"单位"`
+	UnitEn              string      `gorm:"column:unit_en" description:"英文单位"`
+	StartDate           string      `gorm:"column:start_date" description:"起始日期"`
+	EndDate             string      `gorm:"column:end_date" description:"终止日期"`
+	ModifyTime          string      `gorm:"column:modify_time" description:"指标最后更新时间"`
+	ChartEdbMappingId   int         `gorm:"column:chart_edb_mapping_id" description:"图表指标id" json:"-"`
+	ChartInfoId         int         `gorm:"column:chart_info_id" description:"图表id"`
+	MaxData             float64     `gorm:"column:max_data" description:"上限"`
+	MinData             float64     `gorm:"column:min_data" description:"下限"`
+	IsOrder             bool        `gorm:"column:is_order" description:"true:正序,false:逆序"`
+	IsAxis              int         `gorm:"column:is_axis" description:"1:左轴,0:右轴"`
+	EdbInfoType         int         `gorm:"column:edb_info_type" description:"1:标准指标,0:领先指标"`
+	EdbType             int         `gorm:"column:edb_type" description:"指标类型:1:基础指标,2:计算指标"`
+	LeadValue           int         `gorm:"column:lead_value" description:"领先值"`
+	LeadUnit            string      `gorm:"column:lead_unit" description:"领先单位"`
+	LeadUnitEn          string      `gorm:"column:lead_unit_en" description:"领先英文单位"`
+	ChartStyle          string      `gorm:"column:chart_style" description:"图表类型"`
+	ChartColor          string      `gorm:"column:chart_color" description:"颜色"`
+	ChartWidth          float64     `gorm:"column:chart_width" description:"线条大小"`
+	DataList            interface{} `gorm:"column:data_list" description:"数据列表"`
+	EdbInfoCategoryType int         `gorm:"column:edb_info_category_type" description:"0:普通指标,1:预测指标"`
+	PredictChartColor   string      `gorm:"column:predict_chart_color" description:"预测数据的颜色"`
+	ChartType           int         `gorm:"column:chart_type" description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图"`
+	LatestDate          string      `gorm:"column:latest_date" description:"数据最新日期"`
+	LatestValue         float64     `gorm:"column:latest_value" description:"数据最新值"`
+	MoveLatestDate      string      `gorm:"column:move_latest_date" description:"移动后的数据最新日期"`
+	UniqueCode          string      `gorm:"column:unique_code" description:"指标唯一编码"`
+	MinValue            float64     `gorm:"column:min_value" json:"-" description:"最小值"`
+	MaxValue            float64     `gorm:"column:max_value" json:"-" description:"最大值"`
+	IsNullData          bool        `gorm:"column:is_null_data" json:"-" description:"是否空数据"`
+	MappingSource       int         `gorm:"column:mapping_source" description:"1:ETA图库;2:商品价格曲线"`
+	SubSource           int         `gorm:"column:sub_source" description:"子数据来源:0:经济数据库,1:日期序列"`
+	SubSourceName       string      `gorm:"column:sub_source_name" description:"子数据来源名称"`
+	IndicatorCode       string      `gorm:"column:indicator_code" description:"指标代码"`
+	StockCode           string      `gorm:"column:stock_code" description:"证券代码"`
+	IsConvert           int         `gorm:"column:is_convert" description:"是否数据转换 0不转 1转"`
+	ConvertType         int         `gorm:"column:convert_type" description:"数据转换类型 1乘 2除 3对数"`
+	ConvertValue        float64     `gorm:"column:convert_value" description:"数据转换值"`
+	ConvertUnit         string      `gorm:"column:convert_unit" description:"数据转换单位"`
+	ConvertEnUnit       string      `gorm:"column:convert_en_unit" description:"数据转换单位英文"`
+	ClassifyId          int         `gorm:"column:classify_id" description:"分类id"`
+	IsJoinPermission    int         `gorm:"column:is_join_permission" description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
 }
 
 func GetChartEdbMappingList(chartInfoId int) (list []*ChartEdbInfoMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source,a.edb_alias_name`
 	sql := ` SELECT ` + aField + `,b.source_name,b.source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.edb_type,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type,b.sub_source,
 a.is_convert, a.convert_type, a.convert_value, a.convert_unit, a.convert_en_unit 
@@ -132,16 +243,37 @@ a.is_convert, a.convert_type, a.convert_value, a.convert_unit, a.convert_en_unit
 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
 			 WHERE chart_info_id=? 
              ORDER BY chart_edb_mapping_id ASC `
-	_, err = o.Raw(sql, chartInfoId).QueryRows(&list)
+	err = o.Raw(sql, chartInfoId).Scan(&list).Error
 	return
 }
 
+// func GetChartEdbMappingList(chartInfoId int) (list []*ChartEdbInfoMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source,a.edb_alias_name`
+// 	sql := ` SELECT ` + aField + `,b.source_name,b.source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.edb_type,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type,b.sub_source,
+// a.is_convert, a.convert_type, a.convert_value, a.convert_unit, a.convert_en_unit
+//              FROM chart_edb_mapping AS a
+// 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
+// 			 WHERE chart_info_id=?
+//              ORDER BY chart_edb_mapping_id ASC `
+// 	_, err = o.Raw(sql, chartInfoId).QueryRows(&list)
+// 	return
+// }
+
+// type EdbDataList struct {
+// 	EdbDataId     int     `json:"-" description:" 指标数据ID"`
+// 	EdbInfoId     int     `json:"-" description:"指标ID"`
+// 	DataTime      string  `description:"数据日期"`
+// 	DataTimestamp int64   `description:"数据日期"`
+// 	Value         float64 `description:"数据值"`
+// }
+
 type EdbDataList struct {
-	EdbDataId     int     `json:"-" description:" 指标数据ID"`
-	EdbInfoId     int     `json:"-" description:"指标ID"`
-	DataTime      string  `description:"数据日期"`
-	DataTimestamp int64   `description:"数据日期"`
-	Value         float64 `description:"数据值"`
+	EdbDataId     int     `gorm:"column:edb_data_id;primaryKey" description:"指标数据ID"`
+	EdbInfoId     int     `gorm:"column:edb_info_id" description:"指标ID"`
+	DataTime      string  `gorm:"column:data_time" description:"数据日期"`
+	DataTimestamp int64   `gorm:"column:data_timestamp" description:"数据日期时间戳"`
+	Value         float64 `gorm:"column:value" description:"数据值"`
 }
 
 // GetEdbDataList 获取指标的数据(日期正序返回)
@@ -191,8 +323,8 @@ func getEdbDataListByMysql(source, subSource, edbInfoId int, startDate, endDate
 	}
 	sql += ` ORDER BY data_time ASC  `
 	sql = fmt.Sprintf(sql, tableName)
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Raw(sql, edbInfoId, pars).QueryRows(&list)
+	o := global.DmSQL["data"]
+	err = o.Raw(sql, edbInfoId, pars).Scan(&list).Error
 	return
 }
 
@@ -243,6 +375,92 @@ func getEdbDataListByMongo(source, subSource, edbInfoId int, startDate, endDate
 	return
 }
 
+// getEdbDataListByMysql
+// @Description: 从mysql中获取指标的数据(日期正序返回)
+// @author: Roc
+// @datetime 2024-05-08 16:49:48
+// @param source int
+// @param subSource int
+// @param edbInfoId int
+// @param startDate string
+// @param endDate string
+// @return list []*EdbDataList
+// @return err error
+// func getEdbDataListByMysql(source, subSource, edbInfoId int, startDate, endDate string) (list []*EdbDataList, err error) {
+// 	tableName := GetEdbDataTableName(source, subSource)
+// 	if tableName == "" {
+// 		err = errors.New("无效的渠道:" + strconv.Itoa(source))
+// 		list = make([]*EdbDataList, 0)
+// 		return list, err
+// 	}
+// 	var pars []interface{}
+// 	var condition string
+// 	if startDate != "" {
+// 		condition += ` AND data_time>=? `
+// 		pars = append(pars, startDate)
+// 	}
+// 	if endDate != "" {
+// 		condition += ` AND data_time<=? `
+// 		pars = append(pars, endDate)
+// 	}
+// 	sql := `SELECT edb_data_id,edb_info_id,data_time,value,data_timestamp FROM %s WHERE edb_info_id=? `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	sql += ` ORDER BY data_time ASC  `
+// 	sql = fmt.Sprintf(sql, tableName)
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Raw(sql, edbInfoId, pars).QueryRows(&list)
+// 	return
+// }
+
+// // getEdbDataListByMongo
+// // @Description: 从mongo中获取指标的数据(日期正序返回)
+// // @author: Roc
+// // @datetime 2024-05-08 16:49:59
+// // @param source int
+// // @param subSource int
+// // @param edbInfoId int
+// // @param startDate string
+// // @param endDate string
+// // @return list []*EdbDataList
+// // @return err error
+// func getEdbDataListByMongo(source, subSource, edbInfoId int, startDate, endDate string) (list []*EdbDataList, err error) {
+// 	list = make([]*EdbDataList, 0)
+
+// 	mogDataObj := mgo.EdbDataBusiness{}
+// 	// 构建查询条件
+// 	queryConditions := bson.M{
+// 		"edb_info_id": edbInfoId,
+// 	}
+// 	// 日期
+// 	dateCondition, err := mgo.BuildDateCondition(startDate, endDate)
+// 	if err != nil {
+// 		return
+// 	}
+// 	if len(dateCondition) > 0 {
+// 		queryConditions["data_time"] = dateCondition
+// 	}
+
+// 	// 获取列表数据
+// 	tmpDataList, tmpErr := mogDataObj.GetAllDataList(queryConditions, []string{"data_time"})
+// 	if tmpErr != nil {
+// 		err = tmpErr
+// 		return
+// 	}
+// 	for k, v := range tmpDataList {
+// 		list = append(list, &EdbDataList{
+// 			EdbDataId:     k + 1,
+// 			EdbInfoId:     v.EdbInfoId,
+// 			DataTime:      v.DataTime.Format(utils.FormatDate),
+// 			DataTimestamp: v.DataTimestamp,
+// 			Value:         v.Value,
+// 		})
+// 	}
+
+// 	return
+// }
+
 type EdbDataItemList struct {
 	EdbDataId     int     `json:"-" description:" 指标数据ID"`
 	EdbInfoId     int     `json:"-" description:"指标ID"`
@@ -251,11 +469,17 @@ type EdbDataItemList struct {
 	Value         float64 `description:"数据值"`
 }
 
+//	type EdbDataItems struct {
+//		Items                []*EdbDataList
+//		Year                 int
+//		BetweenDay           int   `json:"-" description:"公历与农历之间相差的天数"`
+//		CuttingDataTimestamp int64 `description:"切割的时间戳"`
+//	}
 type EdbDataItems struct {
-	Items                []*EdbDataList
-	Year                 int
-	BetweenDay           int   `json:"-" description:"公历与农历之间相差的天数"`
-	CuttingDataTimestamp int64 `description:"切割的时间戳"`
+	Items                []*EdbDataList `gorm:"column:items" description:"指标数据项列表"`
+	Year                 int            `gorm:"column:year" description:"年份"`
+	BetweenDay           int            `gorm:"column:between_day" json:"-" description:"公历与农历之间相差的天数"`
+	CuttingDataTimestamp int64          `gorm:"column:cutting_data_timestamp" description:"切割的时间戳"`
 }
 
 type EdbDataResult struct {
@@ -673,6 +897,355 @@ func AddCalculateQuarterV6(dataList []*EdbDataList) (result *EdbDataResult, err
 	return
 }
 
+// func AddCalculateQuarterV5(dataList []*EdbDataList) (result *EdbDataResult, err error) {
+// 	var errMsg string
+// 	defer func() {
+// 		if errMsg != "" {
+// 			fmt.Println("errMsg:", errMsg)
+// 		}
+// 	}()
+// 	if len(dataList) <= 0 {
+// 		result.List = make([]*EdbDataItems, 0)
+// 		return
+// 	}
+
+// 	endDate := dataList[len(dataList)-1].DataTime
+// 	endDateForm, err := time.Parse(utils.FormatDate, endDate)
+// 	if err != nil {
+// 		return result, err
+// 	}
+// 	thisMonth := int(endDateForm.Month())
+
+// 	result = new(EdbDataResult)
+// 	var yearArr []int
+// 	yearMap := make(map[int]int)
+// 	var cureentDate time.Time
+// 	if thisMonth < 11 {
+// 		for k, v := range dataList {
+// 			dateTime, err := time.Parse(utils.FormatDate, v.DataTime)
+// 			if err != nil {
+// 				errMsg = "time.Parse Err:" + err.Error() + ";DataTime:" + v.DataTime
+// 				return result, err
+// 			}
+// 			if k == len(dataList)-1 {
+// 				cureentDate = dateTime
+// 			}
+// 			year := dateTime.Year()
+// 			if _, ok := yearMap[year]; !ok {
+// 				yearArr = append(yearArr, year)
+// 			}
+// 			yearMap[year] = year
+// 		}
+// 	} else {
+// 		for k, v := range dataList {
+// 			dateTime, err := time.Parse(utils.FormatDate, v.DataTime)
+// 			if err != nil {
+// 				errMsg = "time.Parse Err:" + err.Error() + ";DataTime:" + v.DataTime
+// 				return result, err
+// 			}
+// 			if k == len(dataList)-1 {
+// 				cureentDate = dateTime
+// 			}
+// 			year := dateTime.Year() + 1
+// 			if _, ok := yearMap[year]; !ok {
+// 				yearArr = append(yearArr, year)
+// 			}
+// 			yearMap[year] = year
+// 		}
+// 	}
+// 	//排序
+// 	fmt.Println("yearArr:", yearArr)
+// 	thisYear := cureentDate.Year()
+// 	//thisMonth := int(cureentDate.Month())
+
+// 	fmt.Println("thisMonth:", thisMonth)
+// 	for ky, vy := range yearArr {
+// 		fmt.Println("line 432:", ky, vy, thisYear, thisMonth)
+// 		if thisMonth < 11 {
+// 			currentYearCjnl := strconv.Itoa(thisYear) + "-01-01"               //当前年份春节农历
+// 			currentYearCjgl := solarlunar.LunarToSolar(currentYearCjnl, false) //当前年份春节公历
+// 			currentYearCjglDate, err := time.Parse(utils.FormatDate, currentYearCjgl)
+// 			if err != nil {
+// 				errMsg = "生成当前春节失败,Err:" + err.Error()
+// 				return result, err
+// 			}
+
+// 			preYear := vy
+// 			preYearCjnl := strconv.Itoa(preYear) + "-01-01"            //之前年份春节农历
+// 			preYearCjgl := solarlunar.LunarToSolar(preYearCjnl, false) //之前年份春节公历
+// 			preYearCjglDate, err := time.Parse(utils.FormatDate, preYearCjgl)
+// 			if err != nil {
+// 				errMsg = "生成历史年份春节失败,Err:" + err.Error()
+// 				return result, err
+// 			}
+// 			day := currentYearCjglDate.Sub(preYearCjglDate).Hours() / float64(24)
+
+// 			items := new(EdbDataItems)
+// 			items.BetweenDay = int(day) //公历日期换算成农历,需要减除的天数
+// 			items.Year = preYear
+// 			for _, v := range dataList {
+// 				dateTime, err := time.Parse(utils.FormatDate, v.DataTime)
+// 				if err != nil {
+// 					errMsg = "time.Parse Err:" + err.Error() + ";DataTime:" + v.DataTime
+// 					return result, err
+// 				}
+// 				newDate := dateTime.AddDate(0, 0, int(day))
+// 				selectDateStr := strconv.Itoa(thisYear) + "-11" + "-30"
+// 				selectDate, _ := time.Parse(utils.FormatDate, selectDateStr)
+// 				if newDate.Before(selectDate) || newDate == selectDate {
+// 					timestamp := newDate.UnixNano() / 1e6
+// 					item := new(EdbDataList)
+// 					item.DataTime = newDate.Format(utils.FormatDate)
+// 					item.EdbInfoId = v.EdbInfoId
+// 					item.Value = v.Value
+// 					item.EdbDataId = v.EdbDataId
+// 					item.DataTimestamp = timestamp
+// 					items.Items = append(items.Items, item)
+// 				}
+// 			}
+// 			result.List = append(result.List, items)
+// 		} else {
+// 			nextYear := thisYear + 1
+// 			nextYearCjnl := strconv.Itoa(nextYear) + "-01-01"            //当前年份春节农历
+// 			nextYearCjgl := solarlunar.LunarToSolar(nextYearCjnl, false) //当前年份春节公历
+
+// 			nextYearCjglDate, err := time.Parse(utils.FormatDate, nextYearCjgl)
+// 			if err != nil {
+// 				errMsg = "生成当前春节失败,Err:" + err.Error()
+// 				return result, err
+// 			}
+// 			preYear := vy
+// 			preYearCjnl := strconv.Itoa(preYear) + "-01-01"            //之前年份春节农历
+// 			preYearCjgl := solarlunar.LunarToSolar(preYearCjnl, false) //之前年份春节公历
+// 			preYearCjglDate, err := time.Parse(utils.FormatDate, preYearCjgl)
+// 			if err != nil {
+// 				errMsg = "生成历史年份春节失败,Err:" + err.Error()
+// 				return result, err
+// 			}
+// 			day := nextYearCjglDate.Sub(preYearCjglDate).Hours() / float64(24)
+
+// 			fmt.Println("day:", day, nextYearCjglDate, preYearCjglDate)
+
+// 			items := new(EdbDataItems)
+// 			items.BetweenDay = int(day) //公历日期换算成农历,需要减除的天数
+// 			items.Year = preYear - 1
+// 			fmt.Println("preYear:", preYear, "ky:", ky, "yearArrLen:", len(yearArr))
+// 			if ky+1 < len(yearArr) {
+// 				for _, v := range dataList {
+// 					dateTime, err := time.Parse(utils.FormatDate, v.DataTime)
+// 					if err != nil {
+// 						errMsg = "time.Parse Err:" + err.Error() + ";DataTime:" + v.DataTime
+// 						return result, err
+// 					}
+// 					newDate := dateTime.AddDate(0, 0, int(day))
+// 					selectDateStr := strconv.Itoa(nextYear) + "-05" + "-31"
+// 					selectDate, _ := time.Parse(utils.FormatDate, selectDateStr)
+
+// 					if newDate.Before(selectDate) || newDate == selectDate {
+// 						timestamp := newDate.UnixNano() / 1e6
+// 						item := new(EdbDataList)
+// 						item.DataTime = newDate.Format(utils.FormatDate)
+// 						item.EdbInfoId = v.EdbInfoId
+// 						item.Value = v.Value
+// 						item.EdbDataId = v.EdbDataId
+// 						item.DataTimestamp = timestamp
+// 						items.Items = append(items.Items, item)
+// 					}
+// 				}
+// 				result.List = append(result.List, items)
+// 			} else {
+// 				for _, v := range dataList {
+// 					dateTime, err := time.Parse(utils.FormatDate, v.DataTime)
+// 					if err != nil {
+// 						errMsg = "time.Parse Err:" + err.Error() + ";DataTime:" + v.DataTime
+// 						return result, err
+// 					}
+// 					timestamp := dateTime.UnixNano() / 1e6
+// 					item := new(EdbDataList)
+// 					item.DataTime = dateTime.Format(utils.FormatDate)
+// 					item.EdbInfoId = v.EdbInfoId
+// 					item.Value = v.Value
+// 					item.EdbDataId = v.EdbDataId
+// 					item.DataTimestamp = timestamp
+// 					items.Items = append(items.Items, item)
+// 				}
+// 				result.List = append(result.List, items)
+// 			}
+// 		}
+// 	}
+// 	return
+// }
+
+// // AddCalculateQuarterV6 指标季度数据计算(季节性图表)
+// func AddCalculateQuarterV6(dataList []*EdbDataList) (result *EdbDataResult, err error) {
+// 	var errMsg string
+// 	defer func() {
+// 		if errMsg != "" {
+// 			fmt.Println("errMsg:", errMsg)
+// 		}
+// 	}()
+
+// 	endDate := dataList[len(dataList)-1].DataTime
+// 	endDateForm, err := time.Parse(utils.FormatDate, endDate)
+// 	if err != nil {
+// 		return result, err
+// 	}
+// 	thisMonth := int(endDateForm.Month())
+
+// 	result = new(EdbDataResult)
+// 	var yearArr []int
+// 	yearMap := make(map[int]int)
+// 	var cureentDate time.Time
+// 	if thisMonth < 11 {
+// 		for k, v := range dataList {
+// 			dateTime, err := time.Parse(utils.FormatDate, v.DataTime)
+// 			if err != nil {
+// 				errMsg = "time.Parse Err:" + err.Error() + ";DataTime:" + v.DataTime
+// 				return result, err
+// 			}
+// 			if k == len(dataList)-1 {
+// 				cureentDate = dateTime
+// 			}
+// 			year := dateTime.Year()
+// 			if _, ok := yearMap[year]; !ok {
+// 				yearArr = append(yearArr, year)
+// 			}
+// 			yearMap[year] = year
+// 		}
+// 	} else {
+// 		for k, v := range dataList {
+// 			dateTime, err := time.Parse(utils.FormatDate, v.DataTime)
+// 			if err != nil {
+// 				errMsg = "time.Parse Err:" + err.Error() + ";DataTime:" + v.DataTime
+// 				return result, err
+// 			}
+// 			if k == len(dataList)-1 {
+// 				cureentDate = dateTime
+// 			}
+// 			year := dateTime.Year() + 1
+// 			if _, ok := yearMap[year]; !ok {
+// 				yearArr = append(yearArr, year)
+// 			}
+// 			yearMap[year] = year
+// 		}
+// 	}
+// 	//排序
+// 	fmt.Println("yearArr:", yearArr)
+// 	thisYear := cureentDate.Year()
+// 	//thisMonth := int(cureentDate.Month())
+
+// 	fmt.Println("thisMonth:", thisMonth)
+// 	for ky, vy := range yearArr {
+// 		fmt.Printf("line 432:ky:%d, vy:%d, thisYear:%d, thisMonth:%d", ky, vy, thisYear, thisMonth)
+// 		fmt.Println("")
+// 		if thisMonth < 11 {
+// 			currentYearCjnl := strconv.Itoa(thisYear) + "-01-01"               //当前年份春节农历
+// 			currentYearCjgl := solarlunar.LunarToSolar(currentYearCjnl, false) //当前年份春节公历
+// 			currentYearCjglDate, err := time.Parse(utils.FormatDate, currentYearCjgl)
+// 			if err != nil {
+// 				errMsg = "生成当前春节失败,Err:" + err.Error()
+// 				return result, err
+// 			}
+
+// 			preYear := vy
+// 			preYearCjnl := strconv.Itoa(preYear) + "-01-01"            //之前年份春节农历
+// 			preYearCjgl := solarlunar.LunarToSolar(preYearCjnl, false) //之前年份春节公历
+// 			preYearCjglDate, err := time.Parse(utils.FormatDate, preYearCjgl)
+// 			if err != nil {
+// 				errMsg = "生成历史年份春节失败,Err:" + err.Error()
+// 				return result, err
+// 			}
+// 			day := currentYearCjglDate.Sub(preYearCjglDate).Hours() / float64(24)
+
+// 			fmt.Println("day:", day, currentYearCjglDate, preYearCjglDate)
+
+// 			items := new(EdbDataItems)
+// 			items.BetweenDay = int(day) //公历日期换算成农历,需要减除的天数
+// 			items.Year = preYear
+// 			for _, v := range dataList {
+// 				dateTime, err := time.Parse(utils.FormatDate, v.DataTime)
+// 				if err != nil {
+// 					errMsg = "time.Parse Err:" + err.Error() + ";DataTime:" + v.DataTime
+// 					return result, err
+// 				}
+// 				newDate := dateTime.AddDate(0, 0, int(day))
+// 				timestamp := newDate.UnixNano() / 1e6
+// 				item := new(EdbDataList)
+// 				item.DataTime = newDate.Format(utils.FormatDate)
+// 				item.EdbInfoId = v.EdbInfoId
+// 				item.Value = v.Value
+// 				item.EdbDataId = v.EdbDataId
+// 				item.DataTimestamp = timestamp
+// 				items.Items = append(items.Items, item)
+// 			}
+// 			result.List = append(result.List, items)
+// 		} else {
+// 			nextYear := thisYear + 1
+// 			nextYearCjnl := strconv.Itoa(nextYear) + "-01-01"            //当前年份春节农历
+// 			nextYearCjgl := solarlunar.LunarToSolar(nextYearCjnl, false) //当前年份春节公历
+
+// 			nextYearCjglDate, err := time.Parse(utils.FormatDate, nextYearCjgl)
+// 			if err != nil {
+// 				errMsg = "生成当前春节失败,Err:" + err.Error()
+// 				return result, err
+// 			}
+// 			preYear := vy
+// 			preYearCjnl := strconv.Itoa(preYear) + "-01-01"            //之前年份春节农历
+// 			preYearCjgl := solarlunar.LunarToSolar(preYearCjnl, false) //之前年份春节公历
+// 			preYearCjglDate, err := time.Parse(utils.FormatDate, preYearCjgl)
+// 			if err != nil {
+// 				errMsg = "生成历史年份春节失败,Err:" + err.Error()
+// 				return result, err
+// 			}
+// 			day := nextYearCjglDate.Sub(preYearCjglDate).Hours() / float64(24)
+
+// 			fmt.Println("day:", day, nextYearCjglDate, preYearCjglDate)
+
+// 			items := new(EdbDataItems)
+// 			items.BetweenDay = int(day) //公历日期换算成农历,需要减除的天数
+// 			items.Year = preYear
+// 			fmt.Println("preYear:", preYear, "ky:", ky, "yearArrLen:", len(yearArr))
+// 			//if ky+1 < len(yearArr) {
+// 			for _, v := range dataList {
+// 				dateTime, err := time.Parse(utils.FormatDate, v.DataTime)
+// 				if err != nil {
+// 					errMsg = "time.Parse Err:" + err.Error() + ";DataTime:" + v.DataTime
+// 					return result, err
+// 				}
+// 				newDate := dateTime.AddDate(0, 0, int(day))
+// 				timestamp := newDate.UnixNano() / 1e6
+// 				item := new(EdbDataList)
+// 				item.DataTime = newDate.Format(utils.FormatDate)
+// 				item.EdbInfoId = v.EdbInfoId
+// 				item.Value = v.Value
+// 				item.EdbDataId = v.EdbDataId
+// 				item.DataTimestamp = timestamp
+// 				items.Items = append(items.Items, item)
+// 			}
+// 			result.List = append(result.List, items)
+// 			/*} else {
+// 				for _, v := range dataList {
+// 					dateTime, err := time.Parse(utils.FormatDate, v.DataTime)
+// 					if err != nil {
+// 						errMsg = "time.Parse Err:" + err.Error() + ";DataTime:" + v.DataTime
+// 						return result, err
+// 					}
+// 					timestamp := dateTime.UnixNano() / 1e6
+// 					item := new(EdbDataList)
+// 					item.DataTime = dateTime.Format(utils.FormatDate)
+// 					item.EdbInfoId = v.EdbInfoId
+// 					item.Value = v.Value
+// 					item.EdbDataId = v.EdbDataId
+// 					item.DataTimestamp = timestamp
+// 					items.Items = append(items.Items, item)
+// 				}
+// 				result.List = append(result.List, items)
+// 			}*/
+// 		}
+// 	}
+// 	return
+// }
+
 type CorrelationInfo struct {
 	LeadValue       int    `description:"领先值"`
 	LeadUnit        string `description:"领先单位"`
@@ -865,24 +1438,43 @@ type ChartSectionDateChange struct {
 	ChangeType   int    `description:"日期变换类型1日期位移,2指定频率"`
 }
 
+// 截面组合图系列配置
+// type ChartSectionSeriesItem struct {
+// 	ChartSeriesId int     `description:"系列ID"`
+// 	SeriesName    string  `description:"系列名称"` //系列名称不可同名
+// 	SeriesNameEn  string  `description:"系列英文名称"`
+// 	ChartStyle    string  `description:"图表类型"`
+// 	ChartColor    string  `description:"颜色"`
+// 	ChartWidth    int     `description:"线条大小"`
+// 	IsPoint       int     `description:"是否用数据点展示(0 否,1是)"`
+// 	IsNumber      int     `description:"是否用数值展示(0 否,1是)"`
+// 	IsAxis        int     `description:"1:左轴,0:右轴"`
+// 	MaxData       float64 `description:"上限"`
+// 	MinData       float64 `description:"下限"`
+// 	//IsOrder         bool    `description:"true:正序,false:逆序"`
+// 	EdbInfoList    []*ChartSectionSeriesEdbConf
+// 	DataList       []float64
+// 	NoDataEdbIndex []int
+// }
+
 // 截面组合图系列配置
 type ChartSectionSeriesItem struct {
-	ChartSeriesId int     `description:"系列ID"`
-	SeriesName    string  `description:"系列名称"` //系列名称不可同名
-	SeriesNameEn  string  `description:"系列英文名称"`
-	ChartStyle    string  `description:"图表类型"`
-	ChartColor    string  `description:"颜色"`
-	ChartWidth    int     `description:"线条大小"`
-	IsPoint       int     `description:"是否用数据点展示(0 否,1是)"`
-	IsNumber      int     `description:"是否用数值展示(0 否,1是)"`
-	IsAxis        int     `description:"1:左轴,0:右轴"`
-	MaxData       float64 `description:"上限"`
-	MinData       float64 `description:"下限"`
-	//IsOrder         bool    `description:"true:正序,false:逆序"`
-	EdbInfoList    []*ChartSectionSeriesEdbConf
-	DataList       []float64
-	NoDataEdbIndex []int
+	ChartSeriesId  int                          `gorm:"column:chart_series_id;primaryKey" description:"系列ID"`
+	SeriesName     string                       `gorm:"column:series_name" description:"系列名称"` //系列名称不可同名
+	SeriesNameEn   string                       `gorm:"column:series_name_en" description:"系列英文名称"`
+	ChartStyle     string                       `gorm:"column:chart_style" description:"图表类型"`
+	ChartColor     string                       `gorm:"column:chart_color" description:"颜色"`
+	ChartWidth     int                          `gorm:"column:chart_width" description:"线条大小"`
+	IsPoint        int                          `gorm:"column:is_point" description:"是否用数据点展示(0 否,1是)"`
+	IsNumber       int                          `gorm:"column:is_number" description:"是否用数值展示(0 否,1是)"`
+	IsAxis         int                          `gorm:"column:is_axis" description:"1:左轴,0:右轴"`
+	MaxData        float64                      `gorm:"column:max_data" description:"上限"`
+	MinData        float64                      `gorm:"column:min_data" description:"下限"`
+	EdbInfoList    []*ChartSectionSeriesEdbConf `gorm:"foreignkey:ChartSeriesId" description:"指标列表"`
+	DataList       []float64                    `gorm:"column:data_list" description:"数据列表"`
+	NoDataEdbIndex []int                        `gorm:"column:no_data_edb_index" description:"没有数据的指标索引"`
 }
+
 type ChartSectionSeriesEdbConf struct {
 	ChartSeriesEdbMappingId int `description:"映射ID"`
 	ChartSeriesId           int `description:"系列ID"`
@@ -946,12 +1538,19 @@ type ChartTimeCombineDataResp struct {
 }
 
 func GetChartInfoById(chartInfoId int) (item *ChartInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM chart_info WHERE chart_info_id=? `
-	err = o.Raw(sql, chartInfoId).QueryRow(&item)
+	err = o.Raw(sql, chartInfoId).First(&item).Error
 	return
 }
 
+// func GetChartInfoById(chartInfoId int) (item *ChartInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM chart_info WHERE chart_info_id=? `
+// 	err = o.Raw(sql, chartInfoId).QueryRow(&item)
+// 	return
+// }
+
 type MarkersLine struct {
 	Axis             int             `json:"axis" description:"1左轴 2右轴 3横轴"`
 	AxisName         string          `json:"axisName" description:"轴的名称,例如'左轴'"`

+ 92 - 13
models/chart_edb_mapping.go

@@ -1,13 +1,13 @@
 package models
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 )
 
 // GetEtaEdbChartEdbMapping       商品曲线图查询对应的普通指标
 func GetEtaEdbChartEdbMapping(chartInfoId int) (item *ChartEdbInfoMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 
 	aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source`
 	sql := ` SELECT ` + aField + `,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type
@@ -15,13 +15,13 @@ func GetEtaEdbChartEdbMapping(chartInfoId int) (item *ChartEdbInfoMapping, err e
 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
 			 WHERE a.chart_info_id=? AND a.source = ?
              ORDER BY chart_edb_mapping_id ASC `
-	err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_DEFAULT).QueryRow(&item)
+	err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_DEFAULT).First(&item).Error
 	return
 }
 
 // GetEtaEdbChartEdbMappingList       商品曲线图查询对应的普通指标
 func GetEtaEdbChartEdbMappingList(chartInfoId int) (items []*ChartEdbInfoMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source`
 
 	sql := ` SELECT ` + aField + `,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type,b.classify_id,b.is_join_permission
@@ -29,43 +29,43 @@ func GetEtaEdbChartEdbMappingList(chartInfoId int) (items []*ChartEdbInfoMapping
 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
 			 WHERE a.chart_info_id=? AND a.source = ?
              ORDER BY chart_edb_mapping_id ASC `
-	_, err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_DEFAULT).QueryRows(&items)
+	err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_DEFAULT).Scan(&items).Error
 	return
 }
 
 // GetFutureGoodEdbChartEdbMapping       商品曲线图查询对应的商品指标
 func GetFutureGoodEdbChartEdbMapping(chartInfoId int) (item *ChartEdbInfoMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source`
 	sql := ` SELECT ` + aField + `,b.future_good_edb_info_id,b.future_good_edb_code as edb_code,b.future_good_edb_name as edb_name,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value
              FROM chart_edb_mapping AS a
 			 INNER JOIN future_good_edb_info AS b ON a.edb_info_id=b.future_good_edb_info_id
 			 WHERE a.chart_info_id=? AND a.source = ?
              ORDER BY chart_edb_mapping_id ASC `
-	err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_FUTURE_GOOD).QueryRow(&item)
+	err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_FUTURE_GOOD).First(&item).Error
 	return
 }
 
 // GetFutureGoodEdbChartEdbMappingList       商品曲线图查询对应的商品指标
 func GetFutureGoodEdbChartEdbMappingList(chartInfoId int) (items []*ChartEdbInfoMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source`
 	sql := ` SELECT ` + aField + `,b.future_good_edb_info_id,b.future_good_edb_code as edb_code,b.future_good_edb_name as edb_name,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value
              FROM chart_edb_mapping AS a
 			 INNER JOIN future_good_edb_info AS b ON a.edb_info_id=b.future_good_edb_info_id
 			 WHERE a.chart_info_id=? AND a.source = ?
              ORDER BY chart_edb_mapping_id ASC `
-	_, err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_FUTURE_GOOD).QueryRows(&items)
+	err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_FUTURE_GOOD).Scan(&items).Error
 	return
 }
 
 // GetChartEdbMappingByEdbInfoId 根据指标id获取edb_mapping
 func GetChartEdbMappingByEdbInfoId(edbInfoId int) (item *ChartEdbInfoMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT edb_info_id,source_name,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value
              FROM edb_info
 			 WHERE edb_info_id = ? limit 1`
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	err = o.Raw(sql, edbInfoId).First(&item).Error
 	return
 }
 
@@ -75,12 +75,91 @@ func GetChartEdbMappingListByEdbInfoIdList(edbIdList []int) (list []*ChartEdbInf
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT edb_info_id,source_name,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value,edb_type
              FROM edb_info
 			 WHERE edb_info_id IN(` + utils.GetOrmInReplace(num) + `)
 			ORDER BY FIELD(edb_info_id,` + utils.GetOrmInReplace(num) + `)
               `
-	_, err = o.Raw(sql, edbIdList, edbIdList).QueryRows(&list)
+	err = o.Raw(sql, edbIdList, edbIdList).Scan(&list).Error
 	return
 }
+
+// func GetEtaEdbChartEdbMapping(chartInfoId int) (item *ChartEdbInfoMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+
+// 	aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source`
+// 	sql := ` SELECT ` + aField + `,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type
+//              FROM chart_edb_mapping AS a
+// 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
+// 			 WHERE a.chart_info_id=? AND a.source = ?
+//              ORDER BY chart_edb_mapping_id ASC `
+// 	err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_DEFAULT).QueryRow(&item)
+// 	return
+// }
+
+// // GetEtaEdbChartEdbMappingList       商品曲线图查询对应的普通指标
+// func GetEtaEdbChartEdbMappingList(chartInfoId int) (items []*ChartEdbInfoMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source`
+
+// 	sql := ` SELECT ` + aField + `,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type,b.classify_id,b.is_join_permission
+//              FROM chart_edb_mapping AS a
+// 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
+// 			 WHERE a.chart_info_id=? AND a.source = ?
+//              ORDER BY chart_edb_mapping_id ASC `
+// 	_, err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_DEFAULT).QueryRows(&items)
+// 	return
+// }
+
+// // GetFutureGoodEdbChartEdbMapping       商品曲线图查询对应的商品指标
+// func GetFutureGoodEdbChartEdbMapping(chartInfoId int) (item *ChartEdbInfoMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source`
+// 	sql := ` SELECT ` + aField + `,b.future_good_edb_info_id,b.future_good_edb_code as edb_code,b.future_good_edb_name as edb_name,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value
+//              FROM chart_edb_mapping AS a
+// 			 INNER JOIN future_good_edb_info AS b ON a.edb_info_id=b.future_good_edb_info_id
+// 			 WHERE a.chart_info_id=? AND a.source = ?
+//              ORDER BY chart_edb_mapping_id ASC `
+// 	err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_FUTURE_GOOD).QueryRow(&item)
+// 	return
+// }
+
+// // GetFutureGoodEdbChartEdbMappingList       商品曲线图查询对应的商品指标
+// func GetFutureGoodEdbChartEdbMappingList(chartInfoId int) (items []*ChartEdbInfoMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source`
+// 	sql := ` SELECT ` + aField + `,b.future_good_edb_info_id,b.future_good_edb_code as edb_code,b.future_good_edb_name as edb_name,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value
+//              FROM chart_edb_mapping AS a
+// 			 INNER JOIN future_good_edb_info AS b ON a.edb_info_id=b.future_good_edb_info_id
+// 			 WHERE a.chart_info_id=? AND a.source = ?
+//              ORDER BY chart_edb_mapping_id ASC `
+// 	_, err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_FUTURE_GOOD).QueryRows(&items)
+// 	return
+// }
+
+// // GetChartEdbMappingByEdbInfoId 根据指标id获取edb_mapping
+// func GetChartEdbMappingByEdbInfoId(edbInfoId int) (item *ChartEdbInfoMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT edb_info_id,source_name,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value
+//              FROM edb_info
+// 			 WHERE edb_info_id = ? limit 1`
+// 	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+// 	return
+// }
+
+// // GetChartEdbMappingListByEdbInfoIdList 根据指标id列表获取关联关系
+// func GetChartEdbMappingListByEdbInfoIdList(edbIdList []int) (list []*ChartEdbInfoMapping, err error) {
+// 	num := len(edbIdList)
+// 	if num <= 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT edb_info_id,source_name,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value,edb_type
+//              FROM edb_info
+// 			 WHERE edb_info_id IN(` + utils.GetOrmInReplace(num) + `)
+// 			ORDER BY FIELD(edb_info_id,` + utils.GetOrmInReplace(num) + `)
+//               `
+// 	_, err = o.Raw(sql, edbIdList, edbIdList).QueryRows(&list)
+// 	return
+// }

+ 295 - 45
models/chart_series.go

@@ -2,28 +2,45 @@ package models
 
 import (
 	"encoding/json"
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
+//	type ChartSeries struct {
+//		ChartSeriesId int       `orm:"column(chart_series_id);pk"`
+//		SeriesName    string    `description:"系列名称"`
+//		SeriesNameEn  string    `description:"系列英文名称"`
+//		ChartInfoId   int       `description:"图表ID"`
+//		ChartStyle    string    `description:"图表类型"`
+//		ChartColor    string    `description:"颜色"`
+//		ChartWidth    int       `description:"线条大小"`
+//		IsPoint       int       `description:"是否用数据点展示(0 否,1是)"`
+//		IsNumber      int       `description:"是否用数值展示(0 否,1是)"`
+//		IsAxis        int       `description:"1:左轴,0:右轴"`
+//		MaxData       float64   `description:"上限"`
+//		MinData       float64   `description:"下限"`
+//		IsOrder       bool      `description:"true:正序,false:逆序"`
+//		CreateTime    time.Time `description:"创建时间"`
+//		ModifyTime    time.Time `description:"修改时间"`
+//	}
 type ChartSeries struct {
-	ChartSeriesId int       `orm:"column(chart_series_id);pk"`
-	SeriesName    string    `description:"系列名称"`
-	SeriesNameEn  string    `description:"系列英文名称"`
-	ChartInfoId   int       `description:"图表ID"`
-	ChartStyle    string    `description:"图表类型"`
-	ChartColor    string    `description:"颜色"`
-	ChartWidth    int       `description:"线条大小"`
-	IsPoint       int       `description:"是否用数据点展示(0 否,1是)"`
-	IsNumber      int       `description:"是否用数值展示(0 否,1是)"`
-	IsAxis        int       `description:"1:左轴,0:右轴"`
-	MaxData       float64   `description:"上限"`
-	MinData       float64   `description:"下限"`
-	IsOrder       bool      `description:"true:正序,false:逆序"`
-	CreateTime    time.Time `description:"创建时间"`
-	ModifyTime    time.Time `description:"修改时间"`
+	ChartSeriesId int       `gorm:"column:chart_series_id;primaryKey" description:"系列ID" orm:"column(chart_series_id);pk"`
+	SeriesName    string    `gorm:"column:series_name" description:"系列名称"`
+	SeriesNameEn  string    `gorm:"column:series_name_en" description:"系列英文名称"`
+	ChartInfoId   int       `gorm:"column:chart_info_id" description:"图表ID"`
+	ChartStyle    string    `gorm:"column:chart_style" description:"图表类型"`
+	ChartColor    string    `gorm:"column:chart_color" description:"颜色"`
+	ChartWidth    int       `gorm:"column:chart_width" description:"线条大小"`
+	IsPoint       int       `gorm:"column:is_point" description:"是否用数据点展示(0 否,1是)"`
+	IsNumber      int       `gorm:"column:is_number" description:"是否用数值展示(0 否,1是)"`
+	IsAxis        int       `gorm:"column:is_axis" description:"1:左轴,0:右轴"`
+	MaxData       float64   `gorm:"column:max_data" description:"上限"`
+	MinData       float64   `gorm:"column:min_data" description:"下限"`
+	IsOrder       bool      `gorm:"column:is_order" description:"true:正序,false:逆序"`
+	CreateTime    time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime    time.Time `gorm:"column:modify_time" description:"修改时间"`
 }
 
 func (c *ChartSeries) TableName() string {
@@ -31,19 +48,16 @@ func (c *ChartSeries) TableName() string {
 }
 
 func GetChartSeriesByChartInfoId(chartInfoId int) (items []*ChartSeries, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := "SELECT * FROM chart_series WHERE chart_info_id = ?"
-	_, err = o.Raw(sql, chartInfoId).QueryRows(&items)
+	err = o.Raw(sql, chartInfoId).Scan(&items).Error
 	return
 }
 
 // EditChartSeriesAndEdbMapping
 func EditChartSeriesAndEdbMapping(extraConfigStr string, chartInfoId int) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	o := global.DmSQL["data"]
+	to := o.Begin()
 	defer func() {
 		if err != nil {
 			_ = to.Rollback()
@@ -72,7 +86,7 @@ func EditChartSeriesAndEdbMapping(extraConfigStr string, chartInfoId int) (err e
 	}
 
 	// 删除所有的指标映射
-	_, err = o.Raw("DELETE FROM chart_series_edb_mapping WHERE chart_info_id = ?", chartInfoId).Exec()
+	err = o.Exec("DELETE FROM chart_series_edb_mapping WHERE chart_info_id = ?", chartInfoId).Error
 	if err != nil {
 		return
 	}
@@ -102,16 +116,16 @@ func EditChartSeriesAndEdbMapping(extraConfigStr string, chartInfoId int) (err e
 			}
 			//新增
 			tmp.CreateTime = time.Now()
-			seriesIdTmp, e := to.Insert(tmp)
+			e := to.Create(tmp).Error
 			if e != nil {
 				err = fmt.Errorf("AddChartSeries Err:" + e.Error())
 				return
 			}
-			seriesId = int(seriesIdTmp)
+			seriesId = int(tmp.ChartSeriesId)
 		} else {
 			//编辑
 			delete(seriesDeleteMap, v.ChartSeriesId)
-			_, e := to.Update(tmp)
+			e := to.Model(tmp).Select("*").Updates(tmp).Error
 			if e != nil {
 				err = fmt.Errorf("UpdateChartSeries Err:" + e.Error())
 				return
@@ -141,7 +155,7 @@ func EditChartSeriesAndEdbMapping(extraConfigStr string, chartInfoId int) (err e
 			addSeriesEdbList = append(addSeriesEdbList, edbTmp)
 		}
 		if len(addSeriesEdbList) > 0 {
-			_, err = to.InsertMulti(len(addSeriesEdbList), addSeriesEdbList)
+			err = to.CreateInBatches(addSeriesEdbList, utils.MultiAddNum).Error
 			if err != nil {
 				err = fmt.Errorf("AddChartSeries Err:" + err.Error())
 				return
@@ -155,13 +169,13 @@ func EditChartSeriesAndEdbMapping(extraConfigStr string, chartInfoId int) (err e
 	}
 	if len(seriesIds) > 0 {
 		sql := `DELETE FROM chart_series WHERE chart_series_id IN (` + utils.GetOrmInReplace(len(seriesIds)) + `) and chart_info_id=?`
-		_, err = to.Raw(sql, seriesIds, chartInfoId).Exec()
+		err = to.Exec(sql, seriesIds, chartInfoId).Error
 		if err != nil {
 			err = fmt.Errorf("删除系列失败 Err:" + err.Error())
 			return
 		}
 		sql = `DELETE FROM chart_series_edb_mapping WHERE chart_series_id IN (` + utils.GetOrmInReplace(len(seriesIds)) + `) and chart_info_id=?`
-		_, err = to.Raw(sql, seriesIds, chartInfoId).Exec()
+		err = to.Exec(sql, seriesIds, chartInfoId).Error
 		if err != nil {
 			err = fmt.Errorf("删除系列指标 Err:" + err.Error())
 			return
@@ -172,11 +186,8 @@ func EditChartSeriesAndEdbMapping(extraConfigStr string, chartInfoId int) (err e
 }
 
 func AddChartSeriesAndEdbMapping(extraConfigStr string, chartInfoId int) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	o := global.DmSQL["data"]
+	to := o.Begin()
 	defer func() {
 		if err != nil {
 			_ = to.Rollback()
@@ -209,12 +220,12 @@ func AddChartSeriesAndEdbMapping(extraConfigStr string, chartInfoId int) (err er
 			CreateTime:   time.Now(),
 			ModifyTime:   time.Now(),
 		}
-		seriesIdTmp, e := to.Insert(tmp)
+		e := to.Create(tmp).Error
 		if e != nil {
 			err = fmt.Errorf("AddChartSeries Err:" + e.Error())
 			return
 		}
-		seriesId := int(seriesIdTmp)
+		seriesId := int(tmp.ChartSeriesId)
 		addSeriesEdbList := make([]*ChartSeriesEdbMapping, 0)
 		for _, edbItem := range v.EdbInfoList {
 			dateConfStrByte, e := json.Marshal(edbItem.DateConf)
@@ -238,7 +249,7 @@ func AddChartSeriesAndEdbMapping(extraConfigStr string, chartInfoId int) (err er
 			addSeriesEdbList = append(addSeriesEdbList, edbTmp)
 		}
 		if len(addSeriesEdbList) > 0 {
-			_, e = to.InsertMulti(len(addSeriesEdbList), addSeriesEdbList)
+			e = to.CreateInBatches(addSeriesEdbList, utils.MultiAddNum).Error
 			if e != nil {
 				err = fmt.Errorf("AddChartSeries Err:" + e.Error())
 				return
@@ -249,11 +260,8 @@ func AddChartSeriesAndEdbMapping(extraConfigStr string, chartInfoId int) (err er
 }
 
 func DeleteChartSeriesAndEdbMapping(chartInfoId int) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	o := global.DmSQL["data"]
+	to := o.Begin()
 	defer func() {
 		if err != nil {
 			_ = to.Rollback()
@@ -263,15 +271,257 @@ func DeleteChartSeriesAndEdbMapping(chartInfoId int) (err error) {
 	}()
 
 	sql := ` DELETE FROM chart_series WHERE chart_info_id=? `
-	_, err = to.Raw(sql, chartInfoId).Exec()
+	err = to.Exec(sql, chartInfoId).Error
 	if err != nil {
 		return
 	}
 	sql = ` DELETE FROM  chart_series_edb_mapping WHERE chart_info_id=? `
-	_, err = to.Raw(sql, chartInfoId).Exec()
+	err = to.Exec(sql, chartInfoId).Error
 	return
 }
 
+// func GetChartSeriesByChartInfoId(chartInfoId int) (items []*ChartSeries, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := "SELECT * FROM chart_series WHERE chart_info_id = ?"
+// 	_, err = o.Raw(sql, chartInfoId).QueryRows(&items)
+// 	return
+// }
+
+// // EditChartSeriesAndEdbMapping
+// func EditChartSeriesAndEdbMapping(extraConfigStr string, chartInfoId int) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	to, err := o.Begin()
+// 	if err != nil {
+// 		return
+// 	}
+// 	defer func() {
+// 		if err != nil {
+// 			_ = to.Rollback()
+// 		} else {
+// 			_ = to.Commit()
+// 		}
+// 	}()
+
+// 	// 获取已经存在的系列
+// 	series, err := GetChartSeriesByChartInfoId(chartInfoId)
+// 	if err != nil {
+// 		return
+// 	}
+// 	//整理成系列map
+// 	seriesMap := make(map[int]struct{})
+// 	seriesDeleteMap := make(map[int]struct{})
+// 	for _, v := range series {
+// 		seriesMap[v.ChartSeriesId] = struct{}{}
+// 		seriesDeleteMap[v.ChartSeriesId] = struct{}{}
+// 	}
+// 	var sectionExtraConfig ChartSectionAllExtraConf
+// 	err = json.Unmarshal([]byte(extraConfigStr), &sectionExtraConfig)
+// 	if err != nil {
+// 		err = fmt.Errorf("截面组合图配置异常")
+// 		return
+// 	}
+
+// 	// 删除所有的指标映射
+// 	_, err = o.Raw("DELETE FROM chart_series_edb_mapping WHERE chart_info_id = ?", chartInfoId).Exec()
+// 	if err != nil {
+// 		return
+// 	}
+
+// 	seriesList := sectionExtraConfig.SeriesList
+// 	for _, v := range seriesList {
+// 		seriesId := v.ChartSeriesId
+// 		tmp := &ChartSeries{
+// 			ChartSeriesId: v.ChartSeriesId,
+// 			SeriesName:    v.SeriesName,
+// 			SeriesNameEn:  v.SeriesNameEn,
+// 			ChartInfoId:   chartInfoId,
+// 			ChartStyle:    v.ChartStyle,
+// 			ChartColor:    v.ChartColor,
+// 			ChartWidth:    v.ChartWidth,
+// 			IsPoint:       v.IsPoint,
+// 			IsNumber:      v.IsNumber,
+// 			IsAxis:        v.IsAxis,
+// 			MaxData:       v.MaxData,
+// 			MinData:       v.MinData,
+// 			ModifyTime:    time.Now(),
+// 		}
+// 		if _, ok := seriesMap[v.ChartSeriesId]; !ok {
+// 			if seriesId > 0 {
+// 				err = fmt.Errorf("系列ID错误")
+// 				return
+// 			}
+// 			//新增
+// 			tmp.CreateTime = time.Now()
+// 			seriesIdTmp, e := to.Insert(tmp)
+// 			if e != nil {
+// 				err = fmt.Errorf("AddChartSeries Err:" + e.Error())
+// 				return
+// 			}
+// 			seriesId = int(seriesIdTmp)
+// 		} else {
+// 			//编辑
+// 			delete(seriesDeleteMap, v.ChartSeriesId)
+// 			_, e := to.Update(tmp)
+// 			if e != nil {
+// 				err = fmt.Errorf("UpdateChartSeries Err:" + e.Error())
+// 				return
+// 			}
+// 		}
+
+// 		addSeriesEdbList := make([]*ChartSeriesEdbMapping, 0)
+// 		for _, edbItem := range v.EdbInfoList {
+// 			dateConfStrByte, e := json.Marshal(edbItem.DateConf)
+// 			if e != nil {
+// 				err = e
+// 				return
+// 			}
+// 			dateConfStr := string(dateConfStrByte)
+// 			edbTmp := &ChartSeriesEdbMapping{
+// 				ChartSeriesId: seriesId,    //todo 系列ID
+// 				ChartInfoId:   chartInfoId, //todo 表图ID
+// 				EdbInfoId:     edbItem.EdbInfoId,
+// 				//EdbAliasName:            "",
+// 				//EdbAliasNameEn:          "",
+// 				DateConfName: edbItem.DateConfName,
+// 				DateConf:     dateConfStr,
+// 				DateConfType: edbItem.DateConfType,
+// 				CreateTime:   time.Now(),
+// 				ModifyTime:   time.Now(),
+// 			}
+// 			addSeriesEdbList = append(addSeriesEdbList, edbTmp)
+// 		}
+// 		if len(addSeriesEdbList) > 0 {
+// 			_, err = to.InsertMulti(len(addSeriesEdbList), addSeriesEdbList)
+// 			if err != nil {
+// 				err = fmt.Errorf("AddChartSeries Err:" + err.Error())
+// 				return
+// 			}
+// 		}
+// 	}
+// 	//删除旧的系列和ID
+// 	seriesIds := make([]int, 0)
+// 	for id, _ := range seriesDeleteMap {
+// 		seriesIds = append(seriesIds, id)
+// 	}
+// 	if len(seriesIds) > 0 {
+// 		sql := `DELETE FROM chart_series WHERE chart_series_id IN (` + utils.GetOrmInReplace(len(seriesIds)) + `) and chart_info_id=?`
+// 		_, err = to.Raw(sql, seriesIds, chartInfoId).Exec()
+// 		if err != nil {
+// 			err = fmt.Errorf("删除系列失败 Err:" + err.Error())
+// 			return
+// 		}
+// 		sql = `DELETE FROM chart_series_edb_mapping WHERE chart_series_id IN (` + utils.GetOrmInReplace(len(seriesIds)) + `) and chart_info_id=?`
+// 		_, err = to.Raw(sql, seriesIds, chartInfoId).Exec()
+// 		if err != nil {
+// 			err = fmt.Errorf("删除系列指标 Err:" + err.Error())
+// 			return
+// 		}
+// 	}
+
+// 	return
+// }
+
+// func AddChartSeriesAndEdbMapping(extraConfigStr string, chartInfoId int) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	to, err := o.Begin()
+// 	if err != nil {
+// 		return
+// 	}
+// 	defer func() {
+// 		if err != nil {
+// 			_ = to.Rollback()
+// 		} else {
+// 			_ = to.Commit()
+// 		}
+// 	}()
+
+// 	var sectionExtraConfig ChartSectionAllExtraConf
+// 	err = json.Unmarshal([]byte(extraConfigStr), &sectionExtraConfig)
+// 	if err != nil {
+// 		err = fmt.Errorf("截面组合图配置异常")
+// 		return
+// 	}
+// 	seriesList := sectionExtraConfig.SeriesList
+// 	for _, v := range seriesList {
+// 		tmp := &ChartSeries{
+// 			SeriesName:   v.SeriesName,
+// 			SeriesNameEn: v.SeriesNameEn,
+// 			ChartInfoId:  chartInfoId,
+// 			ChartStyle:   v.ChartStyle,
+// 			ChartColor:   v.ChartColor,
+// 			ChartWidth:   v.ChartWidth,
+// 			IsPoint:      v.IsPoint,
+// 			IsNumber:     v.IsNumber,
+// 			IsAxis:       v.IsAxis,
+// 			MaxData:      v.MaxData,
+// 			MinData:      v.MinData,
+// 			IsOrder:      false, //todo 是否排序
+// 			CreateTime:   time.Now(),
+// 			ModifyTime:   time.Now(),
+// 		}
+// 		seriesIdTmp, e := to.Insert(tmp)
+// 		if e != nil {
+// 			err = fmt.Errorf("AddChartSeries Err:" + e.Error())
+// 			return
+// 		}
+// 		seriesId := int(seriesIdTmp)
+// 		addSeriesEdbList := make([]*ChartSeriesEdbMapping, 0)
+// 		for _, edbItem := range v.EdbInfoList {
+// 			dateConfStrByte, e := json.Marshal(edbItem.DateConf)
+// 			if e != nil {
+// 				err = e
+// 				return
+// 			}
+// 			dateConfStr := string(dateConfStrByte)
+// 			edbTmp := &ChartSeriesEdbMapping{
+// 				ChartSeriesId: seriesId,    //todo 系列ID
+// 				ChartInfoId:   chartInfoId, //todo 表图ID
+// 				EdbInfoId:     edbItem.EdbInfoId,
+// 				//EdbAliasName:            "",
+// 				//EdbAliasNameEn:          "",
+// 				DateConfName: edbItem.DateConfName,
+// 				DateConfType: edbItem.DateConfType,
+// 				DateConf:     dateConfStr,
+// 				CreateTime:   time.Now(),
+// 				ModifyTime:   time.Now(),
+// 			}
+// 			addSeriesEdbList = append(addSeriesEdbList, edbTmp)
+// 		}
+// 		if len(addSeriesEdbList) > 0 {
+// 			_, e = to.InsertMulti(len(addSeriesEdbList), addSeriesEdbList)
+// 			if e != nil {
+// 				err = fmt.Errorf("AddChartSeries Err:" + e.Error())
+// 				return
+// 			}
+// 		}
+// 	}
+// 	return
+// }
+
+// func DeleteChartSeriesAndEdbMapping(chartInfoId int) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	to, err := o.Begin()
+// 	if err != nil {
+// 		return
+// 	}
+// 	defer func() {
+// 		if err != nil {
+// 			_ = to.Rollback()
+// 		} else {
+// 			_ = to.Commit()
+// 		}
+// 	}()
+
+// 	sql := ` DELETE FROM chart_series WHERE chart_info_id=? `
+// 	_, err = to.Raw(sql, chartInfoId).Exec()
+// 	if err != nil {
+// 		return
+// 	}
+// 	sql = ` DELETE FROM  chart_series_edb_mapping WHERE chart_info_id=? `
+// 	_, err = to.Raw(sql, chartInfoId).Exec()
+// 	return
+// }
+
 type ChartSectionSeriesValSortAsc []ChartSectionSeriesValSort
 type ChartSectionSeriesValSortDesc []ChartSectionSeriesValSort
 

+ 30 - 12
models/chart_series_edb_mapping.go

@@ -1,20 +1,31 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_chart_lib/global"
 	"time"
 )
 
+//	type ChartSeriesEdbMapping struct {
+//		ChartSeriesEdbMappingId int       `orm:"column(chart_series_edb_mapping_id);pk"`
+//		ChartSeriesId           int       `description:"系列ID"`
+//		ChartInfoId             int       `description:"图表ID"`
+//		EdbInfoId               int       `description:"指标id"`
+//		DateConfName            string    `description:"引用日期配置名称"`
+//		DateConfType            int       `description:"日期类型,0指标最新日期, 1引用日期"`
+//		DateConf                string    `description:"日期配置名称"`
+//		ModifyTime              time.Time `description:"修改时间"`
+//		CreateTime              time.Time `description:"创建时间"`
+//	}
 type ChartSeriesEdbMapping struct {
-	ChartSeriesEdbMappingId int       `orm:"column(chart_series_edb_mapping_id);pk"`
-	ChartSeriesId           int       `description:"系列ID"`
-	ChartInfoId             int       `description:"图表ID"`
-	EdbInfoId               int       `description:"指标id"`
-	DateConfName            string    `description:"引用日期配置名称"`
-	DateConfType            int       `description:"日期类型,0指标最新日期, 1引用日期"`
-	DateConf                string    `description:"日期配置名称"`
-	ModifyTime              time.Time `description:"修改时间"`
-	CreateTime              time.Time `description:"创建时间"`
+	ChartSeriesEdbMappingId int       `gorm:"column:chart_series_edb_mapping_id;primaryKey" description:"系列指标映射ID" orm:"column(chart_series_edb_mapping_id);pk"`
+	ChartSeriesId           int       `gorm:"column:chart_series_id" description:"系列ID"`
+	ChartInfoId             int       `gorm:"column:chart_info_id" description:"图表ID"`
+	EdbInfoId               int       `gorm:"column:edb_info_id" description:"指标id"`
+	DateConfName            string    `gorm:"column:date_conf_name" description:"引用日期配置名称"`
+	DateConfType            int       `gorm:"column:date_conf_type" description:"日期类型,0指标最新日期,1引用日期"`
+	DateConf                string    `gorm:"column:date_conf" description:"日期配置名称"`
+	ModifyTime              time.Time `gorm:"column:modify_time" description:"修改时间"`
+	CreateTime              time.Time `gorm:"column:create_time" description:"创建时间"`
 }
 
 func (c *ChartSeriesEdbMapping) TableName() string {
@@ -22,8 +33,15 @@ func (c *ChartSeriesEdbMapping) TableName() string {
 }
 
 func GetChartSeriesEdbByChartInfoId(chartInfoId int) (items []*ChartSeriesEdbMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := "SELECT * FROM chart_series_edb_mapping WHERE chart_info_id = ?"
-	_, err = o.Raw(sql, chartInfoId).QueryRows(&items)
+	err = o.Raw(sql, chartInfoId).Scan(&items).Error
 	return
 }
+
+// func GetChartSeriesEdbByChartInfoId(chartInfoId int) (items []*ChartSeriesEdbMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := "SELECT * FROM chart_series_edb_mapping WHERE chart_info_id = ?"
+// 	_, err = o.Raw(sql, chartInfoId).QueryRows(&items)
+// 	return
+// }

+ 94 - 44
models/data_manage/chart_info.go

@@ -1,62 +1,112 @@
 package data_manage
 
-import (
-	"github.com/beego/beego/v2/client/orm"
-)
+import "eta_gn/eta_chart_lib/global"
 
+//	type ChartEdbInfoMapping struct {
+//		EdbInfoId           int     `description:"指标id"`
+//		SourceName          string  `description:"来源名称"`
+//		Source              int     `description:"来源id"`
+//		EdbCode             string  `description:"指标编码"`
+//		EdbName             string  `description:"指标名称"`
+//		EdbAliasName        string  `description:"指标名称(别名)"`
+//		EdbNameEn           string  `description:"英文指标名称"`
+//		EdbAliasNameEn      string  `description:"英文指标名称(别名)"`
+//		EdbType             int     `description:"指标类型:1:基础指标,2:计算指标"`
+//		Frequency           string  `description:"频率"`
+//		FrequencyEn         string  `description:"英文频率"`
+//		Unit                string  `description:"单位"`
+//		UnitEn              string  `description:"英文单位"`
+//		StartDate           string  `description:"起始日期"`
+//		EndDate             string  `description:"终止日期"`
+//		ModifyTime          string  `description:"指标最后更新时间"`
+//		ChartEdbMappingId   int     `description:"图表指标id"`
+//		ChartInfoId         int     `description:"图表id"`
+//		MaxData             float64 `description:"上限"`
+//		MinData             float64 `description:"下限"`
+//		IsOrder             bool    `description:"true:正序,false:逆序"`
+//		IsAxis              int     `description:"1:左轴,0:右轴"`
+//		EdbInfoType         int     `description:"1:标准指标,0:领先指标"`
+//		EdbInfoCategoryType int     `description:"0:普通指标,1:预测指标"`
+//		LeadValue           int     `description:"领先值"`
+//		LeadUnit            string  `description:"领先单位"`
+//		LeadUnitEn          string  `description:"领先英文单位"`
+//		ChartStyle          string  `description:"图表类型"`
+//		ChartColor          string  `description:"颜色"`
+//		PredictChartColor   string  `description:"预测数据的颜色"`
+//		ChartWidth          float64 `description:"线条大小"`
+//		ChartType           int     `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图"`
+//		LatestDate          string  `description:"数据最新日期"`
+//		LatestValue         float64 `description:"数据最新值"`
+//		UniqueCode          string  `description:"指标唯一编码"`
+//		MinValue            float64 `json:"-" description:"最小值"`
+//		MaxValue            float64 `json:"-" description:"最大值"`
+//		DataList            interface{}
+//		IsNullData          bool `json:"-" description:"是否空数据"`
+//	}
 type ChartEdbInfoMapping struct {
-	EdbInfoId           int     `description:"指标id"`
-	SourceName          string  `description:"来源名称"`
-	Source              int     `description:"来源id"`
-	EdbCode             string  `description:"指标编码"`
-	EdbName             string  `description:"指标名称"`
-	EdbAliasName        string  `description:"指标名称(别名)"`
-	EdbNameEn           string  `description:"英文指标名称"`
-	EdbAliasNameEn      string  `description:"英文指标名称(别名)"`
-	EdbType             int     `description:"指标类型:1:基础指标,2:计算指标"`
-	Frequency           string  `description:"频率"`
-	FrequencyEn         string  `description:"英文频率"`
-	Unit                string  `description:"单位"`
-	UnitEn              string  `description:"英文单位"`
-	StartDate           string  `description:"起始日期"`
-	EndDate             string  `description:"终止日期"`
-	ModifyTime          string  `description:"指标最后更新时间"`
-	ChartEdbMappingId   int     `description:"图表指标id"`
-	ChartInfoId         int     `description:"图表id"`
-	MaxData             float64 `description:"上限"`
-	MinData             float64 `description:"下限"`
-	IsOrder             bool    `description:"true:正序,false:逆序"`
-	IsAxis              int     `description:"1:左轴,0:右轴"`
-	EdbInfoType         int     `description:"1:标准指标,0:领先指标"`
-	EdbInfoCategoryType int     `description:"0:普通指标,1:预测指标"`
-	LeadValue           int     `description:"领先值"`
-	LeadUnit            string  `description:"领先单位"`
-	LeadUnitEn          string  `description:"领先英文单位"`
-	ChartStyle          string  `description:"图表类型"`
-	ChartColor          string  `description:"颜色"`
-	PredictChartColor   string  `description:"预测数据的颜色"`
-	ChartWidth          float64 `description:"线条大小"`
-	ChartType           int     `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图"`
-	LatestDate          string  `description:"数据最新日期"`
-	LatestValue         float64 `description:"数据最新值"`
-	UniqueCode          string  `description:"指标唯一编码"`
-	MinValue            float64 `json:"-" description:"最小值"`
-	MaxValue            float64 `json:"-" description:"最大值"`
-	DataList            interface{}
-	IsNullData          bool `json:"-" description:"是否空数据"`
+	EdbInfoId           int         `gorm:"column:edb_info_id" description:"指标id"`
+	SourceName          string      `gorm:"column:source_name" description:"来源名称"`
+	Source              int         `gorm:"column:source" description:"来源id"`
+	EdbCode             string      `gorm:"column:edb_code" description:"指标编码"`
+	EdbName             string      `gorm:"column:edb_name" description:"指标名称"`
+	EdbAliasName        string      `gorm:"column:edb_alias_name" description:"指标名称(别名)"`
+	EdbNameEn           string      `gorm:"column:edb_name_en" description:"英文指标名称"`
+	EdbAliasNameEn      string      `gorm:"column:edb_alias_name_en" description:"英文指标名称(别名)"`
+	EdbType             int         `gorm:"column:edb_type" description:"指标类型:1:基础指标,2:计算指标"`
+	Frequency           string      `gorm:"column:frequency" description:"频率"`
+	FrequencyEn         string      `gorm:"column:frequency_en" description:"英文频率"`
+	Unit                string      `gorm:"column:unit" description:"单位"`
+	UnitEn              string      `gorm:"column:unit_en" description:"英文单位"`
+	StartDate           string      `gorm:"column:start_date" description:"起始日期"`
+	EndDate             string      `gorm:"column:end_date" description:"终止日期"`
+	ModifyTime          string      `gorm:"column:modify_time" description:"指标最后更新时间"`
+	ChartEdbMappingId   int         `gorm:"column:chart_edb_mapping_id" description:"图表指标id"`
+	ChartInfoId         int         `gorm:"column:chart_info_id" description:"图表id"`
+	MaxData             float64     `gorm:"column:max_data" description:"上限"`
+	MinData             float64     `gorm:"column:min_data" description:"下限"`
+	IsOrder             bool        `gorm:"column:is_order" description:"true:正序,false:逆序"`
+	IsAxis              int         `gorm:"column:is_axis" description:"1:左轴,0:右轴"`
+	EdbInfoType         int         `gorm:"column:edb_info_type" description:"1:标准指标,0:领先指标"`
+	EdbInfoCategoryType int         `gorm:"column:edb_info_category_type" description:"0:普通指标,1:预测指标"`
+	LeadValue           int         `gorm:"column:lead_value" description:"领先值"`
+	LeadUnit            string      `gorm:"column:lead_unit" description:"领先单位"`
+	LeadUnitEn          string      `gorm:"column:lead_unit_en" description:"领先英文单位"`
+	ChartStyle          string      `gorm:"column:chart_style" description:"图表类型"`
+	ChartColor          string      `gorm:"column:chart_color" description:"颜色"`
+	PredictChartColor   string      `gorm:"column:predict_chart_color" description:"预测数据的颜色"`
+	ChartWidth          float64     `gorm:"column:chart_width" description:"线条大小"`
+	ChartType           int         `gorm:"column:chart_type" description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图"`
+	LatestDate          string      `gorm:"column:latest_date" description:"数据最新日期"`
+	LatestValue         float64     `gorm:"column:latest_value" description:"数据最新值"`
+	UniqueCode          string      `gorm:"column:unique_code" description:"指标唯一编码"`
+	MinValue            float64     `gorm:"column:min_value" json:"-" description:"最小值"`
+	MaxValue            float64     `gorm:"column:max_value" json:"-" description:"最大值"`
+	DataList            interface{} `gorm:"column:data_list" description:"数据列表"`
+	IsNullData          bool        `gorm:"column:is_null_data" json:"-" description:"是否空数据"`
 }
 
 func GetChartEdbMappingList(chartInfoId int) (list []*ChartEdbInfoMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT a.*,b.source_name,b.source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type
              FROM chart_edb_mapping AS a
 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
 			 WHERE chart_info_id=? 
              ORDER BY chart_edb_mapping_id ASC `
-	_, err = o.Raw(sql, chartInfoId).QueryRows(&list)
+	err = o.Raw(sql, chartInfoId).Scan(&list).Error
 	return
 }
 
+// func GetChartEdbMappingList(chartInfoId int) (list []*ChartEdbInfoMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT a.*,b.source_name,b.source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type
+//              FROM chart_edb_mapping AS a
+// 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
+// 			 WHERE chart_info_id=?
+//              ORDER BY chart_edb_mapping_id ASC `
+// 	_, err = o.Raw(sql, chartInfoId).QueryRows(&list)
+// 	return
+// }
+
 // BarChartInfoReq 柱方图预览请求数据
 type BarChartInfoReq struct {
 	EdbInfoIdList []BarChartInfoEdbItemReq `description:"指标信息"`

+ 116 - 36
models/data_manage/chart_info_correlation.go

@@ -1,31 +1,51 @@
 package data_manage
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
 
 // ChartInfoCorrelation 相关性图表-扩展信息
+//
+//	type ChartInfoCorrelation struct {
+//		CorrelationChartInfoId int       `orm:"column(correlation_chart_info_id);pk" description:"相关性图表ID(chart_info表source=3的)"`
+//		LeadValue              int       `description:"领先值"`
+//		LeadUnit               string    `description:"领先单位"`
+//		CalculateValue         int       `description:"计算窗口"`
+//		CalculateUnit          string    `description:"计算频度"`
+//		BaseCalculateValue     int       `description:"基础计算窗口(滚动相关性的时候用到)"`
+//		BaseCalculateUnit      string    `description:"基础计算频度(滚动相关性的时候用到)"`
+//		DateType               int       `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间,6:起始日期至今"`
+//		StartDate              time.Time `description:"开始日期"`
+//		EndDate                time.Time `description:"结束日期"`
+//		EdbInfoIdFirst         int       `description:"A指标ID"`
+//		EdbInfoIdSecond        int       `description:"B指标ID"`
+//		PeriodData             string    `description:"X轴-期数数据"`
+//		CorrelationData        string    `description:"Y轴-相关性系数"`
+//		CreateTime             time.Time `description:"创建时间"`
+//		ModifyTime             time.Time `description:"更新时间"`
+//		AnalysisMode           int       `description:"分析模式: 0-单因子; 1-多因子"`
+//	}
 type ChartInfoCorrelation struct {
-	CorrelationChartInfoId int       `orm:"column(correlation_chart_info_id);pk" description:"相关性图表ID(chart_info表source=3的)"`
-	LeadValue              int       `description:"领先值"`
-	LeadUnit               string    `description:"领先单位"`
-	CalculateValue         int       `description:"计算窗口"`
-	CalculateUnit          string    `description:"计算频度"`
-	BaseCalculateValue     int       `description:"基础计算窗口(滚动相关性的时候用到)"`
-	BaseCalculateUnit      string    `description:"基础计算频度(滚动相关性的时候用到)"`
-	DateType               int       `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间,6:起始日期至今"`
-	StartDate              time.Time `description:"开始日期"`
-	EndDate                time.Time `description:"结束日期"`
-	EdbInfoIdFirst         int       `description:"A指标ID"`
-	EdbInfoIdSecond        int       `description:"B指标ID"`
-	PeriodData             string    `description:"X轴-期数数据"`
-	CorrelationData        string    `description:"Y轴-相关性系数"`
-	CreateTime             time.Time `description:"创建时间"`
-	ModifyTime             time.Time `description:"更新时间"`
-	AnalysisMode           int       `description:"分析模式: 0-单因子; 1-多因子"`
+	CorrelationChartInfoId int       `gorm:"column:correlation_chart_info_id;primaryKey" description:"相关性图表ID(chart_info表source=3的)" orm:"column(correlation_chart_info_id);pk"`
+	LeadValue              int       `gorm:"column:lead_value" description:"领先值"`
+	LeadUnit               string    `gorm:"column:lead_unit" description:"领先单位"`
+	CalculateValue         int       `gorm:"column:calculate_value" description:"计算窗口"`
+	CalculateUnit          string    `gorm:"column:calculate_unit" description:"计算频度"`
+	BaseCalculateValue     int       `gorm:"column:base_calculate_value" description:"基础计算窗口(滚动相关性的时候用到)"`
+	BaseCalculateUnit      string    `gorm:"column:base_calculate_unit" description:"基础计算频度(滚动相关性的时候用到)"`
+	DateType               int       `gorm:"column:date_type" description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间,6:起始日期至今"`
+	StartDate              time.Time `gorm:"column:start_date" description:"开始日期"`
+	EndDate                time.Time `gorm:"column:end_date" description:"结束日期"`
+	EdbInfoIdFirst         int       `gorm:"column:edb_info_id_first" description:"A指标ID"`
+	EdbInfoIdSecond        int       `gorm:"column:edb_info_id_second" description:"B指标ID"`
+	PeriodData             string    `gorm:"column:period_data" description:"X轴-期数数据"`
+	CorrelationData        string    `gorm:"column:correlation_data" description:"Y轴-相关性系数"`
+	CreateTime             time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime             time.Time `gorm:"column:modify_time" description:"更新时间"`
+	AnalysisMode           int       `gorm:"column:analysis_mode" description:"分析模式: 0-单因子; 1-多因子"`
 }
 
 func (m *ChartInfoCorrelation) TableName() string {
@@ -33,8 +53,8 @@ func (m *ChartInfoCorrelation) TableName() string {
 }
 
 func (m *ChartInfoCorrelation) Create() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Insert(m)
+	o := global.DmSQL["data"]
+	err = o.Create(m).Error
 	if err != nil {
 		return
 	}
@@ -43,34 +63,34 @@ func (m *ChartInfoCorrelation) Create() (err error) {
 }
 
 func (m *ChartInfoCorrelation) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(m, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(m).Select(cols).Updates(m).Error
 	return
 }
 
 func (m *ChartInfoCorrelation) Delete() (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE correlation_chart_info_id = ? LIMIT 1`, m.TableName())
-	_, err = o.Raw(sql, m.CorrelationChartInfoId).Exec()
+	err = o.Exec(sql, m.CorrelationChartInfoId).Error
 	return
 }
 
 func (m *ChartInfoCorrelation) GetItemById(id int) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE correlation_chart_info_id = ? LIMIT 1`, m.TableName())
-	err = o.Raw(sql, id).QueryRow(&m)
+	err = o.Raw(sql, id).First(&m).Error
 	return
 }
 
 func (m *ChartInfoCorrelation) GetItemByCondition(condition string, pars []interface{}) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&m)
+	o := global.DmSQL["data"]
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s `, m.TableName(), condition)
+	err = o.Raw(sql, pars).First(&m).Error
 	return
 }
 
 func (m *ChartInfoCorrelation) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*ChartInfoCorrelation, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -80,17 +100,77 @@ func (m *ChartInfoCorrelation) GetItemsByCondition(condition string, pars []inte
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars).Scan(&items).Error
 	return
 }
 
+// func (m *ChartInfoCorrelation) Create() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Insert(m)
+// 	if err != nil {
+// 		return
+// 	}
+// 	//m.CorrelationChartInfoId = int(id)
+// 	return
+// }
+
+// func (m *ChartInfoCorrelation) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(m, cols...)
+// 	return
+// }
+
+// func (m *ChartInfoCorrelation) Delete() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`DELETE FROM %s WHERE correlation_chart_info_id = ? LIMIT 1`, m.TableName())
+// 	_, err = o.Raw(sql, m.CorrelationChartInfoId).Exec()
+// 	return
+// }
+
+// func (m *ChartInfoCorrelation) GetItemById(id int) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE correlation_chart_info_id = ? LIMIT 1`, m.TableName())
+// 	err = o.Raw(sql, id).QueryRow(&m)
+// 	return
+// }
+
+// func (m *ChartInfoCorrelation) GetItemByCondition(condition string, pars []interface{}) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
+// 	err = o.Raw(sql, pars).QueryRow(&m)
+// 	return
+// }
+
+// func (m *ChartInfoCorrelation) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*ChartInfoCorrelation, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	fields := strings.Join(fieldArr, ",")
+// 	if len(fieldArr) == 0 {
+// 		fields = `*`
+// 	}
+// 	order := ``
+// 	if orderRule != "" {
+// 		order = ` ORDER BY ` + orderRule
+// 	}
+// 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+// 	_, err = o.Raw(sql, pars).QueryRows(&items)
+// 	return
+// }
+
 // FactorCorrelationConfig 因子指标系列-相关性配置
+//
+//	type FactorCorrelationConfig struct {
+//		LeadValue      int                       `description:"领先期数"`
+//		LeadUnit       string                    `description:"频度"`
+//		CalculateValue int                       `description:"计算窗口"`
+//		CalculateUnit  string                    `description:"计算频度"`
+//		SeriesEdb      []CorrelationSeriesEdbReq `description:"关联系列指标"`
+//	}
 type FactorCorrelationConfig struct {
-	LeadValue      int                       `description:"领先期数"`
-	LeadUnit       string                    `description:"频度"`
-	CalculateValue int                       `description:"计算窗口"`
-	CalculateUnit  string                    `description:"计算频度"`
-	SeriesEdb      []CorrelationSeriesEdbReq `description:"关联系列指标"`
+	LeadValue      int                       `gorm:"column:lead_value" description:"领先期数"`
+	LeadUnit       string                    `gorm:"column:lead_unit" description:"频度"`
+	CalculateValue int                       `gorm:"column:calculate_value" description:"计算窗口"`
+	CalculateUnit  string                    `gorm:"column:calculate_unit" description:"计算频度"`
+	SeriesEdb      []CorrelationSeriesEdbReq `gorm:"column:series_edb" description:"关联系列指标"`
 }
 
 // CorrelationChartLegend 相关性图表图例

+ 198 - 54
models/data_manage/chart_theme/chart_theme.go

@@ -2,24 +2,42 @@ package chart_theme
 
 import (
 	"errors"
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_chart_lib/global"
 	"time"
 )
 
 // ChartTheme
 // @Description: 图表主题表
+//
+//	type ChartTheme struct {
+//		ChartThemeId     int       `description:"图表主题类型ID" orm:"column(chart_theme_id);pk"`
+//		ChartThemeName   string    `description:"图表主题名称"`
+//		ChartThemeTypeId int       `description:"图表主题类型ID"`
+//		ChartImage       string    `description:"缩略图"`
+//		Config           string    `description:"配置"`
+//		IsDelete         int       `description:"是否删除,0:未删除;1:已删除"`
+//		SysUserId        int       `description:"操作人"`
+//		SysUserRealName  string    `description:"操作人的真实名称"`
+//		IsSystemTheme    int       `description:"是否是系统主题,0:不是;1:是"`
+//		ModifyTime       time.Time `description:"修改时间"`
+//		CreateTime       time.Time `description:"创建时间"`
+//	}
 type ChartTheme struct {
-	ChartThemeId     int       `description:"图表主题类型ID" orm:"column(chart_theme_id);pk"`
-	ChartThemeName   string    `description:"图表主题名称"`
-	ChartThemeTypeId int       `description:"图表主题类型ID"`
-	ChartImage       string    `description:"缩略图"`
-	Config           string    `description:"配置"`
-	IsDelete         int       `description:"是否删除,0:未删除;1:已删除"`
-	SysUserId        int       `description:"操作人"`
-	SysUserRealName  string    `description:"操作人的真实名称"`
-	IsSystemTheme    int       `description:"是否是系统主题,0:不是;1:是"`
-	ModifyTime       time.Time `description:"修改时间"`
-	CreateTime       time.Time `description:"创建时间"`
+	ChartThemeId     int       `description:"图表主题类型ID" gorm:"column:chart_theme_id;primaryKey" orm:"column(chart_theme_id);pk"`
+	ChartThemeName   string    `description:"图表主题名称" gorm:"column:chart_theme_name"`
+	ChartThemeTypeId int       `description:"图表主题类型ID" gorm:"column:chart_theme_type_id"`
+	ChartImage       string    `description:"缩略图" gorm:"column:chart_image"`
+	Config           string    `description:"配置" gorm:"column:config"`
+	IsDelete         int       `description:"是否删除,0:未删除;1:已删除" gorm:"column:is_delete"`
+	SysUserId        int       `description:"操作人" gorm:"column:sys_user_id"`
+	SysUserRealName  string    `description:"操作人的真实名称" gorm:"column:sys_user_real_name"`
+	IsSystemTheme    int       `description:"是否是系统主题,0:不是;1:是" gorm:"column:is_system_theme"`
+	ModifyTime       time.Time `description:"修改时间" gorm:"column:modify_time"`
+	CreateTime       time.Time `description:"创建时间" gorm:"column:create_time"`
+}
+
+func (m *ChartTheme) TableName() string {
+	return "chart_theme"
 }
 
 // GetChartThemeId
@@ -29,11 +47,25 @@ type ChartTheme struct {
 // @param chartThemeId int
 // @return item *ChartTheme
 // @return err error
+// func GetChartThemeId(chartThemeId int) (item *ChartTheme, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM chart_theme where chart_theme_id = ? AND is_delete = 0`
+// 	err = o.Raw(sql, chartThemeId).QueryRow(&item)
+
+// 	return
+// }
+
+// GetChartThemeId
+// @Description: 根据id获取主题
+// @author: zqbao
+// @datetime 2023-12-14 16:05:36
+// @param chartThemeId int
+// @return item *ChartTheme
+// @return err error
 func GetChartThemeId(chartThemeId int) (item *ChartTheme, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_theme where chart_theme_id = ? AND is_delete = 0`
-	err = o.Raw(sql, chartThemeId).QueryRow(&item)
-
+	err = o.Raw(sql, chartThemeId).First(&item).Error
 	return
 }
 
@@ -44,18 +76,38 @@ func GetChartThemeId(chartThemeId int) (item *ChartTheme, err error) {
 // @datetime 2023-12-14 16:11:10
 // @param cols []string
 // @return err error
+// func (m *ChartTheme) Add() (err error) {
+// 	if m.ChartThemeId > 0 {
+// 		err = errors.New("该配置已存在")
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	lastId, err := o.Insert(m)
+// 	if err != nil {
+// 		return
+// 	}
+// 	m.ChartThemeId = int(lastId)
+
+// 	return
+// }
+
+// Add
+// @Description: 添加
+// @author: zqbao
+// @receiver m
+// @datetime 2023-12-14 16:11:10
+// @param cols []string
+// @return err error
 func (m *ChartTheme) Add() (err error) {
 	if m.ChartThemeId > 0 {
 		err = errors.New("该配置已存在")
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
-	lastId, err := o.Insert(m)
+	o := global.DmSQL["data"]
+	err = o.Create(&m).Error
 	if err != nil {
 		return
 	}
-	m.ChartThemeId = int(lastId)
-
 	return
 }
 
@@ -66,9 +118,22 @@ func (m *ChartTheme) Add() (err error) {
 // @datetime 2023-12-14 16:11:10
 // @param cols []string
 // @return err error
+// func (m *ChartTheme) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(m, cols...)
+// 	return
+// }
+
+// Update
+// @Description: 更新
+// @author: zqbao
+// @receiver m
+// @datetime 2023-12-14 16:11:10
+// @param cols []string
+// @return err error
 func (m *ChartTheme) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(m, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(m).Select(cols).Updates(m).Error
 	return
 }
 
@@ -78,11 +143,25 @@ func (m *ChartTheme) Update(cols []string) (err error) {
 // @datetime 2023-12-13 17:39:48
 // @return list []*ChartTheme
 // @return err error
+// func GetChartThemeListByTypeId(chartThemeTypeId int) (list []*ChartTheme, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM chart_theme WHERE chart_theme_type_id = ? AND  is_delete=0 ORDER BY chart_theme_id ASC `
+// 	_, err = o.Raw(sql, chartThemeTypeId).QueryRows(&list)
+
+// 	return
+// }
+
+// GetChartThemeListByTypeId
+// @Description: 根据图表类型获取关联的图表主题列表
+// @author: zqbao
+// @datetime 2023-12-13 17:39:48
+// @return list []*ChartTheme
+// @return err error
 func GetChartThemeListByTypeId(chartThemeTypeId int) (list []*ChartTheme, err error) {
-	o := orm.NewOrmUsingDB("data")
-	sql := `SELECT * FROM chart_theme WHERE chart_theme_type_id = ? AND  is_delete=0 ORDER BY chart_theme_id ASC `
-	_, err = o.Raw(sql, chartThemeTypeId).QueryRows(&list)
+	o := global.DmSQL["data"]
 
+	sql := `SELECT * FROM chart_theme WHERE chart_theme_type_id = ? AND  is_delete=0 ORDER BY chart_theme_id ASC `
+	err = o.Raw(sql, chartThemeTypeId).Scan(&list).Error
 	return
 }
 
@@ -92,29 +171,62 @@ func GetChartThemeListByTypeId(chartThemeTypeId int) (list []*ChartTheme, err er
 // @datetime 2023-12-13 17:39:48
 // @return list []*ChartTheme
 // @return err error
+// func GetAllChartThemeList() (list []*ChartTheme, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM chart_theme WHERE  is_delete=0 ORDER BY chart_theme_id ASC `
+// 	_, err = o.Raw(sql).QueryRows(&list)
+
+// 	return
+// }
+
+// GetAllChartThemeList
+// @Description: 获取所有图表主题列表
+// @author: zqbao
+// @datetime 2023-12-13 17:39:48
+// @return list []*ChartTheme
+// @return err error
 func GetAllChartThemeList() (list []*ChartTheme, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_theme WHERE  is_delete=0 ORDER BY chart_theme_id ASC `
-	_, err = o.Raw(sql).QueryRows(&list)
-
+	err = o.Raw(sql).Scan(&list).Error
 	return
 }
 
 // ChartThemeItem
 // @Description: 图表主题配置
+//
+//	type ChartThemeItem struct {
+//		ChartThemeId     int    `description:"图表主题类型ID" orm:"column(chart_theme_id);pk"`
+//		ChartThemeName   string `description:"图表主题名称"`
+//		ChartThemeTypeId int    `description:"图表主题类型ID"`
+//		Config           string `description:"配置"`
+//		ChartImage       string `description:"缩略图"`
+//		//IsDelete            int       `description:"是否删除,0:未删除;1:已删除"`
+//		IsSystemTheme       int       `description:"是否是系统主题,0:不是;1:是"`
+//		SysUserId           int       `description:"操作人"`
+//		SysUserRealName     string    `description:"操作人的真实名称"`
+//		ModifyTime          time.Time `description:"修改时间"`
+//		CreateTime          time.Time `description:"创建时间"`
+//		DefaultChartThemeId int       `description:"默认使用的图表主题ID"`
+//	}
 type ChartThemeItem struct {
-	ChartThemeId     int    `description:"图表主题类型ID" orm:"column(chart_theme_id);pk"`
-	ChartThemeName   string `description:"图表主题名称"`
-	ChartThemeTypeId int    `description:"图表主题类型ID"`
-	Config           string `description:"配置"`
-	ChartImage       string `description:"缩略图"`
-	//IsDelete            int       `description:"是否删除,0:未删除;1:已删除"`
-	IsSystemTheme       int       `description:"是否是系统主题,0:不是;1:是"`
-	SysUserId           int       `description:"操作人"`
-	SysUserRealName     string    `description:"操作人的真实名称"`
-	ModifyTime          time.Time `description:"修改时间"`
-	CreateTime          time.Time `description:"创建时间"`
-	DefaultChartThemeId int       `description:"默认使用的图表主题ID"`
+	ChartThemeId     int    `description:"图表主题类型ID" gorm:"column:chart_theme_id;primaryKey" orm:"column(chart_theme_id);pk"`
+	ChartThemeName   string `description:"图表主题名称" gorm:"column:chart_theme_name"`
+	ChartThemeTypeId int    `description:"图表Theme类型ID" gorm:"column:chart_theme_type_id"`
+	Config           string `description:"配置" gorm:"column:config"`
+	ChartImage       string `description:"缩略图" gorm:"column:chart_image"`
+	//IsDelete           int       `description:"是否删除,0:未删除;1:已删除"`
+	IsSystemTheme       int       `description:"是否是系统主题,0:不是;1:是" gorm:"column:is_system_theme"`
+	SysUserId           int       `description:"操作人" gorm:"column:sys_user_id"`
+	SysUserRealName     string    `description:"操作人的真实名称" gorm:"column:sys_user_real_name"`
+	ModifyTime          time.Time `description:"修改时间" gorm:"column:modify_time"`
+	CreateTime          time.Time `description:"创建时间" gorm:"column:create_time"`
+	DefaultChartThemeId int       `description:"默认使用的图表主题ID" gorm:"column:default_chart_theme_id"`
+}
+
+// TableName 设置模型对应的表名
+func (ChartThemeItem) TableName() string {
+	return "chart_theme_item"
 }
 
 // GetChartThemeItemList
@@ -124,16 +236,48 @@ type ChartThemeItem struct {
 // @param chartThemeTypeId int
 // @return list []*ChartThemeConfig
 // @return err error
+// func GetChartThemeItemList(chartThemeTypeId int) (list []*ChartThemeItem, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT a.*,b.default_chart_theme_id FROM chart_theme a
+//          JOIN chart_theme_type b on a.chart_theme_type_id =b.chart_theme_type_id
+//          WHERE a.chart_theme_type_id = ? AND a.is_delete=0 ORDER BY a.chart_theme_id ASC `
+// 	_, err = o.Raw(sql, chartThemeTypeId).QueryRows(&list)
+
+// 	return
+// }
+
+// GetChartThemeItemList
+// @Description: 根据图表类型id获取配置列表
+// @author: zqbao
+// @datetime 2023-12-14 14:26:35
+// @param chartThemeTypeId int
+// @return list []*ChartThemeConfig
+// @return err error
 func GetChartThemeItemList(chartThemeTypeId int) (list []*ChartThemeItem, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT a.*,b.default_chart_theme_id FROM chart_theme a 
          JOIN chart_theme_type b on a.chart_theme_type_id =b.chart_theme_type_id 
          WHERE a.chart_theme_type_id = ? AND a.is_delete=0 ORDER BY a.chart_theme_id ASC `
-	_, err = o.Raw(sql, chartThemeTypeId).QueryRows(&list)
-
+	err = o.Raw(sql, chartThemeTypeId).Scan(&list).Error
 	return
 }
 
+// GetSystemChartTheme
+// @Description: 根据图表类型id获取系统配置
+// @author: Roc
+// @datetime 2023-12-14 14:26:35
+// @param chartThemeTypeId int
+// @return item *ChartTheme
+// @return err error
+// func GetSystemChartTheme(chartThemeTypeId int) (item *ChartTheme, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT a.* FROM chart_theme a
+//          WHERE a.chart_theme_type_id = ? AND a.is_system_theme=1 ORDER BY a.chart_theme_id ASC `
+// 	err = o.Raw(sql, chartThemeTypeId).QueryRow(&item)
+
+// 	return
+// }
+
 // GetSystemChartTheme
 // @Description: 根据图表类型id获取系统配置
 // @author: Roc
@@ -142,10 +286,10 @@ func GetChartThemeItemList(chartThemeTypeId int) (list []*ChartThemeItem, err er
 // @return item *ChartTheme
 // @return err error
 func GetSystemChartTheme(chartThemeTypeId int) (item *ChartTheme, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT a.* FROM chart_theme a
          WHERE a.chart_theme_type_id = ? AND a.is_system_theme=1 ORDER BY a.chart_theme_id ASC `
-	err = o.Raw(sql, chartThemeTypeId).QueryRow(&item)
+	err = o.Raw(sql, chartThemeTypeId).First(&item).Error
 
 	return
 }
@@ -191,7 +335,7 @@ type DrawOption struct {
 
 type LineOptions struct {
 	DashStyle string  `json:"dashStyle"`
-	LineWidth float64     `json:"lineWidth"`
+	LineWidth float64 `json:"lineWidth"`
 	LineType  string  `json:"lineType"`
 	Radius    float64 `json:"radius"`
 }
@@ -223,13 +367,13 @@ type NewLineOptions struct {
 }
 
 type LineStyleOptions struct {
-	DashStyle string `json:"dashStyle"`
-	Color     string `json:"color"`
-	LineWidth float64    `json:"lineWidth"`
-	LineType  string `json:"lineType"`
-	Radius    int    `json:"radius"`
-	DataMark  string `json:"dataMark"`
-	MarkType  string `json:"markType"`
-	MarkSize  int    `json:"markSize"`
-	MarkColor string `json:"markColor"`
+	DashStyle string  `json:"dashStyle"`
+	Color     string  `json:"color"`
+	LineWidth float64 `json:"lineWidth"`
+	LineType  string  `json:"lineType"`
+	Radius    int     `json:"radius"`
+	DataMark  string  `json:"dataMark"`
+	MarkType  string  `json:"markType"`
+	MarkSize  int     `json:"markSize"`
+	MarkColor string  `json:"markColor"`
 }

+ 95 - 22
models/data_manage/chart_theme/chart_theme_type.go

@@ -1,20 +1,25 @@
 package chart_theme
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_chart_lib/global"
 	"time"
 )
 
 // ChartThemeType
 // @Description: 图表主题类型表
 type ChartThemeType struct {
-	ChartThemeTypeId    int       `description:"图表主题类型ID" orm:"column(chart_theme_type_id);pk"`
-	ChartTypeName       string    `description:"类型名称"`
-	ChartType           int       `description:"图表类型"`
-	ChartSource         int       `description:"图表来源"`
-	DefaultChartThemeId int       `description:"默认使用的主题id"`
-	ModifyTime          time.Time `description:"修改时间"`
-	CreateTime          time.Time `description:"创建时间"`
+	ChartThemeTypeId    int       `description:"图表主题类型ID" orm:"column(chart_theme_type_id);pk" gorm:"column:chart_theme_type_id;primaryKey"`
+	ChartTypeName       string    `description:"类型名称" gorm:"column:chart_type_name"`
+	ChartType           int       `description:"图表类型" gorm:"column:chart_type"`
+	ChartSource         int       `description:"图表来源" gorm:"column:chart_source"`
+	DefaultChartThemeId int       `description:"默认使用的主题id" gorm:"column:default_chart_theme_id"`
+	ModifyTime          time.Time `description:"修改时间" gorm:"column:modify_time"`
+	CreateTime          time.Time `description:"创建时间" gorm:"column:create_time"`
+}
+
+// TableName 设置模型对应的表名
+func (ChartThemeType) TableName() string {
+	return "chart_theme_type"
 }
 
 // Update
@@ -24,9 +29,22 @@ type ChartThemeType struct {
 // @datetime 2023-12-14 16:11:10
 // @param cols []string
 // @return err error
+// func (m *ChartThemeType) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(m, cols...)
+// 	return
+// }
+
+// Update
+// @Description: 更新
+// @author: zqbao
+// @receiver m
+// @datetime 2023-12-14 16:11:10
+// @param cols []string
+// @return err error
 func (m *ChartThemeType) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(m, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(m).Select(cols).Updates(m).Error
 	return
 }
 
@@ -36,11 +54,24 @@ func (m *ChartThemeType) Update(cols []string) (err error) {
 // @datetime 2023-12-13 17:31:03
 // @return list []*ChartThemeType
 // @return err error
+// func GetAllChartThemeTypeList() (list []*ChartThemeType, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM chart_theme_type ORDER BY chart_theme_type_id ASC `
+// 	_, err = o.Raw(sql).QueryRows(&list)
+
+// 	return
+// }
+
+// GetAllChartThemeTypeList
+// @Description: 获取所有图表主题类型列表
+// @author: zqbao
+// @datetime 2024-9-21 17:31:03
+// @return list []*ChartThemeType
+// @return err error
 func GetAllChartThemeTypeList() (list []*ChartThemeType, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_theme_type ORDER BY chart_theme_type_id ASC `
-	_, err = o.Raw(sql).QueryRows(&list)
-
+	err = o.Raw(sql).Scan(&list).Error
 	return
 }
 
@@ -51,11 +82,25 @@ func GetAllChartThemeTypeList() (list []*ChartThemeType, err error) {
 // @param source int
 // @return list []*ChartThemeType
 // @return err error
+// func GetChartThemeTypeListBySource(source int) (list []*ChartThemeType, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM chart_theme_type WHERE chart_source = ?  ORDER BY chart_theme_type_id ASC `
+// 	_, err = o.Raw(sql, source).QueryRows(&list)
+
+// 	return
+// }
+
+// GetChartThemeTypeListBySource
+// @Description: 根据来源获取图表主题类型列表
+// @author: zqbao
+// @datetime 2023-12-13 17:31:03
+// @param source int
+// @return list []*ChartThemeType
+// @return err error
 func GetChartThemeTypeListBySource(source int) (list []*ChartThemeType, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_theme_type WHERE chart_source = ?  ORDER BY chart_theme_type_id ASC `
-	_, err = o.Raw(sql, source).QueryRows(&list)
-
+	err = o.Raw(sql, source).Scan(&list).Error
 	return
 }
 
@@ -66,11 +111,25 @@ func GetChartThemeTypeListBySource(source int) (list []*ChartThemeType, err erro
 // @param chartThemeTypeId int
 // @return item *ChartThemeType
 // @return err error
+// func GetChartThemeTypeById(chartThemeTypeId int) (item *ChartThemeType, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM chart_theme_type where chart_theme_type_id = ? `
+// 	err = o.Raw(sql, chartThemeTypeId).QueryRow(&item)
+
+// 	return
+// }
+
+// GetChartThemeTypeById
+// @Description: 通过类型id获取类型
+// @author: zqbao
+// @datetime 2023-12-14 09:53:58
+// @param chartThemeTypeId int
+// @return item *ChartThemeType
+// @return err error
 func GetChartThemeTypeById(chartThemeTypeId int) (item *ChartThemeType, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_theme_type where chart_theme_type_id = ? `
-	err = o.Raw(sql, chartThemeTypeId).QueryRow(&item)
-
+	err = o.Raw(sql, chartThemeTypeId).First(&item).Error
 	return
 }
 
@@ -81,10 +140,24 @@ func GetChartThemeTypeById(chartThemeTypeId int) (item *ChartThemeType, err erro
 // @param chartThemeTypeId int
 // @return item *ChartThemeType
 // @return err error
+// func GetChartThemeTypeByChartTypeAndSource(chartType, source int) (item *ChartThemeType, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM chart_theme_type where chart_type = ? AND chart_source = ? `
+// 	err = o.Raw(sql, chartType, source).QueryRow(&item)
+
+// 	return
+// }
+
+// GetChartThemeTypeByChartTypeAndSource
+// @Description: 通过图表类型和来源获取类型
+// @author: zqbao
+// @datetime 2023-12-14 09:53:58
+// @param chartThemeTypeId int
+// @return item *ChartThemeType
+// @return err error
 func GetChartThemeTypeByChartTypeAndSource(chartType, source int) (item *ChartThemeType, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_theme_type where chart_type = ? AND chart_source = ? `
-	err = o.Raw(sql, chartType, source).QueryRow(&item)
-
+	err = o.Raw(sql, chartType, source).First(&item).Error
 	return
 }

+ 68 - 16
models/data_manage/cross_variety/chart_tag.go

@@ -1,23 +1,38 @@
 package cross_variety
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 // ChartTag
 // @Description: chart_tag 图表标签表
 type ChartTag struct {
-	ChartTagId      int       `orm:"column(chart_tag_id);pk"`
-	ChartTagName    string    `description:"标签名称"`
-	ChartTagNameEn  string    `description:"标签名称(英文)"`
-	SysUserId       int       `description:"创建人id"`
-	SysUserRealName string    `description:"创建人姓名"`
-	ModifyTime      time.Time `description:"修改时间"`
-	CreateTime      time.Time `description:"创建时间"`
+	ChartTagId      int       `orm:"column(chart_tag_id);pk" gorm:"column:chart_tag_id;primaryKey"`
+	ChartTagName    string    `description:"标签名称" gorm:"column:chart_tag_name"`
+	ChartTagNameEn  string    `description:"标签名称(英文)" gorm:"column:chart_tag_name_en"`
+	SysUserId       int       `description:"创建人id" gorm:"column:sys_user_id"`
+	SysUserRealName string    `description:"创建人姓名" gorm:"column:sys_user_real_name"`
+	ModifyTime      time.Time `description:"修改时间" gorm:"column:modify_time"`
+	CreateTime      time.Time `description:"创建时间" gorm:"column:create_time"`
 }
 
+// TableName 设置模型对应的表名
+func (ChartTag) TableName() string {
+	return "chart_tag"
+}
+
+// type ChartTag struct {
+// 	ChartTagId      int       `orm:"column(chart_tag_id);pk"`
+// 	ChartTagName    string    `description:"标签名称"`
+// 	ChartTagNameEn  string    `description:"标签名称(英文)"`
+// 	SysUserId       int       `description:"创建人id"`
+// 	SysUserRealName string    `description:"创建人姓名"`
+// 	ModifyTime      time.Time `description:"修改时间"`
+// 	CreateTime      time.Time `description:"创建时间"`
+// }
+
 // Update
 // @Description: 更新标签
 // @author: Roc
@@ -25,17 +40,36 @@ type ChartTag struct {
 // @datetime 2023-11-21 15:15:17
 // @param updateColList []string
 // @return err error
-func (item *ChartTag) Update(updateColList []string) (err error) {
-	to := orm.NewOrmUsingDB("data")
-	_, err = to.Update(item, updateColList...)
+// func (item *ChartTag) Update(updateColList []string) (err error) {
+// 	to := orm.NewOrmUsingDB("data")
+// 	_, err = to.Update(item, updateColList...)
+
+// 	return
+// }
 
+// Update
+// @Description: 更新标签
+// @author: Roc
+// @receiver item
+// @datetime 2023-11-21 15:15:17
+// @param updateColList []string
+// @return err error
+func (item *ChartTag) Update(updateColList []string) (err error) {
+	to := global.DmSQL["data"]
+	err = to.Model(item).Select(updateColList).Updates(item).Error
 	return
 }
 
 // Delete 删除
+// func (item *ChartTag) Delete() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Delete(item)
+// 	return
+// }
+
 func (item *ChartTag) Delete() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Delete(item)
+	o := global.DmSQL["data"]
+	err = o.Delete(item).Error
 	return
 }
 
@@ -46,14 +80,32 @@ func (item *ChartTag) Delete() (err error) {
 // @param idList []int
 // @return items []*ChartTag
 // @return err error
+// func GetTagListByIdList(idList []int) (items []*ChartTag, err error) {
+// 	num := len(idList)
+// 	if num <= 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM chart_tag WHERE 1 = 1 AND chart_tag_id in (` + utils.GetOrmInReplace(num) + `)`
+// 	_, err = o.Raw(sql, idList).QueryRows(&items)
+
+// 	return
+// }
+
+// GetTagListByIdList
+// @Description: 根据ID列表获取标签列表
+// @author: zqbao
+// @datetime 2023-11-23 17:56:39
+// @param idList []int
+// @return items []*ChartTag
+// @return err error
 func GetTagListByIdList(idList []int) (items []*ChartTag, err error) {
 	num := len(idList)
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_tag WHERE 1 = 1 AND chart_tag_id in (` + utils.GetOrmInReplace(num) + `)`
-	_, err = o.Raw(sql, idList).QueryRows(&items)
-
+	err = o.Raw(sql, idList).Scan(&items).Error
 	return
 }

+ 47 - 12
models/data_manage/cross_variety/chart_tag_variety.go

@@ -1,22 +1,38 @@
 package cross_variety
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
+//	type ChartTagVariety struct {
+//		Id                        int       `orm:"column(id);pk"`
+//		ChartTagId                int       `description:"标签id"`
+//		ChartVarietyId            int       `description:"品种id"`
+//		EdbInfoId                 int       `description:"指标id"`
+//		LastUpdateSysUserId       int       `description:"最后一次操作人"`
+//		LastUpdateSysUserRealName string    `description:"最后一次操作人真实姓名"`
+//		ModifyTime                time.Time `description:"修改时间"`
+//		CreateTime                time.Time `description:"创建时间"`
+//	}
+//
 // ChartTagVariety
 // @Description: chart_tag_variety 图表标签品种关系表
 type ChartTagVariety struct {
-	Id                        int       `orm:"column(id);pk"`
-	ChartTagId                int       `description:"标签id"`
-	ChartVarietyId            int       `description:"品种id"`
-	EdbInfoId                 int       `description:"指标id"`
-	LastUpdateSysUserId       int       `description:"最后一次操作人"`
-	LastUpdateSysUserRealName string    `description:"最后一次操作人真实姓名"`
-	ModifyTime                time.Time `description:"修改时间"`
-	CreateTime                time.Time `description:"创建时间"`
+	Id                        int       `orm:"column(id);pk" gorm:"column:id;primaryKey"`
+	ChartTagId                int       `description:"标签id" gorm:"column:chart_tag_id"`
+	ChartVarietyId            int       `description:"品种id" gorm:"column:chart_variety_id"`
+	EdbInfoId                 int       `description:"指标id" gorm:"column:edb_info_id"`
+	LastUpdateSysUserId       int       `description:"最后一次操作人" gorm:"column:last_update_sys_user_id"`
+	LastUpdateSysUserRealName string    `description:"最后一次操作人真实姓名" gorm:"column:last_update_sys_user_real_name"`
+	ModifyTime                time.Time `description:"修改时间" gorm:"column:modify_time"`
+	CreateTime                time.Time `description:"创建时间" gorm:"column:create_time"`
+}
+
+// TableName 设置模型对应的表名
+func (ChartTagVariety) TableName() string {
+	return "chart_tag_variety"
 }
 
 // GetChartTagVarietyListByTagAndVariety
@@ -27,14 +43,33 @@ type ChartTagVariety struct {
 // @param varietyIdList []int
 // @return items []*ChartTagVariety
 // @return err error
+// func GetChartTagVarietyListByTagAndVariety(chartTagId int, varietyIdList []int) (items []*ChartTagVariety, err error) {
+// 	num := len(varietyIdList)
+// 	if num <= 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM chart_tag_variety WHERE chart_tag_id = ? AND chart_variety_id in (` + utils.GetOrmInReplace(num) + `) `
+// 	_, err = o.Raw(sql, chartTagId, varietyIdList).QueryRows(&items)
+
+// 	return
+// }
+
+// GetChartTagVarietyListByTagAndVariety
+// @Description: 根据标签id和品种id列表获取所绑定的品种列表
+// @author: zqbao
+// @datetime 2023-11-23 15:04:20
+// @param chartTagId int
+// @param varietyIdList []int
+// @return items []*ChartTagVariety
+// @return err error
 func GetChartTagVarietyListByTagAndVariety(chartTagId int, varietyIdList []int) (items []*ChartTagVariety, err error) {
 	num := len(varietyIdList)
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_tag_variety WHERE chart_tag_id = ? AND chart_variety_id in (` + utils.GetOrmInReplace(num) + `) `
-	_, err = o.Raw(sql, chartTagId, varietyIdList).QueryRows(&items)
-
+	err = o.Raw(sql, chartTagId, varietyIdList).Scan(&items).Error
 	return
 }

+ 119 - 29
models/data_manage/cross_variety/chart_variety.go

@@ -1,23 +1,40 @@
 package cross_variety
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
 )
 
 // ChartVariety
 // @Description: chart_variety 图表品种表
 type ChartVariety struct {
-	ChartVarietyId     int       `orm:"column(chart_variety_id);pk"`
-	ChartVarietyName   string    `description:"品种名称"`
-	ChartVarietyNameEn string    `description:"品种名称(英文)"`
-	SysUserId          int       `description:"创建人id"`
-	SysUserRealName    string    `description:"创建人姓名"`
-	ModifyTime         time.Time `description:"修改时间"`
-	CreateTime         time.Time `description:"创建时间"`
+	ChartVarietyId     int       `orm:"column(chart_variety_id);pk" gorm:"column:chart_variety_id;primaryKey"`
+	ChartVarietyName   string    `description:"品种名称" gorm:"column:chart_variety_name"`
+	ChartVarietyNameEn string    `description:"品种名称(英文)" gorm:"column:chart_variety_name_en"`
+	SysUserId          int       `description:"创建人id" gorm:"column:sys_user_id"`
+	SysUserRealName    string    `description:"创建人姓名" gorm:"column:sys_user_real_name"`
+	ModifyTime         time.Time `description:"修改时间" gorm:"column:modify_time"`
+	CreateTime         time.Time `description:"创建时间" gorm:"column:create_time"`
+}
+
+// TableName 设置模型对应的表名
+func (ChartVariety) TableName() string {
+	return "chart_variety"
 }
 
+// type ChartVariety struct {
+// 	ChartVarietyId     int       `orm:"column(chart_variety_id);pk"`
+// 	ChartVarietyName   string    `description:"品种名称"`
+// 	ChartVarietyNameEn string    `description:"品种名称(英文)"`
+// 	SysUserId          int       `description:"创建人id"`
+// 	SysUserRealName    string    `description:"创建人姓名"`
+// 	ModifyTime         time.Time `description:"修改时间"`
+// 	CreateTime         time.Time `description:"创建时间"`
+// }
+
 // GetVarietyById
 // @Description: 根据品种id获取品种详情
 // @author: Roc
@@ -25,11 +42,25 @@ type ChartVariety struct {
 // @param id int
 // @return item *ChartVariety
 // @return err error
+// func GetVarietyById(id int) (item *ChartVariety, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM chart_variety WHERE chart_variety_id = ?`
+// 	err = o.Raw(sql, id).QueryRow(&item)
+
+// 	return
+// }
+
+// GetVarietyById
+// @Description: 根据品种id获取品种详情
+// @author: zqbao
+// @datetime 2023-11-21 14:55:31
+// @param id int
+// @return item *ChartVariety
+// @return err error
 func GetVarietyById(id int) (item *ChartVariety, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_variety WHERE chart_variety_id = ?`
-	err = o.Raw(sql, id).QueryRow(&item)
-
+	err = o.Raw(sql, id).First(&item).Error
 	return
 }
 
@@ -40,11 +71,25 @@ func GetVarietyById(id int) (item *ChartVariety, err error) {
 // @param name string
 // @return item *ChartVariety
 // @return err error
+// func GetVarietyByName(name string) (item *ChartVariety, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM chart_variety WHERE chart_variety_name = ?`
+// 	err = o.Raw(sql, name).QueryRow(&item)
+
+// 	return
+// }
+
+// GetVarietyByName
+// @Description: 根据品种名称获取品种详情
+// @author: zqbao
+// @datetime 2023-11-21 14:55:20
+// @param name string
+// @return item *ChartVariety
+// @return err error
 func GetVarietyByName(name string) (item *ChartVariety, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_variety WHERE chart_variety_name = ?`
-	err = o.Raw(sql, name).QueryRow(&item)
-
+	err = o.Raw(sql, name).First(&item).Error
 	return
 }
 
@@ -54,15 +99,27 @@ func GetVarietyByName(name string) (item *ChartVariety, err error) {
 // @datetime 2023-11-21 14:52:56
 // @param item *ChartVariety
 // @return err error
-func AddVariety(item *ChartVariety) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	lastId, err := o.Insert(item)
-	if err != nil {
-		return
-	}
+// func AddVariety(item *ChartVariety) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	lastId, err := o.Insert(item)
+// 	if err != nil {
+// 		return
+// 	}
+
+// 	item.ChartVarietyId = int(lastId)
 
-	item.ChartVarietyId = int(lastId)
+// 	return
+// }
 
+// AddVariety
+// @Description: 添加品种
+// @author: zqbao
+// @datetime 2023-11-21 14:52:56
+// @param item *ChartVariety
+// @return err error
+func AddVariety(item *ChartVariety) (err error) {
+	o := global.DmSQL["data"]
+	err = o.Create(item).Error
 	return
 }
 
@@ -73,17 +130,37 @@ func AddVariety(item *ChartVariety) (err error) {
 // @datetime 2023-11-21 15:15:17
 // @param updateColList []string
 // @return err error
-func (item *ChartVariety) Update(updateColList []string) (err error) {
-	to := orm.NewOrmUsingDB("data")
-	_, err = to.Update(item, updateColList...)
+// func (item *ChartVariety) Update(updateColList []string) (err error) {
+// 	to := orm.NewOrmUsingDB("data")
+// 	_, err = to.Update(item, updateColList...)
+
+// 	return
+// }
 
+// Update
+// @Description: 更新品种
+// @author: zqbao
+// @receiver item
+// @datetime 2023-11-21 15:15:17
+// @param updateColList []string
+// @return err error
+func (item *ChartVariety) Update(updateColList []string) (err error) {
+	to := global.DmSQL["data"]
+	err = to.Model(item).Select(updateColList).Updates(item).Error
 	return
 }
 
+// Delete 删除
+// func (item *ChartVariety) Delete() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Delete(item)
+// 	return
+// }
+
 // Delete 删除
 func (item *ChartVariety) Delete() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Delete(item)
+	o := global.DmSQL["data"]
+	err = o.Delete(item).Error
 	return
 }
 
@@ -93,11 +170,24 @@ func (item *ChartVariety) Delete() (err error) {
 // @datetime 2023-11-22 10:44:35
 // @return items []*ChartVariety
 // @return err error
+// func GetVarietyList() (items []*ChartVariety, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM chart_variety WHERE 1 = 1 `
+// 	_, err = o.Raw(sql).QueryRows(&items)
+
+// 	return
+// }
+
+// GetVarietyList
+// @Description: 获取所有品种列表
+// @author: zqbao
+// @datetime 2023-11-22 10:44:35
+// @return items []*ChartVariety
+// @return err error
 func GetVarietyList() (items []*ChartVariety, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_variety WHERE 1 = 1 `
-	_, err = o.Raw(sql).QueryRows(&items)
-
+	err = o.Raw(sql).Scan(&items).Error
 	return
 }
 

+ 115 - 39
models/data_manage/edb_info.go

@@ -1,46 +1,82 @@
 package data_manage
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
+//	type EdbInfo struct {
+//		EdbInfoId        int    `orm:"column(edb_info_id);pk"`
+//		EdbInfoType      int    `description:"指标类型,0:普通指标,1:预测指标"`
+//		SourceName       string `description:"来源名称"`
+//		Source           int    `description:"来源id"`
+//		EdbCode          string `description:"指标编码"`
+//		EdbName          string `description:"指标名称"`
+//		EdbNameEn        string `description:"英文指标名称"`
+//		EdbNameSource    string `description:"指标名称来源"`
+//		Frequency        string `description:"频率"`
+//		Unit             string `description:"单位"`
+//		UnitEn           string `description:"英文单位"`
+//		StartDate        string `description:"起始日期"`
+//		EndDate          string `description:"终止日期"`
+//		ClassifyId       int    `description:"分类id"`
+//		SysUserId        int
+//		SysUserRealName  string
+//		UniqueCode       string `description:"指标唯一编码"`
+//		CreateTime       time.Time
+//		ModifyTime       time.Time
+//		MinValue         float64 `description:"指标最小值"`
+//		MaxValue         float64 `description:"指标最大值"`
+//		CalculateFormula string  `description:"计算公式"`
+//		EdbType          int     `description:"指标类型:1:基础指标,2:计算指标"`
+//		Sort             int     `description:"排序字段"`
+//		LatestDate       string  `description:"数据最新日期"`
+//		LatestValue      float64 `description:"数据最新值"`
+//		MoveType         int     `description:"移动方式:1:领先(默认),2:滞后"`
+//		MoveFrequency    string  `description:"移动频度"`
+//		NoUpdate         int8    `description:"是否停止更新,0:继续更新;1:停止更新"`
+//		DataDateType     string  `orm:"column(data_date_type);size(255);null;default(交易日)"`
+//		SubSource        int     `description:"子数据来源:0:经济数据库,1:日期序列"`
+//		SubSourceName    string  `description:"子数据来源名称"`
+//		IndicatorCode    string  `description:"指标代码"`
+//		StockCode        string  `description:"证券代码"`
+//	}
 type EdbInfo struct {
-	EdbInfoId        int    `orm:"column(edb_info_id);pk"`
-	EdbInfoType      int    `description:"指标类型,0:普通指标,1:预测指标"`
-	SourceName       string `description:"来源名称"`
-	Source           int    `description:"来源id"`
-	EdbCode          string `description:"指标编码"`
-	EdbName          string `description:"指标名称"`
-	EdbNameEn        string `description:"英文指标名称"`
-	EdbNameSource    string `description:"指标名称来源"`
-	Frequency        string `description:"频率"`
-	Unit             string `description:"单位"`
-	UnitEn           string `description:"英文单位"`
-	StartDate        string `description:"起始日期"`
-	EndDate          string `description:"终止日期"`
-	ClassifyId       int    `description:"分类id"`
-	SysUserId        int
-	SysUserRealName  string
-	UniqueCode       string `description:"指标唯一编码"`
-	CreateTime       time.Time
-	ModifyTime       time.Time
-	MinValue         float64 `description:"指标最小值"`
-	MaxValue         float64 `description:"指标最大值"`
-	CalculateFormula string  `description:"计算公式"`
-	EdbType          int     `description:"指标类型:1:基础指标,2:计算指标"`
-	Sort             int     `description:"排序字段"`
-	LatestDate       string  `description:"数据最新日期"`
-	LatestValue      float64 `description:"数据最新值"`
-	MoveType         int     `description:"移动方式:1:领先(默认),2:滞后"`
-	MoveFrequency    string  `description:"移动频度"`
-	NoUpdate         int8    `description:"是否停止更新,0:继续更新;1:停止更新"`
-	DataDateType     string  `orm:"column(data_date_type);size(255);null;default(交易日)"`
-	SubSource        int     `description:"子数据来源:0:经济数据库,1:日期序列"`
-	SubSourceName    string  `description:"子数据来源名称"`
-	IndicatorCode    string  `description:"指标代码"`
-	StockCode        string  `description:"证券代码"`
+	EdbInfoId        int       `gorm:"column:edb_info_id;primaryKey" description:"指标ID" orm:"column(edb_info_id);pk"`
+	EdbInfoType      int       `gorm:"column:edb_info_type" description:"指标类型,0:普通指标,1:预测指标"`
+	SourceName       string    `gorm:"column:source_name" description:"来源名称"`
+	Source           int       `gorm:"column:source" description:"来源id"`
+	EdbCode          string    `gorm:"column:edb_code" description:"指标编码"`
+	EdbName          string    `gorm:"column:edb_name" description:"指标名称"`
+	EdbNameEn        string    `gorm:"column:edb_name_en" description:"英文指标名称"`
+	EdbNameSource    string    `gorm:"column:edb_name_source" description:"指标名称来源"`
+	Frequency        string    `gorm:"column:frequency" description:"频率"`
+	Unit             string    `gorm:"column:unit" description:"单位"`
+	UnitEn           string    `gorm:"column:unit_en" description:"英文单位"`
+	StartDate        string    `gorm:"column:start_date" description:"起始日期"`
+	EndDate          string    `gorm:"column:end_date" description:"终止日期"`
+	ClassifyId       int       `gorm:"column:classify_id" description:"分类id"`
+	SysUserId        int       `gorm:"column:sys_user_id"`
+	SysUserRealName  string    `gorm:"column:sys_user_real_name"`
+	UniqueCode       string    `gorm:"column:unique_code" description:"指标唯一编码"`
+	CreateTime       time.Time `gorm:"column:create_time"`
+	ModifyTime       time.Time `gorm:"column:modify_time"`
+	MinValue         float64   `gorm:"column:min_value" description:"指标最小值"`
+	MaxValue         float64   `gorm:"column:max_value" description:"指标最大值"`
+	CalculateFormula string    `gorm:"column:calculate_formula" description:"计算公式"`
+	EdbType          int       `gorm:"column:edb_type" description:"指标类型:1:基础指标,2:计算指标"`
+	Sort             int       `gorm:"column:sort" description:"排序字段"`
+	LatestDate       string    `gorm:"column:latest_date" description:"数据最新日期"`
+	LatestValue      float64   `gorm:"column:latest_value" description:"数据最新值"`
+	MoveType         int       `gorm:"column:move_type" description:"移动方式:1:领先(默认),2:滞后"`
+	MoveFrequency    string    `gorm:"column:move_frequency" description:"移动频度"`
+	NoUpdate         int8      `gorm:"column:no_update" description:"是否停止更新,0:继续更新;1:停止更新"`
+	DataDateType     string    `gorm:"column:data_date_type;size(255);null;default:交易日" description:"数据日期类型"`
+	SubSource        int       `gorm:"column:sub_source" description:"子数据来源:0:经济数据库,1:日期序列"`
+	SubSourceName    string    `gorm:"column:sub_source_name" description:"子数据来源名称"`
+	IndicatorCode    string    `gorm:"column:indicator_code" description:"指标代码"`
+	StockCode        string    `gorm:"column:stock_code" description:"证券代码"`
 }
 
 type EdbInfoMaxAndMinInfo struct {
@@ -52,9 +88,9 @@ type EdbInfoMaxAndMinInfo struct {
 }
 
 func GetEdbInfoById(edbInfoId int) (item *EdbInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM edb_info WHERE edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	err = o.Raw(sql, edbInfoId).First(&item).Error
 	return
 }
 
@@ -64,9 +100,9 @@ func GetEdbInfoByIdList(edbInfoIdList []int) (items []*EdbInfo, err error) {
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM edb_info WHERE edb_info_id in (` + utils.GetOrmInReplace(num) + `) `
-	_, err = o.Raw(sql, edbInfoIdList).QueryRows(&items)
+	err = o.Raw(sql, edbInfoIdList).Scan(&items).Error
 	return
 }
 
@@ -91,6 +127,46 @@ func GetRefreshEdbInfoFromBase(edbInfoId, source int) (baseEdbInfoArr, calculate
 	return
 }
 
+// func GetEdbInfoById(edbInfoId int) (item *EdbInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM edb_info WHERE edb_info_id=? `
+// 	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+// 	return
+// }
+
+// // GetEdbInfoByIdList 根据指标id集合 获取 指标列表
+// func GetEdbInfoByIdList(edbInfoIdList []int) (items []*EdbInfo, err error) {
+// 	num := len(edbInfoIdList)
+// 	if num <= 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM edb_info WHERE edb_info_id in (` + utils.GetOrmInReplace(num) + `) `
+// 	_, err = o.Raw(sql, edbInfoIdList).QueryRows(&items)
+// 	return
+// }
+
+// func GetRefreshEdbInfoFromBase(edbInfoId, source int) (baseEdbInfoArr, calculateInfoArr []*EdbInfo, err error) {
+// 	calculateList, err := GetEdbInfoCalculateMap(edbInfoId, source)
+// 	if err != nil && err.Error() != utils.ErrNoRow() {
+// 		return
+// 	}
+// 	for _, item := range calculateList {
+// 		if item.EdbInfoId == edbInfoId { //	如果查出来关联的指标就是自己的话,那么就过滤
+// 			continue
+// 		}
+// 		if item.EdbType == 1 {
+// 			baseEdbInfoArr = append(baseEdbInfoArr, item)
+// 		} else {
+// 			calculateInfoArr = append(calculateInfoArr, item)
+// 			newBaseEdbInfoArr, newCalculateInfoArr, _ := GetRefreshEdbInfoFromBase(item.EdbInfoId, item.Source)
+// 			baseEdbInfoArr = append(baseEdbInfoArr, newBaseEdbInfoArr...)
+// 			calculateInfoArr = append(calculateInfoArr, newCalculateInfoArr...)
+// 		}
+// 	}
+// 	return
+// }
+
 type EdbInfoSearchData struct {
 	DataTime string  `description:"数据日期"`
 	Value    float64 `description:"数据"`

+ 93 - 26
models/data_manage/edb_info_calculate.go

@@ -1,13 +1,13 @@
 package data_manage
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 func GetEdbInfoCalculateMap(edbInfoId, source int) (list []*EdbInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 
 	//calculateTableName := GetEdbInfoCalculateTableName(source)
 
@@ -20,7 +20,7 @@ func GetEdbInfoCalculateMap(edbInfoId, source int) (list []*EdbInfo, err error)
 	sql := ` SELECT b.* FROM edb_info_calculate_mapping AS a
 			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
 			WHERE a.edb_info_id=? ORDER BY sort ASC `
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&list)
+	err = o.Raw(sql, edbInfoId).Scan(&list).Error
 	return
 }
 
@@ -31,45 +31,112 @@ func GetEdbInfoAllCalculateByEdbInfoIdList(edbInfoIdList []int) (list []*EdbInfo
 		return
 	}
 
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT b.* FROM edb_info_calculate_mapping AS a
 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
              WHERE a.from_edb_info_id in (` + utils.GetOrmInReplace(num) + `)
 			 GROUP BY a.edb_info_id
 			 ORDER BY a.edb_info_id ASC `
-	_, err = o.Raw(sql, edbInfoIdList).QueryRows(&list)
+	err = o.Raw(sql, edbInfoIdList).Scan(&list).Error
 	return
 }
 
+// func GetEdbInfoCalculateMap(edbInfoId, source int) (list []*EdbInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+
+// 	//calculateTableName := GetEdbInfoCalculateTableName(source)
+
+// 	//sql := ` SELECT b.* FROM %s AS a
+// 	//		INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+// 	//		WHERE a.edb_info_id=? ORDER BY sort ASC `
+
+// 	//sql = fmt.Sprintf(sql, calculateTableName)
+
+// 	sql := ` SELECT b.* FROM edb_info_calculate_mapping AS a
+// 			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+// 			WHERE a.edb_info_id=? ORDER BY sort ASC `
+// 	_, err = o.Raw(sql, edbInfoId).QueryRows(&list)
+// 	return
+// }
+
+// // GetEdbInfoAllCalculateByEdbInfoIdList 根据指标id集合 获取基础指标对应的所有计算指标
+// func GetEdbInfoAllCalculateByEdbInfoIdList(edbInfoIdList []int) (list []*EdbInfo, err error) {
+// 	num := len(edbInfoIdList)
+// 	if num <= 0 {
+// 		return
+// 	}
+
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT b.* FROM edb_info_calculate_mapping AS a
+// 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
+//              WHERE a.from_edb_info_id in (` + utils.GetOrmInReplace(num) + `)
+// 			 GROUP BY a.edb_info_id
+// 			 ORDER BY a.edb_info_id ASC `
+// 	_, err = o.Raw(sql, edbInfoIdList).QueryRows(&list)
+// 	return
+// }
+
 // EdbInfoCalculateMappingInfo
+//
+//	type EdbInfoCalculateMappingInfo struct {
+//		EdbInfoCalculateMappingId int       `orm:"column(edb_info_calculate_mapping_id);pk"`
+//		EdbInfoId                 int       `description:"计算指标id"`
+//		Source                    int       `description:"计算指标来源"`
+//		SourceName                string    `description:"计算指标来源名称"`
+//		EdbCode                   string    `description:"计算指标编码"`
+//		FromEdbInfoId             int       `description:"基础指标id"`
+//		FromEdbCode               string    `description:"基础指标编码"`
+//		FromEdbName               string    `description:"基础指标名称"`
+//		FromSource                int       `description:"基础指标来源"`
+//		FromSourceName            string    `description:"基础指标来源名称"`
+//		MoveValue                 int       `description:"领先值"`
+//		FromTag                   string    `description:"来源指标标签"`
+//		Sort                      int       `description:"计算指标名称排序"`
+//		CreateTime                time.Time `description:"创建时间"`
+//		ModifyTime                time.Time `description:"修改时间"`
+//		FromEdbType               int       `description:"来源指标类型:1:基础指标,2:计算指标"`
+//		FromEdbInfoType           int       `description:"来源指标类型: 0-基础指标; 1-预测指标"`
+//		FromClassifyId            int       `description:"来源指标分类ID"`
+//		FromUniqueCode            string    `description:"来源指标唯一编码"`
+//	}
 type EdbInfoCalculateMappingInfo struct {
-	EdbInfoCalculateMappingId int       `orm:"column(edb_info_calculate_mapping_id);pk"`
-	EdbInfoId                 int       `description:"计算指标id"`
-	Source                    int       `description:"计算指标来源"`
-	SourceName                string    `description:"计算指标来源名称"`
-	EdbCode                   string    `description:"计算指标编码"`
-	FromEdbInfoId             int       `description:"基础指标id"`
-	FromEdbCode               string    `description:"基础指标编码"`
-	FromEdbName               string    `description:"基础指标名称"`
-	FromSource                int       `description:"基础指标来源"`
-	FromSourceName            string    `description:"基础指标来源名称"`
-	MoveValue                 int       `description:"领先值"`
-	FromTag                   string    `description:"来源指标标签"`
-	Sort                      int       `description:"计算指标名称排序"`
-	CreateTime                time.Time `description:"创建时间"`
-	ModifyTime                time.Time `description:"修改时间"`
-	FromEdbType               int       `description:"来源指标类型:1:基础指标,2:计算指标"`
-	FromEdbInfoType           int       `description:"来源指标类型: 0-基础指标; 1-预测指标"`
-	FromClassifyId            int       `description:"来源指标分类ID"`
-	FromUniqueCode            string    `description:"来源指标唯一编码"`
+	EdbInfoCalculateMappingId int       `gorm:"column:edb_info_calculate_mapping_id;primaryKey" description:"计算指标映射ID" orm:"column(edb_info_calculate_mapping_id);pk"`
+	EdbInfoId                 int       `gorm:"column:edb_info_id" description:"计算指标id"`
+	Source                    int       `gorm:"column:source" description:"计算指标来源"`
+	SourceName                string    `gorm:"column:source_name" description:"计算指标来源名称"`
+	EdbCode                   string    `gorm:"column:edb_code" description:"计算指标编码"`
+	FromEdbInfoId             int       `gorm:"column:from_edb_info_id" description:"基础指标id"`
+	FromEdbCode               string    `gorm:"column:from_edb_code" description:"基础指标编码"`
+	FromEdbName               string    `gorm:"column:from_edb_name" description:"基础指标名称"`
+	FromSource                int       `gorm:"column:from_source" description:"基础指标来源"`
+	FromSourceName            string    `gorm:"column:from_source_name" description:"基础指标来源名称"`
+	MoveValue                 int       `gorm:"column:move_value" description:"领先值"`
+	FromTag                   string    `gorm:"column:from_tag" description:"来源指标标签"`
+	Sort                      int       `gorm:"column:sort" description:"计算指标名称排序"`
+	CreateTime                time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime                time.Time `gorm:"column:modify_time" description:"修改时间"`
+	FromEdbType               int       `gorm:"column:from_edb_type" description:"来源指标类型:1:基础指标,2:计算指标"`
+	FromEdbInfoType           int       `gorm:"column:from_edb_info_type" description:"来源指标类型: 0-基础指标; 1-预测指标"`
+	FromClassifyId            int       `gorm:"column:from_classify_id" description:"来源指标分类ID"`
+	FromUniqueCode            string    `gorm:"column:from_unique_code" description:"来源指标唯一编码"`
 }
 
 // GetEdbInfoCalculateMappingListByEdbInfoId 根据生成的指标id获取来源的指标id列表
 func GetEdbInfoCalculateMappingListByEdbInfoId(edbInfoId int) (items []*EdbInfoCalculateMappingInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT a.*,b.edb_type as from_edb_type,b.edb_info_type as from_edb_info_type, b.unique_code AS from_unique_code, b.classify_id AS from_classify_id FROM edb_info_calculate_mapping AS a
 			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
 			WHERE a.edb_info_id=? `
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&items)
+	err = o.Raw(sql, edbInfoId).Scan(&items).Error
 	return
 }
+
+// GetEdbInfoCalculateMappingListByEdbInfoId 根据生成的指标id获取来源的指标id列表
+// func GetEdbInfoCalculateMappingListByEdbInfoId(edbInfoId int) (items []*EdbInfoCalculateMappingInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT a.*,b.edb_type as from_edb_type,b.edb_info_type as from_edb_info_type, b.unique_code AS from_unique_code, b.classify_id AS from_classify_id FROM edb_info_calculate_mapping AS a
+// 			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+// 			WHERE a.edb_info_id=? `
+// 	_, err = o.Raw(sql, edbInfoId).QueryRows(&items)
+// 	return
+// }

+ 80 - 20
models/data_manage/edb_source.go

@@ -1,9 +1,9 @@
 package data_manage
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 )
 
@@ -11,23 +11,38 @@ var (
 	EdbSourceIdMap map[int]*EdbSource // 指标来源
 )
 
+// EdbSource 指标来源表
+//
+//	type EdbSource struct {
+//		EdbSourceId      int    `orm:"column(edb_source_id);pk"`
+//		SourceName       string `description:"指标来源名称"`
+//		TableName        string `description:"数据表名"`
+//		EdbAddMethod     string `description:"指标新增接口"`
+//		EdbRefreshMethod string `description:"指标刷新接口"`
+//		IsBase           int    `description:"是否为基础指标: 0-否; 1-是"`
+//		FromBridge       int    `description:"是否来源于桥接服务: 0-否; 1-是"`
+//		BridgeFlag       string `description:"桥接服务对象标识"`
+//		SourceExtend     string `description:"扩展字段做查询用"`
+//		EdbCodeRequired  int    `description:"指标编码是否必填: 0-否; 1-是"`
+//	}
+
 // EdbSource 指标来源表
 type EdbSource struct {
-	EdbSourceId      int    `orm:"column(edb_source_id);pk"`
-	SourceName       string `description:"指标来源名称"`
-	TableName        string `description:"数据表名"`
-	EdbAddMethod     string `description:"指标新增接口"`
-	EdbRefreshMethod string `description:"指标刷新接口"`
-	IsBase           int    `description:"是否为基础指标: 0-否; 1-是"`
-	FromBridge       int    `description:"是否来源于桥接服务: 0-否; 1-是"`
-	BridgeFlag       string `description:"桥接服务对象标识"`
-	SourceExtend     string `description:"扩展字段做查询用"`
-	EdbCodeRequired  int    `description:"指标编码是否必填: 0-否; 1-是"`
+	EdbSourceId      int    `gorm:"column:edb_source_id;primaryKey" description:"指标来源ID" orm:"column(edb_source_id);pk"`
+	SourceName       string `gorm:"column:source_name" description:"指标来源名称"`
+	TableName        string `gorm:"column:table_name" description:"数据表名"`
+	EdbAddMethod     string `gorm:"column:edb_add_method" description:"指标新增接口"`
+	EdbRefreshMethod string `gorm:"column:edb_refresh_method" description:"指标刷新接口"`
+	IsBase           int    `gorm:"column:is_base" description:"是否为基础指标: 0-否; 1-是"`
+	FromBridge       int    `gorm:"column:from_bridge" description:"是否来源于桥接服务: 0-否; 1-是"`
+	BridgeFlag       string `gorm:"column:bridge_flag" description:"桥接服务对象标识"`
+	SourceExtend     string `gorm:"column:source_extend" description:"扩展字段做查询用"`
+	EdbCodeRequired  int    `gorm:"column:edb_code_required" description:"指标编码是否必填: 0-否; 1-是"`
 }
 
 // GetEdbSourceItemsByCondition 获取指标来源列表
 func GetEdbSourceItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EdbSource, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -37,24 +52,48 @@ func GetEdbSourceItemsByCondition(condition string, pars []interface{}, fieldArr
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM edb_source WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars).Scan(&items).Error
 	return
 }
 
+// GetEdbSourceItemsByCondition 获取指标来源列表
+// func GetEdbSourceItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EdbSource, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	fields := strings.Join(fieldArr, ",")
+// 	if len(fieldArr) == 0 {
+// 		fields = `*`
+// 	}
+// 	order := `ORDER BY edb_source_id ASC`
+// 	if orderRule != "" {
+// 		order = ` ORDER BY ` + orderRule
+// 	}
+// 	sql := fmt.Sprintf(`SELECT %s FROM edb_source WHERE 1=1 %s %s`, fields, condition, order)
+// 	_, err = o.Raw(sql, pars).QueryRows(&items)
+// 	return
+// }
+
 // EdbSourceChild 指标来源表
+//
+//	type EdbSourceChild struct {
+//		EdbSourceId int    `orm:"column(edb_source_id);pk"`
+//		SourceName  string `description:"指标来源名称"`
+//		TableName   string `description:"数据表名"`
+//		IsBase      int    `description:"是否为基础指标: 2-否; 1-是"`
+//		Child       []EdbSourceChild
+//	}
 type EdbSourceChild struct {
-	EdbSourceId int    `orm:"column(edb_source_id);pk"`
-	SourceName  string `description:"指标来源名称"`
-	TableName   string `description:"数据表名"`
-	IsBase      int    `description:"是否为基础指标: 2-否; 1-是"`
-	Child       []EdbSourceChild
+	EdbSourceId int              `gorm:"column:edb_source_id;primaryKey" description:"指标来源ID" orm:"column(edb_source_id);pk"`
+	SourceName  string           `gorm:"column:source_name" description:"指标来源名称"`
+	TableName   string           `gorm:"column:table_name" description:"数据表名"`
+	IsBase      int              `gorm:"column:is_base" description:"是否为基础指标: 0-否; 1-是"`
+	Child       []EdbSourceChild `description:"子源"`
 }
 
 // GetEdbSourceItemByCondition 获取指标来源
 func GetEdbSourceItemByCondition(condition string, pars []interface{}) (item *EdbSource, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`SELECT * FROM edb_source WHERE 1=1 %s`, condition)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = o.Raw(sql, pars).First(&item).Error
 	return
 }
 
@@ -70,3 +109,24 @@ func InitEdbSourceVar() {
 		EdbSourceIdMap[v.EdbSourceId] = v
 	}
 }
+
+// GetEdbSourceItemByCondition 获取指标来源
+// func GetEdbSourceItemByCondition(condition string, pars []interface{}) (item *EdbSource, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`SELECT * FROM edb_source WHERE 1=1 %s`, condition)
+// 	err = o.Raw(sql, pars).QueryRow(&item)
+// 	return
+// }
+
+// // InitEdbSourceVar 初始化时加载指标来源对应信息, 避免循环中查库, 注意edb_source表修改table_name的话需要重启服务
+// func InitEdbSourceVar() {
+// 	EdbSourceIdMap = make(map[int]*EdbSource)
+// 	sources, e := GetEdbSourceItemsByCondition(``, make([]interface{}, 0), []string{}, "")
+// 	if e != nil {
+// 		utils.FileLog.Info("init source table err: %s", e.Error())
+// 		return
+// 	}
+// 	for _, v := range sources {
+// 		EdbSourceIdMap[v.EdbSourceId] = v
+// 	}
+// }

+ 136 - 27
models/data_manage/excel/excel_chart_data.go

@@ -1,65 +1,164 @@
 package excel
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/models"
 	"fmt"
-	"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"`
-	ChartInfoId      int `description:"图表id"`
-	DataTime         string
-	Value            float64
-	ModifyTime       time.Time `description:"修改时间"`
-	CreateTime       time.Time `description:"创建时间"`
-	DataTimestamp    int64
+	ExcelChartDataId int       `orm:"column(excel_chart_data_id);pk" gorm:"column:excel_chart_data_id;primaryKey"`
+	ExcelInfoId      int       `description:"表格id" gorm:"column:excel_info_id"`
+	ExcelChartEdbId  int       `description:"指标ID" gorm:"column:excel_chart_edb_id"`
+	ChartInfoId      int       `description:"图表id" gorm:"column:chart_info_id"`
+	DataTime         string    `gorm:"column:data_time"`
+	Value            float64   `gorm:"column:value"`
+	ModifyTime       time.Time `description:"修改时间" gorm:"column:modify_time"`
+	CreateTime       time.Time `description:"创建时间" gorm:"column:create_time"`
+	DataTimestamp    int64     `gorm:"column:data_timestamp"`
 }
 
+// type ExcelChartData struct {
+// 	ExcelChartDataId int `orm:"column(excel_chart_data_id);pk"`
+// 	ExcelInfoId      int `description:"表格id"`
+// 	ExcelChartEdbId  int `description:"指标ID"`
+// 	ChartInfoId      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) Add() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Insert(e)
+	o := global.DmSQL["data"]
+	err = o.Create(e).Error
 	return
 }
 
+// 修改
+//	func (e *ExcelChartData) Update(cols []string) (err error) {
+//		o := orm.NewOrmUsingDB("data")
+//		_, err = o.Update(e, cols...)
+//		return
+//	}
+
 // 修改
 func (e *ExcelChartData) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(e, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(e).Select(cols).Updates(e).Error
 	return
 }
 
+// 删除
+// func (e *ExcelChartData) Delete() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Delete(e)
+// 	return
+// }
+
 // 删除
 func (e *ExcelChartData) Delete() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Delete(e)
+	o := global.DmSQL["data"]
+	err = o.Delete(e).Error
 	return
 }
 
 // 查询
+// func GetExcelChartDataByExcelInfoId(excelInfoId int) (list []*ExcelChartData, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT *
+//              FROM excel_chart_data
+// 			 WHERE excel_info_id=?
+//             ORDER BY excel_chart_edb_id ASC, data_time desc, excel_chart_data_id ASC `
+// 	_, err = o.Raw(sql, excelInfoId).QueryRows(&list)
+// 	return
+// }
+
 func GetExcelChartDataByExcelInfoId(excelInfoId int) (list []*ExcelChartData, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT *
              FROM excel_chart_data
 			 WHERE excel_info_id=? 
             ORDER BY excel_chart_edb_id ASC, data_time desc, excel_chart_data_id ASC `
-	_, err = o.Raw(sql, excelInfoId).QueryRows(&list)
+	err = o.Raw(sql, excelInfoId).Scan(&list).Error
 	return
 }
 
+// func BatchUpdateChartEdbData(excelInfoId int, excelEdbMap map[int]*ExcelChartEdb, excelDataMap map[int][]*models.EdbDataList) (err error) {
+// 	o, err := orm.NewOrmUsingDB("data").Begin()
+// 	if err != nil {
+// 		return
+// 	}
+// 	defer func() {
+// 		if err != nil {
+// 			_ = o.Rollback()
+// 		} else {
+// 			_ = o.Commit()
+// 		}
+// 	}()
+// 	//如果有数据则删除所有的数据
+// 	sql := `delete from excel_chart_data where excel_info_id = ?`
+// 	_, err = o.Raw(sql, excelInfoId).Exec()
+// 	if err != nil {
+// 		return
+// 	}
+
+// 	// 图表指标数据入库
+// 	addList := make([]*ExcelChartData, 0)
+// 	for chartEdbId, dataList := range excelDataMap {
+// 		chartEdb, ok := excelEdbMap[chartEdbId]
+// 		if !ok {
+// 			err = fmt.Errorf("chartEdbId:%d not exist", chartEdbId)
+// 			return
+// 		}
+// 		for _, v := range dataList {
+// 			chartData := &ExcelChartData{
+// 				ExcelInfoId:     chartEdb.ExcelInfoId,
+// 				ExcelChartEdbId: chartEdb.ExcelChartEdbId,
+// 				ChartInfoId:     chartEdb.ChartInfoId,
+// 				DataTime:        v.DataTime,
+// 				Value:           v.Value,
+// 				DataTimestamp:   v.DataTimestamp,
+// 				ModifyTime:      time.Now(),
+// 				CreateTime:      time.Now(),
+// 			}
+// 			addList = append(addList, chartData)
+// 			// data信息入库
+// 			if len(addList) > 1000 {
+// 				_, err = o.InsertMulti(len(addList), addList)
+// 				if err != nil {
+// 					return
+// 				}
+// 				addList = addList[:0]
+// 			}
+// 		}
+// 	}
+
+//		// data信息入库
+//		if len(addList) > 0 {
+//			_, err = o.InsertMulti(len(addList), addList)
+//			if err != nil {
+//				return
+//			}
+//		}
+//		return
+//	}
+
 func BatchUpdateChartEdbData(excelInfoId int, excelEdbMap map[int]*ExcelChartEdb, excelDataMap map[int][]*models.EdbDataList) (err error) {
-	o, err := orm.NewOrmUsingDB("data").Begin()
-	if err != nil {
-		return
-	}
+	o := global.DmSQL["data"].Begin()
 	defer func() {
 		if err != nil {
 			_ = o.Rollback()
@@ -69,7 +168,7 @@ func BatchUpdateChartEdbData(excelInfoId int, excelEdbMap map[int]*ExcelChartEdb
 	}()
 	//如果有数据则删除所有的数据
 	sql := `delete from excel_chart_data where excel_info_id = ?`
-	_, err = o.Raw(sql, excelInfoId).Exec()
+	err = o.Exec(sql, excelInfoId).Error
 	if err != nil {
 		return
 	}
@@ -96,7 +195,7 @@ func BatchUpdateChartEdbData(excelInfoId int, excelEdbMap map[int]*ExcelChartEdb
 			addList = append(addList, chartData)
 			// data信息入库
 			if len(addList) > 1000 {
-				_, err = o.InsertMulti(len(addList), addList)
+				err = o.Create(addList).Error
 				if err != nil {
 					return
 				}
@@ -107,7 +206,7 @@ func BatchUpdateChartEdbData(excelInfoId int, excelEdbMap map[int]*ExcelChartEdb
 
 	// data信息入库
 	if len(addList) > 0 {
-		_, err = o.InsertMulti(len(addList), addList)
+		err = o.Create(addList).Error
 		if err != nil {
 			return
 		}
@@ -115,12 +214,22 @@ func BatchUpdateChartEdbData(excelInfoId int, excelEdbMap map[int]*ExcelChartEdb
 	return
 }
 
+// func GetExcelChartDataByChartInfoId(chartInfoId int) (list []*ExcelChartData, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT *
+//              FROM excel_chart_Data
+// 			 WHERE chart_info_id=?
+//              ORDER BY excel_chart_edb_id ASC `
+// 	_, err = o.Raw(sql, chartInfoId).QueryRows(&list)
+// 	return
+// }
+
 func GetExcelChartDataByChartInfoId(chartInfoId int) (list []*ExcelChartData, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT *
              FROM excel_chart_Data
 			 WHERE chart_info_id=? 
              ORDER BY excel_chart_edb_id ASC `
-	_, err = o.Raw(sql, chartInfoId).QueryRows(&list)
+	err = o.Raw(sql, chartInfoId).Scan(&list).Error
 	return
 }

+ 451 - 97
models/data_manage/excel/excel_chart_edb.go

@@ -1,49 +1,56 @@
 package excel
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/models"
 	"eta_gn/eta_chart_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"strings"
 	"time"
+
+	"gorm.io/gorm"
 )
 
 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:"指标名称"`
-	EdbNameEn       string    `description:"指标英文名称"`
-	Unit            string    `description:"指标单位"`
-	UnitEn          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:"创建时间"`
-	ChartWidth      float64   `description:"线条大小"`
+	ExcelChartEdbId int       `orm:"column(excel_chart_edb_id);pk" gorm:"column:excel_chart_edb_id;primaryKey"`
+	ExcelInfoId     int       `description:"表格id" gorm:"column:excel_info_id"`
+	ChartInfoId     int       `description:"图表id" gorm:"column:chart_info_id"`
+	EdbCode         string    `description:"指标编码" gorm:"column:edb_code"`
+	EdbName         string    `description:"指标名称" gorm:"column:edb_name"`
+	EdbNameEn       string    `description:"指标英文名称" gorm:"column:edb_name_en"`
+	Unit            string    `description:"指标单位" gorm:"column:unit"`
+	UnitEn          string    `description:"指标单位(英文)" gorm:"column:unit_en"`
+	DateSequence    string    `description:"日期序列选区" gorm:"column:date_sequence"`
+	DataSequence    string    `description:"数据序列选区" gorm:"column:data_sequence"`
+	SysUserId       int       `description:"创建人id" gorm:"column:sys_user_id"`
+	SysUserRealName string    `description:"创建人姓名" gorm:"column:sys_user_real_name"`
+	MaxData         float64   `description:"上限" gorm:"column:max_data"`
+	MinData         float64   `description:"下限" gorm:"column:min_data"`
+	IsOrder         bool      `description:"true:正序,false:逆序" gorm:"column:is_order"`
+	IsAxis          int       `description:"true:左轴,false:右轴" gorm:"column:is_axis"`
+	EdbInfoType     int       `description:"true:标准指标,false:领先指标" gorm:"column:edb_info_type"`
+	LeadValue       int       `description:"领先值" gorm:"column:lead_value"`
+	LeadUnit        string    `description:"领先单位" gorm:"column:lead_unit"`
+	FromTag         string    `description:"标签" gorm:"column:from_tag"`
+	ModifyTime      time.Time `description:"修改时间" gorm:"column:modify_time"`
+	CreateTime      time.Time `description:"创建时间" gorm:"column:create_time"`
+	ChartWidth      float64   `description:"线条大小" gorm:"column:chart_width"`
+}
+
+// TableName 设置模型对应的表名
+func (ExcelChartEdb) TableName() string {
+	return "excel_chart_edb"
 }
 
 type ExcelChartEdbView struct {
-	ExcelChartEdbId int
-	ExcelInfoId     int    `description:"表格id"`
-	ChartInfoId     int    `description:"图表id"`
-	EdbCode         string `description:"指标编码"`
-	EdbName         string `description:"指标名称"`
-	DateSequenceStr string `description:"日期序列选区"`
-	DataSequenceStr string `description:"数据序列选区"`
+	ExcelChartEdbId int    `gorm:"column:excel_chart_edb_id;primaryKey"`
+	ExcelInfoId     int    `description:"表格id" gorm:"column:excel_info_id"`
+	ChartInfoId     int    `description:"图表id" gorm:"column:chart_info_id"`
+	EdbCode         string `description:"指标编码" gorm:"column:edb_code"`
+	EdbName         string `description:"指标名称" gorm:"column:edb_name"`
+	DateSequenceStr string `description:"日期序列选区" gorm:"column:date_sequence_str"`
+	DataSequenceStr string `description:"数据序列选区" gorm:"column:data_sequence_str"`
 	/*MaxData         float64 `description:"上限"`
 	MinData         float64 `description:"下限"`
 	IsOrder         bool    `description:"true:正序,false:逆序"`
@@ -51,64 +58,153 @@ type ExcelChartEdbView struct {
 	EdbInfoType     int     `description:"true:标准指标,false:领先指标"`
 	LeadValue       int     `description:"领先值"`
 	LeadUnit        string  `description:"领先单位"`*/
-	FromTag string `description:"标签"`
+	FromTag string `description:"标签" gorm:"column:from_tag"`
+}
+
+// TableName 设置模型对应的表名
+func (ExcelChartEdbView) TableName() string {
+	return "excel_chart_edb_view"
 }
 
 type BalanceTableChart struct {
-	ChartInfoId       int    `description:"图表id,新增时传0"`
-	ChartName         string `description:"图表名称"`
-	ChartType         int    `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图,7:柱方图"`
-	Calendar          string `description:"公历/农历"`
-	LeftMin           string `description:"图表左侧最小值"`
-	LeftMax           string `description:"图表左侧最大值"`
-	RightMin          string `description:"图表右侧最小值"`
-	RightMax          string `description:"图表右侧最大值"`
-	Right2Min         string `description:"图表右侧2最小值"`
-	Right2Max         string `description:"图表右侧2最大值"`
-	MinMaxSave        int    `description:"是否手动保存过上下限:0-否;1-是"`
-	ExtraConfig       string `description:"图表额外配置信息,json字符串"`
-	ChartImage        string `description:"封面图" json:"-"`
-	SeasonExtraConfig string `description:"季节性图表中的配置,json数据"`
-	SourcesFrom       string `description:"图表来源"`
-	//	ChartEdbInfoList  []ExcelChartEdbView
+	ChartInfoId       int    `description:"图表id,新增时传0" gorm:"column:chart_info_id"`
+	ChartName         string `description:"图表名称" gorm:"column:chart_name"`
+	ChartType         int    `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图,7:柱方图" gorm:"column:chart_type"`
+	Calendar          string `description:"公历/农历" gorm:"column:calendar"`
+	LeftMin           string `description:"图表左侧最小值" gorm:"column:left_min"`
+	LeftMax           string `description:"图表左侧最大值" gorm:"column:left_max"`
+	RightMin          string `description:"图表右侧最小值" gorm:"column:right_min"`
+	RightMax          string `description:"图表右侧最大值" gorm:"column:right_max"`
+	Right2Min         string `description:"图表右侧2最小值" gorm:"column:right2_min"`
+	Right2Max         string `description:"图表右侧2最大值" gorm:"column:right2_max"`
+	MinMaxSave        int    `description:"是否手动保存过上下限:0-否;1-是" gorm:"column:min_max_save"`
+	ExtraConfig       string `description:"图表额外配置信息,json字符串" gorm:"column:extra_config"`
+	ChartImage        string `description:"封面图" json:"-" gorm:"column:chart_image"`
+	SeasonExtraConfig string `description:"季节性图表中的配置,json数据" gorm:"column:season_extra_config"`
+	SourcesFrom       string `description:"图表来源" gorm:"column:sources_from"`
+	//	ChartEdbInfoList  []ExcelChartEfigView `gorm:"-"`
 }
 
-func (e *ExcelChartEdb) TableName() string {
-	return "excel_chart_edb"
+// TableName 设置模型对应的表名
+func (BalanceTableChart) TableName() string {
+	return "balance_table_chart"
 }
 
 // 新增
+//	func (e *ExcelChartEdb) Add() (err error) {
+//		o := orm.NewOrmUsingDB("data")
+//		_, err = o.Insert(e)
+//		return
+//	}
+
 func (e *ExcelChartEdb) Add() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Insert(e)
+	o := global.DmSQL["data"]
+	err = o.Create(e).Error
 	return
 }
 
 // 修改
+// func (e *ExcelChartEdb) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(e, cols...)
+// 	return
+// }
+
 func (e *ExcelChartEdb) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(e, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(e).Select(cols).Updates(e).Error
 	return
 }
 
 // 删除
+// func (e *ExcelChartEdb) Delete() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Delete(e)
+// 	return
+// }
+
 func (e *ExcelChartEdb) Delete() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Delete(e)
+	o := global.DmSQL["data"]
+	err = o.Delete(e).Error
 	return
 }
 
 type AddChartEdbAndDataItem struct {
 	ChartEdb *ExcelChartEdb
-	DataList []*ExcelChartData `description:"数据列表"`
+	DataList []*ExcelChartData `description:"数据列表" gorm:"column:data_list"`
 }
 
 // 同时添加指标和指标数据
+// func (e *ExcelChartEdb) AddChartEdbAndData(list []*AddChartEdbAndDataItem, chartInfo *models.ChartInfo, deleteEdbIds []int) (err error) {
+// 	o, err := orm.NewOrmUsingDB("data").Begin()
+// 	if err != nil {
+// 		return
+// 	}
+// 	defer func() {
+// 		if err != nil {
+// 			_ = o.Rollback()
+// 		} else {
+// 			_ = o.Commit()
+// 		}
+// 	}()
+
+// 	// 先删除原先的绑定的指标
+// 	if len(deleteEdbIds) > 0 && chartInfo.ChartInfoId > 0 {
+// 		sql := `DELETE FROM excel_chart_edb WHERE chart_info_id = ? AND excel_chart_edb_id in (` + utils.GetOrmInReplace(len(deleteEdbIds)) + `)`
+// 		_, err = o.Raw(sql, chartInfo.ChartInfoId, deleteEdbIds).Exec()
+// 		if err != nil {
+// 			err = fmt.Errorf("删除原先的指标失败:%v", err)
+// 			return
+// 		}
+// 	}
+// 	// 图表指标信息入库
+// 	updateIds := make([]int, 0)
+// 	var edbInfoIdArrStr []string
+// 	for _, item := range list {
+// 		err = addChartEdbAndData(o, item.ChartEdb, item.DataList)
+// 		if err != nil {
+// 			return
+// 		}
+// 		updateIds = append(updateIds, item.ChartEdb.ExcelChartEdbId)
+// 		edbInfoIdArrStr = append(edbInfoIdArrStr, strconv.Itoa(item.ChartEdb.ExcelChartEdbId))
+// 	}
+
+// 	//新增图表
+// 	chartInfoId := chartInfo.ChartInfoId
+// 	if chartInfo.ChartInfoId <= 0 {
+// 		lastId, e := o.Insert(chartInfo)
+// 		if e != nil {
+// 			err = fmt.Errorf("新增图表失败,AddChartEdbAndData: %v", e)
+// 			return
+// 		}
+// 		chartInfoId = int(lastId)
+// 	} else {
+// 		_, err = o.Update(chartInfo)
+// 		if err != nil {
+// 			err = fmt.Errorf("更新图表失败,AddChartEdbAndData: %v", e)
+// 			return
+// 		}
+// 	}
+
+// 	//更新图表id
+// 	sql := `update excel_chart_edb set chart_info_id = ? where excel_chart_edb_id in (` + utils.GetOrmInReplace(len(updateIds)) + `) and chart_info_id=0`
+// 	_, err = o.Raw(sql, chartInfoId, updateIds).Exec()
+// 	if err != nil {
+// 		err = fmt.Errorf("更新图表id失败,AddChartEdbAndData: %v", err)
+// 		return
+// 	}
+
+//		if len(edbInfoIdArrStr) > 0 {
+//			edbInfoIdStr := strings.Join(edbInfoIdArrStr, ",")
+//			//更新图表关联的指标id
+//			sql = `update chart_info set edb_info_ids = ? where chart_info_id = ?`
+//			_, err = o.Raw(sql, edbInfoIdStr, chartInfoId).Exec()
+//		}
+//		return
+//	}
+
 func (e *ExcelChartEdb) AddChartEdbAndData(list []*AddChartEdbAndDataItem, chartInfo *models.ChartInfo, deleteEdbIds []int) (err error) {
-	o, err := orm.NewOrmUsingDB("data").Begin()
-	if err != nil {
-		return
-	}
+	o := global.DmSQL["data"].Begin()
 	defer func() {
 		if err != nil {
 			_ = o.Rollback()
@@ -120,7 +216,7 @@ func (e *ExcelChartEdb) AddChartEdbAndData(list []*AddChartEdbAndDataItem, chart
 	// 先删除原先的绑定的指标
 	if len(deleteEdbIds) > 0 && chartInfo.ChartInfoId > 0 {
 		sql := `DELETE FROM excel_chart_edb WHERE chart_info_id = ? AND excel_chart_edb_id in (` + utils.GetOrmInReplace(len(deleteEdbIds)) + `)`
-		_, err = o.Raw(sql, chartInfo.ChartInfoId, deleteEdbIds).Exec()
+		err = o.Exec(sql, chartInfo.ChartInfoId, deleteEdbIds).Error
 		if err != nil {
 			err = fmt.Errorf("删除原先的指标失败:%v", err)
 			return
@@ -141,14 +237,14 @@ func (e *ExcelChartEdb) AddChartEdbAndData(list []*AddChartEdbAndDataItem, chart
 	//新增图表
 	chartInfoId := chartInfo.ChartInfoId
 	if chartInfo.ChartInfoId <= 0 {
-		lastId, e := o.Insert(chartInfo)
+		e := o.Create(chartInfo).Error
 		if e != nil {
 			err = fmt.Errorf("新增图表失败,AddChartEdbAndData: %v", e)
 			return
 		}
-		chartInfoId = int(lastId)
+		chartInfoId = int(chartInfo.ChartInfoId)
 	} else {
-		_, err = o.Update(chartInfo)
+		err = o.Model(chartInfo).Select("*").Updates(chartInfo).Error
 		if err != nil {
 			err = fmt.Errorf("更新图表失败,AddChartEdbAndData: %v", e)
 			return
@@ -157,7 +253,7 @@ func (e *ExcelChartEdb) AddChartEdbAndData(list []*AddChartEdbAndDataItem, chart
 
 	//更新图表id
 	sql := `update excel_chart_edb set chart_info_id = ? where excel_chart_edb_id in (` + utils.GetOrmInReplace(len(updateIds)) + `) and chart_info_id=0`
-	_, err = o.Raw(sql, chartInfoId, updateIds).Exec()
+	err = o.Exec(sql, chartInfoId, updateIds).Error
 	if err != nil {
 		err = fmt.Errorf("更新图表id失败,AddChartEdbAndData: %v", err)
 		return
@@ -167,30 +263,154 @@ func (e *ExcelChartEdb) AddChartEdbAndData(list []*AddChartEdbAndDataItem, chart
 		edbInfoIdStr := strings.Join(edbInfoIdArrStr, ",")
 		//更新图表关联的指标id
 		sql = `update chart_info set edb_info_ids = ? where chart_info_id = ?`
-		_, err = o.Raw(sql, edbInfoIdStr, chartInfoId).Exec()
+		err = o.Exec(sql, edbInfoIdStr, chartInfoId).Error
 	}
 	return
 }
 
-func addChartEdbAndData(o orm.TxOrmer, chartEdb *ExcelChartEdb, dataList []*ExcelChartData) (err error) {
+// func addChartEdbAndData(o orm.TxOrmer, chartEdb *ExcelChartEdb, dataList []*ExcelChartData) (err error) {
+// 	// 图表指标信息入库
+// 	excelChartEdbId := chartEdb.ExcelChartEdbId
+// 	if chartEdb.ExcelChartEdbId <= 0 {
+// 		lastId, e := o.Insert(chartEdb)
+// 		if e != nil {
+// 			err = fmt.Errorf("新增指标失败,addChartEdbAndData: %v", e)
+// 			return
+// 		}
+// 		excelChartEdbId = int(lastId)
+// 	} else {
+// 		_, e := o.Update(chartEdb)
+// 		if e != nil {
+// 			err = fmt.Errorf("更新指标失败,addChartEdbAndData: %v", e)
+// 			return
+// 		}
+// 		//如果有数据则删除所有的数据
+// 		sql := `delete from excel_chart_data where excel_chart_edb_id = ?`
+// 		_, err = o.Raw(sql, excelChartEdbId).Exec()
+// 		if err != nil {
+// 			return
+// 		}
+// 	}
+
+// 	chartEdb.ExcelChartEdbId = excelChartEdbId
+
+// 	// 图表指标数据入库
+// 	addList := make([]*ExcelChartData, 0)
+// 	if len(dataList) > 0 {
+// 		for _, v := range dataList {
+// 			chartData := &ExcelChartData{
+// 				ExcelInfoId:     chartEdb.ExcelInfoId,
+// 				ExcelChartEdbId: chartEdb.ExcelChartEdbId,
+// 				ChartInfoId:     chartEdb.ChartInfoId,
+// 				DataTime:        v.DataTime,
+// 				Value:           v.Value,
+// 				DataTimestamp:   v.DataTimestamp,
+// 				ModifyTime:      time.Now(),
+// 				CreateTime:      time.Now(),
+// 			}
+// 			addList = append(addList, chartData)
+// 			// data信息入库
+// 			if len(addList) > 1000 {
+// 				_, err = o.InsertMulti(len(addList), addList)
+// 				if err != nil {
+// 					return
+// 				}
+// 				addList = addList[:0]
+// 			}
+// 		}
+// 	}
+
+//		// data信息入库
+//		if len(addList) > 0 {
+//			_, err = o.InsertMulti(len(addList), addList)
+//			if err != nil {
+//				return
+//			}
+//		}
+//		return
+//	}
+// func addChartEdbAndData(o *gorm.DB, chartEdb *ExcelChartEdb, dataList []*ExcelChartData) (err error) {
+// 	// 图表指标信息入库
+// 	excelChartEdbId := chartEdb.ExcelChartEdbId
+// 	if chartEdb.ExcelChartEdbId <= 0 {
+// 		lastId, e := o.Insert(chartEdb)
+// 		if e != nil {
+// 			err = fmt.Errorf("新增指标失败,addChartEdbAndData: %v", e)
+// 			return
+// 		}
+// 		excelChartEdbId = int(lastId)
+// 	} else {
+// 		_, e := o.Update(chartEdb)
+// 		if e != nil {
+// 			err = fmt.Errorf("更新指标失败,addChartEdbAndData: %v", e)
+// 			return
+// 		}
+// 		//如果有数据则删除所有的数据
+// 		sql := `delete from excel_chart_data where excel_chart_edb_id = ?`
+// 		_, err = o.Raw(sql, excelChartEdbId).Exec()
+// 		if err != nil {
+// 			return
+// 		}
+// 	}
+
+// 	chartEdb.ExcelChartEdbId = excelChartEdbId
+
+// 	// 图表指标数据入库
+// 	addList := make([]*ExcelChartData, 0)
+// 	if len(dataList) > 0 {
+// 		for _, v := range dataList {
+// 			chartData := &ExcelChartData{
+// 				ExcelInfoId:     chartEdb.ExcelInfoId,
+// 				ExcelChartEdbId: chartEdb.ExcelChartEdbId,
+// 				ChartInfoId:     chartEdb.ChartInfoId,
+// 				DataTime:        v.DataTime,
+// 				Value:           v.Value,
+// 				DataTimestamp:   v.DataTimestamp,
+// 				ModifyTime:      time.Now(),
+// 				CreateTime:      time.Now(),
+// 			}
+// 			addList = append(addList, chartData)
+// 			// data信息入库
+// 			if len(addList) > 1000 {
+// 				_, err = o.InsertMulti(len(addList), addList)
+// 				if err != nil {
+// 					return
+// 				}
+// 				addList = addList[:0]
+// 			}
+// 		}
+// 	}
+
+// 	// data信息入库
+// 	if len(addList) > 0 {
+// 		_, err = o.InsertMulti(len(addList), addList)
+// 		if err != nil {
+// 			return
+// 		}
+// 	}
+// 	return
+// }
+
+func addChartEdbAndData(o *gorm.DB, chartEdb *ExcelChartEdb, dataList []*ExcelChartData) (err error) {
 	// 图表指标信息入库
 	excelChartEdbId := chartEdb.ExcelChartEdbId
 	if chartEdb.ExcelChartEdbId <= 0 {
-		lastId, e := o.Insert(chartEdb)
+		e := o.Create(chartEdb).Error
 		if e != nil {
 			err = fmt.Errorf("新增指标失败,addChartEdbAndData: %v", e)
 			return
 		}
-		excelChartEdbId = int(lastId)
+		excelChartEdbId = int(chartEdb.ExcelChartEdbId)
 	} else {
-		_, e := o.Update(chartEdb)
+		e := o.Model(chartEdb).Select("*").Updates(chartEdb).Error
+		// _, e := o.Update(chartEdb)
 		if e != nil {
 			err = fmt.Errorf("更新指标失败,addChartEdbAndData: %v", e)
 			return
 		}
 		//如果有数据则删除所有的数据
 		sql := `delete from excel_chart_data where excel_chart_edb_id = ?`
-		_, err = o.Raw(sql, excelChartEdbId).Exec()
+		err = o.Exec(sql, excelChartEdbId).Error
 		if err != nil {
 			return
 		}
@@ -215,7 +435,7 @@ func addChartEdbAndData(o orm.TxOrmer, chartEdb *ExcelChartEdb, dataList []*Exce
 			addList = append(addList, chartData)
 			// data信息入库
 			if len(addList) > 1000 {
-				_, err = o.InsertMulti(len(addList), addList)
+				err = o.Create(addList).Error
 				if err != nil {
 					return
 				}
@@ -226,7 +446,7 @@ func addChartEdbAndData(o orm.TxOrmer, chartEdb *ExcelChartEdb, dataList []*Exce
 
 	// data信息入库
 	if len(addList) > 0 {
-		_, err = o.InsertMulti(len(addList), addList)
+		err = o.Create(addList).Error
 		if err != nil {
 			return
 		}
@@ -234,57 +454,155 @@ func addChartEdbAndData(o orm.TxOrmer, chartEdb *ExcelChartEdb, dataList []*Exce
 	return
 }
 
+//	func GetExcelChartEdbMappingByExcelInfoId(excelInfoId int) (list []*ExcelChartEdb, err error) {
+//		o := orm.NewOrmUsingDB("data")
+//		sql := ` SELECT *
+//	             FROM excel_chart_edb
+//				 WHERE excel_info_id=?
+//	             ORDER BY chart_info_id asc, excel_chart_edb_id ASC `
+//		_, err = o.Raw(sql, excelInfoId).QueryRows(&list)
+//		return
+//	}
+
 func GetExcelChartEdbMappingByExcelInfoId(excelInfoId int) (list []*ExcelChartEdb, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT *
              FROM excel_chart_edb 
 			 WHERE excel_info_id=? 
              ORDER BY chart_info_id asc, excel_chart_edb_id ASC `
-	_, err = o.Raw(sql, excelInfoId).QueryRows(&list)
+	err = o.Raw(sql, excelInfoId).Scan(&list).Error
 	return
 }
 
+// func GetExcelChartEdbMappingByExcelInfoIds(excelInfoIds []int) (list []*ExcelChartEdb, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT *
+//              FROM excel_chart_edb
+// 			 WHERE excel_info_id in (` + utils.GetOrmInReplace(len(excelInfoIds)) + `)`
+// 	_, err = o.Raw(sql, excelInfoIds).QueryRows(&list)
+// 	return
+// }
+
+// func GetExcelChartEdbMappingByExcelInfoIds(excelInfoIds []int) (list []*ExcelChartEdb, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT *
+//              FROM excel_chart_edb
+// 			 WHERE excel_info_id in (` + utils.GetOrmInReplace(len(excelInfoIds)) + `)`
+// 	_, err = o.Raw(sql, excelInfoIds).QueryRows(&list)
+// 	return
+// }
+
 func GetExcelChartEdbMappingByExcelInfoIds(excelInfoIds []int) (list []*ExcelChartEdb, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT *
              FROM excel_chart_edb 
 			 WHERE excel_info_id in (` + utils.GetOrmInReplace(len(excelInfoIds)) + `)`
-	_, err = o.Raw(sql, excelInfoIds).QueryRows(&list)
+	err = o.Raw(sql, excelInfoIds).Scan(&list).Error
 	return
 }
 
+//	func GetExcelChartEdbById(id int) (item *ExcelChartEdb, err error) {
+//		o := orm.NewOrmUsingDB("data")
+//		sql := ` SELECT * FROM excel_chart_edb WHERE excel_chart_edb_id=? `
+//		err = o.Raw(sql, id).QueryRow(&item)
+//		return
+//	}
+
 func GetExcelChartEdbById(id int) (item *ExcelChartEdb, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_chart_edb WHERE excel_chart_edb_id=? `
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = o.Raw(sql, id).First(&item).Error
 	return
 }
 
+// func GetExcelChartEdbMappingByChartInfoId(chartInfoId int) (list []*ExcelChartEdb, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT *
+//              FROM excel_chart_edb
+// 			 WHERE chart_info_id=?
+//              ORDER BY excel_chart_edb_id ASC `
+// 	_, err = o.Raw(sql, chartInfoId).QueryRows(&list)
+// 	return
+// }
+
 func GetExcelChartEdbMappingByChartInfoId(chartInfoId int) (list []*ExcelChartEdb, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT *
              FROM excel_chart_edb 
 			 WHERE chart_info_id=? 
              ORDER BY excel_chart_edb_id ASC `
-	_, err = o.Raw(sql, chartInfoId).QueryRows(&list)
+	err = o.Raw(sql, chartInfoId).Scan(&list).Error
 	return
 }
 
+//	func GetExcelInfoByChartInfoId(chartInfoId int) (item *ExcelInfo, err error) {
+//		o := orm.NewOrmUsingDB("data")
+//		sql := ` SELECT i.*
+//	             FROM excel_chart_edb e left join excel_info i on e.excel_info_id=i.excel_info_id
+//				 WHERE e.chart_info_id=? limit 1`
+//		err = o.Raw(sql, chartInfoId).QueryRow(&item)
+//		return
+//	}
 func GetExcelInfoByChartInfoId(chartInfoId int) (item *ExcelInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT i.*
              FROM excel_chart_edb e left join excel_info i on e.excel_info_id=i.excel_info_id
 			 WHERE e.chart_info_id=? limit 1`
-	err = o.Raw(sql, chartInfoId).QueryRow(&item)
+	err = o.Raw(sql, chartInfoId).First(&item).Error
 	return
 }
 
 // 同时删除指标和指标数据
+// func DeleteExcelChartEdbAndData(excelInfoIds []int, chartInfoIds []int) (err error) {
+// 	o, err := orm.NewOrmUsingDB("data").Begin()
+// 	if err != nil {
+// 		return
+// 	}
+// 	defer func() {
+// 		if err != nil {
+// 			_ = o.Rollback()
+// 		} else {
+// 			_ = o.Commit()
+// 		}
+// 	}()
+// 	// 把对应的表格状态改成删除状态
+// 	//更新图表id
+// 	sql := `update excel_info set is_delete = 1, modify_time = ? where excel_info_id in (` + utils.GetOrmInReplace(len(excelInfoIds)) + `)`
+// 	_, err = o.Raw(sql, time.Now(), excelInfoIds).Exec()
+// 	if err != nil {
+// 		err = fmt.Errorf("更新图表id失败,AddChartEdbAndData: %v", err)
+// 		return
+// 	}
+// 	// 把删除图表状态
+// 	if len(chartInfoIds) > 0 {
+// 		sql := `DELETE FROM chart_info WHERE  chart_info_id in (` + utils.GetOrmInReplace(len(chartInfoIds)) + `)`
+// 		_, err = o.Raw(sql, chartInfoIds).Exec()
+// 		if err != nil {
+// 			err = fmt.Errorf("删除原先的指标失败:%v", err)
+// 			return
+// 		}
+
+// 		// todo 如果加入到我的图库中,则删除我的图库中的数据
+// 	}
+// 	// 删除原先的绑定的指标
+// 	sql = `DELETE FROM excel_chart_edb WHERE  excel_info_id in (` + utils.GetOrmInReplace(len(excelInfoIds)) + `)`
+// 	_, err = o.Raw(sql, excelInfoIds).Exec()
+// 	if err != nil {
+// 		err = fmt.Errorf("删除原先的指标失败:%v", err)
+// 		return
+// 	}
+// 	// 删除指标数据
+// 	sql = `DELETE FROM excel_chart_data WHERE  excel_info_id in (` + utils.GetOrmInReplace(len(excelInfoIds)) + `)`
+// 	_, err = o.Raw(sql, excelInfoIds).Exec()
+// 	if err != nil {
+// 		err = fmt.Errorf("删除原先的指标失败:%v", err)
+// 		return
+// 	}
+// 	return
+// }
+
 func DeleteExcelChartEdbAndData(excelInfoIds []int, chartInfoIds []int) (err error) {
-	o, err := orm.NewOrmUsingDB("data").Begin()
-	if err != nil {
-		return
-	}
+	o := global.DmSQL["data"].Begin()
 	defer func() {
 		if err != nil {
 			_ = o.Rollback()
@@ -295,7 +613,7 @@ func DeleteExcelChartEdbAndData(excelInfoIds []int, chartInfoIds []int) (err err
 	// 把对应的表格状态改成删除状态
 	//更新图表id
 	sql := `update excel_info set is_delete = 1, modify_time = ? where excel_info_id in (` + utils.GetOrmInReplace(len(excelInfoIds)) + `)`
-	_, err = o.Raw(sql, time.Now(), excelInfoIds).Exec()
+	err = o.Exec(sql, time.Now(), excelInfoIds).Error
 	if err != nil {
 		err = fmt.Errorf("更新图表id失败,AddChartEdbAndData: %v", err)
 		return
@@ -303,7 +621,8 @@ func DeleteExcelChartEdbAndData(excelInfoIds []int, chartInfoIds []int) (err err
 	// 把删除图表状态
 	if len(chartInfoIds) > 0 {
 		sql := `DELETE FROM chart_info WHERE  chart_info_id in (` + utils.GetOrmInReplace(len(chartInfoIds)) + `)`
-		_, err = o.Raw(sql, chartInfoIds).Exec()
+		err = o.Exec(sql, chartInfoIds).Error
+		// _, err = o.Raw(sql, chartInfoIds).Exec()
 		if err != nil {
 			err = fmt.Errorf("删除原先的指标失败:%v", err)
 			return
@@ -313,14 +632,14 @@ func DeleteExcelChartEdbAndData(excelInfoIds []int, chartInfoIds []int) (err err
 	}
 	// 删除原先的绑定的指标
 	sql = `DELETE FROM excel_chart_edb WHERE  excel_info_id in (` + utils.GetOrmInReplace(len(excelInfoIds)) + `)`
-	_, err = o.Raw(sql, excelInfoIds).Exec()
+	err = o.Exec(sql, excelInfoIds).Error
 	if err != nil {
 		err = fmt.Errorf("删除原先的指标失败:%v", err)
 		return
 	}
 	// 删除指标数据
 	sql = `DELETE FROM excel_chart_data WHERE  excel_info_id in (` + utils.GetOrmInReplace(len(excelInfoIds)) + `)`
-	_, err = o.Raw(sql, excelInfoIds).Exec()
+	err = o.Exec(sql, excelInfoIds).Error
 	if err != nil {
 		err = fmt.Errorf("删除原先的指标失败:%v", err)
 		return
@@ -329,9 +648,44 @@ func DeleteExcelChartEdbAndData(excelInfoIds []int, chartInfoIds []int) (err err
 }
 
 // 删除平衡表中的指标和数据
+// func DeleteBalanceExcelChartInfoAndData(chartInfoId int) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	to, err := o.Begin()
+// 	if err != nil {
+// 		return
+// 	}
+// 	defer func() {
+// 		if err != nil {
+// 			_ = to.Rollback()
+// 		} else {
+// 			_ = to.Commit()
+// 		}
+// 	}()
+
+//		sql := ` DELETE FROM chart_info WHERE chart_info_id=? `
+//		_, err = to.Raw(sql, chartInfoId).Exec()
+//		if err != nil {
+//			err = fmt.Errorf("删除平衡表图表失败 %s", err.Error())
+//			return
+//		}
+//		sql = ` DELETE FROM  excel_chart_edb WHERE chart_info_id=? `
+//		_, err = to.Raw(sql, chartInfoId).Exec()
+//		if err != nil {
+//			err = fmt.Errorf("删除平衡表图表指标失败 %s", err.Error())
+//			return
+//		}
+//		// 删除表格里的数据
+//		sql = ` DELETE FROM  excel_chart_data WHERE chart_info_id=? `
+//		_, err = to.Raw(sql, chartInfoId).Exec()
+//		if err != nil {
+//			err = fmt.Errorf("删除平衡表图表指标失败 %s", err.Error())
+//			return
+//		}
+//		return
+//	}
 func DeleteBalanceExcelChartInfoAndData(chartInfoId int) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	to, err := o.Begin()
+	o := global.DmSQL["data"]
+	to := o.Begin()
 	if err != nil {
 		return
 	}
@@ -344,20 +698,20 @@ func DeleteBalanceExcelChartInfoAndData(chartInfoId int) (err error) {
 	}()
 
 	sql := ` DELETE FROM chart_info WHERE chart_info_id=? `
-	_, err = to.Raw(sql, chartInfoId).Exec()
+	err = to.Exec(sql, chartInfoId).Error
 	if err != nil {
 		err = fmt.Errorf("删除平衡表图表失败 %s", err.Error())
 		return
 	}
 	sql = ` DELETE FROM  excel_chart_edb WHERE chart_info_id=? `
-	_, err = to.Raw(sql, chartInfoId).Exec()
+	err = to.Exec(sql, chartInfoId).Error
 	if err != nil {
 		err = fmt.Errorf("删除平衡表图表指标失败 %s", err.Error())
 		return
 	}
 	// 删除表格里的数据
 	sql = ` DELETE FROM  excel_chart_data WHERE chart_info_id=? `
-	_, err = to.Raw(sql, chartInfoId).Exec()
+	err = to.Exec(sql, chartInfoId).Error
 	if err != nil {
 		err = fmt.Errorf("删除平衡表图表指标失败 %s", err.Error())
 		return

+ 251 - 70
models/data_manage/excel/excel_classify.go

@@ -1,53 +1,97 @@
 package excel
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 // ExcelClassify excel表格分类
+// type ExcelClassify struct {
+// 	ExcelClassifyId   int       `orm:"column(excel_classify_id);pk"`
+// 	Source            int       `description:"表格来源,1:excel插件的表格,2:自定义表格,3:混合表格,4:自定义分析,默认:1"`
+// 	ExcelClassifyName string    `description:"分类名称"`
+// 	ParentId          int       `description:"父级id"`
+// 	SysUserId         int       `description:"创建人id"`
+// 	SysUserRealName   string    `description:"创建人姓名"`
+// 	Level             int       `description:"层级"`
+// 	UniqueCode        string    `description:"唯一编码"`
+// 	Sort              int       `description:"排序字段,越小越靠前,默认值:10"`
+// 	IsDelete          int       `description:"排序字段,越小越靠前,默认值:10"`
+// 	CreateTime        time.Time `description:"创建时间"`
+// 	ModifyTime        time.Time `description:"修改时间"`
+// 	IsJoinPermission  int       `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
+// }
+
 type ExcelClassify struct {
-	ExcelClassifyId   int       `orm:"column(excel_classify_id);pk"`
-	Source            int       `description:"表格来源,1:excel插件的表格,2:自定义表格,3:混合表格,4:自定义分析,默认:1"`
-	ExcelClassifyName string    `description:"分类名称"`
-	ParentId          int       `description:"父级id"`
-	SysUserId         int       `description:"创建人id"`
-	SysUserRealName   string    `description:"创建人姓名"`
-	Level             int       `description:"层级"`
-	UniqueCode        string    `description:"唯一编码"`
-	Sort              int       `description:"排序字段,越小越靠前,默认值:10"`
-	IsDelete          int       `description:"排序字段,越小越靠前,默认值:10"`
-	CreateTime        time.Time `description:"创建时间"`
-	ModifyTime        time.Time `description:"修改时间"`
-	IsJoinPermission  int       `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
+	ExcelClassifyId   int       `gorm:"column:excel_classify_id;primaryKey" orm:"column(excel_classify_id);pk"` // 主键
+	Source            int       `description:"表格来源,1:excel插件的表格,2:自定义表格,3:混合表格,4:自定义分析,默认:1" gorm:"column:source"`
+	ExcelClassifyName string    `description:"分类名称" gorm:"column:excel_classify_name"`
+	ParentId          int       `description:"父级id" gorm:"column:parent_id"`
+	SysUserId         int       `description:"创建人id" gorm:"column:sys_user_id"`
+	SysUserRealName   string    `description:"创建人姓名" gorm:"column:sys_user_real_name"`
+	Level             int       `description:"层级" gorm:"column:level"`
+	UniqueCode        string    `description:"唯一编码" gorm:"column:unique_code"`
+	Sort              int       `description:"排序字段,越小越靠前,默认值:10" gorm:"column:sort"`
+	IsDelete          int       `description:"是否删除,0:未删除;1:已删除,默认值:0" gorm:"column:is_delete"` // 修改了注释以避免混淆
+	CreateTime        time.Time `description:"创建时间" gorm:"column:create_time"`
+	ModifyTime        time.Time `description:"修改时间" gorm:"column:modify_time"`
+	IsJoinPermission  int       `description:"是否加入权限管控,0:不加入;1:加入;默认:0" gorm:"column:is_join_permission"`
+}
+
+// TableName 设置模型对应的表名
+func (ExcelClassify) TableName() string {
+	return "excel_classify"
 }
 
 // AddExcelClassify 添加excel分类
+// func AddExcelClassify(item *ExcelClassify) (lastId int64, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	lastId, err = o.Insert(item)
+// 	if err != nil {
+// 		return
+// 	}
+// 	item.ExcelClassifyId = int(lastId)
+
+//		return
+//	}
 func AddExcelClassify(item *ExcelClassify) (lastId int64, err error) {
-	o := orm.NewOrmUsingDB("data")
-	lastId, err = o.Insert(item)
+	o := global.DmSQL["data"]
+	err = o.Create(item).Error
 	if err != nil {
 		return
 	}
-	item.ExcelClassifyId = int(lastId)
-
+	lastId = int64(item.ExcelClassifyId)
 	return
 }
 
 // GetExcelClassifyCount 获取同级分类下存在同名分类的数量
+//
+//	func GetExcelClassifyCount(ExcelClassifyName string, parentId, source int) (count int, err error) {
+//		o := orm.NewOrmUsingDB("data")
+//		sql := `SELECT COUNT(1) AS count FROM excel_classify WHERE parent_id=? AND source = ? AND excel_classify_name=? AND is_delete=0 `
+//		err = o.Raw(sql, parentId, source, ExcelClassifyName).QueryRow(&count)
+//		return
+//	}
+
 func GetExcelClassifyCount(ExcelClassifyName string, parentId, source int) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT COUNT(1) AS count FROM excel_classify WHERE parent_id=? AND source = ? AND excel_classify_name=? AND is_delete=0 `
-	err = o.Raw(sql, parentId, source, ExcelClassifyName).QueryRow(&count)
+	err = o.Raw(sql, parentId, source, ExcelClassifyName).Scan(&count).Error
 	return
 }
 
+//	func GetExcelClassifyById(classifyId int) (item *ExcelClassify, err error) {
+//		o := orm.NewOrmUsingDB("data")
+//		sql := `SELECT * FROM excel_classify WHERE excel_classify_id=? AND is_delete=0 `
+//		err = o.Raw(sql, classifyId).QueryRow(&item)
+//		return
+//	}
 func GetExcelClassifyById(classifyId int) (item *ExcelClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM excel_classify WHERE excel_classify_id=? AND is_delete=0 `
-	err = o.Raw(sql, classifyId).QueryRow(&item)
+	err = o.Raw(sql, classifyId).First(&item).Error
 	return
 }
 
@@ -58,14 +102,32 @@ func GetExcelClassifyById(classifyId int) (item *ExcelClassify, err error) {
 // @param classifyIdList []int
 // @return items []*ExcelClassify
 // @return err error
+// func GetExcelClassifyByIdList(classifyIdList []int) (items []*ExcelClassify, err error) {
+// 	num := len(classifyIdList)
+// 	if num <= 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM excel_classify WHERE excel_classify_id in (` + utils.GetOrmInReplace(num) + `) AND is_delete=0 `
+// 	_, err = o.Raw(sql, classifyIdList).QueryRows(&items)
+// 	return
+// }
+
+// GetExcelClassifyByIdList
+// @Description: 根据分类id列表获取所有分类信息
+// @author: zqbao
+// @datetime 2024-04-07 16:24:04
+// @param classifyIdList []int
+// @return items []*ExcelClassify
+// @return err error
 func GetExcelClassifyByIdList(classifyIdList []int) (items []*ExcelClassify, err error) {
 	num := len(classifyIdList)
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM excel_classify WHERE excel_classify_id in (` + utils.GetOrmInReplace(num) + `) AND is_delete=0 `
-	_, err = o.Raw(sql, classifyIdList).QueryRows(&items)
+	err = o.Raw(sql, classifyIdList).Scan(&items).Error
 	return
 }
 
@@ -76,130 +138,238 @@ func GetExcelClassifyByIdList(classifyIdList []int) (items []*ExcelClassify, err
 // @param classifyIdList []int
 // @return items []*ExcelClassify
 // @return err error
+// func GetExcelClassifyBySourceAndIsJoinPermission(source, isJoinPermission int) (items []*ExcelClassify, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM excel_classify WHERE source = ? AND is_join_permission = ? `
+// 	_, err = o.Raw(sql, source, isJoinPermission).QueryRows(&items)
+
+// 	return
+// }
+
+// GetExcelClassifyBySourceAndIsJoinPermission
+// @Description: 根据分类id列表获取所有分类信息
+// @author: zqbao
+// @datetime 2024-04-07 16:24:04
+// @param classifyIdList []int
+// @return items []*ExcelClassify
+// @return err error
 func GetExcelClassifyBySourceAndIsJoinPermission(source, isJoinPermission int) (items []*ExcelClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM excel_classify WHERE source = ? AND is_join_permission = ? `
-	_, err = o.Raw(sql, source, isJoinPermission).QueryRows(&items)
-
+	err = o.Raw(sql, source, isJoinPermission).Scan(&items).Error
 	return
 }
 
+//	func GetChildClassifyById(classifyId int) (items []*ExcelClassify, err error) {
+//		o := orm.NewOrmUsingDB("data")
+//		sql := `SELECT * FROM excel_classify WHERE parent_id=? AND is_delete=0 `
+//		_, err = o.Raw(sql, classifyId).QueryRows(&items)
+//		return
+//	}
+
 func GetChildClassifyById(classifyId int) (items []*ExcelClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM excel_classify WHERE parent_id=? AND is_delete=0 `
-	_, err = o.Raw(sql, classifyId).QueryRows(&items)
+	err = o.Raw(sql, classifyId).Scan(&items).Error
 	return
 }
 
 func GetExcelClassifyByParentId(parentId, source int) (items []*ExcelClassifyItems, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_classify WHERE parent_id=? AND source = ? AND is_delete=0 order by sort asc,excel_classify_id asc`
-	_, err = o.Raw(sql, parentId, source).QueryRows(&items)
+	err = o.Raw(sql, parentId, source).Scan(&items).Error
 	return
 }
 
+//	func GetExcelClassifyBySource(source int) (items []*ExcelClassifyItems, err error) {
+//		o := orm.NewOrmUsingDB("data")
+//		sql := ` SELECT * FROM excel_classify WHERE  source = ? AND is_delete=0 order by sort asc,excel_classify_id asc`
+//		_, err = o.Raw(sql, source).QueryRows(&items)
+//		return
+//	}
 func GetExcelClassifyBySource(source int) (items []*ExcelClassifyItems, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_classify WHERE  source = ? AND is_delete=0 order by sort asc,excel_classify_id asc`
-	_, err = o.Raw(sql, source).QueryRows(&items)
+	err = o.Raw(sql, source).Scan(&items).Error
 	return
 }
 
+//	func GetExcelClassifyBySourceOrderByLevel(source int) (items []*ExcelClassifyItems, err error) {
+//		o := orm.NewOrmUsingDB("data")
+//		sql := ` SELECT * FROM excel_classify WHERE  source = ? AND is_delete=0 order by level asc, sort asc,excel_classify_id asc`
+//		_, err = o.Raw(sql, source).QueryRows(&items)
+//		return
+//	}
+
 func GetExcelClassifyBySourceOrderByLevel(source int) (items []*ExcelClassifyItems, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_classify WHERE  source = ? AND is_delete=0 order by level asc, sort asc,excel_classify_id asc`
-	_, err = o.Raw(sql, source).QueryRows(&items)
+	err = o.Raw(sql, source).Scan(&items).Error
 	return
 }
+
 func GetExcelClassifyAll() (items []*ExcelClassifyItems, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_classify WHERE parent_id<>0 AND is_delete=0 order by sort asc,excel_classify_id asc`
-	_, err = o.Raw(sql).QueryRows(&items)
+	err = o.Raw(sql).Scan(&items).Error
 	return
 }
 
+//	type ExcelClassifyItems struct {
+//		ExcelClassifyId   int `description:"分类id"`
+//		ExcelInfoId       int `description:"表格id"`
+//		ExcelClassifyName string
+//		ParentId          int
+//		Level             int    `description:"层级"`
+//		Sort              int    `description:"排序字段,越小越靠前,默认值:10"`
+//		UniqueCode        string `description:"唯一编码"`
+//		SysUserId         int    `description:"创建人id"`
+//		SysUserRealName   string `description:"创建人姓名"`
+//		StartDate         string `description:"自定义开始日期"`
+//		Children          []*ExcelClassifyItems
+//		IsJoinPermission  int  `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
+//		HaveOperaAuth     bool `description:"是否有数据权限"`
+//	}
 type ExcelClassifyItems struct {
-	ExcelClassifyId   int `description:"分类id"`
-	ExcelInfoId       int `description:"表格id"`
-	ExcelClassifyName string
-	ParentId          int
-	Level             int    `description:"层级"`
-	Sort              int    `description:"排序字段,越小越靠前,默认值:10"`
-	UniqueCode        string `description:"唯一编码"`
-	SysUserId         int    `description:"创建人id"`
-	SysUserRealName   string `description:"创建人姓名"`
-	StartDate         string `description:"自定义开始日期"`
-	Children          []*ExcelClassifyItems
-	IsJoinPermission  int  `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
-	HaveOperaAuth     bool `description:"是否有数据权限"`
+	ExcelClassifyId   int                   `gorm:"column:excel_classify_id" description:"分类id"` // 分类id
+	ExcelInfoId       int                   `gorm:"column:excel_info_id" description:"表格id"`     // 表格id
+	ExcelClassifyName string                `gorm:"column:excel_classify_name" description:"分类名称"`
+	ParentId          int                   `gorm:"column:parent_id" description:"父级id"`
+	Level             int                   `gorm:"column:level" description:"层级"`                 // 层级
+	Sort              int                   `gorm:"column:sort" description:"排序字段,越小越靠前,默认值:10"`   // 排序字段,越小越靠前,默认值:10
+	UniqueCode        string                `gorm:"column:unique_code" description:"唯一编码"`         // 唯一编码
+	SysUserId         int                   `gorm:"column:sys_user_id" description:"创建人id"`        // 创建人id
+	SysUserRealName   string                `gorm:"column:sys_user_real_name" description:"创建人姓名"` // 创建人姓名
+	StartDate         string                `gorm:"column:start_date" description:"自定义开始日期"`       // 自定义开始日期
+	Children          []*ExcelClassifyItems `gorm:"-"`
+	IsJoinPermission  int                   `gorm:"column:is_join_permission" description:"是否加入权限管控,0:不加入;1:加入;默认:0"` // 是否加入权限管控,0:不加入;1:加入;默认:0
+	HaveOperaAuth     bool                  `gorm:"column:have_opener_auth" description:"是否有数据权限"`                    // 是否有数据权限
+}
+
+// TableName 设置模型对应的表名
+func (ExcelClassifyItems) TableName() string {
+	return "excel_classify_items"
 }
 
 func GetExcelClassifyByCondition(condition string, pars []interface{}) (item *ExcelClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_classify WHERE 1=1 AND is_delete=0 `
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = o.Raw(sql, pars).First(&item).Error
 	return
 }
 
 // GetNextExcelClassifyByCondition 获取下一个分类
+// func GetNextExcelClassifyByCondition(condition string, pars []interface{}) (item *ExcelClassify, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM excel_classify WHERE 1=1 AND is_delete=0 `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	sql += " ORDER BY sort asc , create_time ASC LIMIT 1 "
+// 	err = o.Raw(sql, pars).QueryRow(&item)
+// 	return
+// }
+
 func GetNextExcelClassifyByCondition(condition string, pars []interface{}) (item *ExcelClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_classify WHERE 1=1 AND is_delete=0 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += " ORDER BY sort asc , create_time ASC LIMIT 1 "
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = o.Raw(sql, pars).First(&item).Error
 	return
 }
 
 // GetFirstExcelClassifyByParentId 获取当前父级图表分类下的排序第一条的数据
+// func GetFirstExcelClassifyByParentId(parentId int) (item *ExcelClassify, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM excel_classify WHERE parent_id=? AND is_delete=0 order by sort asc,excel_classify_id asc limit 1`
+// 	err = o.Raw(sql, parentId).QueryRow(&item)
+// 	return
+// }
+
 func GetFirstExcelClassifyByParentId(parentId int) (item *ExcelClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_classify WHERE parent_id=? AND is_delete=0 order by sort asc,excel_classify_id asc limit 1`
-	err = o.Raw(sql, parentId).QueryRow(&item)
+	err = o.Raw(sql, parentId).First(&item).Error
 	return
 }
 
 // UpdateExcelClassifySortByParentId 根据图表父类id更新排序
+// func UpdateExcelClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string, source int) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` update excel_classify set sort = ` + updateSort + ` WHERE parent_id=? and source=? and sort > ? AND is_delete=0 `
+// 	if classifyId > 0 {
+// 		sql += ` or ( excel_classify_id > ` + fmt.Sprint(classifyId) + ` and sort= ` + fmt.Sprint(nowSort) + `)`
+// 	}
+// 	_, err = o.Raw(sql, parentId, source, nowSort).Exec()
+// 	return
+// }
+
 func UpdateExcelClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string, source int) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` update excel_classify set sort = ` + updateSort + ` WHERE parent_id=? and source=? and sort > ? AND is_delete=0 `
 	if classifyId > 0 {
 		sql += ` or ( excel_classify_id > ` + fmt.Sprint(classifyId) + ` and sort= ` + fmt.Sprint(nowSort) + `)`
 	}
-	_, err = o.Raw(sql, parentId, source, nowSort).Exec()
+	err = o.Exec(sql, parentId, source, nowSort).Error
 	return
 }
 
 // Update 更新图表分类基础信息
+// func (ExcelClassify *ExcelClassify) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(ExcelClassify, cols...)
+// 	return
+// }
+
 func (ExcelClassify *ExcelClassify) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(ExcelClassify, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(ExcelClassify).Select(cols).Updates(ExcelClassify).Error
 	return
 }
 
 // GetExcelClassifyMaxSort 获取图表分类下最大的排序数
+// func GetExcelClassifyMaxSort(parentId int, source int) (sort int, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT Max(sort) AS sort FROM excel_classify WHERE parent_id=? AND source = ? AND is_delete=0 `
+// 	err = o.Raw(sql, parentId, source).QueryRow(&sort)
+// 	return
+// }
+
 func GetExcelClassifyMaxSort(parentId int, source int) (sort int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT Max(sort) AS sort FROM excel_classify WHERE parent_id=? AND source = ? AND is_delete=0 `
-	err = o.Raw(sql, parentId, source).QueryRow(&sort)
+	err = o.Raw(sql, parentId, source).Scan(&sort).Error
 	return
 }
 
+//	type ExcelClassifyView struct {
+//		ExcelClassifyId   int    `orm:"column(excel_classify_id);pk"`
+//		ExcelClassifyName string `description:"分类名称"`
+//		ParentId          int    `description:"父级id"`
+//	}
 type ExcelClassifyView struct {
-	ExcelClassifyId   int    `orm:"column(excel_classify_id);pk"`
-	ExcelClassifyName string `description:"分类名称"`
-	ParentId          int    `description:"父级id"`
+	ExcelClassifyId   int    `orm:"column(excel_classify_id);pk" gorm:"column:excel_classify_id;primaryKey"` // 主键
+	ExcelClassifyName string `description:"分类名称" gorm:"column:excel_classify_name"`                          // 分类名称
+	ParentId          int    `description:"父级id" gorm:"column:parent_id"`                                    // 父级id
 }
 
+// func GetExcelClassifyViewById(classifyId int) (item *ExcelClassifyView, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM excel_classify WHERE excel_classify_id=? AND is_delete=0 `
+// 	err = o.Raw(sql, classifyId).QueryRow(&item)
+// 	return
+// }
+
 func GetExcelClassifyViewById(classifyId int) (item *ExcelClassifyView, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM excel_classify WHERE excel_classify_id=? AND is_delete=0 `
-	err = o.Raw(sql, classifyId).QueryRow(&item)
+	err = o.Raw(sql, classifyId).First(&item).Error
 	return
 }
 
@@ -220,9 +390,20 @@ func GetClassifyByIdList(classifyIdList []int) (items []*ExcelClassify, err erro
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM excel_classify WHERE excel_classify_id in (` + utils.GetOrmInReplace(num) + `) AND is_delete=0 `
-	_, err = o.Raw(sql, classifyIdList).QueryRows(&items)
-
+	err = o.Raw(sql, classifyIdList).Scan(&items).Error
 	return
 }
+
+// func GetClassifyByIdList(classifyIdList []int) (items []*ExcelClassify, err error) {
+// 	num := len(classifyIdList)
+// 	if num <= 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM excel_classify WHERE excel_classify_id in (` + utils.GetOrmInReplace(num) + `) AND is_delete=0 `
+// 	_, err = o.Raw(sql, classifyIdList).QueryRows(&items)
+
+// 	return
+// }

+ 22 - 16
models/data_manage/excel/excel_draft.go

@@ -1,37 +1,43 @@
 package excel
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_chart_lib/global"
 	"time"
 )
 
 // ExcelDraft 沙盘推演草稿表
+//
+//	type ExcelDraft struct {
+//		ExcelDraftId int       `orm:"column(excel_draft_id);pk" description:"excel表格草稿记录id"`
+//		ExcelId      int       `description:"excel表格id"`
+//		Name         string    `description:"excel表格名称"`
+//		Content      string    `description:"excel数据"`
+//		OpUserId     int       `description:"最近一次编辑操作的用户id"`
+//		OpUserName   string    `description:"最近一次编辑的用户名称(冗余字段,避免查表)"`
+//		CreateTime   time.Time `description:"创建时间"`
+//	}
 type ExcelDraft struct {
-	ExcelDraftId int       `orm:"column(excel_draft_id);pk" description:"excel表格草稿记录id"`
-	ExcelId      int       `description:"excel表格id"`
-	Name         string    `description:"excel表格名称"`
-	Content      string    `description:"excel数据"`
-	OpUserId     int       `description:"最近一次编辑操作的用户id"`
-	OpUserName   string    `description:"最近一次编辑的用户名称(冗余字段,避免查表)"`
-	CreateTime   time.Time `description:"创建时间"`
+	ExcelDraftId int       `gorm:"column:excel_draft_id;primaryKey" description:"excel表格草稿记录id"`
+	ExcelId      int       `gorm:"column:excel_id" description:"excel表格id"`
+	Name         string    `gorm:"column:name" description:"excel表格名称"`
+	Content      string    `gorm:"column:content" description:"excel数据"`
+	OpUserId     int       `gorm:"column:op_user_id" description:"最近一次编辑操作的用户id"`
+	OpUserName   string    `gorm:"column:op_user_name" description:"最近一次编辑的用户名称(冗余字段,避免查表)"`
+	CreateTime   time.Time `gorm:"column:create_time" description:"创建时间"`
 }
 
 // AddExcelDraft 添加一个新的excel表格草稿
 func AddExcelDraft(excelDraft *ExcelDraft) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	// 新增草稿
-	id, err := o.Insert(excelDraft)
-	if err != nil {
-		return
-	}
-	excelDraft.ExcelDraftId = int(id)
+	err = o.Create(excelDraft).Error
 	return
 }
 
 // GetLastExcelDraftById 根据沙盘id获取最后一条沙盘草稿详情
 func GetLastExcelDraftById(excelId int) (excelDraft *ExcelDraft, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `select * from excel_draft where excel_id = ? order by excel_draft_id desc `
-	err = o.Raw(sql, excelId).QueryRow(&excelDraft)
+	err = o.Raw(sql, excelId).First(&excelDraft).Error
 	return
 }

+ 160 - 34
models/data_manage/excel/excel_edb_mapping.go

@@ -1,66 +1,120 @@
 package excel
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
+//	type ExcelEdbMapping struct {
+//		ExcelEdbMappingId int       `orm:"column(excel_edb_mapping_id);pk"`
+//		ExcelInfoId       int       `description:"excel的id"`
+//		Source            int       `description:"表格来源,1:excel插件的表格,2:自定义表格,3:混合表格,4:自定义分析,默认:1"`
+//		EdbInfoId         int       `description:"计算指标id"`
+//		CreateTime        time.Time `description:"创建时间"`
+//		ModifyTime        time.Time `description:"修改时间"`
+//	}
+//
 // ExcelEdbMapping excel与指标的关系表
 type ExcelEdbMapping struct {
-	ExcelEdbMappingId int       `orm:"column(excel_edb_mapping_id);pk"`
-	ExcelInfoId       int       `description:"excel的id"`
-	Source            int       `description:"表格来源,1:excel插件的表格,2:自定义表格,3:混合表格,4:自定义分析,默认:1"`
-	EdbInfoId         int       `description:"计算指标id"`
-	CreateTime        time.Time `description:"创建时间"`
-	ModifyTime        time.Time `description:"修改时间"`
+	ExcelEdbMappingId int       `gorm:"column:excel_edb_mapping_id;primaryKey"`
+	ExcelInfoId       int       `gorm:"column:excel_info_id" description:"excel的id"`
+	Source            int       `gorm:"column:source" description:"表格来源,1:excel插件的表格,2:自定义表格,3:混合表格,4:自定义分析,默认:1"`
+	EdbInfoId         int       `gorm:"column:edb_info_id" description:"计算指标id"`
+	CreateTime        time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime        time.Time `gorm:"column:modify_time" description:"修改时间"`
 }
 
 // AddExcelEdbMappingMulti 批量添加excel与指标的关系
 func AddExcelEdbMappingMulti(items []*ExcelEdbMapping) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.InsertMulti(len(items), items)
+	o := global.DmSQL["data"]
+	err = o.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }
 
 // Add 添加excel与指标的关系
 func (e *ExcelEdbMapping) Add() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Insert(e)
+	o := global.DmSQL["data"]
+	err = o.Create(e).Error
 	return
 }
 
 // GetExcelEdbMappingByEdbInfoId 根据指标id获取配置关系
 func GetExcelEdbMappingByEdbInfoId(edbInfoId int) (item *ExcelEdbMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT *  FROM excel_edb_mapping WHERE 1=1 AND edb_info_id = ? `
 
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	err = o.Raw(sql, edbInfoId).First(&item).Error
 	return
 }
 
 // GetExcelEdbMappingByExcelInfoId 根据excel的id获取配置关系
 func GetExcelEdbMappingByExcelInfoId(excelInfoId int) (items []*ExcelEdbMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT *  FROM excel_edb_mapping AS a 
            join edb_info as b on a.edb_info_id = b.edb_info_id
            WHERE 1=1 AND a.excel_info_id = ? `
-	_, err = o.Raw(sql, excelInfoId).QueryRows(&items)
+	err = o.Raw(sql, excelInfoId).Scan(&items).Error
 
 	return
 }
 
+// // AddExcelEdbMappingMulti 批量添加excel与指标的关系
+// func AddExcelEdbMappingMulti(items []*ExcelEdbMapping) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.InsertMulti(len(items), items)
+// 	return
+// }
+
+// // Add 添加excel与指标的关系
+// func (e *ExcelEdbMapping) Add() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Insert(e)
+// 	return
+// }
+
+// // GetExcelEdbMappingByEdbInfoId 根据指标id获取配置关系
+// func GetExcelEdbMappingByEdbInfoId(edbInfoId int) (item *ExcelEdbMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT *  FROM excel_edb_mapping WHERE 1=1 AND edb_info_id = ? `
+
+// 	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+// 	return
+// }
+
+// // GetExcelEdbMappingByExcelInfoId 根据excel的id获取配置关系
+// func GetExcelEdbMappingByExcelInfoId(excelInfoId int) (items []*ExcelEdbMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT *  FROM excel_edb_mapping AS a
+//            join edb_info as b on a.edb_info_id = b.edb_info_id
+//            WHERE 1=1 AND a.excel_info_id = ? `
+// 	_, err = o.Raw(sql, excelInfoId).QueryRows(&items)
+
+// 	return
+// }
+
+//	type ExcelEdbMappingItem struct {
+//		EdbInfoId        int    `description:"指标id"`
+//		UniqueCode       string `description:"唯一编码"`
+//		EdbName          string `description:"指标名称"`
+//		ClassifyId       int    `description:"分类id"`
+//		Frequency        string `description:"频度"`
+//		Unit             string `description:"单位"`
+//		CalculateFormula string `json:"-"`
+//		DateSequenceStr  string `description:"日期序列公式"`
+//		DataSequenceStr  string `description:"数据序列公式"`
+//	}
 type ExcelEdbMappingItem struct {
-	EdbInfoId        int    `description:"指标id"`
-	UniqueCode       string `description:"唯一编码"`
-	EdbName          string `description:"指标名称"`
-	ClassifyId       int    `description:"分类id"`
-	Frequency        string `description:"频度"`
-	Unit             string `description:"单位"`
-	CalculateFormula string `json:"-"`
-	DateSequenceStr  string `description:"日期序列公式"`
-	DataSequenceStr  string `description:"数据序列公式"`
+	EdbInfoId        int    `gorm:"column:edb_info_id" description:"指标id"`
+	UniqueCode       string `gorm:"column:unique_code" description:"唯一编码"`
+	EdbName          string `gorm:"column:edb_name" description:"指标名称"`
+	ClassifyId       int    `gorm:"column:classify_id" description:"分类id"`
+	Frequency        string `gorm:"column:frequency" description:"频度"`
+	Unit             string `gorm:"column:unit" description:"单位"`
+	CalculateFormula string `gorm:"column:calculate_formula" json:"-"` // 隐藏该字段
+	DateSequenceStr  string `gorm:"column:date_sequence_str" description:"日期序列公式"`
+	DataSequenceStr  string `gorm:"column:data_sequence_str" description:"数据序列公式"`
 }
 
 // CalculateFormula 计算公式
@@ -71,30 +125,30 @@ type CalculateFormula struct {
 
 // GetAllExcelEdbMappingItemByExcelInfoId 根据品种id获取所有的指标结果集
 func GetAllExcelEdbMappingItemByExcelInfoId(excelInfoId int) (items []*ExcelEdbMappingItem, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT a.edb_info_id,a.unique_code,a.edb_name,a.classify_id,a.frequency,a.unit,calculate_formula FROM edb_info AS a 
          JOIN excel_edb_mapping AS b ON a.edb_info_id=b.edb_info_id 
          WHERE b.excel_info_id = ? ORDER BY b.excel_edb_mapping_id ASC `
-	_, err = o.Raw(sql, excelInfoId).QueryRows(&items)
+	err = o.Raw(sql, excelInfoId).Scan(&items).Error
 	return
 }
 
 // GetNoCustomAnalysisExcelEdbMappingCount 根据指标id获取非自定义分析的关联关系
 func GetNoCustomAnalysisExcelEdbMappingCount(edbInfoId int) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT COUNT(1) AS count FROM excel_edb_mapping a 
                           join excel_info b on a.excel_info_id=b.excel_info_id
                           WHERE edb_info_id=? AND a.source != 4 AND b.is_delete = 0`
-	err = o.Raw(sql, edbInfoId).QueryRow(&count)
+	err = o.Raw(sql, edbInfoId).Scan(&count).Error
 	return
 }
 
 // GetAllExcelEdbMappingByExcelInfoId 根据excel的id获取所有的指标
 func GetAllExcelEdbMappingByExcelInfoId(excelInfoId int) (items []*ExcelEdbMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT a.* FROM  excel_edb_mapping a
          WHERE a.excel_info_id = ? ORDER BY a.excel_edb_mapping_id ASC `
-	_, err = o.Raw(sql, excelInfoId).QueryRows(&items)
+	err = o.Raw(sql, excelInfoId).Scan(&items).Error
 	return
 }
 
@@ -105,16 +159,16 @@ func GetAllExcelEdbMappingByExcelInfoId(excelInfoId int) (items []*ExcelEdbMappi
 // @param excelInfoId int
 // @return err error
 func DeleteCustomAnalysisExcelEdbMappingByEdbInfoId(excelInfoId int) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `DELETE FROM excel_edb_mapping WHERE source = ? AND edb_info_id = ? LIMIT 1`
-	_, err = o.Raw(sql, utils.CUSTOM_ANALYSIS_TABLE, excelInfoId).Exec()
+	err = o.Exec(sql, utils.CUSTOM_ANALYSIS_TABLE, excelInfoId).Error
 
 	return
 }
 
 // GetExcelEdbMappingItemByExcelInfoIdOrKeyword 根据表格ID或关键词获取指标
 func GetExcelEdbMappingItemByExcelInfoIdOrKeyword(excelInfoId int, keyword string) (items []*ExcelEdbMappingItem, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	cond := `b.excel_info_id = ?`
 	pars := make([]interface{}, 0)
 	pars = append(pars, excelInfoId)
@@ -137,6 +191,78 @@ func GetExcelEdbMappingItemByExcelInfoIdOrKeyword(excelInfoId int, keyword strin
 			%s
 		ORDER BY
 			b.excel_edb_mapping_id ASC`, cond)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars).Scan(&items).Error
 	return
 }
+
+// GetAllExcelEdbMappingItemByExcelInfoId 根据品种id获取所有的指标结果集
+// func GetAllExcelEdbMappingItemByExcelInfoId(excelInfoId int) (items []*ExcelEdbMappingItem, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT a.edb_info_id,a.unique_code,a.edb_name,a.classify_id,a.frequency,a.unit,calculate_formula FROM edb_info AS a
+//          JOIN excel_edb_mapping AS b ON a.edb_info_id=b.edb_info_id
+//          WHERE b.excel_info_id = ? ORDER BY b.excel_edb_mapping_id ASC `
+// 	_, err = o.Raw(sql, excelInfoId).QueryRows(&items)
+// 	return
+// }
+
+// // GetNoCustomAnalysisExcelEdbMappingCount 根据指标id获取非自定义分析的关联关系
+// func GetNoCustomAnalysisExcelEdbMappingCount(edbInfoId int) (count int, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT COUNT(1) AS count FROM excel_edb_mapping a
+//                           join excel_info b on a.excel_info_id=b.excel_info_id
+//                           WHERE edb_info_id=? AND a.source != 4 AND b.is_delete = 0`
+// 	err = o.Raw(sql, edbInfoId).QueryRow(&count)
+// 	return
+// }
+
+// // GetAllExcelEdbMappingByExcelInfoId 根据excel的id获取所有的指标
+// func GetAllExcelEdbMappingByExcelInfoId(excelInfoId int) (items []*ExcelEdbMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT a.* FROM  excel_edb_mapping a
+//          WHERE a.excel_info_id = ? ORDER BY a.excel_edb_mapping_id ASC `
+// 	_, err = o.Raw(sql, excelInfoId).QueryRows(&items)
+// 	return
+// }
+
+// // DeleteCustomAnalysisExcelEdbMappingByEdbInfoId
+// // @Description: 根据指标id删除与自定义分析表格的关系
+// // @author: Roc
+// // @datetime 2023-11-02 13:20:02
+// // @param excelInfoId int
+// // @return err error
+// func DeleteCustomAnalysisExcelEdbMappingByEdbInfoId(excelInfoId int) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `DELETE FROM excel_edb_mapping WHERE source = ? AND edb_info_id = ? LIMIT 1`
+// 	_, err = o.Raw(sql, utils.CUSTOM_ANALYSIS_TABLE, excelInfoId).Exec()
+
+// 	return
+// }
+
+// // GetExcelEdbMappingItemByExcelInfoIdOrKeyword 根据表格ID或关键词获取指标
+// func GetExcelEdbMappingItemByExcelInfoIdOrKeyword(excelInfoId int, keyword string) (items []*ExcelEdbMappingItem, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	cond := `b.excel_info_id = ?`
+// 	pars := make([]interface{}, 0)
+// 	pars = append(pars, excelInfoId)
+// 	if keyword != "" {
+// 		cond += ` AND (a.edb_code LIKE ? OR a.edb_name LIKE ?)`
+// 		pars = append(pars, keyword, keyword)
+// 	}
+// 	sql := fmt.Sprintf(`SELECT
+// 			a.edb_info_id,
+// 			a.unique_code,
+// 			a.edb_name,
+// 			a.classify_id,
+// 			a.frequency,
+// 			a.unit,
+// 			calculate_formula
+// 		FROM
+// 			edb_info AS a
+// 		JOIN excel_edb_mapping AS b ON a.edb_info_id = b.edb_info_id
+// 		WHERE
+// 			%s
+// 		ORDER BY
+// 			b.excel_edb_mapping_id ASC`, cond)
+// 	_, err = o.Raw(sql, pars).QueryRows(&items)
+// 	return
+// }

File diff suppressed because it is too large
+ 673 - 155
models/data_manage/excel/excel_info.go


+ 112 - 44
models/data_manage/excel/excel_sheet.go

@@ -1,98 +1,166 @@
 package excel
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_chart_lib/global"
 	"time"
 )
 
+// ExcelSheet excel表格详情表
+//
+//	type ExcelSheet struct {
+//		ExcelSheetId int       `orm:"column(excel_sheet_id);pk"`
+//		ExcelInfoId  int       `description:"excel的id"`
+//		SheetName    string    `description:"sheet名称"`
+//		PageNum      int       `description:"总页码数"`
+//		Index        string    `description:"excel数据中的index"`
+//		Sort         int       `description:"排序"`
+//		Config       string    `description:"配置信息"`
+//		CalcChain    string    `description:"计算公式"`
+//		ModifyTime   time.Time `description:"最近修改日期"`
+//		CreateTime   time.Time `description:"创建日期"`
+//	}
+//
 // ExcelSheet excel表格详情表
 type ExcelSheet struct {
-	ExcelSheetId int       `orm:"column(excel_sheet_id);pk"`
-	ExcelInfoId  int       `description:"excel的id"`
-	SheetName    string    `description:"sheet名称"`
-	PageNum      int       `description:"总页码数"`
-	Index        string    `description:"excel数据中的index"`
-	Sort         int       `description:"排序"`
-	Config       string    `description:"配置信息"`
-	CalcChain    string    `description:"计算公式"`
-	ModifyTime   time.Time `description:"最近修改日期"`
-	CreateTime   time.Time `description:"创建日期"`
+	ExcelSheetId int       `gorm:"column:excel_sheet_id;primaryKey" orm:"column(excel_sheet_id);pk"`
+	ExcelInfoId  int       `gorm:"column:excel_info_id" description:"excel的id"`
+	SheetName    string    `gorm:"column:sheet_name" description:"sheet名称"`
+	PageNum      int       `gorm:"column:page_num" description:"总页码数"`
+	Index        string    `gorm:"column:index" description:"excel数据中的index"`
+	Sort         int       `gorm:"column:sort" description:"排序"`
+	Config       string    `gorm:"column:config" description:"配置信息"`
+	CalcChain    string    `gorm:"column:calc_chain" description:"计算公式"`
+	ModifyTime   time.Time `gorm:"column:modify_time" description:"最近修改日期"`
+	CreateTime   time.Time `gorm:"column:create_time" description:"创建日期"`
 }
 
 // Update 更新 excel表格的sheet基础信息
 func (excelSheet *ExcelSheet) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(excelSheet, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(excelSheet).Select(cols).Updates(excelSheet).Error
 
 	return
 }
 
 // AddExcelSheet 新增excel表格的sheet基础信息
 func AddExcelSheet(excelInfo *ExcelSheet) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	// 表格信息入库
-	lastId, err := o.Insert(excelInfo)
-	if err != nil {
-		return
-	}
-	excelInfo.ExcelInfoId = int(lastId)
-
+	err = o.Create(excelInfo).Error
 	return
 }
 
 // GetAllSheetList 根据excel_id获取所有的sheet
 func GetAllSheetList(excelInfoId int) (item []*ExcelSheet, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT *
 FROM excel_sheet WHERE 1=1 AND excel_info_id = ? `
 	sql += " ORDER BY sort asc "
-	_, err = o.Raw(sql, excelInfoId).QueryRows(&item)
+	err = o.Raw(sql, excelInfoId).Scan(&item).Error
 	return
 }
 
+// Update 更新 excel表格的sheet基础信息
+// func (excelSheet *ExcelSheet) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(excelSheet, cols...)
+
+// 	return
+// }
+
+// // AddExcelSheet 新增excel表格的sheet基础信息
+// func AddExcelSheet(excelInfo *ExcelSheet) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	// 表格信息入库
+// 	lastId, err := o.Insert(excelInfo)
+// 	if err != nil {
+// 		return
+// 	}
+// 	excelInfo.ExcelInfoId = int(lastId)
+
+// 	return
+// }
+
+// // GetAllSheetList 根据excel_id获取所有的sheet
+// func GetAllSheetList(excelInfoId int) (item []*ExcelSheet, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT *
+// FROM excel_sheet WHERE 1=1 AND excel_info_id = ? `
+// 	sql += " ORDER BY sort asc "
+// 	_, err = o.Raw(sql, excelInfoId).QueryRows(&item)
+// 	return
+// }
+
 // SheetItem excel表格详情表
+//
+//	type SheetItem struct {
+//		ExcelSheetId int             `orm:"column(excel_sheet_id);pk" json:"-"`
+//		ExcelInfoId  int             `description:"excel的id"  json:"-"`
+//		SheetName    string          `description:"sheet名称"`
+//		PageNum      int             `description:"数据总页码数"`
+//		Index        string          `description:"excel数据中的index"`
+//		Sort         int             `description:"排序"`
+//		Config       string          `description:"sheet配置"`
+//		CalcChain    string          `description:"计算公式"`
+//		ModifyTime   time.Time       `description:"最近修改日期" json:"-"`
+//		CreateTime   time.Time       `description:"创建日期"`
+//		Data         *ExcelSheetData `description:"excel的数据"`
+//	}
 type SheetItem struct {
-	ExcelSheetId int             `orm:"column(excel_sheet_id);pk" json:"-"`
-	ExcelInfoId  int             `description:"excel的id"  json:"-"`
-	SheetName    string          `description:"sheet名称"`
-	PageNum      int             `description:"数据总页码数"`
-	Index        string          `description:"excel数据中的index"`
-	Sort         int             `description:"排序"`
-	Config       string          `description:"sheet配置"`
-	CalcChain    string          `description:"计算公式"`
-	ModifyTime   time.Time       `description:"最近修改日期" json:"-"`
-	CreateTime   time.Time       `description:"创建日期"`
+	ExcelSheetId int             `gorm:"column:excel_sheet_id;primaryKey" json:"-" orm:"column(excel_sheet_id);pk"`
+	ExcelInfoId  int             `gorm:"column:excel_info_id" description:"excel的id" json:"-"`
+	SheetName    string          `gorm:"column:sheet_name" description:"sheet名称" `
+	PageNum      int             `gorm:"column:page_num" description:"数据总页码数" `
+	Index        string          `gorm:"column:index" description:"excel数据中的index" `
+	Sort         int             `gorm:"column:sort" description:"排序" `
+	Config       string          `gorm:"column:config" description:"sheet配置" `
+	CalcChain    string          `gorm:"column:calc_chain" description:"计算公式"`
+	ModifyTime   time.Time       `gorm:"column:modify_time" description:"最近修改日期" json:"-"`
+	CreateTime   time.Time       `gorm:"column:create_time" description:"创建日期"`
 	Data         *ExcelSheetData `description:"excel的数据"`
 }
 
 // GetAllSheetItemList 根据excel_id获取所有的sheet详情
 func GetAllSheetItemList(excelInfoId int) (item []*SheetItem, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT *
 FROM excel_sheet WHERE 1=1 AND excel_info_id = ? `
 	sql += " ORDER BY sort asc "
-	_, err = o.Raw(sql, excelInfoId).QueryRows(&item)
+	err = o.Raw(sql, excelInfoId).Scan(&item).Error
 	return
 }
 
 // GetAllNoConfigSheetItemList 根据excel_id获取所有的sheet详情
 func GetAllNoConfigSheetItemList(excelInfoId int) (item []*SheetItem, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT excel_sheet_id,excel_info_id,sheet_name,sort,page_num,create_time
 FROM excel_sheet WHERE 1=1 AND excel_info_id = ? `
 	sql += " ORDER BY sort asc "
-	_, err = o.Raw(sql, excelInfoId).QueryRows(&item)
+	err = o.Raw(sql, excelInfoId).Scan(&item).Error
 	return
 }
 
+// AddExcelSheetParams excel表格详情表
+//
+//	type AddExcelSheetParams struct {
+//		ExcelSheetId int               `orm:"column(excel_sheet_id);pk"`
+//		ExcelInfoId  int               `description:"excel的id"`
+//		SheetName    string            `description:"sheet名称"`
+//		Index        string            `description:"excel数据中的index"`
+//		Sort         int               `description:"排序"`
+//		Config       string            `description:"配置信息"`
+//		CalcChain    string            `description:"计算公式"`
+//		DataList     []*ExcelSheetData `description:"excel的数据"`
+//	}
+
 // AddExcelSheetParams excel表格详情表
 type AddExcelSheetParams struct {
-	ExcelSheetId int               `orm:"column(excel_sheet_id);pk"`
-	ExcelInfoId  int               `description:"excel的id"`
-	SheetName    string            `description:"sheet名称"`
-	Index        string            `description:"excel数据中的index"`
-	Sort         int               `description:"排序"`
-	Config       string            `description:"配置信息"`
-	CalcChain    string            `description:"计算公式"`
-	DataList     []*ExcelSheetData `description:"excel的数据"`
+	ExcelSheetId int               `gorm:"column:excel_sheet_id;primaryKey" orm:"column(excel_sheet_id);pk"`
+	ExcelInfoId  int               `gorm:"column:excel_info_id" description:"excel的id" `
+	SheetName    string            `gorm:"column:sheet_name" description:"sheet名称" `
+	Index        string            `gorm:"column:index" description:"excel数据中的index" `
+	Sort         int               `gorm:"column:sort" description:"排序" `
+	Config       string            `gorm:"column:config" description:"配置信息" `
+	CalcChain    string            `gorm:"column:calc_chain" description:"计算公式" `
+	DataList     []*ExcelSheetData `gorm:"column:data_list" description:"excel的数据" `
 }

+ 73 - 18
models/data_manage/excel/excel_sheet_data.go

@@ -1,40 +1,50 @@
 package excel
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
+// ExcelSheetData excel表格详情表
+//
+//	type ExcelSheetData struct {
+//		ExcelDataId  int       `orm:"column(excel_data_id);pk"`
+//		ExcelInfoId  int       `description:"数据归属的excel_info的id"`
+//		ExcelSheetId int       `description:"数据归属sheet"`
+//		Sort         int       `description:"数据排序"`
+//		Data         string    `description:"数据,分页存储"`
+//		ModifyTime   time.Time `description:"最近修改日期"`
+//		CreateTime   time.Time `description:"创建日期"`
+//	}
+//
 // ExcelSheetData excel表格详情表
 type ExcelSheetData struct {
-	ExcelDataId  int       `orm:"column(excel_data_id);pk"`
-	ExcelInfoId  int       `description:"数据归属的excel_info的id"`
-	ExcelSheetId int       `description:"数据归属sheet"`
-	Sort         int       `description:"数据排序"`
-	Data         string    `description:"数据,分页存储"`
-	ModifyTime   time.Time `description:"最近修改日期"`
-	CreateTime   time.Time `description:"创建日期"`
+	ExcelDataId  int       `gorm:"column:excel_data_id;primaryKey" orm:"column(excel_data_id);pk"`
+	ExcelInfoId  int       `gorm:"column:excel_info_id" description:"数据归属的excel_info的id"`
+	ExcelSheetId int       `gorm:"column:excel_sheet_id" description:"数据归属sheet"`
+	Sort         int       `gorm:"column:sort" description:"数据排序"`
+	Data         string    `gorm:"column:data" description:"数据,分页存储"`
+	ModifyTime   time.Time `gorm:"column:modify_time" description:"最近修改日期"`
+	CreateTime   time.Time `gorm:"column:create_time" description:"创建日期"`
 }
 
 // Update 更新 excel表格的sheet基础信息
 func (ExcelSheetData *ExcelSheetData) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(ExcelSheetData, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(ExcelSheetData).Select(cols).Updates(ExcelSheetData).Error
 
 	return
 }
 
 // AddExcelSheetData 新增excel表格的sheet基础信息
 func AddExcelSheetData(excelInfo *ExcelSheetData) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	// 表格信息入库
-	lastId, err := o.Insert(excelInfo)
+	err = o.Create(excelInfo).Error
 	if err != nil {
 		return
 	}
-	excelInfo.ExcelInfoId = int(lastId)
-
 	return
 }
 
@@ -44,20 +54,65 @@ func GetSheetDataListBySheetIdListAndPage(excelSheetIdList []int, page int) (ite
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["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(&items)
+	err = o.Raw(sql, excelSheetIdList, page).Scan(&items).Error
 
 	return
 }
 
 // GetAllSheetDataListByExcelInfoId 根据表格id获取所有的sheet的所有数据详情
 func GetAllSheetDataListByExcelInfoId(excelInfoId int) (items []*ExcelSheetData, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["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)
+	err = o.Raw(sql, excelInfoId).Scan(&items).Error
 
 	return
 }
+
+// Update 更新 excel表格的sheet基础信息
+// func (ExcelSheetData *ExcelSheetData) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(ExcelSheetData, cols...)
+
+// 	return
+// }
+
+// // AddExcelSheetData 新增excel表格的sheet基础信息
+// func AddExcelSheetData(excelInfo *ExcelSheetData) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	// 表格信息入库
+// 	lastId, err := o.Insert(excelInfo)
+// 	if err != nil {
+// 		return
+// 	}
+// 	excelInfo.ExcelInfoId = int(lastId)
+
+// 	return
+// }
+
+// // GetSheetDataListBySheetIdListAndPage 根据sheet_id列表和页码获取所有的sheet数据详情
+// func GetSheetDataListBySheetIdListAndPage(excelSheetIdList []int, page int) (items []*ExcelSheetData, err error) {
+// 	num := len(excelSheetIdList)
+// 	if num <= 0 {
+// 		return
+// 	}
+// 	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(&items)
+
+// 	return
+// }
+
+// // GetAllSheetDataListByExcelInfoId 根据表格id获取所有的sheet的所有数据详情
+// func GetAllSheetDataListByExcelInfoId(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
+// }

+ 138 - 32
models/data_manage/factor_edb_series.go

@@ -2,11 +2,13 @@ package data_manage
 
 import (
 	"encoding/json"
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
 )
 
 const (
@@ -15,15 +17,26 @@ const (
 	FactorEdbSeriesCalculated    = 2
 )
 
+// FactorEdbSeries 因子指标系列表
+// type FactorEdbSeries struct {
+// 	FactorEdbSeriesId int       `orm:"column(factor_edb_series_id);pk"`
+// 	SeriesName        string    `description:"系列名称"`
+// 	EdbInfoType       int       `description:"关联指标类型:0-普通指标;1-预测指标"`
+// 	CalculateStep     string    `description:"计算步骤-JSON"`
+// 	CalculateState    int       `description:"计算状态: 0-无计算; 1-计算中; 2-计算完成"`
+// 	CreateTime        time.Time `description:"创建时间"`
+// 	ModifyTime        time.Time `description:"修改时间"`
+// }
+
 // FactorEdbSeries 因子指标系列表
 type FactorEdbSeries struct {
-	FactorEdbSeriesId int       `orm:"column(factor_edb_series_id);pk"`
-	SeriesName        string    `description:"系列名称"`
-	EdbInfoType       int       `description:"关联指标类型:0-普通指标;1-预测指标"`
-	CalculateStep     string    `description:"计算步骤-JSON"`
-	CalculateState    int       `description:"计算状态: 0-无计算; 1-计算中; 2-计算完成"`
-	CreateTime        time.Time `description:"创建时间"`
-	ModifyTime        time.Time `description:"修改时间"`
+	FactorEdbSeriesId int       `gorm:"column:factor_edb_series_id;primaryKey" description:"因子指标系列ID" orm:"column(factor_edb_series_id);pk"`
+	SeriesName        string    `gorm:"column:series_name" description:"系列名称"`
+	EdbInfoType       int       `gorm:"column:edb_info_type" description:"关联指标类型:0-普通指标;1-预测指标"`
+	CalculateStep     string    `gorm:"column:calculate_step" description:"计算步骤-JSON"`
+	CalculateState    int       `gorm:"column:calculate_state" description:"计算状态: 0-无计算; 1-计算中; 2-计算完成"`
+	CreateTime        time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime        time.Time `gorm:"column:modify_time" description:"修改时间"`
 }
 
 func (m *FactorEdbSeries) TableName() string {
@@ -53,12 +66,8 @@ func (m *FactorEdbSeries) Cols() FactorEdbSeriesCols {
 }
 
 func (m *FactorEdbSeries) Create() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.FactorEdbSeriesId = int(id)
+	o := global.DmSQL["data"]
+	err = o.Create(m).Error
 	return
 }
 
@@ -66,21 +75,21 @@ func (m *FactorEdbSeries) CreateMulti(items []*FactorEdbSeries) (err error) {
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.InsertMulti(len(items), items)
+	o := global.DmSQL["data"]
+	err = o.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }
 
 func (m *FactorEdbSeries) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(m, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(m).Select(cols).Updates(m).Error
 	return
 }
 
 func (m *FactorEdbSeries) Remove() (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	_, err = o.Raw(sql, m.FactorEdbSeriesId).Exec()
+	err = o.Exec(sql, m.FactorEdbSeriesId).Error
 	return
 }
 
@@ -88,39 +97,39 @@ func (m *FactorEdbSeries) MultiRemove(ids []int) (err error) {
 	if len(ids) == 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
-	_, err = o.Raw(sql, ids).Exec()
+	err = o.Exec(sql, ids).Error
 	return
 }
 
 func (m *FactorEdbSeries) GetItemById(id int) (item *FactorEdbSeries, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = o.Raw(sql, id).First(&item).Error
 	return
 }
 
 func (m *FactorEdbSeries) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *FactorEdbSeries, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	order := ``
 	if orderRule != "" {
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = o.Raw(sql, pars).First(&item).Error
 	return
 }
 
 func (m *FactorEdbSeries) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = o.Raw(sql, pars).Scan(&count).Error
 	return
 }
 
 func (m *FactorEdbSeries) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*FactorEdbSeries, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -130,12 +139,12 @@ func (m *FactorEdbSeries) GetItemsByCondition(condition string, pars []interface
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars).Scan(&items).Error
 	return
 }
 
 func (m *FactorEdbSeries) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*FactorEdbSeries, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -145,10 +154,107 @@ func (m *FactorEdbSeries) GetPageItemsByCondition(condition string, pars []inter
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	err = o.Raw(sql, pars, startSize, pageSize).Scan(&items).Error
 	return
 }
 
+// func (m *FactorEdbSeries) Create() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	id, err := o.Insert(m)
+// 	if err != nil {
+// 		return
+// 	}
+// 	m.FactorEdbSeriesId = int(id)
+// 	return
+// }
+
+// func (m *FactorEdbSeries) CreateMulti(items []*FactorEdbSeries) (err error) {
+// 	if len(items) == 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.InsertMulti(len(items), items)
+// 	return
+// }
+
+// func (m *FactorEdbSeries) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(m, cols...)
+// 	return
+// }
+
+// func (m *FactorEdbSeries) Remove() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+// 	_, err = o.Raw(sql, m.FactorEdbSeriesId).Exec()
+// 	return
+// }
+
+// func (m *FactorEdbSeries) MultiRemove(ids []int) (err error) {
+// 	if len(ids) == 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
+// 	_, err = o.Raw(sql, ids).Exec()
+// 	return
+// }
+
+// func (m *FactorEdbSeries) GetItemById(id int) (item *FactorEdbSeries, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+// 	err = o.Raw(sql, id).QueryRow(&item)
+// 	return
+// }
+
+// func (m *FactorEdbSeries) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *FactorEdbSeries, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	order := ``
+// 	if orderRule != "" {
+// 		order = ` ORDER BY ` + orderRule
+// 	}
+// 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
+// 	err = o.Raw(sql, pars).QueryRow(&item)
+// 	return
+// }
+
+// func (m *FactorEdbSeries) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
+// 	err = o.Raw(sql, pars).QueryRow(&count)
+// 	return
+// }
+
+// func (m *FactorEdbSeries) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*FactorEdbSeries, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	fields := strings.Join(fieldArr, ",")
+// 	if len(fieldArr) == 0 {
+// 		fields = `*`
+// 	}
+// 	order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
+// 	if orderRule != "" {
+// 		order = ` ORDER BY ` + orderRule
+// 	}
+// 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+// 	_, err = o.Raw(sql, pars).QueryRows(&items)
+// 	return
+// }
+
+// func (m *FactorEdbSeries) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*FactorEdbSeries, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	fields := strings.Join(fieldArr, ",")
+// 	if len(fieldArr) == 0 {
+// 		fields = `*`
+// 	}
+// 	order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
+// 	if orderRule != "" {
+// 		order = ` ORDER BY ` + orderRule
+// 	}
+// 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
+// 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+// 	return
+// }
+
 // FactorEdbSeriesItem 多因子系列信息
 type FactorEdbSeriesItem struct {
 	SeriesId      int                            `description:"多因子系列ID"`

+ 162 - 40
models/data_manage/factor_edb_series_chart_mapping.go

@@ -1,9 +1,9 @@
 package data_manage
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
@@ -13,18 +13,32 @@ const (
 )
 
 // FactorEdbSeriesChartMapping 因子指标系列-图表关联
+//
+//	type FactorEdbSeriesChartMapping struct {
+//		FactorEdbSeriesChartMappingId int       `orm:"column(factor_edb_series_chart_mapping_id);pk"`
+//		ChartInfoId                   int       `description:"图表ID"`
+//		Source                        int       `description:"图表来源, 同chart_info表source"`
+//		CalculateType                 int       `description:"计算方式: 1-相关性"`
+//		CalculatePars                 string    `description:"计算参数-JSON(如计算窗口等)"`
+//		CalculateData                 string    `description:"计算数据-JSON(如相关性矩阵等)"`
+//		FactorEdbSeriesId             int       `description:"因子指标系列ID"`
+//		EdbInfoId                     int       `description:"指标ID"`
+//		EdbUsed                       int       `description:"指标是否使用: 0-否; 1-是"`
+//		CreateTime                    time.Time `description:"创建时间"`
+//		ModifyTime                    time.Time `description:"修改时间"`
+//	}
 type FactorEdbSeriesChartMapping struct {
-	FactorEdbSeriesChartMappingId int       `orm:"column(factor_edb_series_chart_mapping_id);pk"`
-	ChartInfoId                   int       `description:"图表ID"`
-	Source                        int       `description:"图表来源, 同chart_info表source"`
-	CalculateType                 int       `description:"计算方式: 1-相关性"`
-	CalculatePars                 string    `description:"计算参数-JSON(如计算窗口等)"`
-	CalculateData                 string    `description:"计算数据-JSON(如相关性矩阵等)"`
-	FactorEdbSeriesId             int       `description:"因子指标系列ID"`
-	EdbInfoId                     int       `description:"指标ID"`
-	EdbUsed                       int       `description:"指标是否使用: 0-否; 1-是"`
-	CreateTime                    time.Time `description:"创建时间"`
-	ModifyTime                    time.Time `description:"修改时间"`
+	FactorEdbSeriesChartMappingId int       `gorm:"column:factor_edb_series_chart_mapping_id;primaryKey" description:"因子指标系列图表映射ID" orm:"column(factor_edb_series_chart_mapping_id);pk"`
+	ChartInfoId                   int       `gorm:"column:chart_info_id" description:"图表ID"`
+	Source                        int       `gorm:"column:source" description:"图表来源, 同chart_info表source"`
+	CalculateType                 int       `gorm:"column:calculate_type" description:"计算方式: 1-相关性"`
+	CalculatePars                 string    `gorm:"column:calculate_pars" description:"计算参数-JSON(如计算窗口等)"`
+	CalculateData                 string    `gorm:"column:calculate_data" description:"计算数据-JSON(如相关性矩阵等)"`
+	FactorEdbSeriesId             int       `gorm:"column:factor_edb_series_id" description:"因子指标系列ID"`
+	EdbInfoId                     int       `gorm:"column:edb_info_id" description:"指标ID"`
+	EdbUsed                       int       `gorm:"column:edb_used" description:"指标是否使用: 0-否; 1-是"`
+	CreateTime                    time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime                    time.Time `gorm:"column:modify_time" description:"修改时间"`
 }
 
 func (m *FactorEdbSeriesChartMapping) TableName() string {
@@ -62,12 +76,8 @@ func (m *FactorEdbSeriesChartMapping) Cols() MultipleFactorSeriesChartMappingCol
 }
 
 func (m *FactorEdbSeriesChartMapping) Create() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.FactorEdbSeriesChartMappingId = int(id)
+	o := global.DmSQL["data"]
+	err = o.Create(m).Error
 	return
 }
 
@@ -75,21 +85,21 @@ func (m *FactorEdbSeriesChartMapping) CreateMulti(items []*FactorEdbSeriesChartM
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.InsertMulti(len(items), items)
+	o := global.DmSQL["data"]
+	err = o.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(m, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(m).Select(cols).Updates(m).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) Remove() (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	_, err = o.Raw(sql, m.FactorEdbSeriesChartMappingId).Exec()
+	err = o.Exec(sql, m.FactorEdbSeriesChartMappingId).Error
 	return
 }
 
@@ -97,39 +107,39 @@ func (m *FactorEdbSeriesChartMapping) MultiRemove(ids []int) (err error) {
 	if len(ids) == 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
-	_, err = o.Raw(sql, ids).Exec()
+	err = o.Exec(sql, ids).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) GetItemById(id int) (item *FactorEdbSeriesChartMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = o.Raw(sql, id).First(&item).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *FactorEdbSeriesChartMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	order := ``
 	if orderRule != "" {
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = o.Raw(sql, pars).First(&item).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = o.Raw(sql, pars).Scan(&count).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*FactorEdbSeriesChartMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -139,12 +149,12 @@ func (m *FactorEdbSeriesChartMapping) GetItemsByCondition(condition string, pars
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars).Scan(&items).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*FactorEdbSeriesChartMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -154,21 +164,133 @@ func (m *FactorEdbSeriesChartMapping) GetPageItemsByCondition(condition string,
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	err = o.Raw(sql, pars, startSize, pageSize).Scan(&items).Error
 	return
 }
 
 // GetDistinctSeriesIdByChartId 获取图表关联的系列ID
 func (m *FactorEdbSeriesChartMapping) GetDistinctSeriesIdByChartId(chartId int) (seriesIds []int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`SELECT DISTINCT %s FROM %s WHERE %s = ?`, m.Cols().FactorEdbSeriesId, m.TableName(), m.Cols().ChartInfoId)
-	_, err = o.Raw(sql, chartId).QueryRows(&seriesIds)
+	err = o.Raw(sql, chartId).Scan(&seriesIds).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) GetItemByChartInfoId(id int) (item *FactorEdbSeriesChartMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().ChartInfoId)
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = o.Raw(sql, id).First(&item).Error
 	return
 }
+
+// func (m *FactorEdbSeriesChartMapping) Create() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	id, err := o.Insert(m)
+// 	if err != nil {
+// 		return
+// 	}
+// 	m.FactorEdbSeriesChartMappingId = int(id)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesChartMapping) CreateMulti(items []*FactorEdbSeriesChartMapping) (err error) {
+// 	if len(items) == 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.InsertMulti(len(items), items)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesChartMapping) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(m, cols...)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesChartMapping) Remove() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+// 	_, err = o.Raw(sql, m.FactorEdbSeriesChartMappingId).Exec()
+// 	return
+// }
+
+// func (m *FactorEdbSeriesChartMapping) MultiRemove(ids []int) (err error) {
+// 	if len(ids) == 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
+// 	_, err = o.Raw(sql, ids).Exec()
+// 	return
+// }
+
+// func (m *FactorEdbSeriesChartMapping) GetItemById(id int) (item *FactorEdbSeriesChartMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+// 	err = o.Raw(sql, id).QueryRow(&item)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesChartMapping) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *FactorEdbSeriesChartMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	order := ``
+// 	if orderRule != "" {
+// 		order = ` ORDER BY ` + orderRule
+// 	}
+// 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
+// 	err = o.Raw(sql, pars).QueryRow(&item)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesChartMapping) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
+// 	err = o.Raw(sql, pars).QueryRow(&count)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesChartMapping) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*FactorEdbSeriesChartMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	fields := strings.Join(fieldArr, ",")
+// 	if len(fieldArr) == 0 {
+// 		fields = `*`
+// 	}
+// 	order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
+// 	if orderRule != "" {
+// 		order = ` ORDER BY ` + orderRule
+// 	}
+// 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+// 	_, err = o.Raw(sql, pars).QueryRows(&items)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesChartMapping) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*FactorEdbSeriesChartMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	fields := strings.Join(fieldArr, ",")
+// 	if len(fieldArr) == 0 {
+// 		fields = `*`
+// 	}
+// 	order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
+// 	if orderRule != "" {
+// 		order = ` ORDER BY ` + orderRule
+// 	}
+// 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
+// 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+// 	return
+// }
+
+// // GetDistinctSeriesIdByChartId 获取图表关联的系列ID
+// func (m *FactorEdbSeriesChartMapping) GetDistinctSeriesIdByChartId(chartId int) (seriesIds []int, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`SELECT DISTINCT %s FROM %s WHERE %s = ?`, m.Cols().FactorEdbSeriesId, m.TableName(), m.Cols().ChartInfoId)
+// 	_, err = o.Raw(sql, chartId).QueryRows(&seriesIds)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesChartMapping) GetItemByChartInfoId(id int) (item *FactorEdbSeriesChartMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().ChartInfoId)
+// 	err = o.Raw(sql, id).QueryRow(&item)
+// 	return
+// }

+ 175 - 40
models/data_manage/factor_edb_series_mapping.go

@@ -1,21 +1,31 @@
 package data_manage
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
 
+// FactorEdbSeriesMapping 因子指标系列-指标关联表
+// type FactorEdbSeriesMapping struct {
+// 	FactorEdbSeriesMappingId int       `orm:"column(factor_edb_series_mapping_id);pk"`
+// 	FactorEdbSeriesId        int       `description:"因子指标系列ID"`
+// 	EdbInfoId                int       `description:"指标ID"`
+// 	EdbCode                  string    `description:"指标编码"`
+// 	CreateTime               time.Time `description:"创建时间"`
+// 	ModifyTime               time.Time `description:"修改时间"`
+// }
+
 // FactorEdbSeriesMapping 因子指标系列-指标关联表
 type FactorEdbSeriesMapping struct {
-	FactorEdbSeriesMappingId int       `orm:"column(factor_edb_series_mapping_id);pk"`
-	FactorEdbSeriesId        int       `description:"因子指标系列ID"`
-	EdbInfoId                int       `description:"指标ID"`
-	EdbCode                  string    `description:"指标编码"`
-	CreateTime               time.Time `description:"创建时间"`
-	ModifyTime               time.Time `description:"修改时间"`
+	FactorEdbSeriesMappingId int       `gorm:"column:factor_edb_series_mapping_id;primaryKey" description:"因子指标系列映射ID" orm:"column(factor_edb_series_mapping_id);pk"`
+	FactorEdbSeriesId        int       `gorm:"column:factor_edb_series_id" description:"因子指标系列ID"`
+	EdbInfoId                int       `gorm:"column:edb_info_id" description:"指标ID"`
+	EdbCode                  string    `gorm:"column:edb_code" description:"指标编码"`
+	CreateTime               time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime               time.Time `gorm:"column:modify_time" description:"修改时间"`
 }
 
 func (m *FactorEdbSeriesMapping) TableName() string {
@@ -43,12 +53,8 @@ func (m *FactorEdbSeriesMapping) Cols() FactorEdbSeriesMappingCols {
 }
 
 func (m *FactorEdbSeriesMapping) Create() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.FactorEdbSeriesMappingId = int(id)
+	o := global.DmSQL["data"]
+	err = o.Create(m).Error
 	return
 }
 
@@ -56,21 +62,21 @@ func (m *FactorEdbSeriesMapping) CreateMulti(items []*FactorEdbSeriesMapping) (e
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.InsertMulti(len(items), items)
+	o := global.DmSQL["data"]
+	err = o.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }
 
 func (m *FactorEdbSeriesMapping) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(m, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(m).Select(cols).Updates(m).Error
 	return
 }
 
 func (m *FactorEdbSeriesMapping) Remove() (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	_, err = o.Raw(sql, m.FactorEdbSeriesMappingId).Exec()
+	err = o.Exec(sql, m.FactorEdbSeriesMappingId).Error
 	return
 }
 
@@ -78,9 +84,9 @@ func (m *FactorEdbSeriesMapping) MultiRemove(ids []int) (err error) {
 	if len(ids) == 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
-	_, err = o.Raw(sql, ids).Exec()
+	err = o.Exec(sql, ids).Error
 	return
 }
 
@@ -88,39 +94,39 @@ func (m *FactorEdbSeriesMapping) RemoveByCondition(condition string, pars []inte
 	if condition == "" {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
-	_, err = o.Raw(sql, pars).Exec()
+	err = o.Exec(sql, pars).Error
 	return
 }
 
 func (m *FactorEdbSeriesMapping) GetItemById(id int) (item *FactorEdbSeriesMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = o.Raw(sql, id).First(&item).Error
 	return
 }
 
 func (m *FactorEdbSeriesMapping) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *FactorEdbSeriesMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	order := ``
 	if orderRule != "" {
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = o.Raw(sql, pars).First(&item).Error
 	return
 }
 
 func (m *FactorEdbSeriesMapping) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = o.Raw(sql, pars).Scan(&count).Error
 	return
 }
 
 func (m *FactorEdbSeriesMapping) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*FactorEdbSeriesMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -130,12 +136,12 @@ func (m *FactorEdbSeriesMapping) GetItemsByCondition(condition string, pars []in
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars).Scan(&items).Error
 	return
 }
 
 func (m *FactorEdbSeriesMapping) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*FactorEdbSeriesMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -145,17 +151,134 @@ func (m *FactorEdbSeriesMapping) GetPageItemsByCondition(condition string, pars
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	err = o.Raw(sql, pars, startSize, pageSize).Scan(&items).Error
 	return
 }
 
+// func (m *FactorEdbSeriesMapping) Create() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	id, err := o.Insert(m)
+// 	if err != nil {
+// 		return
+// 	}
+// 	m.FactorEdbSeriesMappingId = int(id)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesMapping) CreateMulti(items []*FactorEdbSeriesMapping) (err error) {
+// 	if len(items) == 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.InsertMulti(len(items), items)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesMapping) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(m, cols...)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesMapping) Remove() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+// 	_, err = o.Raw(sql, m.FactorEdbSeriesMappingId).Exec()
+// 	return
+// }
+
+// func (m *FactorEdbSeriesMapping) MultiRemove(ids []int) (err error) {
+// 	if len(ids) == 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
+// 	_, err = o.Raw(sql, ids).Exec()
+// 	return
+// }
+
+// func (m *FactorEdbSeriesMapping) RemoveByCondition(condition string, pars []interface{}) (err error) {
+// 	if condition == "" {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
+// 	_, err = o.Raw(sql, pars).Exec()
+// 	return
+// }
+
+// func (m *FactorEdbSeriesMapping) GetItemById(id int) (item *FactorEdbSeriesMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+// 	err = o.Raw(sql, id).QueryRow(&item)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesMapping) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *FactorEdbSeriesMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	order := ``
+// 	if orderRule != "" {
+// 		order = ` ORDER BY ` + orderRule
+// 	}
+// 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
+// 	err = o.Raw(sql, pars).QueryRow(&item)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesMapping) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
+// 	err = o.Raw(sql, pars).QueryRow(&count)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesMapping) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*FactorEdbSeriesMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	fields := strings.Join(fieldArr, ",")
+// 	if len(fieldArr) == 0 {
+// 		fields = `*`
+// 	}
+// 	order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
+// 	if orderRule != "" {
+// 		order = ` ORDER BY ` + orderRule
+// 	}
+// 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+// 	_, err = o.Raw(sql, pars).QueryRows(&items)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesMapping) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*FactorEdbSeriesMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	fields := strings.Join(fieldArr, ",")
+// 	if len(fieldArr) == 0 {
+// 		fields = `*`
+// 	}
+// 	order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
+// 	if orderRule != "" {
+// 		order = ` ORDER BY ` + orderRule
+// 	}
+// 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
+// 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+// 	return
+// }
+
+// FactorEdbSeriesMappingItem 因子指标系列-指标关联信息
+//
+//	type FactorEdbSeriesMappingItem struct {
+//		SeriesId  int    `description:"因子指标系列ID"`
+//		EdbInfoId int    `description:"指标ID"`
+//		EdbCode   string `description:"指标编码"`
+//		EdbName   string `description:"指标名称"`
+//		EdbNameEn string `description:"指标名称-英文"`
+//	}
+
 // FactorEdbSeriesMappingItem 因子指标系列-指标关联信息
 type FactorEdbSeriesMappingItem struct {
-	SeriesId  int    `description:"因子指标系列ID"`
-	EdbInfoId int    `description:"指标ID"`
-	EdbCode   string `description:"指标编码"`
-	EdbName   string `description:"指标名称"`
-	EdbNameEn string `description:"指标名称-英文"`
+	SeriesId  int    `gorm:"column:series_id" description:"因子指标系列ID"`
+	EdbInfoId int    `gorm:"column:edb_info_id" description:"指标ID"`
+	EdbCode   string `gorm:"column:edb_code" description:"指标编码"`
+	EdbName   string `gorm:"column:edb_name" description:"指标名称"`
+	EdbNameEn string `gorm:"column:edb_name_en" description:"指标名称-英文"`
 }
 
 func (m *FactorEdbSeriesMapping) Format2Item() (item *FactorEdbSeriesMappingItem) {
@@ -199,12 +322,24 @@ func (m *FactorEdbSeriesMapping) Format2Item() (item *FactorEdbSeriesMappingItem
 
 // GetChartUsedFactorSeriesEdb 获取图表引用的系列指标
 func GetChartUsedFactorSeriesEdb(chartId int) (items []*FactorEdbSeriesMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	chartOb := new(FactorEdbSeriesChartMapping)
 	edbOb := new(FactorEdbSeriesMapping)
 	sql := fmt.Sprintf(`SELECT b.* FROM %s AS a
 	JOIN %s AS b ON a.%s = b.%s AND a.%s = b.%s
 	WHERE a.%s = ? ORDER BY %s ASC`, chartOb.TableName(), edbOb.TableName(), chartOb.Cols().FactorEdbSeriesId, edbOb.Cols().FactorEdbSeriesId, chartOb.Cols().EdbInfoId, edbOb.Cols().EdbInfoId, chartOb.Cols().ChartInfoId, edbOb.Cols().FactorEdbSeriesId)
-	_, err = o.Raw(sql, chartId).QueryRows(&items)
+	err = o.Raw(sql, chartId).Scan(&items).Error
 	return
 }
+
+// GetChartUsedFactorSeriesEdb 获取图表引用的系列指标
+// func GetChartUsedFactorSeriesEdb(chartId int) (items []*FactorEdbSeriesMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	chartOb := new(FactorEdbSeriesChartMapping)
+// 	edbOb := new(FactorEdbSeriesMapping)
+// 	sql := fmt.Sprintf(`SELECT b.* FROM %s AS a
+// 	JOIN %s AS b ON a.%s = b.%s AND a.%s = b.%s
+// 	WHERE a.%s = ? ORDER BY %s ASC`, chartOb.TableName(), edbOb.TableName(), chartOb.Cols().FactorEdbSeriesId, edbOb.Cols().FactorEdbSeriesId, chartOb.Cols().EdbInfoId, edbOb.Cols().EdbInfoId, chartOb.Cols().ChartInfoId, edbOb.Cols().FactorEdbSeriesId)
+// 	_, err = o.Raw(sql, chartId).QueryRows(&items)
+// 	return
+// }

+ 85 - 25
models/data_manage/future_good/chart_info_future_good_profit.go

@@ -1,21 +1,33 @@
 package future_good
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
 
+// ChartInfoFutureGoodProfit 商品利润图表-扩展信息
+//
+//	type ChartInfoFutureGoodProfit struct {
+//		ChartInfoId  int       `orm:"column(chart_info_id);pk" description:"商品利润图表ID(chart_info表source=5的)"`
+//		ProfitName   string    `description:"利润名称"`
+//		ProfitNameEn string    `description:"利润英文名称"`
+//		XValue       string    `description:"X轴数据值"`
+//		YValue       string    `description:"Y轴数据值"`
+//		CreateTime   time.Time `description:"创建时间"`
+//		ModifyTime   time.Time `description:"更新时间"`
+//	}
+
 // ChartInfoFutureGoodProfit 商品利润图表-扩展信息
 type ChartInfoFutureGoodProfit struct {
-	ChartInfoId  int       `orm:"column(chart_info_id);pk" description:"商品利润图表ID(chart_info表source=5的)"`
-	ProfitName   string    `description:"利润名称"`
-	ProfitNameEn string    `description:"利润英文名称"`
-	XValue       string    `description:"X轴数据值"`
-	YValue       string    `description:"Y轴数据值"`
-	CreateTime   time.Time `description:"创建时间"`
-	ModifyTime   time.Time `description:"更新时间"`
+	ChartInfoId  int       `gorm:"column:chart_info_id;primaryKey" description:"商品利润图表ID(chart_info表source=5的)" orm:"column(chart_info_id);pk"`
+	ProfitName   string    `gorm:"column:profit_name" description:"利润名称"`
+	ProfitNameEn string    `gorm:"column:profit_name_en" description:"利润英文名称"`
+	XValue       string    `gorm:"column:x_value" description:"X轴数据值"`
+	YValue       string    `gorm:"column:y_value" description:"Y轴数据值"`
+	CreateTime   time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime   time.Time `gorm:"column:modify_time" description:"更新时间"`
 }
 
 type CorrelationInfo struct {
@@ -36,44 +48,40 @@ func (m *ChartInfoFutureGoodProfit) TableName() string {
 }
 
 func (m *ChartInfoFutureGoodProfit) Create() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Insert(m)
-	if err != nil {
-		return
-	}
-	//m.CorrelationChartInfoId = int(id)
+	o := global.DmSQL["data"]
+	err = o.Create(m).Error
 	return
 }
 
 func (m *ChartInfoFutureGoodProfit) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(m, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(m).Select(cols).Updates(m).Error
 	return
 }
 
 func (m *ChartInfoFutureGoodProfit) Delete() (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE chart_info_id = ? LIMIT 1`, m.TableName())
-	_, err = o.Raw(sql, m.ChartInfoId).Exec()
+	err = o.Exec(sql, m.ChartInfoId).Error
 	return
 }
 
 func (m *ChartInfoFutureGoodProfit) GetItemById(id int) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE chart_info_id = ? LIMIT 1`, m.TableName())
-	err = o.Raw(sql, id).QueryRow(&m)
+	err = o.Raw(sql, id).First(&m).Error
 	return
 }
 
 func (m *ChartInfoFutureGoodProfit) GetItemByCondition(condition string, pars []interface{}) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&m)
+	o := global.DmSQL["data"]
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s `, m.TableName(), condition)
+	err = o.Raw(sql, pars).First(&m).Error
 	return
 }
 
 func (m *ChartInfoFutureGoodProfit) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*ChartInfoFutureGoodProfit, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -83,6 +91,58 @@ func (m *ChartInfoFutureGoodProfit) GetItemsByCondition(condition string, pars [
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars).Scan(&items).Error
 	return
 }
+
+// func (m *ChartInfoFutureGoodProfit) Create() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Insert(m)
+// 	if err != nil {
+// 		return
+// 	}
+// 	//m.CorrelationChartInfoId = int(id)
+// 	return
+// }
+
+// func (m *ChartInfoFutureGoodProfit) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(m, cols...)
+// 	return
+// }
+
+// func (m *ChartInfoFutureGoodProfit) Delete() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`DELETE FROM %s WHERE chart_info_id = ? LIMIT 1`, m.TableName())
+// 	_, err = o.Raw(sql, m.ChartInfoId).Exec()
+// 	return
+// }
+
+// func (m *ChartInfoFutureGoodProfit) GetItemById(id int) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE chart_info_id = ? LIMIT 1`, m.TableName())
+// 	err = o.Raw(sql, id).QueryRow(&m)
+// 	return
+// }
+
+// func (m *ChartInfoFutureGoodProfit) GetItemByCondition(condition string, pars []interface{}) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
+// 	err = o.Raw(sql, pars).QueryRow(&m)
+// 	return
+// }
+
+// func (m *ChartInfoFutureGoodProfit) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*ChartInfoFutureGoodProfit, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	fields := strings.Join(fieldArr, ",")
+// 	if len(fieldArr) == 0 {
+// 		fields = `*`
+// 	}
+// 	order := ``
+// 	if orderRule != "" {
+// 		order = ` ORDER BY ` + orderRule
+// 	}
+// 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+// 	_, err = o.Raw(sql, pars).QueryRows(&items)
+// 	return
+// }

+ 218 - 57
models/data_manage/future_good/future_good_chart_classify.go

@@ -1,169 +1,330 @@
 package future_good
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
+// FutureGoodChartClassify future_good_chart表格分类
+//
+//	type FutureGoodChartClassify struct {
+//		FutureGoodChartClassifyId   int       `orm:"column(future_good_chart_classify_id);pk"`
+//		FutureGoodChartClassifyName string    `description:"分类名称"`
+//		ParentId                    int       `description:"父级id"`
+//		SysUserId                   int       `description:"创建人id"`
+//		SysUserRealName             string    `description:"创建人姓名"`
+//		Level                       int       `description:"层级"`
+//		UniqueCode                  string    `description:"唯一编码"`
+//		Sort                        int       `description:"排序字段,越小越靠前,默认值:10"`
+//		IsDelete                    int       `description:"排序字段,越小越靠前,默认值:10"`
+//		CreateTime                  time.Time `description:"创建时间"`
+//		ModifyTime                  time.Time `description:"修改时间"`
+//	}
+
 // FutureGoodChartClassify future_good_chart表格分类
 type FutureGoodChartClassify struct {
-	FutureGoodChartClassifyId   int       `orm:"column(future_good_chart_classify_id);pk"`
-	FutureGoodChartClassifyName string    `description:"分类名称"`
-	ParentId                    int       `description:"父级id"`
-	SysUserId                   int       `description:"创建人id"`
-	SysUserRealName             string    `description:"创建人姓名"`
-	Level                       int       `description:"层级"`
-	UniqueCode                  string    `description:"唯一编码"`
-	Sort                        int       `description:"排序字段,越小越靠前,默认值:10"`
-	IsDelete                    int       `description:"排序字段,越小越靠前,默认值:10"`
-	CreateTime                  time.Time `description:"创建时间"`
-	ModifyTime                  time.Time `description:"修改时间"`
+	FutureGoodChartClassifyId   int       `gorm:"column:future_good_chart_classify_id;primaryKey" description:"分类ID" orm:"column(future_good_chart_classify_id);pk"`
+	FutureGoodChartClassifyName string    `gorm:"column:future_good_chart_classify_name" description:"分类名称"`
+	ParentId                    int       `gorm:"column:parent_id" description:"父级id"`
+	SysUserId                   int       `gorm:"column:sys_user_id" description:"创建人id"`
+	SysUserRealName             string    `gorm:"column:sys_user_real_name" description:"创建人姓名"`
+	Level                       int       `gorm:"column:level" description:"层级"`
+	UniqueCode                  string    `gorm:"column:unique_code" description:"唯一编码"`
+	Sort                        int       `gorm:"column:sort" description:"排序字段,越小越靠前,默认值:10"`
+	IsDelete                    int       `gorm:"column:is_delete" description:"是否删除,0:未删除,1:已删除"`
+	CreateTime                  time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime                  time.Time `gorm:"column:modify_time" description:"修改时间"`
 }
 
 // AddFutureGoodChartClassify 添加future_good_chart分类
 func AddFutureGoodChartClassify(item *FutureGoodChartClassify) (lastId int64, err error) {
-	o := orm.NewOrmUsingDB("data")
-	lastId, err = o.Insert(item)
+	o := global.DmSQL["data"]
+	err = o.Create(item).Error
 	return
 }
 
 // GetFutureGoodChartClassifyCount 获取同级分类下存在同名分类的数量
 func GetFutureGoodChartClassifyCount(FutureGoodChartClassifyName string, parentId int) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT COUNT(1) AS count FROM future_good_chart_classify WHERE parent_id=? AND future_good_chart_classify_name=? AND is_delete=0 `
-	err = o.Raw(sql, parentId, FutureGoodChartClassifyName).QueryRow(&count)
+	err = o.Raw(sql, parentId, FutureGoodChartClassifyName).Scan(&count).Error
 	return
 }
 
 func GetFutureGoodChartClassifyById(classifyId int) (item *FutureGoodChartClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM future_good_chart_classify WHERE future_good_chart_classify_id=? AND is_delete=0 `
-	err = o.Raw(sql, classifyId).QueryRow(&item)
+	err = o.Raw(sql, classifyId).First(&item).Error
 	return
 }
 
 func GetFutureGoodChartClassifyByParentId(parentId int) (items []*FutureGoodChartClassifyItems, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM future_good_chart_classify WHERE parent_id=? AND is_delete=0 order by sort asc,future_good_chart_classify_id asc`
-	_, err = o.Raw(sql, parentId).QueryRows(&items)
+	err = o.Raw(sql, parentId).Scan(&items).Error
 	return
 }
 
 func GetFutureGoodChartClassifyAll() (items []*FutureGoodChartClassifyItems, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM future_good_chart_classify WHERE parent_id<>0 AND is_delete=0 order by sort asc,future_good_chart_classify_id asc`
-	_, err = o.Raw(sql).QueryRows(&items)
+	err = o.Raw(sql).Scan(&items).Error
 	return
 }
 
+// AddFutureGoodChartClassify 添加future_good_chart分类
+// func AddFutureGoodChartClassify(item *FutureGoodChartClassify) (lastId int64, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	lastId, err = o.Insert(item)
+// 	return
+// }
+
+// // GetFutureGoodChartClassifyCount 获取同级分类下存在同名分类的数量
+// func GetFutureGoodChartClassifyCount(FutureGoodChartClassifyName string, parentId int) (count int, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT COUNT(1) AS count FROM future_good_chart_classify WHERE parent_id=? AND future_good_chart_classify_name=? AND is_delete=0 `
+// 	err = o.Raw(sql, parentId, FutureGoodChartClassifyName).QueryRow(&count)
+// 	return
+// }
+
+// func GetFutureGoodChartClassifyById(classifyId int) (item *FutureGoodChartClassify, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM future_good_chart_classify WHERE future_good_chart_classify_id=? AND is_delete=0 `
+// 	err = o.Raw(sql, classifyId).QueryRow(&item)
+// 	return
+// }
+
+// func GetFutureGoodChartClassifyByParentId(parentId int) (items []*FutureGoodChartClassifyItems, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM future_good_chart_classify WHERE parent_id=? AND is_delete=0 order by sort asc,future_good_chart_classify_id asc`
+// 	_, err = o.Raw(sql, parentId).QueryRows(&items)
+// 	return
+// }
+
+// func GetFutureGoodChartClassifyAll() (items []*FutureGoodChartClassifyItems, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM future_good_chart_classify WHERE parent_id<>0 AND is_delete=0 order by sort asc,future_good_chart_classify_id asc`
+// 	_, err = o.Raw(sql).QueryRows(&items)
+// 	return
+// }
+
+//	type FutureGoodChartClassifyItems struct {
+//		FutureGoodChartClassifyId   int `description:"分类id"`
+//		FutureGoodChartInfoId       int `description:"表格id"`
+//		FutureGoodChartClassifyName string
+//		ParentId                    int
+//		Level                       int    `description:"层级"`
+//		Sort                        int    `description:"排序字段,越小越靠前,默认值:10"`
+//		UniqueCode                  string `description:"唯一编码"`
+//		SysUserId                   int    `description:"创建人id"`
+//		SysUserRealName             string `description:"创建人姓名"`
+//		StartDate                   string `description:"自定义开始日期"`
+//		Children                    []*FutureGoodChartClassifyItems
+//	}
 type FutureGoodChartClassifyItems struct {
-	FutureGoodChartClassifyId   int `description:"分类id"`
-	FutureGoodChartInfoId       int `description:"表格id"`
-	FutureGoodChartClassifyName string
-	ParentId                    int
-	Level                       int    `description:"层级"`
-	Sort                        int    `description:"排序字段,越小越靠前,默认值:10"`
-	UniqueCode                  string `description:"唯一编码"`
-	SysUserId                   int    `description:"创建人id"`
-	SysUserRealName             string `description:"创建人姓名"`
-	StartDate                   string `description:"自定义开始日期"`
-	Children                    []*FutureGoodChartClassifyItems
+	FutureGoodChartClassifyId   int                             `gorm:"column:future_good_chart_classify_id" description:"分类id"`
+	FutureGoodChartInfoId       int                             `gorm:"column:future_good_chart_info_id" description:"表格id"`
+	FutureGoodChartClassifyName string                          `gorm:"column:future_good_chart_classify_name"`
+	ParentId                    int                             `gorm:"column:parent_id"`
+	Level                       int                             `gorm:"column:level" description:"层级"`
+	Sort                        int                             `gorm:"column:sort" description:"排序字段,越小越靠前,默认值:10"`
+	UniqueCode                  string                          `gorm:"column:unique_code" description:"唯一编码"`
+	SysUserId                   int                             `gorm:"column:sys_user_id" description:"创建人id"`
+	SysUserRealName             string                          `gorm:"column:sys_user_real_name" description:"创建人姓名"`
+	StartDate                   string                          `gorm:"column:start_date" description:"自定义开始日期"`
+	Children                    []*FutureGoodChartClassifyItems `description:"子分类列表"`
 }
 
 func GetFutureGoodChartClassifyByCondition(condition string, pars []interface{}) (item *FutureGoodChartClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM future_good_chart_classify WHERE 1=1 AND is_delete=0 `
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = o.Raw(sql, pars).First(&item).Error
 	return
 }
 
 // GetNextFutureGoodChartClassifyByCondition 获取下一个分类
 func GetNextFutureGoodChartClassifyByCondition(condition string, pars []interface{}) (item *FutureGoodChartClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM future_good_chart_classify WHERE 1=1 AND is_delete=0 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += " ORDER BY sort asc , create_time ASC LIMIT 1 "
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = o.Raw(sql, pars).First(&item).Error
 	return
 }
 
 // GetFirstFutureGoodChartClassifyByParentId 获取当前父级图表分类下的排序第一条的数据
 func GetFirstFutureGoodChartClassifyByParentId(parentId int) (item *FutureGoodChartClassify, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM future_good_chart_classify WHERE parent_id=? AND is_delete=0 order by sort asc,future_good_chart_classify_id asc limit 1`
-	err = o.Raw(sql, parentId).QueryRow(&item)
+	err = o.Raw(sql, parentId).First(&item).Error
 	return
 }
 
 // UpdateFutureGoodChartClassifySortByParentId 根据图表父类id更新排序
 func UpdateFutureGoodChartClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` update future_good_chart_classify set sort = ` + updateSort + ` WHERE parent_id=? and sort > ? AND is_delete=0 `
 	if classifyId > 0 {
 		sql += ` or ( future_good_chart_classify_id > ` + fmt.Sprint(classifyId) + ` and sort= ` + fmt.Sprint(nowSort) + `)`
 	}
-	_, err = o.Raw(sql, parentId, nowSort).Exec()
+	err = o.Exec(sql, parentId, nowSort).Error
 	return
 }
 
 // Update 更新图表分类基础信息
 func (FutureGoodChartClassify *FutureGoodChartClassify) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(FutureGoodChartClassify, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(FutureGoodChartClassify).Select(cols).Updates(FutureGoodChartClassify).Error
 	return
 }
 
 // GetFutureGoodChartClassifyMaxSort 获取图表分类下最大的排序数
 func GetFutureGoodChartClassifyMaxSort(parentId int) (sort int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT Max(sort) AS sort FROM future_good_chart_classify WHERE parent_id=? AND is_delete=0 `
-	err = o.Raw(sql, parentId).QueryRow(&sort)
+	err = o.Raw(sql, parentId).Scan(&sort).Error
 	return
 }
 
+// func GetFutureGoodChartClassifyByCondition(condition string, pars []interface{}) (item *FutureGoodChartClassify, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM future_good_chart_classify WHERE 1=1 AND is_delete=0 `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	err = o.Raw(sql, pars).QueryRow(&item)
+// 	return
+// }
+
+// // GetNextFutureGoodChartClassifyByCondition 获取下一个分类
+// func GetNextFutureGoodChartClassifyByCondition(condition string, pars []interface{}) (item *FutureGoodChartClassify, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM future_good_chart_classify WHERE 1=1 AND is_delete=0 `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	sql += " ORDER BY sort asc , create_time ASC LIMIT 1 "
+// 	err = o.Raw(sql, pars).QueryRow(&item)
+// 	return
+// }
+
+// // GetFirstFutureGoodChartClassifyByParentId 获取当前父级图表分类下的排序第一条的数据
+// func GetFirstFutureGoodChartClassifyByParentId(parentId int) (item *FutureGoodChartClassify, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM future_good_chart_classify WHERE parent_id=? AND is_delete=0 order by sort asc,future_good_chart_classify_id asc limit 1`
+// 	err = o.Raw(sql, parentId).QueryRow(&item)
+// 	return
+// }
+
+// // UpdateFutureGoodChartClassifySortByParentId 根据图表父类id更新排序
+// func UpdateFutureGoodChartClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` update future_good_chart_classify set sort = ` + updateSort + ` WHERE parent_id=? and sort > ? AND is_delete=0 `
+// 	if classifyId > 0 {
+// 		sql += ` or ( future_good_chart_classify_id > ` + fmt.Sprint(classifyId) + ` and sort= ` + fmt.Sprint(nowSort) + `)`
+// 	}
+// 	_, err = o.Raw(sql, parentId, nowSort).Exec()
+// 	return
+// }
+
+// // Update 更新图表分类基础信息
+// func (FutureGoodChartClassify *FutureGoodChartClassify) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(FutureGoodChartClassify, cols...)
+// 	return
+// }
+
+// // GetFutureGoodChartClassifyMaxSort 获取图表分类下最大的排序数
+// func GetFutureGoodChartClassifyMaxSort(parentId int) (sort int, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT Max(sort) AS sort FROM future_good_chart_classify WHERE parent_id=? AND is_delete=0 `
+// 	err = o.Raw(sql, parentId).QueryRow(&sort)
+// 	return
+// }
+
+//	type FutureGoodChartClassifyView struct {
+//		FutureGoodChartClassifyId   int    `orm:"column(future_good_chart_classify_id);pk"`
+//		FutureGoodChartClassifyName string `description:"分类名称"`
+//		ParentId                    int    `description:"父级id"`
+//	}
 type FutureGoodChartClassifyView struct {
-	FutureGoodChartClassifyId   int    `orm:"column(future_good_chart_classify_id);pk"`
-	FutureGoodChartClassifyName string `description:"分类名称"`
-	ParentId                    int    `description:"父级id"`
+	FutureGoodChartClassifyId   int    `gorm:"column:future_good_chart_classify_id;primaryKey" description:"分类ID" orm:"column(future_good_chart_classify_id);pk"`
+	FutureGoodChartClassifyName string `gorm:"column:future_good_chart_classify_name" description:"分类名称"`
+	ParentId                    int    `gorm:"column:parent_id" description:"父级id"`
 }
 
 func GetFutureGoodChartClassifyViewById(classifyId int) (item *FutureGoodChartClassifyView, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM future_good_chart_classify WHERE future_good_chart_classify_id=? AND is_delete=0 `
-	err = o.Raw(sql, classifyId).QueryRow(&item)
+	err = o.Raw(sql, classifyId).First(&item).Error
 	return
 }
 
-//用于分类展示
+// 用于分类展示
 func GetChartInfoAll() (items []*FutureGoodChartClassifyItems, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT chart_info_id,chart_classify_id,chart_name AS chart_classify_name,
              unique_code,sys_user_id,sys_user_real_name,date_type,start_date,end_date,chart_type,calendar,season_start_date,season_end_date
             FROM chart_info ORDER BY sort asc,create_time ASC `
-	_, err = o.Raw(sql).QueryRows(&items)
+	err = o.Raw(sql).Scan(&items).Error
 	return
 }
 
 // GetNoContentFutureGoodInfoAll 获取不含content的表格列表 用于分类展示
 func GetNoContentFutureGoodInfoAll() (items []FutureGoodChartClassifyItems, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT excel_info_id,excel_classify_id,excel_name AS excel_classify_name,
              unique_code,sys_user_id,sys_user_real_name
             FROM excel_info where is_delete=0 ORDER BY sort asc,create_time desc `
-	_, err = o.Raw(sql).QueryRows(&items)
+	err = o.Raw(sql).Scan(&items).Error
 	return
 }
 
 // GetFutureGoodChartInfoCountByClassifyId 根据分类id获取名下表格数量
 func GetFutureGoodChartInfoCountByClassifyId(classifyId int) (total int64, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT count(1) total FROM excel_info WHERE excel_classify_id = ? AND is_delete=0 `
-	err = o.Raw(sql, classifyId).QueryRow(&total)
+	err = o.Raw(sql, classifyId).Scan(&total).Error
 	return
 }
+
+// func GetFutureGoodChartClassifyViewById(classifyId int) (item *FutureGoodChartClassifyView, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM future_good_chart_classify WHERE future_good_chart_classify_id=? AND is_delete=0 `
+// 	err = o.Raw(sql, classifyId).QueryRow(&item)
+// 	return
+// }
+
+// // 用于分类展示
+// func GetChartInfoAll() (items []*FutureGoodChartClassifyItems, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT chart_info_id,chart_classify_id,chart_name AS chart_classify_name,
+//              unique_code,sys_user_id,sys_user_real_name,date_type,start_date,end_date,chart_type,calendar,season_start_date,season_end_date
+//             FROM chart_info ORDER BY sort asc,create_time ASC `
+// 	_, err = o.Raw(sql).QueryRows(&items)
+// 	return
+// }
+
+// // GetNoContentFutureGoodInfoAll 获取不含content的表格列表 用于分类展示
+// func GetNoContentFutureGoodInfoAll() (items []FutureGoodChartClassifyItems, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT excel_info_id,excel_classify_id,excel_name AS excel_classify_name,
+//              unique_code,sys_user_id,sys_user_real_name
+//             FROM excel_info where is_delete=0 ORDER BY sort asc,create_time desc `
+// 	_, err = o.Raw(sql).QueryRows(&items)
+// 	return
+// }
+
+// // GetFutureGoodChartInfoCountByClassifyId 根据分类id获取名下表格数量
+// func GetFutureGoodChartInfoCountByClassifyId(classifyId int) (total int64, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT count(1) total FROM excel_info WHERE excel_classify_id = ? AND is_delete=0 `
+// 	err = o.Raw(sql, classifyId).QueryRow(&total)
+// 	return
+// }

+ 137 - 41
models/data_manage/future_good/future_good_edb_info.go

@@ -1,98 +1,182 @@
 package future_good
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_chart_lib/global"
 	"time"
 )
 
+// FutureGoodEdbInfo 期货指标表
+// type FutureGoodEdbInfo struct {
+// 	FutureGoodEdbInfoId int       `orm:"column(future_good_edb_info_id);pk"`
+// 	FutureGoodEdbCode   string    `description:"期货指标code"`
+// 	FutureGoodEdbName   string    `description:"期货指标名称"`
+// 	FutureGoodEdbNameEn string    `description:"期货指标英文名称"`
+// 	ParentId            int       `description:"上级期货id"`
+// 	RegionType          string    `description:"交易所来源,海外还是国内"`
+// 	Exchange            string    `description:"所属交易所"`
+// 	FutureGoodEdbType   int       `description:"指标类型,1:年月是固定的合约;2:只有M+N期的合约,未固定年月"`
+// 	DateSourceId        int       `description:"画图时,日期来源的指标id"`
+// 	Year                int       `description:"所属年份"`
+// 	Month               int       `description:"所属月份"`
+// 	StartDate           string    `description:"起始日期"`
+// 	EndDate             string    `description:"终止日期"`
+// 	MinValue            float64   `description:"最小值"`
+// 	MaxValue            float64   `description:"最大值"`
+// 	LatestValue         float64   `description:"数据最新的值"`
+// 	LatestDate          time.Time `description:"数据最新的日期"`
+// 	ServerUrl           string    `description:"服务器地址"`
+// 	CreateTime          time.Time
+// 	ModifyTime          time.Time
+// }
+
 // FutureGoodEdbInfo 期货指标表
 type FutureGoodEdbInfo struct {
-	FutureGoodEdbInfoId int       `orm:"column(future_good_edb_info_id);pk"`
-	FutureGoodEdbCode   string    `description:"期货指标code"`
-	FutureGoodEdbName   string    `description:"期货指标名称"`
-	FutureGoodEdbNameEn string    `description:"期货指标英文名称"`
-	ParentId            int       `description:"上级期货id"`
-	RegionType          string    `description:"交易所来源,海外还是国内"`
-	Exchange            string    `description:"所属交易所"`
-	FutureGoodEdbType   int       `description:"指标类型,1:年月是固定的合约;2:只有M+N期的合约,未固定年月"`
-	DateSourceId        int       `description:"画图时,日期来源的指标id"`
-	Year                int       `description:"所属年份"`
-	Month               int       `description:"所属月份"`
-	StartDate           string    `description:"起始日期"`
-	EndDate             string    `description:"终止日期"`
-	MinValue            float64   `description:"最小值"`
-	MaxValue            float64   `description:"最大值"`
-	LatestValue         float64   `description:"数据最新的值"`
-	LatestDate          time.Time `description:"数据最新的日期"`
-	ServerUrl           string    `description:"服务器地址"`
-	CreateTime          time.Time
-	ModifyTime          time.Time
+	FutureGoodEdbInfoId int       `gorm:"column:future_good_edb_info_id;primaryKey" description:"期货指标ID" orm:"column(future_good_edb_info_id);pk"`
+	FutureGoodEdbCode   string    `gorm:"column:future_good_edb_code" description:"期货指标code"`
+	FutureGoodEdbName   string    `gorm:"column:future_good_edb_name" description:"期货指标名称"`
+	FutureGoodEdbNameEn string    `gorm:"column:future_good_edb_name_en" description:"期货指标英文名称"`
+	ParentId            int       `gorm:"column:parent_id" description:"上级期货id"`
+	RegionType          string    `gorm:"column:region_type" description:"交易所来源,海外还是国内"`
+	Exchange            string    `gorm:"column:exchange" description:"所属交易所"`
+	FutureGoodEdbType   int       `gorm:"column:future_good_edb_type" description:"指标类型,1:年月是固定的合约;2:只有M+N期的合约,未固定年月"`
+	DateSourceId        int       `gorm:"column:date_source_id" description:"画图时,日期来源的指标id"`
+	Year                int       `gorm:"column:year" description:"所属年份"`
+	Month               int       `gorm:"column:month" description:"所属月份"`
+	StartDate           string    `gorm:"column:start_date" description:"起始日期"`
+	EndDate             string    `gorm:"column:end_date" description:"终止日期"`
+	MinValue            float64   `gorm:"column:min_value" description:"最小值"`
+	MaxValue            float64   `gorm:"column:max_value" description:"最大值"`
+	LatestValue         float64   `gorm:"column:latest_value" description:"数据最新的值"`
+	LatestDate          time.Time `gorm:"column:latest_date" description:"数据最新的日期"`
+	ServerUrl           string    `gorm:"column:server_url" description:"服务器地址"`
+	CreateTime          time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime          time.Time `gorm:"column:modify_time" description:"更新时间"`
 }
 
 // GetFutureGoodEdbInfo 期货指标
 func GetFutureGoodEdbInfo(edbInfoId int) (item *FutureGoodEdbInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM future_good_edb_info WHERE future_good_edb_info_id = ? `
 	sql += ` ORDER BY future_good_edb_info_id DESC `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	err = o.Raw(sql, edbInfoId).First(&item).Error
 	return
 }
 
 // GetFutureGoodEdbInfoByCode 根据期货code获取 期货指标信息
 func GetFutureGoodEdbInfoByCode(futureGoodEdbCode string) (item *FutureGoodEdbInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM future_good_edb_info WHERE future_good_edb_code = ? `
 	sql += ` ORDER BY future_good_edb_info_id DESC `
-	err = o.Raw(sql, futureGoodEdbCode).QueryRow(&item)
+	err = o.Raw(sql, futureGoodEdbCode).First(&item).Error
 	return
 }
 
 // GetFutureGoodEdbInfoList 获取指标数据列表
 func GetFutureGoodEdbInfoList(condition string, pars []interface{}) (list []*FutureGoodEdbInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM future_good_edb_info WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += `ORDER BY future_good_edb_info_id DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = o.Raw(sql, pars).Scan(&list).Error
 	return
 }
 
 // GetAllFutureGoodEdbInfoList 获取指标数据列表
 func GetAllFutureGoodEdbInfoList() (list []*FutureGoodEdbInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM future_good_edb_info  ORDER BY future_good_edb_info_id DESC `
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = o.Raw(sql).Scan(&list).Error
 	return
 }
 
 // GetFutureGoodEdbInfoListByParentId 根据父级ID获取指标数据列表
 func GetFutureGoodEdbInfoListByParentId(parentId int) (list []*FutureGoodEdbInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM future_good_edb_info WHERE parent_id = ? or  future_good_edb_info_id = ? ORDER BY future_good_edb_info_id ASC `
-	_, err = o.Raw(sql, parentId, parentId).QueryRows(&list)
+	err = o.Raw(sql, parentId, parentId).Scan(&list).Error
 	return
 }
 
 // AddFutureGoodEdbInfo 添加期货数据库指标
 func AddFutureGoodEdbInfo(item *FutureGoodEdbInfo) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	lastId, err := o.Insert(item)
-	if err != nil {
-		return
-	}
-	item.FutureGoodEdbInfoId = int(lastId)
+	o := global.DmSQL["data"]
+	err = o.Create(item).Error
 	return
 }
 
 // Update 更新指标基础信息
 func (FutureGoodEdbInfo *FutureGoodEdbInfo) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(FutureGoodEdbInfo, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(FutureGoodEdbInfo).Select(cols).Updates(FutureGoodEdbInfo).Error
 	return
 }
 
+// GetFutureGoodEdbInfo 期货指标
+// func GetFutureGoodEdbInfo(edbInfoId int) (item *FutureGoodEdbInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM future_good_edb_info WHERE future_good_edb_info_id = ? `
+// 	sql += ` ORDER BY future_good_edb_info_id DESC `
+// 	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+// 	return
+// }
+
+// // GetFutureGoodEdbInfoByCode 根据期货code获取 期货指标信息
+// func GetFutureGoodEdbInfoByCode(futureGoodEdbCode string) (item *FutureGoodEdbInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM future_good_edb_info WHERE future_good_edb_code = ? `
+// 	sql += ` ORDER BY future_good_edb_info_id DESC `
+// 	err = o.Raw(sql, futureGoodEdbCode).QueryRow(&item)
+// 	return
+// }
+
+// // GetFutureGoodEdbInfoList 获取指标数据列表
+// func GetFutureGoodEdbInfoList(condition string, pars []interface{}) (list []*FutureGoodEdbInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM future_good_edb_info WHERE 1=1 `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	sql += `ORDER BY future_good_edb_info_id DESC `
+// 	_, err = o.Raw(sql, pars).QueryRows(&list)
+// 	return
+// }
+
+// // GetAllFutureGoodEdbInfoList 获取指标数据列表
+// func GetAllFutureGoodEdbInfoList() (list []*FutureGoodEdbInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM future_good_edb_info  ORDER BY future_good_edb_info_id DESC `
+// 	_, err = o.Raw(sql).QueryRows(&list)
+// 	return
+// }
+
+// // GetFutureGoodEdbInfoListByParentId 根据父级ID获取指标数据列表
+// func GetFutureGoodEdbInfoListByParentId(parentId int) (list []*FutureGoodEdbInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM future_good_edb_info WHERE parent_id = ? or  future_good_edb_info_id = ? ORDER BY future_good_edb_info_id ASC `
+// 	_, err = o.Raw(sql, parentId, parentId).QueryRows(&list)
+// 	return
+// }
+
+// // AddFutureGoodEdbInfo 添加期货数据库指标
+// func AddFutureGoodEdbInfo(item *FutureGoodEdbInfo) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	lastId, err := o.Insert(item)
+// 	if err != nil {
+// 		return
+// 	}
+// 	item.FutureGoodEdbInfoId = int(lastId)
+// 	return
+// }
+
+// // Update 更新指标基础信息
+// func (FutureGoodEdbInfo *FutureGoodEdbInfo) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(FutureGoodEdbInfo, cols...)
+// 	return
+// }
+
 // FutureGoodEdbInfoGroupListResp 期货指标数据列表数据返回
 type FutureGoodEdbInfoGroupListResp struct {
 	FutureGoodEdbInfoId   int
@@ -102,16 +186,28 @@ type FutureGoodEdbInfoGroupListResp struct {
 
 // GetFutureGoodEdbInfoGroupList 获取分組指标数据列表
 func GetFutureGoodEdbInfoGroupList(condition string, pars []interface{}) (list []*FutureGoodEdbInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM future_good_edb_info WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY future_good_edb_info_id DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = o.Raw(sql, pars).Scan(&list).Error
 	return
 }
 
+// GetFutureGoodEdbInfoGroupList 获取分組指标数据列表
+// func GetFutureGoodEdbInfoGroupList(condition string, pars []interface{}) (list []*FutureGoodEdbInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM future_good_edb_info WHERE 1=1 `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	sql += ` ORDER BY future_good_edb_info_id DESC `
+// 	_, err = o.Raw(sql, pars).QueryRows(&list)
+// 	return
+// }
+
 // BarChartInfoReq 柱方图预览请求数据
 type BarChartInfoReq struct {
 	EdbInfoIdList []BarChartInfoEdbItemReq `description:"指标信息"`

+ 146 - 43
models/data_manage/future_good/future_good_edb_info_data.go

@@ -1,30 +1,52 @@
 package future_good
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
-	"github.com/rdlucklib/rdluck_tools/paging"
 	"time"
+
+	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
+// FutureGoodEdbData 期货指标数据的表
+//
+//	type FutureGoodEdbData struct {
+//		FutureGoodEdbDataId int       `orm:"column(future_good_edb_data_id);pk"`
+//		FutureGoodEdbInfoId int       `description:"期货指标id"`
+//		FutureGoodEdbCode   string    `description:"期货指标code"`
+//		DataTime            time.Time `description:"数据日期"`
+//		TradeCode           string    `description:"证券代码"`
+//		Open                float64   `description:"开盘价"`
+//		High                float64   `description:"最高价"`
+//		Low                 float64   `description:"最低价"`
+//		Close               float64   `description:"收盘价"`
+//		Volume              float64   `description:"成交量"`
+//		Amt                 float64   `description:"成交额"`
+//		Oi                  float64   `description:"持仓量"`
+//		Settle              float64   `description:"结算价"`
+//		DataTimestamp       int64     `description:"数据日期时间戳"`
+//		ModifyTime          time.Time
+//		CreateTime          time.Time
+//	}
+
 // FutureGoodEdbData 期货指标数据的表
 type FutureGoodEdbData struct {
-	FutureGoodEdbDataId int       `orm:"column(future_good_edb_data_id);pk"`
-	FutureGoodEdbInfoId int       `description:"期货指标id"`
-	FutureGoodEdbCode   string    `description:"期货指标code"`
-	DataTime            time.Time `description:"数据日期"`
-	TradeCode           string    `description:"证券代码"`
-	Open                float64   `description:"开盘价"`
-	High                float64   `description:"最高价"`
-	Low                 float64   `description:"最低价"`
-	Close               float64   `description:"收盘价"`
-	Volume              float64   `description:"成交量"`
-	Amt                 float64   `description:"成交额"`
-	Oi                  float64   `description:"持仓量"`
-	Settle              float64   `description:"结算价"`
-	DataTimestamp       int64     `description:"数据日期时间戳"`
-	ModifyTime          time.Time
-	CreateTime          time.Time
+	FutureGoodEdbDataId int       `gorm:"column:future_good_edb_data_id;primaryKey" description:"期货指标数据ID" orm:"column(future_good_edb_data_id);pk"`
+	FutureGoodEdbInfoId int       `gorm:"column:future_good_edb_info_id" description:"期货指标id"`
+	FutureGoodEdbCode   string    `gorm:"column:future_good_edb_code" description:"期货指标code"`
+	DataTime            time.Time `gorm:"column:data_time" description:"数据日期"`
+	TradeCode           string    `gorm:"column:trade_code" description:"证券代码"`
+	Open                float64   `gorm:"column:open" description:"开盘价"`
+	High                float64   `gorm:"column:high" description:"最高价"`
+	Low                 float64   `gorm:"column:low" description:"最低价"`
+	Close               float64   `gorm:"column:close" description:"收盘价"`
+	Volume              float64   `gorm:"column:volume" description:"成交量"`
+	Amt                 float64   `gorm:"column:amt" description:"成交额"`
+	Oi                  float64   `gorm:"column:oi" description:"持仓量"`
+	Settle              float64   `gorm:"column:settle" description:"结算价"`
+	DataTimestamp       int64     `gorm:"column:data_timestamp" description:"数据日期时间戳"`
+	ModifyTime          time.Time `gorm:"column:modify_time" description:"修改时间"`
+	CreateTime          time.Time `gorm:"column:create_time" description:"创建时间"`
 }
 
 // FutureGoodEdbDataListResp 期货指标数据列表数据返回
@@ -33,50 +55,95 @@ type FutureGoodEdbDataListResp struct {
 	List   []*FutureGoodEdbDataItem
 }
 
+// FutureGoodEdbDataItem 期货指标数据列表数据
+//
+//	type FutureGoodEdbDataItem struct {
+//		FutureGoodEdbDataId int     `orm:"column(future_good_edb_data_id);pk"`
+//		FutureGoodEdbInfoId int     `description:"期货指标id"`
+//		FutureGoodEdbCode   string  `description:"期货指标code"`
+//		FutureGoodEdbName   string  `description:"期货指标名称"`
+//		DataTime            string  `description:"数据日期"`
+//		TradeCode           string  `description:"证券代码"`
+//		Open                float64 `description:"开盘价"`
+//		High                float64 `description:"最高价"`
+//		Low                 float64 `description:"最低价"`
+//		Close               float64 `description:"收盘价"`
+//		Volume              float64 `description:"成交量"`
+//		Amt                 float64 `description:"成交额"`
+//		Oi                  float64 `description:"持仓量"`
+//		Settle              float64 `description:"结算价"`
+//		DataTimestamp       int64   `description:"数据日期时间戳"`
+//		ModifyTime          string
+//		CreateTime          string
+//	}
+
 // FutureGoodEdbDataItem 期货指标数据列表数据
 type FutureGoodEdbDataItem struct {
-	FutureGoodEdbDataId int     `orm:"column(future_good_edb_data_id);pk"`
-	FutureGoodEdbInfoId int     `description:"期货指标id"`
-	FutureGoodEdbCode   string  `description:"期货指标code"`
-	FutureGoodEdbName   string  `description:"期货指标名称"`
-	DataTime            string  `description:"数据日期"`
-	TradeCode           string  `description:"证券代码"`
-	Open                float64 `description:"开盘价"`
-	High                float64 `description:"最高价"`
-	Low                 float64 `description:"最低价"`
-	Close               float64 `description:"收盘价"`
-	Volume              float64 `description:"成交量"`
-	Amt                 float64 `description:"成交额"`
-	Oi                  float64 `description:"持仓量"`
-	Settle              float64 `description:"结算价"`
-	DataTimestamp       int64   `description:"数据日期时间戳"`
-	ModifyTime          string
-	CreateTime          string
+	FutureGoodEdbDataId int     `gorm:"column:future_good_edb_data_id;primaryKey" description:"期货指标数据ID" orm:"column(future_good_edb_data_id);pk"`
+	FutureGoodEdbInfoId int     `gorm:"column:future_good_edb_info_id" description:"期货指标id"`
+	FutureGoodEdbCode   string  `gorm:"column:future_good_edb_code" description:"期货指标code"`
+	FutureGoodEdbName   string  `gorm:"column:future_good_edb_name" description:"期货指标名称"`
+	DataTime            string  `gorm:"column:data_time" description:"数据日期"`
+	TradeCode           string  `gorm:"column:trade_code" description:"证券代码"`
+	Open                float64 `gorm:"column:open" description:"开盘价"`
+	High                float64 `gorm:"column:high" description:"最高价"`
+	Low                 float64 `gorm:"column:low" description:"最低价"`
+	Close               float64 `gorm:"column:close" description:"收盘价"`
+	Volume              float64 `gorm:"column:volume" description:"成交量"`
+	Amt                 float64 `gorm:"column:amt" description:"成交额"`
+	Oi                  float64 `gorm:"column:oi" description:"持仓量"`
+	Settle              float64 `gorm:"column:settle" description:"结算价"`
+	DataTimestamp       int64   `gorm:"column:data_timestamp" description:"数据日期时间戳"`
+	ModifyTime          string  `gorm:"column:modify_time" description:"修改时间"`
+	CreateTime          string  `gorm:"column:create_time" description:"创建时间"`
 }
 
 // GetFutureGoodEdbDataListCount 获取期货指标数据汇总数
 func GetFutureGoodEdbDataListCount(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT COUNT(1) AS count FROM future_good_edb_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = o.Raw(sql, pars).Scan(&count).Error
 	return
 }
 
 // GetFutureGoodEdbDataList 获取期货指标数据列表
 func GetFutureGoodEdbDataList(condition string, pars []interface{}, startSize, pageSize int) (list []*FutureGoodEdbDataItem, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM future_good_edb_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += `ORDER BY modify_time DESC LIMIT ?,?`
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
+	err = o.Raw(sql, pars, startSize, pageSize).Scan(&list).Error
 	return
 }
 
+// GetFutureGoodEdbDataListCount 获取期货指标数据汇总数
+// func GetFutureGoodEdbDataListCount(condition string, pars []interface{}) (count int, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT COUNT(1) AS count FROM future_good_edb_data WHERE 1=1 `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	err = o.Raw(sql, pars).QueryRow(&count)
+// 	return
+// }
+
+// // GetFutureGoodEdbDataList 获取期货指标数据列表
+// func GetFutureGoodEdbDataList(condition string, pars []interface{}, startSize, pageSize int) (list []*FutureGoodEdbDataItem, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM future_good_edb_data WHERE 1=1 `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	sql += `ORDER BY modify_time DESC LIMIT ?,?`
+// 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
+// 	return
+// }
+
 type EdbDataList struct {
 	EdbDataId     int     `description:" 指标数据ID"`
 	EdbInfoId     int     `description:"指标ID"`
@@ -98,8 +165,8 @@ func GetFutureGoodEdbDataListByDate(futureGoodEdbInfoId int, startDate, endDate
 	}
 
 	sql += ` ORDER BY data_time ASC `
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Raw(sql, futureGoodEdbInfoId, pars).QueryRows(&list)
+	o := global.DmSQL["data"]
+	err = o.Raw(sql, futureGoodEdbInfoId, pars).Scan(&list).Error
 	return
 }
 
@@ -116,7 +183,43 @@ func GetFutureGoodEdbDataListByIdsAndDate(futureGoodEdbInfoIds []int, startDate,
 	}
 
 	sql += ` ORDER BY data_time ASC `
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Raw(sql, futureGoodEdbInfoIds, pars).QueryRows(&list)
+	o := global.DmSQL["data"]
+	err = o.Raw(sql, futureGoodEdbInfoIds, pars).Scan(&list).Error
 	return
 }
+
+// func GetFutureGoodEdbDataListByDate(futureGoodEdbInfoId int, startDate, endDate string) (list []*FutureGoodEdbData, err error) {
+// 	var pars []interface{}
+// 	sql := `SELECT * FROM future_good_edb_data WHERE 1=1 AND future_good_edb_info_id = ? `
+// 	if startDate != "" {
+// 		sql += ` AND data_time>=? `
+// 		pars = append(pars, startDate)
+// 	}
+// 	if endDate != "" {
+// 		sql += ` AND data_time<=? `
+// 		pars = append(pars, endDate)
+// 	}
+
+// 	sql += ` ORDER BY data_time ASC `
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Raw(sql, futureGoodEdbInfoId, pars).QueryRows(&list)
+// 	return
+// }
+
+// func GetFutureGoodEdbDataListByIdsAndDate(futureGoodEdbInfoIds []int, startDate, endDate string) (list []*FutureGoodEdbData, err error) {
+// 	var pars []interface{}
+// 	sql := `SELECT * FROM future_good_edb_data WHERE 1=1 AND future_good_edb_info_id in (` + utils.GetOrmInReplace(len(futureGoodEdbInfoIds)) + `)  `
+// 	if startDate != "" {
+// 		sql += ` AND data_time>=? `
+// 		pars = append(pars, startDate)
+// 	}
+// 	if endDate != "" {
+// 		sql += ` AND data_time<=? `
+// 		pars = append(pars, endDate)
+// 	}
+
+// 	sql += ` ORDER BY data_time ASC `
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Raw(sql, futureGoodEdbInfoIds, pars).QueryRows(&list)
+// 	return
+// }

+ 60 - 21
models/data_manage/multiple_graph_config.go

@@ -1,52 +1,91 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_chart_lib/global"
 	"time"
 )
 
+// MultipleGraphConfig 多图配置表
+//
+//	type MultipleGraphConfig struct {
+//		MultipleGraphConfigId int       `orm:"column(multiple_graph_config_id);pk"`
+//		EdbInfoIdA            int       `description:"指标A"`
+//		EdbInfoIdB            int       `description:"指标B"`
+//		Curve                 string    `description:"曲线图配置"`
+//		Correlation           string    `description:"相关性配置"`
+//		RollingCorrelation    string    `description:"滚动相关性配置"`
+//		SysUserId             int       `description:"操作人id"`
+//		SysUserRealName       string    `description:"操作人真实姓名"`
+//		ModifyTime            time.Time `description:"最近一次修改时间"`
+//		CreateTime            time.Time `description:"添加时间"`
+//	}
+
 // MultipleGraphConfig 多图配置表
 type MultipleGraphConfig struct {
-	MultipleGraphConfigId int       `orm:"column(multiple_graph_config_id);pk"`
-	EdbInfoIdA            int       `description:"指标A"`
-	EdbInfoIdB            int       `description:"指标B"`
-	Curve                 string    `description:"曲线图配置"`
-	Correlation           string    `description:"相关性配置"`
-	RollingCorrelation    string    `description:"滚动相关性配置"`
-	SysUserId             int       `description:"操作人id"`
-	SysUserRealName       string    `description:"操作人真实姓名"`
-	ModifyTime            time.Time `description:"最近一次修改时间"`
-	CreateTime            time.Time `description:"添加时间"`
+	MultipleGraphConfigId int       `gorm:"column:multiple_graph_config_id;primaryKey" description:"多图配置ID" orm:"column(multiple_graph_config_id);pk"`
+	EdbInfoIdA            int       `gorm:"column:edb_info_id_a" description:"指标A"`
+	EdbInfoIdB            int       `gorm:"column:edb_info_id_b" description:"指标B"`
+	Curve                 string    `gorm:"column:curve" description:"曲线图配置"`
+	Correlation           string    `gorm:"column:correlation" description:"相关性配置"`
+	RollingCorrelation    string    `gorm:"column:rolling_correlation" description:"滚动相关性配置"`
+	SysUserId             int       `gorm:"column:sys_user_id" description:"操作人id"`
+	SysUserRealName       string    `gorm:"column:sys_user_real_name" description:"操作人真实姓名"`
+	ModifyTime            time.Time `gorm:"column:modify_time" description:"最近一次修改时间"`
+	CreateTime            time.Time `gorm:"column:create_time" description:"添加时间"`
 }
 
 // AddMultipleGraphConfig 新增多图配置
 func AddMultipleGraphConfig(item *MultipleGraphConfig) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	// 表格信息入库
-	lastId, err := o.Insert(item)
-	if err != nil {
-		return
-	}
-	item.MultipleGraphConfigId = int(lastId)
+	err = o.Create(item).Error
 	return
 }
 
 // Update 更新 基础信息
 func (item *MultipleGraphConfig) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(item, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(item).Select(cols).Updates(item).Error
 	return
 }
 
 // GetMultipleGraphConfigById 根据配置id获取配置
 func GetMultipleGraphConfigById(id int) (item *MultipleGraphConfig, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM multiple_graph_config WHERE multiple_graph_config_id = ? `
 	// 表格信息入库
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = o.Raw(sql, id).First(&item).Error
 	return
 }
 
+// AddMultipleGraphConfig 新增多图配置
+// func AddMultipleGraphConfig(item *MultipleGraphConfig) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	// 表格信息入库
+// 	lastId, err := o.Insert(item)
+// 	if err != nil {
+// 		return
+// 	}
+// 	item.MultipleGraphConfigId = int(lastId)
+// 	return
+// }
+
+// // Update 更新 基础信息
+// func (item *MultipleGraphConfig) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(item, cols...)
+// 	return
+// }
+
+// // GetMultipleGraphConfigById 根据配置id获取配置
+// func GetMultipleGraphConfigById(id int) (item *MultipleGraphConfig, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM multiple_graph_config WHERE multiple_graph_config_id = ? `
+// 	// 表格信息入库
+// 	err = o.Raw(sql, id).QueryRow(&item)
+// 	return
+// }
+
 // CurveConfig 曲线图配置
 type CurveConfig struct {
 	DateType    int     `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间"`

+ 74 - 21
models/data_manage/multiple_graph_config_chart_mapping.go

@@ -1,62 +1,115 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_chart_lib/global"
 	"time"
 )
 
+// MultipleGraphConfigChartMapping 图表与多图配置的关系表
+//
+//	type MultipleGraphConfigChartMapping struct {
+//		Id                    int       `orm:"column(id);pk"`
+//		MultipleGraphConfigId int       `description:"多图配置id"`
+//		ChartInfoId           int       `description:"图表id"`
+//		Source                int       `description:"来源,1:曲线图,2:相关性图;3:滚动相关性图1;4:滚动相关性图2;"`
+//		ModifyTime            time.Time `description:"最近一次修改时间"`
+//		CreateTime            time.Time `description:"添加时间"`
+//	}
+
 // MultipleGraphConfigChartMapping 图表与多图配置的关系表
 type MultipleGraphConfigChartMapping struct {
-	Id                    int       `orm:"column(id);pk"`
-	MultipleGraphConfigId int       `description:"多图配置id"`
-	ChartInfoId           int       `description:"图表id"`
-	Source                int       `description:"来源,1:曲线图,2:相关性图;3:滚动相关性图1;4:滚动相关性图2;"`
-	ModifyTime            time.Time `description:"最近一次修改时间"`
-	CreateTime            time.Time `description:"添加时间"`
+	Id                    int       `gorm:"column:id;primaryKey" description:"主键ID" orm:"column(id);pk"`
+	MultipleGraphConfigId int       `gorm:"column:multiple_graph_config_id" description:"多图配置id"`
+	ChartInfoId           int       `gorm:"column:chart_info_id" description:"图表id"`
+	Source                int       `gorm:"column:source" description:"来源,1:曲线图,2:相关性图;3:滚动相关性图1;4:滚动相关性图2;"`
+	ModifyTime            time.Time `gorm:"column:modify_time" description:"最近一次修改时间"`
+	CreateTime            time.Time `gorm:"column:create_time" description:"添加时间"`
 }
 
 // AddMultipleGraphConfigChartMapping 新增多图配置
 func AddMultipleGraphConfigChartMapping(item *MultipleGraphConfigChartMapping) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	// 表格信息入库
-	lastId, err := o.Insert(item)
-	if err != nil {
-		return
-	}
-	item.Id = int(lastId)
+	err = o.Create(item).Error
 	return
 }
 
 // Update 更新 基础信息
 func (item *MultipleGraphConfigChartMapping) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(item, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(item).Select(cols).Updates(item).Error
 	return
 }
 
 // GetMultipleGraphConfigChartMappingByIdAndSource 根据配置id和来源获取关联关系
 func GetMultipleGraphConfigChartMappingByIdAndSource(configId, source int) (item *MultipleGraphConfigChartMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM multiple_graph_config_chart_mapping WHERE multiple_graph_config_id = ? AND source = ? `
-	err = o.Raw(sql, configId, source).QueryRow(&item)
+	err = o.Raw(sql, configId, source).First(&item).Error
 
 	return
 }
 
 // GetMultipleGraphConfigChartMappingByChartId 根据图表id和来源获取关联关系
 func GetMultipleGraphConfigChartMappingByChartId(chartId int) (item *MultipleGraphConfigChartMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM multiple_graph_config_chart_mapping WHERE chart_info_id = ?  `
-	err = o.Raw(sql, chartId).QueryRow(&item)
+	err = o.Raw(sql, chartId).First(&item).Error
 
 	return
 }
 
 // GetMultipleGraphConfigChartMappingListById 根据配置id获取所有关联关系
 func GetMultipleGraphConfigChartMappingListById(configId int) (items []*MultipleGraphConfigChartMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM multiple_graph_config_chart_mapping WHERE multiple_graph_config_id = ? `
-	_, err = o.Raw(sql, configId).QueryRows(&items)
+	err = o.Raw(sql, configId).Scan(&items).Error
 
 	return
 }
+
+// AddMultipleGraphConfigChartMapping 新增多图配置
+// func AddMultipleGraphConfigChartMapping(item *MultipleGraphConfigChartMapping) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	// 表格信息入库
+// 	lastId, err := o.Insert(item)
+// 	if err != nil {
+// 		return
+// 	}
+// 	item.Id = int(lastId)
+// 	return
+// }
+
+// // Update 更新 基础信息
+// func (item *MultipleGraphConfigChartMapping) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(item, cols...)
+// 	return
+// }
+
+// // GetMultipleGraphConfigChartMappingByIdAndSource 根据配置id和来源获取关联关系
+// func GetMultipleGraphConfigChartMappingByIdAndSource(configId, source int) (item *MultipleGraphConfigChartMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM multiple_graph_config_chart_mapping WHERE multiple_graph_config_id = ? AND source = ? `
+// 	err = o.Raw(sql, configId, source).QueryRow(&item)
+
+// 	return
+// }
+
+// // GetMultipleGraphConfigChartMappingByChartId 根据图表id和来源获取关联关系
+// func GetMultipleGraphConfigChartMappingByChartId(chartId int) (item *MultipleGraphConfigChartMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM multiple_graph_config_chart_mapping WHERE chart_info_id = ?  `
+// 	err = o.Raw(sql, chartId).QueryRow(&item)
+
+// 	return
+// }
+
+// // GetMultipleGraphConfigChartMappingListById 根据配置id获取所有关联关系
+// func GetMultipleGraphConfigChartMappingListById(configId int) (items []*MultipleGraphConfigChartMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM multiple_graph_config_chart_mapping WHERE multiple_graph_config_id = ? `
+// 	_, err = o.Raw(sql, configId).QueryRows(&items)
+
+// 	return
+// }

+ 72 - 21
models/data_manage/multiple_graph_config_edb_mapping.go

@@ -1,61 +1,112 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_chart_lib/global"
 	"time"
 )
 
+// MultipleGraphConfigEdbMapping 指标与多图配置的关系表
+// type MultipleGraphConfigEdbMapping struct {
+// 	Id                    int       `orm:"column(id);pk"`
+// 	MultipleGraphConfigId int       `description:"多图配置id"`
+// 	EdbInfoId             int       `description:"指标id"`
+// 	Source                int       `description:"来源,1:曲线图,2:相关性图;3:滚动相关性图1;4:滚动相关性图2;"`
+// 	ModifyTime            time.Time `description:"最近一次修改时间"`
+// 	CreateTime            time.Time `description:"添加时间"`
+// }
+
 // MultipleGraphConfigEdbMapping 指标与多图配置的关系表
 type MultipleGraphConfigEdbMapping struct {
-	Id                    int       `orm:"column(id);pk"`
-	MultipleGraphConfigId int       `description:"多图配置id"`
-	EdbInfoId             int       `description:"指标id"`
-	Source                int       `description:"来源,1:曲线图,2:相关性图;3:滚动相关性图1;4:滚动相关性图2;"`
-	ModifyTime            time.Time `description:"最近一次修改时间"`
-	CreateTime            time.Time `description:"添加时间"`
+	Id                    int       `gorm:"column:id;primaryKey" description:"主键ID" orm:"column(id);pk"`
+	MultipleGraphConfigId int       `gorm:"column:multiple_graph_config_id" description:"多图配置id"`
+	EdbInfoId             int       `gorm:"column:edb_info_id" description:"指标id"`
+	Source                int       `gorm:"column:source" description:"来源,1:曲线图,2:相关性图;3:滚动相关性图1;4:滚动相关性图2;"`
+	ModifyTime            time.Time `gorm:"column:modify_time" description:"最近一次修改时间"`
+	CreateTime            time.Time `gorm:"column:create_time" description:"添加时间"`
 }
 
 // AddMultipleGraphConfigEdbMapping 新增多图配置
 func AddMultipleGraphConfigEdbMapping(item *MultipleGraphConfigEdbMapping) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	// 表格信息入库
-	lastId, err := o.Insert(item)
-	if err != nil {
-		return
-	}
-	item.Id = int(lastId)
+	err = o.Create(item).Error
 	return
 }
 
 // Update 更新 基础信息
 func (item *MultipleGraphConfigEdbMapping) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(item, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(item).Select(cols).Updates(item).Error
 	return
 }
 
 // GetMultipleGraphConfigEdbMappingByIdAndSource 根据配置id和来源获取关联关系
 func GetMultipleGraphConfigEdbMappingByIdAndSource(configId, source int) (item *MultipleGraphConfigEdbMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM multiple_graph_config_edb_mapping WHERE multiple_graph_config_id = ? AND source = ? `
 	// 表格信息入库
-	err = o.Raw(sql, configId, source).QueryRow(&item)
+	err = o.Raw(sql, configId, source).First(&item).Error
 	return
 }
 
 // GetMultipleGraphConfigEdbMappingListById 根据配置id获取所有关联关系
 func GetMultipleGraphConfigEdbMappingListById(configId int) (items []*MultipleGraphConfigEdbMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM multiple_graph_config_edb_mapping WHERE multiple_graph_config_id = ? `
-	_, err = o.Raw(sql, configId).QueryRows(&items)
+	err = o.Raw(sql, configId).Scan(&items).Error
 
 	return
 }
 
 func GetMultipleGraphConfigEdbMappingListByIdAndSource(configId, source int) (items []*MultipleGraphConfigEdbMapping, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM multiple_graph_config_edb_mapping WHERE multiple_graph_config_id = ? AND source = ? `
-	_, err = o.Raw(sql, configId, source).QueryRows(&items)
+	err = o.Raw(sql, configId, source).Scan(&items).Error
 
 	return
 }
+
+// AddMultipleGraphConfigEdbMapping 新增多图配置
+// func AddMultipleGraphConfigEdbMapping(item *MultipleGraphConfigEdbMapping) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	// 表格信息入库
+// 	lastId, err := o.Insert(item)
+// 	if err != nil {
+// 		return
+// 	}
+// 	item.Id = int(lastId)
+// 	return
+// }
+
+// // Update 更新 基础信息
+// func (item *MultipleGraphConfigEdbMapping) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(item, cols...)
+// 	return
+// }
+
+// // GetMultipleGraphConfigEdbMappingByIdAndSource 根据配置id和来源获取关联关系
+// func GetMultipleGraphConfigEdbMappingByIdAndSource(configId, source int) (item *MultipleGraphConfigEdbMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM multiple_graph_config_edb_mapping WHERE multiple_graph_config_id = ? AND source = ? `
+// 	// 表格信息入库
+// 	err = o.Raw(sql, configId, source).QueryRow(&item)
+// 	return
+// }
+
+// // GetMultipleGraphConfigEdbMappingListById 根据配置id获取所有关联关系
+// func GetMultipleGraphConfigEdbMappingListById(configId int) (items []*MultipleGraphConfigEdbMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM multiple_graph_config_edb_mapping WHERE multiple_graph_config_id = ? `
+// 	_, err = o.Raw(sql, configId).QueryRows(&items)
+
+// 	return
+// }
+
+// func GetMultipleGraphConfigEdbMappingListByIdAndSource(configId, source int) (items []*MultipleGraphConfigEdbMapping, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM multiple_graph_config_edb_mapping WHERE multiple_graph_config_id = ? AND source = ? `
+// 	_, err = o.Raw(sql, configId, source).QueryRows(&items)
+
+// 	return
+// }

+ 167 - 41
models/data_manage/predict_edb_conf.go

@@ -1,82 +1,93 @@
 package data_manage
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/services/alarm_msg"
 	"eta_gn/eta_chart_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
+//	type PredictEdbConf struct {
+//		ConfigId         int       `orm:"column(config_id);pk" description:"规则id"`
+//		PredictEdbInfoId int       `orm:"column(predict_edb_info_id)" description:"预测指标id"`
+//		SourceEdbInfoId  int       `description:"来源指标id"`
+//		RuleType         int       `description:"预测规则,1:最新,2:固定值,3:同比,4:同差,5:环比,6:环差,7:N期移动均值,8:N期段线性外推值"`
+//		FixedValue       float64   `description:"固定值"`
+//		Value            string    `description:"配置的值"`
+//		EndDate          time.Time `description:"截止日期"`
+//		ModifyTime       time.Time `description:"修改时间"`
+//		CreateTime       time.Time `description:"添加时间"`
+//	}
 type PredictEdbConf struct {
-	ConfigId         int       `orm:"column(config_id);pk" description:"规则id"`
-	PredictEdbInfoId int       `orm:"column(predict_edb_info_id)" description:"预测指标id"`
-	SourceEdbInfoId  int       `description:"来源指标id"`
-	RuleType         int       `description:"预测规则,1:最新,2:固定值,3:同比,4:同差,5:环比,6:环差,7:N期移动均值,8:N期段线性外推值"`
-	FixedValue       float64   `description:"固定值"`
-	Value            string    `description:"配置的值"`
-	EndDate          time.Time `description:"截止日期"`
-	ModifyTime       time.Time `description:"修改时间"`
-	CreateTime       time.Time `description:"添加时间"`
+	ConfigId         int       `gorm:"column:config_id;primaryKey" description:"规则id" orm:"column(config_id);pk"`
+	PredictEdbInfoId int       `gorm:"column:predict_edb_info_id" description:"预测指标id"`
+	SourceEdbInfoId  int       `gorm:"column:source_edb_info_id" description:"来源指标id"`
+	RuleType         int       `gorm:"column:rule_type" description:"预测规则,1:最新,2:固定值,3:同比,4:同差,5:环比,6:环差,7:N期移动均值,8:N期段线性外推值"`
+	FixedValue       float64   `gorm:"column:fixed_value" description:"固定值"`
+	Value            string    `gorm:"column:value" description:"配置的值"`
+	EndDate          time.Time `gorm:"column:end_date" description:"截止日期"`
+	ModifyTime       time.Time `gorm:"column:modify_time" description:"修改时间"`
+	CreateTime       time.Time `gorm:"column:create_time" description:"添加时间"`
+}
+
+func (p *PredictEdbConf) TableName() string {
+	return "predict_edb_conf"
 }
 
 // GetPredictEdbConfById 根据预测指标id获取预测指标配置信息
 func GetPredictEdbConfById(edbInfoId int) (item *PredictEdbConf, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM predict_edb_conf WHERE predict_edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	err = o.Raw(sql, edbInfoId).First(&item).Error
 	return
 }
 
 // GetPredictEdbConfBySourceEdbInfoId 根据来源指标id获取配置
 func GetPredictEdbConfBySourceEdbInfoId(sourceEdbInfoId int) (item *PredictEdbConf, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM predict_edb_conf WHERE source_edb_info_id=? `
-	err = o.Raw(sql, sourceEdbInfoId).QueryRow(&item)
+	err = o.Raw(sql, sourceEdbInfoId).First(&item).Error
 	return
 }
 
 // GetPredictEdbConfCount 根据来源指标id获取被引用的次数
 func GetPredictEdbConfCount(sourceEdbInfoId int) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT COUNT(1) AS count FROM predict_edb_conf WHERE source_edb_info_id=? `
-	err = o.Raw(sql, sourceEdbInfoId).QueryRow(&count)
+	err = o.Raw(sql, sourceEdbInfoId).Scan(&count).Error
 	return
 }
 
 // AddPredictEdbConf 添加预测指标规则
 func AddPredictEdbConf(item *PredictEdbConf) (lastId int64, err error) {
-	o := orm.NewOrmUsingDB("data")
-	lastId, err = o.Insert(item)
+	o := global.DmSQL["data"]
+	err = o.Create(item).Error
 	return
 }
 
 // AddPredictEdb 添加预测指标
 func AddPredictEdb(item *EdbInfo, predictEdbConf *PredictEdbConf) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	tx, err := o.Begin()
-	if err != nil {
-		return
-	}
+	o := global.DmSQL["data"]
+	tx := o.Begin()
 	defer func() {
 		if err != nil {
-			tmpErr := tx.Rollback()
+			tmpErr := tx.Rollback().Error
 			if tmpErr != nil {
 				go alarm_msg.SendAlarmMsg("AddPredictEdb 事务回滚失败,Err:"+tmpErr.Error(), 3)
 			}
 		} else {
-			err = tx.Commit()
+			_ = tx.Commit()
 		}
 	}()
 	// 新增预测指标
-	edbInfoId, err := o.Insert(item)
+	err = o.Create(item).Error
 	if err != nil {
 		return
 	}
-	item.EdbInfoId = int(edbInfoId)
 
 	// 新增预测指标配置
 	predictEdbConf.PredictEdbInfoId = item.EdbInfoId
-	_, err = o.Insert(predictEdbConf)
+	err = o.Create(predictEdbConf).Error
 	if err != nil {
 		return
 	}
@@ -85,28 +96,25 @@ func AddPredictEdb(item *EdbInfo, predictEdbConf *PredictEdbConf) (err error) {
 
 // EditPredictEdb 修改预测指标
 func EditPredictEdb(edbInfo *EdbInfo, predictEdbConf *PredictEdbConf, updateEdbInfoCol, updatePredictEdbConfCol []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	tx, err := o.Begin()
-	if err != nil {
-		return
-	}
+	o := global.DmSQL["data"]
+	tx := o.Begin()
 	defer func() {
 		if err != nil {
-			tmpErr := tx.Rollback()
+			tmpErr := tx.Rollback().Error
 			if tmpErr != nil {
 				go alarm_msg.SendAlarmMsg("AddPredictEdb 事务回滚失败,Err:"+tmpErr.Error(), 3)
 			}
 		} else {
-			err = tx.Commit()
+			_ = tx.Commit()
 		}
 	}()
 	// 修改预测指标
-	_, err = o.Update(edbInfo, updateEdbInfoCol...)
+	err = o.Model(edbInfo).Select(updateEdbInfoCol).Updates(edbInfo).Error
 	if err != nil {
 		return
 	}
 	// 修改预测指标配置
-	_, err = o.Update(predictEdbConf, updatePredictEdbConfCol...)
+	err = o.Model(predictEdbConf).Select(updatePredictEdbConfCol).Updates(predictEdbConf).Error
 	if err != nil {
 		return
 	}
@@ -119,20 +127,138 @@ func GetPredictEdbInfoAllCalculate(edbInfoIdList []int) (list []*EdbInfo, err er
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT b.* FROM predict_edb_conf AS a
 			 INNER JOIN edb_info AS b ON a.source_edb_info_id=b.edb_info_id
              WHERE a.predict_edb_info_id in (` + utils.GetOrmInReplace(num) + `)
 			 GROUP BY a.source_edb_info_id
 			 ORDER BY a.source_edb_info_id ASC `
-	_, err = o.Raw(sql, edbInfoIdList).QueryRows(&list)
+	err = o.Raw(sql, edbInfoIdList).Scan(&list).Error
 	return
 }
 
 // GetPredictEdbConfListById 根据预测指标id获取预测指标配置信息列表
 func GetPredictEdbConfListById(edbInfoId int) (items []*PredictEdbConf, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM predict_edb_conf WHERE predict_edb_info_id=? ORDER BY config_id ASC`
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&items)
+	err = o.Raw(sql, edbInfoId).Scan(&items).Error
 	return
 }
+
+// GetPredictEdbConfById 根据预测指标id获取预测指标配置信息
+// func GetPredictEdbConfById(edbInfoId int) (item *PredictEdbConf, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM predict_edb_conf WHERE predict_edb_info_id=? `
+// 	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+// 	return
+// }
+
+// // GetPredictEdbConfBySourceEdbInfoId 根据来源指标id获取配置
+// func GetPredictEdbConfBySourceEdbInfoId(sourceEdbInfoId int) (item *PredictEdbConf, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM predict_edb_conf WHERE source_edb_info_id=? `
+// 	err = o.Raw(sql, sourceEdbInfoId).QueryRow(&item)
+// 	return
+// }
+
+// // GetPredictEdbConfCount 根据来源指标id获取被引用的次数
+// func GetPredictEdbConfCount(sourceEdbInfoId int) (count int, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT COUNT(1) AS count FROM predict_edb_conf WHERE source_edb_info_id=? `
+// 	err = o.Raw(sql, sourceEdbInfoId).QueryRow(&count)
+// 	return
+// }
+
+// // AddPredictEdbConf 添加预测指标规则
+// func AddPredictEdbConf(item *PredictEdbConf) (lastId int64, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	lastId, err = o.Insert(item)
+// 	return
+// }
+
+// // AddPredictEdb 添加预测指标
+// func AddPredictEdb(item *EdbInfo, predictEdbConf *PredictEdbConf) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	tx, err := o.Begin()
+// 	if err != nil {
+// 		return
+// 	}
+// 	defer func() {
+// 		if err != nil {
+// 			tmpErr := tx.Rollback()
+// 			if tmpErr != nil {
+// 				go alarm_msg.SendAlarmMsg("AddPredictEdb 事务回滚失败,Err:"+tmpErr.Error(), 3)
+// 			}
+// 		} else {
+// 			err = tx.Commit()
+// 		}
+// 	}()
+// 	// 新增预测指标
+// 	edbInfoId, err := o.Insert(item)
+// 	if err != nil {
+// 		return
+// 	}
+// 	item.EdbInfoId = int(edbInfoId)
+
+// 	// 新增预测指标配置
+// 	predictEdbConf.PredictEdbInfoId = item.EdbInfoId
+// 	_, err = o.Insert(predictEdbConf)
+// 	if err != nil {
+// 		return
+// 	}
+// 	return
+// }
+
+// // EditPredictEdb 修改预测指标
+// func EditPredictEdb(edbInfo *EdbInfo, predictEdbConf *PredictEdbConf, updateEdbInfoCol, updatePredictEdbConfCol []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	tx, err := o.Begin()
+// 	if err != nil {
+// 		return
+// 	}
+// 	defer func() {
+// 		if err != nil {
+// 			tmpErr := tx.Rollback()
+// 			if tmpErr != nil {
+// 				go alarm_msg.SendAlarmMsg("AddPredictEdb 事务回滚失败,Err:"+tmpErr.Error(), 3)
+// 			}
+// 		} else {
+// 			err = tx.Commit()
+// 		}
+// 	}()
+// 	// 修改预测指标
+// 	_, err = o.Update(edbInfo, updateEdbInfoCol...)
+// 	if err != nil {
+// 		return
+// 	}
+// 	// 修改预测指标配置
+// 	_, err = o.Update(predictEdbConf, updatePredictEdbConfCol...)
+// 	if err != nil {
+// 		return
+// 	}
+// 	return
+// }
+
+// // GetPredictEdbInfoAllCalculate 根据基础预测指标id集合 获取 所有的普通指标列表数据
+// func GetPredictEdbInfoAllCalculate(edbInfoIdList []int) (list []*EdbInfo, err error) {
+// 	num := len(edbInfoIdList)
+// 	if num <= 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT b.* FROM predict_edb_conf AS a
+// 			 INNER JOIN edb_info AS b ON a.source_edb_info_id=b.edb_info_id
+//              WHERE a.predict_edb_info_id in (` + utils.GetOrmInReplace(num) + `)
+// 			 GROUP BY a.source_edb_info_id
+// 			 ORDER BY a.source_edb_info_id ASC `
+// 	_, err = o.Raw(sql, edbInfoIdList).QueryRows(&list)
+// 	return
+// }
+
+// // GetPredictEdbConfListById 根据预测指标id获取预测指标配置信息列表
+// func GetPredictEdbConfListById(edbInfoId int) (items []*PredictEdbConf, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM predict_edb_conf WHERE predict_edb_info_id=? ORDER BY config_id ASC`
+// 	_, err = o.Raw(sql, edbInfoId).QueryRows(&items)
+// 	return
+// }

+ 125 - 39
models/data_manage/predict_edb_conf_calculate_mapping.go

@@ -1,81 +1,130 @@
 package data_manage
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 // PredictEdbConfCalculateMapping 预测基础指标规则 与 计算预测指标关联关系表
+//
+//	type PredictEdbConfCalculateMapping struct {
+//		PredictEdbConfCalculateMappingId int       `orm:"column(predict_edb_conf_calculate_mapping_id);pk"`
+//		EdbInfoId                        int       `description:"指标id"`
+//		ConfigId                         int       `description:"配置id"`
+//		FromEdbInfoId                    int       `description:"基础指标id"`
+//		FromEdbCode                      string    `description:"基础指标编码"`
+//		FromEdbName                      string    `description:"基础指标名称"`
+//		FromSource                       int       `description:"基础指标来源"`
+//		FromSourceName                   string    `description:"基础指标来源名称"`
+//		FromTag                          string    `description:"来源指标标签"`
+//		Sort                             int       `description:"计算指标名称排序"`
+//		CreateTime                       time.Time `description:"创建时间"`
+//		ModifyTime                       time.Time `description:"修改时间"`
+//	}
 type PredictEdbConfCalculateMapping struct {
-	PredictEdbConfCalculateMappingId int       `orm:"column(predict_edb_conf_calculate_mapping_id);pk"`
-	EdbInfoId                        int       `description:"指标id"`
-	ConfigId                         int       `description:"配置id"`
-	FromEdbInfoId                    int       `description:"基础指标id"`
-	FromEdbCode                      string    `description:"基础指标编码"`
-	FromEdbName                      string    `description:"基础指标名称"`
-	FromSource                       int       `description:"基础指标来源"`
-	FromSourceName                   string    `description:"基础指标来源名称"`
-	FromTag                          string    `description:"来源指标标签"`
-	Sort                             int       `description:"计算指标名称排序"`
-	CreateTime                       time.Time `description:"创建时间"`
-	ModifyTime                       time.Time `description:"修改时间"`
+	PredictEdbConfCalculateMappingId int       `gorm:"column:predict_edb_conf_calculate_mapping_id;primaryKey" description:"预测指标计算映射ID" orm:"column(predict_edb_conf_calculate_mapping_id);pk"`
+	EdbInfoId                        int       `gorm:"column:edb_info_id" description:"指标id"`
+	ConfigId                         int       `gorm:"column:config_id" description:"配置id"`
+	FromEdbInfoId                    int       `gorm:"column:from_edb_info_id" description:"基础指标id"`
+	FromEdbCode                      string    `gorm:"column:from_edb_code" description:"基础指标编码"`
+	FromEdbName                      string    `gorm:"column:from_edb_name" description:"基础指标名称"`
+	FromSource                       int       `gorm:"column:from_source" description:"基础指标来源"`
+	FromSourceName                   string    `gorm:"column:from_source_name" description:"基础指标来源名称"`
+	FromTag                          string    `gorm:"column:from_tag" description:"来源指标标签"`
+	Sort                             int       `gorm:"column:sort" description:"计算指标名称排序"`
+	CreateTime                       time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime                       time.Time `gorm:"column:modify_time" description:"修改时间"`
 }
 
 // GetPredictEdbConfCalculateMappingListById 根据预测指标id获取预测指标配置的关联指标信息列表
 func GetPredictEdbConfCalculateMappingListById(edbInfoId int) (items []*PredictEdbConf, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM predict_edb_conf_calculate_mapping WHERE edb_info_id=? ORDER BY predict_edb_conf_calculate_mapping_id ASC`
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&items)
+	err = o.Raw(sql, edbInfoId).Scan(&items).Error
 	return
 }
 
 // GetPredictEdbConfCalculateMappingListByConfigId 根据预测指标配置id获取预测指标配置的关联指标信息列表
 func GetPredictEdbConfCalculateMappingListByConfigId(edbInfoId, configId int) (items []*PredictEdbConf, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM predict_edb_conf_calculate_mapping WHERE edb_info_id=? AND config_id=? ORDER BY predict_edb_conf_calculate_mapping_id ASC`
-	_, err = o.Raw(sql, edbInfoId, configId).QueryRows(&items)
+	err = o.Raw(sql, edbInfoId, configId).Scan(&items).Error
 	return
 }
 
+// GetPredictEdbConfCalculateMappingListById 根据预测指标id获取预测指标配置的关联指标信息列表
+// func GetPredictEdbConfCalculateMappingListById(edbInfoId int) (items []*PredictEdbConf, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM predict_edb_conf_calculate_mapping WHERE edb_info_id=? ORDER BY predict_edb_conf_calculate_mapping_id ASC`
+// 	_, err = o.Raw(sql, edbInfoId).QueryRows(&items)
+// 	return
+// }
+
+// // GetPredictEdbConfCalculateMappingListByConfigId 根据预测指标配置id获取预测指标配置的关联指标信息列表
+// func GetPredictEdbConfCalculateMappingListByConfigId(edbInfoId, configId int) (items []*PredictEdbConf, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM predict_edb_conf_calculate_mapping WHERE edb_info_id=? AND config_id=? ORDER BY predict_edb_conf_calculate_mapping_id ASC`
+// 	_, err = o.Raw(sql, edbInfoId, configId).QueryRows(&items)
+// 	return
+// }
+
+//	type PredictEdbConfCalculateMappingDetail struct {
+//		PredictEdbConfCalculateMappingId int       `orm:"column(predict_edb_conf_calculate_mapping_id);pk"`
+//		EdbInfoId                        int       `description:"指标id"`
+//		ConfigId                         int       `description:"配置id"`
+//		FromEdbInfoId                    int       `description:"基础指标id"`
+//		FromEdbCode                      string    `description:"基础指标编码"`
+//		FromEdbName                      string    `description:"基础指标名称"`
+//		FromSource                       int       `description:"基础指标来源"`
+//		FromSourceName                   string    `description:"基础指标来源名称"`
+//		FromTag                          string    `description:"来源指标标签"`
+//		Sort                             int       `description:"计算指标名称排序"`
+//		CreateTime                       time.Time `description:"创建时间"`
+//		ModifyTime                       time.Time `description:"修改时间"`
+//		StartDate                        string    `description:"开始日期"`
+//		EndDate                          string    `description:"结束日期"`
+//		EdbType                          int       `description:"指标类型:1:基础指标,2:计算指标"`
+//		EdbCode                          string    `description:"指标code"`
+//	}
 type PredictEdbConfCalculateMappingDetail struct {
-	PredictEdbConfCalculateMappingId int       `orm:"column(predict_edb_conf_calculate_mapping_id);pk"`
-	EdbInfoId                        int       `description:"指标id"`
-	ConfigId                         int       `description:"配置id"`
-	FromEdbInfoId                    int       `description:"基础指标id"`
-	FromEdbCode                      string    `description:"基础指标编码"`
-	FromEdbName                      string    `description:"基础指标名称"`
-	FromSource                       int       `description:"基础指标来源"`
-	FromSourceName                   string    `description:"基础指标来源名称"`
-	FromTag                          string    `description:"来源指标标签"`
-	Sort                             int       `description:"计算指标名称排序"`
-	CreateTime                       time.Time `description:"创建时间"`
-	ModifyTime                       time.Time `description:"修改时间"`
-	StartDate                        string    `description:"开始日期"`
-	EndDate                          string    `description:"结束日期"`
-	EdbType                          int       `description:"指标类型:1:基础指标,2:计算指标"`
-	EdbCode                          string    `description:"指标code"`
+	PredictEdbConfCalculateMappingId int       `gorm:"column:predict_edb_conf_calculate_mapping_id;primaryKey" description:"预测指标计算映射ID" orm:"column(predict_edb_conf_calculate_mapping_id);pk"`
+	EdbInfoId                        int       `gorm:"column:edb_info_id" description:"指标id"`
+	ConfigId                         int       `gorm:"column:config_id" description:"配置id"`
+	FromEdbInfoId                    int       `gorm:"column:from_edb_info_id" description:"基础指标id"`
+	FromEdbCode                      string    `gorm:"column:from_edb_code" description:"基础指标编码"`
+	FromEdbName                      string    `gorm:"column:from_edb_name" description:"基础指标名称"`
+	FromSource                       int       `gorm:"column:from_source" description:"基础指标来源"`
+	FromSourceName                   string    `gorm:"column:from_source_name" description:"基础指标来源名称"`
+	FromTag                          string    `gorm:"column:from_tag" description:"来源指标标签"`
+	Sort                             int       `gorm:"column:sort" description:"计算指标名称排序"`
+	CreateTime                       time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime                       time.Time `gorm:"column:modify_time" description:"修改时间"`
+	StartDate                        string    `gorm:"column:start_date" description:"开始日期"`
+	EndDate                          string    `gorm:"column:end_date" description:"结束日期"`
+	EdbType                          int       `gorm:"column:edb_type" description:"指标类型:1:基础指标,2:计算指标"`
+	EdbCode                          string    `gorm:"column:edb_code" description:"指标code"`
 }
 
 // GetPredictEdbConfCalculateMappingDetailListById 根据配置id获取 配置关联指标信息
 func GetPredictEdbConfCalculateMappingDetailListById(edbInfoId int) (list []*PredictEdbConfCalculateMappingDetail, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT a.predict_edb_conf_calculate_mapping_id,a.edb_info_id,a.from_edb_info_id,a.from_edb_code,a.from_source,a.from_source_name,a.sort,a.create_time,a.modify_time,a.from_tag,b.edb_name_source as from_edb_name,b.start_date,b.end_date,b.edb_type FROM predict_edb_conf_calculate_mapping AS a
 			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
 			WHERE a.edb_info_id=? ORDER BY sort ASC `
 
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&list)
+	err = o.Raw(sql, edbInfoId).Scan(&list).Error
 	return
 }
 
 // GetPredictEdbConfCalculateMappingDetailListByConfigId 根据配置id和指标id获取 配置关联指标信息
 func GetPredictEdbConfCalculateMappingDetailListByConfigId(edbInfoId, configId int) (list []*PredictEdbConfCalculateMappingDetail, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT a.predict_edb_conf_calculate_mapping_id,a.edb_info_id,a.from_edb_info_id,a.from_edb_code,a.from_source,a.from_source_name,a.sort,a.create_time,a.modify_time,a.from_tag,b.edb_name_source as from_edb_name,b.start_date,b.end_date,b.edb_type FROM predict_edb_conf_calculate_mapping AS a
 			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
 			WHERE a.edb_info_id=? AND a.config_id=?  ORDER BY sort ASC `
 
-	_, err = o.Raw(sql, edbInfoId, configId).QueryRows(&list)
+	err = o.Raw(sql, edbInfoId, configId).Scan(&list).Error
 	return
 }
 
@@ -85,11 +134,48 @@ func GetPredictEdbConfCalculateMappingDetailListByEdbInfoId(fromEdbInfoIdList []
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT a.predict_edb_conf_calculate_mapping_id,a.edb_info_id,a.from_edb_info_id,a.from_edb_code,a.from_source,a.from_source_name,a.sort,a.create_time,a.modify_time,a.from_tag,b.edb_name_source as from_edb_name,b.start_date,b.end_date,b.edb_type,b.edb_code FROM predict_edb_conf_calculate_mapping AS a
 			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
 			WHERE a.edb_info_id in (` + utils.GetOrmInReplace(num) + `) GROUP BY a.edb_info_id ORDER BY sort ASC `
 
-	_, err = o.Raw(sql, fromEdbInfoIdList).QueryRows(&list)
+	err = o.Raw(sql, fromEdbInfoIdList).Scan(&list).Error
 	return
 }
+
+// GetPredictEdbConfCalculateMappingDetailListById 根据配置id获取 配置关联指标信息
+// func GetPredictEdbConfCalculateMappingDetailListById(edbInfoId int) (list []*PredictEdbConfCalculateMappingDetail, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT a.predict_edb_conf_calculate_mapping_id,a.edb_info_id,a.from_edb_info_id,a.from_edb_code,a.from_source,a.from_source_name,a.sort,a.create_time,a.modify_time,a.from_tag,b.edb_name_source as from_edb_name,b.start_date,b.end_date,b.edb_type FROM predict_edb_conf_calculate_mapping AS a
+// 			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+// 			WHERE a.edb_info_id=? ORDER BY sort ASC `
+
+// 	_, err = o.Raw(sql, edbInfoId).QueryRows(&list)
+// 	return
+// }
+
+// // GetPredictEdbConfCalculateMappingDetailListByConfigId 根据配置id和指标id获取 配置关联指标信息
+// func GetPredictEdbConfCalculateMappingDetailListByConfigId(edbInfoId, configId int) (list []*PredictEdbConfCalculateMappingDetail, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT a.predict_edb_conf_calculate_mapping_id,a.edb_info_id,a.from_edb_info_id,a.from_edb_code,a.from_source,a.from_source_name,a.sort,a.create_time,a.modify_time,a.from_tag,b.edb_name_source as from_edb_name,b.start_date,b.end_date,b.edb_type FROM predict_edb_conf_calculate_mapping AS a
+// 			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+// 			WHERE a.edb_info_id=? AND a.config_id=?  ORDER BY sort ASC `
+
+// 	_, err = o.Raw(sql, edbInfoId, configId).QueryRows(&list)
+// 	return
+// }
+
+// // GetPredictEdbConfCalculateMappingDetailListByEdbInfoId 根据 关联指标id列表 来 获取 相关联的配置关联指标信息
+// func GetPredictEdbConfCalculateMappingDetailListByEdbInfoId(fromEdbInfoIdList []int) (list []*PredictEdbConfCalculateMappingDetail, err error) {
+// 	num := len(fromEdbInfoIdList)
+// 	if num <= 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT a.predict_edb_conf_calculate_mapping_id,a.edb_info_id,a.from_edb_info_id,a.from_edb_code,a.from_source,a.from_source_name,a.sort,a.create_time,a.modify_time,a.from_tag,b.edb_name_source as from_edb_name,b.start_date,b.end_date,b.edb_type,b.edb_code FROM predict_edb_conf_calculate_mapping AS a
+// 			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+// 			WHERE a.edb_info_id in (` + utils.GetOrmInReplace(num) + `) GROUP BY a.edb_info_id ORDER BY sort ASC `
+
+// 	_, err = o.Raw(sql, fromEdbInfoIdList).QueryRows(&list)
+// 	return
+// }

+ 39 - 11
models/data_manage/predict_edb_rule_data.go

@@ -1,25 +1,36 @@
 package data_manage
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_chart_lib/global"
 	"time"
 )
 
 // PredictEdbRuleData 预测指标,动态规则的计算数据
+//
+//	type PredictEdbRuleData struct {
+//		PredictEdbRuleDataId int `orm:"column(predict_edb_rule_data_id);pk"`
+//		EdbInfoId            int
+//		ConfigId             int
+//		DataTime             string
+//		Value                float64
+//		CreateTime           time.Time
+//		ModifyTime           time.Time
+//		DataTimestamp        int64
+//	}
 type PredictEdbRuleData struct {
-	PredictEdbRuleDataId int `orm:"column(predict_edb_rule_data_id);pk"`
-	EdbInfoId            int
-	ConfigId             int
-	DataTime             string
-	Value                float64
-	CreateTime           time.Time
-	ModifyTime           time.Time
-	DataTimestamp        int64
+	PredictEdbRuleDataId int       `gorm:"column:predict_edb_rule_data_id;primaryKey" description:"预测指标动态规则计算数据ID" orm:"column(predict_edb_rule_data_id);pk"`
+	EdbInfoId            int       `gorm:"column:edb_info_id" description:"指标ID"`
+	ConfigId             int       `gorm:"column:config_id" description:"配置ID"`
+	DataTime             string    `gorm:"column:data_time" description:"数据时间"`
+	Value                float64   `gorm:"column:value" description:"计算值"`
+	CreateTime           time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime           time.Time `gorm:"column:modify_time" description:"修改时间"`
+	DataTimestamp        int64     `gorm:"column:data_timestamp" description:"数据时间戳"`
 }
 
 // GetPredictEdbRuleDataList 根据基础预测指标id集合 获取 所有的普通指标列表数据
 func GetPredictEdbRuleDataList(edbInfoId, configId int, startDate, endDate string) (list []*PredictEdbRuleData, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	var pars []interface{}
 	sql := ` SELECT * FROM predict_edb_rule_data WHERE edb_info_id = ? AND config_id = ? `
 	if startDate != "" {
@@ -31,6 +42,23 @@ func GetPredictEdbRuleDataList(edbInfoId, configId int, startDate, endDate strin
 		pars = append(pars, endDate)
 	}
 	sql += ` ORDER BY data_time ASC `
-	_, err = o.Raw(sql, edbInfoId, configId, pars).QueryRows(&list)
+	err = o.Raw(sql, edbInfoId, configId, pars).Scan(&list).Error
 	return
 }
+
+// func GetPredictEdbRuleDataList(edbInfoId, configId int, startDate, endDate string) (list []*PredictEdbRuleData, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	var pars []interface{}
+// 	sql := ` SELECT * FROM predict_edb_rule_data WHERE edb_info_id = ? AND config_id = ? `
+// 	if startDate != "" {
+// 		sql += ` AND data_time>=? `
+// 		pars = append(pars, startDate)
+// 	}
+// 	if endDate != "" {
+// 		sql += ` AND data_time<=? `
+// 		pars = append(pars, endDate)
+// 	}
+// 	sql += ` ORDER BY data_time ASC `
+// 	_, err = o.Raw(sql, edbInfoId, configId, pars).QueryRows(&list)
+// 	return
+// }

+ 51 - 57
models/db.go

@@ -1,70 +1,64 @@
 package models
 
-import (
-	"eta_gn/eta_chart_lib/models/data_manage"
-	"eta_gn/eta_chart_lib/models/data_manage/future_good"
-	"eta_gn/eta_chart_lib/utils"
-	_ "github.com/go-sql-driver/mysql"
-	"time"
+// import (
+// 	_ "github.com/go-sql-driver/mysql"
+// )
 
-	"github.com/beego/beego/v2/client/orm"
-)
+// func init() {
 
-func init() {
+// 	_ = orm.RegisterDataBase("default", "mysql", utils.MYSQL_URL)
+// 	orm.SetMaxIdleConns("default", 50)
+// 	orm.SetMaxOpenConns("default", 100)
 
-	_ = orm.RegisterDataBase("default", "mysql", utils.MYSQL_URL)
-	orm.SetMaxIdleConns("default", 50)
-	orm.SetMaxOpenConns("default", 100)
+// 	db, _ := orm.GetDB("default")
+// 	db.SetConnMaxLifetime(10 * time.Minute)
 
-	db, _ := orm.GetDB("default")
-	db.SetConnMaxLifetime(10 * time.Minute)
+// 	_ = orm.RegisterDataBase("data", "mysql", utils.MYSQL_URL_DATA)
+// 	orm.SetMaxIdleConns("data", 50)
+// 	orm.SetMaxOpenConns("data", 100)
 
-	_ = orm.RegisterDataBase("data", "mysql", utils.MYSQL_URL_DATA)
-	orm.SetMaxIdleConns("data", 50)
-	orm.SetMaxOpenConns("data", 100)
+// 	data_db, _ := orm.GetDB("data")
+// 	data_db.SetConnMaxLifetime(10 * time.Minute)
 
-	data_db, _ := orm.GetDB("data")
-	data_db.SetConnMaxLifetime(10 * time.Minute)
+// 	orm.Debug = true
+// 	orm.DebugLog = orm.NewLog(utils.Binlog)
 
-	orm.Debug = true
-	orm.DebugLog = orm.NewLog(utils.Binlog)
+// 	//注册对象
+// 	orm.RegisterModel(
+// 		new(data_manage.EdbInfo),
+// 		new(ShareChartRefreshLog),                       //分享图表刷新日志表
+// 		new(ExcelInfo),                                  //excel表格
+// 		new(data_manage.PredictEdbConf),                 //预测指标配置
+// 		new(data_manage.PredictEdbRuleData),             //预测指标配置生成的数据
+// 		new(data_manage.PredictEdbConfCalculateMapping), //预测指标关系表
+// 		new(data_manage.ChartInfoCorrelation),           // 图表相关性信息
+// 		new(FactorEdbSeriesCalculateDataQjjs),           // 因子指标系列-区间计算数据
+// 	)
+// 	// 期货数据库
+// 	initFutureGood()
 
-	//注册对象
-	orm.RegisterModel(
-		new(data_manage.EdbInfo),
-		new(ShareChartRefreshLog),                       //分享图表刷新日志表
-		new(ExcelInfo),                                  //excel表格
-		new(data_manage.PredictEdbConf),                 //预测指标配置
-		new(data_manage.PredictEdbRuleData),             //预测指标配置生成的数据
-		new(data_manage.PredictEdbConfCalculateMapping), //预测指标关系表
-		new(data_manage.ChartInfoCorrelation),           // 图表相关性信息
-		new(FactorEdbSeriesCalculateDataQjjs),           // 因子指标系列-区间计算数据
-	)
-	// 期货数据库
-	initFutureGood()
+// 	// 初始化部分数据表变量(直接init会有顺序问题=_=!)
+// 	afterInitTable()
+// }
 
-	// 初始化部分数据表变量(直接init会有顺序问题=_=!)
-	afterInitTable()
-}
+// // initFutureGood 注册期货数据 数据表
+// func initFutureGood() {
+// 	//注册对象
+// 	orm.RegisterModel(
+// 		new(future_good.FutureGoodEdbInfo),         //期货指标表
+// 		new(future_good.FutureGoodEdbData),         //期货指标数据表
+// 		new(future_good.ChartInfoFutureGoodProfit), //期货利润图的扩展表
+// 	)
+// }
 
-// initFutureGood 注册期货数据 数据表
-func initFutureGood() {
-	//注册对象
-	orm.RegisterModel(
-		new(future_good.FutureGoodEdbInfo),         //期货指标表
-		new(future_good.FutureGoodEdbData),         //期货指标数据表
-		new(future_good.ChartInfoFutureGoodProfit), //期货利润图的扩展表
-	)
-}
+// // afterInitTable
+// // @Description: 初始化表结构的的后置操作
+// // @author: Roc
+// // @datetime 2024-07-01 13:31:09
+// func afterInitTable() {
+// 	// 初始化指标来源配置
+// 	data_manage.InitEdbSourceVar()
 
-// afterInitTable
-// @Description: 初始化表结构的的后置操作
-// @author: Roc
-// @datetime 2024-07-01 13:31:09
-func afterInitTable() {
-	// 初始化指标来源配置
-	data_manage.InitEdbSourceVar()
-
-	// 初始化是否启用mongo配置
-	InitUseMongoConf()
-}
+// 	// 初始化是否启用mongo配置
+// 	InitUseMongoConf()
+// }

+ 16 - 0
models/dm_base.go

@@ -0,0 +1,16 @@
+package models
+
+import "eta_gn/eta_chart_lib/models/data_manage"
+
+// 达梦数据库初始化
+func AfterInitTable() {
+	afterInitTable()
+}
+
+func afterInitTable() {
+	// 初始化指标来源配置
+	data_manage.InitEdbSourceVar()
+
+	// 初始化是否启用mongo配置
+	InitUseMongoConf()
+}

+ 337 - 87
models/excel_info.go

@@ -1,125 +1,164 @@
 package models
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
+// ExcelInfo excel表格详情表
+// type ExcelInfo struct {
+// 	ExcelInfoId     int       `orm:"column(excel_info_id);pk"`
+// 	Source          int       `description:"表格来源,1:excel插件的表格,2:自定义表格,默认:1"`
+// 	ExcelType       int       `description:"表格类型,1:指标列,2:日期列,默认:1"`
+// 	ExcelName       string    `description:"表格名称"`
+// 	UniqueCode      string    `description:"表格唯一编码"`
+// 	ExcelClassifyId int       `description:"表格分类id"`
+// 	SysUserId       int       `description:"操作人id"`
+// 	SysUserRealName string    `description:"操作人真实姓名"`
+// 	Content         string    `description:"表格内容"`
+// 	ExcelImage      string    `description:"表格图片"`
+// 	FileUrl         string    `description:"表格下载地址"`
+// 	Sort            int       `description:"排序字段,数字越小越排前面"`
+// 	IsDelete        int       `description:"是否删除,0:未删除,1:已删除"`
+// 	ModifyTime      time.Time `description:"最近修改日期"`
+// 	CreateTime      time.Time `description:"创建日期"`
+// }
+
 // ExcelInfo excel表格详情表
 type ExcelInfo struct {
-	ExcelInfoId     int       `orm:"column(excel_info_id);pk"`
-	Source          int       `description:"表格来源,1:excel插件的表格,2:自定义表格,默认:1"`
-	ExcelType       int       `description:"表格类型,1:指标列,2:日期列,默认:1"`
-	ExcelName       string    `description:"表格名称"`
-	UniqueCode      string    `description:"表格唯一编码"`
-	ExcelClassifyId int       `description:"表格分类id"`
-	SysUserId       int       `description:"操作人id"`
-	SysUserRealName string    `description:"操作人真实姓名"`
-	Content         string    `description:"表格内容"`
-	ExcelImage      string    `description:"表格图片"`
-	FileUrl         string    `description:"表格下载地址"`
-	Sort            int       `description:"排序字段,数字越小越排前面"`
-	IsDelete        int       `description:"是否删除,0:未删除,1:已删除"`
-	ModifyTime      time.Time `description:"最近修改日期"`
-	CreateTime      time.Time `description:"创建日期"`
+	ExcelInfoId     int       `gorm:"column:excel_info_id;primaryKey" description:"表格ID"`
+	Source          int       `gorm:"column:source" description:"表格来源,1:excel插件的表格,2:自定义表格,默认:1"`
+	ExcelType       int       `gorm:"column:excel_type" description:"表格类型,1:指标列,2:日期列,默认:1"`
+	ExcelName       string    `gorm:"column:excel_name" description:"表格名称"`
+	UniqueCode      string    `gorm:"column:unique_code" description:"表格唯一编码"`
+	ExcelClassifyId int       `gorm:"column:excel_classify_id" description:"表格分类id"`
+	SysUserId       int       `gorm:"column:sys_user_id" description:"操作人id"`
+	SysUserRealName string    `gorm:"column:sys_user_real_name" description:"操作人真实姓名"`
+	Content         string    `gorm:"column:content" description:"表格内容"`
+	ExcelImage      string    `gorm:"column:excel_image" description:"表格图片"`
+	FileUrl         string    `gorm:"column:file_url" description:"表格下载地址"`
+	Sort            int       `gorm:"column:sort" description:"排序字段,数字越小越排前面"`
+	IsDelete        int       `gorm:"column:is_delete" description:"是否删除,0:未删除,1:已删除"`
+	ModifyTime      time.Time `gorm:"column:modify_time" description:"最近修改日期"`
+	CreateTime      time.Time `gorm:"column:create_time" description:"创建日期"`
+}
+
+func (e *ExcelInfo) TableName() string {
+	return "excel_info"
 }
 
 // Update 更新 excel表格基础信息
 func (excelInfo *ExcelInfo) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(excelInfo, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(excelInfo).Select(cols).Updates(excelInfo).Error
 	return
 }
 
+// Update 更新 excel表格基础信息
+// func (excelInfo *ExcelInfo) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(excelInfo, cols...)
+// 	return
+// }
+
+//	type MyExcelInfoList struct {
+//		ExcelInfoId     int       `orm:"column(excel_info_id);pk"`
+//		ExcelName       string    `description:"表格名称"`
+//		UniqueCode      string    `description:"表格唯一编码"`
+//		ExcelClassifyId int       `description:"表格分类id"`
+//		SysUserId       int       `description:"操作人id"`
+//		SysUserRealName string    `description:"操作人真实姓名"`
+//		ExcelImage      string    `description:"表格图片"`
+//		FileUrl         string    `description:"表格下载地址"`
+//		Sort            int       `description:"排序字段,数字越小越排前面"`
+//		ModifyTime      time.Time `description:"最近修改日期"`
+//		CreateTime      time.Time `description:"创建日期"`
+//	}
 type MyExcelInfoList struct {
-	ExcelInfoId     int       `orm:"column(excel_info_id);pk"`
-	ExcelName       string    `description:"表格名称"`
-	UniqueCode      string    `description:"表格唯一编码"`
-	ExcelClassifyId int       `description:"表格分类id"`
-	SysUserId       int       `description:"操作人id"`
-	SysUserRealName string    `description:"操作人真实姓名"`
-	ExcelImage      string    `description:"表格图片"`
-	FileUrl         string    `description:"表格下载地址"`
-	Sort            int       `description:"排序字段,数字越小越排前面"`
-	ModifyTime      time.Time `description:"最近修改日期"`
-	CreateTime      time.Time `description:"创建日期"`
+	ExcelInfoId     int       `gorm:"column:excel_info_id;primaryKey" description:"表格ID" orm:"column(excel_info_id);pk"`
+	ExcelName       string    `gorm:"column:excel_name" description:"表格名称"`
+	UniqueCode      string    `gorm:"column:unique_code" description:"表格唯一编码"`
+	ExcelClassifyId int       `gorm:"column:excel_classify_id" description:"表格分类id"`
+	SysUserId       int       `gorm:"column:sys_user_id" description:"操作人id"`
+	SysUserRealName string    `gorm:"column:sys_user_real_name" description:"操作人真实姓名"`
+	ExcelImage      string    `gorm:"column:excel_image" description:"表格图片"`
+	FileUrl         string    `gorm:"column:file_url" description:"表格下载地址"`
+	Sort            int       `gorm:"column:sort" description:"排序字段,数字越小越排前面"`
+	ModifyTime      time.Time `gorm:"column:modify_time" description:"最近修改日期"`
+	CreateTime      time.Time `gorm:"column:create_time" description:"创建日期"`
 }
 
 // AddExcelInfo 新增表格
 func AddExcelInfo(excelInfo *ExcelInfo) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	// 表格信息入库
-	lastId, err := o.Insert(excelInfo)
-	if err != nil {
-		return
-	}
-	excelInfo.ExcelInfoId = int(lastId)
+	err = o.Create(excelInfo).Error
 	return
 }
 
 // EditExcelInfo 编辑表格
 func EditExcelInfo(excelInfo *ExcelInfo, updateExcelInfoParams []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	// ETA表格信息变更
-	_, err = o.Update(excelInfo, updateExcelInfoParams...)
+	err = o.Model(excelInfo).Select(updateExcelInfoParams).Updates(excelInfo).Error
 	return
 }
 
 // GetExcelInfoById 根据id 获取eta表格详情
 func GetExcelInfoById(excelInfoId int) (item *ExcelInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_info WHERE excel_info_id=? AND is_delete=0 `
-	err = o.Raw(sql, excelInfoId).QueryRow(&item)
+	err = o.Raw(sql, excelInfoId).First(&item).Error
 	return
 }
 
 func GetExcelInfoViewById(excelInfoId int) (item *ExcelInfoView, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_info WHERE excel_info_id=? AND is_delete=0 `
-	err = o.Raw(sql, excelInfoId).QueryRow(&item)
+	err = o.Raw(sql, excelInfoId).First(&item).Error
 	return
 }
 
 func GetExcelInfoCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT COUNT(1) AS count FROM excel_info WHERE 1=1 AND is_delete=0 `
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = o.Raw(sql, pars).Scan(&count).Error
 	return
 }
 
 func GetExcelInfoByCondition(condition string, pars []interface{}) (item *ExcelInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_info WHERE 1=1 AND is_delete=0 `
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = o.Raw(sql, pars).First(&item).Error
 	return
 }
 
 // GetNextExcelInfo 根据分类id获取下一个excel表格
 func GetNextExcelInfo(classifyId int) (item *ExcelInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT b.* FROM excel_classify AS a
 			INNER JOIN excel_info AS b ON a.excel_classify_id=b.excel_classify_id
 			WHERE a.excel_classify_id>? AND is_delete=0
 			ORDER BY a.excel_classify_id ASC
 			LIMIT 1 `
-	err = o.Raw(sql, classifyId).QueryRow(&item)
+	err = o.Raw(sql, classifyId).First(&item).Error
 	return
 }
 
 // EditExcelInfoImage 修改excel表格的图片
 func EditExcelInfoImage(excelInfoId int, imageUrl string) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 
 	sql := ` UPDATE  excel_info SET excel_image=?, modify_time = NOW() WHERE excel_info_id = ? AND is_delete=0 `
-	_, err = o.Raw(sql, imageUrl, excelInfoId).Exec()
+	err = o.Exec(sql, imageUrl, excelInfoId).Error
 	if err != nil {
 		fmt.Println("EditExcelInfoImage Err:", err.Error())
 		return err
@@ -130,55 +169,181 @@ func EditExcelInfoImage(excelInfoId int, imageUrl string) (err error) {
 
 // GetExcelInfoByUniqueCode 根据unique_code来获取excel表格详情
 func GetExcelInfoByUniqueCode(uniqueCode string) (item *ExcelInfoView, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_info WHERE unique_code=? AND is_delete=0 `
-	err = o.Raw(sql, uniqueCode).QueryRow(&item)
+	err = o.Raw(sql, uniqueCode).First(&item).Error
 	return
 }
 
 // GetFirstExcelInfoByClassifyId 获取当前分类下,且排序数相同 的排序第一条的数据
 func GetFirstExcelInfoByClassifyId(classifyId int) (item *ExcelInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_info WHERE excel_classify_id=? AND is_delete=0 order by sort asc,excel_info_id asc limit 1`
-	err = o.Raw(sql, classifyId).QueryRow(&item)
+	err = o.Raw(sql, classifyId).First(&item).Error
 	return
 }
 
 // UpdateExcelInfoSortByClassifyId 根据表格id更新排序
 func UpdateExcelInfoSortByClassifyId(classifyId, nowSort, prevExcelInfoId int, updateSort string) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` update excel_info set sort = ` + updateSort + ` WHERE excel_classify_id=? and sort > ? AND is_delete=0 `
 	if prevExcelInfoId > 0 {
 		sql += ` or (excel_info_id > ` + fmt.Sprint(prevExcelInfoId) + ` and sort = ` + fmt.Sprint(nowSort) + `)`
 	}
-	_, err = o.Raw(sql, classifyId, nowSort).Exec()
+	err = o.Exec(sql, classifyId, nowSort).Error
 	return
 }
 
+// AddExcelInfo 新增表格
+// func AddExcelInfo(excelInfo *ExcelInfo) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	// 表格信息入库
+// 	lastId, err := o.Insert(excelInfo)
+// 	if err != nil {
+// 		return
+// 	}
+// 	excelInfo.ExcelInfoId = int(lastId)
+// 	return
+// }
+
+// // EditExcelInfo 编辑表格
+// func EditExcelInfo(excelInfo *ExcelInfo, updateExcelInfoParams []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	// ETA表格信息变更
+// 	_, err = o.Update(excelInfo, updateExcelInfoParams...)
+// 	return
+// }
+
+// // GetExcelInfoById 根据id 获取eta表格详情
+// func GetExcelInfoById(excelInfoId int) (item *ExcelInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM excel_info WHERE excel_info_id=? AND is_delete=0 `
+// 	err = o.Raw(sql, excelInfoId).QueryRow(&item)
+// 	return
+// }
+
+// func GetExcelInfoViewById(excelInfoId int) (item *ExcelInfoView, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM excel_info WHERE excel_info_id=? AND is_delete=0 `
+// 	err = o.Raw(sql, excelInfoId).QueryRow(&item)
+// 	return
+// }
+
+// func GetExcelInfoCountByCondition(condition string, pars []interface{}) (count int, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT COUNT(1) AS count FROM excel_info WHERE 1=1 AND is_delete=0 `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	err = o.Raw(sql, pars).QueryRow(&count)
+// 	return
+// }
+
+// func GetExcelInfoByCondition(condition string, pars []interface{}) (item *ExcelInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM excel_info WHERE 1=1 AND is_delete=0 `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	err = o.Raw(sql, pars).QueryRow(&item)
+// 	return
+// }
+
+// // GetNextExcelInfo 根据分类id获取下一个excel表格
+// func GetNextExcelInfo(classifyId int) (item *ExcelInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT b.* FROM excel_classify AS a
+// 			INNER JOIN excel_info AS b ON a.excel_classify_id=b.excel_classify_id
+// 			WHERE a.excel_classify_id>? AND is_delete=0
+// 			ORDER BY a.excel_classify_id ASC
+// 			LIMIT 1 `
+// 	err = o.Raw(sql, classifyId).QueryRow(&item)
+// 	return
+// }
+
+// // EditExcelInfoImage 修改excel表格的图片
+// func EditExcelInfoImage(excelInfoId int, imageUrl string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+
+// 	sql := ` UPDATE  excel_info SET excel_image=?, modify_time = NOW() WHERE excel_info_id = ? AND is_delete=0 `
+// 	_, err = o.Raw(sql, imageUrl, excelInfoId).Exec()
+// 	if err != nil {
+// 		fmt.Println("EditExcelInfoImage Err:", err.Error())
+// 		return err
+// 	}
+
+// 	return
+// }
+
+// // GetExcelInfoByUniqueCode 根据unique_code来获取excel表格详情
+// func GetExcelInfoByUniqueCode(uniqueCode string) (item *ExcelInfoView, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM excel_info WHERE unique_code=? AND is_delete=0 `
+// 	err = o.Raw(sql, uniqueCode).QueryRow(&item)
+// 	return
+// }
+
+// // GetFirstExcelInfoByClassifyId 获取当前分类下,且排序数相同 的排序第一条的数据
+// func GetFirstExcelInfoByClassifyId(classifyId int) (item *ExcelInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM excel_info WHERE excel_classify_id=? AND is_delete=0 order by sort asc,excel_info_id asc limit 1`
+// 	err = o.Raw(sql, classifyId).QueryRow(&item)
+// 	return
+// }
+
+// // UpdateExcelInfoSortByClassifyId 根据表格id更新排序
+// func UpdateExcelInfoSortByClassifyId(classifyId, nowSort, prevExcelInfoId int, updateSort string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` update excel_info set sort = ` + updateSort + ` WHERE excel_classify_id=? and sort > ? AND is_delete=0 `
+// 	if prevExcelInfoId > 0 {
+// 		sql += ` or (excel_info_id > ` + fmt.Sprint(prevExcelInfoId) + ` and sort = ` + fmt.Sprint(nowSort) + `)`
+// 	}
+// 	_, err = o.Raw(sql, classifyId, nowSort).Exec()
+// 	return
+// }
+
+//	type ExcelInfoView struct {
+//		ExcelInfoId     int       `orm:"column(excel_info_id);pk"`
+//		Source          int       `description:"表格来源,1:excel插件的表格,2:自定义表格,默认:1"`
+//		ExcelType       int       `description:"表格类型,1:指标列,2:日期列,默认:1"`
+//		ExcelName       string    `description:"表格名称"`
+//		UniqueCode      string    `description:"表格唯一编码"`
+//		ExcelClassifyId int       `description:"表格分类id"`
+//		SysUserId       int       `description:"操作人id"`
+//		SysUserRealName string    `description:"操作人真实姓名"`
+//		Content         string    `description:"表格内容"`
+//		ExcelImage      string    `description:"表格图片"`
+//		FileUrl         string    `description:"表格下载地址"`
+//		Sort            int       `description:"排序字段,数字越小越排前面"`
+//		IsDelete        int       `description:"是否删除,0:未删除,1:已删除" json:"-"`
+//		ModifyTime      time.Time `description:"最近修改日期"`
+//		CreateTime      time.Time `description:"创建日期"`
+//		SourcesFrom     string    `description:"图表来源"`
+//	}
 type ExcelInfoView struct {
-	ExcelInfoId     int       `orm:"column(excel_info_id);pk"`
-	Source          int       `description:"表格来源,1:excel插件的表格,2:自定义表格,默认:1"`
-	ExcelType       int       `description:"表格类型,1:指标列,2:日期列,默认:1"`
-	ExcelName       string    `description:"表格名称"`
-	UniqueCode      string    `description:"表格唯一编码"`
-	ExcelClassifyId int       `description:"表格分类id"`
-	SysUserId       int       `description:"操作人id"`
-	SysUserRealName string    `description:"操作人真实姓名"`
-	Content         string    `description:"表格内容"`
-	ExcelImage      string    `description:"表格图片"`
-	FileUrl         string    `description:"表格下载地址"`
-	Sort            int       `description:"排序字段,数字越小越排前面"`
-	IsDelete        int       `description:"是否删除,0:未删除,1:已删除" json:"-"`
-	ModifyTime      time.Time `description:"最近修改日期"`
-	CreateTime      time.Time `description:"创建日期"`
-	SourcesFrom     string    `description:"图表来源"`
+	ExcelInfoId     int       `gorm:"column:excel_info_id;primaryKey" description:"表格ID" orm:"column(excel_info_id);pk"`
+	Source          int       `gorm:"column:source" description:"表格来源,1:excel插件的表格,2:自定义表格,默认:1"`
+	ExcelType       int       `gorm:"column:excel_type" description:"表格类型,1:指标列,2:日期列,默认:1"`
+	ExcelName       string    `gorm:"column:excel_name" description:"表格名称"`
+	UniqueCode      string    `gorm:"column:unique_code" description:"表格唯一编码"`
+	ExcelClassifyId int       `gorm:"column:excel_classify_id" description:"表格分类id"`
+	SysUserId       int       `gorm:"column:sys_user_id" description:"操作人id"`
+	SysUserRealName string    `gorm:"column:sys_user_real_name" description:"操作人真实姓名"`
+	Content         string    `gorm:"column:content" description:"表格内容"`
+	ExcelImage      string    `gorm:"column:excel_image" description:"表格图片"`
+	FileUrl         string    `gorm:"column:file_url" description:"表格下载地址"`
+	Sort            int       `gorm:"column:sort" description:"排序字段,数字越小越排前面"`
+	IsDelete        int       `gorm:"column:is_delete" description:"是否删除,0:未删除,1:已删除" json:"-"`
+	ModifyTime      time.Time `gorm:"column:modify_time" description:"最近修改日期"`
+	CreateTime      time.Time `gorm:"column:create_time" description:"创建日期"`
+	SourcesFrom     string    `gorm:"column:sources_from" description:"图表来源"`
 }
 
 // GetExcelInfoByClassifyIdAndName 根据分类id和表格名获取表格信息
 func GetExcelInfoByClassifyIdAndName(classifyId int, excelName string) (item *ExcelInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_info WHERE excel_classify_id = ? and excel_name=? AND is_delete=0 `
-	err = o.Raw(sql, classifyId, excelName).QueryRow(&item)
+	err = o.Raw(sql, classifyId, excelName).First(&item).Error
 	return
 }
 
@@ -188,28 +353,29 @@ func GetExcelInfoListByUniqueCodeSlice(uniqueCodeSlice []string) (total int64, i
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_info WHERE unique_code in ("` + utils.GetOrmInReplace(num) + `") AND is_delete=0 `
-	total, err = o.Raw(sql, uniqueCodeSlice).QueryRows(&items)
+	err = o.Raw(sql, uniqueCodeSlice).Scan(&items).Error
+	total = int64(len(items))
 	return
 }
 
 // GetExcelListByCondition 获取excel表格列表数据
 func GetExcelListByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*MyExcelInfoList, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_info WHERE 1=1 AND is_delete=0 `
 	if condition != "" {
 		sql += condition
 	}
 	//sql += " ORDER BY sort ASC,chart_info_id DESC LIMIT ?,? "
 	sql += " ORDER BY create_time DESC LIMIT ?,? "
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&item)
+	err = o.Raw(sql, pars, startSize, pageSize).Scan(&item).Error
 	return
 }
 
 // GetNoContentExcelListByCondition 获取没有content的excel表格列表数据
 func GetNoContentExcelListByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*MyExcelInfoList, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT excel_info_id,excel_name,unique_code,excel_classify_id,sys_user_id,sys_user_real_name,excel_image,file_url,sort,create_time,modify_time
 FROM excel_info WHERE 1=1 AND is_delete=0 `
 	if condition != "" {
@@ -217,43 +383,127 @@ FROM excel_info WHERE 1=1 AND is_delete=0 `
 	}
 	//sql += " ORDER BY sort ASC,chart_info_id DESC LIMIT ?,? "
 	sql += " ORDER BY create_time DESC LIMIT ?,? "
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&item)
+	err = o.Raw(sql, pars, startSize, pageSize).Scan(&item).Error
 	return
 }
 
 func GetExcelListCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT COUNT(1) AS count FROM excel_info WHERE 1=1 AND is_delete=0 `
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = o.Raw(sql, pars).Scan(&count).Error
 	return
 }
 
 // GetExcelViewInfoByExcelInfoId 根据excelInfoId 获取ETA表格详情
 func GetExcelViewInfoByExcelInfoId(excelInfoId int) (item *MyExcelInfoList, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_info WHERE excel_info_id = ? AND is_delete=0 `
-	err = o.Raw(sql, excelInfoId).QueryRow(&item)
+	err = o.Raw(sql, excelInfoId).First(&item).Error
 	return
 }
 
 // GetExcelInfoCountByClassifyId 根据分类id获取名下表格数量
 func GetExcelInfoCountByClassifyId(classifyId int) (total int64, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT count(1) total FROM excel_info WHERE excel_classify_id = ? AND is_delete=0 `
-	err = o.Raw(sql, classifyId).QueryRow(&total)
+	err = o.Raw(sql, classifyId).Scan(&total).Error
 	return
 }
 
 func GetExcelInfoListByCondition(condition string, pars []interface{}) (items []*ExcelInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_info WHERE 1=1 AND is_delete=0 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY sort asc, excel_info_id asc`
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars).Scan(&items).Error
 	return
 }
+
+// GetExcelInfoByClassifyIdAndName 根据分类id和表格名获取表格信息
+// func GetExcelInfoByClassifyIdAndName(classifyId int, excelName string) (item *ExcelInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM excel_info WHERE excel_classify_id = ? and excel_name=? AND is_delete=0 `
+// 	err = o.Raw(sql, classifyId, excelName).QueryRow(&item)
+// 	return
+// }
+
+// // GetExcelInfoListByUniqueCodeSlice 根据表格编码获取表格列表数据
+// func GetExcelInfoListByUniqueCodeSlice(uniqueCodeSlice []string) (total int64, items []*ExcelInfo, err error) {
+// 	num := len(uniqueCodeSlice)
+// 	if num <= 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM excel_info WHERE unique_code in ("` + utils.GetOrmInReplace(num) + `") AND is_delete=0 `
+// 	total, err = o.Raw(sql, uniqueCodeSlice).QueryRows(&items)
+// 	return
+// }
+
+// // GetExcelListByCondition 获取excel表格列表数据
+// func GetExcelListByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*MyExcelInfoList, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM excel_info WHERE 1=1 AND is_delete=0 `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	//sql += " ORDER BY sort ASC,chart_info_id DESC LIMIT ?,? "
+// 	sql += " ORDER BY create_time DESC LIMIT ?,? "
+// 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&item)
+// 	return
+// }
+
+// // GetNoContentExcelListByCondition 获取没有content的excel表格列表数据
+// func GetNoContentExcelListByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*MyExcelInfoList, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT excel_info_id,excel_name,unique_code,excel_classify_id,sys_user_id,sys_user_real_name,excel_image,file_url,sort,create_time,modify_time
+// FROM excel_info WHERE 1=1 AND is_delete=0 `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	//sql += " ORDER BY sort ASC,chart_info_id DESC LIMIT ?,? "
+// 	sql += " ORDER BY create_time DESC LIMIT ?,? "
+// 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&item)
+// 	return
+// }
+
+// func GetExcelListCountByCondition(condition string, pars []interface{}) (count int, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT COUNT(1) AS count FROM excel_info WHERE 1=1 AND is_delete=0 `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	err = o.Raw(sql, pars).QueryRow(&count)
+// 	return
+// }
+
+// // GetExcelViewInfoByExcelInfoId 根据excelInfoId 获取ETA表格详情
+// func GetExcelViewInfoByExcelInfoId(excelInfoId int) (item *MyExcelInfoList, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM excel_info WHERE excel_info_id = ? AND is_delete=0 `
+// 	err = o.Raw(sql, excelInfoId).QueryRow(&item)
+// 	return
+// }
+
+// // GetExcelInfoCountByClassifyId 根据分类id获取名下表格数量
+// func GetExcelInfoCountByClassifyId(classifyId int) (total int64, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT count(1) total FROM excel_info WHERE excel_classify_id = ? AND is_delete=0 `
+// 	err = o.Raw(sql, classifyId).QueryRow(&total)
+// 	return
+// }
+
+// func GetExcelInfoListByCondition(condition string, pars []interface{}) (items []*ExcelInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM excel_info WHERE 1=1 AND is_delete=0 `
+// 	if condition != "" {
+// 		sql += condition
+// 	}
+// 	sql += ` ORDER BY sort asc, excel_info_id asc`
+// 	_, err = o.Raw(sql, pars).QueryRows(&items)
+// 	return
+// }

+ 124 - 46
models/excel_info_rule_mapping.go

@@ -1,82 +1,160 @@
 package models
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"time"
-
-	"github.com/beego/beego/v2/client/orm"
 )
 
+//	type ExcelInfoRuleMapping struct {
+//		ExcelInfoRuleMappingId int       `orm:"pk" description:"主键"`
+//		ExcelInfoId            int       `description:"Excel信息ID"`
+//		RuleType               int       `description:"规则类型"`
+//		LeftValue              string    `description:"左值"`
+//		LeftValueShow          string    `description:"左值前端显示"`
+//		LeftValueType          int       `description:"左值类型"`
+//		RightValue             string    `description:"右值"`
+//		RightValueShow         string    `description:"右值前端显示"`
+//		RightValueType         int       `description:"右值类型"`
+//		FontColor              string    `description:"字体颜色"`
+//		BackgroundColor        string    `description:"背景颜色"`
+//		Remark                 string    `description:"预设颜色说明"`
+//		RemarkEn               string    `description:"预设颜色英文说明"`
+//		Scope                  string    `description:"作用范围"`
+//		ScopeCoord             string    `description:"作用范围坐标"`
+//		ScopeShow              string    `description:"作用范围坐标前端显示"`
+//		CreateTime             time.Time `description:"创建时间"`
+//	}
 type ExcelInfoRuleMapping struct {
-	ExcelInfoRuleMappingId int       `orm:"pk" description:"主键"`
-	ExcelInfoId            int       `description:"Excel信息ID"`
-	RuleType               int       `description:"规则类型"`
-	LeftValue              string    `description:"左值"`
-	LeftValueShow          string    `description:"左值前端显示"`
-	LeftValueType          int       `description:"左值类型"`
-	RightValue             string    `description:"右值"`
-	RightValueShow         string    `description:"右值前端显示"`
-	RightValueType         int       `description:"右值类型"`
-	FontColor              string    `description:"字体颜色"`
-	BackgroundColor        string    `description:"背景颜色"`
-	Remark                 string    `description:"预设颜色说明"`
-	RemarkEn               string    `description:"预设颜色英文说明"`
-	Scope                  string    `description:"作用范围"`
-	ScopeCoord             string    `description:"作用范围坐标"`
-	ScopeShow              string    `description:"作用范围坐标前端显示"`
-	CreateTime             time.Time `description:"创建时间"`
+	ExcelInfoRuleMappingId int       `gorm:"column:excel_info_rule_mapping_id;primaryKey" description:"主键"`
+	ExcelInfoId            int       `gorm:"column:excel_info_id" description:"Excel信息ID"`
+	RuleType               int       `gorm:"column:rule_type" description:"规则类型"`
+	LeftValue              string    `gorm:"column:left_value" description:"左值"`
+	LeftValueShow          string    `gorm:"column:left_value_show" description:"左值前端显示"`
+	LeftValueType          int       `gorm:"column:left_value_type" description:"左值类型"`
+	RightValue             string    `gorm:"column:right_value" description:"右值"`
+	RightValueShow         string    `gorm:"column:right_value_show" description:"右值前端显示"`
+	RightValueType         int       `gorm:"column:right_value_type" description:"右值类型"`
+	FontColor              string    `gorm:"column:font_color" description:"字体颜色"`
+	BackgroundColor        string    `gorm:"column:background_color" description:"背景颜色"`
+	Remark                 string    `gorm:"column:remark" description:"预设颜色说明"`
+	RemarkEn               string    `gorm:"column:remark_en" description:"预设颜色英文说明"`
+	Scope                  string    `gorm:"column:scope" description:"作用范围"`
+	ScopeCoord             string    `gorm:"column:scope_coord" description:"作用范围坐标"`
+	ScopeShow              string    `gorm:"column:scope_show" description:"作用范围坐标前端显示"`
+	CreateTime             time.Time `gorm:"column:create_time" description:"创建时间"`
+}
+
+func (e *ExcelInfoRuleMapping) TableName() string {
+	return "excel_info_rule_mapping"
 }
 
+// type ExcelInfoRuleMappingView struct {
+// 	ExcelInfoRuleMappingId int    `orm:"pk" description:"主键"`
+// 	ExcelInfoId            int    `description:"Excel信息ID"`
+// 	RuleType               int    `description:"规则类型:1-大于,2-小于,3-介于,4-等于,5-发生日期"`
+// 	LeftValue              string `description:"左值"`
+// 	LeftValueBack          string `description:"左值前端显示"`
+// 	LeftValueType          int    `description:"左值类型"`
+// 	RightValue             string `description:"右值"`
+// 	RightValueBack         string `description:"右值前端显示"`
+// 	RightValueType         int    `description:"右值类型"`
+// 	FontColor              string `description:"字体颜色"`
+// 	BackgroundColor        string `description:"背景颜色"`
+// 	Remark                 string `description:"预设颜色说明"`
+// 	RemarkEn               string `description:"预设颜色英文说明"`
+// 	Scope                  string `description:"作用范围"`
+// 	ScopeCoord             string `description:"作用范围坐标"`
+// 	ScopeShow              string `description:"作用范围坐标前端显示"`
+// 	CreateTime             string `description:"创建时间"`
+// }
+
 type ExcelInfoRuleMappingView struct {
-	ExcelInfoRuleMappingId int    `orm:"pk" description:"主键"`
-	ExcelInfoId            int    `description:"Excel信息ID"`
-	RuleType               int    `description:"规则类型:1-大于,2-小于,3-介于,4-等于,5-发生日期"`
-	LeftValue              string `description:"左值"`
-	LeftValueBack          string `description:"左值前端显示"`
-	LeftValueType          int    `description:"左值类型"`
-	RightValue             string `description:"右值"`
-	RightValueBack         string `description:"右值前端显示"`
-	RightValueType         int    `description:"右值类型"`
-	FontColor              string `description:"字体颜色"`
-	BackgroundColor        string `description:"背景颜色"`
-	Remark                 string `description:"预设颜色说明"`
-	RemarkEn               string `description:"预设颜色英文说明"`
-	Scope                  string `description:"作用范围"`
-	ScopeCoord             string `description:"作用范围坐标"`
-	ScopeShow              string `description:"作用范围坐标前端显示"`
-	CreateTime             string `description:"创建时间"`
+	ExcelInfoRuleMappingId int    `gorm:"column:excel_info_rule_mapping_id;primaryKey" description:"主键"`
+	ExcelInfoId            int    `gorm:"column:excel_info_id" description:"Excel信息ID"`
+	RuleType               int    `gorm:"column:rule_type" description:"规则类型:1-大于,2-小于,3-介于,4-等于,5-发生日期"`
+	LeftValue              string `gorm:"column:left_value" description:"左值"`
+	LeftValueBack          string `gorm:"column:left_value_back" description:"左值前端显示"`
+	LeftValueType          int    `gorm:"column:left_value_type" description:"左值类型"`
+	RightValue             string `gorm:"column:right_value" description:"右值"`
+	RightValueBack         string `gorm:"column:right_value_back" description:"右值前端显示"`
+	RightValueType         int    `gorm:"column:right_value_type" description:"右值类型"`
+	FontColor              string `gorm:"column:font_color" description:"字体颜色"`
+	BackgroundColor        string `gorm:"column:background_color" description:"背景颜色"`
+	Remark                 string `gorm:"column:remark" description:"预设颜色说明"`
+	RemarkEn               string `gorm:"column:remark_en" description:"预设颜色英文说明"`
+	Scope                  string `gorm:"column:scope" description:"作用范围"`
+	ScopeCoord             string `gorm:"column:scope_coord" description:"作用范围坐标"`
+	ScopeShow              string `gorm:"column:scope_show" description:"作用范围坐标前端显示"`
+	CreateTime             string `gorm:"column:create_time" description:"创建时间"`
 }
 
 func (e *ExcelInfoRuleMapping) Insert() (insertId int64, err error) {
-	o := orm.NewOrmUsingDB("data")
-	insertId, err = o.Insert(e)
+	o := global.DmSQL["data"]
+	err = o.Create(e).Error
+	insertId = int64(e.ExcelInfoRuleMappingId)
 	return
 }
 
 func (e *ExcelInfoRuleMapping) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(e, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(e).Select(cols).Updates(e).Error
 	return
 }
 
 // GetExcelRuleMappingByExcelInfoId 根据excelInfoId获取规则映射信息
 func GetExcelRuleMappingByExcelInfoId(id int) (items []*ExcelInfoRuleMappingView, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM excel_info_rule_mapping WHERE excel_info_id = ? ORDER BY create_time ASC`
-	_, err = o.Raw(sql, id).QueryRows(&items)
+	err = o.Raw(sql, id).Scan(&items).Error
 	return
 }
 
 // GetExcelRuleMappingById 根据主键Id获取规则映射信息
 func GetExcelRuleMappingById(id int) (item *ExcelInfoRuleMappingView, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM excel_info_rule_mapping WHERE excel_info_rule_mapping_id = ?`
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = o.Raw(sql, id).First(&item).Error
 	return
 }
 
 func DeleteExcelRuleMappingById(id int) (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := `DELETE FROM excel_info_rule_mapping WHERE excel_info_rule_mapping_id = ?`
-	_, err = o.Raw(sql, id).Exec()
+	err = o.Exec(sql, id).Error
 	return
 }
+
+// func (e *ExcelInfoRuleMapping) Insert() (insertId int64, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	insertId, err = o.Insert(e)
+// 	return
+// }
+
+// func (e *ExcelInfoRuleMapping) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(e, cols...)
+// 	return
+// }
+
+// // GetExcelRuleMappingByExcelInfoId 根据excelInfoId获取规则映射信息
+// func GetExcelRuleMappingByExcelInfoId(id int) (items []*ExcelInfoRuleMappingView, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM excel_info_rule_mapping WHERE excel_info_id = ? ORDER BY create_time ASC`
+// 	_, err = o.Raw(sql, id).QueryRows(&items)
+// 	return
+// }
+
+// // GetExcelRuleMappingById 根据主键Id获取规则映射信息
+// func GetExcelRuleMappingById(id int) (item *ExcelInfoRuleMappingView, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `SELECT * FROM excel_info_rule_mapping WHERE excel_info_rule_mapping_id = ?`
+// 	err = o.Raw(sql, id).QueryRow(&item)
+// 	return
+// }
+
+// func DeleteExcelRuleMappingById(id int) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := `DELETE FROM excel_info_rule_mapping WHERE excel_info_rule_mapping_id = ?`
+// 	_, err = o.Raw(sql, id).Exec()
+// 	return
+// }

+ 188 - 44
models/factor_edb_series_calculate_data_qjjs.go

@@ -1,24 +1,36 @@
 package models
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
 
 // FactorEdbSeriesCalculateDataQjjs 因子指标系列-区间计算数据表
+// type FactorEdbSeriesCalculateDataQjjs struct {
+// 	FactorEdbSeriesCalculateDataId int       `orm:"column(factor_edb_series_calculate_data_id);pk"`
+// 	FactorEdbSeriesId              int       `description:"因子指标系列ID"`
+// 	EdbInfoId                      int       `description:"指标ID"`
+// 	EdbCode                        string    `description:"指标编码"`
+// 	DataTime                       time.Time `description:"数据日期"`
+// 	Value                          float64   `description:"数据值"`
+// 	CreateTime                     time.Time `description:"创建时间"`
+// 	ModifyTime                     time.Time `description:"修改时间"`
+// 	DataTimestamp                  int64     `description:"数据日期时间戳"`
+// }
+
 type FactorEdbSeriesCalculateDataQjjs struct {
-	FactorEdbSeriesCalculateDataId int       `orm:"column(factor_edb_series_calculate_data_id);pk"`
-	FactorEdbSeriesId              int       `description:"因子指标系列ID"`
-	EdbInfoId                      int       `description:"指标ID"`
-	EdbCode                        string    `description:"指标编码"`
-	DataTime                       time.Time `description:"数据日期"`
-	Value                          float64   `description:"数据值"`
-	CreateTime                     time.Time `description:"创建时间"`
-	ModifyTime                     time.Time `description:"修改时间"`
-	DataTimestamp                  int64     `description:"数据日期时间戳"`
+	FactorEdbSeriesCalculateDataId int       `gorm:"column:factor_edb_series_calculate_data_id;primaryKey" description:"因子指标系列计算数据ID" orm:"column(factor_edb_series_calculate_data_id);pk"`
+	FactorEdbSeriesId              int       `gorm:"column:factor_edb_series_id" description:"因子指标系列ID"`
+	EdbInfoId                      int       `gorm:"column:edb_info_id" description:"指标ID"`
+	EdbCode                        string    `gorm:"column:edb_code" description:"指标编码"`
+	DataTime                       time.Time `gorm:"column:data_time" description:"数据日期"`
+	Value                          float64   `gorm:"column:value" description:"数据值"`
+	CreateTime                     time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime                     time.Time `gorm:"column:modify_time" description:"修改时间"`
+	DataTimestamp                  int64     `gorm:"column:data_timestamp" description:"数据日期时间戳"`
 }
 
 func (m *FactorEdbSeriesCalculateDataQjjs) TableName() string {
@@ -52,12 +64,8 @@ func (m *FactorEdbSeriesCalculateDataQjjs) Cols() FactorEdbSeriesCalculateDataQj
 }
 
 func (m *FactorEdbSeriesCalculateDataQjjs) Create() (err error) {
-	o := orm.NewOrmUsingDB("data")
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.FactorEdbSeriesCalculateDataId = int(id)
+	o := global.DmSQL["data"]
+	err = o.Create(m).Error
 	return
 }
 
@@ -65,21 +73,21 @@ func (m *FactorEdbSeriesCalculateDataQjjs) CreateMulti(items []*FactorEdbSeriesC
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.InsertMulti(500, items)
+	o := global.DmSQL["data"]
+	err = o.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }
 
 func (m *FactorEdbSeriesCalculateDataQjjs) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Update(m, cols...)
+	o := global.DmSQL["data"]
+	err = o.Model(m).Select(cols).Updates(m).Error
 	return
 }
 
 func (m *FactorEdbSeriesCalculateDataQjjs) Remove() (err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	_, err = o.Raw(sql, m.FactorEdbSeriesCalculateDataId).Exec()
+	err = o.Exec(sql, m.FactorEdbSeriesCalculateDataId).Error
 	return
 }
 
@@ -87,9 +95,9 @@ func (m *FactorEdbSeriesCalculateDataQjjs) MultiRemove(ids []int) (err error) {
 	if len(ids) == 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
-	_, err = o.Raw(sql, ids).Exec()
+	err = o.Exec(sql, ids).Error
 	return
 }
 
@@ -97,39 +105,39 @@ func (m *FactorEdbSeriesCalculateDataQjjs) RemoveByCondition(condition string, p
 	if condition == "" {
 		return
 	}
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
-	_, err = o.Raw(sql, pars).Exec()
+	err = o.Exec(sql, pars).Error
 	return
 }
 
 func (m *FactorEdbSeriesCalculateDataQjjs) GetItemById(id int) (item *FactorEdbSeriesCalculateDataQjjs, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = o.Raw(sql, id).First(&item).Error
 	return
 }
 
 func (m *FactorEdbSeriesCalculateDataQjjs) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *FactorEdbSeriesCalculateDataQjjs, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	order := ``
 	if orderRule != "" {
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = o.Raw(sql, pars).First(&item).Error
 	return
 }
 
 func (m *FactorEdbSeriesCalculateDataQjjs) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = o.Raw(sql, pars).Scan(&count).Error
 	return
 }
 
 func (m *FactorEdbSeriesCalculateDataQjjs) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*FactorEdbSeriesCalculateDataQjjs, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -139,12 +147,12 @@ func (m *FactorEdbSeriesCalculateDataQjjs) GetItemsByCondition(condition string,
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars).Scan(&items).Error
 	return
 }
 
 func (m *FactorEdbSeriesCalculateDataQjjs) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*FactorEdbSeriesCalculateDataQjjs, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -154,18 +162,134 @@ func (m *FactorEdbSeriesCalculateDataQjjs) GetPageItemsByCondition(condition str
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	err = o.Raw(sql, pars, startSize, pageSize).Scan(&items).Error
 	return
 }
 
+// func (m *FactorEdbSeriesCalculateDataQjjs) Create() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	id, err := o.Insert(m)
+// 	if err != nil {
+// 		return
+// 	}
+// 	m.FactorEdbSeriesCalculateDataId = int(id)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesCalculateDataQjjs) CreateMulti(items []*FactorEdbSeriesCalculateDataQjjs) (err error) {
+// 	if len(items) == 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.InsertMulti(500, items)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesCalculateDataQjjs) Update(cols []string) (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Update(m, cols...)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesCalculateDataQjjs) Remove() (err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+// 	_, err = o.Raw(sql, m.FactorEdbSeriesCalculateDataId).Exec()
+// 	return
+// }
+
+// func (m *FactorEdbSeriesCalculateDataQjjs) MultiRemove(ids []int) (err error) {
+// 	if len(ids) == 0 {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
+// 	_, err = o.Raw(sql, ids).Exec()
+// 	return
+// }
+
+// func (m *FactorEdbSeriesCalculateDataQjjs) RemoveByCondition(condition string, pars []interface{}) (err error) {
+// 	if condition == "" {
+// 		return
+// 	}
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
+// 	_, err = o.Raw(sql, pars).Exec()
+// 	return
+// }
+
+// func (m *FactorEdbSeriesCalculateDataQjjs) GetItemById(id int) (item *FactorEdbSeriesCalculateDataQjjs, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
+// 	err = o.Raw(sql, id).QueryRow(&item)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesCalculateDataQjjs) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *FactorEdbSeriesCalculateDataQjjs, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	order := ``
+// 	if orderRule != "" {
+// 		order = ` ORDER BY ` + orderRule
+// 	}
+// 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
+// 	err = o.Raw(sql, pars).QueryRow(&item)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesCalculateDataQjjs) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
+// 	err = o.Raw(sql, pars).QueryRow(&count)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesCalculateDataQjjs) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*FactorEdbSeriesCalculateDataQjjs, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	fields := strings.Join(fieldArr, ",")
+// 	if len(fieldArr) == 0 {
+// 		fields = `*`
+// 	}
+// 	order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
+// 	if orderRule != "" {
+// 		order = ` ORDER BY ` + orderRule
+// 	}
+// 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+// 	_, err = o.Raw(sql, pars).QueryRows(&items)
+// 	return
+// }
+
+// func (m *FactorEdbSeriesCalculateDataQjjs) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*FactorEdbSeriesCalculateDataQjjs, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	fields := strings.Join(fieldArr, ",")
+// 	if len(fieldArr) == 0 {
+// 		fields = `*`
+// 	}
+// 	order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
+// 	if orderRule != "" {
+// 		order = ` ORDER BY ` + orderRule
+// 	}
+// 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
+// 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+// 	return
+// }
+
 // FactorEdbSeriesCalculateDataQjjsItem 因子指标系列-计算数据信息
+//
+//	type FactorEdbSeriesCalculateDataQjjsItem struct {
+//		DataId            int     `description:"数据ID"`
+//		FactorEdbSeriesId int     `description:"因子指标系列ID"`
+//		EdbInfoId         int     `description:"指标ID"`
+//		EdbCode           string  `description:"指标编码"`
+//		DataTime          string  `description:"数据日期"`
+//		Value             float64 `description:"数据值"`
+//	}
 type FactorEdbSeriesCalculateDataQjjsItem struct {
-	DataId            int     `description:"数据ID"`
-	FactorEdbSeriesId int     `description:"因子指标系列ID"`
-	EdbInfoId         int     `description:"指标ID"`
-	EdbCode           string  `description:"指标编码"`
-	DataTime          string  `description:"数据日期"`
-	Value             float64 `description:"数据值"`
+	DataId            int     `gorm:"column:data_id;primaryKey" description:"数据ID"`
+	FactorEdbSeriesId int     `gorm:"column:factor_edb_series_id" description:"因子指标系列ID"`
+	EdbInfoId         int     `gorm:"column:edb_info_id" description:"指标ID"`
+	EdbCode           string  `gorm:"column:edb_code" description:"指标编码"`
+	DataTime          string  `gorm:"column:data_time" description:"数据日期"`
+	Value             float64 `gorm:"column:value" description:"数据值"`
 }
 
 func (m *FactorEdbSeriesCalculateDataQjjs) Format2Item() (item *FactorEdbSeriesCalculateDataQjjsItem) {
@@ -192,7 +316,27 @@ func (m *FactorEdbSeriesCalculateDataQjjs) GetEdbDataList(seriesId int, edbInfoI
 
 	sql += ` ORDER BY data_time ASC `
 	sql = fmt.Sprintf(sql, m.TableName())
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	o := global.DmSQL["data"]
+	err = o.Raw(sql, pars).Scan(&list).Error
 	return
 }
+
+// func (m *FactorEdbSeriesCalculateDataQjjs) GetEdbDataList(seriesId int, edbInfoId int, startDate, endDate string) (list []*EdbDataList, err error) {
+// 	var pars []interface{}
+// 	sql := `SELECT factor_edb_series_calculate_data_id as edb_data_id  ,edb_info_id,data_time,value,data_timestamp FROM %s WHERE edb_info_id=? and factor_edb_series_id=? `
+// 	pars = append(pars, edbInfoId, seriesId)
+// 	if startDate != "" {
+// 		sql += ` AND data_time>=? `
+// 		pars = append(pars, startDate)
+// 	}
+// 	if endDate != "" {
+// 		sql += ` AND data_time<=? `
+// 		pars = append(pars, endDate)
+// 	}
+
+// 	sql += ` ORDER BY data_time ASC `
+// 	sql = fmt.Sprintf(sql, m.TableName())
+// 	o := orm.NewOrmUsingDB("data")
+// 	_, err = o.Raw(sql, pars).QueryRows(&list)
+// 	return
+// }

+ 21 - 7
models/share_chart_refresh_log.go

@@ -1,21 +1,35 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_chart_lib/global"
 	"time"
 )
 
 // ShareChartRefreshLog 分享图表的日志
+//
+//	type ShareChartRefreshLog struct {
+//		Id         int    `orm:"column(id);pk"`
+//		Ip         string `description:"来源ip"`
+//		ChartId    int    `description:"图表分类id"`
+//		CreateTime time.Time
+//	}
 type ShareChartRefreshLog struct {
-	Id         int    `orm:"column(id);pk"`
-	Ip         string `description:"来源ip"`
-	ChartId    int    `description:"图表分类id"`
-	CreateTime time.Time
+	Id         int       `gorm:"column:id;primaryKey" description:"主键ID" orm:"column(id);pk"`
+	Ip         string    `gorm:"column:ip" description:"来源IP"`
+	ChartId    int       `gorm:"column:chart_id" description:"图表分类ID"`
+	CreateTime time.Time `gorm:"column:create_time" description:"创建时间"`
 }
 
 // AddShareChartRefreshLog 添加日志
 func AddShareChartRefreshLog(item *ShareChartRefreshLog) (lastId int64, err error) {
-	o := orm.NewOrmUsingDB("data")
-	lastId, err = o.Insert(item)
+	o := global.DmSQL["data"]
+	err = o.Create(item).Error
+	lastId = int64(item.Id)
 	return
 }
+
+// func AddShareChartRefreshLog(item *ShareChartRefreshLog) (lastId int64, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	lastId, err = o.Insert(item)
+// 	return
+// }

+ 40 - 17
models/table.go

@@ -1,35 +1,58 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_chart_lib/global"
 	"time"
 )
 
+//	type TableInfo struct {
+//		TableInfoId     int       `orm:"column(table_info_id);pk"`
+//		TableName       string    `description:"表格名称"`
+//		UniqueCode      string    `description:"表格唯一编码"`
+//		TableClassifyId int       `description:"表格分类id"`
+//		SysUserId       int       `description:"操作人id"`
+//		SysUserRealName string    `description:"操作人真实姓名"`
+//		StartDate       time.Time `description:"开始日期"`
+//		EdbInfoIds      string    `description:"指标id"`
+//		TableType       int       `description:"表格类型,1:指标+日期"`
+//		TableImage      string    `description:"图表图片"`
+//		Sort            int       `description:"排序字段,数字越小越排前面"`
+//		EdbEndDate      time.Time `description:"指标最后更新日期"`
+//		ModifyTime      time.Time
+//		CreateTime      time.Time
+//	}
 type TableInfo struct {
-	TableInfoId     int       `orm:"column(table_info_id);pk"`
-	TableName       string    `description:"表格名称"`
-	UniqueCode      string    `description:"表格唯一编码"`
-	TableClassifyId int       `description:"表格分类id"`
-	SysUserId       int       `description:"操作人id"`
-	SysUserRealName string    `description:"操作人真实姓名"`
-	StartDate       time.Time `description:"开始日期"`
-	EdbInfoIds      string    `description:"指标id"`
-	TableType       int       `description:"表格类型,1:指标+日期"`
-	TableImage      string    `description:"图表图片"`
-	Sort            int       `description:"排序字段,数字越小越排前面"`
-	EdbEndDate      time.Time `description:"指标最后更新日期"`
-	ModifyTime      time.Time
-	CreateTime      time.Time
+	TableInfoId     int       `gorm:"column:table_info_id;primaryKey" description:"表格ID" orm:"column(table_info_id);pk"`
+	TableName       string    `gorm:"column:table_name" description:"表格名称"`
+	UniqueCode      string    `gorm:"column:unique_code" description:"表格唯一编码"`
+	TableClassifyId int       `gorm:"column:table_classify_id" description:"表格分类ID"`
+	SysUserId       int       `gorm:"column:sys_user_id" description:"操作人ID"`
+	SysUserRealName string    `gorm:"column:sys_user_real_name" description:"操作人真实姓名"`
+	StartDate       time.Time `gorm:"column:start_date" description:"开始日期"`
+	EdbInfoIds      string    `gorm:"column:edb_info_ids" description:"指标ID"`
+	TableType       int       `gorm:"column:table_type" description:"表格类型,1:指标+日期"`
+	TableImage      string    `gorm:"column:table_image" description:"表图片"`
+	Sort            int       `gorm:"column:sort" description:"排序字段,数字越小越排前面"`
+	EdbEndDate      time.Time `gorm:"column:edb_end_date" description:"指标最后更新日期"`
+	ModifyTime      time.Time `gorm:"column:modify_time" description:"修改时间"`
+	CreateTime      time.Time `gorm:"column:create_time" description:"创建时间"`
 }
 
 // GetTableInfoByUniqueCode 根据union_code 获取表格信息
 func GetTableInfoByUniqueCode(uniqueCode string) (item *TableInfo, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM table_info WHERE unique_code=? `
-	err = o.Raw(sql, uniqueCode).QueryRow(&item)
+	err = o.Raw(sql, uniqueCode).First(&item).Error
 	return
 }
 
+// func GetTableInfoByUniqueCode(uniqueCode string) (item *TableInfo, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	sql := ` SELECT * FROM table_info WHERE unique_code=? `
+// 	err = o.Raw(sql, uniqueCode).QueryRow(&item)
+// 	return
+// }
+
 // TableInfoDetailResp 表格详情返回
 type TableInfoDetailResp struct {
 	TableInfo     *TableInfo

+ 33 - 26
models/table_data.go

@@ -1,40 +1,47 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_chart_lib/global"
 	"time"
 )
 
 type TableData struct {
-	TableDataId       int       `orm:"column(table_data_id);pk"`
-	TableInfoId       int       `description:"表格id"`
-	Date              time.Time `description:"指标时间"`
-	DataCol1          string    `orm:"column(data_col_1);" description:"第1个表格的数据"`
-	DataCol2          string    `orm:"column(data_col_2);" description:"第2个表格的数据"`
-	DataCol3          string    `orm:"column(data_col_3);" description:"第3个表格的数据"`
-	DataCol4          string    `orm:"column(data_col_4);" description:"第4个表格的数据"`
-	DataCol5          string    `orm:"column(data_col_5);" description:"第5个表格的数据"`
-	DataCol6          string    `orm:"column(data_col_6);" description:"第6个表格的数据"`
-	DataCol7          string    `orm:"column(data_col_7);" description:"第7个表格的数据"`
-	DataCol8          string    `orm:"column(data_col_8);" description:"第8个表格的数据"`
-	DataCol9          string    `orm:"column(data_col_9);" description:"第9个表格的数据"`
-	DataCol10         string    `orm:"column(data_col_10);" description:"第10个表格的数据"`
-	DataType          int8      `description:"数据类型,默认的区间数据是 1;插入数据是 2"`
-	Sort              int       `description:"排序字段,越小越靠前"`
-	AfterTableDataId  int       `description:"在某个表格数据id后面"`
-	BeforeTableDataId int       `description:"在某个表格数据id前面"`
-	ModifyTime        time.Time `description:"修改时间"`
-	CreateTime        time.Time `description:"创建时间"`
+	TableDataId       int       `orm:"column(table_data_id);pk" gorm:"column:table_data_id;primary_key"`
+	TableInfoId       int       `description:"表格id" gorm:"column:table_info_id"`
+	Date              time.Time `description:"指标时间" gorm:"column:date"`
+	DataCol1          string    `orm:"column(data_col_1);" description:"第1个表格的数据" gorm:"column:data_col_1"`
+	DataCol2          string    `orm:"column(data_col_2);" description:"第2个表格的数据" gorm:"column:data_col_2"`
+	DataCol3          string    `orm:"column(data_col_3);" description:"第3个表格的数据" gorm:"column:data_col_3"`
+	DataCol4          string    `orm:"column(data_col_4);" description:"第4个表格的数据" gorm:"column:data_col_4"`
+	DataCol5          string    `orm:"column(data_col_5);" description:"第5个表格的数据" gorm:"column:data_col_5"`
+	DataCol6          string    `orm:"column(data_col_6);" description:"第6个表格的数据" gorm:"column:data_col_6"`
+	DataCol7          string    `orm:"column(data_col_7);" description:"第7个表格的数据" gorm:"column:data_col_7"`
+	DataCol8          string    `orm:"column(data_col_8);" description:"第8个表格的数据" gorm:"column:data_col_8"`
+	DataCol9          string    `orm:"column(data_col_9);" description:"第9个表格的数据" gorm:"column:data_col_9"`
+	DataCol10         string    `orm:"column(data_col_10);" description:"第10个表格的数据" gorm:"column:data_col_10"`
+	DataType          int8      `description:"数据类型,默认的区间数据是 1;插入数据是 2" gorm:"column:data_type"`
+	Sort              int       `description:"排序字段,越小越靠前" gorm:"column:sort"`
+	AfterTableDataId  int       `description:"在某个表格数据id后面" gorm:"column:after_table_data_id"`
+	BeforeTableDataId int       `description:"在某个表格数据id前面" gorm:"column:before_table_data_id"`
+	ModifyTime        time.Time `description:"修改时间" gorm:"column:modify_time"`
+	CreateTime        time.Time `description:"创建时间" gorm:"column:create_time"`
 }
 
 // GetTableDataListByTableInfoId 根据表格id获取数据列表
 func GetTableDataListByTableInfoId(tableInfoId int) (items []*TableData, err error) {
-	o := orm.NewOrmUsingDB("data")
-	pars := make([]interface{}, 0)
-	pars = append(pars, tableInfoId)
-
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM table_data WHERE table_info_id = ? order by sort asc `
-
-	_, err = o.Raw(sql, tableInfoId).QueryRows(&items)
+	err = o.Raw(sql, tableInfoId).Scan(&items).Error
 	return
 }
+
+// func GetTableDataListByTableInfoId(tableInfoId int) (items []*TableData, err error) {
+// 	o := orm.NewOrmUsingDB("data")
+// 	pars := make([]interface{}, 0)
+// 	pars = append(pars, tableInfoId)
+
+// 	sql := ` SELECT * FROM table_data WHERE table_info_id = ? order by sort asc `
+
+// 	_, err = o.Raw(sql, tableInfoId).QueryRows(&items)
+// 	return
+// }

+ 6 - 0
utils/config.go

@@ -18,6 +18,8 @@ var (
 	MYSQL_URL_DATA string
 	MYSQL_URL_EDB  string
 	MgoUrlData     string // mongodb数据库连接配置
+	DM_URL         string
+	DM_URL_DATA    string
 
 	REDIS_CACHE string //缓存地址
 	//Rc          *cache.Cache //redis缓存
@@ -103,6 +105,10 @@ func init() {
 	// mongodb数据库连接配置
 	MgoUrlData = config["mgo_url_data"]
 
+	// 达梦数据库连接配置
+	DM_URL = config["dm_url"]
+	DM_URL_DATA = config["dm_url_data"]
+
 	REDIS_CACHE = config["beego_cache"]
 	if len(REDIS_CACHE) <= 0 {
 		panic("redis链接参数没有配置")

+ 2 - 0
utils/constants.go

@@ -226,3 +226,5 @@ const (
 	ZhLangVersion = "zh" // 中文语言版本
 	EnLangVersion = "en" // 英文语言版本
 )
+
+const MultiAddNum = 500

Some files were not shown because too many files changed in this diff