more 7 місяців тому
батько
коміт
bf389c3231
42 змінених файлів з 4661 додано та 1289 видалено
  1. 96 0
      global/dm.go
  2. 17 0
      global/global.go
  3. 6 0
      go.sum
  4. 67 13
      models/business_conf.go
  5. 728 129
      models/chart.go
  6. 92 13
      models/chart_edb_mapping.go
  7. 295 45
      models/chart_series.go
  8. 30 12
      models/chart_series_edb_mapping.go
  9. 94 44
      models/data_manage/chart_info.go
  10. 116 36
      models/data_manage/chart_info_correlation.go
  11. 8 8
      models/data_manage/chart_theme/chart_theme.go
  12. 6 7
      models/data_manage/chart_theme/chart_theme_type.go
  13. 4 4
      models/data_manage/cross_variety/chart_tag.go
  14. 2 2
      models/data_manage/cross_variety/chart_tag_variety.go
  15. 7 7
      models/data_manage/cross_variety/chart_variety.go
  16. 115 39
      models/data_manage/edb_info.go
  17. 93 26
      models/data_manage/edb_info_calculate.go
  18. 80 20
      models/data_manage/edb_source.go
  19. 7 6
      models/data_manage/excel/excel_chart_data.go
  20. 12 11
      models/data_manage/excel/excel_chart_edb.go
  21. 19 19
      models/data_manage/excel/excel_classify.go
  22. 22 16
      models/data_manage/excel/excel_draft.go
  23. 160 34
      models/data_manage/excel/excel_edb_mapping.go
  24. 674 156
      models/data_manage/excel/excel_info.go
  25. 113 45
      models/data_manage/excel/excel_sheet.go
  26. 73 18
      models/data_manage/excel/excel_sheet_data.go
  27. 138 32
      models/data_manage/factor_edb_series.go
  28. 162 40
      models/data_manage/factor_edb_series_chart_mapping.go
  29. 175 40
      models/data_manage/factor_edb_series_mapping.go
  30. 85 25
      models/data_manage/future_good/chart_info_future_good_profit.go
  31. 218 57
      models/data_manage/future_good/future_good_chart_classify.go
  32. 137 41
      models/data_manage/future_good/future_good_edb_info.go
  33. 146 43
      models/data_manage/future_good/future_good_edb_info_data.go
  34. 60 21
      models/data_manage/multiple_graph_config.go
  35. 74 21
      models/data_manage/multiple_graph_config_chart_mapping.go
  36. 72 21
      models/data_manage/multiple_graph_config_edb_mapping.go
  37. 167 41
      models/data_manage/predict_edb_conf.go
  38. 125 39
      models/data_manage/predict_edb_conf_calculate_mapping.go
  39. 39 11
      models/data_manage/predict_edb_rule_data.go
  40. 1 101
      models/dm_base.go
  41. 124 46
      models/excel_info_rule_mapping.go
  42. 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()
+}

+ 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=

+ 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 相关性图表图例

+ 8 - 8
models/data_manage/chart_theme/chart_theme.go

@@ -2,7 +2,7 @@ package chart_theme
 
 import (
 	"errors"
-	"eta_gn/eta_chart_lib/models"
+	"eta_gn/eta_chart_lib/global"
 	"time"
 )
 
@@ -63,7 +63,7 @@ func (m *ChartTheme) TableName() string {
 // @return item *ChartTheme
 // @return err error
 func GetChartThemeId(chartThemeId int) (item *ChartTheme, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_theme where chart_theme_id = ? AND is_delete = 0`
 	err = o.Raw(sql, chartThemeId).First(&item).Error
 	return
@@ -103,7 +103,7 @@ func (m *ChartTheme) Add() (err error) {
 		err = errors.New("该配置已存在")
 		return
 	}
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	err = o.Create(&m).Error
 	if err != nil {
 		return
@@ -132,7 +132,7 @@ func (m *ChartTheme) Add() (err error) {
 // @param cols []string
 // @return err error
 func (m *ChartTheme) Update(cols []string) (err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	err = o.Model(m).Select(cols).Updates(m).Error
 	return
 }
@@ -158,7 +158,7 @@ func (m *ChartTheme) Update(cols []string) (err error) {
 // @return list []*ChartTheme
 // @return err error
 func GetChartThemeListByTypeId(chartThemeTypeId int) (list []*ChartTheme, err error) {
-	o := models.DmSQL["data"]
+	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
@@ -186,7 +186,7 @@ func GetChartThemeListByTypeId(chartThemeTypeId int) (list []*ChartTheme, err er
 // @return list []*ChartTheme
 // @return err error
 func GetAllChartThemeList() (list []*ChartTheme, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_theme WHERE  is_delete=0 ORDER BY chart_theme_id ASC `
 	err = o.Raw(sql).Scan(&list).Error
 	return
@@ -254,7 +254,7 @@ func (ChartThemeItem) TableName() string {
 // @return list []*ChartThemeConfig
 // @return err error
 func GetChartThemeItemList(chartThemeTypeId int) (list []*ChartThemeItem, err error) {
-	o := models.DmSQL["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 `
@@ -286,7 +286,7 @@ func GetChartThemeItemList(chartThemeTypeId int) (list []*ChartThemeItem, err er
 // @return item *ChartTheme
 // @return err error
 func GetSystemChartTheme(chartThemeTypeId int) (item *ChartTheme, err error) {
-	o := models.DmSQL["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).First(&item).Error

+ 6 - 7
models/data_manage/chart_theme/chart_theme_type.go

@@ -1,8 +1,7 @@
 package chart_theme
 
 import (
-	"eta_gn/eta_chart_lib/models"
-	"eta_gn/eta_chart_lib/utils"
+	"eta_gn/eta_chart_lib/global"
 	"time"
 )
 
@@ -44,7 +43,7 @@ func (ChartThemeType) TableName() string {
 // @param cols []string
 // @return err error
 func (m *ChartThemeType) Update(cols []string) (err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	err = o.Model(m).Select(cols).Updates(m).Error
 	return
 }
@@ -70,7 +69,7 @@ func (m *ChartThemeType) Update(cols []string) (err error) {
 // @return list []*ChartThemeType
 // @return err error
 func GetAllChartThemeTypeList() (list []*ChartThemeType, err error) {
-	o := utils.DM_MODEL["data"]
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_theme_type ORDER BY chart_theme_type_id ASC `
 	err = o.Raw(sql).Scan(&list).Error
 	return
@@ -99,7 +98,7 @@ func GetAllChartThemeTypeList() (list []*ChartThemeType, err error) {
 // @return list []*ChartThemeType
 // @return err error
 func GetChartThemeTypeListBySource(source int) (list []*ChartThemeType, err error) {
-	o := utils.DM_MODEL["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).Scan(&list).Error
 	return
@@ -128,7 +127,7 @@ func GetChartThemeTypeListBySource(source int) (list []*ChartThemeType, err erro
 // @return item *ChartThemeType
 // @return err error
 func GetChartThemeTypeById(chartThemeTypeId int) (item *ChartThemeType, err error) {
-	o := utils.DM_MODEL["data"]
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_theme_type where chart_theme_type_id = ? `
 	err = o.Raw(sql, chartThemeTypeId).First(&item).Error
 	return
@@ -157,7 +156,7 @@ func GetChartThemeTypeById(chartThemeTypeId int) (item *ChartThemeType, err erro
 // @return item *ChartThemeType
 // @return err error
 func GetChartThemeTypeByChartTypeAndSource(chartType, source int) (item *ChartThemeType, err error) {
-	o := utils.DM_MODEL["data"]
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_theme_type where chart_type = ? AND chart_source = ? `
 	err = o.Raw(sql, chartType, source).First(&item).Error
 	return

+ 4 - 4
models/data_manage/cross_variety/chart_tag.go

@@ -1,7 +1,7 @@
 package cross_variety
 
 import (
-	"eta_gn/eta_chart_lib/models"
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
 	"time"
 )
@@ -55,7 +55,7 @@ func (ChartTag) TableName() string {
 // @param updateColList []string
 // @return err error
 func (item *ChartTag) Update(updateColList []string) (err error) {
-	to := models.DmSQL["data"]
+	to := global.DmSQL["data"]
 	err = to.Model(item).Select(updateColList).Updates(item).Error
 	return
 }
@@ -68,7 +68,7 @@ func (item *ChartTag) Update(updateColList []string) (err error) {
 // }
 
 func (item *ChartTag) Delete() (err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	err = o.Delete(item).Error
 	return
 }
@@ -104,7 +104,7 @@ func GetTagListByIdList(idList []int) (items []*ChartTag, err error) {
 	if num <= 0 {
 		return
 	}
-	o := models.DmSQL["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).Scan(&items).Error
 	return

+ 2 - 2
models/data_manage/cross_variety/chart_tag_variety.go

@@ -1,7 +1,7 @@
 package cross_variety
 
 import (
-	"eta_gn/eta_chart_lib/models"
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
 	"time"
 )
@@ -68,7 +68,7 @@ func GetChartTagVarietyListByTagAndVariety(chartTagId int, varietyIdList []int)
 	if num <= 0 {
 		return
 	}
-	o := models.DmSQL["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).Scan(&items).Error
 	return

+ 7 - 7
models/data_manage/cross_variety/chart_variety.go

@@ -1,7 +1,7 @@
 package cross_variety
 
 import (
-	"eta_gn/eta_chart_lib/models"
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
 	"time"
 
@@ -58,7 +58,7 @@ func (ChartVariety) TableName() string {
 // @return item *ChartVariety
 // @return err error
 func GetVarietyById(id int) (item *ChartVariety, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_variety WHERE chart_variety_id = ?`
 	err = o.Raw(sql, id).First(&item).Error
 	return
@@ -87,7 +87,7 @@ func GetVarietyById(id int) (item *ChartVariety, err error) {
 // @return item *ChartVariety
 // @return err error
 func GetVarietyByName(name string) (item *ChartVariety, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_variety WHERE chart_variety_name = ?`
 	err = o.Raw(sql, name).First(&item).Error
 	return
@@ -118,7 +118,7 @@ func GetVarietyByName(name string) (item *ChartVariety, err error) {
 // @param item *ChartVariety
 // @return err error
 func AddVariety(item *ChartVariety) (err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	err = o.Create(item).Error
 	return
 }
@@ -145,7 +145,7 @@ func AddVariety(item *ChartVariety) (err error) {
 // @param updateColList []string
 // @return err error
 func (item *ChartVariety) Update(updateColList []string) (err error) {
-	to := models.DmSQL["data"]
+	to := global.DmSQL["data"]
 	err = to.Model(item).Select(updateColList).Updates(item).Error
 	return
 }
@@ -159,7 +159,7 @@ func (item *ChartVariety) Update(updateColList []string) (err error) {
 
 // Delete 删除
 func (item *ChartVariety) Delete() (err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	err = o.Delete(item).Error
 	return
 }
@@ -185,7 +185,7 @@ func (item *ChartVariety) Delete() (err error) {
 // @return items []*ChartVariety
 // @return err error
 func GetVarietyList() (items []*ChartVariety, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM chart_variety WHERE 1 = 1 `
 	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
+// 	}
+// }

+ 7 - 6
models/data_manage/excel/excel_chart_data.go

@@ -1,6 +1,7 @@
 package excel
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/models"
 	"fmt"
 	"time"
@@ -42,7 +43,7 @@ func (e *ExcelChartData) TableName() string {
 //
 // 新增
 func (e *ExcelChartData) Add() (err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	err = o.Create(e).Error
 	return
 }
@@ -56,7 +57,7 @@ func (e *ExcelChartData) Add() (err error) {
 
 // 修改
 func (e *ExcelChartData) Update(cols []string) (err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	err = o.Model(e).Select(cols).Updates(e).Error
 	return
 }
@@ -70,7 +71,7 @@ func (e *ExcelChartData) Update(cols []string) (err error) {
 
 // 删除
 func (e *ExcelChartData) Delete() (err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	err = o.Delete(e).Error
 	return
 }
@@ -87,7 +88,7 @@ func (e *ExcelChartData) Delete() (err error) {
 // }
 
 func GetExcelChartDataByExcelInfoId(excelInfoId int) (list []*ExcelChartData, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := ` SELECT *
              FROM excel_chart_data
 			 WHERE excel_info_id=? 
@@ -157,7 +158,7 @@ func GetExcelChartDataByExcelInfoId(excelInfoId int) (list []*ExcelChartData, er
 //	}
 
 func BatchUpdateChartEdbData(excelInfoId int, excelEdbMap map[int]*ExcelChartEdb, excelDataMap map[int][]*models.EdbDataList) (err error) {
-	o := models.DmSQL["data"].Begin()
+	o := global.DmSQL["data"].Begin()
 	defer func() {
 		if err != nil {
 			_ = o.Rollback()
@@ -224,7 +225,7 @@ func BatchUpdateChartEdbData(excelInfoId int, excelEdbMap map[int]*ExcelChartEdb
 // }
 
 func GetExcelChartDataByChartInfoId(chartInfoId int) (list []*ExcelChartData, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := ` SELECT *
              FROM excel_chart_Data
 			 WHERE chart_info_id=? 

+ 12 - 11
models/data_manage/excel/excel_chart_edb.go

@@ -1,6 +1,7 @@
 package excel
 
 import (
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/models"
 	"eta_gn/eta_chart_lib/utils"
 	"fmt"
@@ -97,7 +98,7 @@ func (BalanceTableChart) TableName() string {
 //	}
 
 func (e *ExcelChartEdb) Add() (err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	err = o.Create(e).Error
 	return
 }
@@ -110,7 +111,7 @@ func (e *ExcelChartEdb) Add() (err error) {
 // }
 
 func (e *ExcelChartEdb) Update(cols []string) (err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	err = o.Model(e).Select(cols).Updates(e).Error
 	return
 }
@@ -123,7 +124,7 @@ func (e *ExcelChartEdb) Update(cols []string) (err error) {
 // }
 
 func (e *ExcelChartEdb) Delete() (err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	err = o.Delete(e).Error
 	return
 }
@@ -203,7 +204,7 @@ type AddChartEdbAndDataItem struct {
 //	}
 
 func (e *ExcelChartEdb) AddChartEdbAndData(list []*AddChartEdbAndDataItem, chartInfo *models.ChartInfo, deleteEdbIds []int) (err error) {
-	o := models.DmSQL["data"].Begin()
+	o := global.DmSQL["data"].Begin()
 	defer func() {
 		if err != nil {
 			_ = o.Rollback()
@@ -464,7 +465,7 @@ func addChartEdbAndData(o *gorm.DB, chartEdb *ExcelChartEdb, dataList []*ExcelCh
 //	}
 
 func GetExcelChartEdbMappingByExcelInfoId(excelInfoId int) (list []*ExcelChartEdb, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := ` SELECT *
              FROM excel_chart_edb 
 			 WHERE excel_info_id=? 
@@ -492,7 +493,7 @@ func GetExcelChartEdbMappingByExcelInfoId(excelInfoId int) (list []*ExcelChartEd
 // }
 
 func GetExcelChartEdbMappingByExcelInfoIds(excelInfoIds []int) (list []*ExcelChartEdb, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := ` SELECT *
              FROM excel_chart_edb 
 			 WHERE excel_info_id in (` + utils.GetOrmInReplace(len(excelInfoIds)) + `)`
@@ -508,7 +509,7 @@ func GetExcelChartEdbMappingByExcelInfoIds(excelInfoIds []int) (list []*ExcelCha
 //	}
 
 func GetExcelChartEdbById(id int) (item *ExcelChartEdb, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_chart_edb WHERE excel_chart_edb_id=? `
 	err = o.Raw(sql, id).First(&item).Error
 	return
@@ -525,7 +526,7 @@ func GetExcelChartEdbById(id int) (item *ExcelChartEdb, err error) {
 // }
 
 func GetExcelChartEdbMappingByChartInfoId(chartInfoId int) (list []*ExcelChartEdb, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := ` SELECT *
              FROM excel_chart_edb 
 			 WHERE chart_info_id=? 
@@ -543,7 +544,7 @@ func GetExcelChartEdbMappingByChartInfoId(chartInfoId int) (list []*ExcelChartEd
 //		return
 //	}
 func GetExcelInfoByChartInfoId(chartInfoId int) (item *ExcelInfo, err error) {
-	o := models.DmSQL["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`
@@ -601,7 +602,7 @@ func GetExcelInfoByChartInfoId(chartInfoId int) (item *ExcelInfo, err error) {
 // }
 
 func DeleteExcelChartEdbAndData(excelInfoIds []int, chartInfoIds []int) (err error) {
-	o := models.DmSQL["data"].Begin()
+	o := global.DmSQL["data"].Begin()
 	defer func() {
 		if err != nil {
 			_ = o.Rollback()
@@ -683,7 +684,7 @@ func DeleteExcelChartEdbAndData(excelInfoIds []int, chartInfoIds []int) (err err
 //		return
 //	}
 func DeleteBalanceExcelChartInfoAndData(chartInfoId int) (err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	to := o.Begin()
 	if err != nil {
 		return

+ 19 - 19
models/data_manage/excel/excel_classify.go

@@ -1,7 +1,7 @@
 package excel
 
 import (
-	"eta_gn/eta_chart_lib/models"
+	"eta_gn/eta_chart_lib/global"
 	"eta_gn/eta_chart_lib/utils"
 	"fmt"
 	"time"
@@ -57,7 +57,7 @@ func (ExcelClassify) TableName() string {
 //		return
 //	}
 func AddExcelClassify(item *ExcelClassify) (lastId int64, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	err = o.Create(item).Error
 	if err != nil {
 		return
@@ -76,7 +76,7 @@ func AddExcelClassify(item *ExcelClassify) (lastId int64, err error) {
 //	}
 
 func GetExcelClassifyCount(ExcelClassifyName string, parentId, source int) (count int, err error) {
-	o := models.DmSQL["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).Scan(&count).Error
 	return
@@ -89,7 +89,7 @@ func GetExcelClassifyCount(ExcelClassifyName string, parentId, source int) (coun
 //		return
 //	}
 func GetExcelClassifyById(classifyId int) (item *ExcelClassify, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM excel_classify WHERE excel_classify_id=? AND is_delete=0 `
 	err = o.Raw(sql, classifyId).First(&item).Error
 	return
@@ -125,7 +125,7 @@ func GetExcelClassifyByIdList(classifyIdList []int) (items []*ExcelClassify, err
 	if num <= 0 {
 		return
 	}
-	o := models.DmSQL["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).Scan(&items).Error
 	return
@@ -154,7 +154,7 @@ func GetExcelClassifyByIdList(classifyIdList []int) (items []*ExcelClassify, err
 // @return items []*ExcelClassify
 // @return err error
 func GetExcelClassifyBySourceAndIsJoinPermission(source, isJoinPermission int) (items []*ExcelClassify, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM excel_classify WHERE source = ? AND is_join_permission = ? `
 	err = o.Raw(sql, source, isJoinPermission).Scan(&items).Error
 	return
@@ -168,14 +168,14 @@ func GetExcelClassifyBySourceAndIsJoinPermission(source, isJoinPermission int) (
 //	}
 
 func GetChildClassifyById(classifyId int) (items []*ExcelClassify, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM excel_classify WHERE parent_id=? AND is_delete=0 `
 	err = o.Raw(sql, classifyId).Scan(&items).Error
 	return
 }
 
 func GetExcelClassifyByParentId(parentId, source int) (items []*ExcelClassifyItems, err error) {
-	o := models.DmSQL["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).Scan(&items).Error
 	return
@@ -188,7 +188,7 @@ func GetExcelClassifyByParentId(parentId, source int) (items []*ExcelClassifyIte
 //		return
 //	}
 func GetExcelClassifyBySource(source int) (items []*ExcelClassifyItems, err error) {
-	o := models.DmSQL["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).Scan(&items).Error
 	return
@@ -202,14 +202,14 @@ func GetExcelClassifyBySource(source int) (items []*ExcelClassifyItems, err erro
 //	}
 
 func GetExcelClassifyBySourceOrderByLevel(source int) (items []*ExcelClassifyItems, err error) {
-	o := models.DmSQL["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).Scan(&items).Error
 	return
 }
 
 func GetExcelClassifyAll() (items []*ExcelClassifyItems, err error) {
-	o := models.DmSQL["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).Scan(&items).Error
 	return
@@ -252,7 +252,7 @@ func (ExcelClassifyItems) TableName() string {
 }
 
 func GetExcelClassifyByCondition(condition string, pars []interface{}) (item *ExcelClassify, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_classify WHERE 1=1 AND is_delete=0 `
 	if condition != "" {
 		sql += condition
@@ -274,7 +274,7 @@ func GetExcelClassifyByCondition(condition string, pars []interface{}) (item *Ex
 // }
 
 func GetNextExcelClassifyByCondition(condition string, pars []interface{}) (item *ExcelClassify, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM excel_classify WHERE 1=1 AND is_delete=0 `
 	if condition != "" {
 		sql += condition
@@ -293,7 +293,7 @@ func GetNextExcelClassifyByCondition(condition string, pars []interface{}) (item
 // }
 
 func GetFirstExcelClassifyByParentId(parentId int) (item *ExcelClassify, err error) {
-	o := models.DmSQL["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).First(&item).Error
 	return
@@ -311,7 +311,7 @@ func GetFirstExcelClassifyByParentId(parentId int) (item *ExcelClassify, err err
 // }
 
 func UpdateExcelClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string, source int) (err error) {
-	o := models.DmSQL["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) + `)`
@@ -328,7 +328,7 @@ func UpdateExcelClassifySortByParentId(parentId, classifyId, nowSort int, update
 // }
 
 func (ExcelClassify *ExcelClassify) Update(cols []string) (err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	err = o.Model(ExcelClassify).Select(cols).Updates(ExcelClassify).Error
 	return
 }
@@ -342,7 +342,7 @@ func (ExcelClassify *ExcelClassify) Update(cols []string) (err error) {
 // }
 
 func GetExcelClassifyMaxSort(parentId int, source int) (sort int, err error) {
-	o := models.DmSQL["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).Scan(&sort).Error
 	return
@@ -367,7 +367,7 @@ type ExcelClassifyView struct {
 // }
 
 func GetExcelClassifyViewById(classifyId int) (item *ExcelClassifyView, err error) {
-	o := models.DmSQL["data"]
+	o := global.DmSQL["data"]
 	sql := `SELECT * FROM excel_classify WHERE excel_classify_id=? AND is_delete=0 `
 	err = o.Raw(sql, classifyId).First(&item).Error
 	return
@@ -390,7 +390,7 @@ func GetClassifyByIdList(classifyIdList []int) (items []*ExcelClassify, err erro
 	if num <= 0 {
 		return
 	}
-	o := models.DmSQL["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).Scan(&items).Error
 	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" json:"excel_draft_id" description:"excel表格草稿记录id"`
+	ExcelId      int       `gorm:"column:excel_id" json:"excel_id" description:"excel表格id"`
+	Name         string    `gorm:"column:name" json:"name" description:"excel表格名称"`
+	Content      string    `gorm:"column:content" json:"content" description:"excel数据"`
+	OpUserId     int       `gorm:"column:op_user_id" json:"op_user_id" description:"最近一次编辑操作的用户id"`
+	OpUserName   string    `gorm:"column:op_user_name" json:"op_user_name" description:"最近一次编辑的用户名称(冗余字段,避免查表)"`
+	CreateTime   time.Time `gorm:"column:create_time" json:"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" json:"excel_edb_mapping_id"`
+	ExcelInfoId       int       `gorm:"column:excel_info_id" json:"excel_info_id" description:"excel的id"`
+	Source            int       `gorm:"column:source" json:"source" description:"表格来源,1:excel插件的表格,2:自定义表格,3:混合表格,4:自定义分析,默认:1"`
+	EdbInfoId         int       `gorm:"column:edb_info_id" json:"edb_info_id" description:"计算指标id"`
+	CreateTime        time.Time `gorm:"column:create_time" json:"create_time" description:"创建时间"`
+	ModifyTime        time.Time `gorm:"column:modify_time" json:"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" json:"edb_info_id" description:"指标id"`
+	UniqueCode       string `gorm:"column:unique_code" json:"unique_code" description:"唯一编码"`
+	EdbName          string `gorm:"column:edb_name" json:"edb_name" description:"指标名称"`
+	ClassifyId       int    `gorm:"column:classify_id" json:"classify_id" description:"分类id"`
+	Frequency        string `gorm:"column:frequency" json:"frequency" description:"频度"`
+	Unit             string `gorm:"column:unit" json:"unit" description:"单位"`
+	CalculateFormula string `gorm:"column:calculate_formula" json:"-"` // 隐藏该字段
+	DateSequenceStr  string `gorm:"column:date_sequence_str" json:"date_sequence_str" description:"日期序列公式"`
+	DataSequenceStr  string `gorm:"column:data_sequence_str" json:"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
+// }

Різницю між файлами не показано, бо вона завелика
+ 674 - 156
models/data_manage/excel/excel_info.go


+ 113 - 45
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" json:"excel_sheet_id" orm:"column(excel_sheet_id);pk"`
+	ExcelInfoId  int       `gorm:"column:excel_info_id" json:"excel_info_id" description:"excel的id"`
+	SheetName    string    `gorm:"column:sheet_name" json:"sheet_name" description:"sheet名称"`
+	PageNum      int       `gorm:"column:page_num" json:"page_num" description:"总页码数"`
+	Index        string    `gorm:"column:index" json:"index" description:"excel数据中的index"`
+	Sort         int       `gorm:"column:sort" json:"sort" description:"排序"`
+	Config       string    `gorm:"column:config" json:"config" description:"配置信息"`
+	CalcChain    string    `gorm:"column:calc_chain" json:"calc_chain" description:"计算公式"`
+	ModifyTime   time.Time `gorm:"column:modify_time" json:"modify_time" description:"最近修改日期"`
+	CreateTime   time.Time `gorm:"column:create_time" json:"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:"创建日期"`
-	Data         *ExcelSheetData `description:"excel的数据"`
+	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名称" json:"sheet_name"`
+	PageNum      int             `gorm:"column:page_num" description:"数据总页码数" json:"page_num"`
+	Index        string          `gorm:"column:index" description:"excel数据中的index" json:"index"`
+	Sort         int             `gorm:"column:sort" description:"排序" json:"sort"`
+	Config       string          `gorm:"column:config" description:"sheet配置" json:"config"`
+	CalcChain    string          `gorm:"column:calc_chain" description:"计算公式" json:"calc_chain"`
+	ModifyTime   time.Time       `gorm:"column:modify_time" description:"最近修改日期" json:"-"`
+	CreateTime   time.Time       `gorm:"column:create_time" description:"创建日期" json:"create_time"`
+	Data         *ExcelSheetData `description:"excel的数据" json:"data"`
 }
 
 // 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" json:"excel_sheet_id" orm:"column(excel_sheet_id);pk"`
+	ExcelInfoId  int               `gorm:"column:excel_info_id" description:"excel的id" json:"excel_info_id"`
+	SheetName    string            `gorm:"column:sheet_name" description:"sheet名称" json:"sheet_name"`
+	Index        string            `gorm:"column:index" description:"excel数据中的index" json:"index"`
+	Sort         int               `gorm:"column:sort" description:"排序" json:"sort"`
+	Config       string            `gorm:"column:config" description:"配置信息" json:"config"`
+	CalcChain    string            `gorm:"column:calc_chain" description:"计算公式" json:"calc_chain"`
+	DataList     []*ExcelSheetData `gorm:"column:data_list" description:"excel的数据" json:"data_list"`
 }

+ 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" json:"excel_data_id" orm:"column(excel_data_id);pk"`
+	ExcelInfoId  int       `gorm:"column:excel_info_id" json:"excel_info_id" description:"数据归属的excel_info的id"`
+	ExcelSheetId int       `gorm:"column:excel_sheet_id" json:"excel_sheet_id" description:"数据归属sheet"`
+	Sort         int       `gorm:"column:sort" json:"sort" description:"数据排序"`
+	Data         string    `gorm:"column:data" json:"data" description:"数据,分页存储"`
+	ModifyTime   time.Time `gorm:"column:modify_time" json:"modify_time" description:"最近修改日期"`
+	CreateTime   time.Time `gorm:"column:create_time" json:"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
+// }

+ 1 - 101
models/dm_base.go

@@ -1,106 +1,6 @@
 package models
 
-import (
-	dm "dmgorm2"
-	"eta_gn/eta_chart_lib/utils"
-	"fmt"
-	"io"
-	"log"
-	"os"
-	"time"
-
-	"gorm.io/gorm"
-	"gorm.io/gorm/logger"
-)
-
-// var (
-// 	DM_MODEL = make(map[string]*gorm.DB)
-
-// 	DmSQL         map[string]*gorm.DB //数据库连接配置
-// 	DEFAULT_DmSQL *gorm.DB            //默认数据库连接配置
-// )
-
-// func init() {
-// 	if utils.DM_URL != "" {
-// 		db, _ := dm.NewDb(utils.DM_URL)
-// 		utils.DM_MODEL["default"] = db
-// 	}
-// 	if utils.DM_URL_DATA != "" {
-// 		db, _ := dm.NewDb(utils.DM_URL_DATA)
-// 		utils.DM_MODEL["data"] = db
-// 	}
-// }
-
-var (
-	DmSQL         map[string]*gorm.DB //数据库连接配置
-	DEFAULT_DmSQL *gorm.DB            //默认数据库连接配置
-)
-
 // 达梦数据库初始化
-func init() {
-	dmSqlMap := make(map[string]*gorm.DB)
-
-	//开启日志
-	logWriter := io.MultiWriter(utils.Binlog) //binlog日志,记录到文件中去
-	if utils.RunMode == `debug` {             // 测试环境,默认输出在控制台,不需要的话,可以注释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,                   //是否颜色输出
-	})
-
-	// 默认库
-	initDm(utils.DM_URL, "default", newLogger, dmSqlMap, true)
-
-	// 指标库
-	initDm(utils.DM_URL_DATA, "data", newLogger, dmSqlMap, false)
-
-	//全局赋值数据库链接
-	DmSQL = dmSqlMap
-
-	// 初始化部分数据表变量(直接init会有顺序问题=_=!)
+func AfterInitTable() {
 	afterInitTable()
 }
-
-// 达梦数据库连接
-func initDm(dsn, aliasName string, newLogger logger.Interface, dmSqlMap map[string]*gorm.DB, isDefault bool) {
-	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,
-	})
-	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)
-
-}

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

+ 2 - 0
utils/constants.go

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

Деякі файли не було показано, через те що забагато файлів було змінено