zqbao 5 months ago
parent
commit
c45a4a3441

+ 3 - 0
go.mod

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

+ 2 - 1
models/db.go

@@ -4,9 +4,10 @@ import (
 	"eta_gn/eta_chart_lib/models/data_manage"
 	"eta_gn/eta_chart_lib/models/data_manage/future_good"
 	"eta_gn/eta_chart_lib/utils"
-	_ "github.com/go-sql-driver/mysql"
 	"time"
 
+	_ "github.com/go-sql-driver/mysql"
+
 	"github.com/beego/beego/v2/client/orm"
 )
 

+ 106 - 0
models/dm_base.go

@@ -0,0 +1,106 @@
+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会有顺序问题=_=!)
+	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)
+
+}

+ 8 - 0
utils/config.go

@@ -10,6 +10,7 @@ import (
 	"github.com/beego/beego/v2/server/web"
 	"github.com/qiniu/qmgo"
 	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
 )
 
 var (
@@ -18,6 +19,9 @@ var (
 	MYSQL_URL_DATA string
 	MYSQL_URL_EDB  string
 	MgoUrlData     string // mongodb数据库连接配置
+	DM_URL         string
+	DM_URL_DATA    string
+	DM_MODEL       map[string]*gorm.DB //数据库连接配置
 
 	REDIS_CACHE string //缓存地址
 	//Rc          *cache.Cache //redis缓存
@@ -103,6 +107,10 @@ func init() {
 	// mongodb数据库连接配置
 	MgoUrlData = config["mgo_url_data"]
 
+	// 达梦数据库连接配置
+	DM_URL = config["dm_url"]
+	DM_URL_DATA = config["dm_url_data"]
+
 	REDIS_CACHE = config["beego_cache"]
 	if len(REDIS_CACHE) <= 0 {
 		panic("redis链接参数没有配置")