Browse Source

Merge remote-tracking branch 'origin/dm' into debug

# Conflicts:
#	models/base_from_adjust.go
#	models/base_from_calculate.go
#	models/base_from_ths.go
#	models/edb_info.go
#	models/edb_info_record.go
#	models/future_good/future_good_edb_data.go
#	services/base_from_python.go
#	utils/constants.go
Roc 2 weeks ago
parent
commit
94d5c7a4d7
100 changed files with 3795 additions and 2286 deletions
  1. 1 1
      controllers/base_from_baiinfo.go
  2. 1 1
      controllers/base_from_bloomberg.go
  3. 1 1
      controllers/base_from_business.go
  4. 2 2
      controllers/base_from_calculate.go
  5. 1 1
      controllers/base_from_cffex.go
  6. 2 2
      controllers/base_from_clarksons.go
  7. 1 1
      controllers/base_from_coal.go
  8. 1 1
      controllers/base_from_icpi.go
  9. 2 2
      controllers/base_from_mtjh.go
  10. 1 1
      controllers/base_from_sci99.go
  11. 1 1
      controllers/base_from_ths.go
  12. 1 1
      controllers/base_from_usda_fas.go
  13. 3 5
      controllers/edb_info.go
  14. 16 0
      global/global.go
  15. 139 0
      global/initDb.go
  16. 4 0
      go.mod
  17. 10 0
      go.sum
  18. 1 1
      logic/base_edb_info.go
  19. 9 9
      logic/predict_edb.go
  20. 5 0
      main.go
  21. 44 28
      models/base_from_adjust.go
  22. 72 43
      models/base_from_baiinfo.go
  23. 94 55
      models/base_from_bloomberg.go
  24. 71 54
      models/base_from_business.go
  25. 44 34
      models/base_from_business_data.go
  26. 54 31
      models/base_from_calculate.go
  27. 124 62
      models/base_from_ccf.go
  28. 39 14
      models/base_from_cffex.go
  29. 55 33
      models/base_from_clarksons.go
  30. 27 11
      models/base_from_coal.go
  31. 26 10
      models/base_from_coal_coastal.go
  32. 34 18
      models/base_from_coal_firm.go
  33. 36 20
      models/base_from_coal_inland.go
  34. 92 56
      models/base_from_coalmine.go
  35. 34 18
      models/base_from_com_trade.go
  36. 35 13
      models/base_from_dl.go
  37. 43 30
      models/base_from_edb_mapping.go
  38. 23 11
      models/base_from_eia_steo.go
  39. 131 80
      models/base_from_fenwei.go
  40. 9 6
      models/base_from_fubao.go
  41. 33 16
      models/base_from_gie.go
  42. 26 12
      models/base_from_google_travel.go
  43. 85 43
      models/base_from_gpr_risk.go
  44. 28 13
      models/base_from_gz.go
  45. 50 28
      models/base_from_hisugar.go
  46. 34 19
      models/base_from_icpi.go
  47. 9 5
      models/base_from_jiayue.go
  48. 10 6
      models/base_from_lt.go
  49. 14 16
      models/base_from_ly_classify.go
  50. 34 24
      models/base_from_ly_data.go
  51. 26 25
      models/base_from_ly_index.go
  52. 19 21
      models/base_from_ly_index_record.go
  53. 23 10
      models/base_from_lz.go
  54. 30 16
      models/base_from_manual.go
  55. 88 56
      models/base_from_mtjh.go
  56. 23 11
      models/base_from_mysteel.go
  57. 129 82
      models/base_from_mysteel_chemical.go
  58. 30 16
      models/base_from_mysteel_chemical_classify.go
  59. 23 10
      models/base_from_national_statistics.go
  60. 51 30
      models/base_from_oilchem.go
  61. 10 6
      models/base_from_pb.go
  62. 8 6
      models/base_from_pb_finance.go
  63. 39 19
      models/base_from_python.go
  64. 18 18
      models/base_from_rzd_classify.go
  65. 56 31
      models/base_from_rzd_data.go
  66. 25 23
      models/base_from_rzd_index.go
  67. 55 41
      models/base_from_sci.go
  68. 98 55
      models/base_from_sci99.go
  69. 62 33
      models/base_from_sci_hq.go
  70. 76 42
      models/base_from_sh.go
  71. 107 72
      models/base_from_shfe.go
  72. 194 101
      models/base_from_smm.go
  73. 13 6
      models/base_from_smm_classify.go
  74. 20 9
      models/base_from_stock_plant.go
  75. 10 6
      models/base_from_ths.go
  76. 16 10
      models/base_from_ths_ds.go
  77. 44 29
      models/base_from_ths_hf.go
  78. 51 54
      models/base_from_ths_hf_data.go
  79. 120 69
      models/base_from_usda_fas.go
  80. 13 8
      models/base_from_wind.go
  81. 15 9
      models/base_from_wind_wsd.go
  82. 101 51
      models/base_from_yongyi.go
  83. 57 35
      models/base_from_zz.go
  84. 37 22
      models/base_predict_from_calculate.go
  85. 28 37
      models/business_conf.go
  86. 15 10
      models/calculate_residual_analysis_config.go
  87. 10 14
      models/calculate_residual_analysis_config_mapping.go
  88. 29 32
      models/ccf_stock_excel.go
  89. 34 4
      models/chart.go
  90. 43 24
      models/chart_edb_mapping.go
  91. 40 41
      models/data_stat/edb_info_delete_log.go
  92. 51 37
      models/data_stat/edb_info_update_log.go
  93. 58 45
      models/data_stat/edb_info_update_stat.go
  94. 30 29
      models/data_stat/edb_source_stat.go
  95. 4 4
      models/db.go
  96. 64 67
      models/db_base.go
  97. 1 1
      models/edb_adjust_conf.go
  98. 22 14
      models/edb_classify.go
  99. 7 5
      models/edb_config.go
  100. 60 51
      models/edb_data_base.go

+ 1 - 1
controllers/base_from_baiinfo.go

@@ -111,7 +111,7 @@ func (this *BaiinfoController) Refresh() {
 		req.EdbInfoId = edbInfo.EdbInfoId
 	}
 	err = models.RefreshEdbDataFromBaiinfo(req.EdbInfoId, req.EdbCode, req.StartDate)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "刷新指标信息失败!"
 		br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromBaiinfo,Err:" + err.Error()
 		return

+ 1 - 1
controllers/base_from_bloomberg.go

@@ -121,7 +121,7 @@ func (this *BloombergController) Refresh() {
 	dataUpdateTime := time.Now().Format(utils.FormatDateTime)
 	utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
 	err = models.RefreshEdbDataFromBloomberg(req.EdbInfoId, req.EdbCode, req.StartDate)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "刷新指标信息失败!"
 		br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromBloomberg,Err:" + err.Error()
 		return

+ 1 - 1
controllers/base_from_business.go

@@ -470,7 +470,7 @@ func (c *BusinessIndexController) Refresh() {
 		br.ErrMsg = "刷新指标失败,err:" + errMsg
 		return
 	}
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "刷新指标信息失败!"
 		br.ErrMsg = "刷新指标信息失败 BusinessIndexController,Err:" + err.Error()
 		return

+ 2 - 2
controllers/base_from_calculate.go

@@ -898,7 +898,7 @@ func (this *CalculateController) BatchEdit() {
 
 	edbInfo, err := models.GetEdbInfoById(req.EdbInfoId)
 	if err != nil {
-		if err.Error() == utils.ErrNoRow() {
+		if utils.IsErrNoRow(err) {
 			br.Msg = "指标已被删除,请刷新页面"
 			br.ErrMsg = "指标已被删除,请刷新页面:Err:" + err.Error()
 			return
@@ -1055,7 +1055,7 @@ func (this *CalculateController) BatchEdit() {
 		err = models.EditCalculateNszydpjjs(edbInfo, &req, fromEdbInfo, formulaInt, edbInfo.CalculateFormula)
 	case utils.DATA_SOURCE_CALCULATE_HBZ:
 		checkCount, tmpErr := models.GetLteZeroEdbDataCount(fromEdbInfo.Source, fromEdbInfo.SubSource, req.FromEdbInfoId)
-		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
+		if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
 			br.Msg = "判断环比值是否可计算失败"
 			br.ErrMsg = "判断环比值是否可计算失败,Err:" + tmpErr.Error()
 			return

+ 1 - 1
controllers/base_from_cffex.go

@@ -108,7 +108,7 @@ func (this *CffexController) Refresh() {
 	}
 
 	err = models.RefreshEdbDataFromCffex(req.EdbInfoId, req.EdbCode, req.StartDate)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "刷新指标信息失败!"
 		br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromCffex,Err:" + err.Error()
 		return

+ 2 - 2
controllers/base_from_clarksons.go

@@ -40,7 +40,7 @@ func (this *ClarksonsDataController) ClarksonsData() {
 	//var indexMap = make(map[string]string)
 	var itemsIndex []*models.BaseFromClarksonsData
 	codeList, err := models.GetBaseFromClarksonsIndex()
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		utils.FileLog.Info("获取克拉克森指标失败:", err)
 		return
 	}
@@ -285,7 +285,7 @@ func (this *ClarksonsDataController) Refresh() {
 	}
 
 	err = models.RefreshEdbDataFromClarksons(req.EdbInfoId, req.EdbCode, req.StartDate)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "刷新指标信息失败!"
 		br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromCoal,Err:" + err.Error()
 		return

+ 1 - 1
controllers/base_from_coal.go

@@ -107,7 +107,7 @@ func (this *CoalController) Refresh() {
 	}
 
 	err = models.RefreshEdbDataFromCoal(req.EdbInfoId, req.EdbCode, req.StartDate)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "刷新指标信息失败!"
 		br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromCoal,Err:" + err.Error()
 		return

+ 1 - 1
controllers/base_from_icpi.go

@@ -45,7 +45,7 @@ func (this *IcpiController) Add() {
 		err = models.AddEdbDataFromIcpi(req.EdbCode)
 		if err != nil {
 			br.Msg = "获取指标信息失败!"
-			br.ErrMsg = "获取指标信息失败 AddEdbDataFromSh,Err:" + err.Error()
+			br.ErrMsg = "获取指标信息失败 AddEdbDataFromIcpi,Err:" + err.Error()
 			return
 		}
 		br.Ret = 200

+ 2 - 2
controllers/base_from_mtjh.go

@@ -247,11 +247,11 @@ func (this *MtjhDataController) Mtjh() {
 		}
 	}
 	if len(indexAddList) > 0 {
-		newId, err := models.AddBaseFromMtjhIndexMuti(indexAddList)
+		err = models.AddBaseFromMtjhIndexMuti(indexAddList)
 		if err != nil {
 			fmt.Println("添加指标名称错误", err.Error())
 		} else {
-			fmt.Println("添加指标名称成功", newId)
+			fmt.Println("添加指标名称成功")
 		}
 	}
 

+ 1 - 1
controllers/base_from_sci99.go

@@ -108,7 +108,7 @@ func (this *Sci99Controller) Refresh() {
 	err = models.RefreshEdbDataFromSci99(req.EdbInfoId, req.EdbCode, req.StartDate)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "刷新指标信息失败!"
-		br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromIcpi,Err:" + err.Error()
+		br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromSci99,Err:" + err.Error()
 		return
 	}
 	// 更新指标最大最小值

+ 1 - 1
controllers/base_from_ths.go

@@ -121,7 +121,7 @@ func (this *ThsController) Refresh() {
 		return
 	}
 	err = models.RefreshEdbDataFromThs(req.EdbInfoId, req.EdbCode, utils.GetEdbRefreshStartDate(req.StartDate), dataItem)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "刷新指标信息失败!"
 		br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromThs,Err:" + err.Error()
 		return

+ 1 - 1
controllers/base_from_usda_fas.go

@@ -119,7 +119,7 @@ func (this *UsdaFasController) Refresh() {
 		req.EdbInfoId = edbInfo.EdbInfoId
 	}
 	err = usdaFas.Refresh(req.EdbInfoId, req.EdbCode, req.StartDate)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "刷新指标信息失败!"
 		br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromusdaFas,Err:" + err.Error()
 		return

+ 3 - 5
controllers/edb_info.go

@@ -85,7 +85,7 @@ func (this *EdbInfoController) Add() {
 	var isAdd bool
 	item, err := models.GetEdbInfoByEdbCode(req.Source, req.EdbCode)
 	if err != nil {
-		if err.Error() == utils.ErrNoRow() {
+		if utils.IsErrNoRow(err) {
 			isAdd = true
 		} else {
 			br.Msg = "判断指标是否存在失败!"
@@ -306,10 +306,8 @@ func (this *EdbInfoController) RefreshCheck() {
 
 	if req.FrequencyBatch != "" {
 		frequency := strings.Split(req.FrequencyBatch, ",")
-		condition += ` and frequency in (` + utils.GetOrmInReplace(len(frequency)) + `)`
-		for _, v := range frequency {
-			pars = append(pars, v)
-		}
+		condition += ` and frequency in (?)`
+		pars = append(pars, frequency)
 	}
 	updateCondition := condition + ` and latest_date = ?`
 	pars = append(pars, req.LatestDate)

+ 16 - 0
global/global.go

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

+ 139 - 0
global/initDb.go

@@ -0,0 +1,139 @@
+package global
+
+import (
+	"database/sql/driver"
+	_ "dm"
+	dm "dmgorm2"
+	"eta/eta_index_lib/utils"
+	"fmt"
+	"gorm.io/driver/mysql"
+	"gorm.io/gorm"
+	"gorm.io/gorm/logger"
+	"gorm.io/gorm/schema"
+	"io"
+	"log"
+	"os"
+	"strings"
+	"time"
+)
+
+type LocalTime time.Time
+
+// InitDb
+// @Description: 数据库初始化
+func InitDb() {
+	dbMap := make(map[string]*gorm.DB)
+
+	//开启日志
+	logWriter := io.MultiWriter(utils.Binlog) //binlog日志,记录到文件中去
+	if utils.RunMode == `dev` {               // 测试环境,默认输出在控制台,不需要的话,可以注释if里面下面的这行
+		logWriter = io.MultiWriter(utils.Binlog, os.Stdout)
+	}
+	newLogger := logger.New(log.New(logWriter, "\r\n", log.LstdFlags), logger.Config{
+		SlowThreshold:             200 * time.Millisecond, //慢sql :200ms
+		LogLevel:                  logger.Info,            //记录的日志类型,info代表所有信息都记录
+		IgnoreRecordNotFoundError: true,                   //是否忽略找不到数据错误信息(只是日志记录记录成err还是普通的输出的区别,并不影响业务代码中的:找不到数据行error)
+		Colorful:                  false,                  //是否颜色输出
+	})
+
+	// 默认库
+	// 指标库
+	connectDb(utils.MYSQL_URL, utils.DbNameIndex, newLogger, dbMap, true)
+
+	// 手工数据库
+	connectDb(utils.MYSQL_URL_EDB, utils.DbNameManualIndex, newLogger, dbMap, false)
+	// 钢联库
+	connectDb(utils.MYSQL_URL_GL, utils.DbNameGL, newLogger, dbMap, false)
+	// master库
+	connectDb(utils.MYSQL_URL_MASTER, utils.DbNameMaster, newLogger, dbMap, false)
+
+	//全局赋值数据库链接
+	DbMap = dbMap
+
+}
+
+// connectDb
+// @Description: 达梦数据库连接
+// @param dsn
+// @param aliasName
+// @param newLogger
+// @param dbMap
+// @param isDefault
+func connectDb(dsn, aliasName string, newLogger logger.Interface, dbMap map[string]*gorm.DB, isDefault bool) {
+	//fmt.Println("dsn:", dsn, "  ==  ;aliasName:", aliasName)
+	if dsn == `` {
+		return
+	}
+
+	var dialector gorm.Dialector
+	switch utils.DbDriverName {
+	case utils.DbDriverByMysql:
+		if !strings.Contains(dsn, `parseTime`) {
+			dsn += `&parseTime=true`
+		}
+		dialector = mysql.Open(dsn)
+	case utils.DbDriverByDm:
+		dialector = dm.Open(dsn)
+	default:
+		panic(fmt.Errorf("数据库 链接异常,错误的数据库类型,数据库:%s", utils.DbDriverName))
+	}
+	db, err := gorm.Open(dialector, &gorm.Config{
+		Logger: newLogger,
+		NamingStrategy: schema.NamingStrategy{
+			SingularTable: true, // 表示使用单数表名,启用该选项后,GORM 将不会对表名进行复数化处理
+		},
+	})
+	if err != nil {
+		//global.LOG.Errorf("mysql 启动异常,数据库:default;Err:", err)
+		panic(fmt.Errorf("数据库 链接异常,数据库:%s;Err:%s", aliasName, err))
+	}
+	//创建连接池
+	sqlDB, err := db.DB()
+	if err != nil {
+		//global.LOG.Errorf("达梦 创建连接池失败,数据库:default;Err:", err)
+		panic(fmt.Errorf("数据库 创建连接池失败,数据库:%s;Err:%s", aliasName, err))
+	}
+
+	dbMap[aliasName] = db
+
+	//默认数据库连接
+	if isDefault {
+		DEFAULT_DB = db
+	}
+
+	// SetMaxIdleConns 设置空闲连接池中连接的最大数量
+	sqlDB.SetMaxIdleConns(50)
+
+	// SetMaxOpenConns 设置打开数据库连接的最大数量。
+	sqlDB.SetMaxOpenConns(100)
+
+	// SetConnMaxLifetime 设置了连接可复用的最大时间。
+	sqlDB.SetConnMaxLifetime(10 * time.Minute)
+
+}
+
+func (t *LocalTime) MarshalJSON() ([]byte, error) {
+	tTime := time.Time(*t)
+	if tTime.IsZero() {
+		return []byte("\"\""), nil
+	}
+	return []byte(fmt.Sprintf("\"%v\"", tTime.Format("2006-01-02 15:04:05"))), nil
+}
+
+func (t LocalTime) Value() (driver.Value, error) {
+	var zeroTime time.Time
+	tlt := time.Time(t)
+	//判断给定时间是否和默认零时间的时间戳相同
+	if tlt.UnixNano() == zeroTime.UnixNano() {
+		return nil, nil
+	}
+	return tlt, nil
+}
+
+func (t *LocalTime) Scan(v interface{}) error {
+	if value, ok := v.(time.Time); ok {
+		*t = LocalTime(value)
+		return nil
+	}
+	return fmt.Errorf("can not convert %v to timestamp", v)
+}

+ 4 - 0
go.mod

@@ -19,6 +19,8 @@ require (
 	github.com/tealeg/xlsx v1.0.5
 	go.mongodb.org/mongo-driver v1.16.0
 	gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
+	gorm.io/driver/mysql v1.5.7
+	gorm.io/gorm v1.25.12
 )
 
 require (
@@ -37,6 +39,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/josharian/intern v1.0.0 // indirect
 	github.com/klauspost/compress v1.13.6 // indirect
 	github.com/leodido/go-urn v1.2.0 // indirect

+ 10 - 0
go.sum

@@ -69,6 +69,7 @@ github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC
 github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
 github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
 github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
 github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
 github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
 github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
@@ -112,6 +113,10 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/
 github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
 github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
 github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
+github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
+github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
+github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
 github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
 github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
 github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
@@ -336,3 +341,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo=
+gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
+gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
+gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8=
+gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=

+ 1 - 1
logic/base_edb_info.go

@@ -39,7 +39,7 @@ func RefreshBaseEdbInfo(edbInfo *models.EdbInfo, startDate string) (isHandling b
 	default:
 		return
 	}
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		errMsg = "刷新指标信息失败!"
 		err = errors.New("刷新指标信息失败 RefreshEdbDataFromSci,Err:" + err.Error())
 		return

+ 9 - 9
logic/predict_edb.go

@@ -16,7 +16,7 @@ func AddPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName, dataDateType st
 	// 来源指标信息校验
 	{
 		sourceEdbInfo, err = models.GetEdbInfoById(sourceEdbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			errMsg = "新增失败"
 			err = errors.New("获取来源指标失败,Err:" + err.Error())
 			return
@@ -43,7 +43,7 @@ func AddPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName, dataDateType st
 	// 来源分类信息校验
 	{
 		classifyInfo, err = models.GetEdbClassifyById(classifyId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			errMsg = "新增失败"
 			err = errors.New("获取预测指标分类失败,Err:" + err.Error())
 			return
@@ -426,7 +426,7 @@ func EditPredictEdbInfo(edbInfoId, classifyId int, edbName, dataDateType string,
 	// 指标信息校验
 	{
 		edbInfo, err = models.GetEdbInfoById(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			errMsg = "修改失败"
 			err = errors.New("获取预测指标失败,Err:" + err.Error())
 			return
@@ -449,7 +449,7 @@ func EditPredictEdbInfo(edbInfoId, classifyId int, edbName, dataDateType string,
 	{
 		// 查找该预测指标配置
 		predictEdbConfList, tmpErr := models.GetPredictEdbConfListById(edbInfo.EdbInfoId)
-		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
+		if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
 			errMsg = "修改失败"
 			err = errors.New("获取预测指标配置信息失败,Err:" + tmpErr.Error())
 			return
@@ -499,7 +499,7 @@ func EditPredictEdbInfo(edbInfoId, classifyId int, edbName, dataDateType string,
 	// 来源指标信息校验
 	{
 		sourceEdbInfo, err = models.GetEdbInfoById(predictEdbConf.SourceEdbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			errMsg = "新增失败"
 			err = errors.New("获取来源指标失败,Err:" + err.Error())
 			return
@@ -834,7 +834,7 @@ func RefreshPredictEdbInfo(edbInfoId int) (edbInfo *models.EdbInfo, err error, e
 	// 指标信息校验
 	{
 		edbInfo, err = models.GetEdbInfoById(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			errMsg = "刷新失败"
 			err = errors.New("获取预测指标失败,Err:" + err.Error())
 			return
@@ -1126,7 +1126,7 @@ func AddStaticPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName, frequency
 	// 来源指标信息校验
 	{
 		sourceEdbInfo, err = models.GetEdbInfoById(sourceEdbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			errMsg = "新增失败"
 			err = errors.New("获取来源指标失败,Err:" + err.Error())
 			return
@@ -1142,7 +1142,7 @@ func AddStaticPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName, frequency
 	// 来源分类信息校验
 	{
 		classifyInfo, err = models.GetEdbClassifyById(classifyId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			errMsg = "新增失败"
 			err = errors.New("获取预测指标分类失败,Err:" + err.Error())
 			return
@@ -1244,7 +1244,7 @@ func AddStaticPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName, frequency
 	if sourceEdbInfo.EdbType == 1 {
 		// 查找该预测指标配置
 		predictEdbConfList, tmpErr := models.GetPredictEdbConfListById(sourceEdbInfo.EdbInfoId)
-		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
+		if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
 			errMsg = "获取预测指标配置信息失败"
 			err = errors.New("获取预测指标配置信息失败,Err:" + tmpErr.Error())
 			return

+ 5 - 0
main.go

@@ -2,6 +2,7 @@ package main
 
 import (
 	"eta/eta_index_lib/controllers"
+	"eta/eta_index_lib/models"
 	_ "eta/eta_index_lib/routers"
 	"eta/eta_index_lib/services/alarm_msg"
 	"eta/eta_index_lib/utils"
@@ -18,6 +19,10 @@ func main() {
 		web.BConfig.WebConfig.DirectoryIndex = true
 		web.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"
 	}
+
+	// 初始化表数据入库
+	models.AfterInitTable()
+
 	// 异常处理
 	web.ErrorController(&controllers.ErrorController{})
 

+ 44 - 28
models/base_from_adjust.go

@@ -2,9 +2,9 @@ package models
 
 import (
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"strings"
 	"time"
@@ -12,7 +12,7 @@ import (
 
 // EdbDataAdjust 数据调整指标数据结构体
 type EdbDataAdjust struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
+	EdbDataId     int `gorm:"column:edb_data_id;primaryKey"`
 	EdbInfoId     int
 	EdbCode       string
 	DataTime      string
@@ -32,8 +32,9 @@ type AddAdjustEdbData struct {
 // SaveAdjustEdb 保存数据调整指标
 func SaveAdjustEdb(req SaveAdjustEdbReq, lang string) (edbInfo *EdbInfo, err error, errMsg string) {
 	errMsg = `添加指标失败`
-	o := orm.NewOrm()
-	to, err := o.Begin()
+	//o := orm.NewOrm()
+	//to, err := o.Begin()
+	to := global.DEFAULT_DB.Begin()
 	if err != nil {
 		return
 	}
@@ -77,14 +78,13 @@ func SaveAdjustEdb(req SaveAdjustEdbReq, lang string) (edbInfo *EdbInfo, err err
 			EdbType:         2,
 			Sort:            GetAddEdbMaxSortByClassifyId(req.ClassifyId, utils.EDB_INFO_TYPE),
 		}
-
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
-
+		//newEdbInfoId, tmpErr := to.Insert(edbInfo)
+		//if tmpErr != nil {
+		//	err = tmpErr
+		//	return
+		//}
+		//edbInfo.EdbInfoId = int(newEdbInfoId)
+		tmpErr := to.Create(&edbInfo).Error
 		// 获取来源指标
 		fromEdbInfo, tmpErr := GetEdbInfoById(req.FromEdbInfoId)
 		if tmpErr != nil {
@@ -108,7 +108,8 @@ func SaveAdjustEdb(req SaveAdjustEdbReq, lang string) (edbInfo *EdbInfo, err err
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
-			_, err = to.Insert(calculateMappingItem)
+			//_, err = to.Insert(calculateMappingItem)
+			err = to.Create(&calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -125,7 +126,8 @@ func SaveAdjustEdb(req SaveAdjustEdbReq, lang string) (edbInfo *EdbInfo, err err
 				ModifyTime:    time.Now(),
 				CreateTime:    time.Now(),
 			}
-			_, err = to.Insert(edbAdjustConf)
+			//_, err = to.Insert(edbAdjustConf)
+			err = to.Create(&edbAdjustConf).Error
 			if err != nil {
 				return
 			}
@@ -158,7 +160,8 @@ func SaveAdjustEdb(req SaveAdjustEdbReq, lang string) (edbInfo *EdbInfo, err err
 		edbInfo.UnitEn = strings.TrimSpace(req.UnitEn)
 		edbInfo.ClassifyId = req.ClassifyId
 		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "EdbNameEn", "UnitEn", "ClassifyId", "ModifyTime")
+		//_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime")
+		err = to.Model(&edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "EdbNameEn", "UnitEn", "ClassifyId", "ModifyTime"}).Updates(&edbInfo).Error
 		if err != nil {
 			return
 		}
@@ -170,7 +173,8 @@ func SaveAdjustEdb(req SaveAdjustEdbReq, lang string) (edbInfo *EdbInfo, err err
 		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_ADJUST, edbInfo.SubSource)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
-		_, err = to.Raw(deleteSql, req.EdbInfoId).Exec()
+		//_, err = to.Raw(deleteSql, req.EdbInfoId).Exec()
+		err = to.Exec(deleteSql, req.EdbInfoId).Error
 		if err != nil {
 			return
 		}
@@ -198,7 +202,8 @@ func SaveAdjustEdb(req SaveAdjustEdbReq, lang string) (edbInfo *EdbInfo, err err
 			// 获取之前的配置
 			var edbAdjustConf *EdbAdjustConf
 			sql := ` SELECT * FROM edb_adjust_conf WHERE edb_info_id=? `
-			err = o.Raw(sql, edbInfo.EdbInfoId).QueryRow(&edbAdjustConf)
+			//err = o.Raw(sql, edbInfo.EdbInfoId).QueryRow(&edbAdjustConf)
+			err = global.DEFAULT_DB.Raw(sql, edbInfo.EdbInfoId).First(&edbAdjustConf).Error
 			if err != nil {
 				errMsg = "获取指标配置失败"
 				return
@@ -207,7 +212,8 @@ func SaveAdjustEdb(req SaveAdjustEdbReq, lang string) (edbInfo *EdbInfo, err err
 			// 修改配置的最晚日期
 			edbAdjustConf.SourceEndDate = fromEdbEndDate
 			edbAdjustConf.ModifyTime = time.Now()
-			_, err = to.Update(edbAdjustConf, "SourceEndDate", "ModifyTime")
+			//_, err = to.Update(edbAdjustConf, "SourceEndDate", "ModifyTime")
+			err = to.Model(&edbAdjustConf).Select([]string{"SourceEndDate", "ModifyTime"}).Updates(&edbAdjustConf).Error
 			if err != nil {
 				errMsg = "更新指标配置失败"
 				return
@@ -243,6 +249,7 @@ func SaveAdjustEdb(req SaveAdjustEdbReq, lang string) (edbInfo *EdbInfo, err err
 	var isAdd bool
 	dataTableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	addSql := ` INSERT INTO ` + dataTableName + `(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	for _, item := range dataObj {
 		//值
 		val := item.Value
@@ -253,7 +260,8 @@ func SaveAdjustEdb(req SaveAdjustEdbReq, lang string) (edbInfo *EdbInfo, err err
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		//_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			return
 		}
@@ -263,8 +271,9 @@ func SaveAdjustEdb(req SaveAdjustEdbReq, lang string) (edbInfo *EdbInfo, err err
 
 // RefreshAllAdjustEdb 刷新所有 数据调整指标
 func RefreshAllAdjustEdb(edbInfo *EdbInfo, fromEdbInfo *EdbInfo) (err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
+	//o := orm.NewOrm()
+	//to, err := o.Begin()
+	to := global.DEFAULT_DB.Begin()
 	if err != nil {
 		return
 	}
@@ -283,7 +292,8 @@ func RefreshAllAdjustEdb(edbInfo *EdbInfo, fromEdbInfo *EdbInfo) (err error) {
 	// 获取之前的配置
 	var edbAdjustConf *EdbAdjustConf
 	sql := ` SELECT * FROM edb_adjust_conf WHERE edb_info_id=? `
-	err = o.Raw(sql, edbInfo.EdbInfoId).QueryRow(&edbAdjustConf)
+	//err = o.Raw(sql, edbInfo.EdbInfoId).QueryRow(&edbAdjustConf)
+	err = global.DEFAULT_DB.Raw(sql, edbInfo.EdbInfoId).First(&edbAdjustConf).Error
 	if err != nil {
 		err = errors.New("获取指标配置失败")
 		return
@@ -318,6 +328,7 @@ func RefreshAllAdjustEdb(edbInfo *EdbInfo, fromEdbInfo *EdbInfo) (err error) {
 
 	var isAdd bool
 	addSql := ` INSERT INTO ` + dataTableName + `(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	for _, item := range dataList {
 		currDay := item.DataTime
 		//值
@@ -340,7 +351,8 @@ func RefreshAllAdjustEdb(edbInfo *EdbInfo, fromEdbInfo *EdbInfo) (err error) {
 			if existVal != item.Value {
 				sql = ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 				sql = fmt.Sprintf(sql, dataTableName)
-				_, err = to.Raw(sql, saveVal, edbInfo.EdbInfoId, currDay).Exec()
+				//_, err = to.Raw(sql, saveVal, edbInfo.EdbInfoId, currDay).Exec()
+				err = to.Exec(sql, saveVal, edbInfo.EdbInfoId, currDay).Error
 				if err != nil {
 					return err
 				}
@@ -350,7 +362,8 @@ func RefreshAllAdjustEdb(edbInfo *EdbInfo, fromEdbInfo *EdbInfo) (err error) {
 	}
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		//_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			return
 		}
@@ -363,7 +376,8 @@ func RefreshAllAdjustEdb(edbInfo *EdbInfo, fromEdbInfo *EdbInfo) (err error) {
 			}
 			edbAdjustConf.SourceEndDate = fromEdbEndDate
 			edbAdjustConf.ModifyTime = time.Now()
-			_, err = to.Update(edbAdjustConf, "SourceEndDate", "ModifyTime")
+			//_, err = to.Update(edbAdjustConf, "SourceEndDate", "ModifyTime")
+			err = to.Model(&edbAdjustConf).Select([]string{"SourceEndDate", "ModifyTime"}).Updates(&edbAdjustConf).Error
 		}
 	}
 
@@ -394,9 +408,10 @@ type SaveAdjustEdbDataReq struct {
 // FixData 修复数据
 func FixData() {
 	var list []*EdbInfo
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM edb_info WHERE source=? `
-	_, err := o.Raw(sql, 40).QueryRows(&list)
+	//_, err := o.Raw(sql, 40).QueryRows(&list)
+	err := global.DEFAULT_DB.Raw(sql, 40).Find(&list).Error
 	for _, edbInfo := range list {
 		// 获取来源指标
 		calculateMapping, tmpErr := GetEdbInfoCalculateMappingDetail(edbInfo.EdbInfoId)
@@ -421,7 +436,8 @@ func FixData() {
 			ModifyTime:    time.Now(),
 			CreateTime:    time.Now(),
 		}
-		_, err = o.Insert(edbAdjustConf)
+		//_, err = o.Insert(edbAdjustConf)
+		err = global.DEFAULT_DB.Create(&edbAdjustConf).Error
 		if err != nil {
 			fmt.Println(edbInfo.EdbInfoId, "添加失败;err:", tmpErr)
 			continue

+ 72 - 43
models/base_from_baiinfo.go

@@ -1,17 +1,18 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
-
-	"github.com/beego/beego/v2/client/orm"
 )
 
 type BaseFromBaiinfoData struct {
-	BaiinfoDataId          int `orm:"column(baiinfo_data_id);pk"`
+	BaiinfoDataId int `gorm:"column:baiinfo_data_id;primaryKey"`
+	//BaiinfoDataId          int `orm:"column(baiinfo_data_id);pk"`
 	BaseFromBaiinfoIndexId int
 	IndexCode              string
 	DataTime               string
@@ -21,19 +22,26 @@ type BaseFromBaiinfoData struct {
 	DataTimestamp          int64
 }
 
+func (e *BaseFromBaiinfoData) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
 func GetBaseFromBaiinfoDataByCondition(condition string, pars []interface{}) (list []*BaseFromBaiinfoData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_baiinfo_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	//_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&list).Error
 	return
 }
 
 // AddEdbDataFromBaiinfo 新增百川盈弗指标数据
 func AddEdbDataFromBaiinfo(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var condition string
 	var pars []interface{}
@@ -42,7 +50,7 @@ func AddEdbDataFromBaiinfo(edbCode string) (err error) {
 		pars = append(pars, edbCode)
 	}
 	baiinfoBaseDataAll, err := GetBaseFromBaiinfoDataByCondition(condition, pars)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 	var isAdd bool
@@ -65,7 +73,8 @@ func AddEdbDataFromBaiinfo(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
+		//_, err = o.Raw(addSql).Exec()
 		if err != nil {
 			return err
 		}
@@ -77,7 +86,7 @@ func AddEdbDataFromBaiinfo(edbCode string) (err error) {
 func RefreshEdbDataFromBaiinfo(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_BAIINFO
 	subSource := utils.DATA_SUB_SOURCE_EDB
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -107,7 +116,7 @@ func RefreshEdbDataFromBaiinfo(edbInfoId int, edbCode, startDate string) (err er
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -175,7 +184,8 @@ func RefreshEdbDataFromBaiinfo(edbInfoId int, edbCode, startDate string) (err er
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromBaiinfo add Err", err.Error())
 			return
@@ -195,78 +205,97 @@ type HandleBaiinfoExcelDataReq struct {
 }
 
 type BaseFromBaiinfoIndex struct {
-	BaseFromBaiinfoIndexId int64 `orm:"column(base_from_baiinfo_index_id);pk"`
-	IndexCode              string
-	IndexName              string
-	Frequency              string
-	Unit                   string
-	StartDate              string
-	EndDate                string
-	Sort                   int
-	BaseFileName           string
-	RenameFileName         string
-	TerminalCode           string
-	CreateTime             time.Time
-	ModifyTime             time.Time
+	BaseFromBaiinfoIndexId int64 `gorm:"column:base_from_baiinfo_index_id;primaryKey"`
+	//BaseFromBaiinfoIndexId int64 `orm:"column(base_from_baiinfo_index_id);pk"`
+	IndexCode      string
+	IndexName      string
+	Frequency      string
+	Unit           string
+	StartDate      string
+	EndDate        string
+	Sort           int
+	BaseFileName   string
+	RenameFileName string
+	TerminalCode   string
+	CreateTime     time.Time
+	ModifyTime     time.Time
+}
+
+func (e *BaseFromBaiinfoIndex) AfterFind(db *gorm.DB) (err error) {
+	e.StartDate = utils.GormDateStrToDateStr(e.StartDate)
+	e.EndDate = utils.GormDateStrToDateStr(e.EndDate)
+
+	return
 }
 
 func (d *BaseFromBaiinfoIndex) AddBaseFromBaiinfoIndex() (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(d)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(d)
+	err = global.DEFAULT_DB.Create(&d).Error
+	if err != nil {
+		return
+	}
+	lastId = d.BaseFromBaiinfoIndexId
 	return
 }
 
 func AddBaseFromBaiinfoData(item []*BaseFromBaiinfoData) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(1, item)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(1, item)
+	err = global.DEFAULT_DB.CreateInBatches(&item, 1).Error
 	return
 }
 
 func (d *BaseFromBaiinfoIndex) GetSmmIndexItem(indexCode string) (item *BaseFromBaiinfoIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_baiinfo_index WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	return
 }
 
 func GetBaseFromBaiinfoDataByCode(indexCode string) (list []*BaseFromBaiinfoData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_baiinfo_data WHERE index_code=? `
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&list).Error
 	return
 }
 
 func ModifyBaiinfoIndexSort(baseFromBaiinfoIndexId int64) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_baiinfo_index SET sort=? WHERE base_from_baiinfo_index_id=? `
-	_, err = o.Raw(sql, baseFromBaiinfoIndexId, baseFromBaiinfoIndexId).Exec()
+	//_, err = o.Raw(sql, baseFromBaiinfoIndexId, baseFromBaiinfoIndexId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, baseFromBaiinfoIndexId, baseFromBaiinfoIndexId).Error
 	return
 }
 
 func GetBaiinfoIndexInfoMaxAndMinInfo(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_baiinfo_data WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
-
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	var latest_value float64
 	sql = ` SELECT value AS latest_value FROM base_from_baiinfo_data WHERE index_code=? ORDER BY data_time DESC LIMIT 1 `
-	err = o.Raw(sql, indexCode).QueryRow(&latest_value)
+	//err = o.Raw(sql, indexCode).QueryRow(&latest_value)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&latest_value).Error
 	item.LatestValue = latest_value
 
 	return
 }
 
 func ModifyBaiinfoIndexMaxAndMinInfo(indexCode string, item *EdbInfoMaxAndMinInfo) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_baiinfo_index SET start_date=?,end_date=?,latest_value = ?,modify_time=NOW() WHERE index_code=? `
-	_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	//_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Error
 	return
 }
 
 // Update 修改
 func (r *BaseFromBaiinfoIndex) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(r, updateCols...)
-
+	//o := orm.NewOrm()
+	//_, err = o.Update(r, updateCols...)
+	err = global.DEFAULT_DB.Model(&r).Select(updateCols).Updates(&r).Error
 	return
 }

+ 94 - 55
models/base_from_bloomberg.go

@@ -1,32 +1,35 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"strings"
 	"time"
+
+	"gorm.io/gorm"
 )
 
 // BaseFromBloombergIndex Bloomberg原始指标
 type BaseFromBloombergIndex struct {
-	BaseFromBloombergIndexId int       `orm:"column(base_from_bloomberg_index_id);pk"`
-	IndexCode                string    `description:"指标编码"`
-	IndexName                string    `description:"指标名称"`
-	Unit                     string    `description:"单位"`
-	Source                   int       `description:"来源"`
-	Frequency                string    `description:"频度"`
-	StartDate                time.Time `description:"开始时间"`
-	EndDate                  time.Time `description:"结束时间"`
-	Describe                 string    `description:"描述"`
-	Sort                     int       `description:"排序"`
-	IsStop                   int       `description:"是否停更:0-否;1-停更"`
-	EdbExist                 int       `description:"指标库是否已添加:0-否;1-是"`
-	TerminalCode             string    `description:"所属终端编码"`
-	FilePath                 string    `description:"文件存储路径"`
-	CreateTime               time.Time `description:"创建时间"`
-	ModifyTime               time.Time `description:"修改时间"`
+	BaseFromBloombergIndexId int `gorm:"column:base_from_bloomberg_index_id;primaryKey"`
+	//BaseFromBloombergIndexId int       `orm:"column(base_from_bloomberg_index_id);pk"`
+	IndexCode    string    `description:"指标编码"`
+	IndexName    string    `description:"指标名称"`
+	Unit         string    `description:"单位"`
+	Source       int       `description:"来源"`
+	Frequency    string    `description:"频度"`
+	StartDate    time.Time `description:"开始时间"`
+	EndDate      time.Time `description:"结束时间"`
+	Describe     string    `description:"描述"`
+	Sort         int       `description:"排序"`
+	IsStop       int       `description:"是否停更:0-否;1-停更"`
+	EdbExist     int       `description:"指标库是否已添加:0-否;1-是"`
+	TerminalCode string    `description:"所属终端编码"`
+	FilePath     string    `description:"文件存储路径"`
+	CreateTime   time.Time `description:"创建时间"`
+	ModifyTime   time.Time `description:"修改时间"`
 }
 
 func (m *BaseFromBloombergIndex) TableName() string {
@@ -34,31 +37,35 @@ func (m *BaseFromBloombergIndex) TableName() string {
 }
 
 func (m *BaseFromBloombergIndex) Create() (err error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.BaseFromBloombergIndexId = int(id)
+	//o := orm.NewOrm()
+	//id, err := o.Insert(m)
+	//if err != nil {
+	//	return
+	//}
+	//m.BaseFromBloombergIndexId = int(id)
+	err = global.DEFAULT_DB.Create(&m).Error
 	return
 }
 
 func (m *BaseFromBloombergIndex) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(m, cols...)
+	err = global.DEFAULT_DB.Model(&m).Select(cols).Updates(&m).Error
 	return
 }
 
 func GetBaseFromBloombergIndexByCode(indexCode string) (item *BaseFromBloombergIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_bloomberg_index WHERE index_code = ? LIMIT 1`
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	return
 }
 
 // BaseFromBloombergData Bloomberg原始数据
 type BaseFromBloombergData struct {
-	BaseFromBloombergDataId  int       `orm:"column(base_from_bloomberg_data_id);pk"`
+	//BaseFromBloombergDataId  int       `orm:"column(base_from_bloomberg_data_id);pk"`
+	BaseFromBloombergDataId  int       `gorm:"column:base_from_bloomberg_data_id;primaryKey"`
 	BaseFromBloombergIndexId int       `description:"指标ID"`
 	IndexCode                string    `description:"指标编码"`
 	DataTime                 time.Time `description:"数据日期"`
@@ -74,48 +81,67 @@ func (m *BaseFromBloombergData) TableName() string {
 
 func GetBaseFromBloombergDataByCondition(condition string, pars []interface{}) (items []*BaseFromBloombergData, err error) {
 	sub := `SELECT * FROM base_from_bloomberg_data WHERE 1=1  `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sub += condition
 	}
 	sql := `SELECT * FROM (` + sub + ` HAVING 1 ORDER BY modify_time DESC) tmp GROUP BY data_time ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	//_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 func MultiInsertOrUpdateBaseFromBloombergData(inserts, updates []*BaseFromBloombergData) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if len(inserts) > 0 {
-		_, e := o.InsertMulti(1000, inserts)
+		//_, e := o.InsertMulti(1000, inserts)
+		e := global.DEFAULT_DB.CreateInBatches(&inserts, 1000).Error
 		if e != nil {
 			err = fmt.Errorf("insert multi err: %s", e.Error())
 			return
 		}
 	}
 	if len(updates) > 0 {
-		p, e := o.Raw("UPDATE base_from_bloomberg_data SET value = ?, modify_time = NOW() WHERE index_code = ? AND data_time = ?").Prepare()
-		if e != nil {
-			err = fmt.Errorf("prepare err: %s", e.Error())
-			return
-		}
+		to := global.DEFAULT_DB.Begin()
 		defer func() {
-			_ = p.Close()
+			if err != nil {
+				_ = to.Rollback()
+			} else {
+				_ = to.Commit()
+			}
 		}()
+		sql := `UPDATE base_from_bloomberg_data SET value = ?, modify_time = NOW() WHERE index_code = ? AND data_time = ?`
 		for _, v := range updates {
-			_, e = p.Exec(v.Value, v.IndexCode, v.DataTime.Format(utils.FormatDate))
-			if e != nil {
-				err = fmt.Errorf("update err: %s", e.Error())
+			err = to.Exec(sql, v.Value, v.IndexCode, v.DataTime.Format(utils.FormatDate)).Error
+			if err != nil {
+				err = fmt.Errorf("update err: %s", err.Error())
 				return
 			}
 		}
+		//p, e := o.Raw("UPDATE base_from_bloomberg_data SET value = ?, modify_time = NOW() WHERE index_code = ? AND data_time = ?").Prepare()
+		//if e != nil {
+		//	err = fmt.Errorf("prepare err: %s", e.Error())
+		//	return
+		//}
+		//defer func() {
+		//	_ = p.Close()
+		//}()
+		//for _, v := range updates {
+		//	_, e = p.Exec(v.Value, v.IndexCode, v.DataTime.Format(utils.FormatDate))
+		//	if e != nil {
+		//		err = fmt.Errorf("update err: %s", e.Error())
+		//		return
+		//	}
+		//}
 	}
 	return
 }
 
 func GetBaseFromBloombergIndexMinMax(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_bloomberg_data WHERE index_code = ? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	if err != nil {
 		return
 	}
@@ -123,7 +149,8 @@ func GetBaseFromBloombergIndexMinMax(indexCode string) (item *EdbInfoMaxAndMinIn
 	// 获取最新值
 	var lastVal float64
 	sql = ` SELECT value AS latest_value FROM base_from_bloomberg_data WHERE index_code = ? ORDER BY data_time DESC LIMIT 1 `
-	err = o.Raw(sql, indexCode).QueryRow(&lastVal)
+	//err = o.Raw(sql, indexCode).QueryRow(&lastVal)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&lastVal).Error
 	if err != nil {
 		return
 	}
@@ -132,31 +159,39 @@ func GetBaseFromBloombergIndexMinMax(indexCode string) (item *EdbInfoMaxAndMinIn
 }
 
 func ModifyBaseFromBloombergIndexMinMax(indexCode string, item *EdbInfoMaxAndMinInfo) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_bloomberg_index SET start_date = ?, end_date = ?,latest_value = ?, modify_time = NOW() WHERE index_code = ? `
-	_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	//_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Error
 	return
 }
 
 type BloombergData struct {
-	InputValue float64 `orm:"column(value)" description:"值"`
-	DataTime   string  `orm:"column(data_time)" description:"日期"`
+	InputValue float64 `gorm:"column:value" description:"值"`
+	DataTime   string  `gorm:"column:data_time" description:"日期"`
+}
+
+func (m *BloombergData) AfterFind(c *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
 }
 
 func GetBloombergDataByCondition(condition string, pars []interface{}) (item []*BloombergData, err error) {
 	sql1 := ` SELECT * FROM base_from_bloomberg_data WHERE 1=1  `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql1 += condition
 	}
 	sql := `select * from (` + sql1 + ` having 1 order by modify_time DESC ) tmp GROUP BY data_time ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	sql = utils.ReplaceDriverKeywords("", sql)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 // AddEdbDataFromBloomberg 新增Bloomberg指标数据
 func AddEdbDataFromBloomberg(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var condition string
 	var pars []interface{}
@@ -177,6 +212,7 @@ func AddEdbDataFromBloomberg(edbCode string) (err error) {
 	if dataLen > 0 {
 		var isAdd bool
 		addSql := ` INSERT INTO edb_data_bloomberg (edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+		addSql = utils.ReplaceDriverKeywords("", addSql)
 		for i := 0; i < dataLen; i++ {
 			item := bloombergDataList[i]
 			eDate := item.DataTime
@@ -198,7 +234,8 @@ func AddEdbDataFromBloomberg(edbCode string) (err error) {
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
 			utils.FileLog.Info("addSql:" + addSql)
-			_, err = o.Raw(addSql).Exec()
+			//_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
 				return err
 			}
@@ -212,7 +249,7 @@ func RefreshEdbDataFromBloomberg(edbInfoId int, edbCode, startDate string) (err
 	source := utils.DATA_SOURCE_BLOOMBERG
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -242,7 +279,7 @@ func RefreshEdbDataFromBloomberg(edbInfoId int, edbCode, startDate string) (err
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -270,6 +307,7 @@ func RefreshEdbDataFromBloomberg(edbInfoId int, edbCode, startDate string) (err
 	}
 
 	addSql := ` INSERT INTO edb_data_bloomberg(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	addMap := make(map[string]string)
 	for _, v := range bloombergDataList {
@@ -318,7 +356,8 @@ func RefreshEdbDataFromBloomberg(edbInfoId int, edbCode, startDate string) (err
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}

+ 71 - 54
models/base_from_business.go

@@ -1,32 +1,33 @@
 package models
 
 import (
+	sql2 "database/sql"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/models/mgo"
 	"eta/eta_index_lib/utils"
 	"fmt"
 	"go.mongodb.org/mongo-driver/bson"
 	"time"
-
-	"github.com/beego/beego/v2/client/orm"
 )
 
 // BaseFromBusinessIndex
 // @Description: 外部指标(商家系统)表
 type BaseFromBusinessIndex struct {
-	BaseFromBusinessIndexId int64     `orm:"column(base_from_business_index_id);pk"`
-	IndexCode               string    `description:"指标编码"`
-	IndexName               string    `description:"指标名称"`
-	Unit                    string    `description:"单位"`
-	Frequency               string    `description:"频度"`
-	Source                  int       `description:"数据来源"`
-	SourceName              string    `description:"数据来源名称"`
-	StartDate               time.Time `description:"开始日期"`
-	EndDate                 time.Time `description:"结束日期"`
-	Remark                  string    `description:"备注字段"`
-	BaseModifyTime          time.Time `description:"基础信息(名称,单位,频度)变更时间"`
-	DataUpdateTime          time.Time `description:"最近一次数据发生变化的时间"`
-	CreateTime              time.Time `description:"创建时间"`
-	ModifyTime              time.Time `description:"修改时间"`
+	BaseFromBusinessIndexId int64 `gorm:"column:base_from_business_index_id;primaryKey"`
+	//BaseFromBusinessIndexId int64     `orm:"column(base_from_business_index_id);pk"`
+	IndexCode      string    `description:"指标编码"`
+	IndexName      string    `description:"指标名称"`
+	Unit           string    `description:"单位"`
+	Frequency      string    `description:"频度"`
+	Source         int       `description:"数据来源"`
+	SourceName     string    `description:"数据来源名称"`
+	StartDate      time.Time `description:"开始日期"`
+	EndDate        time.Time `description:"结束日期"`
+	Remark         string    `description:"备注字段"`
+	BaseModifyTime time.Time `description:"基础信息(名称,单位,频度)变更时间"`
+	DataUpdateTime time.Time `description:"最近一次数据发生变化的时间"`
+	CreateTime     time.Time `description:"创建时间"`
+	ModifyTime     time.Time `description:"修改时间"`
 }
 
 // BaseFromBusinessIndexResp
@@ -42,9 +43,10 @@ type BaseFromBusinessIndexResp struct {
 // EdbBusinessSource
 // @Description: 自有数据(商家)指标来源
 type EdbBusinessSource struct {
-	EdbBusinessSourceId int64     `orm:"column(edb_business_source_id);pk"`
-	SourceName          string    `description:"来源名称"` // 来源名称
-	CreateTime          time.Time `description:"创建时间"` // 创建时间
+	EdbBusinessSourceId int64 `gorm:"column:edb_business_source_id;primaryKey"`
+	//EdbBusinessSourceId int64     `orm:"column(edb_business_source_id);pk"`
+	SourceName string    `description:"来源名称"` // 来源名称
+	CreateTime time.Time `description:"创建时间"` // 创建时间
 }
 
 // AddBusinessIndexReq
@@ -89,9 +91,10 @@ type DelBusinessIndexDataReq struct {
 // @return item *BaseFromBusinessIndex
 // @return err error
 func (m *BaseFromBusinessIndex) GetIndexItem(indexCode string) (item *BaseFromBusinessIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_business_index WHERE index_code = ? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	return
 }
 
@@ -108,9 +111,11 @@ func (m *BaseFromBusinessIndex) GetIndexItemList(indexCodeList []string) (items
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrm()
-	sql := `SELECT * FROM base_from_business_index WHERE index_code in (` + utils.GetOrmInReplace(num) + `) `
-	_, err = o.Raw(sql, indexCodeList).QueryRows(&items)
+	//o := orm.NewOrm()
+	//sql := `SELECT * FROM base_from_business_index WHERE index_code in (` + utils.GetOrmInReplace(num) + `) `
+	sql := `SELECT * FROM base_from_business_index WHERE index_code in ? `
+	err = global.DEFAULT_DB.Raw(sql, indexCodeList).Find(&items).Error
+	//_, err = o.Raw(sql, indexCodeList).QueryRows(&items)
 
 	return
 }
@@ -127,9 +132,11 @@ func (m *BaseFromBusinessIndex) DelIndexItemList(indexCodeList []string) (err er
 	if num <= 0 {
 		return
 	}
-	o := orm.NewOrm()
-	sql := `DELETE FROM base_from_business_index WHERE index_code in (` + utils.GetOrmInReplace(num) + `) `
-	_, err = o.Raw(sql, indexCodeList).Exec()
+	//o := orm.NewOrm()
+	//sql := `DELETE FROM base_from_business_index WHERE index_code in (` + utils.GetOrmInReplace(num) + `) `
+	sql := `DELETE FROM base_from_business_index WHERE index_code in ? `
+	err = global.DEFAULT_DB.Exec(sql, indexCodeList).Error
+	//_, err = o.Raw(sql, indexCodeList).Exec()
 
 	return
 }
@@ -142,33 +149,40 @@ func (m *BaseFromBusinessIndex) DelIndexItemList(indexCodeList []string) (err er
 // @return maxId int
 // @return err error
 func (m *BaseFromBusinessIndex) GetMaxId() (maxId int, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT max(base_from_business_index_id) id FROM base_from_business_index limit 1`
-	err = o.Raw(sql).QueryRow(&maxId)
+	//o := orm.NewOrm()
+	var intNull sql2.NullInt64
+	sql := `SELECT COALESCE(MAX(base_from_business_index_id), 0) as id FROM base_from_business_index limit 1`
+	err = global.DEFAULT_DB.Raw(sql).Scan(&intNull).Error
+	if err == nil && intNull.Valid {
+		maxId = int(intNull.Int64)
+	}
+	//err = o.Raw(sql).QueryRow(&maxId)
 	return
 }
 
 // Add 新增
 func (m *BaseFromBusinessIndex) Add() (err error) {
-	o := orm.NewOrm()
-	lastId, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.BaseFromBusinessIndexId = lastId
-
+	//o := orm.NewOrm()
+	//lastId, err := o.Insert(m)
+	//if err != nil {
+	//	return
+	//}
+	//m.BaseFromBusinessIndexId = lastId
+	err = global.DEFAULT_DB.Create(&m).Error
 	return
 }
 
 func (m *BaseFromBusinessIndex) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(m, cols...)
+	err = global.DEFAULT_DB.Model(&m).Select(cols).Updates(&m).Error
 	return
 }
 
 func (m *BaseFromBusinessIndex) Del() (err error) {
-	o := orm.NewOrm()
-	_, err = o.Delete(m)
+	//o := orm.NewOrm()
+	//_, err = o.Delete(m)
+	err = global.DEFAULT_DB.Delete(&m).Error
 	return
 }
 
@@ -179,8 +193,9 @@ func (m *BaseFromBusinessIndex) UpdateIndex(item *BaseFromBusinessIndex, updateC
 	if len(updateCols) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	_, err = o.Update(item, updateCols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(item, updateCols...)
+	err = global.DEFAULT_DB.Model(&item).Select(updateCols).Updates(&item).Error
 	return
 }
 
@@ -193,21 +208,22 @@ func (m *BaseFromBusinessIndex) UpdateIndex(item *BaseFromBusinessIndex, updateC
 // @return item *EdbBusinessSource
 // @return err error
 func (m *EdbBusinessSource) GetEdbBusinessSourceItem(sourceName string) (item *EdbBusinessSource, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM edb_business_source WHERE source_name = ? `
-	err = o.Raw(sql, sourceName).QueryRow(&item)
+	//err = o.Raw(sql, sourceName).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, sourceName).First(&item).Error
 	return
 }
 
 // Add 新增
 func (m *EdbBusinessSource) Add() (err error) {
-	o := orm.NewOrm()
-	lastId, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.EdbBusinessSourceId = lastId
-
+	////o := orm.NewOrm()
+	//lastId, err := o.Insert(m)
+	//if err != nil {
+	//	return
+	//}
+	//m.EdbBusinessSourceId = lastId
+	err = global.DEFAULT_DB.Create(&m).Error
 	return
 }
 
@@ -319,12 +335,13 @@ func (m BaseFromBusinessIndex) getEdbInfoMaxAndMinInfoByMysql(edbCode string) (i
 // @param isIndexUpdateOrAdd bool
 // @return err error
 func (m *BaseFromBusinessIndex) ModifyIndexMaxAndMinInfo(indexCode string, item *EdbInfoMaxAndMinInfo, isIndexUpdateOrAdd bool) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_business_index SET start_date=?,end_date=?,latest_value=?,modify_time=NOW() `
 	if isIndexUpdateOrAdd {
 		sql += `,data_update_time=NOW() `
 	}
 	sql += ` WHERE index_code=?`
-	_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	//_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Error
 	return
 }

+ 44 - 34
models/base_from_business_data.go

@@ -1,10 +1,11 @@
 package models
 
 import (
+	sql2 "database/sql"
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
@@ -12,7 +13,8 @@ import (
 // BaseFromBusinessData
 // @Description: 外部指标(商家系统)原始数据表
 type BaseFromBusinessData struct {
-	BusinessDataId          int       `orm:"column(business_data_id);pk" json:"business_data_id"`
+	//BusinessDataId          int       `orm:"column(business_data_id);pk" json:"business_data_id"`
+	BusinessDataId          int       `gorm:"column:business_data_id;primaryKey" json:"business_data_id"`
 	BaseFromBusinessIndexId int       `json:"base_from_business_index_id"` // 指标id
 	IndexCode               string    `json:"index_code"`                  // 指标编码
 	DataTime                time.Time `json:"data_time"`                   // 数据日期
@@ -68,7 +70,7 @@ type WhereParams struct {
 // @return result []*BaseFromBusinessData
 // @return err error
 func (m *BaseFromBusinessData) GetAllDataList(condition []string, pars []interface{}, order string) (result []*BaseFromBusinessData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	sql := `SELECT * FROM base_from_business_data `
 	if len(condition) > 0 {
@@ -79,8 +81,8 @@ func (m *BaseFromBusinessData) GetAllDataList(condition []string, pars []interfa
 		sql += ` ORDER BY ` + order
 	}
 
-	_, err = o.Raw(sql, pars).QueryRows(&result)
-
+	//_, err = o.Raw(sql, pars).QueryRows(&result)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&result).Error
 	return
 }
 
@@ -96,7 +98,7 @@ func (m *BaseFromBusinessData) GetAllDataList(condition []string, pars []interfa
 // @return result []*BaseFromBusinessData
 // @return err error
 func (m *BaseFromBusinessData) GetLimitDataList(condition []string, pars []interface{}, order string, size int64) (result []*BaseFromBusinessData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_business_data `
 	if len(condition) > 0 {
 		sql += ` WHERE ` + strings.Join(condition, " AND ")
@@ -108,8 +110,8 @@ func (m *BaseFromBusinessData) GetLimitDataList(condition []string, pars []inter
 
 	sql += fmt.Sprintf(` LIMIT %d`, size)
 
-	_, err = o.Raw(sql, pars).QueryRows(&result)
-
+	//_, err = o.Raw(sql, pars).QueryRows(&result)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&result).Error
 	return
 }
 
@@ -126,7 +128,7 @@ func (m *BaseFromBusinessData) GetLimitDataList(condition []string, pars []inter
 // @return result []*BaseFromBusinessData
 // @return err error
 func (m *BaseFromBusinessData) GetPageDataList(condition []string, pars []interface{}, order string, startSize, size int64) (result []*BaseFromBusinessData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_business_data `
 	if len(condition) > 0 {
 		sql += ` WHERE ` + strings.Join(condition, " AND ")
@@ -138,8 +140,8 @@ func (m *BaseFromBusinessData) GetPageDataList(condition []string, pars []interf
 
 	sql += fmt.Sprintf(` LIMIT %d,%d`, startSize, size)
 
-	_, err = o.Raw(sql, pars).QueryRows(&result)
-
+	//_, err = o.Raw(sql, pars).QueryRows(&result)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&result).Error
 	return
 }
 
@@ -153,13 +155,13 @@ func (m *BaseFromBusinessData) GetPageDataList(condition []string, pars []interf
 // @return count int64
 // @return err error
 func (m *BaseFromBusinessData) GetCountDataList(condition []string, pars []interface{}) (count int64, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT COUNT(1) FROM base_from_business_data `
 	if len(condition) > 0 {
 		sql += ` WHERE ` + strings.Join(condition, " AND ")
 	}
-	err = o.Raw(sql, pars).QueryRow(&count)
-
+	//err = o.Raw(sql, pars).QueryRow(&count)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
@@ -171,9 +173,9 @@ func (m *BaseFromBusinessData) GetCountDataList(condition []string, pars []inter
 // @param addData interface{}
 // @return err error
 func (m *BaseFromBusinessData) InsertDataByColl(addData interface{}) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Insert(addData)
-
+	//o := orm.NewOrm()
+	//_, err = o.Insert(addData)
+	err = global.DEFAULT_DB.Create(&addData).Error
 	return
 }
 
@@ -186,9 +188,9 @@ func (m *BaseFromBusinessData) InsertDataByColl(addData interface{}) (err error)
 // @param dataList []*BaseFromBusinessData
 // @return err error
 func (m *BaseFromBusinessData) BatchInsertData(bulk int, dataList []*BaseFromBusinessData) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(bulk, dataList)
-
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(bulk, dataList)
+	err = global.DEFAULT_DB.CreateInBatches(&dataList, bulk).Error
 	return
 }
 
@@ -201,8 +203,9 @@ func (m *BaseFromBusinessData) BatchInsertData(bulk int, dataList []*BaseFromBus
 // @param updateParams interface{}
 // @return err error
 func (m *BaseFromBusinessData) UpdateData(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, updateCols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(m, updateCols...)
+	err = global.DEFAULT_DB.Model(&m).Select(updateCols).Updates(&m).Error
 	if err != nil {
 		fmt.Println("UpdateDataByColl:Err:" + err.Error())
 		return
@@ -220,8 +223,9 @@ func (m *BaseFromBusinessData) UpdateData(updateCols []string) (err error) {
 // @param updateDataList []*BaseFromBusinessData
 // @return err error
 func (m *BaseFromBusinessData) HandleData(addDataList, updateDataList []*BaseFromBusinessData) (err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
+	//o := orm.NewOrm()
+	//to, err := o.Begin()
+	to := global.DEFAULT_DB.Begin()
 	if err != nil {
 		return
 	}
@@ -236,7 +240,8 @@ func (m *BaseFromBusinessData) HandleData(addDataList, updateDataList []*BaseFro
 
 	// 插入数据
 	if len(addDataList) > 0 {
-		_, err = to.InsertMulti(500, addDataList)
+		//_, err = to.InsertMulti(500, addDataList)
+		err = to.CreateInBatches(&addDataList, utils.MultiAddNum).Error
 		if err != nil {
 			return
 		}
@@ -246,7 +251,8 @@ func (m *BaseFromBusinessData) HandleData(addDataList, updateDataList []*BaseFro
 
 	if len(updateDataList) > 0 {
 		for _, v := range updateDataList {
-			_, err = to.Update(v, "Value", "ModifyTime")
+			//_, err = to.Update(v, "Value", "ModifyTime")
+			err = to.Model(&v).Select([]string{"Value", "ModifyTime"}).Updates(&v).Error
 			if err != nil {
 				fmt.Println("BaseFromBusinessData HandleData Update:Err:" + err.Error())
 				return
@@ -266,18 +272,22 @@ func (m *BaseFromBusinessData) HandleData(addDataList, updateDataList []*BaseFro
 // @return result EdbInfoMaxAndMinInfo
 // @return err error
 func (m *BaseFromBusinessData) GetEdbInfoMaxAndMinInfo(indexCode string) (result EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ``
 	sql = ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_business_data WHERE index_code = ? `
-	err = o.Raw(sql, indexCode).QueryRow(&result)
+	//err = o.Raw(sql, indexCode).QueryRow(&result)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&result).Error
 	if err != nil {
 		return
 	}
 
-	var latestValue float64
 	sql = ` SELECT value AS latest_value FROM base_from_business_data WHERE index_code = ? ORDER BY data_time DESC LIMIT 1 `
-	err = o.Raw(sql, indexCode).QueryRow(&latestValue)
-	result.LatestValue = latestValue
+	//err = o.Raw(sql, indexCode).QueryRow(&latestValue)
+	var latestValueNull sql2.NullFloat64
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Scan(&latestValueNull).Error
+	if err == nil && latestValueNull.Valid {
+		result.LatestValue = latestValueNull.Float64
+	}
 
 	return
 }
@@ -295,12 +305,12 @@ func (m *BaseFromBusinessData) DelDataByCond(condition []string, pars []interfac
 		err = errors.New("条件不能为空")
 		return
 	}
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `DELETE FROM base_from_business_data `
 
 	sql += ` WHERE ` + strings.Join(condition, " AND ")
 
-	_, err = o.Raw(sql, pars).Exec()
-
+	//_, err = o.Raw(sql, pars).Exec()
+	err = global.DEFAULT_DB.Exec(sql, pars...).Error
 	return
 }

+ 54 - 31
models/base_from_calculate.go

@@ -3,14 +3,17 @@ package models
 import (
 	"encoding/json"
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
-	"github.com/dengsgo/math-engine/engine"
-	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
+
+	"github.com/dengsgo/math-engine/engine"
+
+	"github.com/shopspring/decimal"
 )
 
 // EdbInfoCalculateSaveReq 计算(运算)指标请求参数
@@ -46,8 +49,9 @@ type CalculateItems struct {
 // AddCalculateInfo 新增计算(运算)指标
 func AddCalculateInfo(req EdbInfoCalculateSaveReq, calculateMappingList []*EdbInfoCalculateMapping, edbInfoList []*EdbInfo, edbCode, uniqueCode string, edbInfoIdBytes []string) (edbInfo *EdbInfo, err error) {
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
+	//o := orm.NewOrm()
+	//to, err := o.Begin()
+	to := global.DEFAULT_DB.Begin()
 	if err != nil {
 		return
 	}
@@ -96,11 +100,12 @@ func AddCalculateInfo(req EdbInfoCalculateSaveReq, calculateMappingList []*EdbIn
 		MaxEmptyType:     req.MaxEmptyType,
 		Extra:            req.Extra,
 	}
-	lastId, err := to.Insert(edbInfo)
+	//lastId, err := to.Insert(edbInfo)
+	err = to.Create(&edbInfo).Error
 	if err != nil {
 		return
 	}
-	edbInfo.EdbInfoId = int(lastId)
+	//edbInfo.EdbInfoId = int(lastId)
 	edbInfoTag := make(map[string]int)
 	//关联关系表
 	{
@@ -111,7 +116,8 @@ func AddCalculateInfo(req EdbInfoCalculateSaveReq, calculateMappingList []*EdbIn
 			v.EdbInfoId = edbInfo.EdbInfoId
 		}
 		if len(calculateMappingList) > 0 {
-			_, err = to.InsertMulti(len(calculateMappingList), calculateMappingList)
+			//_, err = to.InsertMulti(len(calculateMappingList), calculateMappingList)
+			err = to.CreateInBatches(&calculateMappingList, len(calculateMappingList)).Error
 			if err != nil {
 				return
 			}
@@ -125,8 +131,9 @@ func AddCalculateInfo(req EdbInfoCalculateSaveReq, calculateMappingList []*EdbIn
 
 // EditCalculateInfo 编辑计算(运算)指标
 func EditCalculateInfo(edbInfo *EdbInfo, req EdbInfoCalculateSaveReq, formulaSlice []string, edbInfoIdBytes []string, needCalculate bool) (err error, errMsg string) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
+	//o := orm.NewOrm()
+	//to, err := o.Begin()
+	to := global.DEFAULT_DB.Begin()
 	if err != nil {
 		return
 	}
@@ -152,7 +159,8 @@ func EditCalculateInfo(edbInfo *EdbInfo, req EdbInfoCalculateSaveReq, formulaSli
 	edbInfo.EmptyType = req.EmptyType
 	edbInfo.MaxEmptyType = req.MaxEmptyType
 	edbInfo.Extra = req.Extra
-	_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "EdbNameEn", "UnitEn", "ClassifyId", "CalculateFormula", "ModifyTime", "EmptyType", "MaxEmptyType", "Extra")
+	//_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "EdbNameEn", "UnitEn", "ClassifyId", "CalculateFormula", "ModifyTime", "EmptyType", "MaxEmptyType", "Extra")
+	err = to.Model(&edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "EdbNameEn", "UnitEn", "ClassifyId", "CalculateFormula", "ModifyTime", "EmptyType", "MaxEmptyType", "Extra"}).Updates(&edbInfo).Error
 	if err != nil {
 		return
 	}
@@ -160,13 +168,15 @@ func EditCalculateInfo(edbInfo *EdbInfo, req EdbInfoCalculateSaveReq, formulaSli
 	if needCalculate {
 		// 清除计算数据
 		sql := `DELETE FROM edb_data_calculate WHERE edb_info_id=?`
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		//_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			return
 		}
 		// 清除关联关系表
 		sql = `DELETE FROM edb_info_calculate_mapping WHERE edb_info_id=?`
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		//_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			return
 		}
@@ -223,7 +233,8 @@ func EditCalculateInfo(edbInfo *EdbInfo, req EdbInfoCalculateSaveReq, formulaSli
 		//关联关系表
 		{
 			if len(calculateMappingList) > 0 {
-				_, err = to.InsertMulti(len(calculateMappingList), calculateMappingList)
+				//_, err = to.InsertMulti(len(calculateMappingList), calculateMappingList)
+				err = to.CreateInBatches(&calculateMappingList, len(calculateMappingList)).Error
 				if err != nil {
 					return
 				}
@@ -238,20 +249,22 @@ func EditCalculateInfo(edbInfo *EdbInfo, req EdbInfoCalculateSaveReq, formulaSli
 
 // GetCalculateEdbInfo 获取计算指标的关联指标id
 func GetCalculateEdbInfo(edbInfoId int) (from_edb_info_id string, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT GROUP_CONCAT(from_edb_info_id ORDER BY sort ASC SEPARATOR ',') AS from_edb_info_id 
 			FROM edb_info_calculate_mapping
 			WHERE edb_info_id=?
 			GROUP BY edb_info_id
 			 `
-	err = o.Raw(sql, edbInfoId).QueryRow(&from_edb_info_id)
+	//err = o.Raw(sql, edbInfoId).QueryRow(&from_edb_info_id)
+	err = global.DEFAULT_DB.Raw(sql, edbInfoId).Scan(&from_edb_info_id).Error
 	return
 }
 
 // DeleteCalculateEdbInfo 删除指标信息
 func DeleteCalculateEdbInfo(edbInfoId int) (err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
+	//o := orm.NewOrm()
+	//to, err := o.Begin()
+	to := global.DEFAULT_DB.Begin()
 	if err != nil {
 		return
 	}
@@ -263,19 +276,22 @@ func DeleteCalculateEdbInfo(edbInfoId int) (err error) {
 		}
 	}()
 	sql := `DELETE FROM edb_data_calculate WHERE edb_info_id=?`
-	_, err = to.Raw(sql, edbInfoId).Exec()
+	//_, err = to.Raw(sql, edbInfoId).Exec()
+	err = to.Exec(sql, edbInfoId).Error
 	if err != nil {
 		return
 	}
 	sql = `DELETE FROM edb_info_calculate_mapping WHERE edb_info_id=?`
-	_, err = to.Raw(sql, edbInfoId).Exec()
+	//_, err = to.Raw(sql, edbInfoId).Exec()
+	err = to.Exec(sql, edbInfoId).Error
 	return
 }
 
 // RefreshAllCalculate 刷新全部数据
 func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoTag map[string]int, edbInfoId, source, subSource int, edbCode, formulaStr, startDate, endDate string, edbInfoIdBytes []string, emptyType, maxEmptyType int, extra string) (err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
+	//o := orm.NewOrm()
+	//to, err := o.Begin()
+	to := global.DEFAULT_DB.Begin()
 	if err != nil {
 		return
 	}
@@ -295,7 +311,9 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoTag map[string]int, edb
 }
 
 // refreshAllCalculate 刷新全部数据
-func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoTag map[string]int, edbInfoId, source, subSource int, edbCode, formulaStr, startDate, endDate string, edbInfoIdBytes []string, emptyType, maxEmptyType int, extra string) (err error) {
+func refreshAllCalculate(to *gorm.DB, edbInfoIdArr []*EdbInfo, edbInfoTag map[string]int, edbInfoId, source, subSource int, edbCode, formulaStr, startDate, endDate string, edbInfoIdBytes []string, emptyType, maxEmptyType int, extra string) (err error) {
+	//func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoTag map[string]int, edbInfoId, source, subSource int, edbCode, formulaStr, startDate, endDate string, edbInfoIdBytes []string, emptyType, maxEmptyType int, extra string) (err error) {
+
 	realSaveDataMap := make(map[string]map[int]float64)
 	saveDataMap := make(map[string]map[int]float64)
 
@@ -390,6 +408,7 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoTag map
 		return
 	}
 	addSql := ` INSERT INTO edb_data_calculate(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 
 	//获取指标所有数据
@@ -397,7 +416,8 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoTag map
 	dataTableName := GetEdbDataTableName(source, subSource)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&dataList)
+	//_, err = to.Raw(sql, edbInfoId).QueryRows(&dataList)
+	err = to.Raw(sql, edbInfoId).Find(&dataList).Error
 	if err != nil {
 		return err
 	}
@@ -512,7 +532,8 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoTag map
 			if existStr != saveValue {
 				sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 				sql = fmt.Sprintf(sql, dataTableName)
-				_, err = to.Raw(sql, saveValue, edbInfoId, sk).Exec()
+				//_, err = to.Raw(sql, saveValue, edbInfoId, sk).Exec()
+				err = to.Exec(sql, saveValue, edbInfoId, sk).Error
 				if err != nil {
 					return err
 				}
@@ -522,7 +543,8 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoTag map
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		//_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshAllCalculate add Err", err.Error())
 			return
@@ -534,13 +556,14 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoTag map
 		for k := range removeDateMap {
 			removeDateList = append(removeDateList, k)
 		}
-		removeDateStr := strings.Join(removeDateList, `","`)
-		removeDateStr = `"` + removeDateStr + `"`
+		removeDateStr := strings.Join(removeDateList, `','`)
+		removeDateStr = `'` + removeDateStr + `'`
 		//如果拼接指标变更了,那么需要删除所有的指标数据
 		tableName := GetEdbDataTableName(source, subSource)
 		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
 
-		_, err = to.Raw(sql, edbInfoId).Exec()
+		//_, err = to.Raw(sql, edbInfoId).Exec()
+		err = to.Exec(sql, edbInfoId).Error
 		if err != nil {
 			err = fmt.Errorf("删除计算失败的计算指标数据失败,Err:" + err.Error())
 			return
@@ -727,9 +750,9 @@ type EdbInfoCalculateBatchEditReq struct {
 
 // DeleteCalculateData 删除计算数据
 func DeleteCalculateData(edbInfoId int) (err error) {
-	o := orm.NewOrm()
 	sql := `DELETE FROM edb_data_calculate WHERE edb_info_id=?`
-	_, err = o.Raw(sql, edbInfoId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, edbInfoId).Error
+
 	return
 }
 

+ 124 - 62
models/base_from_ccf.go

@@ -1,9 +1,11 @@
 package models
 
 import (
+	sql2 "database/sql"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -13,7 +15,8 @@ import (
 type BaseFromCCF struct{}
 
 type BaseFromCCFData struct {
-	BaseFromCcfDataId  int `orm:"column(base_from_ccf_data_id);pk"`
+	//BaseFromCcfDataId  int `orm:"column(base_from_ccf_data_id);pk"`
+	BaseFromCcfDataId  int `gorm:"column:base_from_ccf_data_id;primaryKey"`
 	BaseFromCcfIndexId int
 	IndexCode          string
 	DataTime           string
@@ -27,19 +30,26 @@ func (m *BaseFromCCFData) TableName() string {
 	return "base_from_ccf_data"
 }
 
+func (e *BaseFromCCFData) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
 func GetBaseFromCCFDataByCondition(condition string, pars []interface{}) (list []*BaseFromCCFData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_ccf_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	//_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&list).Error
 	return
 }
 
 // Add 添加
 func (obj BaseFromCCF) Add(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var condition string
 	var pars []interface{}
@@ -48,11 +58,12 @@ func (obj BaseFromCCF) Add(edbCode string) (err error) {
 		pars = append(pars, edbCode)
 	}
 	ccfBaseDataAll, err := GetBaseFromCCFDataByCondition(condition, pars)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_ccf(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	existMap := make(map[string]string)
 	for _, sv := range ccfBaseDataAll {
 		eDate := sv.DataTime
@@ -71,7 +82,8 @@ func (obj BaseFromCCF) Add(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -82,7 +94,7 @@ func (obj BaseFromCCF) Add(edbCode string) (err error) {
 // Refresh 刷新CCF化纤指标数据
 func (obj BaseFromCCF) Refresh(edbInfoId int, edbCode, startDate string) (err error) {
 	source := obj.GetSource()
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -112,7 +124,7 @@ func (obj BaseFromCCF) Refresh(edbInfoId int, edbCode, startDate string) (err er
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -139,6 +151,7 @@ func (obj BaseFromCCF) Refresh(edbInfoId int, edbCode, startDate string) (err er
 		existMap[v.DataTime] = v
 	}
 	addSql := ` INSERT INTO edb_data_ccf(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	for _, v := range ccfDataList {
 		item := v
@@ -180,7 +193,8 @@ func (obj BaseFromCCF) Refresh(edbInfoId int, edbCode, startDate string) (err er
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromBaiinfo add Err", err.Error())
 			return
@@ -200,18 +214,26 @@ func (obj BaseFromCCF) GetSourceName() string {
 }
 
 type BaseFromCCFIndex struct {
-	BaseFromCcfIndexId int64 `orm:"column(base_from_ccf_index_id);pk"`
-	IndexCode          string
-	IndexName          string
-	Frequency          string
-	Unit               string
-	ClassifyId         int
-	StartDate          string
-	EndDate            string
-	Sort               int
-	TerminalCode       string
-	CreateTime         time.Time
-	ModifyTime         time.Time
+	BaseFromCcfIndexId int64 `gorm:"column:base_from_ccf_index_id;primaryKey"`
+	//BaseFromCcfIndexId int64 `orm:"column(base_from_ccf_index_id);pk"`
+	IndexCode    string
+	IndexName    string
+	Frequency    string
+	Unit         string
+	ClassifyId   int
+	StartDate    string
+	EndDate      string
+	Sort         int
+	TerminalCode string
+	CreateTime   time.Time
+	ModifyTime   time.Time
+}
+
+func (e *BaseFromCCFIndex) AfterFind(db *gorm.DB) (err error) {
+	e.StartDate = utils.GormDateStrToDateStr(e.StartDate)
+	e.EndDate = utils.GormDateStrToDateStr(e.EndDate)
+
+	return
 }
 
 func (m *BaseFromCCFIndex) TableName() string {
@@ -219,34 +241,41 @@ func (m *BaseFromCCFIndex) TableName() string {
 }
 
 func (m *BaseFromCCFIndex) Add() (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(m)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(m)
+	err = global.DEFAULT_DB.Create(&m).Error
+	if err != nil {
+		return
+	}
+	lastId = m.BaseFromCcfIndexId
 	return
 }
 
 func (m *BaseFromCCFIndex) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, updateCols...)
-
+	//o := orm.NewOrm()
+	//_, err = o.Update(m, updateCols...)
+	err = global.DEFAULT_DB.Model(&m).Select(updateCols).Updates(&m).Error
 	return
 }
 
 func (m *BaseFromCCFIndex) ModifyIndexMaxAndMinDate(indexCode string, item *EdbInfoMaxAndMinInfo) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_ccf_index SET start_date=?,end_date=?,latest_value=?,modify_time=NOW() WHERE index_code=? `
-	_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	//_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Error
 	return
 }
 
 func (m *BaseFromCCFIndex) GetByIndexCode(indexCode string) (item *BaseFromCCFIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_ccf_index WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
 	return
 }
 
 func (m *BaseFromCCFIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromCCFIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -256,12 +285,14 @@ func (m *BaseFromCCFIndex) GetItemsByCondition(condition string, pars []interfac
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_ccf_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	//_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 type BaseFromCCFIndexList struct {
-	CcfIndexId   int64 `orm:"column(ccf_index_id);pk"`
+	CcfIndexId int64 `gorm:"column:ccf_index_id;primaryKey"`
+	//CcfIndexId   int64 `orm:"column(ccf_index_id);pk"`
 	IndexCode    string
 	IndexName    string
 	Frequency    string
@@ -275,15 +306,17 @@ type BaseFromCCFIndexList struct {
 }
 
 func (m *BaseFromCCFData) GetByIndexCode(indexCode string) (list []*BaseFromCCFData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_ccf_data WHERE index_code=? `
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&list).Error
 	return
 }
 
 func (m *BaseFromCCFData) AddMulti(item []*BaseFromCCFData) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(100, item)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(100, item)
+	err = global.DEFAULT_DB.CreateInBatches(&item, 100).Error
 	return
 }
 
@@ -317,20 +350,25 @@ type HandleCCFStockTableReq struct {
 }
 
 func (m *BaseFromCCFData) GetMaxAndMinDateByIndexCode(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_ccf_data WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
-
-	var latest_value float64
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	sql = ` SELECT value AS latest_value FROM base_from_ccf_data WHERE index_code=? ORDER BY data_time DESC LIMIT 1 `
-	err = o.Raw(sql, indexCode).QueryRow(&latest_value)
-	item.LatestValue = latest_value
+	//err = o.Raw(sql, indexCode).QueryRow(&latest_value)
+	var latestValueNull sql2.NullFloat64
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Scan(&latestValueNull).Error
+	if err == nil && latestValueNull.Valid {
+		item.LatestValue = latestValueNull.Float64
+	}
+
 	return
 }
 
 // BaseFromCCFClassify CCF化纤数据分类表
 type BaseFromCCFClassify struct {
-	ClassifyId      int       `orm:"column(classify_id);pk"`
+	ClassifyId int `gorm:"column:classify_id;primaryKey"`
+	//ClassifyId      int       `orm:"column(classify_id);pk"`
 	ClassifyName    string    `description:"分类名称"`
 	ParentId        int       `description:"父级id"`
 	SysUserId       int       `description:"创建人id"`
@@ -342,27 +380,33 @@ type BaseFromCCFClassify struct {
 }
 
 func (m *BaseFromCCFClassify) Add() (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(m)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(m)
+	err = global.DEFAULT_DB.Create(&m).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(m.ClassifyId)
 	return
 }
 
 func (m *BaseFromCCFClassify) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, updateCols...)
-
+	//o := orm.NewOrm()
+	//_, err = o.Update(m, updateCols...)
+	err = global.DEFAULT_DB.Model(&m).Select(updateCols).Updates(&m).Error
 	return
 }
 
 func (m *BaseFromCCFClassify) GetByClassifyName(classifyName string) (item *BaseFromCCFClassify, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_ccf_classify WHERE classify_name=? `
-	err = o.Raw(sql, classifyName).QueryRow(&item)
+	//err = o.Raw(sql, classifyName).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, classifyName).First(&item).Error
 	return
 }
 
 func (m *BaseFromCCFClassify) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromCCFClassify, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -372,7 +416,8 @@ func (m *BaseFromCCFClassify) GetItemsByCondition(condition string, pars []inter
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_ccf_classify WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	//_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
@@ -409,23 +454,40 @@ func MultiUpdateBaseFromCCFDataValue(items []*BaseFromCCFData) (err error) {
 		return
 	}
 
-	o := orm.NewOrm()
-	sql := `UPDATE base_from_ccf_data SET value = ?, modify_time = NOW() WHERE index_code = ? AND data_time = ? LIMIT 1`
-	p, err := o.Raw(sql).Prepare()
-	if err != nil {
-		return
-	}
+	//o := orm.NewOrm()
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
-		_ = p.Close()
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
 	}()
+	sql := `UPDATE base_from_ccf_data SET value = ?, modify_time = NOW() WHERE index_code = ? AND data_time = ? LIMIT 1`
 	for _, v := range items {
 		if v.IndexCode == "" || v.DataTime == "" {
 			continue
 		}
-		_, err = p.Exec(v.Value, v.IndexCode, v.DataTime)
+		err = to.Exec(sql, v.Value, v.IndexCode, v.DataTime).Error
 		if err != nil {
 			return
 		}
 	}
+	//p, err := o.Raw(sql).Prepare()
+	//if err != nil {
+	//	return
+	//}
+	//defer func() {
+	//	_ = p.Close()
+	//}()
+	//for _, v := range items {
+	//	if v.IndexCode == "" || v.DataTime == "" {
+	//		continue
+	//	}
+	//	_, err = p.Exec(v.Value, v.IndexCode, v.DataTime)
+	//	if err != nil {
+	//		return
+	//	}
+	//}
 	return
 }

+ 39 - 14
models/base_from_cffex.go

@@ -1,16 +1,18 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
 )
 
 type BaseFromTradeCFFEXIndex struct {
-	BaseFromTradeCffexIndexId int `orm:"column(base_from_trade_cffex_index_id);pk"`
+	//BaseFromTradeCffexIndexId int `orm:"column(base_from_trade_cffex_index_id);pk"`
+	BaseFromTradeCffexIndexId int `gorm:"column:base_from_trade_cffex_index_id;primaryKey"`
 	Rank                      int
 	DealShortName             string
 	DealName                  string
@@ -35,16 +37,25 @@ type BaseFromTradeCFFEXIndex struct {
 	DataTime                  string
 }
 
+func (m *BaseFromTradeCFFEXIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
+}
+
 func GetBaseFromCffexDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeCFFEXIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_trade_cffex_index WHERE %s_code=? `
 	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&list).Error
+
 	return
 }
 
 type BaseFromCffexDataSimple struct {
-	Id        int `orm:"column(base_from_trade_cffex_index_id);pk"`
+	Id int `gorm:"column:base_from_trade_cffex_index_id;primaryKey"`
+	//Id        int `orm:"column(base_from_trade_cffex_index_id);pk"`
 	DealCode  string
 	BuyCode   string
 	SoldCode  string
@@ -54,14 +65,22 @@ type BaseFromCffexDataSimple struct {
 	SoldValue string
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromCffexDataSimple) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
+}
+
 func GetCffexDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromCffexDataSimple, err error) {
 	sql := ` SELECT * FROM base_from_trade_cffex_index WHERE 1=1 `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
@@ -76,14 +95,17 @@ func AddEdbDataFromCffex(edbCode string) (err error) {
 		suffix = "sold"
 	}
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	cffexBaseDataAll, err := GetBaseFromCffexDataAllByIndexCode(edbCode, suffix)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	//if err != nil && !utils.IsErrNoRow(err) {
+	//	return
+	//}
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
-
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_cffex(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	existMap := make(map[string]string)
 
 	for _, sv := range cffexBaseDataAll {
@@ -116,7 +138,8 @@ func AddEdbDataFromCffex(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -137,7 +160,7 @@ func RefreshEdbDataFromCffex(edbInfoId int, edbCode, startDate string) (err erro
 		suffix = "sold"
 	}
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -174,7 +197,7 @@ func RefreshEdbDataFromCffex(edbInfoId int, edbCode, startDate string) (err erro
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -203,6 +226,7 @@ func RefreshEdbDataFromCffex(edbInfoId int, edbCode, startDate string) (err erro
 	}
 
 	addSql := ` INSERT INTO edb_data_cffex(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	for _, v := range glDataList {
 		var value string
@@ -258,7 +282,8 @@ func RefreshEdbDataFromCffex(edbInfoId int, edbCode, startDate string) (err erro
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}

+ 55 - 33
models/base_from_clarksons.go

@@ -1,28 +1,30 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
 )
 
 type BaseFromClarksonsIndex struct {
-	BaseFromClarksonsIndexId int       `orm:"pk"`
-	ClassifyId               int       `description:"指标分类id"`
-	IndexCode                string    `description:"指标编码"`
-	IndexName                string    `description:"指标名称"`
-	Unit                     string    `description:"单位"`
-	Frequency                string    `description:"频度"`
-	Sort                     int       `description:"排序"`
-	CreateTime               time.Time
-	ModifyTime               time.Time
+	BaseFromClarksonsIndexId int `gorm:"primaryKey"`
+	//BaseFromClarksonsIndexId int       `orm:"pk"`
+	ClassifyId int    `description:"指标分类id"`
+	IndexCode  string `description:"指标编码"`
+	IndexName  string `description:"指标名称"`
+	Unit       string `description:"单位"`
+	Frequency  string `description:"频度"`
+	Sort       int    `description:"排序"`
+	CreateTime time.Time
+	ModifyTime time.Time
 }
 
 type BaseFromClarksonsData struct {
-	BaseFromClarksonsDataId  int       `orm:"column(base_from_clarksons_data_id);pk"`
+	BaseFromClarksonsDataId  int       `gorm:"column:base_from_clarksons_data_id;primaryKey"`
 	BaseFromClarksonsIndexId int       `description:"指标id"`
 	IndexCode                string    `description:"指标编码"`
 	DataTime                 string    `description:"数据日期"`
@@ -31,50 +33,66 @@ type BaseFromClarksonsData struct {
 	ModifyTime               time.Time `description:"修改时间"`
 }
 
+func (e *BaseFromClarksonsData) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
 // 查询指标
 func GetBaseFromClarksonsIndex() (items []*BaseFromClarksonsIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_clarksons_index`
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }
 
 // 查询指标
 func GetBaseFromClarksonsData() (items []*BaseFromClarksonsData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_clarksons_data`
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }
 
 // 添加数据
 func AddBaseFromClarksonsIndex(item *BaseFromClarksonsIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromClarksonsIndexId)
 	return
 }
 
 func AddBaseFromClarksonsDataMuti(items []*BaseFromClarksonsData) (count int64, err error) {
-	o := orm.NewOrm()
-	count, err = o.InsertMulti(500, items)
+	dbResult := global.DEFAULT_DB.CreateInBatches(&items, utils.MultiAddNum)
+	err = dbResult.Error
+	count = dbResult.RowsAffected
 	return
 }
 
 func UpdateBaseFromClarksonsIndex(item *BaseFromClarksonsIndex) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `UPDATE base_from_clarksons_index SET frequency=?  WHERE index_code=? `
-	_, err = o.Raw(sql, item.Frequency, item.IndexCode).Exec()
+	//_, err = o.Raw(sql, item.Frequency, item.IndexCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.Frequency, item.IndexCode).Error
 	return
 }
 
 func AddEdbDataFromClarksons(edbCode string) (err error) {
-	o := orm.NewOrm()
-
+	//o := orm.NewOrm()
 	coalBaseDataAll, err := GetClarksonsindexByCode(edbCode)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
-
+	//if err != nil && !utils.IsErrNoRow(err) {
+	//	return
+	//}
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_clarksons(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	existMap := make(map[string]string)
@@ -108,7 +126,8 @@ func AddEdbDataFromClarksons(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -119,7 +138,7 @@ func AddEdbDataFromClarksons(edbCode string) (err error) {
 func RefreshEdbDataFromClarksons(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_CLARKSONS
 	subSource := utils.DATA_SUB_SOURCE_EDB
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -150,7 +169,7 @@ func RefreshEdbDataFromClarksons(edbInfoId int, edbCode, startDate string) (err
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -236,7 +255,8 @@ func RefreshEdbDataFromClarksons(edbInfoId int, edbCode, startDate string) (err
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -247,19 +267,21 @@ func RefreshEdbDataFromClarksons(edbInfoId int, edbCode, startDate string) (err
 
 // GetClarksonsindexByCode
 func GetClarksonsindexByCode(indexCode string) (items []*BaseFromClarksonsData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := "SELECT * FROM base_from_clarksons_data WHERE index_code=? "
-	_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&items).Error
 	return
 }
 
 func GetClarksonsDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromClarksonsData, err error) {
 	sql := ` SELECT * FROM base_from_clarksons_data WHERE 1=1 `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }

+ 27 - 11
models/base_from_coal.go

@@ -1,9 +1,10 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -25,23 +26,34 @@ type BaseFromCoalmineIndex struct {
 	ModifyTime                     string `description:"修改时间"`
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromCoalmineIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+
+	return
+}
+
 func GetBaseFromCoalIndexByCode(suffix, indexCode string) (items []*BaseFromCoalmineIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_coalmine_%s WHERE index_code=? `
 	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&items).Error
 	return
 }
 
 func GetCoalDataByTradeCode(suffix, condition string, pars []interface{}) (item []*BaseFromCoalmineIndex, err error) {
 	sql := ` SELECT * FROM base_from_coalmine_%s WHERE 1=1 `
 	sql = fmt.Sprintf(sql, suffix)
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
 	return
 }
 
@@ -59,15 +71,16 @@ func AddEdbDataFromCoal(edbCode string) (err error) {
 		suffix = "inland_index"
 	}
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	coalBaseDataAll, err := GetBaseFromCoalIndexByCode(suffix, edbCode)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_coal(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	existMap := make(map[string]string)
 	for _, sv := range coalBaseDataAll {
 		eDate := sv.DataTime
@@ -129,7 +142,8 @@ func AddEdbDataFromCoal(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -140,7 +154,7 @@ func AddEdbDataFromCoal(edbCode string) (err error) {
 func RefreshEdbDataFromCoal(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_COAL
 	subSource := utils.DATA_SUB_SOURCE_EDB
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -182,7 +196,7 @@ func RefreshEdbDataFromCoal(edbInfoId int, edbCode, startDate string) (err error
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -211,6 +225,7 @@ func RefreshEdbDataFromCoal(edbInfoId int, edbCode, startDate string) (err error
 	}
 
 	addSql := ` INSERT INTO edb_data_coal(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	for _, v := range glDataList {
 		var value string
@@ -297,7 +312,8 @@ func RefreshEdbDataFromCoal(edbInfoId int, edbCode, startDate string) (err error
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}

+ 26 - 10
models/base_from_coal_coastal.go

@@ -1,13 +1,16 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 // BaseFromCoalmineCoastalIndex 沿海八省动力煤用户供耗存数据指标表
 type BaseFromCoalmineCoastalIndex struct {
-	BaseFromCoalmineCoastalIndexID int       `orm:"column(base_from_coalmine_coastal_index_id);pk"`
+	//BaseFromCoalmineCoastalIndexID int       `orm:"column(base_from_coalmine_coastal_index_id);pk"`
+	BaseFromCoalmineCoastalIndexID int       `gorm:"column:base_from_coalmine_coastal_index_id;primaryKey"`
 	IndexName                      string    // 省份/企业名称
 	IndexCode                      string    // 持买单量指标编码
 	DataTime                       string    // 指标时间
@@ -20,24 +23,37 @@ type BaseFromCoalmineCoastalIndex struct {
 	ModifyTime                     time.Time `description:"修改时间"`
 }
 
-//查询指标
+func (e *BaseFromCoalmineCoastalIndex) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
+// 查询指标
 func GetBaseFromCoalmineCoastalIndex() (items []*BaseFromCoalmineCoastalIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_coalmine_coastal_index`
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }
 
-//添加数据
+// 添加数据
 func AddBaseFromCoalCoastalIndex(item *BaseFromCoalmineCoastalIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromCoalmineCoastalIndexID)
 	return
 }
 
 func UpdateBaseFromCoalCoastalIndex(item *BaseFromCoalmineCoastalIndex) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `UPDATE base_from_coalmine_coastal_index SET deal_value=?  WHERE index_name=?  AND  data_time = ?`
-	_, err = o.Raw(sql, item.DealValue, item.IndexName, item.DataTime).Exec()
+	//_, err = o.Raw(sql, item.DealValue, item.IndexName, item.DataTime).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.DealValue, item.IndexName, item.DataTime).Error
 	return
 }

+ 34 - 18
models/base_from_coal_firm.go

@@ -1,43 +1,59 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 // BaseFromCoalmineFirmIndex 煤矿产量周度公司数据表
 type BaseFromCoalmineFirmIndex struct {
-	BaseFromCoalmineFirmIndexID int       `orm:"column(base_from_coalmine_firm_index_id);pk"`
-	IndexName                   string    // 省份/企业名称
-	IndexCode                   string    // 持买单量指标编码
-	DataTime                    string    // 指标时间
-	DealValue                   string    // 数据量
-	GroupName                   string    // 集团名
-	Source                      string    // 来源
-	Unit                        string    // 来源
-	Frequency                   string    `description:"频率"`
-	CreateTime                  time.Time `description:"插入时间"`
-	ModifyTime                  time.Time `description:"修改时间"`
+	BaseFromCoalmineFirmIndexID int `gorm:"column:base_from_coalmine_firm_index_id;primaryKey"`
+	//BaseFromCoalmineFirmIndexID int       `orm:"column(base_from_coalmine_firm_index_id);pk"`
+	IndexName  string    // 省份/企业名称
+	IndexCode  string    // 持买单量指标编码
+	DataTime   string    // 指标时间
+	DealValue  string    // 数据量
+	GroupName  string    // 集团名
+	Source     string    // 来源
+	Unit       string    // 来源
+	Frequency  string    `description:"频率"`
+	CreateTime time.Time `description:"插入时间"`
+	ModifyTime time.Time `description:"修改时间"`
+}
+
+func (e *BaseFromCoalmineFirmIndex) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
 }
 
 // 查询指标
 func GetBaseFromCoalmineFirmIndex() (items []*BaseFromCoalmineFirmIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_coalmine_firm_index`
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }
 
 // 添加数据
 func AddBaseFromCoalFirmIndex(item *BaseFromCoalmineFirmIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromCoalmineFirmIndexID)
 	return
 }
 
 func UpdateBaseFromCoalFirmIndex(item *BaseFromCoalmineFirmIndex) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `UPDATE base_from_coalmine_firm_index SET deal_value=?  WHERE index_name=?  AND  data_time = ?`
-	_, err = o.Raw(sql, item.DealValue, item.IndexName, item.DataTime).Exec()
+	//_, err = o.Raw(sql, item.DealValue, item.IndexName, item.DataTime).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.DealValue, item.IndexName, item.DataTime).Error
 	return
 }

+ 36 - 20
models/base_from_coal_inland.go

@@ -1,43 +1,59 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 // BaseFromCoalmineInlandIndex 沿海八省动力煤用户供耗存数据指标表
 type BaseFromCoalmineInlandIndex struct {
-	BaseFromCoalmineInlandIndexID int       `orm:"column(base_from_coalmine_inland_index_id);pk"`
-	IndexName                     string    // 省份/企业名称
-	IndexCode                     string    // 持买单量指标编码
-	DataTime                      string    // 指标时间
-	DealValue                     string    // 数据量
-	GroupName                     string    // 地区
-	Source                        string    // 来源
-	Unit                          string    // 来源
-	Frequency                     string    `description:"频率"`
-	CreateTime                    time.Time `description:"插入时间"`
-	ModifyTime                    time.Time `description:"修改时间"`
+	BaseFromCoalmineInlandIndexID int `gorm:"column:base_from_coalmine_inland_index_id;primaryKey"`
+	//BaseFromCoalmineInlandIndexID int       `orm:"column(base_from_coalmine_inland_index_id);pk"`
+	IndexName  string    // 省份/企业名称
+	IndexCode  string    // 持买单量指标编码
+	DataTime   string    // 指标时间
+	DealValue  string    // 数据量
+	GroupName  string    // 地区
+	Source     string    // 来源
+	Unit       string    // 来源
+	Frequency  string    `description:"频率"`
+	CreateTime time.Time `description:"插入时间"`
+	ModifyTime time.Time `description:"修改时间"`
 }
 
-//查询指标
+func (e *BaseFromCoalmineInlandIndex) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
+// 查询指标
 func GetBaseFromCoalmineInlandIndex() (items []*BaseFromCoalmineInlandIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_coalmine_inland_index`
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }
 
-//添加数据
+// 添加数据
 func AddBaseFromCoalInlandIndex(item *BaseFromCoalmineInlandIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromCoalmineInlandIndexID)
 	return
 }
 
 func UpdateBaseFromCoalInlandIndex(item *BaseFromCoalmineInlandIndex) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `UPDATE base_from_coalmine_inland_index SET deal_value=?  WHERE index_name=?  AND  data_time = ?`
-	_, err = o.Raw(sql, item.DealValue, item.IndexName, item.DataTime).Exec()
+	//_, err = o.Raw(sql, item.DealValue, item.IndexName, item.DataTime).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.DealValue, item.IndexName, item.DataTime).Error
 	return
 }

+ 92 - 56
models/base_from_coalmine.go

@@ -1,132 +1,168 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	sql2 "database/sql"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 type BaseFromCoalmineMapping struct {
-	BaseFromCoalmineMappingId int       `orm:"column(base_from_coalmine_mapping_id);pk"`
-	IndexName                 string    `description:"持买单量指标名称"`
-	IndexCode                 string    `description:"持买单量指标编码"`
-	CreateTime                time.Time `description:"时间"`
+	BaseFromCoalmineMappingId int `gorm:"column:base_from_coalmine_mapping_id;primaryKey"`
+	//BaseFromCoalmineMappingId int       `orm:"column(base_from_coalmine_mapping_id);pk"`
+	IndexName  string    `description:"持买单量指标名称"`
+	IndexCode  string    `description:"持买单量指标编码"`
+	CreateTime time.Time `description:"时间"`
 }
 
 type BaseFromCoalmineJsmIndex struct {
-	BaseFromCoalmineJsmIndexId int       `orm:"column(base_from_coalmine_jsm_index_id);pk"`
-	IndexName                  string    `description:"持买单量指标名称"`
-	IndexCode                  string    `description:"持买单量指标编码"`
-	Exchange                   string    `description:"样本统计类别"`
-	DealValue                  string    `description:"成交量"`
-	DataTime                   string    `description:"数据日期"`
-	Source                     string    `description:"来源"`
-	Province                   string    `description:"省份"`
-	Description                string    `description:"描述"`
-	Unit                       string    `description:"单位"`
-	Frequency                  string    `description:"频率"`
-	CreateTime                 time.Time `description:"插入时间"`
-	ModifyTime                 time.Time `description:"修改时间"`
+	BaseFromCoalmineJsmIndexId int `gorm:"column:base_from_coalmine_jsm_index_id;primaryKey"`
+	//BaseFromCoalmineJsmIndexId int       `orm:"column(base_from_coalmine_jsm_index_id);pk"`
+	IndexName   string    `description:"持买单量指标名称"`
+	IndexCode   string    `description:"持买单量指标编码"`
+	Exchange    string    `description:"样本统计类别"`
+	DealValue   string    `description:"成交量"`
+	DataTime    string    `description:"数据日期"`
+	Source      string    `description:"来源"`
+	Province    string    `description:"省份"`
+	Description string    `description:"描述"`
+	Unit        string    `description:"单位"`
+	Frequency   string    `description:"频率"`
+	CreateTime  time.Time `description:"插入时间"`
+	ModifyTime  time.Time `description:"修改时间"`
+}
+
+func (e *BaseFromCoalmineJsmIndex) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
 }
 
 type BaseFromCoalmineCompanyIndex struct {
-	BaseFromCoalmineCompanyIndexId int       `orm:"column(base_from_coalmine_company_index_id);pk"`
-	IndexName                      string    `description:"持买单量指标名称"`
-	IndexCode                      string    `description:"持买单量指标编码"`
-	DealValue                      string    `description:"成交量"`
-	DataTime                       string    `description:"数据日期"`
-	Source                         string    `description:"来源"`
-	Province                       string    `description:"省份"`
-	City                           string    `description:"城市"`
-	GroupName                      string    `description:"集团名称"`
-	Unit                           string    `description:"单位"`
-	Frequency                      string    `description:"频率"`
-	CreateTime                     time.Time `description:"插入时间"`
-	ModifyTime                     time.Time `description:"修改时间"`
+	BaseFromCoalmineCompanyIndexId int `gorm:"column:base_from_coalmine_company_index_id;primaryKey"`
+	//BaseFromCoalmineCompanyIndexId int       `orm:"column(base_from_coalmine_company_index_id);pk"`
+	IndexName  string    `description:"持买单量指标名称"`
+	IndexCode  string    `description:"持买单量指标编码"`
+	DealValue  string    `description:"成交量"`
+	DataTime   string    `description:"数据日期"`
+	Source     string    `description:"来源"`
+	Province   string    `description:"省份"`
+	City       string    `description:"城市"`
+	GroupName  string    `description:"集团名称"`
+	Unit       string    `description:"单位"`
+	Frequency  string    `description:"频率"`
+	CreateTime time.Time `description:"插入时间"`
+	ModifyTime time.Time `description:"修改时间"`
+}
+
+func (e *BaseFromCoalmineCompanyIndex) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
 }
 
 // 添加指标
 func AddBaseFromCoalmineMapping(item *BaseFromCoalmineMapping) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
 	return
 }
 
 // 查询指标
 func GetBaseFromCoalmineMapping() (items []*BaseFromCoalmineMapping, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_coalmine_mapping`
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }
 
 // 查询数据
 func GetBaseFromCoalmineIndex() (items []*BaseFromCoalmineJsmIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_coalmine_jsm_index`
-	_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
+	//_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
 
 func UpdateBaseFromCoalmineIndex(item *BaseFromCoalmineJsmIndex) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `UPDATE base_from_coalmine_jsm_index SET deal_value=?  WHERE index_name=?  AND  data_time = ?`
-	_, err = o.Raw(sql, item.DealValue, item.IndexName, item.DataTime).Exec()
+	//_, err = o.Raw(sql, item.DealValue, item.IndexName, item.DataTime).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.DealValue, item.IndexName, item.DataTime).Error
 	return
 }
 
 // 添加数据
 func AddBaseFromCoalmineIndex(item *BaseFromCoalmineJsmIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromCoalmineJsmIndexId)
 	return
 }
 
 // 添加公司指标
 func AddBaseFromCoalmineCompanyIndex(item *BaseFromCoalmineCompanyIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromCoalmineCompanyIndexId)
 	return
 }
 
 // 查询公司指标
 func GetBaseFromCoalmineCompanyIndex() (items []*BaseFromCoalmineCompanyIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_coalmine_company_index`
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }
 
 func UpdateBaseFromCoalmineCompanyIndex(item *BaseFromCoalmineCompanyIndex) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `UPDATE base_from_coalmine_company_index SET deal_value=?  WHERE index_name=?  AND  data_time = ?`
-	_, err = o.Raw(sql, item.DealValue, item.IndexName, item.DataTime).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.DealValue, item.IndexName, item.DataTime).Error
+	//_, err = o.Raw(sql, item.DealValue, item.IndexName, item.DataTime).Exec()
 	return
 }
 
 func (m *BaseFromCoalmineMapping) GetMaxAndMinDateByIndexCode(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_sci99_data WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
 	if err != nil {
 		return
 	}
 
 	// 获取最新值
-	var latest_value float64
 	sql = ` SELECT value AS latest_value FROM base_from_sci99_data WHERE index_code=? ORDER BY data_time DESC LIMIT 1 `
-	err = o.Raw(sql, indexCode).QueryRow(&latest_value)
-	if err != nil {
-		return
+	//err = o.Raw(sql, indexCode).QueryRow(&latest_value)
+	var latestValueNull sql2.NullFloat64
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Scan(&latestValueNull).Error
+	if err == nil && latestValueNull.Valid {
+		item.LatestValue = latestValueNull.Float64
 	}
-	item.LatestValue = latest_value
 
 	return
 }
 
 func (m *BaseFromCoalmineMapping) ModifyIndexMaxAndMinDate(indexCode string, item *EdbInfoMaxAndMinInfo) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_sci99_index SET start_date=?,end_date=?,latest_value=?,modify_time=NOW() WHERE index_code=? `
-	_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Error
+	//_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
 	return
 }
 

+ 34 - 18
models/base_from_com_trade.go

@@ -1,20 +1,21 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
-
-	"github.com/beego/beego/v2/client/orm"
 )
 
 // UN 联合国商品贸易数据指标
 
 // ComTradeCodeMapping 联合国商品贸易数据指标编码与分类编码的关系表
 type ComTradeCodeMapping struct {
-	Code       int       `orm:"column(code);pk"`
+	//Code       int       `orm:"column(code);pk"`
+	Code       int       `gorm:"column:code;primaryKey"`
 	IndexCode  string    `description:"联合国商品贸易编码"`
 	Type       int       `description:"1:价格;2:重量"`
 	Name       string    `description:"指标名称"`
@@ -23,19 +24,27 @@ type ComTradeCodeMapping struct {
 
 // GetComTradeIndex 根据指标code获取指标信息
 func GetComTradeIndex(indexCode string) (item *ComTradeCodeMapping, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM com_trade_code_mapping WHERE code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	return
 }
 
 type ComTradeData struct {
-	Value    float64 `orm:"column(value)" description:"值"`
-	DataTime string  `orm:"column(data_time)" description:"日期"`
+	Value    float64 `gorm:"column:value" description:"值"`
+	DataTime string  `gorm:"column:data_time" description:"日期"`
+}
+
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *ComTradeData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
 }
 
 func GetComTradeDataByTradeCode(tradeCode, startDate string) (items []*ComTradeData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	pars := []interface{}{tradeCode}
 	sql1 := ` SELECT * FROM com_trade_data WHERE 1=1 AND index_trade_code = ? `
 	if startDate != `` {
@@ -43,12 +52,13 @@ func GetComTradeDataByTradeCode(tradeCode, startDate string) (items []*ComTradeD
 		pars = append(pars, startDate)
 	}
 	sql := `select trade_value AS value,data_time from (` + sql1 + ` having 1 order by modify_time DESC ) tmp GROUP BY data_time ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+	//_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
 
 func GetComTradeDataByWeightCode(weightCode, startDate string) (items []*ComTradeData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	pars := []interface{}{weightCode}
 	sql1 := ` SELECT * FROM com_trade_data WHERE 1=1  AND index_net_weight_code = ? `
 	if startDate != `` {
@@ -56,24 +66,26 @@ func GetComTradeDataByWeightCode(weightCode, startDate string) (items []*ComTrad
 		pars = append(pars, startDate)
 	}
 	sql := `select net_weight_value AS value,data_time from (` + sql1 + ` having 1 order by modify_time DESC ) tmp GROUP BY data_time ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+	//_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
 
 func GetComTradeDataByCondition(condition string, pars []interface{}) (item []*ComTradeData, err error) {
 	sql1 := ` SELECT * FROM com_trade_data WHERE 1=1  `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql1 += condition
 	}
 	sql := `select trade_value AS value,data_time from (` + sql1 + ` having 1 order by modify_time DESC ) tmp GROUP BY data_time ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
 	return
 }
 
 // AddEdbDataFromComTrade 新增钢联指标数据
 func AddEdbDataFromComTrade(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	// 获取指标关系
 	codeMapping, err := GetComTradeIndex(edbCode)
@@ -94,6 +106,7 @@ func AddEdbDataFromComTrade(edbCode string) (err error) {
 	if dataLen > 0 {
 		var isAdd bool
 		addSql := ` INSERT INTO edb_data_com_trade (edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+		addSql = utils.ReplaceDriverKeywords("", addSql)
 		for i := 0; i < dataLen; i++ {
 			item := ComTradeDataList[i]
 			eDate := item.DataTime
@@ -115,7 +128,8 @@ func AddEdbDataFromComTrade(edbCode string) (err error) {
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
 			utils.FileLog.Info("addSql:" + addSql)
-			_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
+			//_, err = o.Raw(addSql).Exec()
 			if err != nil {
 				return err
 			}
@@ -129,7 +143,7 @@ func RefreshEdbDataFromComTrade(edbInfoId int, edbCode, startDate string) (err e
 	source := utils.DATA_SOURCE_COM_TRADE
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -157,7 +171,7 @@ func RefreshEdbDataFromComTrade(edbInfoId int, edbCode, startDate string) (err e
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -185,6 +199,7 @@ func RefreshEdbDataFromComTrade(edbInfoId int, edbCode, startDate string) (err e
 	}
 
 	addSql := ` INSERT INTO edb_data_com_trade(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	addMap := make(map[string]string)
 	for _, v := range ComTradeDataList {
@@ -233,7 +248,8 @@ func RefreshEdbDataFromComTrade(edbInfoId int, edbCode, startDate string) (err e
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}

+ 35 - 13
models/base_from_dl.go

@@ -1,16 +1,18 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
 )
 
 type BaseFromTradeDalianIndex struct {
-	BaseFromTradeDalianIndexId int `orm:"column(base_from_trade_dalian_index_id);pk"`
+	//BaseFromTradeDalianIndexId int `orm:"column(base_from_trade_dalian_index_id);pk"`
+	BaseFromTradeDalianIndexId int `gorm:"column:base_from_trade_dalian_index_id;primaryKey"`
 	Rank                       int
 	DealShortName              string
 	DealName                   string
@@ -35,16 +37,24 @@ type BaseFromTradeDalianIndex struct {
 	DataTime                   string
 }
 
+func (m *BaseFromTradeDalianIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
+}
+
 func GetBaseFromDalianDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeDalianIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_trade_dalian_index WHERE %s_code=? `
 	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&list).Error
 	return
 }
 
 type BaseFromDlDataSimple struct {
-	Id        int `orm:"column(base_from_trade_dalian_index_id);pk"`
+	Id int `gorm:"column:base_from_trade_dalian_index_id;primaryKey"`
+	//Id        int `orm:"column(base_from_trade_dalian_index_id);pk"`
 	DealCode  string
 	BuyCode   string
 	SoldCode  string
@@ -54,14 +64,22 @@ type BaseFromDlDataSimple struct {
 	SoldValue string
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromDlDataSimple) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
+}
+
 func GetDlDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromDlDataSimple, err error) {
 	sql := ` SELECT * FROM base_from_trade_dalian_index WHERE 1=1 `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
@@ -76,14 +94,15 @@ func AddEdbDataFromDl(edbCode string) (err error) {
 		suffix = "sold"
 	}
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	dlBaseDataAll, err := GetBaseFromDalianDataAllByIndexCode(edbCode, suffix)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_dl(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	existMap := make(map[string]string)
 
 	for _, sv := range dlBaseDataAll {
@@ -116,7 +135,8 @@ func AddEdbDataFromDl(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -129,7 +149,7 @@ func RefreshEdbDataFromDl(edbInfoId int, edbCode, startDate string) (err error)
 	source := utils.DATA_SOURCE_DL
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -173,7 +193,7 @@ func RefreshEdbDataFromDl(edbInfoId int, edbCode, startDate string) (err error)
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -202,6 +222,7 @@ func RefreshEdbDataFromDl(edbInfoId int, edbCode, startDate string) (err error)
 	}
 
 	addSql := ` INSERT INTO edb_data_dl(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	for _, v := range glDataList {
 		var value string
@@ -256,7 +277,8 @@ func RefreshEdbDataFromDl(edbInfoId int, edbCode, startDate string) (err error)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}

+ 43 - 30
models/base_from_edb_mapping.go

@@ -1,16 +1,16 @@
 package models
 
 import (
-	"eta/eta_index_lib/utils"
+	"eta/eta_index_lib/global"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
 
 // BaseFromEdbMapping 同花顺高频数据
 type BaseFromEdbMapping struct {
-	Id              int       `orm:"column(id);pk"`
+	Id int `gorm:"column:id;primaryKey"`
+	//Id              int       `orm:"column(id);pk"`
 	BaseFromIndexId int       `description:"源指标ID"`
 	BaseIndexCode   string    `description:"源指标编码"`
 	EdbInfoId       int       `description:"指标ID"`
@@ -55,12 +55,13 @@ func (m *BaseFromEdbMapping) Cols() BaseFromEdbMappingCols {
 }
 
 func (m *BaseFromEdbMapping) Create() (err error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.Id = int(id)
+	//o := orm.NewOrm()
+	//id, err := o.Insert(m)
+	err = global.DEFAULT_DB.Create(&m).Error
+	//if err != nil {
+	//	return
+	//}
+	//m.Id = int(id)
 	return
 }
 
@@ -68,21 +69,24 @@ func (m *BaseFromEdbMapping) CreateMulti(items []*BaseFromEdbMapping) (err error
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(items), items)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(len(items), items)
+	err = global.DEFAULT_DB.CreateInBatches(items, len(items)).Error
 	return
 }
 
 func (m *BaseFromEdbMapping) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(m, cols...)
+	err = global.DEFAULT_DB.Model(&m).Select(cols).Updates(&m).Error
 	return
 }
 
 func (m *BaseFromEdbMapping) Remove() (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	_, err = o.Raw(sql, m.Id).Exec()
+	//_, err = o.Raw(sql, m.Id).Exec()
+	err = global.DEFAULT_DB.Exec(sql, m.Id).Error
 	return
 }
 
@@ -90,9 +94,11 @@ func (m *BaseFromEdbMapping) MultiRemove(ids []int) (err error) {
 	if len(ids) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
-	_, err = o.Raw(sql, ids).Exec()
+	//o := orm.NewOrm()
+	//sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN ?`, m.TableName(), m.Cols().PrimaryId)
+	//_, err = o.Raw(sql, ids).Exec()
+	err = global.DEFAULT_DB.Exec(sql, ids).Error
 	return
 }
 
@@ -100,39 +106,43 @@ func (m *BaseFromEdbMapping) RemoveByCondition(condition string, pars []interfac
 	if condition == "" {
 		return
 	}
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
-	_, err = o.Raw(sql, pars).Exec()
+	//_, err = o.Raw(sql, pars).Exec()
+	err = global.DEFAULT_DB.Exec(sql, pars...).Error
 	return
 }
 
 func (m *BaseFromEdbMapping) GetItemById(id int) (item *BaseFromEdbMapping, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	err = o.Raw(sql, id).QueryRow(&item)
+	//err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, id).First(&item).Error
 	return
 }
 
 func (m *BaseFromEdbMapping) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *BaseFromEdbMapping, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	order := ``
 	if orderRule != "" {
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	//err = o.Raw(sql, pars).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).First(&item).Error
 	return
 }
 
 func (m *BaseFromEdbMapping) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	//err = o.Raw(sql, pars).QueryRow(&count)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
 func (m *BaseFromEdbMapping) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromEdbMapping, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -142,12 +152,13 @@ func (m *BaseFromEdbMapping) GetItemsByCondition(condition string, pars []interf
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	//_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 func (m *BaseFromEdbMapping) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*BaseFromEdbMapping, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -157,6 +168,8 @@ func (m *BaseFromEdbMapping) GetPageItemsByCondition(condition string, pars []in
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	//_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	pars = append(pars, startSize, pageSize)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	return
 }

+ 23 - 11
models/base_from_eia_steo.go

@@ -1,36 +1,44 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
-
-	"github.com/beego/beego/v2/client/orm"
 )
 
 //钢联
 
 type EiaSteoData struct {
-	InputValue float64 `orm:"column(value)" description:"值"`
-	DataTime   string  `orm:"column(data_time)" description:"日期"`
+	InputValue float64 `gorm:"column:value" description:"值"`
+	DataTime   string  `gorm:"column:data_time" description:"日期"`
+}
+
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *EiaSteoData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
 }
 
 func GetEiaSteoDataByCondition(condition string, pars []interface{}) (item []*EiaSteoData, err error) {
 	sql1 := ` SELECT * FROM base_from_eia_steo_data WHERE 1=1  `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql1 += condition
 	}
 	sql := `select * from (` + sql1 + ` having 1 order by modify_time DESC ) tmp GROUP BY data_time ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 // AddEdbDataFromEiaSteo 新增钢联指标数据
 func AddEdbDataFromEiaSteo(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var condition string
 	var pars []interface{}
@@ -51,6 +59,7 @@ func AddEdbDataFromEiaSteo(edbCode string) (err error) {
 	if dataLen > 0 {
 		var isAdd bool
 		addSql := ` INSERT INTO edb_data_eia_steo (edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+		addSql = utils.ReplaceDriverKeywords("", addSql)
 		for i := 0; i < dataLen; i++ {
 			item := EiaSteoDataList[i]
 			eDate := item.DataTime
@@ -72,7 +81,8 @@ func AddEdbDataFromEiaSteo(edbCode string) (err error) {
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
 			utils.FileLog.Info("addSql:" + addSql)
-			_, err = o.Raw(addSql).Exec()
+			//_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
 				return err
 			}
@@ -86,7 +96,7 @@ func RefreshEdbDataFromEiaSteo(edbInfoId int, edbCode, startDate string) (err er
 	source := utils.DATA_SOURCE_EIA_STEO
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -116,7 +126,7 @@ func RefreshEdbDataFromEiaSteo(edbInfoId int, edbCode, startDate string) (err er
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -144,6 +154,7 @@ func RefreshEdbDataFromEiaSteo(edbInfoId int, edbCode, startDate string) (err er
 	}
 
 	addSql := ` INSERT INTO edb_data_eia_steo(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	addMap := make(map[string]string)
 	for _, v := range EiaSteoDataList {
@@ -192,7 +203,8 @@ func RefreshEdbDataFromEiaSteo(edbInfoId int, edbCode, startDate string) (err er
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}

+ 131 - 80
models/base_from_fenwei.go

@@ -1,10 +1,10 @@
 package models
 
 import (
-	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -14,7 +14,8 @@ import (
 type BaseFromFenwei struct{}
 
 type BaseFromFenweiData struct {
-	FenweiDataId  int `orm:"column(fenwei_data_id);pk"`
+	FenweiDataId int `gorm:"column:fenwei_data_id;primaryKey"`
+	//enweiDataId  int `orm:"column(fenwei_data_id);pk"`
 	FenweiIndexId int
 	IndexCode     string
 	DataTime      string
@@ -28,19 +29,26 @@ func (m *BaseFromFenweiData) TableName() string {
 	return "base_from_fenwei_data"
 }
 
+func (e *BaseFromFenweiData) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
 func GetBaseFromFenweiDataByCondition(condition string, pars []interface{}) (list []*BaseFromFenweiData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_fenwei_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	//_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&list).Error
 	return
 }
 
 // Add 添加
 func (obj BaseFromFenwei) Add(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var condition string
 	var pars []interface{}
@@ -49,11 +57,12 @@ func (obj BaseFromFenwei) Add(edbCode string) (err error) {
 		pars = append(pars, edbCode)
 	}
 	fenweiBaseDataAll, err := GetBaseFromFenweiDataByCondition(condition, pars)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_fenwei(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	existMap := make(map[string]string)
 	for _, sv := range fenweiBaseDataAll {
 		eDate := sv.DataTime
@@ -72,7 +81,8 @@ func (obj BaseFromFenwei) Add(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -83,7 +93,7 @@ func (obj BaseFromFenwei) Add(edbCode string) (err error) {
 // Refresh 刷新汾渭数据指标数据
 func (obj BaseFromFenwei) Refresh(edbInfoId int, edbCode, startDate string) (err error) {
 	source := obj.GetSource()
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -113,7 +123,7 @@ func (obj BaseFromFenwei) Refresh(edbInfoId int, edbCode, startDate string) (err
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -140,6 +150,7 @@ func (obj BaseFromFenwei) Refresh(edbInfoId int, edbCode, startDate string) (err
 		existMap[v.DataTime] = v
 	}
 	addSql := ` INSERT INTO edb_data_fenwei(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	for _, v := range fenweiDataList {
 		item := v
@@ -181,7 +192,8 @@ func (obj BaseFromFenwei) Refresh(edbInfoId int, edbCode, startDate string) (err
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromBaiinfo add Err", err.Error())
 			return
@@ -201,18 +213,26 @@ func (obj BaseFromFenwei) GetSourceName() string {
 }
 
 type BaseFromFenweiIndex struct {
-	FenweiIndexId int64 `orm:"column(fenwei_index_id);pk"`
-	IndexCode     string
-	IndexName     string
-	Frequency     string
-	Unit          string
-	ClassifyId    int
-	StartDate     string
-	EndDate       string
-	Sort          int
-	TerminalCode  string
-	CreateTime    time.Time
-	ModifyTime    time.Time
+	FenweiIndexId int64 `gorm:"column:fenwei_index_id;primaryKey"`
+	//FenweiIndexId int64 `orm:"column(fenwei_index_id);pk"`
+	IndexCode    string
+	IndexName    string
+	Frequency    string
+	Unit         string
+	ClassifyId   int
+	StartDate    string
+	EndDate      string
+	Sort         int
+	TerminalCode string
+	CreateTime   time.Time
+	ModifyTime   time.Time
+}
+
+func (e *BaseFromFenweiIndex) AfterFind(db *gorm.DB) (err error) {
+	e.StartDate = utils.GormDateStrToDateStr(e.StartDate)
+	e.EndDate = utils.GormDateStrToDateStr(e.EndDate)
+
+	return
 }
 
 func (m *BaseFromFenweiIndex) TableName() string {
@@ -220,34 +240,42 @@ func (m *BaseFromFenweiIndex) TableName() string {
 }
 
 func (m *BaseFromFenweiIndex) Add() (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(m)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(m)
+	err = global.DEFAULT_DB.Create(&m).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(m.FenweiIndexId)
 	return
 }
 
 func (m *BaseFromFenweiIndex) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, updateCols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(m, updateCols...)
+	err = global.DEFAULT_DB.Model(&m).Select(updateCols).Updates(&m).Error
 
 	return
 }
 
 func (m *BaseFromFenweiIndex) ModifyIndexMaxAndMinDate(indexCode string, item *EdbInfoMaxAndMinInfo) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_fenwei_index SET start_date=?,end_date=?,latest_value=?,modify_time=NOW() WHERE index_code=? `
-	_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	//_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Error
 	return
 }
 
 func (m *BaseFromFenweiIndex) GetByIndexCode(indexCode string) (item *BaseFromFenweiIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_fenwei_index WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	return
 }
 
 func (m *BaseFromFenweiIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromFenweiIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -257,12 +285,14 @@ func (m *BaseFromFenweiIndex) GetItemsByCondition(condition string, pars []inter
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_fenwei_index WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	//_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 type BaseFromFenweiIndexList struct {
-	FenweiIndexId int64 `orm:"column(fenwei_index_id);pk"`
+	//FenweiIndexId int64 `orm:"column(fenwei_index_id);pk"`
+	FenweiIndexId int64 `gorm:"column:fenwei_index_id;primaryKey"`
 	IndexCode     string
 	IndexName     string
 	Frequency     string
@@ -276,15 +306,17 @@ type BaseFromFenweiIndexList struct {
 }
 
 func (y *BaseFromFenweiData) GetByIndexCode(indexCode string) (list []*BaseFromFenweiData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_fenwei_data WHERE index_code=? `
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&list).Error
 	return
 }
 
 func (y *BaseFromFenweiData) AddMulti(item []*BaseFromFenweiData) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(1, item)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(1, item)
+	err = global.DEFAULT_DB.CreateInBatches(&item, 1).Error
 	return
 }
 
@@ -307,7 +339,7 @@ type HandleFenweiExcelDataReq struct {
 }
 
 type FenWeiNetIndexInfo struct {
-	FenweiIndexId int64  `orm:"column(fenwei_index_id);pk"`
+	FenweiIndexId int64  `gorm:"column:fenwei_index_id;primaryKey"`
 	IndexName     string `description:"指标名称"`
 	//IndexCode    string  `description:"指标编码"`
 	Unit         string      `description:"单位"`
@@ -324,13 +356,15 @@ type HandleFenWeiNetDataReq struct {
 }
 
 func (y *BaseFromFenweiData) GetMaxAndMinDateByIndexCode(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_fenwei_data WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	// 获取最新值
 	var lastVal float64
 	sql = ` SELECT value AS latest_value FROM base_from_fenwei_data WHERE index_code = ? ORDER BY data_time DESC LIMIT 1 `
-	err = o.Raw(sql, indexCode).QueryRow(&lastVal)
+	//err = o.Raw(sql, indexCode).QueryRow(&lastVal)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Scan(&lastVal).Error
 	if err != nil {
 		return
 	}
@@ -340,7 +374,8 @@ func (y *BaseFromFenweiData) GetMaxAndMinDateByIndexCode(indexCode string) (item
 
 // BaseFromFenweiClassify 汾渭数据分类表
 type BaseFromFenweiClassify struct {
-	ClassifyId      int       `orm:"column(classify_id);pk"`
+	//ClassifyId      int       `orm:"column(classify_id);pk"`
+	ClassifyId      int       `gorm:"column:classify_id;primaryKey"`
 	ClassifyName    string    `description:"分类名称"`
 	ParentId        int       `description:"父级id"`
 	SysUserId       int       `description:"创建人id"`
@@ -352,32 +387,37 @@ type BaseFromFenweiClassify struct {
 }
 
 func (y *BaseFromFenweiClassify) Add() (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(y)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(y)
+	err = global.DEFAULT_DB.Create(&y).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(y.ClassifyId)
 	return
 }
 
 func (y *BaseFromFenweiClassify) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(y, updateCols...)
-
+	//o := orm.NewOrm()
+	//_, err = o.Update(y, updateCols...)
+	err = global.DEFAULT_DB.Model(&y).Select(updateCols).Updates(&y).Error
 	return
 }
 
 func (y *BaseFromFenweiClassify) GetByClassifyName(classifyName string) (item []*BaseFromFenweiClassify, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_fenwei_classify WHERE classify_name=? `
-	_, err = o.Raw(sql, classifyName).QueryRows(&item)
+	//_, err = o.Raw(sql, classifyName).QueryRows(&item)
 
-	if errors.Is(err, orm.ErrNoRows) {
+	err = global.DEFAULT_DB.Raw(sql, classifyName).Find(&item).Error
+	if utils.IsErrNoRow(err) {
 		return nil, nil
 	}
-
 	return
 }
 
 func (y *BaseFromFenweiClassify) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromFenweiClassify, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -387,7 +427,8 @@ func (y *BaseFromFenweiClassify) GetItemsByCondition(condition string, pars []in
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM base_from_fenwei_classify WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	//_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
@@ -424,34 +465,37 @@ func MultiUpdateBaseFromFenweiDataValue(items []*BaseFromFenweiData) (err error)
 		return
 	}
 
-	o := orm.NewOrm()
-	sql := `UPDATE base_from_fenwei_data SET value = ?, modify_time = NOW() WHERE index_code = ? AND data_time = ? LIMIT 1`
-	p, err := o.Raw(sql).Prepare()
-	if err != nil {
-		return
-	}
+	//o := orm.NewOrm()
+	to := global.DEFAULT_DB.Begin()
+
 	defer func() {
-		_ = p.Close()
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
 	}()
+	sql := `UPDATE base_from_fenwei_data SET value = ?, modify_time = NOW() WHERE index_code = ? AND data_time = ? LIMIT 1`
 	for _, v := range items {
 		if v.IndexCode == "" || v.DataTime == "" {
 			continue
 		}
-		_, err = p.Exec(v.Value, v.IndexCode, v.DataTime)
+		err = to.Exec(sql, v.Value, v.IndexCode, v.DataTime).Error
 		if err != nil {
 			return
 		}
 	}
+
 	return
 }
 
 // GetBaseFromFenWeiIndexByIndexName 根据指标名称查询指标
 func GetBaseFromFenWeiIndexByIndexName(indexName string) (item *BaseFromFenweiIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_fenwei_index WHERE index_name=? `
-	err = o.Raw(sql, indexName).QueryRow(&item)
-
-	if errors.Is(err, orm.ErrNoRows) {
+	//err = o.Raw(sql, indexName).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexName).First(&item).Error
+	if utils.IsErrNoRow(err) {
 		return nil, nil
 	}
 	return
@@ -459,11 +503,11 @@ func GetBaseFromFenWeiIndexByIndexName(indexName string) (item *BaseFromFenweiIn
 
 // GetBaseFromFenweiDataByIndexCodeAndDataTime 根据指标编码和dataTime查询指标数据
 func GetBaseFromFenweiDataByIndexCodeAndDataTime(indexCode, dataTime string) (item *BaseFromFenweiData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_fenwei_data WHERE index_code=? AND data_time=? `
-	err = o.Raw(sql, indexCode, dataTime).QueryRow(&item)
-
-	if errors.Is(err, orm.ErrNoRows) {
+	//err = o.Raw(sql, indexCode, dataTime).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode, dataTime).First(&item).Error
+	if utils.IsErrNoRow(err) {
 		return nil, nil
 	}
 
@@ -476,25 +520,31 @@ func BatchAddBaseFromFenWeiData(items []*BaseFromFenweiData) (err error) {
 		return
 	}
 
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(1, items)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(1, items)
+	err = global.DEFAULT_DB.CreateInBatches(items, 1).Error
 	return
 }
 
 // AddBaseFromFenWeiClassify 新增汾渭分类
 func AddBaseFromFenWeiClassify(item *BaseFromFenweiClassify) (classifyId int64, err error) {
-	o := orm.NewOrm()
-	classifyId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//classifyId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	classifyId = int64(item.ClassifyId)
 	return
 }
 
 // GetBaseFromFenWeiIndexByIndexCode 跟据指标编码查询指标信息
 func GetBaseFromFenWeiIndexByIndexCode(indexCode string) (item *BaseFromFenweiIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_fenwei_index WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
-
-	if errors.Is(err, orm.ErrNoRows) {
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
+	if utils.IsErrNoRow(err) {
 		return nil, nil
 	}
 
@@ -503,7 +553,8 @@ func GetBaseFromFenWeiIndexByIndexCode(indexCode string) (item *BaseFromFenweiIn
 
 // UpdateBaseFromFenweiData 更新汾渭数据
 func UpdateBaseFromFenweiData(data *BaseFromFenweiData) error {
-	o := orm.NewOrm()
-	_, err := o.Update(data)
+	//o := orm.NewOrm()
+	//_, err := o.Update(data)
+	err := global.DEFAULT_DB.Save(&data).Error
 	return err
 }

+ 9 - 6
models/base_from_fubao.go

@@ -1,9 +1,9 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"strings"
 	"time"
@@ -28,9 +28,10 @@ type FuBaoData struct {
 
 // 新增富宝指标数据
 func AddEdbDataFromFubao(edbCode string, fubaoData *FuBaoData) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_fubao(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	for _, dataItem := range fubaoData.ReturnValue.Data {
 		dataTime, err := time.ParseInLocation(utils.FormatDate, dataItem.Datadate, time.Local)
 		if err != nil {
@@ -47,7 +48,8 @@ func AddEdbDataFromFubao(edbCode string, fubaoData *FuBaoData) (err error) {
 	}
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshAllEdbDataByFubao add Err", err.Error())
 			return
@@ -61,7 +63,7 @@ func RefreshEdbDataFromFubao(edbInfoId int, edbCode, startDate string, fubaoData
 	source := utils.DATA_SOURCE_FUBAO
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	// 真实数据的最大日期  , 插入规则配置的日期
 	var realDataMaxDate, edbDataInsertConfigDate time.Time
@@ -69,7 +71,7 @@ func RefreshEdbDataFromFubao(edbInfoId int, edbCode, startDate string, fubaoData
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -149,7 +151,8 @@ func RefreshEdbDataFromFubao(edbInfoId int, edbCode, startDate string, fubaoData
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromFubao Err", err.Error())
 			return

+ 33 - 16
models/base_from_gie.go

@@ -1,16 +1,18 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
 )
 
 type BaseFromTradeEicIndex struct {
-	BaseFromEicIndexId     int `orm:"column(base_from_eic_index_id);pk"`
+	//BaseFromEicIndexId     int `orm:"column(base_from_eic_index_id);pk"`
+	BaseFromEicIndexId     int `gorm:"column:base_from_eic_index_id;primaryKey"`
 	Country                string
 	Type                   string
 	EicCode                string
@@ -40,7 +42,8 @@ type BaseFromTradeEicIndex struct {
 }
 
 type BaseFromTradeEicIndexV2 struct {
-	BaseFromEicIndexId     int `orm:"column(base_from_eic_index_id);pk"`
+	//BaseFromEicIndexId     int `orm:"column(base_from_eic_index_id);pk"`
+	BaseFromEicIndexId     int `gorm:"column:base_from_eic_index_id;primaryKey"`
 	Type                   string
 	EicCode                string
 	Name                   string
@@ -72,8 +75,15 @@ type BaseFromTradeEicIndexV2 struct {
 	ModifyTime             time.Time
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromTradeEicIndexV2) AfterFind(db *gorm.DB) (err error) {
+	m.GasDayStart = utils.GormDateStrToDateStr(m.GasDayStart)
+
+	return
+}
+
 func GetBaseFromEicDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeEicIndexV2, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	var name string
 	if suffix == "" {
 		name = "eic_code"
@@ -100,31 +110,34 @@ func GetBaseFromEicDataAllByIndexCode(indexCode, suffix string) (list []*BaseFro
 	}
 	sql := `SELECT * FROM base_from_trade_eic_index_v2 WHERE %s=? `
 	sql = fmt.Sprintf(sql, name)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&list).Error
 	return
 }
 
 func GetGieDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromTradeEicIndex, err error) {
 	sql := ` SELECT * FROM base_from_trade_eic_index WHERE 1=1 `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY gas_day_started_on DESC `
 	fmt.Println(sql, pars)
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 func GetGieDataByTradeCodeV2(condition string, pars []interface{}) (item []*BaseFromTradeEicIndexV2, err error) {
 	sql := ` SELECT * FROM base_from_trade_eic_index_v2 WHERE 1=1 `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY gas_day_start DESC `
 	fmt.Println(sql, pars)
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
@@ -155,16 +168,17 @@ func AddEdbDataFromGie(edbCode string) (err error) {
 	} else {
 		suffix = ""
 	}
-
-	o := orm.NewOrm()
+	//
+	//o := orm.NewOrm()
 	eicBaseDataAll, err := GetBaseFromEicDataAllByIndexCode(edbCode, suffix)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		fmt.Println("GetBaseFromEicDataAllByIndexCode err:", err)
 		return
 	}
 
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_gie(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	existMap := make(map[string]string)
 
 	for _, sv := range eicBaseDataAll {
@@ -225,7 +239,8 @@ func AddEdbDataFromGie(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("addSql err:", err)
 			return err
@@ -239,7 +254,7 @@ func RefreshEdbDataFromGie(edbInfoId int, edbCode, startDate string) (err error)
 	source := utils.DATA_SOURCE_GIE
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -294,7 +309,7 @@ func RefreshEdbDataFromGie(edbInfoId int, edbCode, startDate string) (err error)
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -323,6 +338,7 @@ func RefreshEdbDataFromGie(edbInfoId int, edbCode, startDate string) (err error)
 	}
 
 	addSql := ` INSERT INTO edb_data_gie(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	dataMap := make(map[string]interface{})
 	for _, v := range eicDataList {
@@ -393,7 +409,8 @@ func RefreshEdbDataFromGie(edbInfoId int, edbCode, startDate string) (err error)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}

+ 26 - 12
models/base_from_google_travel.go

@@ -1,16 +1,18 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
 )
 
 type BaseFromChangesVisitorsCovid struct {
-	Id                  int    `orm:"column(id);pk"`
+	//Id                  int    `orm:"column(id);pk"`
+	Id                  int    `gorm:"column:id;primaryKey"`
 	Entity              string `description:"国家"`
 	Code                string `description:"国家编码"`
 	EdbCode             string `description:"指标ID"`
@@ -26,35 +28,45 @@ type BaseFromChangesVisitorsCovid struct {
 	ModifyTime          string `description:"修改时间"`
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromChangesVisitorsCovid) AfterFind(db *gorm.DB) (err error) {
+	m.Day = utils.GormDateStrToDateStr(m.Day)
+
+	return
+}
+
 func GetBaseFromChangesVisitorsCovidDataAllByIndexCode(indexCode string) (list []*BaseFromChangesVisitorsCovid, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_changes_visitors_covid WHERE edb_code=? `
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&list).Error
 	return
 }
 
 func GetBaseFromChangesVisitorsCovidDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromChangesVisitorsCovid, err error) {
 	sql := ` SELECT * FROM base_from_changes_visitors_covid WHERE 1=1 `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY day DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 // 新增谷歌出行指标数据
 func AddEdbDataGoogleTravel(edbCode string) (err error) {
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	dataAll, err := GetBaseFromChangesVisitorsCovidDataAllByIndexCode(edbCode)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_google_travel(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 
 	for _, sv := range dataAll {
 		eDate := sv.Day
@@ -71,7 +83,8 @@ func AddEdbDataGoogleTravel(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -84,7 +97,7 @@ func RefreshEdbDataGoogleTravel(edbInfoId int, edbCode, startDate string) (err e
 	source := utils.DATA_SOURCE_GOOGLE_TRAVEL
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -114,7 +127,7 @@ func RefreshEdbDataGoogleTravel(edbInfoId int, edbCode, startDate string) (err e
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -190,7 +203,8 @@ func RefreshEdbDataGoogleTravel(edbInfoId int, edbCode, startDate string) (err e
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}

+ 85 - 43
models/base_from_gpr_risk.go

@@ -2,20 +2,22 @@ package models
 
 import (
 	"bytes"
+	sql2 "database/sql"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
-
-	"github.com/beego/beego/v2/client/orm"
 )
 
 // BaseFromGprRisk 美国农业部
 type BaseFromGprRisk struct{}
 
 type BaseFromGprRiskData struct {
-	BaseFromGprRiskDataId  int `orm:"column(base_from_gpr_risk_data_id);pk"`
+	//BaseFromGprRiskDataId  int `orm:"column(base_from_gpr_risk_data_id);pk"`
+	BaseFromGprRiskDataId  int `gorm:"column:base_from_gpr_risk_data_id;primaryKey"`
 	BaseFromGprRiskIndexId int
 	IndexCode              string
 	DataTime               string
@@ -25,19 +27,26 @@ type BaseFromGprRiskData struct {
 	DataTimestamp          int64
 }
 
+func (e *BaseFromGprRiskData) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
 func GetBaseFromGprRiskDataByCondition(condition string, pars []interface{}) (list []*BaseFromGprRiskData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_gpr_risk_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	//_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&list).Error
 	return
 }
 
 // Add 添加
 func (obj BaseFromGprRisk) Add(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var condition string
 	var pars []interface{}
@@ -46,7 +55,7 @@ func (obj BaseFromGprRisk) Add(edbCode string) (err error) {
 		pars = append(pars, edbCode)
 	}
 	gprRiskBaseDataAll, err := GetBaseFromGprRiskDataByCondition(condition, pars)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 	var isAdd bool
@@ -78,7 +87,8 @@ func (obj BaseFromGprRisk) Add(edbCode string) (err error) {
 		addSql = buffer.String()
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -89,7 +99,7 @@ func (obj BaseFromGprRisk) Add(edbCode string) (err error) {
 // Refresh 刷新涌益咨询指标数据
 func (obj BaseFromGprRisk) Refresh(edbInfoId int, edbCode, startDate string) (err error) {
 	source := obj.GetSource()
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -119,7 +129,7 @@ func (obj BaseFromGprRisk) Refresh(edbInfoId int, edbCode, startDate string) (er
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -187,7 +197,8 @@ func (obj BaseFromGprRisk) Refresh(edbInfoId int, edbCode, startDate string) (er
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromBaiinfo add Err", err.Error())
 			return
@@ -207,7 +218,8 @@ func (obj BaseFromGprRisk) GetSourceName() string {
 }
 
 type BaseFromGprRiskIndex struct {
-	BaseFromGprRiskIndexId int64 `orm:"column(base_from_gpr_risk_index_id);pk"`
+	//BaseFromGprRiskIndexId int64 `orm:"column(base_from_gpr_risk_index_id);pk"`
+	BaseFromGprRiskIndexId int64 `gorm:"column:base_from_gpr_risk_index_id;primaryKey"`
 	IndexCode              string
 	IndexName              string
 	Frequency              string
@@ -223,8 +235,16 @@ type BaseFromGprRiskIndex struct {
 	ModifyTime             time.Time
 }
 
+func (e *BaseFromGprRiskIndex) AfterFind(db *gorm.DB) (err error) {
+	e.StartDate = utils.GormDateStrToDateStr(e.StartDate)
+	e.EndDate = utils.GormDateStrToDateStr(e.EndDate)
+
+	return
+}
+
 type BaseFromGprRiskIndexList struct {
-	BaseFromGprRiskIndexId int64 `orm:"column(base_from_gpr_risk_index_id);pk"`
+	//BaseFromGprRiskIndexId int64 `orm:"column(base_from_gpr_risk_index_id);pk"`
+	BaseFromGprRiskIndexId int64 `gorm:"column:base_from_gpr_risk_index_id;primaryKey"`
 	IndexCode              string
 	IndexName              string
 	Frequency              string
@@ -239,22 +259,25 @@ type BaseFromGprRiskIndexList struct {
 }
 
 func (y *BaseFromGprRiskData) GetByIndexCode(indexCode string) (list []*BaseFromGprRiskData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_gpr_risk_data WHERE index_code=? `
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&list).Error
 	return
 }
 
 func (y *BaseFromGprRiskData) AddMulti(item []*BaseFromGprRiskData) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(1, item)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(1, item)
+	err = global.DEFAULT_DB.CreateInBatches(&item, 1).Error
 	return
 }
 
 // Update 修改
 func (y *BaseFromGprRiskData) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(y, updateCols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(y, updateCols...)
+	err = global.DEFAULT_DB.Model(&y).Select(updateCols).Updates(&y).Error
 	return
 }
 
@@ -277,48 +300,60 @@ type HandleGprRiskExcelDataReq struct {
 }
 
 func (y *BaseFromGprRiskData) GetMaxAndMinDateByIndexCode(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_gpr_risk_data WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
-	var latest_value float64
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	sql = ` SELECT value AS latest_value FROM %s WHERE index_code=? ORDER BY data_time DESC LIMIT 1 `
 	sql = fmt.Sprintf(sql, "base_from_gpr_risk_data")
-	err = o.Raw(sql, indexCode).QueryRow(&latest_value)
-	item.LatestValue = latest_value
+	var latestValueNull sql2.NullFloat64
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Scan(&latestValueNull).Error
+	if err == nil && latestValueNull.Valid {
+		item.LatestValue = latestValueNull.Float64
+	}
+	//err = o.Raw(sql, indexCode).QueryRow(&latest_value)
 	return
 }
 
 func (y *BaseFromGprRiskIndex) ModifyIndexMaxAndMinDate(indexCode string, item *EdbInfoMaxAndMinInfo) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_gpr_risk_index SET start_date=?,end_date=?, end_value=?, modify_time=NOW() WHERE index_code=? `
-	_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	//_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Error
 	return
 }
 
 func (y *BaseFromGprRiskIndex) GetByIndexCode(indexCode string) (item *BaseFromGprRiskIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_gpr_risk_index WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	return
 }
 
 func (y *BaseFromGprRiskIndex) Add() (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(y)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(y)
+	err = global.DEFAULT_DB.Create(&y).Error
+	if err != nil {
+		return
+	}
+	lastId = y.BaseFromGprRiskIndexId
 	return
 }
 
 // Update 修改
 func (y *BaseFromGprRiskIndex) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(y, updateCols...)
-
+	//o := orm.NewOrm()
+	//_, err = o.Update(y, updateCols...)
+	err = global.DEFAULT_DB.Model(&y).Select(updateCols).Updates(&y).Error
 	return
 }
 
 // BaseFromGprRiskClassify GprRisk原始数据分类表
 type BaseFromGprRiskClassify struct {
-	ClassifyId      int64     `orm:"column(classify_id);pk"`
+	//ClassifyId      int64     `orm:"column(classify_id);pk"`
+	ClassifyId      int64     `gorm:"column:classify_id;primaryKey"`
 	ClassifyName    string    `description:"分类名称"`
 	ClassifyNameEn  string    `description:"分类名称"`
 	ParentId        int       `description:"父级id"`
@@ -331,29 +366,36 @@ type BaseFromGprRiskClassify struct {
 }
 
 func (y *BaseFromGprRiskClassify) Add() (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(y)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(y)
+	err = global.DEFAULT_DB.Create(&y).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(y.ClassifyId)
 	return
 }
 
 // Update 修改
 func (y *BaseFromGprRiskClassify) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(y, updateCols...)
-
+	//o := orm.NewOrm()
+	//_, err = o.Update(y, updateCols...)
+	err = global.DEFAULT_DB.Model(&y).Select(updateCols).Updates(&y).Error
 	return
 }
 
 func (y *BaseFromGprRiskClassify) GetByClassifyName(classifyName string) (item *BaseFromGprRiskClassify, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_gpr_risk_classify WHERE classify_name=? `
-	err = o.Raw(sql, classifyName).QueryRow(&item)
+	//err = o.Raw(sql, classifyName).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, classifyName).First(&item).Error
 	return
 }
 
 func (y *BaseFromGprRiskClassify) GetParentClassify() (items []*BaseFromGprRiskClassify, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_gpr_risk_classify WHERE parent_id=0 `
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }

+ 28 - 13
models/base_from_gz.go

@@ -1,16 +1,18 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
 )
 
 type BaseFromTradeGuangzhouIndex struct {
-	BaseFromTradeGuangzhouIndexId    int       `orm:"column(base_from_trade_guangzhou_index_id);pk"`
+	BaseFromTradeGuangzhouIndexId int `gorm:"column:base_from_trade_guangzhou_index_id;primaryKey"`
+	//BaseFromTradeGuangzhouIndexId    int       `orm:"column(base_from_trade_guangzhou_index_id);pk"`
 	BaseFromTradeGuangzhouClassifyId int       `description:"分类id"`
 	IndexCode                        string    `description:"指标编码"`
 	IndexName                        string    `description:"指标名称"`
@@ -23,7 +25,8 @@ type BaseFromTradeGuangzhouIndex struct {
 }
 
 type BaseFromTradeGuangzhouData struct {
-	BaseFromTradeGuangzhouDataId  int       `orm:"column(base_from_trade_guangzhou_data_id);pk"`
+	BaseFromTradeGuangzhouDataId int `gorm:"column:base_from_trade_guangzhou_data_id;primaryKey"`
+	//BaseFromTradeGuangzhouDataId  int       `orm:"column(base_from_trade_guangzhou_data_id);pk"`
 	BaseFromTradeGuangzhouIndexId int       `description:"指标id"`
 	IndexCode                     string    `description:"指标编码"`
 	DataTime                      string    `description:"数据日期"`
@@ -33,35 +36,45 @@ type BaseFromTradeGuangzhouData struct {
 	ModifyTime                    time.Time `description:"修改日期"`
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromTradeGuangzhouData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
+}
+
 func GetBaseFromGuangzhouDataByIndexCode(indexCode string) (items []*BaseFromTradeGuangzhouData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_trade_guangzhou_data WHERE index_code=? `
-	_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&items).Error
 	return
 }
 
 func GetBaseFromGuangzhouDataDataByCondition(condition string, pars []interface{}) (item []*BaseFromTradeGuangzhouData, err error) {
 	sql := ` SELECT * FROM base_from_trade_guangzhou_data WHERE 1=1 `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 // 新增广期所指标数据
 func AddEdbDataFromGz(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	dataAll, err := GetBaseFromGuangzhouDataByIndexCode(edbCode)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_gz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	existMap := make(map[string]string)
 
 	for _, sv := range dataAll {
@@ -81,7 +94,8 @@ func AddEdbDataFromGz(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -94,7 +108,7 @@ func RefreshEdbDataFromGz(edbInfoId int, edbCode, startDate string) (err error)
 	source := utils.DATA_SOURCE_GFEX
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -124,7 +138,7 @@ func RefreshEdbDataFromGz(edbInfoId int, edbCode, startDate string) (err error)
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -199,7 +213,8 @@ func RefreshEdbDataFromGz(edbInfoId int, edbCode, startDate string) (err error)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}

+ 50 - 28
models/base_from_hisugar.go

@@ -1,9 +1,10 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -32,30 +33,46 @@ type BaseFromHisugarData struct {
 	ModifyTime             time.Time // 修改时间
 }
 
+func (e *BaseFromHisugarData) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
 
-//添加数据
+	return
+}
+
+// 添加数据
 func AddBaseFromHisugarIndexMuti(items []*BaseFromHisugarIndex) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(500, items)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(500, items)
+	err = global.DEFAULT_DB.CreateInBatches(items, len(items)).Error
 	return
 }
 func AddBaseFromHisugarIndex(item *BaseFromHisugarIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromHisugarIndexId)
 	return
 }
 
 func AddBaseFromHisugarData(item *BaseFromHisugarData) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromHisugarDataId)
 	return
 }
 
 func AddEdbDataFromHisugar(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	hisugarBaseDataAll, err := GetHisugarDataByCode(edbCode)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 
@@ -92,7 +109,8 @@ func AddEdbDataFromHisugar(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -102,19 +120,19 @@ func AddEdbDataFromHisugar(edbCode string) (err error) {
 
 // GetHisugarDataByCode
 func GetHisugarDataByCode(indexCode string) (items []*BaseFromHisugarData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := "SELECT * FROM base_from_hisugar_data WHERE index_code=? "
-	_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&items).Error
 	return
 }
 
-
 // RefreshEdbDataFromHisugar 刷新隆众资讯
 func RefreshEdbDataFromHisugar(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_OILCHEM
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -144,7 +162,7 @@ func RefreshEdbDataFromHisugar(edbInfoId int, edbCode, startDate string) (err er
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -212,7 +230,8 @@ func RefreshEdbDataFromHisugar(edbInfoId int, edbCode, startDate string) (err er
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromSci add Err", err.Error())
 			return
@@ -222,39 +241,42 @@ func RefreshEdbDataFromHisugar(edbInfoId int, edbCode, startDate string) (err er
 }
 
 func GetBaseFromHisugarDataByCondition(condition string, pars []interface{}) (list []*BaseFromHisugarData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_hisugar_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	//_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&list).Error
 	return
 }
 
-
 type HandleHisugarEdbDataReq struct {
 	List []*BaseFromHisugarIndexReq
 }
 
 func GetBaseFromHisugarIndex() (list []*BaseFromHisugarIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_hisugar_index group by index_name `
-	_, err = o.Raw(sql).QueryRows(&list)
+	//_, err = o.Raw(sql).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql).Find(&list).Error
 	return
 }
 
 func GetBaseFromHisugarData(indexCode, dataTime string) (item *BaseFromHisugarData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_hisugar_data where index_code=? And data_time = ? `
-	err = o.Raw(sql, indexCode, dataTime).QueryRow(&item)
+	//err = o.Raw(sql, indexCode, dataTime).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode, dataTime).First(&item).Error
 	return
 }
 
 // UpdateBaseFromSci99Data
-func UpdateBaseFromHisugarData(value , indexCode, dataTime string) (err error) {
-	o := orm.NewOrm()
+func UpdateBaseFromHisugarData(value, indexCode, dataTime string) (err error) {
+	//o := orm.NewOrm()
 	sql := `UPDATE base_from_sci99_data SET value=?,modify_time=NOW() WHERE index_code = ? AND data_time = ? `
-	_, err = o.Raw(sql, value, indexCode, dataTime).Exec()
+	//_, err = o.Raw(sql, value, indexCode, dataTime).Exec()
+	err = global.DEFAULT_DB.Exec(sql, value, indexCode, dataTime).Error
 	return
 }
 
@@ -273,4 +295,4 @@ type BaseFromHisugarIndexReq struct {
 	IndexNameStr           string    // 指标名称字符串
 	MarketName             string    // 市场名称
 	Value                  string    // 值
-}
+}

+ 34 - 19
models/base_from_icpi.go

@@ -1,16 +1,18 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
 )
 
 type BaseFromIcpiIndex struct {
-	BaseFromIcpiIndexId    int       `orm:"column(base_from_icpi_index_id);pk"`
+	BaseFromIcpiIndexId int `gorm:"column:base_from_icpi_index_id;primaryKey"`
+	//BaseFromIcpiIndexId    int       `orm:"column(base_from_icpi_index_id);pk"`
 	BaseFromIcpiClassifyId int       `description:"分类id"`
 	IndexCode              string    `description:"指标编码"`
 	IndexName              string    `description:"指标名称"`
@@ -23,7 +25,8 @@ type BaseFromIcpiIndex struct {
 }
 
 type BaseFromIcpiData struct {
-	BaseFromIcpiDataId  int       `orm:"column(base_from_icpi_data_id);pk"`
+	BaseFromIcpiDataId int `gorm:"column:base_from_icpi_data_id;primaryKey"`
+	//BaseFromIcpiDataId  int       `orm:"column(base_from_icpi_data_id);pk"`
 	BaseFromIcpiIndexId int       `description:"指标id"`
 	IndexCode           string    `description:"指标编码"`
 	DataTime            string    `description:"日期"`
@@ -32,38 +35,48 @@ type BaseFromIcpiData struct {
 	ModifyTime          time.Time `description:"修改时间"`
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromIcpiData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
+}
+
 type BaseFromIcpiClassify struct {
-	BaseFromIcpiClassifyId int       `orm:"column(base_from_icpi_classify_id);pk"`
-	ClassifyName           string    `description:"分类名称"`
-	ClassifyNameEn         string    `description:"英文名称"`
-	ParentId               int       `description:"上级id"`
-	CreateTime             time.Time `description:"创建时间"`
-	ModifyTime             time.Time `description:"修改时间"`
+	BaseFromIcpiClassifyId int `gorm:"column:base_from_icpi_classify_id;primaryKey"`
+	//BaseFromIcpiClassifyId int       `orm:"column(base_from_icpi_classify_id);pk"`
+	ClassifyName   string    `description:"分类名称"`
+	ClassifyNameEn string    `description:"英文名称"`
+	ParentId       int       `description:"上级id"`
+	CreateTime     time.Time `description:"创建时间"`
+	ModifyTime     time.Time `description:"修改时间"`
 }
 
 func GetBaseFromIcpiDataByIndexCode(indexCode string) (items []*BaseFromIcpiData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_icpi_data WHERE index_code=? `
-	_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&items).Error
 	return
 }
 
 func GetBaseFromIcpiDataDataByCondition(condition string, pars []interface{}) (item []*BaseFromIcpiData, err error) {
 	sql := ` SELECT * FROM base_from_icpi_data WHERE 1=1 `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 // 新增广期所指标数据
 func AddEdbDataFromIcpi(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	dataAll, err := GetBaseFromIcpiDataByIndexCode(edbCode)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 
@@ -88,7 +101,8 @@ func AddEdbDataFromIcpi(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -101,7 +115,7 @@ func RefreshEdbDataFromIcpi(edbInfoId int, edbCode, startDate string) (err error
 	source := utils.DATA_SOURCE_ICPI
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -131,7 +145,7 @@ func RefreshEdbDataFromIcpi(edbInfoId int, edbCode, startDate string) (err error
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -206,7 +220,8 @@ func RefreshEdbDataFromIcpi(edbInfoId int, edbCode, startDate string) (err error
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}

+ 9 - 5
models/base_from_jiayue.go

@@ -1,9 +1,9 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"strings"
 	"time"
@@ -95,6 +95,7 @@ func AddEdbDataFromJiaYue(tableName, edbCode string, dataList []BridgeJiaYueInde
 	}
 
 	sql := fmt.Sprintf(`INSERT INTO %s(edb_info_id, edb_code, data_time, value, create_time, modify_time, data_timestamp) VALUES `, tableName)
+	sql = utils.ReplaceDriverKeywords("", sql)
 	for _, v := range dataList {
 		val := utils.SubFloatToString(v.Val, 20)
 		stamp := fmt.Sprint(v.DataTime.UnixMilli())
@@ -103,8 +104,9 @@ func AddEdbDataFromJiaYue(tableName, edbCode string, dataList []BridgeJiaYueInde
 	sql = strings.TrimRight(sql, ",")
 
 	// 新增入库
-	o := orm.NewOrm()
-	_, e := o.Raw(sql).Exec()
+	//o := orm.NewOrm()
+	//_, e := o.Raw(sql).Exec()
+	e := global.DEFAULT_DB.Exec(sql).Error
 	if e != nil {
 		err = fmt.Errorf("insert data err: %s", e.Error())
 	}
@@ -166,6 +168,7 @@ func RefreshEdbDataFromJiaYue(source, subSource, edbInfoId int, tableName, edbCo
 	strEdbInfoId := strconv.Itoa(edbInfoId)
 	addExists := make(map[string]bool)
 	sqlInsert := fmt.Sprintf(`INSERT INTO %s(edb_info_id, edb_code, data_time, value, create_time, modify_time, data_timestamp) VALUES `, tableName)
+	sqlInsert = utils.ReplaceDriverKeywords("", sqlInsert)
 	for _, v := range dataList {
 		val := utils.SubFloatToString(v.Val, 30)
 		stamp := fmt.Sprint(v.DataTime.UnixMilli())
@@ -217,9 +220,10 @@ func RefreshEdbDataFromJiaYue(source, subSource, edbInfoId int, tableName, edbCo
 	if !hasNew {
 		return
 	}
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sqlInsert = strings.TrimRight(sqlInsert, ",")
-	_, e = o.Raw(sqlInsert).Exec()
+	//_, e = o.Raw(sqlInsert).Exec()
+	e = global.DEFAULT_DB.Exec(sqlInsert).Error
 	if e != nil {
 		err = fmt.Errorf("insert edb data err: %s", e.Error())
 		return

+ 10 - 6
models/base_from_lt.go

@@ -1,9 +1,9 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"reflect"
 	"strconv"
 	"strings"
@@ -14,10 +14,11 @@ import (
 
 // 新增路透指标数据
 func AddEdbDataFromLt(edbCode string, ltDataList map[int64]interface{}) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if len(ltDataList) > 0 {
 		var isAdd bool
 		addSql := ` INSERT INTO edb_data_lt(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+		addSql = utils.ReplaceDriverKeywords("", addSql)
 		for timestampInt, edbValue := range ltDataList {
 			dataTime := time.Unix(timestampInt/1000, 0)
 
@@ -42,7 +43,8 @@ func AddEdbDataFromLt(edbCode string, ltDataList map[int64]interface{}) (err err
 		}
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
-			_, err = o.Raw(addSql).Exec()
+			//_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
 				fmt.Println("RefreshAllEdbDataByPb add Err", err.Error())
 				return
@@ -57,7 +59,7 @@ func RefreshEdbDataFromLt(edbInfoId int, edbCode, startDate string, ltDataList m
 	source := utils.DATA_SOURCE_LT
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	// 真实数据的最大日期  , 插入规则配置的日期
 	var realDataMaxDate, edbDataInsertConfigDate time.Time
@@ -65,7 +67,7 @@ func RefreshEdbDataFromLt(edbInfoId int, edbCode, startDate string, ltDataList m
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -95,6 +97,7 @@ func RefreshEdbDataFromLt(edbInfoId int, edbCode, startDate string, ltDataList m
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
 	addSql := ` INSERT INTO edb_data_lt(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 
 	for timestampInt, edbValue := range ltDataList {
@@ -148,7 +151,8 @@ func RefreshEdbDataFromLt(edbInfoId int, edbCode, startDate string, ltDataList m
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshAllEdbDataByLt add Err", err.Error())
 			return

+ 14 - 16
models/base_from_ly_classify.go

@@ -2,30 +2,28 @@
 package models
 
 import (
-	"errors"
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
+	"time"
 )
 
 type BaseFromLyClassify struct {
-	BaseFromLyClassifyId int    `orm:"column(base_from_ly_classify_id);pk"` // 分类ID
-	CreateTime           string `orm:"column(create_time)"`                 // 创建时间
-	ModifyTime           string `orm:"column(modify_time)"`                 // 修改时间
-	ClassifyName         string `orm:"column(classify_name)"`               // 分类名称
-	ParentId             int    `orm:"column(parent_id)"`                   // 上级id
-	Sort                 int    `orm:"column(sort)"`                        // 排序字段,越小越靠前
-	ClassifyNameEn       string `orm:"column(classify_name_en)"`            // 英文分类名称
-}
-
-func init() {
-	orm.RegisterModel(new(BaseFromLyClassify))
+	BaseFromLyClassifyId int       `gorm:"column:base_from_ly_classify_id;type:int(11) UNSIGNED;comment:分类ID;primaryKey;not null;"` // 分类ID
+	CreateTime           time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;not null;default:CURRENT_TIMESTAMP;"`       // 创建时间
+	ModifyTime           time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;not null;default:CURRENT_TIMESTAMP;"`       // 修改时间
+	ClassifyName         string    `gorm:"column:classify_name;type:varchar(255);comment:分类名称;not null;"`                           // 分类名称
+	ParentId             int32     `gorm:"column:parent_id;type:int(11) UNSIGNED;comment:上级id;default:0;"`                          // 上级id
+	Sort                 int32     `gorm:"column:sort;type:int(9) UNSIGNED;comment:排序字段,越小越靠前;default:0;"`                          // 排序字段,越小越靠前
+	ClassifyNameEn       string    `gorm:"column:classify_name_en;type:varchar(255);comment:英文分类名称;"`                               // 英文分类名称
 }
 
 // GetLyClassifyByName 根据分类名称查询
 func GetLyClassifyByName(classifyName string) (item *BaseFromLyClassify, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_ly_classify WHERE classify_name=?`
-	err = o.Raw(sql, classifyName).QueryRow(&item)
-	if errors.Is(err, orm.ErrNoRows) {
+	//err = o.Raw(sql, classifyName).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, classifyName).First(&item).Error
+	if utils.IsErrNoRow(err) {
 		return nil, nil
 	}
 	return

+ 34 - 24
models/base_from_ly_data.go

@@ -2,37 +2,44 @@
 package models
 
 import (
-	"errors"
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
+	"gorm.io/gorm"
+	"time"
 )
 
 type BaseFromLyData struct {
-	BaseFromLyDataId  int     `orm:"column(base_from_ly_data_id);pk"` // 数据ID
-	CreateTime        string  `orm:"column(create_time)"`             // 创建时间
-	ModifyTime        string  `orm:"column(modify_time)"`             // 修改时间
-	BaseFromLyIndexId int     `orm:"column(base_from_ly_index_id)"`   // 指标id
-	IndexCode         string  `orm:"column(index_code)"`              // 指标编码
-	DataTime          string  `orm:"column(data_time)"`               // 数据日期
-	Value             float64 `orm:"column(value)"`                   // 数据值
+	BaseFromLyDataId  int       `gorm:"column:base_from_ly_data_id;type:int(10) UNSIGNED;primaryKey;not null;"`
+	CreateTime        time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;not null;default:CURRENT_TIMESTAMP;"` // 创建时间
+	ModifyTime        time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;not null;default:CURRENT_TIMESTAMP;"` // 修改时间
+	BaseFromLyIndexId int       `gorm:"column:base_from_ly_index_id;type:int(10) UNSIGNED;comment:指标id;not null;"`         // 指标id
+	IndexCode         string    `gorm:"column:index_code;type:varchar(128);comment:指标编码;not null;"`                        // 指标编码
+	DataTime          string    `gorm:"column:data_time;type:date;comment:数据日期;default:NULL;"`                             // 数据日期
+	Value             float64   `gorm:"column:value;type:double;comment:数据值;default:NULL;"`                                // 数据值
 }
 
-func init() {
-	orm.RegisterModel(new(BaseFromLyData))
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromLyData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
 }
 
 // AddLyDataList 批量插入数据记录列表
 func AddLyDataList(items []BaseFromLyData) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(items), items)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(len(items), items)
+	err = global.DEFAULT_DB.CreateInBatches(items, len(items)).Error
 	return
 }
 
 // GetLyDataByIndexIdAndDataTime 根据指标id和数据日期查询数据
 func GetLyDataByIndexIdAndDataTime(indexId int, dataTime string) (items []BaseFromLyData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_ly_data WHERE base_from_ly_index_id=? AND data_time=?`
-	_, err = o.Raw(sql, indexId, dataTime).QueryRows(&items)
-	if errors.Is(err, orm.ErrNoRows) {
+	//_, err = o.Raw(sql, indexId, dataTime).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, indexId, dataTime).Find(&items).Error
+	if utils.IsErrNoRow(err) {
 		return nil, nil
 	}
 	return
@@ -40,10 +47,11 @@ func GetLyDataByIndexIdAndDataTime(indexId int, dataTime string) (items []BaseFr
 
 // GetLyDataByIndexIdAndDataTimeYM 根据指标id和数据日期的年月查询数据
 func GetLyDataByIndexIdAndDataTimeYM(indexId int, dataTime string) (items []BaseFromLyData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_ly_data WHERE base_from_ly_index_id=? AND data_time like ?`
-	_, err = o.Raw(sql, indexId, dataTime+"%").QueryRows(&items)
-	if errors.Is(err, orm.ErrNoRows) {
+	//_, err = o.Raw(sql, indexId, dataTime+"%").QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, indexId, dataTime+"%").Find(&items).Error
+	if utils.IsErrNoRow(err) {
 		return nil, nil
 	}
 	return
@@ -51,21 +59,23 @@ func GetLyDataByIndexIdAndDataTimeYM(indexId int, dataTime string) (items []Base
 
 // UpdateLyDataById 根据主键id更新数据
 func UpdateLyDataById(dataId int, value float64) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `UPDATE base_from_ly_data SET value=? WHERE base_from_ly_data_id=?`
-	_, err = o.Raw(sql, value, dataId).Exec()
+	//_, err = o.Raw(sql, value, dataId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, value, dataId).Error
 	return
 }
 
 // GetBaseFromLyDataByIndexCode 根据指标编码查询
 func GetBaseFromLyDataByIndexCode(condition string, pars []interface{}) (items []BaseFromLyData, err error) {
 	sql := `SELECT * FROM base_from_ly_data WHERE 1=1 `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars...).QueryRows(&items)
-	if errors.Is(err, orm.ErrNoRows) {
+	//_, err = o.Raw(sql, pars...).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+	if utils.IsErrNoRow(err) {
 		return nil, nil
 	}
 	return

+ 26 - 25
models/base_from_ly_index.go

@@ -3,53 +3,54 @@
 package models
 
 import (
-	"errors"
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
 	"time"
 )
 
 type BaseFromLyIndex struct {
-	BaseFromLyIndexId    int    `orm:"column(base_from_ly_index_id);pk"` // 指标ID
-	CreateTime           string `orm:"column(create_time)"`              // 创建时间
-	ModifyTime           string `orm:"column(modify_time)"`              // 修改时间
-	BaseFromLyClassifyId int    `orm:"column(base_from_ly_classify_id)"` // 原始数据指标分类id
-	IndexCode            string `orm:"column(index_code)"`               // 指标编码
-	IndexName            string `orm:"column(index_name)"`               // 指标名称
-	Frequency            string `orm:"column(frequency)"`                // 频度
-	Unit                 string `orm:"column(unit)"`                     // 单位
-	EdbExist             int    `orm:"column(edb_exist)"`                // 指标库是否已添加:0-否;1-是
-}
-
-// 在 init 函数中注册模型
-func init() {
-	orm.RegisterModel(new(BaseFromLyIndex))
+	BaseFromLyIndexId    int       `gorm:"column:base_from_ly_index_id;type:int(11);primaryKey;not null;"`
+	CreateTime           time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;not null;default:CURRENT_TIMESTAMP;"`            // 创建时间
+	ModifyTime           time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;not null;default:CURRENT_TIMESTAMP;"`            // 修改时间
+	BaseFromLyClassifyId int       `gorm:"column:base_from_ly_classify_id;type:int(11) UNSIGNED;comment:原始数据指标分类id;not null;default:0;"` // 原始数据指标分类id
+	IndexCode            string    `gorm:"column:index_code;type:varchar(255);comment:指标编码;"`                                            // 指标编码
+	IndexName            string    `gorm:"column:index_name;type:varchar(255);comment:指标名称;"`                                            // 指标名称
+	Frequency            string    `gorm:"column:frequency;type:varchar(20);comment:频度;"`                                                // 频度
+	Unit                 string    `gorm:"column:unit;type:varchar(30);comment:单位;"`                                                     // 单位
+	EdbExist             int       `gorm:"column:edb_exist;type:tinyint(4) UNSIGNED;comment:指标库是否已添加:0-否;1-是;not null;default:0;"`       // 指标库是否已添加:0-否;1-是
+	StartDate            time.Time `gorm:"column:start_date;type:date;comment:数据开始日期;default:NULL;"`                                     // 数据开始日期
+	EndDate              time.Time `gorm:"column:end_date;type:date;comment:数据结束日期;default:NULL;"`                                       // 数据结束日期
+	LatestValue          float64   `gorm:"column:latest_value;type:double;comment:数据最新值;default:NULL;"`                                  // 数据最新值
 }
 
 // AddLyIndexList 批量插入指标记录列表
 func AddLyIndexList(items []*BaseFromLyIndex) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(items), items)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(len(items), items)
+	err = global.DEFAULT_DB.CreateInBatches(items, len(items)).Error
 	return
 }
 
 // AddLyIndex 添加指标
 func AddLyIndex(item *BaseFromLyIndex) (int64, error) {
-	item.CreateTime = time.Now().Format("2006-01-02 15:04:05")
-	o := orm.NewOrm()
-	id, err := o.Insert(item)
+	item.CreateTime = time.Now()
+	//o := orm.NewOrm()
+	//id, err := o.Insert(item)
+	err := global.DEFAULT_DB.Create(item).Error
 	if err != nil {
 		return 0, err
 	}
+	id := int64(item.BaseFromLyIndexId)
 	return id, nil
 }
 
 // GetLyIndexByCode 查询指标编码是否存在
 func GetLyIndexByCode(indexCode string) (item *BaseFromLyIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_ly_index WHERE index_code=?`
-	err = o.Raw(sql, indexCode).QueryRow(&item)
-
-	if errors.Is(err, orm.ErrNoRows) {
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
+	if utils.IsErrNoRow(err) {
 		return nil, nil
 	}
 

+ 19 - 21
models/base_from_ly_index_record.go

@@ -3,42 +3,41 @@
 package models
 
 import (
-	"errors"
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
 )
 
 type BaseFromLyIndexRecord struct {
-	BaseFromLyIndexRecordId int    `orm:"column(base_from_ly_index_record_id);pk"` // 指标记录ID
-	CreateTime              string `orm:"column(create_time)"`                     // 创建时间
-	ModifyTime              string `orm:"column(modify_time)"`                     // 修改时间
-	Product                 string `orm:"column(product)"`                         // 产品
-	Category                string `orm:"column(category)"`                        // 分类
-	Url                     string `orm:"column(url)"`                             // 指标页面地址
-	DataTime                string `orm:"column(data_time)"`                       // 数据日期
-}
-
-// 在 init 函数中注册模型
-func init() {
-	orm.RegisterModel(new(BaseFromLyIndexRecord))
+	BaseFromLyIndexRecordId int `gorm:"column:base_from_ly_index_record_id;primaryKey"` // 指标记录ID
+	//BaseFromLyIndexRecordId int    `orm:"column(base_from_ly_index_record_id);pk"` // 指标记录ID
+	CreateTime string `gorm:"column:create_time"` // 创建时间
+	ModifyTime string `gorm:"column:modify_time"` // 修改时间
+	Product    string `gorm:"column:product"`     // 产品
+	Category   string `gorm:"column:category"`    // 分类
+	Url        string `gorm:"column:url"`         // 指标页面地址
+	DataTime   string `gorm:"column:data_time"`   // 数据日期
 }
 
 // AddLyIndexRecord 添加指标记录
 func AddLyIndexRecord(item *BaseFromLyIndexRecord) (int64, error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(item)
+	//o := orm.NewOrm()
+	//id, err := o.Insert(item)
+	err := global.DEFAULT_DB.Create(item).Error
 	if err != nil {
 		return 0, err
 	}
+	id := int64(item.BaseFromLyIndexRecordId)
 	return id, nil
 }
 
 // GetLyIndexRecordByUrl 查询指标记录是否存在
 func GetLyIndexRecordByUrl(url string) (item *BaseFromLyIndexRecord, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_ly_index_record WHERE url=?`
-	err = o.Raw(sql, url).QueryRow(&item)
+	//err = o.Raw(sql, url).QueryRow(&item)
 
-	if errors.Is(err, orm.ErrNoRows) {
+	err = global.DEFAULT_DB.Raw(sql, url).First(&item).Error
+	if utils.IsErrNoRow(err) {
 		return nil, nil
 	}
 
@@ -46,10 +45,9 @@ func GetLyIndexRecordByUrl(url string) (item *BaseFromLyIndexRecord, err error)
 }
 
 func GetLyIndexRecordByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
 	sql := `SELECT count(1) FROM base_from_ly_index_record WHERE 1 = 1 `
 	sql += condition
-	err = o.Raw(sql, pars...).QueryRow(&count)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&count).Error
 	if err != nil {
 		return 0, err
 	}

+ 23 - 10
models/base_from_lz.go

@@ -1,9 +1,10 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -12,26 +13,34 @@ import (
 //隆众
 
 type lzSurveyData struct {
-	DataTime   string `orm:"column(data_time)" description:"日期"`
-	InputValue string `orm:"column(input_value)" description:"值"`
+	DataTime   string `gorm:"column:data_time" description:"日期"`
+	InputValue string `gorm:"column:input_value" description:"值"`
+}
+
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *lzSurveyData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
 }
 
 func GetLzSurveyDataFromLz(condition string, pars []interface{}) (item []*lzSurveyData, err error) {
 	sql := ` SELECT  a.* FROM longzhong_survey_data AS a
 				INNER JOIN longzhong_survey_product AS b ON a.survey_product_id=b.survey_product_id
 				WHERE 1=1 `
-	o := orm.NewOrmUsingDB("edb")
+	//o := orm.NewOrmUsingDB("edb")
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` GROUP BY data_time ORDER BY a.data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DbMap[utils.DbNameManualIndex].Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 // 新增钢联指标数据
 func AddEdbDataFromLz(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var condition string
 	var pars []interface{}
@@ -50,6 +59,7 @@ func AddEdbDataFromLz(edbCode string) (err error) {
 	if dataLen > 0 {
 		var isAdd bool
 		addSql := ` INSERT INTO edb_data_lz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+		addSql = utils.ReplaceDriverKeywords("", addSql)
 		for i := 0; i < dataLen; i++ {
 			item := lzDataList[i]
 			eDate := item.DataTime
@@ -66,7 +76,8 @@ func AddEdbDataFromLz(edbCode string) (err error) {
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
 			utils.FileLog.Info("addSql:" + addSql)
-			_, err = o.Raw(addSql).Exec()
+			//_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
 				return err
 			}
@@ -80,7 +91,7 @@ func RefreshEdbDataFromLz(edbInfoId int, edbCode, startDate string) (err error)
 	source := utils.DATA_SOURCE_LZ
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	// 真实数据的最大日期  , 插入规则配置的日期
 	var realDataMaxDate, edbDataInsertConfigDate time.Time
@@ -88,7 +99,7 @@ func RefreshEdbDataFromLz(edbInfoId int, edbCode, startDate string) (err error)
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -132,6 +143,7 @@ func RefreshEdbDataFromLz(edbInfoId int, edbCode, startDate string) (err error)
 		existMap[v.DataTime] = v
 	}
 	addSql := ` INSERT INTO edb_data_lz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	for _, v := range lzDataList {
 		item := v
@@ -174,7 +186,8 @@ func RefreshEdbDataFromLz(edbInfoId int, edbCode, startDate string) (err error)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}

+ 30 - 16
models/base_from_manual.go

@@ -1,12 +1,13 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/models/mgo"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
 	"go.mongodb.org/mongo-driver/bson"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -15,10 +16,18 @@ import (
 //弘则手工数据
 
 type ManualEdbdata struct {
-	TradeCode  string    `orm:"column(TRADE_CODE);pk" description:"指标编码"`
-	Dt         string    `orm:"column(DT)" description:"日期"`
-	Close      string    `orm:"column(CLOSE)" description:"值"`
-	ModifyTime time.Time `orm:"column(modify_time)" description:"修改时间"`
+	TradeCode string `gorm:"column:TRADE_CODE;autoIncrement:false;primaryKey" description:"指标编码"`
+	//TradeCode  string    `orm:"column(TRADE_CODE);pk" description:"指标编码"`
+	Dt         string    `gorm:"column:DT" description:"日期"`
+	Close      string    `gorm:"column:CLOSE" description:"值"`
+	ModifyTime time.Time `gorm:"column:modify_time" description:"修改时间"`
+}
+
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *ManualEdbdata) AfterFind(db *gorm.DB) (err error) {
+	m.Dt = utils.GormDateStrToDateStr(m.Dt)
+
+	return
 }
 
 func GetEdbdataManualByCondition(condition string, pars []interface{}) (item []*ManualEdbdata, err error) {
@@ -27,14 +36,15 @@ func GetEdbdataManualByCondition(condition string, pars []interface{}) (item []*
 		sql += condition
 	}
 	sql += ` ORDER BY DT DESC `
-	o := orm.NewOrmUsingDB("edb")
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//o := orm.NewOrmUsingDB("edb")
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DbMap[utils.DbNameManualIndex].Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 // AddEdbDataFromManual 新增弘则手工指标数据
 func AddEdbDataFromManual(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var condition string
 	var pars []interface{}
@@ -53,6 +63,7 @@ func AddEdbDataFromManual(edbCode string) (err error) {
 	if dataLen > 0 {
 		var isAdd bool
 		addSql := ` INSERT INTO edb_data_manual(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+		addSql = utils.ReplaceDriverKeywords("", addSql)
 		for i := 0; i < dataLen; i++ {
 			item := manualDataList[i]
 			eDate := item.Dt
@@ -74,7 +85,8 @@ func AddEdbDataFromManual(edbCode string) (err error) {
 		}
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
-			_, err = o.Raw(addSql).Exec()
+			//_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
 				return
 			}
@@ -88,7 +100,7 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 	source := utils.DATA_SOURCE_MANUAL
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -122,7 +134,7 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 	edbDataInsertConfigDateStr := ``
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -151,6 +163,7 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 	}
 
 	addSql := ` INSERT INTO edb_data_manual (edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	manualMap := make(map[string]*ManualEdbdata)
 	//fmt.Println("manualDataList:", len(manualDataList))
@@ -208,7 +221,8 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 	}
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshAllEdbDataByManual add Err", err.Error())
 			return
@@ -254,9 +268,8 @@ func HandleConfigInsertEdbData(realDataMaxDate time.Time, edbDataInsertConfig *E
 			DeleteEdbDataById(source, subSource, item.EdbDataId)
 		}
 	} else {
-		o := orm.NewOrm()
 		edbDataInsertConfig.RealDate = realDataMaxDate
-		_, err = o.Update(edbDataInsertConfig, "RealDate")
+		err = global.DEFAULT_DB.Model(edbDataInsertConfig).Select([]string{"RealDate"}).Updates(edbDataInsertConfig).Error
 	}
 
 	return
@@ -298,9 +311,10 @@ func HandleConfigInsertEdbDataByMongo(realDataMaxDate time.Time, edbDataInsertCo
 			mogDataObj.RemoveManyByColl(coll, bson.M{"_id": item.ID})
 		}
 	} else {
-		o := orm.NewOrm()
+		//o := orm.NewOrm()
 		edbDataInsertConfig.RealDate = realDataMaxDate
-		_, err = o.Update(edbDataInsertConfig, "RealDate")
+		//_, err = o.Update(edbDataInsertConfig, "RealDate")
+		err = global.DEFAULT_DB.Model(&edbDataInsertConfig).Select("RealDate").Updates(&edbDataInsertConfig).Error
 	}
 
 	return

+ 88 - 56
models/base_from_mtjh.go

@@ -1,100 +1,125 @@
 package models
 
 import (
+	sql2 "database/sql"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
 )
 
 type BaseFromMtjhMapping struct {
-	BaseFromMtjhMappingId int       `orm:"column(base_from_Mtjh_mapping_id);pk"`
-	IndexName             string    `description:"持买单量指标名称"`
-	IndexCode             string    `description:"持买单量指标编码"`
-	CreateTime            time.Time `description:"时间"`
-	Area                  string    `description:"区域"`
-	Port                  string    `description:"港口或码头"`
-	Variety               string    `description:"品种"`
-	Unit                  string    `description:"单位"`
-	Frequency             string    `description:"频率"`
+	BaseFromMtjhMappingId int `gorm:"column:base_from_Mtjh_mapping_id;primaryKey"`
+	//BaseFromMtjhMappingId int       `orm:"column(base_from_Mtjh_mapping_id);pk"`
+	IndexName  string    `description:"持买单量指标名称"`
+	IndexCode  string    `description:"持买单量指标编码"`
+	CreateTime time.Time `description:"时间"`
+	Area       string    `description:"区域"`
+	Port       string    `description:"港口或码头"`
+	Variety    string    `description:"品种"`
+	Unit       string    `description:"单位"`
+	Frequency  string    `description:"频率"`
 }
 
 type BaseFromMtjhIndex struct {
-	BaseFromMtjhIndexId int       `orm:"column(base_from_mtjh_index_id);pk"`
-	IndexName           string    `description:"持买单量指标名称"`
-	IndexCode           string    `description:"持买单量指标编码"`
-	DealValue           string    `description:"成交量"`
-	DataTime            string    `description:"数据日期"`
-	Area                string    `description:"区域"`
-	Port                string    `description:"港口或码头"`
-	Variety             string    `description:"品种"`
-	Unit                string    `description:"单位"`
-	Frequency           string    `description:"频率"`
-	CreateTime          time.Time `description:"插入时间"`
-	ModifyTime          time.Time `description:"修改时间"`
+	BaseFromMtjhIndexId int `gorm:"column:base_from_mtjh_index_id;primaryKey"`
+	//BaseFromMtjhIndexId int       `orm:"column(base_from_mtjh_index_id);pk"`
+	IndexName  string    `description:"持买单量指标名称"`
+	IndexCode  string    `description:"持买单量指标编码"`
+	DealValue  string    `description:"成交量"`
+	DataTime   string    `description:"数据日期"`
+	Area       string    `description:"区域"`
+	Port       string    `description:"港口或码头"`
+	Variety    string    `description:"品种"`
+	Unit       string    `description:"单位"`
+	Frequency  string    `description:"频率"`
+	CreateTime time.Time `description:"插入时间"`
+	ModifyTime time.Time `description:"修改时间"`
+}
+
+func (e *BaseFromMtjhIndex) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
 }
 
 // 查询指标
 func GetBaseFromMtjhMapping() (items []*BaseFromMtjhMapping, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mtjh_mapping`
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }
 
 // 查询指标
 func GetBaseFromMtjhIndex() (items []*BaseFromMtjhIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mtjh_index`
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }
 
 // 添加数据
 func AddBaseFromMtjhIndex(item *BaseFromMtjhIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromMtjhIndexId)
 	return
 }
 
-func AddBaseFromMtjhIndexMuti(items []*BaseFromMtjhIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.InsertMulti(500, items)
+func AddBaseFromMtjhIndexMuti(items []*BaseFromMtjhIndex) (err error) {
+	err = global.DEFAULT_DB.CreateInBatches(items, utils.MultiAddNum).Error
+
 	return
 }
 
 // 添加指标
 func AddBaseFromMtjhMapping(item *BaseFromMtjhMapping) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromMtjhMappingId)
 	return
 }
 
 func AddBaseFromMtjhMappingMuti(items []*BaseFromMtjhMapping) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.InsertMulti(500, items)
+	//o := orm.NewOrm()
+	//lastId, err = o.InsertMulti(500, items)
+	err = global.DEFAULT_DB.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }
 
 func UpdateBaseFromMtjhIndex(item *BaseFromMtjhIndex) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `UPDATE base_from_mtjh_index SET deal_value=?  WHERE index_name=?  AND  data_time = ?`
-	_, err = o.Raw(sql, item.DealValue, item.IndexName, item.DataTime).Exec()
+	//_, err = o.Raw(sql, item.DealValue, item.IndexName, item.DataTime).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.DealValue, item.IndexName, item.DataTime).Error
 	return
 }
 
 func AddEdbDataFromMtjh(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	coalBaseDataAll, err := GetMtjhindexByCode(edbCode)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_mtjh(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	existMap := make(map[string]string)
 	for _, sv := range coalBaseDataAll {
 		eDate := sv.DataTime
@@ -126,7 +151,8 @@ func AddEdbDataFromMtjh(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -137,7 +163,7 @@ func AddEdbDataFromMtjh(edbCode string) (err error) {
 func RefreshEdbDataFromMtjh(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_MTJH
 	subSource := utils.DATA_SUB_SOURCE_EDB
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -168,7 +194,7 @@ func RefreshEdbDataFromMtjh(edbInfoId int, edbCode, startDate string) (err error
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -197,6 +223,7 @@ func RefreshEdbDataFromMtjh(edbInfoId int, edbCode, startDate string) (err error
 	}
 
 	addSql := ` INSERT INTO edb_data_mtjh(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	for _, v := range glDataList {
 		var value string
@@ -254,7 +281,8 @@ func RefreshEdbDataFromMtjh(edbInfoId int, edbCode, startDate string) (err error
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -265,20 +293,22 @@ func RefreshEdbDataFromMtjh(edbInfoId int, edbCode, startDate string) (err error
 
 // GetMtjhindexByCode
 func GetMtjhindexByCode(indexCode string) (items []*BaseFromMtjhIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := "SELECT * FROM base_from_mtjh_index WHERE index_code=? "
-	_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&items).Error
 	return
 }
 
 func GetMtjhDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromMtjhIndex, err error) {
 	sql := ` SELECT * FROM base_from_mtjh_index WHERE 1=1 `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
@@ -298,28 +328,30 @@ func (m *BaseFromMtjhMapping) GetMaxAndMinDateByIndexCode(indexCode string) (ite
 
 	tableName := fmt.Sprintf("base_from_coalmine_%s", suffix)
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := fmt.Sprintf(` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(deal_value) AS min_value,MAX(deal_value) AS max_value FROM %s WHERE index_code=? `, tableName)
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	if err != nil {
 		return
 	}
 
 	// 获取最新值
-	var latest_value float64
 	sql = fmt.Sprintf(` SELECT value AS deal_value FROM %s WHERE index_code=? ORDER BY data_time DESC LIMIT 1 `, tableName)
-	err = o.Raw(sql, indexCode).QueryRow(&latest_value)
-	if err != nil {
-		return
+	//err = o.Raw(sql, indexCode).QueryRow(&latest_value)
+	var latestValueNull sql2.NullFloat64
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Scan(&latestValueNull).Error
+	if err == nil && latestValueNull.Valid {
+		item.LatestValue = latestValueNull.Float64
 	}
-	item.LatestValue = latest_value
 
 	return
 }
 
 func (m *BaseFromMtjhMapping) ModifyIndexMaxAndMinDate(indexCode string, item *EdbInfoMaxAndMinInfo) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_mtjh_mapping SET start_date=?,end_date=?,latest_value=?,modify_time=NOW() WHERE index_code=? `
-	_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	//_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Error
 	return
 }

+ 23 - 11
models/base_from_mysteel.go

@@ -1,26 +1,33 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
 	"strconv"
 	"strings"
 	"time"
 
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 )
 
 //钢联
-
 type GlData struct {
-	InputValue float64 `orm:"column(DATA_VALUE)" description:"日期"`
-	DataTime   string  `orm:"column(DATA_DATE)" description:"值"`
+	InputValue float64 `gorm:"column:DATA_VALUE" description:"日期"`
+	DataTime   string  `gorm:"column:DATA_DATE" description:"值"`
+}
+
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *GlData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
 }
 
 func GetGlDataByCondition(condition string, pars []interface{}) (item []*GlData, err error) {
 	condition += " AND IS_DELETE=0 "
 	sql1 := ` SELECT * FROM mb_index_main_data WHERE 1=1 AND DATA_VALUE is not null `
-	o := orm.NewOrmUsingDB("gl")
+	//o := orm.NewOrmUsingDB("gl")
 	if condition != "" {
 		sql1 += condition
 	}
@@ -38,13 +45,14 @@ func GetGlDataByCondition(condition string, pars []interface{}) (item []*GlData,
 	//		) tmp group by DATA_DATE
 	//
 	//		order by PUBLISH_TIME DESC
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DbMap[utils.DbNameGL].Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 // 新增钢联指标数据
 func AddEdbDataFromMysteel(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var condition string
 	var pars []interface{}
@@ -65,6 +73,7 @@ func AddEdbDataFromMysteel(edbCode string) (err error) {
 	if dataLen > 0 {
 		var isAdd bool
 		addSql := ` INSERT INTO edb_data_gl(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+		addSql = utils.ReplaceDriverKeywords("", addSql)
 		for i := 0; i < dataLen; i++ {
 			item := glDataList[i]
 			eDate := item.DataTime
@@ -86,7 +95,8 @@ func AddEdbDataFromMysteel(edbCode string) (err error) {
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
 			utils.FileLog.Info("addSql:" + addSql)
-			_, err = o.Raw(addSql).Exec()
+			//_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
 				return err
 			}
@@ -100,7 +110,7 @@ func RefreshEdbDataFromMysteel(edbInfoId int, edbCode, startDate string) (err er
 	source := utils.DATA_SOURCE_GL
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -130,7 +140,7 @@ func RefreshEdbDataFromMysteel(edbInfoId int, edbCode, startDate string) (err er
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -158,6 +168,7 @@ func RefreshEdbDataFromMysteel(edbInfoId int, edbCode, startDate string) (err er
 	}
 
 	addSql := ` INSERT INTO edb_data_gl(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	addMap := make(map[string]string)
 	for _, v := range glDataList {
@@ -206,7 +217,8 @@ func RefreshEdbDataFromMysteel(edbInfoId int, edbCode, startDate string) (err er
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}

+ 129 - 82
models/base_from_mysteel_chemical.go

@@ -1,36 +1,45 @@
 package models
 
 import (
+	sql2 "database/sql"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
-
-	"github.com/beego/beego/v2/client/orm"
 )
 
 //钢联
 
 type MysteelChemicalData struct {
-	InputValue float64 `orm:"column(value)" description:"值"`
-	DataTime   string  `orm:"column(data_time)" description:"日期"`
+	InputValue float64 `gorm:"column:value" description:"值"`
+	DataTime   string  `gorm:"column:data_time" description:"日期"`
+}
+
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *MysteelChemicalData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
 }
 
 func GetMysteelChemicalDataByCondition(condition string, pars []interface{}) (item []*MysteelChemicalData, err error) {
 	sql1 := ` SELECT * FROM base_from_mysteel_chemical_data WHERE 1=1  `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql1 += condition
 	}
 	sql := `select * from (` + sql1 + ` having 1 order by modify_time DESC ) tmp GROUP BY data_time ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 // AddEdbDataFromMysteelChemical 新增钢联指标数据
 func AddEdbDataFromMysteelChemical(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var condition string
 	var pars []interface{}
@@ -51,6 +60,7 @@ func AddEdbDataFromMysteelChemical(edbCode string) (err error) {
 	if dataLen > 0 {
 		var isAdd bool
 		addSql := ` INSERT INTO edb_data_mysteel_chemical (edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+		addSql = utils.ReplaceDriverKeywords("", addSql)
 		for i := 0; i < dataLen; i++ {
 			item := mysteelChemicalDataList[i]
 			eDate := item.DataTime
@@ -72,7 +82,8 @@ func AddEdbDataFromMysteelChemical(edbCode string) (err error) {
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
 			utils.FileLog.Info("addSql:" + addSql)
-			_, err = o.Raw(addSql).Exec()
+			//_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
 				return err
 			}
@@ -86,7 +97,7 @@ func RefreshEdbDataFromMysteelChemical(edbInfoId int, edbCode, startDate string)
 	source := utils.DATA_SOURCE_MYSTEEL_CHEMICAL
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -116,7 +127,7 @@ func RefreshEdbDataFromMysteelChemical(edbInfoId int, edbCode, startDate string)
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -144,6 +155,7 @@ func RefreshEdbDataFromMysteelChemical(edbInfoId int, edbCode, startDate string)
 	}
 
 	addSql := ` INSERT INTO edb_data_mysteel_chemical(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	addMap := make(map[string]string)
 	for _, v := range mysteelChemicalDataList {
@@ -192,7 +204,8 @@ func RefreshEdbDataFromMysteelChemical(edbInfoId int, edbCode, startDate string)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -202,7 +215,8 @@ func RefreshEdbDataFromMysteelChemical(edbInfoId int, edbCode, startDate string)
 
 // 上海钢联指标数据
 type BaseFromMysteelChemicalIndex struct {
-	BaseFromMysteelChemicalIndexId    int64     `orm:"column(base_from_mysteel_chemical_index_id);pk"`
+	BaseFromMysteelChemicalIndexId int64 `gorm:"column:base_from_mysteel_chemical_index_id;primaryKey"`
+	//BaseFromMysteelChemicalIndexId    int64     `orm:"column(base_from_mysteel_chemical_index_id);pk"`
 	BaseFromMysteelChemicalClassifyId int       `description:"分类id"`
 	IndexCode                         string    `description:"指标编码"`
 	IndexName                         string    `description:"指标名称"`
@@ -229,6 +243,13 @@ type BaseFromMysteelChemicalIndex struct {
 	IsSupplierStop                    int       `description:"是否供应商停更:1:停更,0:未停更"`
 }
 
+func (e *BaseFromMysteelChemicalIndex) AfterFind(db *gorm.DB) (err error) {
+	e.UpdateTime = utils.GormDateStrToDateStr(e.UpdateTime)
+	e.UpdateTime2 = utils.GormDateStrToDateStr(e.UpdateTime2)
+
+	return
+}
+
 type MysteelChemicalAPiCheck struct {
 	IsEnable bool
 	ErrMsg   string
@@ -236,16 +257,18 @@ type MysteelChemicalAPiCheck struct {
 
 // GetIndexRefreshAllByMergeFile 根据合并文件去分组查询需要刷新的文件
 func (m *BaseFromMysteelChemicalIndex) GetIndexRefreshAllByMergeFile() (items []*BaseFromMysteelChemicalIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mysteel_chemical_index WHERE merge_file_path <>'' AND base_from_mysteel_chemical_classify_id NOT IN(54,55,56,57) GROUP BY merge_file_path`
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }
 
 func (m *BaseFromMysteelChemicalIndex) GetIndexItem(indexCode string) (item *BaseFromMysteelChemicalIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mysteel_chemical_index WHERE index_code = ? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	return
 }
 
@@ -253,43 +276,47 @@ func (m *BaseFromMysteelChemicalIndex) GetBatchIndexItem(indexCodes []string) (i
 	if len(indexCodes) <= 0 {
 		return
 	}
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mysteel_chemical_index WHERE index_code IN (%s) `
 	holder := make([]string, 0, len(indexCodes))
 	for range indexCodes {
 		holder = append(holder, "?")
 	}
 	sql = fmt.Sprintf(sql, strings.Join(holder, ","))
-	_, err = o.Raw(sql, indexCodes).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, indexCodes).Find(&items).Error
+	//_, err = o.Raw(sql, indexCodes).QueryRows(&items)
 	return
 }
 
 func (m *BaseFromMysteelChemicalIndex) GetIndexCreate(terminalCode string) (items []*BaseFromMysteelChemicalIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mysteel_chemical_index WHERE index_name = '' AND terminal_code = ? `
-	_, err = o.Raw(sql, terminalCode).QueryRows(&items)
+	//_, err = o.Raw(sql, terminalCode).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, terminalCode).Find(&items).Error
 	return
 }
 
 // Add 新增
 func (m *BaseFromMysteelChemicalIndex) Add() (err error) {
-	o := orm.NewOrm()
-	_, err = o.Insert(m)
+	//o := orm.NewOrm()
+	//_, err = o.Insert(m)
+	err = global.DEFAULT_DB.Create(&m).Error
 	return
 }
 
 func (m *BaseFromMysteelChemicalIndex) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(m, cols...)
+	err = global.DEFAULT_DB.Model(&m).Select(cols).Updates(&m).Error
 	return
 }
 
 // GetNoMergeIndexByFrequencyCount 获取未合并的指标总数量
 func (m *BaseFromMysteelChemicalIndex) GetNoMergeIndexByFrequencyCount(frequency string) (total int64, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT count(1) AS total FROM base_from_mysteel_chemical_index WHERE frequency = ? AND merge_file_path = '' AND index_name NOT LIKE "%停%"  `
-	err = o.Raw(sql, frequency).QueryRow(&total)
-
+	//err = o.Raw(sql, frequency).QueryRow(&total)
+	err = global.DEFAULT_DB.Raw(sql, frequency).Scan(&total).Error
 	return
 }
 
@@ -302,10 +329,10 @@ type GetMaxFileIndexReq struct {
 
 // GetMaxFileIndex 获取最大文件的
 func (m *BaseFromMysteelChemicalIndex) GetMaxFileIndex(frequency string) (item *BaseFromMysteelChemicalIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mysteel_chemical_index WHERE frequency=? AND index_name NOT LIKE "%停%" ORDER BY file_index DESC `
-	err = o.Raw(sql, frequency).QueryRow(&item)
-
+	///err = o.Raw(sql, frequency).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, frequency).First(&item).Error
 	return
 }
 
@@ -317,9 +344,10 @@ type GetNoMergeIndexByFrequencyPageReq struct {
 
 // GetNoMergeIndexByFrequencyPage 获取未合并的指标列表
 func (m *BaseFromMysteelChemicalIndex) GetNoMergeIndexByFrequencyPage(frequency string, limit int) (items []*BaseFromMysteelChemicalIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mysteel_chemical_index WHERE frequency=? AND merge_file_path = '' limit ? `
-	_, err = o.Raw(sql, frequency, limit).QueryRows(&items)
+	//_, err = o.Raw(sql, frequency, limit).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, frequency, limit).Find(&items).Error
 	return
 }
 
@@ -328,25 +356,28 @@ type GetIndexCountByMergeFilePathReq struct {
 }
 
 func (m *BaseFromMysteelChemicalIndex) GetIndexCountByMergeFilePath(mergeFilePath string) (total int64, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT count(1) AS total FROM base_from_mysteel_chemical_index WHERE merge_file_path = ?`
-	err = o.Raw(sql, mergeFilePath).QueryRow(&total)
+	//err = o.Raw(sql, mergeFilePath).QueryRow(&total)
+	err = global.DEFAULT_DB.Raw(sql, mergeFilePath).Scan(&total).Error
 	return
 }
 
 // GetIndexRefreshMethanolByMergeFile 根据合并文件去分组查询需要刷新的甲醇文件
 func (m *BaseFromMysteelChemicalIndex) GetIndexRefreshMethanolByMergeFile() (items []*BaseFromMysteelChemicalIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mysteel_chemical_index WHERE merge_file_path <> '' AND base_from_mysteel_chemical_classify_id IN(54,55,56,57) GROUP BY merge_file_path`
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }
 
 // GetIndexRefreshMethanolByTimely 获取需要及时刷新的文件
 func (m *BaseFromMysteelChemicalIndex) GetIndexRefreshMethanolByTimely() (items []*BaseFromMysteelChemicalIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mysteel_chemical_index WHERE merge_file_path <> '' AND is_refresh = 1 GROUP BY merge_file_path`
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }
 
@@ -356,9 +387,10 @@ type GetIndexByFrequencyReq struct {
 
 // GetIndexByFrequency 根据频率获取指标
 func (m *BaseFromMysteelChemicalIndex) GetIndexByFrequency(frequency string) (items []*BaseFromMysteelChemicalIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mysteel_chemical_index WHERE frequency = ? AND merge_file_path = '' `
-	_, err = o.Raw(sql, frequency).QueryRows(&items)
+	//_, err = o.Raw(sql, frequency).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, frequency).Find(&items).Error
 	return
 }
 
@@ -370,9 +402,10 @@ type GetIndexRefreshWeekReq struct {
 
 func (m *BaseFromMysteelChemicalIndex) GetIndexRefreshWeek(nowWeekZn, startTime, endTime string) (items []*BaseFromMysteelChemicalIndex, err error) {
 	where := `update_week = ? AND ((update_time >= ? AND update_time <= ?) OR (update_time2 >= ? AND update_time2 <= ?)) `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := fmt.Sprintf(`SELECT * FROM base_from_mysteel_chemical_index WHERE %s `, where)
-	_, err = o.Raw(sql, nowWeekZn, startTime, endTime, startTime, endTime).QueryRows(&items)
+	//_, err = o.Raw(sql, nowWeekZn, startTime, endTime, startTime, endTime).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, nowWeekZn, startTime, endTime, startTime, endTime).Find(&items).Error
 	return
 }
 
@@ -389,8 +422,9 @@ func (m *BaseFromMysteelChemicalIndex) UpdateIndex(item *BaseFromMysteelChemical
 	if len(updateCols) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	_, err = o.Update(item, updateCols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(item, updateCols...)
+	err = global.DEFAULT_DB.Model(&item).Select(updateCols).Updates(&item).Error
 	return
 }
 
@@ -399,7 +433,7 @@ func (m *BaseFromMysteelChemicalIndex) MultiUpdateIndex(items []UpdateIndexReq)
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	for _, v := range items {
 		if len(v.UpdateCols) == 0 {
 			continue
@@ -407,7 +441,8 @@ func (m *BaseFromMysteelChemicalIndex) MultiUpdateIndex(items []UpdateIndexReq)
 		if v.Item == nil {
 			continue
 		}
-		if _, e := o.Update(v.Item, v.UpdateCols...); e != nil {
+		//if _, e := o.Update(v.Item, v.UpdateCols...); e != nil {
+		if e := global.DEFAULT_DB.Model(&v.Item).Select(v.UpdateCols).Updates(&v.Item).Error; e != nil {
 			err = fmt.Errorf("update err: %s", e.Error())
 			return
 		}
@@ -434,7 +469,8 @@ type HandleMysteelIndexResp struct {
 
 // 上海钢联指标数据
 type BaseFromMysteelChemicalData struct {
-	BaseFromMysteelChemicalDataId  int64 `orm:"column(base_from_mysteel_chemical_data_id);pk"`
+	BaseFromMysteelChemicalDataId int64 `gorm:"column:base_from_mysteel_chemical_data_id;primaryKey"`
+	//BaseFromMysteelChemicalDataId  int64 `orm:"column(base_from_mysteel_chemical_data_id);pk"`
 	BaseFromMysteelChemicalIndexId int64
 	IndexCode                      string
 	DataTime                       time.Time
@@ -446,23 +482,26 @@ type BaseFromMysteelChemicalData struct {
 
 // GetIndexDataList 根据指标编码获取数据
 func (d *BaseFromMysteelChemicalData) GetIndexDataList(indexCode string) (item []*BaseFromMysteelChemicalData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mysteel_chemical_data WHERE index_code = ? `
-	_, err = o.Raw(sql, indexCode).QueryRows(&item)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&item).Error
 	return
 }
 
 // Update 修改
 func (r *BaseFromMysteelChemicalData) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(r, updateCols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(r, updateCols...)
+	err = global.DEFAULT_DB.Model(&r).Select(updateCols).Updates(&r).Error
 	return
 }
 
 // Add 新增
 func (r *BaseFromMysteelChemicalData) Add(list []BaseFromMysteelChemicalData) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(500, list)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(500, list)
+	err = global.DEFAULT_DB.CreateInBatches(list, utils.MultiAddNum).Error
 	return
 }
 
@@ -471,8 +510,9 @@ func (r *BaseFromMysteelChemicalData) AddV2(list []*BaseFromMysteelChemicalData)
 	if len(list) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(500, list)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(500, list)
+	err = global.DEFAULT_DB.CreateInBatches(list, utils.MultiAddNum).Error
 	return
 }
 
@@ -490,22 +530,23 @@ type GetIndexDetailReq struct {
 
 // GetIndexCountByFrequency 获取未合并的指标总数量
 func (m *BaseFromMysteelChemicalIndex) GetIndexCountByFrequency(condition string, pars []interface{}) (total int64, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	sql := `SELECT count(1) AS total FROM base_from_mysteel_chemical_index WHERE 1=1  `
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).QueryRow(&total)
-
+	//err = o.Raw(sql, pars).QueryRow(&total)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&total).Error
 	return
 }
 
 // GetNoMergeIndexByFrequencyPage 获取未合并的指标列表
 func (m *BaseFromMysteelChemicalIndex) GetIndexLimitByFrequency(frequency string, limit int) (items []*BaseFromMysteelChemicalIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mysteel_chemical_index WHERE frequency=? limit ? `
-	_, err = o.Raw(sql, frequency, limit).QueryRows(&items)
+	//_, err = o.Raw(sql, frequency, limit).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, frequency, limit).Find(&items).Error
 	return
 }
 
@@ -519,67 +560,73 @@ type GetIndexPageByFrequencyPageReq struct {
 
 // GetNoMergeIndexByFrequencyPage 获取未合并的指标列表
 func (m *BaseFromMysteelChemicalIndex) GetIndexPageByFrequency(condition string, pars []interface{}, startSize, pageSize int) (items []*BaseFromMysteelChemicalIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mysteel_chemical_index WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` LIMIT ?,?  `
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	//_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	pars = append(pars, startSize, pageSize)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 func (d *BaseFromMysteelChemicalData) GetMysteelIndexInfoMaxAndMinInfo(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_mysteel_chemical_data WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
-
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	if err != nil {
 		return
 	}
 
 	// 获取最新值
-	var latest_value float64
 	sql = ` SELECT value AS latest_value FROM base_from_mysteel_chemical_data WHERE index_code=? ORDER BY data_time DESC LIMIT 1 `
-	err = o.Raw(sql, indexCode).QueryRow(&latest_value)
-	if err != nil {
-		return
+	//err = o.Raw(sql, indexCode).QueryRow(&latest_value)
+	var latestValueNull sql2.NullFloat64
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Scan(&latestValueNull).Error
+	if err == nil && latestValueNull.Valid {
+		item.LatestValue = latestValueNull.Float64
 	}
-	item.LatestValue = latest_value
 
 	return
 }
 
 func (d *BaseFromMysteelChemicalData) ModifyMysteelIndexMaxAndMinInfo(indexCode string, item *EdbInfoMaxAndMinInfo) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_mysteel_chemical_index SET start_date=?,end_date=?,end_value=?,modify_time=NOW() WHERE index_code=? `
-	_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	//_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Error
 	return
 }
 
 // GetIndexByCondition 获取指标
 func (m *BaseFromMysteelChemicalIndex) GetIndexByCondition(condition string, pars []interface{}) (items []*BaseFromMysteelChemicalIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mysteel_chemical_index WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	//_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 type BaseFromMysteelChemicalRecord struct {
-	BaseFromMysteelChemicalRecordId int64 `orm:"column(base_from_mysteel_chemical_record_id);pk"`
-	BaseFromMysteelChemicalIndexId  int64
-	OldIndexName                    string    `description:"原始名称"`
-	NewIndexName                    string    `description:"新的名称"`
-	CreateTime                      time.Time `description:"记录创建时间"`
-	Timestamp                       int64     `description:"记录创建时间戳"`
+	BaseFromMysteelChemicalRecordId int64 `gorm:"column:base_from_mysteel_chemical_record_id;primaryKey"`
+	//BaseFromMysteelChemicalRecordId int64 `orm:"column(base_from_mysteel_chemical_record_id);pk"`
+	BaseFromMysteelChemicalIndexId int64
+	OldIndexName                   string    `description:"原始名称"`
+	NewIndexName                   string    `description:"新的名称"`
+	CreateTime                     time.Time `description:"记录创建时间"`
+	Timestamp                      int64     `description:"记录创建时间戳"`
 }
 
 func (m *BaseFromMysteelChemicalRecord) AddBaseFromMysteelChemicalRecord() (err error) {
-	o := orm.NewOrm()
-	_, err = o.Insert(m)
+	//o := orm.NewOrm()
+	//_, err = o.Insert(m)
+	err = global.DEFAULT_DB.Create(&m).Error
 	return
 }
 

+ 30 - 16
models/base_from_mysteel_chemical_classify.go

@@ -1,43 +1,57 @@
 package models
 
 import (
+	sql2 "database/sql"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"time"
 )
 
 type BaseFromMysteelChemicalClassify struct {
-	BaseFromMysteelChemicalClassifyId int       `orm:"column(base_from_mysteel_chemical_classify_id);pk"`
-	ClassifyName                      string    `description:"分类名称"`
-	ParentId                          int       `description:"父级id"`
-	SysUserId                         int       `description:"创建人id"`
-	SysUserRealName                   string    `description:"创建人姓名"`
-	Level                             int       `description:"层级"`
-	Sort                              int       `description:"排序字段,越小越靠前,默认值:10"`
-	ModifyTime                        time.Time `description:"修改时间"`
-	CreateTime                        time.Time `description:"创建时间"`
+	BaseFromMysteelChemicalClassifyId int `gorm:"column:base_from_mysteel_chemical_classify_id;primaryKey"`
+	//BaseFromMysteelChemicalClassifyId int       `orm:"column(base_from_mysteel_chemical_classify_id);pk"`
+	ClassifyName    string    `description:"分类名称"`
+	ParentId        int       `description:"父级id"`
+	SysUserId       int       `description:"创建人id"`
+	SysUserRealName string    `description:"创建人姓名"`
+	Level           int       `description:"层级"`
+	Sort            int       `description:"排序字段,越小越靠前,默认值:10"`
+	ModifyTime      time.Time `description:"修改时间"`
+	CreateTime      time.Time `description:"创建时间"`
 }
 
 // 判断分类名称是否存在
 func GetMysteelClassify(classifyName string, parentId int) (item *BaseFromMysteelChemicalClassify, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_mysteel_chemical_classify WHERE parent_id=? AND classify_name=? `
-	err = o.Raw(sql, parentId, classifyName).QueryRow(&item)
+	//err = o.Raw(sql, parentId, classifyName).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, parentId, classifyName).First(&item).Error
 	return
 }
 
 // GetEdbClassifyMaxSort 获取分类下最大的排序数
 func GetMysteelClassifyMaxSort(parentId int) (sort int, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT Max(sort) AS sort FROM base_from_mysteel_chemical_classify WHERE parent_id=? `
-	err = o.Raw(sql, parentId).QueryRow(&sort)
+	//err = o.Raw(sql, parentId).QueryRow(&sort)
+	var intNull sql2.NullInt64
+	err = global.DEFAULT_DB.Raw(sql, parentId).Scan(&intNull).Error
+	if err == nil && intNull.Valid {
+		sort = int(intNull.Int64)
+	}
+
 	return
 }
 
 func AddMysteelClassify(item *BaseFromMysteelChemicalClassify) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromMysteelChemicalClassifyId)
 	return
 }
 

+ 23 - 10
models/base_from_national_statistics.go

@@ -1,9 +1,10 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -11,7 +12,8 @@ import (
 
 // BaseFromNationalStatisticsData 国家统计局-指标数据表
 type BaseFromNationalStatisticsData struct {
-	BaseFromNationalStatisticsDataId  int `orm:"column(base_from_national_statistics_data_id);pk"`
+	BaseFromNationalStatisticsDataId int `gorm:"column:base_from_national_statistics_data_id;primaryKey"`
+	//BaseFromNationalStatisticsDataId  int `orm:"column(base_from_national_statistics_data_id);pk"`
 	BaseFromNationalStatisticsIndexId int
 	IndexCode                         string
 	DataTime                          string
@@ -20,20 +22,28 @@ type BaseFromNationalStatisticsData struct {
 	ModifyTime                        time.Time
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromNationalStatisticsData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
+}
+
 // GetBaseFromNationalStatisticsDataByCondition 获取指标值
 func GetBaseFromNationalStatisticsDataByCondition(condition string, pars []interface{}) (list []*BaseFromNationalStatisticsData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_national_statistics_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	//_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&list).Error
 	return
 }
 
 // AddEdbDataFromNationalStatistics 新增国家统计局指标数据
 func AddEdbDataFromNationalStatistics(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var condition string
 	var pars []interface{}
@@ -43,11 +53,12 @@ func AddEdbDataFromNationalStatistics(edbCode string) (err error) {
 	}
 
 	dataList, err := GetBaseFromNationalStatisticsDataByCondition(condition, pars)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 	var isAdd bool
 	addSql := `INSERT INTO edb_data_national_statistics(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	existMap := make(map[string]string)
 	for _, sv := range dataList {
 		eDate := sv.DataTime
@@ -66,7 +77,8 @@ func AddEdbDataFromNationalStatistics(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -79,7 +91,7 @@ func RefreshEdbDataFromNationalStatistics(edbInfoId int, edbCode, startDate stri
 	source := utils.DATA_SOURCE_NATIONAL_STATISTICS
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -107,7 +119,7 @@ func RefreshEdbDataFromNationalStatistics(edbInfoId int, edbCode, startDate stri
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -175,7 +187,8 @@ func RefreshEdbDataFromNationalStatistics(edbInfoId int, edbCode, startDate stri
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromNationalStatistics add Err", err.Error())
 			return

+ 51 - 30
models/base_from_oilchem.go

@@ -1,9 +1,10 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -32,30 +33,46 @@ type BaseFromOilchemData struct {
 	ModifyTime             time.Time // 修改时间
 }
 
+func (e *BaseFromOilchemData) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
 
-//添加数据
+	return
+}
+
+// 添加数据
 func AddBaseFromOilchemIndexMuti(items []*BaseFromOilchemIndex) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(500, items)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(500, items)
+	err = global.DEFAULT_DB.CreateInBatches(items, utils.MultiAddNum).Error
 	return
 }
 func AddBaseFromOilchemIndex(item *BaseFromOilchemIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromOilchemIndexId)
 	return
 }
 
 func AddBaseFromOilchemData(item *BaseFromOilchemData) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromOilchemDataId)
 	return
 }
 
 func AddEdbDataFromOilchem(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	oilchemBaseDataAll, err := GetOilchemDataByCode(edbCode)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 
@@ -92,7 +109,8 @@ func AddEdbDataFromOilchem(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -102,19 +120,19 @@ func AddEdbDataFromOilchem(edbCode string) (err error) {
 
 // GetOilchemDataByCode
 func GetOilchemDataByCode(indexCode string) (items []*BaseFromOilchemData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := "SELECT * FROM base_from_oilchem_data WHERE index_code=? "
-	_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&items).Error
+	//_, err = o.Raw(sql, indexCode).QueryRows(&items)
 	return
 }
 
-
 // RefreshEdbDataFromOilchem 刷新隆众资讯
 func RefreshEdbDataFromOilchem(edbInfoId int, edbCode, startDate string) (err error) {
 	source := utils.DATA_SOURCE_OILCHEM
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -144,7 +162,7 @@ func RefreshEdbDataFromOilchem(edbInfoId int, edbCode, startDate string) (err er
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -212,7 +230,8 @@ func RefreshEdbDataFromOilchem(edbInfoId int, edbCode, startDate string) (err er
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromSci add Err", err.Error())
 			return
@@ -222,16 +241,16 @@ func RefreshEdbDataFromOilchem(edbInfoId int, edbCode, startDate string) (err er
 }
 
 func GetBaseFromOilchemDataByCondition(condition string, pars []interface{}) (list []*BaseFromOilchemData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_oilchem_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	//_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&list).Error
 	return
 }
 
-
 type BaseFromOilchemIndexReq struct {
 	BaseFromOilchemIndexId int       // 主键ID
 	IndexCode              string    // 指标编码
@@ -242,7 +261,7 @@ type BaseFromOilchemIndexReq struct {
 	Frequency              string    // 频度
 	Describe               string    // 指标描述
 	DataTime               string    // 数据日期
-	Value                  string   // 数据值
+	Value                  string    // 数据值
 	Sort                   int       // 排序
 	CreateTime             time.Time // 创建时间
 	ModifyTime             time.Time // 修改时间
@@ -250,29 +269,31 @@ type BaseFromOilchemIndexReq struct {
 	MarketName             string    // 市场名称
 }
 
-
 type HandleOielchemEdbDataReq struct {
 	List []*BaseFromOilchemIndexReq
 }
 
 func GetBaseFromOilchemIndex() (list []*BaseFromOilchemIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_oilchem_index group by index_name `
-	_, err = o.Raw(sql).QueryRows(&list)
+	//_, err = o.Raw(sql).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql).Find(&list).Error
 	return
 }
 
 func GetBaseFromOilchemData(indexCode, dataTime string) (item *BaseFromOilchemData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_oilchem_data where index_code=? And data_time = ? `
-	err = o.Raw(sql, indexCode, dataTime).QueryRow(&item)
+	//err = o.Raw(sql, indexCode, dataTime).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode, dataTime).First(&item).Error
 	return
 }
 
 // UpdateBaseFromSci99Data
-func UpdateBaseFromOilchemData(value , indexCode, dataTime string) (err error) {
-	o := orm.NewOrm()
+func UpdateBaseFromOilchemData(value, indexCode, dataTime string) (err error) {
+	//o := orm.NewOrm()
 	sql := `UPDATE base_from_sci99_data SET value=?,modify_time=NOW() WHERE index_code = ? AND data_time = ? `
-	_, err = o.Raw(sql, value, indexCode, dataTime).Exec()
+	//_, err = o.Raw(sql, value, indexCode, dataTime).Exec()
+	err = global.DEFAULT_DB.Exec(sql, value, indexCode, dataTime).Error
 	return
-}
+}

+ 10 - 6
models/base_from_pb.go

@@ -1,9 +1,9 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"strings"
 	"time"
@@ -17,11 +17,12 @@ type EdbDataFromPb struct {
 }
 
 func AddEdbDataFromPb(edbCode string, item *EdbDataFromPb) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if len(item.Date) > 0 {
 		var isAdd bool
 		dateMap := item.Date
 		addSql := ` INSERT INTO edb_data_pb(edb_info_id,edb_code,data_time,value,create_time,modify_time,ticker,field,data_timestamp) values `
+		addSql = utils.ReplaceDriverKeywords("", addSql)
 		nowStr := time.Now().Format(utils.FormatDateTime)
 		for k, v := range dateMap {
 			timeStr := fmt.Sprintf("%d", v)
@@ -52,7 +53,8 @@ func AddEdbDataFromPb(edbCode string, item *EdbDataFromPb) (err error) {
 		}
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
-			_, err = o.Raw(addSql).Exec()
+			//_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
 				return
 			}
@@ -63,7 +65,7 @@ func AddEdbDataFromPb(edbCode string, item *EdbDataFromPb) (err error) {
 
 // 刷新彭博指标数据
 func RefreshEdbDataFromPb(edbInfoId int, edbCode, startDate string, item *EdbDataFromPb) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	source := utils.DATA_SOURCE_PB
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
@@ -73,7 +75,7 @@ func RefreshEdbDataFromPb(edbInfoId int, edbCode, startDate string, item *EdbDat
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -101,6 +103,7 @@ func RefreshEdbDataFromPb(edbInfoId int, edbCode, startDate string, item *EdbDat
 		dateMap := item.Date
 		var isAdd bool
 		addSql := ` INSERT INTO edb_data_pb(edb_info_id,edb_code,data_time,value,create_time,modify_time,ticker,field,data_timestamp) values `
+		addSql = utils.ReplaceDriverKeywords("", addSql)
 		nowStr := time.Now().Format(utils.FormatDateTime)
 		for k, v := range dateMap {
 			timeStr := fmt.Sprintf("%d", v)
@@ -158,7 +161,8 @@ func RefreshEdbDataFromPb(edbInfoId int, edbCode, startDate string, item *EdbDat
 
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
-			_, err = o.Raw(addSql).Exec()
+			//_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
 				fmt.Println("RefreshAllEdbDataByPb add Err", err.Error())
 				return

+ 8 - 6
models/base_from_pb_finance.go

@@ -1,16 +1,16 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"strings"
 	"time"
 )
 
 func AddEdbDataFromPbFinance(edbCode string, item *EdbDataFromPb) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if len(item.Date) > 0 {
 		var isAdd bool
 		dateMap := item.Date
@@ -34,7 +34,8 @@ func AddEdbDataFromPbFinance(edbCode string, item *EdbDataFromPb) (err error) {
 		}
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
-			_, err = o.Raw(addSql).Exec()
+			//_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
 				return
 			}
@@ -45,7 +46,7 @@ func AddEdbDataFromPbFinance(edbCode string, item *EdbDataFromPb) (err error) {
 
 // 刷新彭博指标数据
 func RefreshEdbDataFromPbFinance(edbInfoId int, edbCode, startDate string, item *EdbDataFromPb) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	source := utils.DATA_SOURCE_PB_FINANCE
 	subSource := utils.DATA_SUB_SOURCE_DATE
 
@@ -55,7 +56,7 @@ func RefreshEdbDataFromPbFinance(edbInfoId int, edbCode, startDate string, item
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -135,7 +136,8 @@ func RefreshEdbDataFromPbFinance(edbInfoId int, edbCode, startDate string, item
 
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
-			_, err = o.Raw(addSql).Exec()
+			//_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
 				fmt.Println("RefreshAllEdbDataByPbFinance add Err", err.Error())
 				return

+ 39 - 19
models/base_from_python.go

@@ -2,18 +2,20 @@ package models
 
 import (
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/services/alarm_msg"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
 	"strings"
 	"time"
 )
 
 // EdbDataPython python指标数据结构体
 type EdbDataPython struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
+	EdbDataId int `gorm:"column:edb_data_id;primaryKey"`
+	//EdbDataId     int `orm:"column(edb_data_id);pk"`
 	EdbInfoId     int
 	EdbCode       string
 	DataTime      string
@@ -23,6 +25,12 @@ type EdbDataPython struct {
 	DataTimestamp int64
 }
 
+func (e *EdbDataPython) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
 // EdbDataFromPython 通过python代码获取到的指标数据
 type EdbDataFromPython struct {
 	Date  map[int]string  `json:"date"`
@@ -31,7 +39,7 @@ type EdbDataFromPython struct {
 
 // AddPythonEdb 新增python运算指标
 func AddPythonEdb(edbInfo *EdbInfo, item EdbDataFromPython, edbInfoList []*EdbInfo) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	//添加指标关系
 	for _, tmpEdbInfo := range edbInfoList {
@@ -48,7 +56,8 @@ func AddPythonEdb(edbInfo *EdbInfo, item EdbDataFromPython, edbInfoList []*EdbIn
 		calculateMappingItem.FromSourceName = tmpEdbInfo.SourceName
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
-		_, err = o.Insert(calculateMappingItem)
+		//_, err = o.Insert(calculateMappingItem)
+		err = global.DEFAULT_DB.Create(&calculateMappingItem).Error
 		if err != nil {
 			return
 		}
@@ -56,6 +65,7 @@ func AddPythonEdb(edbInfo *EdbInfo, item EdbDataFromPython, edbInfoList []*EdbIn
 
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_python (edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	for k, dateTimeStr := range item.Date {
 		//格式化时间
 		currentDate, tmpErr := time.ParseInLocation(utils.FormatDate, dateTimeStr, time.Local)
@@ -76,7 +86,8 @@ func AddPythonEdb(edbInfo *EdbInfo, item EdbDataFromPython, edbInfoList []*EdbIn
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return
 		}
@@ -86,9 +97,10 @@ func AddPythonEdb(edbInfo *EdbInfo, item EdbDataFromPython, edbInfoList []*EdbIn
 
 // EditPythonEdb 编辑python运算指标
 func EditPythonEdb(edbInfoId int, edbCode string, item EdbDataFromPython) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_python (edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	for k, dateTimeStr := range item.Date {
 		//格式化时间
 		currentDate, tmpErr := time.ParseInLocation(utils.FormatDate, dateTimeStr, time.Local)
@@ -109,7 +121,8 @@ func EditPythonEdb(edbInfoId int, edbCode string, item EdbDataFromPython) (err e
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return
 		}
@@ -119,8 +132,9 @@ func EditPythonEdb(edbInfoId int, edbCode string, item EdbDataFromPython) (err e
 
 // RefreshAllPythonEdb 刷新所有 python运算指标
 func RefreshAllPythonEdb(edbInfo *EdbInfo, item EdbDataFromPython) (err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
+	//o := orm.NewOrm()
+	//to, err := o.Begin()
+	to := global.DEFAULT_DB.Begin()
 	if err != nil {
 		return
 	}
@@ -196,7 +210,8 @@ func RefreshAllPythonEdb(edbInfo *EdbInfo, item EdbDataFromPython) (err error) {
 		}
 		//最后如果还有需要新增的数据,那么就统一入库
 		if len(addDataList) > 0 {
-			_, tmpErr := o.InsertMulti(len(addDataList), addDataList)
+			//_, tmpErr := o.InsertMulti(len(addDataList), addDataList)
+			tmpErr := to.CreateInBatches(addDataList, len(addDataList)).Error
 			if tmpErr != nil {
 				err = tmpErr
 				return
@@ -207,13 +222,14 @@ func RefreshAllPythonEdb(edbInfo *EdbInfo, item EdbDataFromPython) (err error) {
 	//删除已经不存在的累计同比拼接指标数据(由于同比值当日的数据删除了)
 	{
 		if len(removeDateList) > 0 {
-			removeDateStr := strings.Join(removeDateList, `","`)
-			removeDateStr = `"` + removeDateStr + `"`
+			removeDateStr := strings.Join(removeDateList, `','`)
+			removeDateStr = `'` + removeDateStr + `'`
 			//如果拼接指标变更了,那么需要删除所有的指标数据
 			tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
 
-			_, err = o.Raw(sql, edbInfo.EdbInfoId).Exec()
+			//_, err = o.Raw(sql, edbInfo.EdbInfoId).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId).Error
 			if err != nil {
 				err = errors.New("删除不存在的Python运算指标数据失败,Err:" + err.Error())
 				return
@@ -227,7 +243,8 @@ func RefreshAllPythonEdb(edbInfo *EdbInfo, item EdbDataFromPython) (err error) {
 		for edbDate, edbDataValue := range updateEdbDataMap {
 			sql := fmt.Sprintf(` UPDATE  %s set value = ?,modify_time=now() WHERE edb_info_id = ? and data_time = ? `, tableName)
 
-			_, err = o.Raw(sql, edbDataValue, edbInfo.EdbInfoId, edbDate).Exec()
+			//_, err = o.Raw(sql, edbDataValue, edbInfo.EdbInfoId, edbDate).Exec()
+			err = to.Exec(sql, edbDataValue, edbInfo.EdbInfoId, edbDate).Error
 			if err != nil {
 				err = errors.New("更新现有的Python运算指标数据失败,Err:" + err.Error())
 				return
@@ -239,7 +256,7 @@ func RefreshAllPythonEdb(edbInfo *EdbInfo, item EdbDataFromPython) (err error) {
 
 // EditEdbInfoCalculateMapping 更新关联关系表
 func EditEdbInfoCalculateMapping(edbInfo *EdbInfo, edbInfoList []*EdbInfo) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var existCondition string
 	var existPars []interface{}
@@ -281,7 +298,8 @@ func EditEdbInfoCalculateMapping(edbInfo *EdbInfo, edbInfoList []*EdbInfo) (err
 			calculateMappingItem.FromSourceName = tmpEdbInfo.SourceName
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
-			_, err = o.Insert(calculateMappingItem)
+			//_, err = o.Insert(calculateMappingItem)
+			err = global.DEFAULT_DB.Create(&calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -291,7 +309,8 @@ func EditEdbInfoCalculateMapping(edbInfo *EdbInfo, edbInfoList []*EdbInfo) (err
 	for _, v := range existEdbInfoIdMap {
 		//删除,计算指标关联的,基础指标的关联关系
 		sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? and from_edb_info_id=?`
-		_, err = o.Raw(sql, edbInfo.EdbInfoId, v).Exec()
+		//_, err = o.Raw(sql, edbInfo.EdbInfoId, v).Exec()
+		err = global.DEFAULT_DB.Exec(sql, edbInfo.EdbInfoId, v).Error
 		if err != nil {
 			err = errors.New("删除计算指标关联关系失败,Err:" + err.Error())
 			return
@@ -302,9 +321,10 @@ func EditEdbInfoCalculateMapping(edbInfo *EdbInfo, edbInfoList []*EdbInfo) (err
 
 // GetAllEdbDataPythonByEdbInfoId 根据指标id获取全部的数据
 func GetAllEdbDataPythonByEdbInfoId(edbInfoId int) (items []*EdbDataPython, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM edb_data_python WHERE edb_info_id=? ORDER BY data_time DESC `
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&items)
+	//_, err = o.Raw(sql, edbInfoId).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, edbInfoId).Find(&items).Error
 	return
 }
 

+ 18 - 18
models/base_from_rzd_classify.go

@@ -2,30 +2,28 @@
 package models
 
 import (
-	"errors"
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
 )
 
 type BaseFromRzdClassify struct {
-	BaseFromRzdClassifyId int    `orm:"column(base_from_rzd_classify_id);pk"`
-	CreateTime            string `orm:"column(create_time)"`
-	ModifyTime            string `orm:"column(modify_time)"`
-	ClassifyName          string `orm:"column(classify_name)"`
-	ParentId              int    `orm:"column(parent_id)"`
-	Sort                  int    `orm:"column(sort)"`
-	ClassifyNameEn        string `orm:"column(classify_name_en)"`
-}
-
-func init() {
-	orm.RegisterModel(new(BaseFromRzdClassify))
+	BaseFromRzdClassifyId int `gorm:"column:base_from_rzd_classify_id;primaryKey"`
+	//BaseFromRzdClassifyId int    `orm:"column(base_from_rzd_classify_id);pk"`
+	CreateTime     string `gorm:"column:create_time"`
+	ModifyTime     string `gorm:"column:modify_time"`
+	ClassifyName   string `gorm:"column:classify_name"`
+	ParentId       int    `gorm:"column:parent_id"`
+	Sort           int    `gorm:"column:sort"`
+	ClassifyNameEn string `gorm:"column:classify_name_en"`
 }
 
 // GetRzdClassifyByName 根据分类名称查询
 func GetRzdClassifyByName(classifyName string) (item *BaseFromRzdClassify, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_rzd_classify WHERE classify_name=?`
-	err = o.Raw(sql, classifyName).QueryRow(&item)
-	if errors.Is(err, orm.ErrNoRows) {
+	//err = o.Raw(sql, classifyName).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, classifyName).First(&item).Error
+	if utils.IsErrNoRow(err) {
 		return nil, nil
 	}
 	return
@@ -33,10 +31,12 @@ func GetRzdClassifyByName(classifyName string) (item *BaseFromRzdClassify, err e
 
 // AddRzdClassify 新增分类
 func AddRzdClassify(classify *BaseFromRzdClassify) (int64, error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(classify)
+	//o := orm.NewOrm()
+	//id, err := o.Insert(classify)
+	err := global.DEFAULT_DB.Create(&classify).Error
 	if err != nil {
 		return 0, err
 	}
+	id := int64(classify.BaseFromRzdClassifyId)
 	return id, nil
 }

+ 56 - 31
models/base_from_rzd_data.go

@@ -2,63 +2,84 @@
 package models
 
 import (
-	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 )
 
 type BaseFromRzdData struct {
-	BaseFromRzdDataId  int     `orm:"column(base_from_rzd_data_id);pk"`
-	BaseFromRzdIndexId int     `orm:"column(base_from_rzd_index_id)"`
-	CreateTime         string  `orm:"column(create_time)"`
-	DataTime           string  `orm:"column(data_time)"`
-	IndexCode          string  `orm:"column(index_code)"`
-	ModifyTime         string  `orm:"column(modify_time)"`
-	Value              float64 `orm:"column(value)"`
+	BaseFromRzdDataId int `gorm:"column:base_from_rzd_data_id;primaryKey"`
+	//BaseFromRzdDataId  int     `orm:"column(base_from_rzd_data_id);pk"`
+	BaseFromRzdIndexId int     `gorm:"column:base_from_rzd_index_id"`
+	CreateTime         string  `gorm:"column:create_time"`
+	DataTime           string  `gorm:"column:data_time"`
+	IndexCode          string  `gorm:"column:index_code"`
+	ModifyTime         string  `gorm:"column:modify_time"`
+	Value              float64 `gorm:"column:value"`
 }
 
-func init() {
-	orm.RegisterModel(new(BaseFromRzdData))
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromRzdData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+
+	return
+}
+
+func (m *BaseFromRzdData) ConvDateTimeStr() {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+
+	return
 }
 
 // AddRzdDataList 批量插入数据记录列表
 func AddRzdDataList(items []BaseFromRzdData) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(items), items)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(len(items), items)
+	err = global.DEFAULT_DB.CreateInBatches(items, len(items)).Error
+
 	return
 }
 
 // GetRzdDataByIndexCodeAndDataTime 根据指标id和数据日期查询数据
-func GetRzdDataByIndexCodeAndDataTime(indexCode string, dataTime string) (items BaseFromRzdData, err error) {
-	o := orm.NewOrm()
+func GetRzdDataByIndexCodeAndDataTime(indexCode string, dataTime string) (item BaseFromRzdData, err error) {
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_rzd_data WHERE index_code=? AND data_time=?`
-	err = o.Raw(sql, indexCode, dataTime).QueryRow(&items) // 使用 QueryRow
-	if errors.Is(err, orm.ErrNoRows) {
-		return items, nil
+	//err = o.Raw(sql, indexCode, dataTime).QueryRow(&items) // 使用 QueryRow
+	err = global.DEFAULT_DB.Raw(sql, indexCode, dataTime).First(&item).Error
+	if utils.IsErrNoRow(err) {
+		return item, nil
 	}
 	if err != nil {
-		return items, err
+		return item, err
 	}
+	item.ConvDateTimeStr()
+
 	return
 }
 
 // UpdateRzdDataById 根据主键id更新数据
 func UpdateRzdDataById(dataId int, value float64) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `UPDATE base_from_rzd_data SET value=? WHERE base_from_rzd_data_id=?`
-	_, err = o.Raw(sql, value, dataId).Exec()
+	//_, err = o.Raw(sql, value, dataId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, value, dataId).Error
 	return
 }
 
 // GetBaseFromRzdDataByCondition 添加查询
 func GetBaseFromRzdDataByCondition(condition string, pars []interface{}) (items []BaseFromRzdData, err error) {
 	sql := `SELECT * FROM base_from_rzd_data WHERE 1=1 `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars...).QueryRows(&items)
-	if errors.Is(err, orm.ErrNoRows) {
+	//_, err = o.Raw(sql, pars...).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+	if utils.IsErrNoRow(err) {
 		return nil, nil
 	}
 	return
@@ -66,8 +87,9 @@ func GetBaseFromRzdDataByCondition(condition string, pars []interface{}) (items
 
 // UpdateRzdData 修改睿姿得数据
 func UpdateRzdData(item *BaseFromRzdData) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(item)
+	//o := orm.NewOrm()
+	//_, err = o.Update(item)
+	err = global.DEFAULT_DB.Save(&item).Error
 	return
 }
 
@@ -75,10 +97,11 @@ func UpdateRzdData(item *BaseFromRzdData) (err error) {
 func GetRzdDataMaxAndMinDateByIndexCodes(indexCodes []string) (resultMap map[string]*EdbInfoMaxAndMinInfo, err error) {
 	resultMap = make(map[string]*EdbInfoMaxAndMinInfo)
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT index_code, MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_rzd_data WHERE index_code in (` + utils.GetOrmInReplace(len(indexCodes)) + `) GROUP BY index_code`
 	var items []EdbInfoMaxAndMinInfo
-	_, err = o.Raw(sql, indexCodes).QueryRows(&items)
+	//_, err = o.Raw(sql, indexCodes).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, indexCodes).Find(&items).Error
 	if err != nil {
 		return nil, err
 	}
@@ -101,7 +124,8 @@ func GetRzdDataMaxAndMinDateByIndexCodes(indexCodes []string) (resultMap map[str
             WHERE index_code IN (` + utils.GetOrmInReplace(len(indexCodes)) + `)
             GROUP BY index_code
         ) b ON a.index_code = b.index_code AND a.data_time = b.latest_time`
-	_, err = o.Raw(sql, indexCodes).QueryRows(&items)
+	//_, err = o.Raw(sql, indexCodes).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, indexCodes).Find(&items).Error
 	if err != nil {
 		return nil, err
 	}
@@ -115,8 +139,9 @@ func GetRzdDataMaxAndMinDateByIndexCodes(indexCodes []string) (resultMap map[str
 }
 
 func UpdateRzdEdbDataByIndexCodes(indexCode string, info *EdbInfoMaxAndMinInfo) error {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `UPDATE base_from_rzd_index SET start_date=?, end_date=?, latest_value=? WHERE index_code=?`
-	_, err := o.Raw(sql, info.MinDate, info.MaxDate, info.LatestValue, indexCode).Exec()
+	//_, err := o.Raw(sql, info.MinDate, info.MaxDate, info.LatestValue, indexCode).Exec()
+	err := global.DEFAULT_DB.Exec(sql, info.MinDate, info.MaxDate, info.LatestValue, indexCode).Error
 	return err
 }

+ 25 - 23
models/base_from_rzd_index.go

@@ -3,50 +3,52 @@
 package models
 
 import (
-	"errors"
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
+	"time"
 )
 
 type BaseFromRzdIndex struct {
-	BaseFromRzdIndexId   int    `orm:"column(base_from_rzd_index_id);pk"`
-	CreateTime           string `orm:"column(create_time)"`
-	ModifyTime           string `orm:"column(modify_time)"`
-	BaseFromLyClassifyId int    `orm:"column(base_from_rzd_classify_id)"`
-	IndexCode            string `orm:"column(index_code)"`
-	IndexName            string `orm:"column(index_name)"`
-	Frequency            string `orm:"column(frequency)"`
-	Unit                 string `orm:"column(unit)"`
-}
-
-// 在 init 函数中注册模型
-func init() {
-	orm.RegisterModel(new(BaseFromRzdIndex))
+	BaseFromRzdIndexId    int       `gorm:"column:base_from_rzd_index_id;type:int(11);primaryKey;not null;"`
+	CreateTime            time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;not null;default:CURRENT_TIMESTAMP;"`             // 创建时间
+	ModifyTime            time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;not null;default:CURRENT_TIMESTAMP;"`             // 修改时间
+	BaseFromRzdClassifyId int       `gorm:"column:base_from_rzd_classify_id;type:int(11) UNSIGNED;comment:原始数据指标分类id;not null;default:0;"` // 原始数据指标分类id
+	IndexCode             string    `gorm:"column:index_code;type:varchar(255);comment:指标编码;"`                                             // 指标编码
+	IndexName             string    `gorm:"column:index_name;type:varchar(255);comment:指标名称;"`                                             // 指标名称
+	Frequency             string    `gorm:"column:frequency;type:varchar(20);comment:频度;"`                                                 // 频度
+	Unit                  string    `gorm:"column:unit;type:varchar(30);comment:单位;"`                                                      // 单位
+	StartDate             time.Time `gorm:"column:start_date;type:date;comment:数据开始日期;default:NULL;"`                                      // 数据开始日期
+	EndDate               time.Time `gorm:"column:end_date;type:date;comment:数据结束日期;default:NULL;"`                                        // 数据结束日期
+	LatestValue           float64   `gorm:"column:latest_value;type:double;comment:数据最新值;default:NULL;"`                                   // 数据最新值
 }
 
 // AddRzdIndexList 批量插入指标记录列表
 func AddRzdIndexList(items []*BaseFromRzdIndex) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(items), items)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(len(items), items)
+	err = global.DEFAULT_DB.CreateInBatches(items, len(items)).Error
 	return
 }
 
 // AddRzdIndex 添加指标
 func AddRzdIndex(item *BaseFromRzdIndex) (int64, error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(item)
+	//o := orm.NewOrm()
+	//id, err := o.Insert(item)
+	err := global.DEFAULT_DB.Create(&item).Error
 	if err != nil {
 		return 0, err
 	}
+	id := int64(item.BaseFromRzdIndexId)
 	return id, nil
 }
 
 // GetRzdIndexByCode 查询指标编码是否存在
 func GetRzdIndexByCode(indexCode string) (item *BaseFromRzdIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_rzd_index WHERE index_code=?`
-	err = o.Raw(sql, indexCode).QueryRow(&item)
-
-	if errors.Is(err, orm.ErrNoRows) {
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
+	if utils.IsErrNoRow(err) {
 		return nil, nil
 	}
 

+ 55 - 41
models/base_from_sci.go

@@ -1,17 +1,18 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
-
-	"github.com/beego/beego/v2/client/orm"
 )
 
 type BaseFromSciData struct {
-	SciDataId          int `orm:"column(sci_data_id);pk"`
+	SciDataId int `gorm:"column:sci_data_id;primaryKey"`
+	//SciDataId          int `orm:"column(sci_data_id);pk"`
 	BaseFromSciIndexId int
 	IndexCode          string
 	DataTime           string
@@ -21,44 +22,51 @@ type BaseFromSciData struct {
 	DataTimestamp      int64
 }
 
+func (e *BaseFromSciData) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
 // Update 修改
 func (r *BaseFromSciData) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(r, updateCols...)
-
+	//o := orm.NewOrm()
+	//_, err = o.Update(r, updateCols...)
+	err = global.DEFAULT_DB.Model(&r).Select(updateCols).Updates(&r).Error
 	return
 }
 
 // GetIndexDataList 获取所有的指标数据
 func (r *BaseFromSciData) GetIndexDataList(indexCode string) (items []*BaseFromSciData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_sci_data WHERE 1=1 AND index_code = ? `
-	_, err = o.Raw(sql, indexCode).QueryRows(&items)
-
+	//_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&items).Error
 	return
 }
 
 // BatchAdd 批量添加指标
 func (r *BaseFromSciData) BatchAdd(list []*BaseFromSciData) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(list), list)
-
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(len(list), list)
+	err = global.DEFAULT_DB.CreateInBatches(list, len(list)).Error
 	return
 }
 
 func GetBaseFromSciDataByCondition(condition string, pars []interface{}) (list []*BaseFromSciData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_sci_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	//_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&list).Error
 	return
 }
 
 // AddEdbDataFromSci 新增卓创(红桃3)指标数据
 func AddEdbDataFromSci(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var condition string
 	var pars []interface{}
@@ -67,11 +75,12 @@ func AddEdbDataFromSci(edbCode string) (err error) {
 		pars = append(pars, edbCode)
 	}
 	sciBaseDataAll, err := GetBaseFromSciDataByCondition(condition, pars)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_sci(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	existMap := make(map[string]string)
 	for _, sv := range sciBaseDataAll {
 		eDate := sv.DataTime
@@ -90,7 +99,8 @@ func AddEdbDataFromSci(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -103,7 +113,7 @@ func RefreshEdbDataFromSci(edbInfoId int, edbCode, startDate string) (err error)
 	source := utils.DATA_SOURCE_SCI
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -133,7 +143,7 @@ func RefreshEdbDataFromSci(edbInfoId int, edbCode, startDate string) (err error)
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -160,6 +170,7 @@ func RefreshEdbDataFromSci(edbInfoId int, edbCode, startDate string) (err error)
 		existMap[v.DataTime] = v
 	}
 	addSql := ` INSERT INTO edb_data_sci(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	for _, v := range sciDataList {
 		item := v
@@ -201,7 +212,8 @@ func RefreshEdbDataFromSci(edbInfoId int, edbCode, startDate string) (err error)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromSci add Err", err.Error())
 			return
@@ -223,19 +235,20 @@ type HandleSciExcelDataReq struct {
 
 // BaseFromSciIndex 红桃3指标表格
 type BaseFromSciIndex struct {
-	BaseFromSciIndexId int       `orm:"column(base_from_sci_index_id);pk"  json:"base_from_sci_index_id"` //序号
-	ClassifyId         int       `gorm:"column:classify_id" json:"classify_id"`
-	IndexCode          string    `gorm:"column:index_code" json:"index_code" description:"指标编码"`
-	IndexName          string    `gorm:"column:index_name" json:"index_name" description:"指标名称"`
-	Frequency          string    `gorm:"column:frequency" json:"frequency"`
-	Unit               string    `gorm:"column:unit" json:"unit"`
-	StartDate          time.Time `gorm:"column:start_date" json:"start_date"`
-	EndDate            time.Time `gorm:"column:end_date" json:"end_date"`
-	CreateTime         time.Time `gorm:"autoCreateTime;column:create_time" json:"create_time"`       //创建时间
-	ModifyTime         time.Time `gorm:"autoUpdateTime:milli;column:modify_time" json:"modify_time"` //最后更新时间
-	FilePath           string    `gorm:"column:file_path" json:"file_path"`                          // 文件路径
-	TerminalCode       string    `gorm:"column:terminal_code" json:"terminal_code"`                  // 指标编码
-	LatestValue        float64   `gorm:"column:latest_value" json:"latest_value"`                    // 数据最新值
+	BaseFromSciIndexId int `gorm:"column:base_from_sci_index_id;primaryKey"  json:"base_from_sci_index_id"` //序号
+	//BaseFromSciIndexId int       `orm:"column(base_from_sci_index_id);pk"  json:"base_from_sci_index_id"` //序号
+	ClassifyId   int       `gorm:"column:classify_id" json:"classify_id"`
+	IndexCode    string    `gorm:"column:index_code" json:"index_code" description:"指标编码"`
+	IndexName    string    `gorm:"column:index_name" json:"index_name" description:"指标名称"`
+	Frequency    string    `gorm:"column:frequency" json:"frequency"`
+	Unit         string    `gorm:"column:unit" json:"unit"`
+	StartDate    time.Time `gorm:"column:start_date" json:"start_date"`
+	EndDate      time.Time `gorm:"column:end_date" json:"end_date"`
+	CreateTime   time.Time `gorm:"autoCreateTime;column:create_time" json:"create_time"`       //创建时间
+	ModifyTime   time.Time `gorm:"autoUpdateTime:milli;column:modify_time" json:"modify_time"` //最后更新时间
+	FilePath     string    `gorm:"column:file_path" json:"file_path"`                          // 文件路径
+	TerminalCode string    `gorm:"column:terminal_code" json:"terminal_code"`                  // 指标编码
+	LatestValue  float64   `gorm:"column:latest_value" json:"latest_value"`                    // 数据最新值
 }
 
 // TableName get sql table name.获取数据库表名
@@ -245,24 +258,25 @@ func (r *BaseFromSciIndex) TableName() string {
 
 // Update 修改
 func (r *BaseFromSciIndex) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(r, updateCols...)
-
+	//o := orm.NewOrm()
+	//_, err = o.Update(r, updateCols...)
+	err = global.DEFAULT_DB.Model(&r).Select(updateCols).Updates(&r).Error
 	return
 }
 
 // GetAllIndex 获取所有的指标
 func (r *BaseFromSciIndex) GetAllIndex() (items []*BaseFromSciIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_sci_index WHERE 1=1 `
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }
 
 // BatchAdd 批量添加指标
 func (r *BaseFromSciIndex) BatchAdd(list []*BaseFromSciIndex) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(list), list)
-
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(len(list), list)
+	err = global.DEFAULT_DB.CreateInBatches(list, len(list)).Error
 	return
 }

+ 98 - 55
models/base_from_sci99.go

@@ -1,9 +1,11 @@
 package models
 
 import (
+	sql2 "database/sql"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -11,23 +13,25 @@ import (
 
 // BaseFromSci99Index 代表卓创资讯-原始指标表的结构
 type BaseFromSci99Index struct {
-	BaseFromSciIndexId int       `orm:"column(base_from_sci_index_id);pk"` // 主键,自动递增
-	IndexCode          string    // 指标编码
-	IndexName          string    // 指标名称
-	ClassifyId         int       // 分类Id
-	Unit               string    // 单位
-	Frequency          string    // 频度
-	Describe           string    // 指标描述
-	CreateTime         time.Time // 创建时间
-	ModifyTime         time.Time // 修改时间
-	StartDate          time.Time `gorm:"column:start_date"`
-	EndDate            time.Time `gorm:"column:end_date"`
-	LatestValue        float64   `gorm:"column:latest_value"` // 数据最新值
+	BaseFromSciIndexId int `gorm:"column:base_from_sci_index_id;primaryKey"` // 主键,自动递增
+	//BaseFromSciIndexId int       `orm:"column(base_from_sci_index_id);pk"` // 主键,自动递增
+	IndexCode   string    // 指标编码
+	IndexName   string    // 指标名称
+	ClassifyId  int       // 分类Id
+	Unit        string    // 单位
+	Frequency   string    // 频度
+	Describe    string    // 指标描述
+	CreateTime  time.Time // 创建时间
+	ModifyTime  time.Time // 修改时间
+	StartDate   time.Time `gorm:"column:start_date"`
+	EndDate     time.Time `gorm:"column:end_date"`
+	LatestValue float64   `gorm:"column:latest_value"` // 数据最新值
 }
 
 // BaseFromSci99Data 代表卓创资讯-原始指标数据表的结构
 type BaseFromSci99DataItem struct {
-	BaseFromSciDataId  int       `orm:"column(base_from_sci_data_id);pk"` // 主键,自动递增
+	BaseFromSciDataId int `gorm:"column:base_from_sci_data_id;primaryKey"` // 主键,自动递增
+	//BaseFromSciDataId  int       `orm:"column(base_from_sci_data_id);pk"` // 主键,自动递增
 	BaseFromSciIndexId int       // 指标id
 	IndexCode          string    // 指标编码
 	DataTime           string    // 数据日期
@@ -36,9 +40,16 @@ type BaseFromSci99DataItem struct {
 	ModifyTime         time.Time // 修改时间
 }
 
+func (e *BaseFromSci99DataItem) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
 // BaseFromSci99Data 代表卓创资讯-原始指标数据表的结构
 type BaseFromSci99Data struct {
-	BaseFromSciDataId  int       `orm:"column(base_from_sci_data_id);pk"` // 主键,自动递增
+	BaseFromSciDataId int `gorm:"column:base_from_sci_data_id;primaryKey"` // 主键,自动递增
+	//BaseFromSciDataId  int       `orm:"column(base_from_sci_data_id);pk"` // 主键,自动递增
 	BaseFromSciIndexId int       // 指标id
 	IndexCode          string    // 指标编码
 	DataTime           string    // 数据日期
@@ -47,69 +58,92 @@ type BaseFromSci99Data struct {
 	ModifyTime         time.Time // 修改时间
 }
 
+func (e *BaseFromSci99Data) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
 // BaseFromSci99Classify 代表卓创资讯-原始指标分类表的结构
 type BaseFromSci99Classify struct {
-	BaseFromSciClassifyId int       `orm:"column(base_from_sci_classify_id);pk"` // 主键,自动递增
-	ClassifyName          string    // 分类名称
-	Sort                  int       // 排序
-	CreateTime            time.Time // 创建时间
-	ModifyTime            time.Time // 修改时间
+	BaseFromSciClassifyId int `gorm:"column:base_from_sci_classify_id;primaryKey"` // 主键,自动递增
+	//BaseFromSciClassifyId int       `orm:"column(base_from_sci_classify_id);pk"` // 主键,自动递增
+	ClassifyName string    // 分类名称
+	Sort         int       // 排序
+	CreateTime   time.Time // 创建时间
+	ModifyTime   time.Time // 修改时间
 }
 
 func GetBaseFromSci99DataDataByCondition(condition string, pars []interface{}) (item []*BaseFromIcpiData, err error) {
 	sql := ` SELECT * FROM base_from_sci99_data WHERE 1=1 `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
+
 	return
 }
 
 // 添加数据
 func AddBaseFromSci99Index(item *BaseFromSci99Index) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromSciIndexId)
 	return
 }
 
 func AddBaseFromSci99Classify(item *BaseFromSci99Classify) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromSciClassifyId)
 	return
 }
 
 func AddBaseFromSci99DataMulti(item []*BaseFromSci99Data) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(1000, item)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(1000, item)
+	err = global.DEFAULT_DB.CreateInBatches(&item, 1000).Error
 	return
 }
 
 func GetBaseFromSci99Index() (list []*BaseFromSci99Index, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_sci99_index `
-	_, err = o.Raw(sql).QueryRows(&list)
+	//_, err = o.Raw(sql).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql).Find(&list).Error
 	return
 }
 
 func GetBaseFromSci99DataByIndexCode(indexCode string) (items []*BaseFromSci99DataItem, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_sci99_data WHERE index_code=? `
-	_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&items).Error
 	return
 }
 
 // 新增卓创资讯指标数据
 func AddEdbDataFromSci99(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	dataAll, err := GetBaseFromSci99DataByIndexCode(edbCode)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_sci99(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	existMap := make(map[string]string)
 
 	for _, sv := range dataAll {
@@ -129,7 +163,8 @@ func AddEdbDataFromSci99(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -142,7 +177,7 @@ func RefreshEdbDataFromSci99(edbInfoId int, edbCode, startDate string) (err erro
 	source := utils.DATA_SOURCE_SCI99
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -172,7 +207,7 @@ func RefreshEdbDataFromSci99(edbInfoId int, edbCode, startDate string) (err erro
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -201,6 +236,7 @@ func RefreshEdbDataFromSci99(edbInfoId int, edbCode, startDate string) (err erro
 	}
 
 	addSql := ` INSERT INTO edb_data_sci99(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	for _, v := range dataList {
 		item := v
@@ -247,7 +283,8 @@ func RefreshEdbDataFromSci99(edbInfoId int, edbCode, startDate string) (err erro
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -256,56 +293,62 @@ func RefreshEdbDataFromSci99(edbInfoId int, edbCode, startDate string) (err erro
 }
 
 func GetBaseFromSci99Classify() (list []*BaseFromSci99Classify, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_sci99_classify `
-	_, err = o.Raw(sql).QueryRows(&list)
+	//_, err = o.Raw(sql).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql).Find(&list).Error
 	return
 }
 
 func GetBaseFromTradeSci99DataAll(indexCode string) (list []*BaseFromSci99Data, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_sci99_data where index_code=?`
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	///_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&list).Error
 	return
 }
 func GetBaseFromTradeSci99LatestData(indexCode string) (date time.Time, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT data_time FROM base_from_sci99_data where index_code=? ORDER BY data_time DESC limit 1 `
-	err = o.Raw(sql, indexCode).QueryRow(&date)
+	//err = o.Raw(sql, indexCode).QueryRow(&date)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Scan(&date).Error
 	return
 }
 
 // UpdateBaseFromSci99Data
 func UpdateBaseFromSci99Data(value float64, indexCode, dataTime string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `UPDATE base_from_sci99_data SET value=?,modify_time=NOW() WHERE index_code = ? AND data_time = ? `
-	_, err = o.Raw(sql, value, indexCode, dataTime).Exec()
+	//_, err = o.Raw(sql, value, indexCode, dataTime).Exec()
+	err = global.DEFAULT_DB.Exec(sql, value, indexCode, dataTime).Error
 	return
 }
 
 func (m *BaseFromSci99Index) GetMaxAndMinDateByIndexCode(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_sci99_data WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	if err != nil {
 		return
 	}
 
 	// 获取最新值
-	var latest_value float64
 	sql = ` SELECT value AS latest_value FROM base_from_sci99_data WHERE index_code=? ORDER BY data_time DESC LIMIT 1 `
-	err = o.Raw(sql, indexCode).QueryRow(&latest_value)
-	if err != nil {
-		return
+	//err = o.Raw(sql, indexCode).QueryRow(&latest_value)
+	var latestValueNull sql2.NullFloat64
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Scan(&latestValueNull).Error
+	if err == nil && latestValueNull.Valid {
+		item.LatestValue = latestValueNull.Float64
 	}
-	item.LatestValue = latest_value
 
 	return
 }
 
 func (m *BaseFromSci99Index) ModifyIndexMaxAndMinDate(indexCode string, item *EdbInfoMaxAndMinInfo) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_sci99_index SET start_date=?,end_date=?,latest_value=?,modify_time=NOW() WHERE index_code=? `
-	_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	//_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Error
 	return
 }

+ 62 - 33
models/base_from_sci_hq.go

@@ -1,35 +1,37 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
-
-	"github.com/beego/beego/v2/client/orm"
 )
 
 func GetBaseFromSciHqDataByCondition(condition string, pars []interface{}) (list []*BaseFromSciHqData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_sci_hq_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	//_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&list).Error
 	return
 }
 
 func GetBaseFromSciHqDataByIndexCode(indexCode string) (list []*BaseFromSciHqData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_sci_hq_data WHERE 1=1 AND index_code=?`
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&list).Error
 	return
 }
 
 // AddEdbDataFromSciHq 新增卓创红期指标数据
 func AddEdbDataFromSciHq(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var condition string
 	var pars []interface{}
@@ -38,7 +40,7 @@ func AddEdbDataFromSciHq(edbCode string) (err error) {
 		pars = append(pars, edbCode)
 	}
 	sciBaseDataAll, err := GetBaseFromSciHqDataByCondition(condition, pars)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 	var isAdd bool
@@ -61,7 +63,8 @@ func AddEdbDataFromSciHq(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -74,7 +77,7 @@ func RefreshEdbDataFromSciHq(edbInfoId int, edbCode, startDate string) (err erro
 	source := utils.DATA_SOURCE_SCI_HQ
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	//计算数据
 	var condition string
@@ -101,7 +104,7 @@ func RefreshEdbDataFromSciHq(edbInfoId int, edbCode, startDate string) (err erro
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -169,7 +172,8 @@ func RefreshEdbDataFromSciHq(edbInfoId int, edbCode, startDate string) (err erro
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromSci add Err", err.Error())
 			return
@@ -190,7 +194,7 @@ type HandleSciHqExcelDataReq struct {
 }
 
 type BaseFromSciHqIndex struct {
-	BaseFromSciHqIndexId int       `orm:"column(base_from_sci_hq_index_id);pk"` //序号
+	BaseFromSciHqIndexId int       `gorm:"column:base_from_sci_hq_index_id;primaryKey"` //序号
 	IndexCode            string    `description:"指标编码"`
 	IndexName            string    `description:"指标名称"`
 	ClassifyId           int       `description:"分类id"`
@@ -205,22 +209,31 @@ type BaseFromSciHqIndex struct {
 	ModifyTime           time.Time `description:"更新时间"`
 }
 
+func (e *BaseFromSciHqIndex) AfterFind(db *gorm.DB) (err error) {
+	e.StartDate = utils.GormDateStrToDateStr(e.StartDate)
+	e.EndDate = utils.GormDateStrToDateStr(e.EndDate)
+
+	return
+}
+
 func GetAllBaseFromSciHqIndex() (items []*BaseFromSciHqIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_sci_hq_index`
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }
 
 func BatchAddBaseFromSciHqIndex(list []*BaseFromSciHqIndex) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(list), list)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(len(list), list)
+	err = global.DEFAULT_DB.CreateInBatches(list, len(list)).Error
 	return
 }
 
 type BaseFromSciHqData struct {
-	SciHqDataId          int       `orm:"column(sci_hq_data_id);pk"`         //序号
-	BaseFromSciHqIndexId int       `orm:"column(base_from_sci_hq_index_id)"` //指标id
+	SciHqDataId          int       `gorm:"column:sci_hq_data_id;primaryKey"` //序号
+	BaseFromSciHqIndexId int       `gorm:"column:base_from_sci_hq_index_id"` //指标id
 	IndexCode            string    `description:"指标编码"`
 	DataTime             string    `description:"数据时间"`
 	Value                string    `description:"数据值"`
@@ -229,45 +242,61 @@ type BaseFromSciHqData struct {
 	DataTimestamp        int64     `description:"数据时间戳"`
 }
 
+func (e *BaseFromSciHqData) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
 func (r *BaseFromSciHqData) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(r, cols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(r, cols...)
+	err = global.DEFAULT_DB.Model(&r).Select(cols).Updates(&r).Error
 	return
 }
 
 func BatchAddBaseFromSciHqData(list []*BaseFromSciHqData) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(500, list)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(500, list)
+	err = global.DEFAULT_DB.CreateInBatches(list, utils.MultiAddNum).Error
 	return
 }
 
+type LatestStruct struct {
+	LatestValue float64   `gorm:"column:latest_value"`
+	LatestDate  time.Time `gorm:"column:latest_date"`
+}
+
 func GetSciHqIndexInfoMaxAndMinInfo(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_sci_hq_data WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
-
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	if err != nil {
 		return
 	}
 
 	// 获取最新值
-	var latest_value float64
-	var latestDate string
+	//var latest_value float64
+	//var latestDate string
 
 	sql = ` SELECT value AS latest_value, data_time AS latest_date FROM base_from_sci_hq_data WHERE index_code=? ORDER BY data_time DESC LIMIT 1 `
-	err = o.Raw(sql, indexCode).QueryRow(&latest_value, &latestDate)
+	//err = o.Raw(sql, indexCode).QueryRow(&latest_value, &latestDate)
+	var latestStruct LatestStruct
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&latestStruct).Error
 	if err != nil {
 		return
 	}
-	item.LatestValue = latest_value
-	item.LatestDate = latestDate
+	item.LatestValue = latestStruct.LatestValue
+	item.LatestDate = latestStruct.LatestDate.Format(utils.FormatDate)
 
 	return
 }
 
 func ModifySciHqIndexMaxAndMinInfo(indexCode string, item *EdbInfoMaxAndMinInfo) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_sci_hq_index SET start_date=?,end_date=?,latest_value=?,latest_date=?,modify_time=NOW() WHERE index_code=? `
-	_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, item.LatestDate, indexCode).Exec()
+	//_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, item.LatestDate, indexCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.MinDate, item.MaxDate, item.LatestValue, item.LatestDate, indexCode).Error
 	return
 }

+ 76 - 42
models/base_from_sh.go

@@ -1,42 +1,52 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
 )
 
 type BaseFromTradeShIndex struct {
-	BaseFromTradeShIndexId int `orm:"column(base_from_trade_shanghai_index_id);pk"`
-	Rank                   int
-	DealShortName          string
-	DealName               string
-	DealCode               string
-	DealValue              string
-	DealChange             int
-	BuyShortName           string
-	BuyName                string
-	BuyCode                string
-	BuyValue               string
-	BuyChange              int
-	SoldShortName          string
-	SoldName               string
-	SoldCode               string
-	SoldValue              string
-	SoldChange             int
-	Frequency              string
-	ClassifyName           string
-	ClassifyType           string
-	CreateTime             time.Time
-	ModifyTime             time.Time
-	DataTime               string
+	BaseFromTradeShIndexId int `gorm:"column:base_from_trade_shanghai_index_id;primaryKey"`
+	//BaseFromTradeShIndexId int `orm:"column(base_from_trade_shanghai_index_id);pk"`
+	Rank          int
+	DealShortName string
+	DealName      string
+	DealCode      string
+	DealValue     string
+	DealChange    int
+	BuyShortName  string
+	BuyName       string
+	BuyCode       string
+	BuyValue      string
+	BuyChange     int
+	SoldShortName string
+	SoldName      string
+	SoldCode      string
+	SoldValue     string
+	SoldChange    int
+	Frequency     string
+	ClassifyName  string
+	ClassifyType  string
+	CreateTime    time.Time
+	ModifyTime    time.Time
+	DataTime      string
+}
+
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromTradeShIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
 }
 
 type BaseFromShDataSimple struct {
-	Id        int `orm:"column(base_from_trade_shanghai_index_id);pk"`
+	Id int `gorm:"column:base_from_trade_shanghai_index_id;primaryKey"`
+	//Id        int `orm:"column(base_from_trade_shanghai_index_id);pk"`
 	DealCode  string
 	BuyCode   string
 	SoldCode  string
@@ -46,22 +56,31 @@ type BaseFromShDataSimple struct {
 	SoldValue string
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromShDataSimple) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
+}
+
 func GetBaseFromShDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeShIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_trade_shanghai_index WHERE %s_code=? `
 	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&list).Error
 	return
 }
 
 func GetShDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShDataSimple, err error) {
 	sql := ` SELECT * FROM base_from_trade_shanghai_index WHERE 1=1 `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
@@ -76,10 +95,10 @@ func AddEdbDataFromSh(edbCode string) (err error) {
 		suffix = "sold"
 	}
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	shBaseDataAll, err := GetBaseFromShDataAllByIndexCode(edbCode, suffix)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 
@@ -117,7 +136,8 @@ func AddEdbDataFromSh(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -130,7 +150,7 @@ func RefreshEdbDataFromSh(edbInfoId int, edbCode, startDate string) (err error)
 	source := utils.DATA_SOURCE_SH
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -174,7 +194,7 @@ func RefreshEdbDataFromSh(edbInfoId int, edbCode, startDate string) (err error)
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -257,7 +277,8 @@ func RefreshEdbDataFromSh(edbInfoId int, edbCode, startDate string) (err error)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -302,7 +323,7 @@ type SHMessage struct {
 }
 
 type BaseFromTradeShanghaiIndex struct {
-	BaseFromTradeShangHaiIndexId int `orm:"column(base_from_trade_shanghai_index_id);pk"`
+	BaseFromTradeShangHaiIndexId int `gorm:"column:base_from_trade_shanghai_index_id;primaryKey"`
 	Rank                         int
 	DealShortName                string
 	DealName                     string
@@ -327,22 +348,35 @@ type BaseFromTradeShanghaiIndex struct {
 	DataTime                     string
 }
 
+func (e *BaseFromTradeShanghaiIndex) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
 func AddBaseFromTradeShangHaiIndex(item *BaseFromTradeShanghaiIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromTradeShangHaiIndexId)
 	return
 }
 
 func GetBaseFromTradeShangHaiIndexAll(dateStr string) (list []*BaseFromTradeShanghaiIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_trade_shanghai_index WHERE data_time=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	//_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
 func ModifyBaseFromTradeShangHaiIndex(dealValue, buyValue, soldValue int, dataId int) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `UPDATE base_from_trade_shanghai_index SET deal_value=?,buy_value=?,sold_value=?,modify_time=NOW() WHERE base_from_trade_shanghai_index_id=? `
-	_, err = o.Raw(sql, dealValue, buyValue, soldValue, dataId).Exec()
+	//_, err = o.Raw(sql, dealValue, buyValue, soldValue, dataId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, dealValue, buyValue, soldValue, dataId).Error
 	return
 }

+ 107 - 72
models/base_from_shfe.go

@@ -1,50 +1,61 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
 )
 
 type BaseFromTradeShfeIndex struct {
-	BaseFromTradeShfeIndexId int `orm:"column(base_from_trade_ine_index_id);pk"`
-	Rank                     int
-	DealShortName            string
-	DealName                 string
-	DealCode                 string
-	DealValue                string
-	DealChange               int
-	BuyShortName             string
-	BuyName                  string
-	BuyCode                  string
-	BuyValue                 string
-	BuyChange                int
-	SoldShortName            string
-	SoldName                 string
-	SoldCode                 string
-	SoldValue                string
-	SoldChange               int
-	Frequency                string
-	ClassifyName             string
-	ClassifyType             string
-	CreateTime               time.Time
-	ModifyTime               time.Time
-	DataTime                 string
+	BaseFromTradeShfeIndexId int `gorm:"column:base_from_trade_ine_index_id;primaryKey"`
+	//BaseFromTradeShfeIndexId int `orm:"column(base_from_trade_ine_index_id);pk"`
+	Rank          int
+	DealShortName string
+	DealName      string
+	DealCode      string
+	DealValue     string
+	DealChange    int
+	BuyShortName  string
+	BuyName       string
+	BuyCode       string
+	BuyValue      string
+	BuyChange     int
+	SoldShortName string
+	SoldName      string
+	SoldCode      string
+	SoldValue     string
+	SoldChange    int
+	Frequency     string
+	ClassifyName  string
+	ClassifyType  string
+	CreateTime    time.Time
+	ModifyTime    time.Time
+	DataTime      string
+}
+
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromTradeShfeIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
 }
 
 func GetBaseFromShfeDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeShfeIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_trade_ine_index WHERE %s_code=? `
 	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&list).Error
 	return
 }
 
 type BaseFromShfeDataSimple struct {
-	Id        int `orm:"column(base_from_trade_ine_index_id);pk"`
+	Id int `gorm:"column(base_from_trade_ine_index_id);primaryKey"`
+	//Id        int `orm:"column(base_from_trade_ine_index_id);pk"`
 	DealCode  string
 	BuyCode   string
 	SoldCode  string
@@ -56,12 +67,13 @@ type BaseFromShfeDataSimple struct {
 
 func GetShfeDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShfeDataSimple, err error) {
 	sql := ` SELECT * FROM base_from_trade_ine_index WHERE 1=1 `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
@@ -75,14 +87,15 @@ func AddEdbDataFromShfe(edbCode string) (err error) {
 	} else if strings.Contains(edbCode, "sold") {
 		suffix = "sold"
 	}
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	ineBaseDataAll, err := GetBaseFromShfeDataAllByIndexCode(edbCode, suffix)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_ine(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	existMap := make(map[string]string)
 
 	for _, sv := range ineBaseDataAll {
@@ -115,7 +128,8 @@ func AddEdbDataFromShfe(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -128,7 +142,7 @@ func RefreshEdbDataFromShfe(edbInfoId int, edbCode, startDate string) (err error
 	source := utils.DATA_SOURCE_SHFE
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -172,7 +186,7 @@ func RefreshEdbDataFromShfe(edbInfoId int, edbCode, startDate string) (err error
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -255,7 +269,8 @@ func RefreshEdbDataFromShfe(edbInfoId int, edbCode, startDate string) (err error
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -264,69 +279,89 @@ func RefreshEdbDataFromShfe(edbInfoId int, edbCode, startDate string) (err error
 }
 
 type BaseFromTradeIneIndex struct {
-	BaseFromTradeIneIndexId int `orm:"column(base_from_trade_ine_index_id);pk"`
-	Rank                    int
-	DealShortName           string
-	DealName                string
-	DealCode                string
-	DealValue               int
-	DealChange              int
-	BuyShortName            string
-	BuyName                 string
-	BuyCode                 string
-	BuyValue                int
-	BuyChange               int
-	SoldShortName           string
-	SoldName                string
-	SoldCode                string
-	SoldValue               int
-	SoldChange              int
-	Frequency               string
-	ClassifyName            string
-	ClassifyType            string
-	CreateTime              time.Time
-	ModifyTime              time.Time
-	DataTime                string
+	BaseFromTradeIneIndexId int `gorm:"column:base_from_trade_ine_index_id;primaryKey"`
+	//BaseFromTradeIneIndexId int `orm:"column(base_from_trade_ine_index_id);pk"`
+	Rank          int
+	DealShortName string
+	DealName      string
+	DealCode      string
+	DealValue     int
+	DealChange    int
+	BuyShortName  string
+	BuyName       string
+	BuyCode       string
+	BuyValue      int
+	BuyChange     int
+	SoldShortName string
+	SoldName      string
+	SoldCode      string
+	SoldValue     int
+	SoldChange    int
+	Frequency     string
+	ClassifyName  string
+	ClassifyType  string
+	CreateTime    time.Time
+	ModifyTime    time.Time
+	DataTime      string
+}
+
+func (e *BaseFromTradeIneIndex) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
 }
 
 type BaseFromTradeMapping struct {
-	BaseFromTradeMappingId int `orm:"column(base_from_trade_mapping_id);pk"`
-	IndexName              string
-	IndexCode              string
-	Exchange               string
+	BaseFromTradeMappingId int `gorm:"column:base_from_trade_mapping_id;primaryKey"`
+	//BaseFromTradeMappingId int `orm:"column(base_from_trade_mapping_id);pk"`
+	IndexName string
+	IndexCode string
+	Exchange  string
 }
 
 func AddBaseFromTradeIneIndex(item *BaseFromTradeIneIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromTradeIneIndexId)
 	return
 }
 
 func GetBaseFromTradeIneIndexAll(dateStr string) (list []*BaseFromTradeIneIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_trade_ine_index where data_time=?`
-	_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	//_, err = o.Raw(sql, dateStr).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, dateStr).Find(&list).Error
 	return
 }
 
 func ModifyBaseFromTradeIneIndex(dealValue, buyValue, soldValue int, dataId int) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `UPDATE base_from_trade_ine_index SET deal_value=?,buy_value=?,sold_value=?,modify_time=NOW() WHERE base_from_trade_ine_index_id=? `
-	_, err = o.Raw(sql, dealValue, buyValue, soldValue, dataId).Exec()
+	//_, err = o.Raw(sql, dealValue, buyValue, soldValue, dataId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, dealValue, buyValue, soldValue, dataId).Error
 	return
 }
 
 func GetIndexCodeFromMapping(exchange string) (list []*BaseFromTradeMapping, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_trade_mapping where exchange=?`
-	_, err = o.Raw(sql, exchange).QueryRows(&list)
+	sql = utils.ReplaceDriverKeywords("", sql)
+
+	//_, err = o.Raw(sql, exchange).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, exchange).Find(&list).Error
 	return
 }
 
 func AddBaseFromTradeMapping(indexName, indexCode, exchange string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := "Insert Into base_from_trade_mapping(index_name,index_code,exchange) Values('" + indexName + "','" + indexCode + "','" + exchange + "')"
-	_, err = o.Raw(sql).Exec()
+	sql = utils.ReplaceDriverKeywords("", sql)
+	//_, err = o.Raw(sql).Exec()
+	err = global.DEFAULT_DB.Exec(sql).Error
 	return
 }
 

+ 194 - 101
models/base_from_smm.go

@@ -1,17 +1,19 @@
 package models
 
 import (
+	sql2 "database/sql"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
-
-	"github.com/beego/beego/v2/client/orm"
 )
 
 type BaseFromSmmData struct {
-	SmmDataId          int `orm:"column(smm_data_id);pk"`
+	SmmDataId int `gorm:"column:smm_data_id;primaryKey"`
+	//SmmDataId          int `orm:"column(smm_data_id);pk"`
 	BaseFromSmmIndexId int
 	IndexCode          string
 	DataTime           string
@@ -21,42 +23,68 @@ type BaseFromSmmData struct {
 	DataTimestamp      int64
 }
 
+func (e *BaseFromSmmData) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
 func (s *BaseFromSmmData) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(s, cols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(s, cols...)
+	err = global.DEFAULT_DB.Model(&s).Select(cols).Updates(&s).Error
+
 	return
 }
 
 func AddBaseFromSmmData(item []*BaseFromSmmData) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(500, item)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(500, item)
+	err = global.DEFAULT_DB.CreateInBatches(item, utils.MultiAddNum).Error
 	return
 }
 
 func GetBaseFromSmmDataByCondition(condition string, pars []interface{}) (list []*BaseFromSmmData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_smm_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	//_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&list).Error
 	return
 }
 
 func UpdateBaseFromSmmDataListByIndexCode(items []*BaseFromSmmData) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
+	to := global.DEFAULT_DB.Begin()
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+
 	sql := `UPDATE base_from_smm_data SET value=? WHERE index_code=? AND data_time=? `
-	stmt, err := o.Raw(sql).Prepare()
-	if err != nil {
-		return
-	}
-	defer stmt.Close()
 	for _, item := range items {
-		_, err = stmt.Exec(item.Value, item.IndexCode, item.DataTime)
+		err = to.Exec(sql, item.Value, item.IndexCode, item.DataTime).Error
 		if err != nil {
 			return
 		}
 	}
+	//stmt, err := o.Raw(sql).Prepare()
+	//if err != nil {
+	//	return
+	//}
+	//defer stmt.Close()
+	//for _, item := range items {
+	//	_, err = stmt.Exec(item.Value, item.IndexCode, item.DataTime)
+	//	if err != nil {
+	//		return
+	//	}
+	//}
+
 	return
 }
 
@@ -64,22 +92,25 @@ func GetBaseFromSmmDataByIds(smmDataIds []int) (list []*BaseFromSmmData, err err
 	if len(smmDataIds) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	sql := `SELECT * FROM base_from_smm_data WHERE 1=1 AND base_from_smm_index_id in (` + utils.GetOrmInReplace(len(smmDataIds)) + `)`
-	_, err = o.Raw(sql, smmDataIds).QueryRows(&list)
+	//o := orm.NewOrm()
+	//sql := `SELECT * FROM base_from_smm_data WHERE 1=1 AND base_from_smm_index_id in (` + utils.GetOrmInReplace(len(smmDataIds)) + `)`
+	sql := `SELECT * FROM base_from_smm_data WHERE 1=1 AND base_from_smm_index_id in ?`
+	//_, err = o.Raw(sql, smmDataIds).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, smmDataIds).Find(&list).Error
 	return
 }
 
 func GetBaseFromSmmDataByCodeAndDate(indexCode string, dataTime string) (item *BaseFromSmmData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_smm_data WHERE 1=1 AND index_code=? AND data_time=? `
-	err = o.Raw(sql, indexCode, dataTime).QueryRow(&item)
+	//err = o.Raw(sql, indexCode, dataTime).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode, dataTime).First(&item).Error
 	return
 }
 
 // 新增有色指标数据
 func AddEdbDataFromSmm(edbCode string, smmBaseDataAll []*BaseFromSmmData) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_ys(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	existMap := make(map[string]string)
@@ -100,7 +131,8 @@ func AddEdbDataFromSmm(edbCode string, smmBaseDataAll []*BaseFromSmmData) (err e
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -113,7 +145,7 @@ func RefreshEdbDataFromSmm(edbInfoId int, edbCode, startDate string) (err error)
 	source := utils.DATA_SOURCE_YS
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -143,7 +175,7 @@ func RefreshEdbDataFromSmm(edbInfoId int, edbCode, startDate string) (err error)
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -211,7 +243,8 @@ func RefreshEdbDataFromSmm(edbInfoId int, edbCode, startDate string) (err error)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
+		//_, err = o.Raw(addSql).Exec()
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromSmm add Err", err.Error())
 			return
@@ -221,92 +254,114 @@ func RefreshEdbDataFromSmm(edbInfoId int, edbCode, startDate string) (err error)
 }
 
 type BaseFromSmmIndex struct {
-	BaseFromSmmIndexId int64 `orm:"column(base_from_smm_index_id);pk"`
-	ClassifyId         int
-	Interface          string
-	Name               string
-	IndexCode          string
-	IndexName          string
-	Type1              string `orm:"column(type_1)"`
-	Type2              string `orm:"column(type_2)"`
-	Type3              string `orm:"column(type_3)"`
-	Frequency          string
-	Unit               string
-	ApiStartTime       string
-	ApiUpdateTime      string
-	StartTime          string
-	FinishTime         string
-	BaseFileName       string
-	RenameFileName     string
-	StartDate          string
-	EndDate            string
-	TerminalCode       string `description:"编码"`
-	CreateTime         time.Time
-	ModifyTime         time.Time
-	DataState          string
-	ReleaseTime        string
+	BaseFromSmmIndexId int64 `gorm:"column:base_from_smm_index_id;primaryKey"`
+	//BaseFromSmmIndexId int64 `orm:"column(base_from_smm_index_id);pk"`
+	ClassifyId     int
+	Interface      string
+	Name           string
+	IndexCode      string
+	IndexName      string
+	Type1          string `gorm:"column:type_1"`
+	Type2          string `gorm:"column:type_2"`
+	Type3          string `gorm:"column:type_3"`
+	Frequency      string
+	Unit           string
+	ApiStartTime   string
+	ApiUpdateTime  string
+	StartTime      string
+	FinishTime     string
+	BaseFileName   string
+	RenameFileName string
+	StartDate      string
+	EndDate        string
+	TerminalCode   string `description:"编码"`
+	CreateTime     time.Time
+	ModifyTime     time.Time
+	DataState      string
+	ReleaseTime    string
+}
+
+func (e *BaseFromSmmIndex) AfterFind(db *gorm.DB) (err error) {
+	e.ApiStartTime = utils.GormDateStrToDateTimeStr(e.ApiStartTime)
+	e.ApiUpdateTime = utils.GormDateStrToDateTimeStr(e.ApiUpdateTime)
+	e.StartTime = utils.GormDateStrToDateTimeStr(e.StartTime)
+	e.FinishTime = utils.GormDateStrToDateTimeStr(e.FinishTime)
+
+	return
 }
 
 func (d *BaseFromSmmIndex) AddBaseFromSmmIndex() (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(d)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(d)
+	err = global.DEFAULT_DB.Create(&d).Error
+	if err != nil {
+		return
+	}
+	lastId = d.BaseFromSmmIndexId
 	return
 }
 
 func (d *BaseFromSmmIndex) GetSmmIndexItem(indexCode string) (item *BaseFromSmmIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_smm_index WHERE index_code=? `
 
-	fmt.Println(sql, indexCode)
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//fmt.Println(sql, indexCode)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	return
 }
 
 // Add 新增
 func (m *BaseFromSmmIndex) Add() (err error) {
-	o := orm.NewOrm()
-	_, err = o.Insert(m)
+	//o := orm.NewOrm()
+	//_, err = o.Insert(m)
+	err = global.DEFAULT_DB.Create(&m).Error
+
 	return
 }
 
 func GetBaseFromSmmDataBySmmCode(smmCode string) (list []*BaseFromSmmData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_smm_data WHERE index_code=? `
-	_, err = o.Raw(sql, smmCode).QueryRows(&list)
+	//_, err = o.Raw(sql, smmCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, smmCode).Find(&list).Error
 	return
 }
 
 func ModifySmmIndexSort(baseFromSmmIndexId int64) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_smm_index SET sort=? WHERE base_from_smm_index_id=? `
-	_, err = o.Raw(sql, baseFromSmmIndexId, baseFromSmmIndexId).Exec()
+	//_, err = o.Raw(sql, baseFromSmmIndexId, baseFromSmmIndexId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, baseFromSmmIndexId, baseFromSmmIndexId).Error
 	return
 }
 
 func GetSmmIndexInfoMaxAndMinInfo(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_smm_data WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	if err != nil {
 		return
 	}
 
 	// 获取最新值
-	var latest_value float64
 	sql = ` SELECT value AS latest_value FROM base_from_smm_data WHERE index_code=? ORDER BY data_time DESC LIMIT 1 `
-	err = o.Raw(sql, indexCode).QueryRow(&latest_value)
-	if err != nil {
-		return
+	//err = o.Raw(sql, indexCode).QueryRow(&latest_value)
+	var latestValueNull sql2.NullFloat64
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Scan(&latestValueNull).Error
+	if err == nil && latestValueNull.Valid {
+		item.LatestValue = latestValueNull.Float64
 	}
-	item.LatestValue = latest_value
 
 	return
 }
 
 func ModifySmmIndexMaxAndMinInfo(indexCode string, item *EdbInfoMaxAndMinInfo) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_smm_index SET start_date=?,end_date=?,end_value=?,modify_time=NOW() WHERE index_code=? `
-	_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	//_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Error
 	return
 }
 
@@ -329,24 +384,42 @@ func MultiUpdateBaseFromSmmDataValue(items []*BaseFromSmmData) (err error) {
 		return
 	}
 
-	o := orm.NewOrm()
-	sql := `UPDATE base_from_smm_data SET value = ?, modify_time = NOW() WHERE index_code = ? AND data_time = ? LIMIT 1`
-	p, err := o.Raw(sql).Prepare()
-	if err != nil {
-		return
-	}
+	//o := orm.NewOrm()
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
-		_ = p.Close()
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
 	}()
+	sql := `UPDATE base_from_smm_data SET value = ?, modify_time = NOW() WHERE index_code = ? AND data_time = ? LIMIT 1`
 	for _, v := range items {
 		if v.IndexCode == "" || v.DataTime == "" {
 			continue
 		}
-		_, err = p.Exec(v.Value, v.IndexCode, v.DataTime)
+		//_, err = o.Raw(sql, v.Value, v.IndexCode, v.DataTime).Exec()
+		err = to.Exec(sql, v.Value, v.IndexCode, v.DataTime).Error
 		if err != nil {
 			return
 		}
 	}
+	//p, err := o.Raw(sql).Prepare()
+	//if err != nil {
+	//	return
+	//}
+	//defer func() {
+	//	_ = p.Close()
+	//}()
+	//for _, v := range items {
+	//	if v.IndexCode == "" || v.DataTime == "" {
+	//		continue
+	//	}
+	//	_, err = p.Exec(v.Value, v.IndexCode, v.DataTime)
+	//	if err != nil {
+	//		return
+	//	}
+	//}
 	return
 }
 
@@ -358,22 +431,35 @@ type AddSmmIndexToDataSourceResp struct {
 }
 
 func (m *BaseFromSmmIndex) GetIndexItem(indexCode string) (item *BaseFromSmmIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_smm_index WHERE index_code = ? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	return
 }
 
 // 修改
 func (m *BaseFromSmmIndex) Update(updateParams, whereParam map[string]interface{}) (err error) {
-	to := orm.NewOrm()
-	ptrStructOrTableName := "base_from_smm_index"
+	//to := orm.NewOrm()
+	tx := global.DEFAULT_DB.Model(&BaseFromSmmIndex{})
+
+	//ptrStructOrTableName := "base_from_smm_index"
 
-	qs := to.QueryTable(ptrStructOrTableName)
+	//qs := to.QueryTable(ptrStructOrTableName)
+	//for expr, exprV := range whereParam {
+	//	qs = qs.Filter(expr, exprV)
+	//}
 	for expr, exprV := range whereParam {
-		qs = qs.Filter(expr, exprV)
+		tx = tx.Where(expr, exprV)
 	}
-	_, err = qs.Update(updateParams)
+	//_, err = qs.Update(updateParams)
+	// 执行更新操作
+	result := tx.Updates(updateParams)
+	if result.Error != nil {
+		err = fmt.Errorf("update err: %s", result.Error.Error())
+		return
+	}
+
 	return
 }
 
@@ -455,8 +541,9 @@ type SmmListResp struct {
 }
 
 func AddBaseFromSmmIndex(list []*BaseFromSmmIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(list), list)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(len(list), list)
+	err = global.DEFAULT_DB.CreateInBatches(list, len(list)).Error
 	return
 }
 
@@ -467,29 +554,33 @@ type BridgeZhongJiIndexLatestDataParams struct {
 }
 
 func GetBaseFromSmmIndex() (list []*BaseFromSmmIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_smm_index`
-	_, err = o.Raw(sql).QueryRows(&list)
+	//_, err = o.Raw(sql).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql).Find(&list).Error
 	return
 }
 
 func ModifyBaseFromSmmIndex(item *BaseFromSmmIndex) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_smm_index SET end_date = ?, modify_time=NOW(), data_state= ? `
-	_, err = o.Raw(sql, item.EndDate, item.DataState).Exec()
+	//_, err = o.Raw(sql, item.EndDate, item.DataState).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.EndDate, item.DataState).Error
 	return
 }
 
 func (m *BaseFromSmmIndex) UpdateCols(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(m, cols...)
+	err = global.DEFAULT_DB.Model(&m).Select(cols).Updates(&m).Error
 	return
 }
 
 func ModifyBaseFromSmmIndexDate(item *BaseFromSmmIndex) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_smm_index SET end_date = ?, modify_time=NOW(), data_state= ? WHERE base_from_smm_index_id=?`
-	_, err = o.Raw(sql, item.EndDate, item.DataState, item.BaseFromSmmIndexId).Exec()
+	//_, err = o.Raw(sql, item.EndDate, item.DataState, item.BaseFromSmmIndexId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.EndDate, item.DataState, item.BaseFromSmmIndexId).Error
 	return
 }
 
@@ -524,7 +615,7 @@ func RefreshEdbDataFromSmmToEdb(edbInfoId int, edbCode, startDate string, smmDat
 	source := utils.DATA_SOURCE_YS
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -549,7 +640,7 @@ func RefreshEdbDataFromSmmToEdb(edbInfoId int, edbCode, startDate string, smmDat
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -617,7 +708,8 @@ func RefreshEdbDataFromSmmToEdb(edbInfoId int, edbCode, startDate string, smmDat
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromSmm add Err", err.Error())
 			return
@@ -627,7 +719,7 @@ func RefreshEdbDataFromSmmToEdb(edbInfoId int, edbCode, startDate string, smmDat
 }
 
 type BaseFromSmmRecord struct {
-	BaseFromSmmRecordId int64 `orm:"column(base_from_smm_record_id);pk"`
+	BaseFromSmmRecordId int64 `gorm:"column:base_from_smm_record_id;primaryKey"`
 	BaseFromSmmIndexId  int64
 	OldIndexName        string    `description:"原始名称"`
 	NewIndexName        string    `description:"新的名称"`
@@ -636,7 +728,8 @@ type BaseFromSmmRecord struct {
 }
 
 func AddBaseFromSmmRecord(item *BaseFromSmmRecord) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//_, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
 	return
 }

+ 13 - 6
models/base_from_smm_classify.go

@@ -1,14 +1,15 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"time"
 )
 
 type BaseFromSmmClassify struct {
-	ClassifyId      int       `orm:"column(classify_id);pk"`
+	ClassifyId int `gorm:"column:classify_id;primaryKey"`
+	//ClassifyId      int       `orm:"column(classify_id);pk"`
 	ClassifyName    string    `description:"分类名称"`
 	ParentId        int       `description:"父级id"`
 	SysUserId       int       `description:"创建人id"`
@@ -20,8 +21,13 @@ type BaseFromSmmClassify struct {
 }
 
 func AddSmmClassify(item *BaseFromSmmClassify) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(&item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.ClassifyId)
 	return
 }
 
@@ -35,9 +41,10 @@ type AddSmmClassifyReq struct {
 
 // 判断分类名称是否存在
 func GetSmmClassify(classifyName string, parentId int) (item *BaseFromSmmClassify, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_smm_classify WHERE parent_id=? AND classify_name=? `
-	err = o.Raw(sql, parentId, classifyName).QueryRow(&item)
+	//err = o.Raw(sql, parentId, classifyName).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, parentId, classifyName).First(&item).Error
 	return
 }
 

+ 20 - 9
models/base_from_stock_plant.go

@@ -1,10 +1,11 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/models/supply_analysis"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -12,10 +13,18 @@ import (
 
 // StockPlantEdbdata 存量装置数据
 type StockPlantEdbdata struct {
-	VarietyEdbId string    `orm:"column(variety_edb_id);pk" description:"指标编码"`
-	DataTime     string    `orm:"column(data_time)" description:"日期"`
-	Value        string    `orm:"column(value)" description:"值"`
-	ModifyTime   time.Time `orm:"column(modify_time)" description:"修改时间"`
+	VarietyEdbId string `gorm:"column:variety_edb_id;primaryKey" description:"指标编码"`
+	//VarietyEdbId string    `orm:"column(variety_edb_id);pk" description:"指标编码"`
+	DataTime   string    `gorm:"column:data_time" description:"日期"`
+	Value      string    `gorm:"column:value" description:"值"`
+	ModifyTime time.Time `gorm:"column:modify_time" description:"修改时间"`
+}
+
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *StockPlantEdbdata) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
 }
 
 func GetStockPlantEdbDataByCondition(condition string, pars []interface{}) (item []*StockPlantEdbdata, err error) {
@@ -24,8 +33,9 @@ func GetStockPlantEdbDataByCondition(condition string, pars []interface{}) (item
 		sql += condition
 	}
 	sql += ` ORDER BY data_time DESC `
-	o := orm.NewOrm()
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//o := orm.NewOrm()
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
@@ -34,7 +44,7 @@ func RefreshEdbDataFromStockPlant(edbInfoId int, edbCode, startDate string) (err
 	source := utils.DATA_SOURCE_STOCK_PLANT
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -121,7 +131,8 @@ func RefreshEdbDataFromStockPlant(edbInfoId int, edbCode, startDate string) (err
 	// 将数据入库
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshAllEdbDataByStockPlant add Err", err.Error())
 			return

+ 10 - 6
models/base_from_ths.go

@@ -1,10 +1,10 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/services/alarm_msg"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"strings"
 	"time"
@@ -27,8 +27,8 @@ type Tables struct {
 
 // 新增同花顺指标数据
 func AddEdbDataFromThs(edbCode string, item EdbDataFromThs) (err error) {
+	//o := orm.NewOrm()
 	var errMsg string
-	o := orm.NewOrm()
 	defer func() {
 		if err != nil {
 			//go utils.SendEmail(utils.APP_NAME_CN+"【"+utils.RunMode+"】"+"失败提醒", " 同花顺数据获取失败:err:"+errMsg, utils.EmailSendToUsers)
@@ -42,6 +42,7 @@ func AddEdbDataFromThs(edbCode string, item EdbDataFromThs) (err error) {
 
 		var isAdd bool
 		addSql := ` INSERT INTO %s(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+		addSql = utils.ReplaceDriverKeywords("", addSql)
 		tableName := GetEdbDataTableName(utils.DATA_SOURCE_THS, utils.DATA_SUB_SOURCE_EDB)
 		addSql = fmt.Sprintf(addSql, tableName)
 
@@ -60,7 +61,8 @@ func AddEdbDataFromThs(edbCode string, item EdbDataFromThs) (err error) {
 		}
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
-			_, err = o.Raw(addSql).Exec()
+			//_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
 				errMsg = " tx.Exec Err :" + err.Error()
 				return
@@ -72,7 +74,7 @@ func AddEdbDataFromThs(edbCode string, item EdbDataFromThs) (err error) {
 
 // 刷新同花顺指标数据
 func RefreshEdbDataFromThs(edbInfoId int, edbCode, startDate string, item EdbDataFromThs) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	source := utils.DATA_SOURCE_THS
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
@@ -82,7 +84,7 @@ func RefreshEdbDataFromThs(edbInfoId int, edbCode, startDate string, item EdbDat
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -114,6 +116,7 @@ func RefreshEdbDataFromThs(edbInfoId int, edbCode, startDate string, item EdbDat
 		table := item.Tables[0]
 		dataLen := len(table.Time)
 		addSql := ` INSERT INTO edb_data_ths(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+		addSql = utils.ReplaceDriverKeywords("", addSql)
 		var isAdd bool
 		addMap := make(map[string]string)
 		edbInfoIdStr := strconv.Itoa(edbInfoId)
@@ -159,7 +162,8 @@ func RefreshEdbDataFromThs(edbInfoId int, edbCode, startDate string, item EdbDat
 
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
-			_, err = o.Raw(addSql).Exec()
+			//_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
 				return err
 			}

+ 16 - 10
models/base_from_ths_ds.go

@@ -1,9 +1,9 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"strings"
 	"time"
@@ -12,14 +12,15 @@ import (
 var thsds = "thsds"
 
 // 新增同花顺指标数据
-func AddEdbDataFromThsDs(stockCode,edbCode string, item EdbDataFromThs) (err error) {
-	o := orm.NewOrm()
+func AddEdbDataFromThsDs(stockCode, edbCode string, item EdbDataFromThs) (err error) {
+	//o := orm.NewOrm()
 
 	edbCodeList := strings.Split(edbCode, ",")
 	indexCodeMap := make(map[string]string)
 	if len(item.Tables) > 0 {
 		var isAdd bool
 		addSql := ` INSERT INTO edb_data_ths_ds(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+		addSql = utils.ReplaceDriverKeywords("", addSql)
 		for k, table := range item.Tables {
 			dataLen := len(table.Value)
 			for i := 0; i < dataLen; i++ {
@@ -35,7 +36,7 @@ func AddEdbDataFromThsDs(stockCode,edbCode string, item EdbDataFromThs) (err err
 				}
 				timestamp := dataTime.UnixNano() / 1e6
 				timeStr := fmt.Sprintf("%d", timestamp)
-				indexCode := thsds+stockCode+code
+				indexCode := thsds + stockCode + code
 				indexCodeMap[indexCode] = indexCode
 				addSql += GetAddSql("0", indexCode, eDate, timeStr, utils.SubFloatToString(sValue, 20))
 				isAdd = true
@@ -45,13 +46,15 @@ func AddEdbDataFromThsDs(stockCode,edbCode string, item EdbDataFromThs) (err err
 			for _, v := range indexCodeMap {
 				var count int
 				sql := ` SELECT COUNT(1) FROM edb_data_ths_ds WHERE edb_code=? `
-				err = o.Raw(sql, v).QueryRow(&count)
+				//err = o.Raw(sql, v).QueryRow(&count)
+				err = global.DEFAULT_DB.Raw(sql, v).Scan(&count).Error
 				if err != nil {
 					return err
 				}
 				if count > 0 {
 					sql = ` DELETE FROM edb_data_ths_ds WHERE edb_code=? `
-					_, err = o.Raw(sql, v).Exec()
+					//_, err = o.Raw(sql, v).Exec()
+					err = global.DEFAULT_DB.Exec(sql, v).Error
 					if err != nil {
 						return err
 					}
@@ -59,7 +62,8 @@ func AddEdbDataFromThsDs(stockCode,edbCode string, item EdbDataFromThs) (err err
 			}
 
 			addSql = strings.TrimRight(addSql, ",")
-			_, err = o.Raw(addSql).Exec()
+			//_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
 				return
 			}
@@ -70,7 +74,7 @@ func AddEdbDataFromThsDs(stockCode,edbCode string, item EdbDataFromThs) (err err
 
 // 刷新同花顺指标数据
 func RefreshEdbDataFromThsDs(edbInfoId int, edbCode, startDate string, item EdbDataFromThs) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	source := utils.DATA_SOURCE_THS
 	subSource := utils.DATA_SUB_SOURCE_DATE
 
@@ -80,7 +84,7 @@ func RefreshEdbDataFromThsDs(edbInfoId int, edbCode, startDate string, item EdbD
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -112,6 +116,7 @@ func RefreshEdbDataFromThsDs(edbInfoId int, edbCode, startDate string, item EdbD
 		table := item.Tables[0]
 		dataLen := len(table.Time)
 		addSql := ` INSERT INTO edb_data_ths_ds(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+		addSql = utils.ReplaceDriverKeywords("", addSql)
 		var isAdd bool
 		addMap := make(map[string]string)
 		edbInfoIdStr := strconv.Itoa(edbInfoId)
@@ -157,7 +162,8 @@ func RefreshEdbDataFromThsDs(edbInfoId int, edbCode, startDate string, item EdbD
 
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
-			_, err = o.Raw(addSql).Exec()
+			//_, err = o.Raw(addSql).Exec()
+			err = global.DEFAULT_DB.Exec(addSql).Error
 			if err != nil {
 				return err
 			}

+ 44 - 29
models/base_from_ths_hf.go

@@ -1,10 +1,10 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/models/mgo"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"go.mongodb.org/mongo-driver/bson"
 	"strings"
 	"time"
@@ -18,7 +18,8 @@ var (
 
 // BaseFromThsHfIndex 同花顺高频数据
 type BaseFromThsHfIndex struct {
-	BaseFromThsHfIndexId    int       `orm:"column(base_from_ths_hf_index_id);pk"`
+	BaseFromThsHfIndexId int `gorm:"column:base_from_ths_hf_index_id;primaryKey"`
+	//BaseFromThsHfIndexId    int       `orm:"column(base_from_ths_hf_index_id);pk"`
 	BaseFromThsHfClassifyId int       `description:"分类ID"`
 	IndexCode               string    `description:"指标编码"`
 	IndexName               string    `description:"指标名称"`
@@ -96,12 +97,13 @@ func (m *BaseFromThsHfIndex) Cols() BaseFromThsHfIndexCols {
 }
 
 func (m *BaseFromThsHfIndex) Create() (err error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.BaseFromThsHfIndexId = int(id)
+	//o := orm.NewOrm()
+	//id, err := o.Insert(m)
+	err = global.DEFAULT_DB.Create(&m).Error
+	//if err != nil {
+	//	return
+	//}
+	//m.BaseFromThsHfIndexId = int(id)
 	return
 }
 
@@ -109,21 +111,24 @@ func (m *BaseFromThsHfIndex) CreateMulti(items []*BaseFromThsHfIndex) (err error
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(items), items)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(len(items), items)
+	err = global.DEFAULT_DB.CreateInBatches(items, len(items)).Error
 	return
 }
 
 func (m *BaseFromThsHfIndex) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(m, cols...)
+	err = global.DEFAULT_DB.Model(&m).Select(cols).Updates(&m).Error
 	return
 }
 
 func (m *BaseFromThsHfIndex) Remove() (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	_, err = o.Raw(sql, m.BaseFromThsHfIndexId).Exec()
+	//_, err = o.Raw(sql, m.BaseFromThsHfIndexId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, m.BaseFromThsHfIndexId).Error
 	return
 }
 
@@ -131,9 +136,11 @@ func (m *BaseFromThsHfIndex) MultiRemove(ids []int) (err error) {
 	if len(ids) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
-	_, err = o.Raw(sql, ids).Exec()
+	//o := orm.NewOrm()
+	//sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
+	//_, err = o.Raw(sql, ids).Exec()
+	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN ?`, m.TableName(), m.Cols().PrimaryId)
+	err = global.DEFAULT_DB.Exec(sql, ids).Error
 	return
 }
 
@@ -141,39 +148,43 @@ func (m *BaseFromThsHfIndex) RemoveByCondition(condition string, pars []interfac
 	if condition == "" {
 		return
 	}
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
-	_, err = o.Raw(sql, pars).Exec()
+	//_, err = o.Raw(sql, pars).Exec()
+	err = global.DEFAULT_DB.Exec(sql, pars...).Error
 	return
 }
 
 func (m *BaseFromThsHfIndex) GetItemById(id int) (item *BaseFromThsHfIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	err = o.Raw(sql, id).QueryRow(&item)
+	//err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, id).First(&item).Error
 	return
 }
 
 func (m *BaseFromThsHfIndex) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *BaseFromThsHfIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	order := ``
 	if orderRule != "" {
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	//err = o.Raw(sql, pars).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).First(&item).Error
 	return
 }
 
 func (m *BaseFromThsHfIndex) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	//err = o.Raw(sql, pars).QueryRow(&count)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
 func (m *BaseFromThsHfIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromThsHfIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -183,12 +194,14 @@ func (m *BaseFromThsHfIndex) GetItemsByCondition(condition string, pars []interf
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	//_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	return
+
 }
 
 func (m *BaseFromThsHfIndex) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*BaseFromThsHfIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -198,7 +211,9 @@ func (m *BaseFromThsHfIndex) GetPageItemsByCondition(condition string, pars []in
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	//_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	pars = append(pars, startSize, pageSize)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	return
 }
 

+ 51 - 54
models/base_from_ths_hf_data.go

@@ -1,24 +1,25 @@
 package models
 
 import (
+	sql2 "database/sql"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
 
 // BaseFromThsHfData 同花顺高频数据-指标数据
 type BaseFromThsHfData struct {
-	BaseFromThsHfDataId  int       `orm:"column(base_from_ths_hf_data_id);pk"`
-	BaseFromThsHfIndexId int       `description:"指标ID"`
-	IndexCode            string    `description:"指标编码"`
-	DataTime             time.Time `description:"数据日期(至时分秒)"`
-	Value                float64   `description:"数据值"`
-	UniqueCode           string    `description:"唯一编码"`
-	CreateTime           time.Time `description:"创建时间"`
-	ModifyTime           time.Time `description:"修改时间"`
-	DataTimestamp        int64     `description:"数据日期时间戳"`
+	BaseFromThsHfDataId  int       `gorm:"column:base_from_ths_hf_data_id;type:int(10) UNSIGNED;primaryKey;not null;"`
+	BaseFromThsHfIndexId int       `gorm:"column:base_from_ths_hf_index_id;type:int(10) UNSIGNED;comment:指标id;not null;"`      // 指标id
+	IndexCode            string    `gorm:"column:index_code;type:varchar(255);comment:指标编码;not null;"`                         // 指标编码
+	DataTime             time.Time `gorm:"column:data_time;type:datetime;comment:数据日期(至时分秒);default:NULL;"`                    // 数据日期(至时分秒)
+	Value                float64   `gorm:"column:value;type:double;comment:数据值;default:NULL;"`                                 // 数据值
+	UniqueCode           string    `gorm:"column:unique_code;type:varchar(64);comment:唯一编码;not null;"`                         // 唯一编码
+	CreateTime           time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;default:NULL;"`                        // 创建时间
+	ModifyTime           time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;default:NULL;"`                        // 修改时间
+	DataTimestamp        int64     `gorm:"column:data_timestamp;type:bigint(20) UNSIGNED;comment:数据日期时间戳;not null;default:0;"` // 数据日期时间戳
 }
 
 func (m *BaseFromThsHfData) TableName() string {
@@ -52,12 +53,8 @@ func (m *BaseFromThsHfData) Cols() BaseFromThsHfDataCols {
 }
 
 func (m *BaseFromThsHfData) Create() (err error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.BaseFromThsHfDataId = int(id)
+	err = global.DEFAULT_DB.Create(m).Error
+
 	return
 }
 
@@ -65,21 +62,21 @@ func (m *BaseFromThsHfData) CreateMulti(items []*BaseFromThsHfData) (err error)
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(500, items)
+	err = global.DEFAULT_DB.CreateInBatches(items, utils.MultiAddNum).Error
+
 	return
 }
 
 func (m *BaseFromThsHfData) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	err = global.DEFAULT_DB.Select(cols).Updates(m).Error
+
 	return
 }
 
 func (m *BaseFromThsHfData) Remove() (err error) {
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	_, err = o.Raw(sql, m.BaseFromThsHfDataId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, m.BaseFromThsHfDataId).Error
+
 	return
 }
 
@@ -87,9 +84,9 @@ func (m *BaseFromThsHfData) MultiRemove(ids []int) (err error) {
 	if len(ids) == 0 {
 		return
 	}
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
-	_, err = o.Raw(sql, ids).Exec()
+	err = global.DEFAULT_DB.Exec(sql, ids).Error
+
 	return
 }
 
@@ -97,39 +94,38 @@ func (m *BaseFromThsHfData) RemoveByCondition(condition string, pars []interface
 	if condition == "" {
 		return
 	}
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
-	_, err = o.Raw(sql, pars).Exec()
+	err = global.DEFAULT_DB.Exec(sql, pars).Error
+
 	return
 }
 
 func (m *BaseFromThsHfData) GetItemById(id int) (item *BaseFromThsHfData, err error) {
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, id).First(&item).Error
+
 	return
 }
 
 func (m *BaseFromThsHfData) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *BaseFromThsHfData, err error) {
-	o := orm.NewOrm()
 	order := ``
 	if orderRule != "" {
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).First(&item).Error
+
 	return
 }
 
 func (m *BaseFromThsHfData) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&count).Error
+
 	return
 }
 
 func (m *BaseFromThsHfData) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromThsHfData, err error) {
-	o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -139,12 +135,12 @@ func (m *BaseFromThsHfData) GetItemsByCondition(condition string, pars []interfa
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+
 	return
 }
 
 func (m *BaseFromThsHfData) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*BaseFromThsHfData, err error) {
-	o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -154,7 +150,10 @@ func (m *BaseFromThsHfData) GetPageItemsByCondition(condition string, pars []int
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	pars = append(pars, startSize, pageSize)
+
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+
 	return
 }
 
@@ -180,9 +179,16 @@ func (m *BaseFromThsHfData) Format2Item() (item *BaseFromThsHfDataItem) {
 }
 
 func (m *BaseFromThsHfData) MultiInsertOrUpdate(inserts, updates []*BaseFromThsHfData) (err error) {
-	o := orm.NewOrm()
+	tx := global.DEFAULT_DB.Begin()
+	defer func() {
+		if err != nil {
+			_ = tx.Rollback()
+		} else {
+			_ = tx.Commit()
+		}
+	}()
 	if len(inserts) > 0 {
-		_, e := o.InsertMulti(600, inserts)
+		e := tx.CreateInBatches(inserts, utils.MultiAddNum).Error
 		if e != nil {
 			err = fmt.Errorf("insert multi err: %s", e.Error())
 			return
@@ -190,16 +196,8 @@ func (m *BaseFromThsHfData) MultiInsertOrUpdate(inserts, updates []*BaseFromThsH
 	}
 	if len(updates) > 0 {
 		sql := fmt.Sprintf("UPDATE %s SET %s = ?, modify_time = NOW() WHERE %s = ?", m.TableName(), m.Cols().Value, m.Cols().UniqueCode)
-		p, e := o.Raw(sql).Prepare()
-		if e != nil {
-			err = fmt.Errorf("prepare err: %s", e.Error())
-			return
-		}
-		defer func() {
-			_ = p.Close()
-		}()
 		for _, v := range updates {
-			_, e = p.Exec(v.Value, v.UniqueCode)
+			e := tx.Exec(sql, v.Value, v.UniqueCode).Error
 			if e != nil {
 				err = fmt.Errorf("update err: %s", e.Error())
 				return
@@ -210,20 +208,19 @@ func (m *BaseFromThsHfData) MultiInsertOrUpdate(inserts, updates []*BaseFromThsH
 }
 
 func (m *BaseFromThsHfData) GetIndexMinMax(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`SELECT MIN(%s) AS min_date, MAX(%s) AS max_date, MIN(%s) AS min_value,MAX(%s) AS max_value FROM %s WHERE %s = ?`, m.Cols().DataTime, m.Cols().DataTime, m.Cols().Value, m.Cols().Value, m.TableName(), m.Cols().IndexCode)
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	if err != nil {
 		return
 	}
 
 	// 获取最新值
-	var lastVal float64
+	var latestValueNull sql2.NullFloat64
 	sql = fmt.Sprintf(`SELECT %s AS latest_value FROM %s WHERE %s = ? ORDER BY %s DESC LIMIT 1`, m.Cols().Value, m.TableName(), m.Cols().IndexCode, m.Cols().DataTime)
-	err = o.Raw(sql, indexCode).QueryRow(&lastVal)
-	if err != nil {
-		return
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Scan(&latestValueNull).Error
+	if err == nil && latestValueNull.Valid {
+		item.LatestValue = latestValueNull.Float64
 	}
-	item.LatestValue = lastVal
+
 	return
 }

+ 120 - 69
models/base_from_usda_fas.go

@@ -1,20 +1,22 @@
 package models
 
 import (
+	sql2 "database/sql"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
-
-	"github.com/beego/beego/v2/client/orm"
 )
 
 // BaseFromUsdaFas 美国农业部
 type BaseFromUsdaFas struct{}
 
 type BaseFromUsdaFasData struct {
-	BaseFromUsdaFasDataId  int `orm:"column(base_from_usda_fas_data_id);pk"`
+	BaseFromUsdaFasDataId int `gorm:"column:base_from_usda_fas_data_id;primaryKey"`
+	//BaseFromUsdaFasDataId  int `orm:"column(base_from_usda_fas_data_id);pk"`
 	BaseFromUsdaFasIndexId int
 	IndexCode              string
 	DataTime               string
@@ -24,19 +26,26 @@ type BaseFromUsdaFasData struct {
 	DataTimestamp          int64
 }
 
+func (e *BaseFromUsdaFasData) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
 func GetBaseFromUsdaFasDataByCondition(condition string, pars []interface{}) (list []*BaseFromUsdaFasData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_usda_fas_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	//_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&list).Error
 	return
 }
 
 // Add 添加
 func (obj BaseFromUsdaFas) Add(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var condition string
 	var pars []interface{}
@@ -45,7 +54,7 @@ func (obj BaseFromUsdaFas) Add(edbCode string) (err error) {
 		pars = append(pars, edbCode)
 	}
 	UsdaFasBaseDataAll, err := GetBaseFromUsdaFasDataByCondition(condition, pars)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 	var isAdd bool
@@ -68,7 +77,8 @@ func (obj BaseFromUsdaFas) Add(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_,err=o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -79,7 +89,7 @@ func (obj BaseFromUsdaFas) Add(edbCode string) (err error) {
 // Refresh 刷新涌益咨询指标数据
 func (obj BaseFromUsdaFas) Refresh(edbInfoId int, edbCode, startDate string) (err error) {
 	source := obj.GetSource()
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -109,7 +119,7 @@ func (obj BaseFromUsdaFas) Refresh(edbInfoId int, edbCode, startDate string) (er
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -177,7 +187,8 @@ func (obj BaseFromUsdaFas) Refresh(edbInfoId int, edbCode, startDate string) (er
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_,err = o.Raw(assSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromBaiinfo add Err", err.Error())
 			return
@@ -197,56 +208,76 @@ func (obj BaseFromUsdaFas) GetSourceName() string {
 }
 
 type BaseFromUsdaFasIndex struct {
-	BaseFromUsdaFasIndexId int64 `orm:"column(base_from_usda_fas_index_id);pk"`
-	IndexCode              string
-	IndexName              string
-	Frequency              string
-	Unit                   string
-	StartDate              string
-	EndDate                string
-	ClassifyId             int64
-	Sort                   int
-	BaseFileName           string
-	RenameFileName         string
-	TerminalCode           string
-	Country                string `description:"国家"`
-	Commodity              string `description:"属性"`
-	CreateTime             time.Time
-	ModifyTime             time.Time
+	BaseFromUsdaFasIndexId int64 `gorm:"column:base_from_usda_fas_index_id;primaryKey"`
+	//BaseFromUsdaFasIndexId int64 `orm:"column(base_from_usda_fas_index_id);pk"`
+	IndexCode      string
+	IndexName      string
+	Frequency      string
+	Unit           string
+	StartDate      string
+	EndDate        string
+	ClassifyId     int64
+	Sort           int
+	BaseFileName   string
+	RenameFileName string
+	TerminalCode   string
+	Country        string `description:"国家"`
+	Commodity      string `description:"属性"`
+	CreateTime     time.Time
+	ModifyTime     time.Time
+}
+
+func (e *BaseFromUsdaFasIndex) AfterFind(db *gorm.DB) (err error) {
+	e.StartDate = utils.GormDateStrToDateStr(e.StartDate)
+	e.EndDate = utils.GormDateStrToDateStr(e.EndDate)
+
+	return
 }
 
 type BaseFromUsdaFasIndexList struct {
-	BaseFromUsdaFasIndexId int64 `orm:"column(base_from_usda_fas_index_id);pk"`
-	IndexCode              string
-	IndexName              string
-	Frequency              string
-	Unit                   string
-	Sort                   int
-	ClassifyId             int64
-	StartDate              string
-	EndDate                string
-	TerminalCode           string
-	CreateTime             string
-	ModifyTime             string
+	BaseFromUsdaFasIndexId int64 `gorm:"column:base_from_usda_fas_index_id;primaryKey"`
+	//BaseFromUsdaFasIndexId int64 `orm:"column(base_from_usda_fas_index_id);pk"`
+	IndexCode    string
+	IndexName    string
+	Frequency    string
+	Unit         string
+	Sort         int
+	ClassifyId   int64
+	StartDate    string
+	EndDate      string
+	TerminalCode string
+	CreateTime   string
+	ModifyTime   string
+}
+
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromUsdaFasIndexList) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+
+	return
 }
 
 func (y *BaseFromUsdaFasData) GetByIndexCode(indexCode string) (list []*BaseFromUsdaFasData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_usda_fas_data WHERE index_code=? `
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&list).Error
 	return
 }
 
 func (y *BaseFromUsdaFasData) AddMulti(item []*BaseFromUsdaFasData) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(1, item)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(1, item)
+	err = global.DEFAULT_DB.CreateInBatches(&item, 1).Error
 	return
 }
 
 // Update 修改
 func (y *BaseFromUsdaFasData) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(y, updateCols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(y, updateCols...)
+	err = global.DEFAULT_DB.Model(&y).Select(updateCols).Updates(&y).Error
 	return
 }
 
@@ -271,48 +302,61 @@ type HandleUsdaFasExcelDataReq struct {
 }
 
 func (y *BaseFromUsdaFasData) GetMaxAndMinDateByIndexCode(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_usda_fas_data WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
-	var latest_value float64
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	sql = ` SELECT value AS latest_value FROM %s WHERE index_code=? ORDER BY data_time DESC LIMIT 1 `
 	sql = fmt.Sprintf(sql, "base_from_usda_fas_data")
-	err = o.Raw(sql, indexCode).QueryRow(&latest_value)
-	item.LatestValue = latest_value
+	//err = o.Raw(sql, indexCode).QueryRow(&latest_value)
+	var latestValueNull sql2.NullFloat64
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Scan(&latestValueNull).Error
+	if err == nil && latestValueNull.Valid {
+		item.LatestValue = latestValueNull.Float64
+	}
+
 	return
 }
 
 func (y *BaseFromUsdaFasIndex) ModifyIndexMaxAndMinDate(indexCode string, item *EdbInfoMaxAndMinInfo) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_usda_fas_index SET start_date=?,end_date=?, end_value=?, modify_time=NOW() WHERE index_code=? `
-	_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	//_, err = o.Raw(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.MinDate, item.MaxDate, item.LatestValue, indexCode).Error
 	return
 }
 
 func (y *BaseFromUsdaFasIndex) GetByIndexCode(indexCode string) (item *BaseFromUsdaFasIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_usda_fas_index WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	return
 }
 
 func (y *BaseFromUsdaFasIndex) Add() (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(y)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(y)
+	err = global.DEFAULT_DB.Create(&y).Error
+	if err != nil {
+		return
+	}
+	lastId = y.BaseFromUsdaFasIndexId
 	return
 }
 
 // Update 修改
 func (y *BaseFromUsdaFasIndex) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(y, updateCols...)
-
+	//o := orm.NewOrm()
+	//_, err = o.Update(y, updateCols...)
+	err = global.DEFAULT_DB.Model(&y).Select(updateCols).Updates(&y).Error
 	return
 }
 
 // BaseFromUsdaFasClassify UsdaFas原始数据分类表
 type BaseFromUsdaFasClassify struct {
-	ClassifyId      int64     `orm:"column(classify_id);pk"`
+	ClassifyId int64 `gorm:"column:classify_id;primaryKey"`
+	//ClassifyId      int64     `orm:"column(classify_id);pk"`
 	ClassifyName    string    `description:"分类名称"`
 	ClassifyNameEn  string    `description:"分类名称"`
 	ParentId        int       `description:"父级id"`
@@ -325,29 +369,36 @@ type BaseFromUsdaFasClassify struct {
 }
 
 func (y *BaseFromUsdaFasClassify) Add() (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(y)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(y)
+	err = global.DEFAULT_DB.Create(&y).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(y.ClassifyId)
 	return
 }
 
 // Update 修改
 func (y *BaseFromUsdaFasClassify) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(y, updateCols...)
-
+	//o := orm.NewOrm()
+	//_, err = o.Update(y, updateCols...)
+	err = global.DEFAULT_DB.Model(&y).Select(updateCols).Updates(&y).Error
 	return
 }
 
 func (y *BaseFromUsdaFasClassify) GetByClassifyName(classifyName string) (item *BaseFromUsdaFasClassify, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_usda_fas_classify WHERE classify_name=? `
-	err = o.Raw(sql, classifyName).QueryRow(&item)
+	//err = o.Raw(sql, classifyName).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, classifyName).First(&item).Error
 	return
 }
 
 func (y *BaseFromUsdaFasClassify) GetParentClassify() (items []*BaseFromUsdaFasClassify, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_usda_fas_classify WHERE parent_id=0 `
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }

+ 13 - 8
models/base_from_wind.go

@@ -1,9 +1,9 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"strings"
 	"time"
@@ -17,10 +17,11 @@ type EdbDataFromWind struct {
 }
 
 func AddEdbDataFromWind(edbCode string, item *EdbDataFromWind) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_wind(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	for k, v := range item.Dt {
 		//timeStr := fmt.Sprintf("%d", v)
 		v = v / 1000
@@ -39,7 +40,8 @@ func AddEdbDataFromWind(edbCode string, item *EdbDataFromWind) (err error) {
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return
 		}
@@ -49,7 +51,7 @@ func AddEdbDataFromWind(edbCode string, item *EdbDataFromWind) (err error) {
 
 // RefreshEdbDataFromWind 刷新wind指标数据
 func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *EdbDataFromWind) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	source := utils.DATA_SOURCE_WIND
 	subSource := utils.DATA_SUB_SOURCE_EDB
 
@@ -59,7 +61,7 @@ func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *EdbD
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -86,6 +88,7 @@ func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *EdbD
 		existMap[v.DataTime] = v
 	}
 	addSql := ` INSERT INTO edb_data_wind(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	addMap := make(map[string]string)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
@@ -140,7 +143,8 @@ func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *EdbD
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromWind add Err", err.Error())
 			return
@@ -157,8 +161,9 @@ type ServerUrlCountGroup struct {
 
 // GetServerUrlCountGroupByServerUrl 获取服务器地址分组总数
 func GetServerUrlCountGroupByServerUrl() (list []ServerUrlCountGroup, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `select server_url,count(1) total from edb_info where source = 2 AND no_update=0 AND server_url != "" group by server_url; `
-	_, err = o.Raw(sql).QueryRows(&list)
+	//_, err = o.Raw(sql).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql).Find(&list).Error
 	return
 }

+ 15 - 9
models/base_from_wind_wsd.go

@@ -2,9 +2,9 @@ package models
 
 import (
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"strings"
 	"time"
@@ -13,10 +13,11 @@ import (
 var windWsd = "wsd"
 
 func AddEdbDataFromWindWsd(stockCode string, item map[string]map[string]interface{}) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_wind_wsd(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 
 	indexCodeMap := make(map[string]string)
 	for wk, wv := range item {
@@ -37,7 +38,7 @@ func AddEdbDataFromWindWsd(stockCode string, item map[string]map[string]interfac
 				err = errors.New("OUTMESSAGE:" + vv.(string))
 				return err
 			}
-			
+
 			vk = strings.ToLower(vk)
 			indexCode = windWsd + stockCode + vk
 
@@ -77,13 +78,15 @@ func AddEdbDataFromWindWsd(stockCode string, item map[string]map[string]interfac
 		for _, v := range indexCodeMap {
 			var count int
 			sql := ` SELECT COUNT(1) FROM edb_data_wind_wsd WHERE edb_code=? `
-			err = o.Raw(sql, v).QueryRow(&count)
+			//err = o.Raw(sql, v).QueryRow(&count)
+			err = global.DEFAULT_DB.Raw(sql, v).Scan(&count).Error
 			if err != nil {
 				return err
 			}
 			if count > 0 {
 				sql = ` DELETE FROM edb_data_wind_wsd WHERE edb_code=? `
-				_, err = o.Raw(sql, v).Exec()
+				//_, err = o.Raw(sql, v).Exec()
+				err = global.DEFAULT_DB.Exec(sql, v).Error
 				if err != nil {
 					return err
 				}
@@ -91,7 +94,8 @@ func AddEdbDataFromWindWsd(stockCode string, item map[string]map[string]interfac
 		}
 
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("sql exec err:" + err.Error())
 			return
@@ -102,7 +106,7 @@ func AddEdbDataFromWindWsd(stockCode string, item map[string]map[string]interfac
 
 // RefreshEdbDataFromWind 刷新wind指标数据
 func RefreshEdbDataFromWindWsd(edbInfoId int, edbCode, startDate string, item map[string]map[string]interface{}) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	source := utils.DATA_SOURCE_WIND
 	subSource := utils.DATA_SUB_SOURCE_DATE
 
@@ -112,7 +116,7 @@ func RefreshEdbDataFromWindWsd(edbInfoId int, edbCode, startDate string, item ma
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -139,6 +143,7 @@ func RefreshEdbDataFromWindWsd(edbInfoId int, edbCode, startDate string, item ma
 		existMap[v.DataTime] = v
 	}
 	addSql := ` INSERT INTO edb_data_wind_wsd(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	addMap := make(map[string]string)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
@@ -221,7 +226,8 @@ func RefreshEdbDataFromWindWsd(edbInfoId int, edbCode, startDate string, item ma
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromWind add Err", err.Error())
 			return

+ 101 - 51
models/base_from_yongyi.go

@@ -1,20 +1,21 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
-
-	"github.com/beego/beego/v2/client/orm"
 )
 
 // BaseFromYongyi 涌溢咨询
 type BaseFromYongyi struct{}
 
 type BaseFromYongyiData struct {
-	YongyiDataId  int `orm:"column(yongyi_data_id);pk"`
+	YongyiDataId int `gorm:"column:yongyi_data_id;primaryKey"`
+	//YongyiDataId  int `orm:"column(yongyi_data_id);pk"`
 	YongyiIndexId int
 	IndexCode     string
 	DataTime      string
@@ -24,19 +25,26 @@ type BaseFromYongyiData struct {
 	DataTimestamp int64
 }
 
+func (e *BaseFromYongyiData) AfterFind(db *gorm.DB) (err error) {
+	e.DataTime = utils.GormDateStrToDateStr(e.DataTime)
+
+	return
+}
+
 func GetBaseFromYongyiDataByCondition(condition string, pars []interface{}) (list []*BaseFromYongyiData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_yongyi_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	//_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&list).Error
 	return
 }
 
 // Add 添加
 func (obj BaseFromYongyi) Add(edbCode string) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	var condition string
 	var pars []interface{}
@@ -45,11 +53,12 @@ func (obj BaseFromYongyi) Add(edbCode string) (err error) {
 		pars = append(pars, edbCode)
 	}
 	yongyiBaseDataAll, err := GetBaseFromYongyiDataByCondition(condition, pars)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_yongyi(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	existMap := make(map[string]string)
 	for _, sv := range yongyiBaseDataAll {
 		eDate := sv.DataTime
@@ -68,7 +77,8 @@ func (obj BaseFromYongyi) Add(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -79,7 +89,7 @@ func (obj BaseFromYongyi) Add(edbCode string) (err error) {
 // Refresh 刷新涌益咨询指标数据
 func (obj BaseFromYongyi) Refresh(edbInfoId int, edbCode, startDate string) (err error) {
 	source := obj.GetSource()
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -109,7 +119,7 @@ func (obj BaseFromYongyi) Refresh(edbInfoId int, edbCode, startDate string) (err
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -136,6 +146,7 @@ func (obj BaseFromYongyi) Refresh(edbInfoId int, edbCode, startDate string) (err
 		existMap[v.DataTime] = v
 	}
 	addSql := ` INSERT INTO edb_data_yongyi(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	for _, v := range yongyiDataList {
 		item := v
@@ -177,7 +188,8 @@ func (obj BaseFromYongyi) Refresh(edbInfoId int, edbCode, startDate string) (err
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromBaiinfo add Err", err.Error())
 			return
@@ -197,22 +209,31 @@ func (obj BaseFromYongyi) GetSourceName() string {
 }
 
 type BaseFromYongyiIndex struct {
-	YongyiIndexId int64 `orm:"column(yongyi_index_id);pk"`
-	IndexCode     string
-	IndexName     string
-	Frequency     string
-	Unit          string
-	ClassifyId    int64
-	StartDate     string
-	EndDate       string
-	Sort          int
-	TerminalCode  string
-	CreateTime    time.Time
-	ModifyTime    time.Time
+	YongyiIndexId int64 `gorm:"column:yongyi_index_id;primaryKey"`
+	//YongyiIndexId int64 `orm:"column(yongyi_index_id);pk"`
+	IndexCode    string
+	IndexName    string
+	Frequency    string
+	Unit         string
+	ClassifyId   int64
+	StartDate    string
+	EndDate      string
+	Sort         int
+	TerminalCode string
+	CreateTime   time.Time
+	ModifyTime   time.Time
+}
+
+func (e *BaseFromYongyiIndex) AfterFind(db *gorm.DB) (err error) {
+	e.StartDate = utils.GormDateStrToDateStr(e.StartDate)
+	e.StartDate = utils.GormDateStrToDateStr(e.StartDate)
+
+	return
 }
 
 type BaseFromYongyiIndexList struct {
-	YongyiIndexId int64 `orm:"column(yongyi_index_id);pk"`
+	//YongyiIndexId int64 `orm:"column(yongyi_index_id);pk"`
+	YongyiIndexId int64 `gorm:"column:yongyi_index_id;primaryKey"`
 	IndexCode     string
 	IndexName     string
 	Frequency     string
@@ -225,23 +246,36 @@ type BaseFromYongyiIndexList struct {
 	ModifyTime    string
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromYongyiIndexList) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+
+	return
+}
+
 func (y *BaseFromYongyiData) GetByIndexCode(indexCode string) (list []*BaseFromYongyiData, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_yongyi_data WHERE index_code=? `
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&list).Error
 	return
 }
 
 func (y *BaseFromYongyiData) AddMulti(item []*BaseFromYongyiData) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(1, item)
+	//o := orm.NewOrm()
+	//_, err = o.InsertMulti(1, item)
+	err = global.DEFAULT_DB.CreateInBatches(&item, 1).Error
 	return
 }
 
 // Update 修改
 func (y *BaseFromYongyiData) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(y, updateCols...)
+	//o := orm.NewOrm()
+	//_, err = o.Update(y, updateCols...)
+	err = global.DEFAULT_DB.Model(&y).Select(updateCols).Updates(&y).Error
 	return
 }
 
@@ -263,43 +297,52 @@ type HandleYongyiExcelDataReq struct {
 }
 
 func (y *BaseFromYongyiData) GetMaxAndMinDateByIndexCode(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_yongyi_data WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	return
 }
 
 func (y *BaseFromYongyiIndex) ModifyIndexMaxAndMinDate(indexCode string, item *EdbInfoMaxAndMinInfo) (err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` UPDATE base_from_yongyi_index SET start_date=?,end_date=?,modify_time=NOW() WHERE index_code=? `
-	_, err = o.Raw(sql, item.MinDate, item.MaxDate, indexCode).Exec()
+	//_, err = o.Raw(sql, item.MinDate, item.MaxDate, indexCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, item.MinDate, item.MaxDate, indexCode).Error
 	return
 }
 
 func (y *BaseFromYongyiIndex) GetByIndexCode(indexCode string) (item *BaseFromYongyiIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_yongyi_index WHERE index_code=? `
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	//err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	return
 }
 
 func (y *BaseFromYongyiIndex) Add() (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(y)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(y)
+	err = global.DEFAULT_DB.Create(&y).Error
+	if err != nil {
+		return
+	}
+	lastId = y.ClassifyId
 	return
 }
 
 // Update 修改
 func (y *BaseFromYongyiIndex) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(y, updateCols...)
-
+	//o := orm.NewOrm()
+	//_, err = o.Update(y, updateCols...)
+	err = global.DEFAULT_DB.Model(&y).Select(updateCols).Updates(&y).Error
 	return
 }
 
 // BaseFromYongyiClassify Yongyi原始数据分类表
 type BaseFromYongyiClassify struct {
-	ClassifyId      int64     `orm:"column(classify_id);pk"`
+	ClassifyId int64 `gorm:"column:classify_id;primaryKey"`
+	//ClassifyId      int64     `orm:"column(classify_id);pk"`
 	ClassifyName    string    `description:"分类名称"`
 	ParentId        int       `description:"父级id"`
 	SysUserId       int       `description:"创建人id"`
@@ -311,29 +354,36 @@ type BaseFromYongyiClassify struct {
 }
 
 func (y *BaseFromYongyiClassify) Add() (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(y)
+	//o := orm.NewOrm()
+	//lastId, err = o.Insert(y)
+	err = global.DEFAULT_DB.Create(&y).Error
+	if err != nil {
+		return
+	}
+	lastId = y.ClassifyId
 	return
 }
 
 // Update 修改
 func (y *BaseFromYongyiClassify) Update(updateCols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(y, updateCols...)
-
+	//o := orm.NewOrm()
+	//_, err = o.Update(y, updateCols...)
+	err = global.DEFAULT_DB.Model(&y).Select(updateCols).Updates(&y).Error
 	return
 }
 
 func (y *BaseFromYongyiClassify) GetByClassifyName(classifyName string) (item *BaseFromYongyiClassify, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_yongyi_classify WHERE classify_name=? `
-	err = o.Raw(sql, classifyName).QueryRow(&item)
+	//err = o.Raw(sql, classifyName).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, classifyName).First(&item).Error
 	return
 }
 
 func (y *BaseFromYongyiClassify) GetParentClassify() (items []*BaseFromYongyiClassify, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := ` SELECT * FROM base_from_yongyi_classify WHERE classify_name in ("日度", "月度", "周度", "年度", "旬度", "半年度", "年度") and parent_id=0 `
-	_, err = o.Raw(sql).QueryRows(&items)
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql).Find(&items).Error
 	return
 }

+ 57 - 35
models/base_from_zz.go

@@ -1,42 +1,52 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
 )
 
 type BaseFromTradeZhengzhouIndex struct {
-	BaseFromTradeZhengzhouIndexId int `orm:"column(base_from_trade_zhengzhou_index_id);pk"`
-	Rank                          int
-	DealShortName                 string
-	DealName                      string
-	DealCode                      string
-	DealValue                     string
-	DealChange                    int
-	BuyShortName                  string
-	BuyName                       string
-	BuyCode                       string
-	BuyValue                      string
-	BuyChange                     int
-	SoldShortName                 string
-	SoldName                      string
-	SoldCode                      string
-	SoldValue                     string
-	SoldChange                    int
-	Frequency                     string
-	ClassifyName                  string
-	ClassifyType                  string
-	CreateTime                    time.Time
-	ModifyTime                    time.Time
-	DataTime                      string
+	BaseFromTradeZhengzhouIndexId int `gorm:"column:base_from_trade_zhengzhou_index_id;primaryKey"`
+	//BaseFromTradeZhengzhouIndexId int `orm:"column(base_from_trade_zhengzhou_index_id);pk"`
+	Rank          int
+	DealShortName string
+	DealName      string
+	DealCode      string
+	DealValue     string
+	DealChange    int
+	BuyShortName  string
+	BuyName       string
+	BuyCode       string
+	BuyValue      string
+	BuyChange     int
+	SoldShortName string
+	SoldName      string
+	SoldCode      string
+	SoldValue     string
+	SoldChange    int
+	Frequency     string
+	ClassifyName  string
+	ClassifyType  string
+	CreateTime    time.Time
+	ModifyTime    time.Time
+	DataTime      string
+}
+
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromTradeZhengzhouIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
 }
 
 type BaseFromZzDataSimple struct {
-	Id        int `orm:"column(base_from_trade_zhengzhou_index_id);pk"`
+	Id int `gorm:"column:base_from_trade_zhengzhou_index_id;primaryKey"`
+	//Id        int `orm:"column(base_from_trade_zhengzhou_index_id);pk"`
 	DealCode  string
 	BuyCode   string
 	SoldCode  string
@@ -46,22 +56,30 @@ type BaseFromZzDataSimple struct {
 	SoldValue string
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromZzDataSimple) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
+}
 func GetBaseFromZhengzhouDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeZhengzhouIndex, err error) {
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_trade_zhengzhou_index WHERE %s_code=? `
 	sql = fmt.Sprintf(sql, suffix)
-	_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	//_, err = o.Raw(sql, indexCode).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&list).Error
 	return
 }
 
 func GetZzDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromZzDataSimple, err error) {
 	sql := ` SELECT * FROM base_from_trade_zhengzhou_index WHERE 1=1 `
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if condition != "" {
 		sql += condition
 	}
 	sql += ` ORDER BY data_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	//_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
@@ -76,15 +94,16 @@ func AddEdbDataFromZz(edbCode string) (err error) {
 		suffix = "sold"
 	}
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 
 	zzBaseDataAll, err := GetBaseFromZhengzhouDataAllByIndexCode(edbCode, suffix)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil && !utils.IsErrNoRow(err) {
 		return
 	}
 
 	var isAdd bool
 	addSql := ` INSERT INTO edb_data_zz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	existMap := make(map[string]string)
 	for _, sv := range zzBaseDataAll {
 		eDate := sv.DataTime
@@ -116,7 +135,8 @@ func AddEdbDataFromZz(edbCode string) (err error) {
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)
-		_, err = o.Raw(addSql).Exec()
+		//_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return err
 		}
@@ -129,7 +149,7 @@ func RefreshEdbDataFromZz(edbInfoId int, edbCode, startDate string) (err error)
 	source := utils.DATA_SOURCE_ZZ
 	subSource := utils.DATA_SUB_SOURCE_DATE
 
-	o := orm.NewOrm()
+	//o := orm.NewOrm()
 	if err != nil {
 		return
 	}
@@ -173,7 +193,7 @@ func RefreshEdbDataFromZz(edbInfoId int, edbCode, startDate string) (err error)
 	var isFindConfigDateRealData bool //是否找到配置日期的实际数据的值
 	{
 		edbDataInsertConfig, err = GetEdbDataInsertConfigByEdbId(edbInfoId)
-		if err != nil && err.Error() != utils.ErrNoRow() {
+		if err != nil && !utils.IsErrNoRow(err) {
 			return
 		}
 		if edbDataInsertConfig != nil {
@@ -202,6 +222,7 @@ func RefreshEdbDataFromZz(edbInfoId int, edbCode, startDate string) (err error)
 	}
 
 	addSql := ` INSERT INTO edb_data_zz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 	for _, v := range glDataList {
 		var value string
@@ -257,7 +278,8 @@ func RefreshEdbDataFromZz(edbInfoId int, edbCode, startDate string) (err error)
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
+		//_, err = o.Raw(addSql).Exec()
 		if err != nil {
 			return err
 		}

+ 37 - 22
models/base_predict_from_calculate.go

@@ -3,11 +3,12 @@ package models
 import (
 	"encoding/json"
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/dengsgo/math-engine/engine"
 	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -36,14 +37,15 @@ type PredictCalculateItems struct {
 
 // EditPredictCalculate 新增预测计算(运算)指标
 func EditPredictCalculate(edbInfo *EdbInfo, calculateMappingList []*EdbInfoCalculateMapping) (err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
+	//o := orm.NewOrm()
+	//to, err := o.Begin()
+	to := global.DEFAULT_DB.Begin()
 	if err != nil {
 		return
 	}
 	defer func() {
 		if err != nil {
-			tmpErr := to.Rollback()
+			tmpErr := to.Rollback().Error
 			errMsg := fmt.Sprintf("AddPredictCalculate Err:%s" + err.Error())
 			if tmpErr != nil {
 				errMsg += `;rollback失败:` + tmpErr.Error()
@@ -52,7 +54,7 @@ func EditPredictCalculate(edbInfo *EdbInfo, calculateMappingList []*EdbInfoCalcu
 			return
 		}
 
-		tmpErr := to.Commit()
+		tmpErr := to.Commit().Error
 		if tmpErr != nil {
 			errMsg := fmt.Sprintf("AddPredictCalculate commit Err:%s" + tmpErr.Error())
 			utils.FileLog.Info(errMsg)
@@ -60,14 +62,16 @@ func EditPredictCalculate(edbInfo *EdbInfo, calculateMappingList []*EdbInfoCalcu
 	}()
 
 	// 修改指标信息
-	_, err = to.Update(edbInfo, "EdbName", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "EmptyType", "MaxEmptyType", "Extra", "EdbNameEn", "UnitEn")
+	//_, err = to.Update(edbInfo, "EdbName", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "EmptyType", "MaxEmptyType", "Extra", "EdbNameEn", "UnitEn")
+	err = to.Model(&edbInfo).Select([]string{"EdbName", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "EmptyType", "MaxEmptyType", "Extra", "EdbNameEn", "UnitEn"}).Updates(&edbInfo).Error
 	if err != nil {
 		return
 	}
 
 	//删除,计算指标关联的,基础指标的关联关系
 	sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	//_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		err = errors.New("删除计算指标关联关系失败,Err:" + err.Error())
 		return
@@ -75,14 +79,16 @@ func EditPredictCalculate(edbInfo *EdbInfo, calculateMappingList []*EdbInfoCalcu
 
 	// 插入新的关系表
 	if len(calculateMappingList) > 0 {
-		_, err = to.InsertMulti(len(calculateMappingList), calculateMappingList)
+		//_, err = to.InsertMulti(len(calculateMappingList), calculateMappingList)
+		err = to.CreateInBatches(&calculateMappingList, len(calculateMappingList)).Error
 	}
 
 	//数据表
 	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	//清空原有数据
 	sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
-	_, err = o.Raw(sql, edbInfo.EdbInfoId).Exec()
+	//_, err = o.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
@@ -225,8 +231,9 @@ func EditPredictCalculate(edbInfo *EdbInfo, calculateMappingList []*EdbInfoCalcu
 //}
 
 func AddPredictCalculateData(edbInfoIdList []*EdbInfo, edbInfoTag map[string]int, edbInfo *EdbInfo, edbCode, formulaStr string, edbInfoIdBytes []string) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
+	//o := orm.NewOrm()
+	//to, err := o.Begin()
+	to := global.DEFAULT_DB.Begin()
 	if err != nil {
 		return
 	}
@@ -245,8 +252,9 @@ func AddPredictCalculateData(edbInfoIdList []*EdbInfo, edbInfoTag map[string]int
 
 // RefreshAllPredictCalculate 刷新预测计算指标的全部数据
 func RefreshAllPredictCalculate(edbInfoIdList []*EdbInfo, edbInfoTag map[string]int, edbInfoId, source, subSource int, edbCode, formulaStr, startDate string, edbInfoIdBytes []string, emptyType, maxEmptyType int, extra string) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
+	//o := orm.NewOrm()
+	//to, err := o.Begin()
+	to := global.DEFAULT_DB.Begin()
 	if err != nil {
 		return
 	}
@@ -265,7 +273,7 @@ func RefreshAllPredictCalculate(edbInfoIdList []*EdbInfo, edbInfoTag map[string]
 }
 
 // refreshAllPredictCalculate 刷新预测计算指标的全部数据
-func refreshAllPredictCalculate(to orm.TxOrmer, edbInfoIdList []*EdbInfo, edbInfoTag map[string]int, edbInfoId, source, subSource int, edbCode, formulaStr, startDate string, edbInfoIdBytes []string, emptyType, maxEmptyType int, extra string) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculate(to *gorm.DB, edbInfoIdList []*EdbInfo, edbInfoTag map[string]int, edbInfoId, source, subSource int, edbCode, formulaStr, startDate string, edbInfoIdBytes []string, emptyType, maxEmptyType int, extra string) (latestDateStr string, latestValue float64, err error) {
 	fmt.Println("startDate:", startDate)
 	// 最小的结束日期 , 最晚的数据开始日期
 	var newLatestDate, minLatestDate, maxStartDate time.Time
@@ -396,6 +404,7 @@ func refreshAllPredictCalculate(to orm.TxOrmer, edbInfoIdList []*EdbInfo, edbInf
 		return
 	}
 	addSql := ` INSERT INTO edb_data_predict_calculate (edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
+	addSql = utils.ReplaceDriverKeywords("", addSql)
 	var isAdd bool
 
 	//获取指标所有数据
@@ -403,7 +412,8 @@ func refreshAllPredictCalculate(to orm.TxOrmer, edbInfoIdList []*EdbInfo, edbInf
 	dataTableName := GetEdbDataTableName(source, subSource)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? `
 	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&dataList)
+	//_, err = to.Raw(sql, edbInfoId).QueryRows(&dataList)
+	err = to.Raw(sql, edbInfoId).Find(&dataList).Error
 	if err != nil {
 		return
 	}
@@ -522,7 +532,8 @@ func refreshAllPredictCalculate(to orm.TxOrmer, edbInfoIdList []*EdbInfo, edbInf
 				if existStr != saveValue {
 					sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 					sql = fmt.Sprintf(sql, dataTableName)
-					_, err = to.Raw(sql, saveValue, edbInfoId, sk).Exec()
+					//_, err = to.Raw(sql, saveValue, edbInfoId, sk).Exec()
+					err = to.Exec(sql, saveValue, edbInfoId, sk).Error
 					if err != nil {
 						return "", 0, err
 					}
@@ -537,7 +548,8 @@ func refreshAllPredictCalculate(to orm.TxOrmer, edbInfoIdList []*EdbInfo, edbInf
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		//_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshAllCalculate add Err", err.Error())
 			return
@@ -545,13 +557,14 @@ func refreshAllPredictCalculate(to orm.TxOrmer, edbInfoIdList []*EdbInfo, edbInf
 	}
 
 	if len(removeDateList) > 0 {
-		removeDateStr := strings.Join(removeDateList, `","`)
-		removeDateStr = `"` + removeDateStr + `"`
+		removeDateStr := strings.Join(removeDateList, `','`)
+		removeDateStr = `'` + removeDateStr + `'`
 		//如果拼接指标变更了,那么需要删除所有的指标数据
 		tableName := GetEdbDataTableName(source, subSource)
 		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
 
-		_, err = to.Raw(sql, edbInfoId).Exec()
+		//_, err = to.Raw(sql, edbInfoId).Exec()
+		err = to.Exec(sql, edbInfoId).Error
 		if err != nil {
 			err = fmt.Errorf("删除计算失败的计算指标数据失败,Err:" + err.Error())
 			return
@@ -563,12 +576,14 @@ func refreshAllPredictCalculate(to orm.TxOrmer, edbInfoIdList []*EdbInfo, edbInf
 		latestDateStr = newLatestDate.Format(utils.FormatDate)
 		sql = fmt.Sprintf(` SELECT * FROM %s WHERE edb_info_id = ? and data_time <= ? ORDER BY data_time desc limit 1`, dataTableName)
 		var latestDate EdbData
-		e := to.Raw(sql, edbInfoId, latestDateStr).QueryRow(&latestDate)
+		//e := to.Raw(sql, edbInfoId, latestDateStr).QueryRow(&latestDate)
+		e := to.Raw(sql, edbInfoId, latestDateStr).First(&latestDate).Error
 		if e != nil {
 			if e.Error() == utils.ErrNoRow() {
 				//首个日期的值
 				sql = fmt.Sprintf(` SELECT * FROM %s WHERE edb_info_id = ? ORDER BY data_time ASC limit 1`, dataTableName)
-				e = to.Raw(sql, edbInfoId).QueryRow(&latestDate)
+				//e = to.Raw(sql, edbInfoId).QueryRow(&latestDate)
+				e = to.Raw(sql, edbInfoId).First(&latestDate).Error
 				if e != nil {
 					err = fmt.Errorf("查询最新日期失败,Err:" + e.Error())
 					return

+ 28 - 37
models/business_conf.go

@@ -1,9 +1,9 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"html"
 	"strings"
 	"time"
@@ -68,7 +68,7 @@ var FromSceneMap = map[int]string{
 
 // BusinessConf 商户配置表
 type BusinessConf struct {
-	Id         int    `orm:"column(id);pk"`
+	Id         int    `gorm:"column:id;primaryKey"`
 	ConfKey    string `description:"配置Key"`
 	ConfVal    string `description:"配置值"`
 	ValType    int    `description:"1-字符串;2-数值;3-字符串数组;4-富文本;"`
@@ -86,12 +86,8 @@ func (m *BusinessConf) PrimaryId() string {
 }
 
 func (m *BusinessConf) Create() (err error) {
-	o := orm.NewOrmUsingDB("master")
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.Id = int(id)
+	err = global.DbMap[utils.DbNameMaster].Create(m).Error
+
 	return
 }
 
@@ -99,47 +95,46 @@ func (m *BusinessConf) CreateMulti(items []*BusinessConf) (err error) {
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrmUsingDB("master")
-	_, err = o.InsertMulti(len(items), items)
+	err = global.DbMap[utils.DbNameMaster].CreateInBatches(items, utils.MultiAddNum).Error
+
 	return
 }
 
 func (m *BusinessConf) Update(cols []string) (err error) {
-	o := orm.NewOrmUsingDB("master")
-	_, err = o.Update(m, cols...)
+	err = global.DbMap[utils.DbNameMaster].Select(cols).Updates(m).Error
+
 	return
 }
 
 func (m *BusinessConf) Del() (err error) {
-	o := orm.NewOrmUsingDB("master")
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	_, err = o.Raw(sql, m.Id).Exec()
+	err = global.DbMap[utils.DbNameMaster].Exec(sql, m.Id).Error
+
 	return
 }
 
 func (m *BusinessConf) GetItemById(id int) (item *BusinessConf, err error) {
-	o := orm.NewOrmUsingDB("master")
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DbMap[utils.DbNameMaster].Raw(sql, id).First(&item).Error
+
 	return
 }
 
 func (m *BusinessConf) GetItemByCondition(condition string, pars []interface{}) (item *BusinessConf, err error) {
-	o := orm.NewOrmUsingDB("master")
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = global.DbMap[utils.DbNameMaster].Raw(sql, pars...).First(&item).Error
+
 	return
 }
 
 func (m *BusinessConf) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrmUsingDB("master")
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = global.DbMap[utils.DbNameMaster].Raw(sql, pars...).Scan(&count).Error
+
 	return
 }
 
 func (m *BusinessConf) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BusinessConf, err error) {
-	o := orm.NewOrmUsingDB("master")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -149,12 +144,12 @@ func (m *BusinessConf) GetItemsByCondition(condition string, pars []interface{},
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DbMap[utils.DbNameMaster].Raw(sql, pars...).Find(&items).Error
+
 	return
 }
 
 func (m *BusinessConf) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*BusinessConf, err error) {
-	o := orm.NewOrmUsingDB("master")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -164,7 +159,9 @@ func (m *BusinessConf) GetPageItemsByCondition(condition string, pars []interfac
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	pars = append(pars, startSize, pageSize)
+	err = global.DbMap[utils.DbNameMaster].Raw(sql, pars...).Find(&items).Error
+
 	return
 }
 
@@ -173,9 +170,8 @@ func GetBusinessConf() (list map[string]string, err error) {
 	list = make(map[string]string)
 
 	var items []*BusinessConf
-	o := orm.NewOrmUsingDB("master")
 	sql := `SELECT * FROM business_conf`
-	_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DbMap[utils.DbNameMaster].Raw(sql).Find(&items).Error
 	if err != nil {
 		return
 	}
@@ -198,27 +194,22 @@ type BusinessConfUpdate struct {
 
 // UpdateBusinessConfMulti 批量修改配置
 func UpdateBusinessConfMulti(items []BusinessConfUpdate) (err error) {
-	o := orm.NewOrmUsingDB("master")
-	p, err := o.Raw("UPDATE business_conf SET conf_val = ? WHERE conf_key = ?").Prepare()
-	if err != nil {
-		return
-	}
-	defer func() {
-		_ = p.Close()
-	}()
+	tx := global.DbMap[utils.DbNameMaster].Begin()
 	for _, v := range items {
-		_, err = p.Exec(v.ConfVal, v.ConfKey)
+		err = tx.Exec("UPDATE business_conf SET conf_val = ? WHERE conf_key = ?", v.ConfVal, v.ConfKey).Error
 		if err != nil {
+			tx.Rollback()
 			return
 		}
 	}
+	tx.Commit()
 	return
 }
 
 func GetBusinessConfByKey(key string) (item *BusinessConf, err error) {
-	o := orm.NewOrmUsingDB("master")
 	sql := fmt.Sprintf(`SELECT * FROM business_conf WHERE conf_key = ? LIMIT 1`)
-	err = o.Raw(sql, key).QueryRow(&item)
+	err = global.DbMap[utils.DbNameMaster].Raw(sql, key).First(&item).Error
+
 	return
 }
 

+ 15 - 10
models/calculate_residual_analysis_config.go

@@ -1,16 +1,18 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 type CalculateResidualAnalysisConfig struct {
-	CalculateResidualAnalysisConfigId int       `orm:"column(calculate_residual_analysis_config_id);pk;auto" description:"自增id"`
-	Config                            string    `orm:"column(config)" description:"计算参数配置"`
-	SysUserId                         int       `orm:"column(sys_user_id)" description:"操作人id"`
-	CreateTime                        time.Time `orm:"column(create_time)" description:"创建时间"`
-	ModifyTime                        time.Time `orm:"column(modify_time)" description:"修改时间"`
+	CalculateResidualAnalysisConfigId int       `gorm:"column:calculate_residual_analysis_config_id;primaryKey" description:"自增id"`
+	Config                            string    `gorm:"column:config" description:"计算参数配置"`
+	SysUserId                         int       `gorm:"column:sys_user_id" description:"操作人id"`
+	CreateTime                        time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime                        time.Time `gorm:"column:modify_time" description:"修改时间"`
 }
 
 type ResidualAnalysisConfig struct {
@@ -32,16 +34,19 @@ type ResidualAnalysisConfig struct {
 	ContrastIndexMax float64 `description:"对比指标上限"`
 }
 
-func init() {
-	orm.RegisterModel(new(CalculateResidualAnalysisConfig))
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *ResidualAnalysisConfig) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+
+	return
 }
 
 // GetResidualAnalysisConfigById 根据配置id查询配置信息
 func GetResidualAnalysisConfigById(edbInfoId int) (residualAnalysisConfig CalculateResidualAnalysisConfig, err error) {
-	o := orm.NewOrm()
 	sql := `SELECT t2.* FROM calculate_residual_analysis_config_mapping t1 
 			join calculate_residual_analysis_config t2 on t1.calculate_residual_analysis_config_id = t2.calculate_residual_analysis_config_id
 			WHERE t1.edb_info_id = ? and index_type!=3 and index_type !=4`
-	err = o.Raw(sql, edbInfoId).QueryRow(&residualAnalysisConfig)
+	err = global.DEFAULT_DB.Raw(sql, edbInfoId).First(&residualAnalysisConfig).Error
 	return
 }

+ 10 - 14
models/calculate_residual_analysis_config_mapping.go

@@ -1,28 +1,23 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 type CalculateResidualAnalysisConfigMapping struct {
-	CalculateResidualAnalysisConfigMappingId int       `orm:"column(calculate_residual_analysis_config_mapping_id);pk;auto" description:"自增id"`
-	CalculateResidualAnalysisConfigId        int       `orm:"column(calculate_residual_analysis_config_id)" description:"残差分析配置id"`
-	EdbInfoId                                int64     `orm:"column(edb_info_id)" description:"指标id"`
-	ResidualType                             int       `orm:"column(residual_type)" description:"残差类型: 1-映射残差 2-拟合残差"`
-	IndexType                                int       `orm:"column(index_type)" description:"指标类型:1-映射指标 2-残差指标 3-因变量指标 4-自变量指标"`
-	CreateTime                               time.Time `orm:"column(create_time)" description:"创建时间"`
-	ModifyTime                               time.Time `orm:"column(modify_time)" description:"修改时间"`
-}
-
-func init() {
-	orm.RegisterModel(new(CalculateResidualAnalysisConfigMapping))
+	CalculateResidualAnalysisConfigMappingId int       `gorm:"column:calculate_residual_analysis_config_mapping_id;primaryKey" description:"自增id"`
+	CalculateResidualAnalysisConfigId        int       `gorm:"column:calculate_residual_analysis_config_id" description:"残差分析配置id"`
+	EdbInfoId                                int64     `gorm:"column:edb_info_id" description:"指标id"`
+	ResidualType                             int       `gorm:"column:residual_type" description:"残差类型: 1-映射残差 2-拟合残差"`
+	IndexType                                int       `gorm:"column:index_type)" description:"指标类型:1-映射指标 2-残差指标 3-因变量指标 4-自变量指标"`
+	CreateTime                               time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime                               time.Time `gorm:"column:modify_time" description:"修改时间"`
 }
 
 // GetConfigMappingListByConditionNotBase 查询非基础指标的配置映射
 func GetConfigMappingListByConditionNotBase(edbInfoId int) (configMapping []CalculateResidualAnalysisConfigMapping, err error) {
-	o := orm.NewOrm()
 	//sql := `
 	//SELECT
 	//	*
@@ -43,9 +38,10 @@ func GetConfigMappingListByConditionNotBase(edbInfoId int) (configMapping []Calc
  			AND subq.index_type != 4
 		)`
 
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&configMapping)
+	err = global.DEFAULT_DB.Raw(sql, edbInfoId).Find(&configMapping).Error
 	if err != nil {
 		return nil, fmt.Errorf("查询数据时出错: %v", err)
 	}
+
 	return configMapping, nil
 }

+ 29 - 32
models/ccf_stock_excel.go

@@ -1,22 +1,22 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
 
 // CCFStockExcel CCF化纤装置表格
 type CCFStockExcel struct {
-	CcfStockExcelId int       `orm:"column(ccf_stock_excel_id);pk"`
-	ClassifyId      int       `description:"分类ID"`
-	ExcelDate       time.Time `description:"表格日期"`
-	ExcelContent    string    `description:"表格HTML"`
-	FromPage        string    `description:"表格来源"`
-	CreateTime      time.Time `description:"创建时间"`
-	ModifyTime      time.Time `description:"修改时间"`
+	CcfStockExcelId int       `gorm:"column:ccf_stock_excel_id;type:int(10) UNSIGNED;primaryKey;not null;"`
+	ClassifyId      int       `gorm:"column:classify_id;type:int(10) UNSIGNED;comment:分类ID;not null;default:0;"` // 分类ID
+	ExcelDate       time.Time `gorm:"column:excel_date;type:date;comment:表格日期;default:NULL;"`                    // 表格日期
+	ExcelContent    string    `gorm:"column:excel_content;type:longtext;comment:表格html信息;"`                      // 表格html信息
+	FromPage        string    `gorm:"column:from_page;type:varchar(255);comment:表格来源;not null;"`                 // 表格来源
+	CreateTime      time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;default:NULL;"`               // 创建时间
+	ModifyTime      time.Time `gorm:"column:modify_time;type:datetime;comment:更新时间;default:NULL;"`               // 更新时间
 }
 
 func (m *CCFStockExcel) TableName() string {
@@ -50,12 +50,8 @@ func (m *CCFStockExcel) PrimaryId() string {
 }
 
 func (m *CCFStockExcel) Create() (err error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.CcfStockExcelId = int(id)
+	err = global.DEFAULT_DB.Create(m).Error
+
 	return
 }
 
@@ -63,21 +59,21 @@ func (m *CCFStockExcel) CreateMulti(items []*CCFStockExcel) (err error) {
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(items), items)
+	err = global.DEFAULT_DB.CreateInBatches(items, utils.MultiAddNum).Error
+
 	return
 }
 
 func (m *CCFStockExcel) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	err = global.DEFAULT_DB.Model(m).Select(cols).Updates(m).Error
+
 	return
 }
 
 func (m *CCFStockExcel) Del() (err error) {
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	_, err = o.Raw(sql, m.CcfStockExcelId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, m.CcfStockExcelId).Error
+
 	return
 }
 
@@ -85,39 +81,38 @@ func (m *CCFStockExcel) MultiDel(menuIds []int) (err error) {
 	if len(menuIds) == 0 {
 		return
 	}
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.PrimaryId(), utils.GetOrmInReplace(len(menuIds)))
-	_, err = o.Raw(sql, menuIds).Exec()
+	err = global.DEFAULT_DB.Exec(sql, menuIds).Error
+
 	return
 }
 
 func (m *CCFStockExcel) GetItemById(id int) (item *CCFStockExcel, err error) {
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, id).First(&item).Error
+
 	return
 }
 
 func (m *CCFStockExcel) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *CCFStockExcel, err error) {
-	o := orm.NewOrm()
 	order := ``
 	if orderRule != "" {
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).First(&item).Error
+
 	return
 }
 
 func (m *CCFStockExcel) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&count).Error
+
 	return
 }
 
 func (m *CCFStockExcel) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*CCFStockExcel, err error) {
-	o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -127,12 +122,12 @@ func (m *CCFStockExcel) GetItemsByCondition(condition string, pars []interface{}
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+
 	return
 }
 
 func (m *CCFStockExcel) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*CCFStockExcel, err error) {
-	o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -142,6 +137,8 @@ func (m *CCFStockExcel) GetPageItemsByCondition(condition string, pars []interfa
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	pars = append(pars, startSize, pageSize)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+
 	return
 }

+ 34 - 4
models/chart.go

@@ -2,9 +2,10 @@ package models
 
 import (
 	"encoding/json"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -41,7 +42,7 @@ func GetChartInfoDataKey(chartInfoId int) string {
 }
 
 type ChartInfo struct {
-	ChartInfoId     int    `orm:"column(chart_info_id);pk"`
+	ChartInfoId     int    `gorm:"column:chart_info_id;type:int(11);primaryKey;not null;" json:"chart_info_id"`
 	ChartName       string `description:"来源名称"`
 	ChartNameEn     string `description:"英文图表名称"`
 	ChartClassifyId int    `description:"图表分类id"`
@@ -71,10 +72,39 @@ type ChartInfo struct {
 	ExtraConfig     string `description:"图表额外配置,json数据"`
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *ChartInfo) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.SeasonStartDate = utils.GormDateStrToDateStr(m.SeasonStartDate)
+	m.SeasonEndDate = utils.GormDateStrToDateStr(m.SeasonEndDate)
+
+	return
+}
+
+// ConvDateTimeStr
+// @Description: ConvDateTimeStr
+// @author: Roc
+// @receiver m
+// @datetime 2025-02-13 09:54:02
+// @return err error
+func (m *ChartInfo) ConvDateTimeStr() {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.SeasonStartDate = utils.GormDateStrToDateStr(m.SeasonStartDate)
+	m.SeasonEndDate = utils.GormDateStrToDateStr(m.SeasonEndDate)
+
+	return
+}
+
 // GetChartInfoById 通过id获取图表信息
 func GetChartInfoById(chartInfoId int) (item *ChartInfo, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT * FROM chart_info WHERE chart_info_id=? `
-	err = o.Raw(sql, chartInfoId).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, chartInfoId).First(&item).Error
+	if err != nil {
+		return
+	}
+	item.ConvDateTimeStr()
+
 	return
 }

+ 43 - 24
models/chart_edb_mapping.go

@@ -1,48 +1,58 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 type ChartEdbMapping struct {
-	ChartEdbMappingId int       `orm:"column(chart_edb_mapping_id);pk"`
-	ChartInfoId       int       `description:"图表id"`
-	EdbInfoId         int       `description:"指标id"`
-	CreateTime        time.Time `description:"创建时间"`
-	ModifyTime        time.Time `description:"修改时间"`
-	UniqueCode        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:"领先单位"`
-	ChartStyle        string    `description:"图表类型"`
-	ChartColor        string    `description:"颜色"`
-	ChartWidth        float64   `description:"线条大小"`
-	Source            int       `description:"1:ETA图库;2:商品价格曲线"`
+	ChartEdbMappingId int       `gorm:"column:chart_edb_mapping_id;type:int(11);primaryKey;not null;" `
+	ChartInfoId       int       `gorm:"column:chart_info_id;type:int(11);comment:图表id;default:0;"`                  // 图表id
+	EdbInfoId         int       `gorm:"column:edb_info_id;type:int(11);comment:指标id;default:0;"`                    // 指标id
+	CreateTime        time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;default:NULL;"`                // 创建时间
+	ModifyTime        time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;default:NULL;"`                // 修改时间
+	UniqueCode        string    `gorm:"column:unique_code;type:varchar(50);comment:唯一编码;"`                          // 唯一编码
+	MaxData           float64   `gorm:"column:max_data;type:double;comment:上限;default:0;"`                          // 上限
+	MinData           float64   `gorm:"column:min_data;type:double;comment:下限;default:0;"`                          // 下限
+	IsOrder           bool      `gorm:"column:is_order;type:tinyint(4);comment:1:正序,0:逆序;default:1;"`               // 1:正序,0:逆序
+	IsAxis            int       `gorm:"column:is_axis;type:tinyint(4);comment:1:左轴,0:右轴;default:1;"`                // 1:左轴,0:右轴
+	EdbInfoType       int       `gorm:"column:edb_info_type;type:tinyint(4);comment:1:标准指标,0:领先指标;default:1;"`      // 1:标准指标,0:领先指标
+	LeadValue         int       `gorm:"column:lead_value;type:int(11);comment:领先值;default:0;"`                      // 领先值
+	LeadUnit          string    `gorm:"column:lead_unit;type:varchar(10);comment:领先单位;"`                            // 领先单位
+	ChartStyle        string    `gorm:"column:chart_style;type:varchar(20);comment:图表类型;"`                          // 图表类型
+	ChartColor        string    `gorm:"column:chart_color;type:varchar(36);comment:颜色;"`                            // 颜色
+	PredictChartColor string    `gorm:"column:predict_chart_color;type:varchar(36);comment:预测数据的颜色;"`               // 预测数据的颜色
+	ChartWidth        float64   `gorm:"column:chart_width;type:double;comment:线条大小;default:0;"`                     // 线条大小
+	Source            int       `gorm:"column:source;type:tinyint(9) UNSIGNED;comment:1:ETA图库;2:商品价格曲线;default:1;"` // 1:ETA图库;2:商品价格曲线
+	EdbAliasName      string    `gorm:"column:edb_alias_name;type:varchar(255);comment:中文别名;"`                      // 中文别名
+	IsConvert         int       `gorm:"column:is_convert;type:int(11);comment:是否数据转换 0不转 1转;default:0;" `           // 是否数据转换 0不转 1转
+	ConvertType       int       `gorm:"column:convert_type;type:int(11);comment:数据转换类型 1乘 2除 3对数;default:0;"`       // 数据转换类型 1乘 2除 3对数
+	ConvertValue      float64   `gorm:"column:convert_value;type:double;comment:数据转换值;default:0;"`                  // 数据转换值
+	ConvertUnit       string    `gorm:"column:convert_unit;type:varchar(10);comment:数据转换单位;"`                       // 数据转换单位
+	ConvertEnUnit     string    `gorm:"column:convert_en_unit;type:varchar(10);comment:数据转换单位;"`                    // 数据转换单位
+	ChartScale        float64   `gorm:"column:chart_scale;type:double;comment:参考刻度线;default:0;"`                    // 参考刻度线
 }
 
 // GetChartEdbMappingListByEdbInfoId 根据指标id获取关联图表列表
 func GetChartEdbMappingListByEdbInfoId(edbInfoId int) (list []*ChartEdbMapping, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT *
              FROM chart_edb_mapping AS a
 			 WHERE edb_info_id=? 
              ORDER BY chart_edb_mapping_id ASC `
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, edbInfoId).Find(&list).Error
+
 	return
 }
 
 // GetGroupChartEdbMappingListByEdbInfoId 根据指标id和来源分组获取关联图表列表
 func GetGroupChartEdbMappingListByEdbInfoId(edbInfoId, source int) (list []*ChartEdbMapping, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT *
              FROM chart_edb_mapping AS a
 			 WHERE edb_info_id=? AND source = ?  GROUP BY chart_info_id `
-	_, err = o.Raw(sql, edbInfoId, source).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, edbInfoId, source).Find(&list).Error
+
 	return
 }
 
@@ -103,12 +113,21 @@ type ChartEdbInfoMapping struct {
 	UniqueFlag          string  `description:"唯一标识(与唯一编码不是一个东西)"`
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *ChartEdbInfoMapping) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.LatestDate = utils.GormDateStrToDateStr(m.LatestDate)
+
+	return
+}
+
 // GetChartEdbMappingByEdbInfoId 根据指标id获取edb_mapping
 func GetChartEdbMappingByEdbInfoId(edbInfoId int) (item *ChartEdbInfoMapping, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT edb_info_id,source_name,classify_id,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,edb_type,max_value,min_value,is_join_permission
              FROM edb_info
 			 WHERE edb_info_id = ? limit 1`
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, edbInfoId).First(&item).Error
+
 	return
 }

+ 40 - 41
models/data_stat/edb_info_delete_log.go

@@ -1,49 +1,49 @@
 package data_stat
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
 )
 
 // EdbInfoDeleteLog 指标删除日志表
 type EdbInfoDeleteLog struct {
-	Id                 uint64  `orm:"column(id);pk"`
-	EdbInfoId          int     `description:"指标ID"`
-	EdbInfoType        int     `description:"指标类型,0:普通指标,1:预测指标"`
-	SourceName         string  `description:"来源名称"`
-	Source             int     `description:"来源id"`
-	EdbCode            string  `description:"指标编码"`
-	EdbName            string  `description:"指标名称"`
-	EdbNameEn          string  `description:"英文指标名称"`
-	EdbNameSource      string  `description:"指标名称来源"`
-	Frequency          string  `description:"频率"`
-	Unit               string  `description:"单位"`
-	UnitEn             string  `description:"英文单位"`
-	StartDate          string  `description:"起始日期"`
-	EndDate            string  `description:"终止日期"`
-	SysUserId          int     `description:"创建人ID"`
-	SysUserRealName    string  `description:"创建人姓名"`
-	UniqueCode         string  `description:"指标唯一编码"`
-	EdbCreateTime      string  `description:"指标创建时间"`
-	EdbModifyTime      string  `description:"指标修改时间"`
-	CreateTime         string  `description:"创建时间即删除时间"`
-	MinValue           float64 `description:"指标最小值"`
-	MaxValue           float64 `description:"指标最大值"`
-	CalculateFormula   string  `description:"计算公式"`
-	EdbType            int     `description:"指标类型:1:基础指标,2:计算指标"`
-	LatestDate         string  `description:"数据最新日期"`
-	LatestValue        float64 `description:"数据最新值"`
-	MoveType           int     `description:"移动方式:1:领先(默认),2:滞后"`
-	MoveFrequency      string  `description:"移动频度"`
-	NoUpdate           int8    `description:"是否停止更新,0:继续更新;1:停止更新"`
-	ChartImage         string  `description:"图表图片"`
-	Calendar           string  `description:"公历/农历" orm:"default(公历);"`
-	DataDateType       string  `orm:"column(data_date_type);size(255);null;default(交易日)"`
-	ManualSave         int     `description:"是否有手动保存过上下限: 0-否; 1-是"`
-	TerminalCode       string  `description:"终端编码,用于配置在机器上"`
-	DelSysUserId       int     `description:"删除人ID"`
-	DelSysUserRealName string  `description:"删除人姓名"`
-	DataUpdateTime     string  `description:"最近一次数据发生变化的时间"`
-	ErDataUpdateDate   string  `description:"本次更新,数据发生变化的最早日期"`
+	Id                 uint64  `gorm:"primaryKey;autoIncrement;column:id"             description:"记录ID"`
+	EdbInfoId          int     `gorm:"column:edb_info_id"                           description:"指标ID"`
+	EdbInfoType        int     `gorm:"column:edb_info_type"                         description:"指标类型,0:普通指标,1:预测指标"`
+	SourceName         string  `gorm:"column:source_name"                           description:"来源名称"`
+	Source             int     `gorm:"column:source"                               description:"来源id"`
+	EdbCode            string  `gorm:"column:edb_code"                             description:"指标编码"`
+	EdbName            string  `gorm:"column:edb_name"                             description:"指标名称"`
+	EdbNameEn          string  `gorm:"column:edb_name_en"                          description:"英文指标名称"`
+	EdbNameSource      string  `gorm:"column:edb_name_source"                      description:"指标名称来源"`
+	Frequency          string  `gorm:"column:frequency"                           description:"频率"`
+	Unit               string  `gorm:"column:unit"                                description:"单位"`
+	UnitEn             string  `gorm:"column:unit_en"                             description:"英文单位"`
+	StartDate          string  `gorm:"column:start_date"                          description:"起始日期"`
+	EndDate            string  `gorm:"column:end_date"                            description:"终止日期"`
+	SysUserId          int     `gorm:"column:sys_user_id"                         description:"创建人ID"`
+	SysUserRealName    string  `gorm:"column:sys_user_real_name"                  description:"创建人姓名"`
+	UniqueCode         string  `gorm:"column:unique_code"                         description:"指标唯一编码"`
+	EdbCreateTime      string  `gorm:"column:edb_create_time"                     description:"指标创建时间"`
+	EdbModifyTime      string  `gorm:"column:edb_modify_time"                     description:"指标修改时间"`
+	CreateTime         string  `gorm:"column:create_time"                         description:"创建时间即删除时间"`
+	MinValue           float64 `gorm:"column:min_value"                           description:"指标最小值"`
+	MaxValue           float64 `gorm:"column:max_value"                           description:"指标最大值"`
+	CalculateFormula   string  `gorm:"column:calculate_formula"                   description:"计算公式"`
+	EdbType            int     `gorm:"column:edb_type"                            description:"指标类型:1:基础指标,2:计算指标"`
+	LatestDate         string  `gorm:"column:latest_date"                         description:"数据最新日期"`
+	LatestValue        float64 `gorm:"column:latest_value"                        description:"数据最新值"`
+	MoveType           int     `gorm:"column:move_type"                           description:"移动方式:1:领先(默认),2:滞后"`
+	MoveFrequency      string  `gorm:"column:move_frequency"                      description:"移动频度"`
+	NoUpdate           int8    `gorm:"column:no_update"                           description:"是否停止更新,0:继续更新;1:停止更新"`
+	ChartImage         string  `gorm:"column:chart_image"                         description:"图表图片"`
+	Calendar           string  `gorm:"column:calendar;default:公历"               description:"公历/农历"`
+	DataDateType       string  `gorm:"column:data_date_type;size:255;null;default:交易日" description:"数据日期类型"`
+	ManualSave         int     `gorm:"column:manual_save"                         description:"是否有手动保存过上下限: 0-否; 1-是"`
+	TerminalCode       string  `gorm:"column:terminal_code"                       description:"终端编码,用于配置在机器上"`
+	DelSysUserId       int     `gorm:"column:del_sys_user_id"                     description:"删除人ID"`
+	DelSysUserRealName string  `gorm:"column:del_sys_user_real_name"              description:"删除人姓名"`
+	DataUpdateTime     string  `gorm:"column:data_update_time"                    description:"最近一次数据发生变化的时间"`
+	ErDataUpdateDate   string  `gorm:"column:er_data_update_date"                 description:"本次更新,数据发生变化的最早日期"`
 }
 
 type EdbInfoDeleteLogNum struct {
@@ -53,8 +53,7 @@ type EdbInfoDeleteLogNum struct {
 }
 
 func GetEdbDeleteLogNumByCreateTime(startDate, endDate string) (item []*EdbInfoDeleteLogNum, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT source, terminal_code, count(*) as num FROM edb_info_delete_log WHERE create_time >= ? and create_time < ? group by source, terminal_code `
-	_, err = o.Raw(sql, startDate, endDate).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, startDate, endDate).Find(&item).Error
 	return
 }

+ 51 - 37
models/data_stat/edb_info_update_log.go

@@ -1,65 +1,79 @@
 package data_stat
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 // EdbInfoUpdateLog 指标更新/刷新日志列表
 type EdbInfoUpdateLog struct {
-	Id                     uint64    `orm:"column(id);pk"`
-	EdbInfoId              int       `description:"指标ID"`
-	SourceName             string    `description:"来源名称"`
-	Source                 int       `description:"来源id"`
-	EdbCode                string    `description:"指标编码"`
-	EdbName                string    `description:"指标名称"`
-	EdbNameSource          string    `description:"指标名称来源"`
-	Frequency              string    `description:"频率"`
-	Unit                   string    `description:"单位"`
-	StartDate              string    `description:"起始日期"`
-	EndDate                string    `description:"终止日期"`
-	SysUserId              int       `description:"创建人ID"`
-	SysUserRealName        string    `description:"创建人姓名"`
-	UniqueCode             string    `description:"指标唯一编码"`
-	EdbCreateTime          time.Time `description:"指标创建时间"`
-	EdbModifyTime          time.Time `description:"指标修改时间"`
-	CreateTime             time.Time `description:"创建时间"`
-	UpdateSysUserId        int       `description:"变更人ID"`
-	UpdateSysUserRealName  string    `description:"变更人姓名"`
-	LatestDate             string    `description:"数据最新日期"`
-	LatestValue            float64   `description:"数据最新值"`
-	TerminalCode           string    `description:"终端编码,用于配置在机器上"`
-	ErDataUpdateDate       string    `description:"本次更新,数据发生变化的最早日期"`
-	UpdateResult           int       `description:"本次刷新操作结果:1成功,2失败"`
-	UpdateFailedReason     string    `description:"刷新失败原因"`
-	DataUpdateResult       int       `description:"数据更新结果:1成功,2失败"`
-	DataUpdateFailedReason string    `description:"数据未正常更新原因"`
-	DataUpdateTime         string    `description:"数据更新时间"`
-	IsSourceRefresh        int       `description:"是否为终端刷新到数据源的刷新操作:0否,1是"`
-	UpdateType             int       `description:"变更类型,0:数据明细变更,1:基础信息变更, 2:新增指标"`
+	Id                     uint64    `gorm:"primaryKey;autoIncrement;column:id"                        description:"记录ID"`
+	EdbInfoId              int       `gorm:"column:edb_info_id"                                      description:"指标ID"`
+	SourceName             string    `gorm:"column:source_name"                                     description:"来源名称"`
+	Source                 int       `gorm:"column:source"                                          description:"来源id"`
+	EdbCode                string    `gorm:"column:edb_code"                                        description:"指标编码"`
+	EdbName                string    `gorm:"column:edb_name"                                        description:"指标名称"`
+	EdbNameSource          string    `gorm:"column:edb_name_source"                                 description:"指标名称来源"`
+	Frequency              string    `gorm:"column:frequency"                                       description:"频率"`
+	Unit                   string    `gorm:"column:unit"                                            description:"单位"`
+	StartDate              string    `gorm:"column:start_date"                                      description:"起始日期"`
+	EndDate                string    `gorm:"column:end_date"                                        description:"终止日期"`
+	SysUserId              int       `gorm:"column:sys_user_id"                                     description:"创建人ID"`
+	SysUserRealName        string    `gorm:"column:sys_user_real_name"                              description:"创建人姓名"`
+	UniqueCode             string    `gorm:"column:unique_code"                                     description:"指标唯一编码"`
+	EdbCreateTime          time.Time `gorm:"column:edb_create_time"                                 description:"指标创建时间"`
+	EdbModifyTime          time.Time `gorm:"column:edb_modify_time"                                 description:"指标修改时间"`
+	CreateTime             time.Time `gorm:"column:create_time"                                     description:"创建时间"`
+	UpdateSysUserId        int       `gorm:"column:update_sys_user_id"                              description:"变更人ID"`
+	UpdateSysUserRealName  string    `gorm:"column:update_sys_user_real_name"                       description:"变更人姓名"`
+	LatestDate             string    `gorm:"column:latest_date"                                     description:"数据最新日期"`
+	LatestValue            float64   `gorm:"column:latest_value"                                    description:"数据最新值"`
+	TerminalCode           string    `gorm:"column:terminal_code"                                   description:"终端编码,用于配置在机器上"`
+	ErDataUpdateDate       string    `gorm:"column:er_data_update_date"                             description:"本次更新,数据发生变化的最早日期"`
+	UpdateResult           int       `gorm:"column:update_result"                                   description:"本次刷新操作结果:1成功,2失败"`
+	UpdateFailedReason     string    `gorm:"column:update_failed_reason"                            description:"刷新失败原因"`
+	DataUpdateResult       int       `gorm:"column:data_update_result"                              description:"数据更新结果:1成功,2失败"`
+	DataUpdateFailedReason string    `gorm:"column:data_update_failed_reason"                       description:"数据未正常更新原因"`
+	DataUpdateTime         string    `gorm:"column:data_update_time"                                description:"数据更新时间"`
+	IsSourceRefresh        int       `gorm:"column:is_source_refresh"                               description:"是否为终端刷新到数据源的刷新操作:0否,1是"`
+	UpdateType             int       `gorm:"column:update_type"                                     description:"变更类型,0:数据明细变更,1:基础信息变更, 2:新增指标"`
+}
+
+func (e *EdbInfoUpdateLog) AfterFind(db *gorm.DB) (err error) {
+	e.LatestDate = utils.GormDateStrToDateStr(e.LatestDate)
+	e.ErDataUpdateDate = utils.GormDateStrToDateStr(e.ErDataUpdateDate)
+	e.DataUpdateTime = utils.GormDateStrToDateTimeStr(e.DataUpdateTime)
+
+	return
 }
 
 func AddEdbUpdateLog(item *EdbInfoUpdateLog) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.Id)
+
 	return
 }
 
 // GetEdbUpdateLogByCondition 获取指标更新记录
 func GetEdbUpdateLogByCondition(condition string, pars []interface{}) (item []*EdbInfoUpdateLog, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT * FROM edb_info_update_log WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
+
 	return
 }
 
 // GetEdbUpdateSourceLogByCreateDate 获取指标终端更新记录
 func GetEdbUpdateSourceLogByCreateDate(source int, startDate, endDate string) (item []*EdbInfoUpdateLog, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT * FROM edb_info_update_log WHERE source = ? and create_time >= ? and create_time < ? and is_source_refresh =1 order by data_update_result asc, id desc`
-	_, err = o.Raw(sql, source, startDate, endDate).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, source, startDate, endDate).Find(&item).Error
+
 	return
 }

+ 58 - 45
models/data_stat/edb_info_update_stat.go

@@ -1,55 +1,73 @@
 package data_stat
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 // EdbInfoUpdateStat 指标更新/刷新 汇总表(数据源明细表)
 type EdbInfoUpdateStat struct {
-	Id                     uint64    `orm:"column(id);pk"`
-	EdbInfoId              int       `description:"指标ID"`
-	SourceName             string    `description:"来源名称"`
-	Source                 int       `description:"来源id"`
-	EdbCode                string    `description:"指标编码"`
-	EdbName                string    `description:"指标名称"`
-	EdbNameSource          string    `description:"指标名称来源"`
-	Frequency              string    `description:"频率"`
-	Unit                   string    `description:"单位"`
-	StartDate              string    `description:"起始日期"`
-	EndDate                string    `description:"终止日期"`
-	SysUserId              int       `description:"创建人ID"`
-	SysUserRealName        string    `description:"创建人姓名"`
-	UniqueCode             string    `description:"指标唯一编码"`
-	EdbCreateTime          time.Time `description:"指标创建时间"`
-	EdbModifyTime          time.Time `description:"指标修改时间"`
-	CreateTime             time.Time `description:"记录创建时间"`
-	LatestDate             string    `description:"数据最新日期"`
-	LatestValue            float64   `description:"数据最新值"`
-	TerminalCode           string    `description:"终端编码,用于配置在机器上"`
-	ErDataUpdateDate       string    `description:"本次更新,数据发生变化的最早日期"`
-	DataUpdateResult       int       `description:"数据更新结果:1成功,2失败"`
-	DataUpdateFailedReason string    `description:"数据未正常更新原因"`
-	DataUpdateTime         string    `description:"数据更新时间"`
-	UpdateResult           int       `description:"本次刷新操作结果:1成功,2失败"`
-	UpdateFailedReason     string    `description:"刷新失败原因"`
-	UpdateTime             string    `description:"刷新时间"`
-	ModifyTime             time.Time `description:"修改时间"`
-	IsAdd                  int       `description:"是否是当日新增的指标:1是,2否"`
-	NeedRefresh            int       `description:"今日是否需要定时刷新,1需要,0不需要"`
-	HasRefresh             int       `description:"今日是否发起刷新服务,1是,0否"`
+	Id                     uint64    `gorm:"primaryKey;autoIncrement;column:id" description:"ID"`
+	EdbInfoId              int       `gorm:"column:edb_info_id" description:"指标ID"`
+	SourceName             string    `gorm:"column:source_name" description:"来源名称"`
+	Source                 int       `gorm:"column:source" description:"来源id"`
+	EdbCode                string    `gorm:"column:edb_code" description:"指标编码"`
+	EdbName                string    `gorm:"column:edb_name" description:"指标名称"`
+	EdbNameSource          string    `gorm:"column:edb_name_source" description:"指标名称来源"`
+	Frequency              string    `gorm:"column:frequency" description:"频率"`
+	Unit                   string    `gorm:"column:unit" description:"单位"`
+	StartDate              string    `gorm:"column:start_date" description:"起始日期"`
+	EndDate                string    `gorm:"column:end_date" description:"终止日期"`
+	SysUserId              int       `gorm:"column:sys_user_id" description:"创建人ID"`
+	SysUserRealName        string    `gorm:"column:sys_user_real_name" description:"创建人姓名"`
+	UniqueCode             string    `gorm:"column:unique_code" description:"指标唯一编码"`
+	EdbCreateTime          time.Time `gorm:"column:edb_create_time" description:"指标创建时间"`
+	EdbModifyTime          time.Time `gorm:"column:edb_modify_time" description:"指标修改时间"`
+	CreateTime             time.Time `gorm:"column:create_time" description:"记录创建时间"`
+	LatestDate             string    `gorm:"column:latest_date" description:"数据最新日期"`
+	LatestValue            float64   `gorm:"column:latest_value" description:"数据最新值"`
+	TerminalCode           string    `gorm:"column:terminal_code" description:"终端编码,用于配置在机器上"`
+	ErDataUpdateDate       string    `gorm:"column:er_data_update_date" description:"本次更新,数据发生变化的最早日期"`
+	DataUpdateResult       int       `gorm:"column:data_update_result" description:"数据更新结果:1成功,2失败"`
+	DataUpdateFailedReason string    `gorm:"column:data_update_failed_reason" description:"数据未正常更新原因"`
+	DataUpdateTime         string    `gorm:"column:data_update_time" description:"数据更新时间"`
+	UpdateResult           int       `gorm:"column:update_result" description:"本次刷新操作结果:1成功,2失败"`
+	UpdateFailedReason     string    `gorm:"column:update_failed_reason" description:"刷新失败原因"`
+	UpdateTime             string    `gorm:"column:update_time" description:"刷新时间"`
+	ModifyTime             time.Time `gorm:"column:modify_time" description:"修改时间"`
+	IsAdd                  int       `gorm:"column:is_add" description:"是否是当日新增的指标:1是,2否"`
+	NeedRefresh            int       `gorm:"column:need_refresh" description:"今日是否需要定时刷新,1需要,0不需要"`
+	HasRefresh             int       `gorm:"column:has_refresh" description:"今日是否发起刷新服务,1是,0否"`
+}
+
+func (e *EdbInfoUpdateStat) AfterFind(db *gorm.DB) (err error) {
+	e.LatestDate = utils.GormDateStrToDateStr(e.LatestDate)
+	e.ErDataUpdateDate = utils.GormDateStrToDateStr(e.ErDataUpdateDate)
+	e.DataUpdateTime = utils.GormDateStrToDateTimeStr(e.DataUpdateTime)
+	e.UpdateTime = utils.GormDateStrToDateTimeStr(e.UpdateTime)
+
+	return
 }
 
 // Add 新增
 func (r *EdbInfoUpdateStat) Add(list []*EdbInfoUpdateStat) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(list), list)
+	err = global.DEFAULT_DB.CreateInBatches(list, utils.MultiAddNum).Error
+
 	return
 }
 
 // UpdateEdbUpdateStatMulti 批量更新
 func UpdateEdbUpdateStatMulti(list []*EdbInfoUpdateStat) (err error) {
-	o := orm.NewOrm()
+	o := global.DEFAULT_DB.Begin()
+	defer func() {
+		if err != nil {
+			_ = o.Rollback()
+		} else {
+			_ = o.Commit()
+		}
+	}()
 	sql := `UPDATE edb_info_update_stat 
 SET 
 edb_name = ?,
@@ -75,29 +93,24 @@ update_failed_reason = ?,
 update_time = ?
 WHERE
 	id = ?`
-	p, err := o.Raw(sql).Prepare()
-	if err != nil {
-		return
-	}
-	defer func() {
-		_ = p.Close() // 别忘记关闭 statement
-	}()
+
 	for _, v := range list {
-		_, err = p.Exec(v.EdbName, v.EdbNameSource, v.Frequency, v.Unit, v.StartDate, v.EndDate, v.EdbModifyTime, v.LatestDate, v.LatestValue, v.TerminalCode, v.ModifyTime, v.ErDataUpdateDate, v.IsAdd, v.NeedRefresh, v.HasRefresh, v.DataUpdateResult, v.DataUpdateFailedReason, v.DataUpdateTime, v.UpdateResult, v.UpdateFailedReason, v.UpdateTime, v.Id)
+		err = o.Exec(sql, v.EdbName, v.EdbNameSource, v.Frequency, v.Unit, v.StartDate, v.EndDate, v.EdbModifyTime, v.LatestDate, v.LatestValue, v.TerminalCode, v.ModifyTime, v.ErDataUpdateDate, v.IsAdd, v.NeedRefresh, v.HasRefresh, v.DataUpdateResult, v.DataUpdateFailedReason, v.DataUpdateTime, v.UpdateResult, v.UpdateFailedReason, v.UpdateTime, v.Id).Error
 		if err != nil {
 			return
 		}
 	}
+
 	return
 }
 
 // GetEdbUpdateStatByCondition 获取指标更新汇总记录
 func GetEdbUpdateStatByCondition(condition string, pars []interface{}) (item []*EdbInfoUpdateStat, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT * FROM edb_info_update_stat WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
+
 	return
 }

+ 30 - 29
models/data_stat/edb_source_stat.go

@@ -1,49 +1,56 @@
 package data_stat
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
 	"time"
 )
 
 // EdbSourceStat 数据源统计表
 type EdbSourceStat struct {
-	Id                int       `orm:"column(id);pk"`
-	SourceName        string    `description:"来源名称"`
-	Source            int       `description:"来源id"`
-	TerminalCode      string    `description:"终端编码,用于配置在机器上"`
-	EdbNum            int       `description:"指标总数"`
-	EdbNewNum         int       `description:"今日新增指标数"`
-	EdbDelNum         int       `description:"今日删除指标数"`
-	NeedRefreshNum    int       `description:"今日需刷新指标"`
-	HasRefreshNum     int       `description:"今日发起刷新任务指标数"`
-	UpdateSuccessNum  int       `description:"今日已更新成功指标数"`
-	UpdateFailedNum   int       `description:"今日已更新失败指标数"`
-	RefreshSuccessNum int       `description:"今日已刷新成功指标数"`
-	RefreshFailedNum  int       `description:"今日已刷新失败指标数"`
-	CreateTime        time.Time `description:"创建时间"`
-	ModifyTime        time.Time `description:"修改时间"`
+	Id                int       `gorm:"primaryKey;autoIncrement;column:id" description:"ID"`
+	SourceName        string    `gorm:"column:source_name" description:"来源名称"`
+	Source            int       `gorm:"column:source" description:"来源id"`
+	TerminalCode      string    `gorm:"column:terminal_code" description:"终端编码,用于配置在机器上"`
+	EdbNum            int       `gorm:"column:edb_num" description:"指标总数"`
+	EdbNewNum         int       `gorm:"column:edb_new_num" description:"今日新增指标数"`
+	EdbDelNum         int       `gorm:"column:edb_del_num" description:"今日删除指标数"`
+	NeedRefreshNum    int       `gorm:"column:need_refresh_num" description:"今日需刷新指标"`
+	HasRefreshNum     int       `gorm:"column:has_refresh_num" description:"今日发起刷新任务指标数"`
+	UpdateSuccessNum  int       `gorm:"column:update_success_num" description:"今日已更新成功指标数"`
+	UpdateFailedNum   int       `gorm:"column:update_failed_num" description:"今日已更新失败指标数"`
+	RefreshSuccessNum int       `gorm:"column:refresh_success_num" description:"今日已刷新成功指标数"`
+	RefreshFailedNum  int       `gorm:"column:refresh_failed_num" description:"今日已刷新失败指标数"`
+	CreateTime        time.Time `gorm:"column:create_time" description:"创建时间"`
+	ModifyTime        time.Time `gorm:"column:modify_time" description:"修改时间"`
 }
 
 func GetEdbSourceStatByCondition(condition string, pars []interface{}) (item []*EdbSourceStat, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT * FROM edb_source_stat WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = o.Raw(sql, pars).QueryRows(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
 // Add 新增
 func (r *EdbSourceStat) Add(list []*EdbSourceStat) (err error) {
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(list), list)
+	err = global.DEFAULT_DB.CreateInBatches(list, utils.MultiAddNum).Error
+
 	return
 }
 
 // UpdateEdbSourceStatMulti 批量更新
 func UpdateEdbSourceStatMulti(list []*EdbSourceStat) (err error) {
-	o := orm.NewOrm()
+	o := global.DEFAULT_DB.Begin()
+	defer func() {
+		if err != nil {
+			_ = o.Rollback()
+		} else {
+			_ = o.Commit()
+		}
+	}()
 	sql := `UPDATE edb_source_stat 
 SET 
 edb_num=?,                              
@@ -58,18 +65,12 @@ refresh_failed_num=?,
 modify_time=?                           
 WHERE
 	id = ?`
-	p, err := o.Raw(sql).Prepare()
-	if err != nil {
-		return
-	}
-	defer func() {
-		_ = p.Close() // 别忘记关闭 statement
-	}()
 	for _, v := range list {
-		_, err = p.Exec(v.EdbNum, v.EdbNewNum, v.EdbDelNum, v.NeedRefreshNum, v.HasRefreshNum, v.UpdateSuccessNum, v.UpdateFailedNum, v.RefreshSuccessNum, v.RefreshFailedNum, v.ModifyTime, v.Id)
+		err = o.Exec(sql, v.EdbNum, v.EdbNewNum, v.EdbDelNum, v.NeedRefreshNum, v.HasRefreshNum, v.UpdateSuccessNum, v.UpdateFailedNum, v.RefreshSuccessNum, v.RefreshFailedNum, v.ModifyTime, v.Id).Error
 		if err != nil {
 			return
 		}
 	}
+
 	return
 }

+ 4 - 4
models/db.go

@@ -13,7 +13,7 @@ import (
 	_ "github.com/go-sql-driver/mysql"
 )
 
-func init() {
+func init2() {
 	_ = orm.RegisterDataBase("default", "mysql", utils.MYSQL_URL)
 	orm.SetMaxIdleConns("default", 50)
 	orm.SetMaxOpenConns("default", 100)
@@ -100,7 +100,7 @@ func init() {
 	initFactorEdbSeries()
 
 	// 初始化部分数据表变量(直接init会有顺序问题=_=!)
-	afterInitTable()
+	AfterInitTable()
 }
 
 // initFutureGood 注册期货数据 数据表
@@ -232,11 +232,11 @@ func initFactorEdbSeries() {
 	)
 }
 
-// afterInitTable
+// AfterInitTable
 // @Description: 初始化表结构的的后置操作
 // @author: Roc
 // @datetime 2024-07-01 13:31:09
-func afterInitTable() {
+func AfterInitTable() {
 	// 初始化指标来源配置
 	InitEdbSource()
 

+ 64 - 67
models/db_base.go

@@ -2,70 +2,67 @@
 // @Author : bingee
 package models
 
-import (
-	"github.com/beego/beego/v2/client/orm"
-)
-
-// 是否存在
-func IsExistByExpr(ptrStructOrTableName interface{}, where map[string]interface{}) bool {
-	o := orm.NewOrm()
-	qs := o.QueryTable(ptrStructOrTableName)
-	for expr, exprV := range where {
-		qs = qs.Filter(expr, exprV)
-	}
-	return qs.Exist()
-}
-
-// 获取条数
-func GetCountByExpr(ptrStructOrTableName interface{}, where map[string]interface{}) (count int64, err error) {
-	o := orm.NewOrm()
-	qs := o.QueryTable(ptrStructOrTableName)
-	for expr, exprV := range where {
-		qs = qs.Filter(expr, exprV)
-	}
-	count, err = qs.Count()
-	return
-}
-
-// 更新
-func UpdateByExpr(ptrStructOrTableName interface{}, where map[string]interface{}, updateParams orm.Params) error {
-	o := orm.NewOrm()
-	qs := o.QueryTable(ptrStructOrTableName)
-	for expr, exprV := range where {
-		qs = qs.Filter(expr, exprV)
-	}
-	_, err := qs.Update(updateParams)
-	return err
-}
-
-// 删除
-func DeleteByExpr(ptrStructOrTableName interface{}, where map[string]interface{}) error {
-	o := orm.NewOrm()
-	qs := o.QueryTable(ptrStructOrTableName)
-	for expr, exprV := range where {
-		qs = qs.Filter(expr, exprV)
-	}
-	_, err := qs.Delete()
-	return err
-}
-
-// 插入
-func InsertData(ptrStructOrTableName interface{}) (int64, error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(ptrStructOrTableName)
-	return id, err
-}
-
-// 获取数据
-func GetDataByExpr(ptrStructOrTableName interface{}, where map[string]interface{}, data interface{}, page ...int64) (err error) {
-	o := orm.NewOrm()
-	qs := o.QueryTable(ptrStructOrTableName)
-	for expr, exprV := range where {
-		qs = qs.Filter(expr, exprV)
-	}
-	if len(page) > 1 {
-		qs = qs.Limit(page[1], page[0])
-	}
-	_, err = qs.All(data)
-	return err
-}
+//
+//// 是否存在
+//func IsExistByExpr(ptrStructOrTableName interface{}, where map[string]interface{}) bool {
+//	o := orm.NewOrm()
+//	qs := o.QueryTable(ptrStructOrTableName)
+//	for expr, exprV := range where {
+//		qs = qs.Filter(expr, exprV)
+//	}
+//	return qs.Exist()
+//}
+//
+//// 获取条数
+//func GetCountByExpr(ptrStructOrTableName interface{}, where map[string]interface{}) (count int64, err error) {
+//	o := orm.NewOrm()
+//	qs := o.QueryTable(ptrStructOrTableName)
+//	for expr, exprV := range where {
+//		qs = qs.Filter(expr, exprV)
+//	}
+//	count, err = qs.Count()
+//	return
+//}
+//
+//// 更新
+//func UpdateByExpr(ptrStructOrTableName interface{}, where map[string]interface{}, updateParams orm.Params) error {
+//	o := orm.NewOrm()
+//	qs := o.QueryTable(ptrStructOrTableName)
+//	for expr, exprV := range where {
+//		qs = qs.Filter(expr, exprV)
+//	}
+//	_, err := qs.Update(updateParams)
+//	return err
+//}
+//
+//// 删除
+//func DeleteByExpr(ptrStructOrTableName interface{}, where map[string]interface{}) error {
+//	o := orm.NewOrm()
+//	qs := o.QueryTable(ptrStructOrTableName)
+//	for expr, exprV := range where {
+//		qs = qs.Filter(expr, exprV)
+//	}
+//	_, err := qs.Delete()
+//	return err
+//}
+//
+//// 插入
+//func InsertData(ptrStructOrTableName interface{}) (int64, error) {
+//	o := orm.NewOrm()
+//	id, err := o.Insert(ptrStructOrTableName)
+//	return id, err
+//}
+//
+//// 获取数据
+//func GetDataByExpr(ptrStructOrTableName interface{}, where map[string]interface{}, data interface{}, page ...int64) (err error) {
+//	o := orm.NewOrm()
+//	qs := o.QueryTable(ptrStructOrTableName)
+//	for expr, exprV := range where {
+//		qs = qs.Filter(expr, exprV)
+//	}
+//	if len(page) > 1 {
+//		qs = qs.Limit(page[1], page[0])
+//	}
+//	_, err = qs.All(data)
+//	return err
+//}

+ 1 - 1
models/edb_adjust_conf.go

@@ -6,7 +6,7 @@ import (
 
 // EdbAdjustConf 计算指标于基础指标,关系表
 type EdbAdjustConf struct {
-	EdbInfoId     int       `orm:"column(edb_info_id);pk" description:"计算指标id"`
+	EdbInfoId     int       `gorm:"column:edb_info_id;primaryKey" description:"计算指标id"`
 	SourceEndDate time.Time `description:"来源指标的实际数据日期"`
 	ModifyTime    time.Time `description:"修改时间"`
 	CreateTime    time.Time `description:"创建时间"`

+ 22 - 14
models/edb_classify.go

@@ -1,15 +1,16 @@
 package models
 
 import (
+	sql2 "database/sql"
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"time"
 )
 
 type EdbClassify struct {
-	ClassifyId      int       `orm:"column(classify_id);pk"`
+	ClassifyId      int       `gorm:"column:classify_id;type:int(11);primaryKey;not null;"`
 	ClassifyType    uint8     `description:"分类类型,0:普通指标分类,1:预测指标分类"`
 	ClassifyName    string    `description:"分类名称"`
 	ParentId        int       `description:"父级id"`
@@ -25,22 +26,26 @@ type EdbClassify struct {
 }
 
 func AddEdbClassify(item *EdbClassify) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.ClassifyId)
+
 	return
 }
 
 // Update 更新分类基础信息
 func (edbClassify *EdbClassify) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(edbClassify, cols...)
+	err = global.DEFAULT_DB.Model(edbClassify).Select(cols).Updates(edbClassify).Error
+
 	return
 }
 
 func GetEdbClassifyById(classifyId int) (item *EdbClassify, err error) {
-	o := orm.NewOrm()
 	sql := `SELECT * FROM edb_classify WHERE classify_id=? `
-	err = o.Raw(sql, classifyId).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, classifyId).First(&item).Error
+
 	return
 }
 
@@ -52,11 +57,10 @@ type EdbClassifySimplify struct {
 
 // 递归获取所有目录
 func GetClassifyAllByClassifyId(classifyId int) (resultList []*EdbClassifySimplify, err error) {
-	o := orm.NewOrm()
 	for {
 		sql := ` SELECT * FROM edb_classify AS a WHERE a.classify_id=? order by sort asc,classify_id asc`
 		item := new(EdbClassifySimplify)
-		err = o.Raw(sql, classifyId).QueryRow(&item)
+		err = global.DEFAULT_DB.Raw(sql, classifyId).First(&item).Error
 		if err != nil {
 			break
 		}
@@ -72,17 +76,21 @@ func GetClassifyAllByClassifyId(classifyId int) (resultList []*EdbClassifySimpli
 
 // 判断分类名称是否存在
 func GetEdbClassifyCount(classifyName string, parentId int, classifyType uint8) (item *EdbClassify, err error) {
-	o := orm.NewOrm()
 	sql := `SELECT * FROM edb_classify WHERE parent_id=? AND classify_name=? AND classify_type = ? `
-	err = o.Raw(sql, parentId, classifyName, classifyType).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, parentId, classifyName, classifyType).First(&item).Error
+
 	return
 }
 
 // GetEdbClassifyMaxSort 获取分类下最大的排序数
 func GetEdbClassifyMaxSort(parentId int, classifyType uint8) (sort int, err error) {
-	o := orm.NewOrm()
+	var sortNull sql2.NullInt64
 	sql := `SELECT Max(sort) AS sort FROM edb_classify WHERE parent_id=? AND classify_type=? `
-	err = o.Raw(sql, parentId, classifyType).QueryRow(&sort)
+	err = global.DEFAULT_DB.Raw(sql, parentId, classifyType).Scan(&sortNull).Error
+	if err == nil && sortNull.Valid {
+		sort = int(sortNull.Int64)
+	}
+
 	return
 }
 

+ 7 - 5
models/edb_config.go

@@ -1,6 +1,8 @@
 package models
 
-import "github.com/beego/beego/v2/client/orm"
+import (
+	"eta/eta_index_lib/global"
+)
 
 type EdbConfig struct {
 	ConfigValue string `description:"详情"`
@@ -8,16 +10,16 @@ type EdbConfig struct {
 
 // EdbConfigUpdate 修改配置
 func EdbConfigUpdate(newValue, configCode string) (err error) {
-	o := orm.NewOrm()
 	sql := `UPDATE edb_config SET  config_value=?   WHERE config_code=  ?`
-	_, err = o.Raw(sql, newValue, configCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, newValue, configCode).Error
+
 	return
 }
 
 // GetConfigDetailByCode 根据配置编码获取配置的值
 func GetConfigDetailByCode(configCode string) (item *EdbConfig, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT config_value FROM edb_config WHERE config_code=? `
-	err = o.Raw(sql, configCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, configCode).First(&item).Error
+
 	return
 }

+ 60 - 51
models/edb_data_base.go

@@ -1,9 +1,10 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"strings"
 	"time"
 )
@@ -20,15 +21,22 @@ type EdbDataItem struct {
 }
 
 type EdbData struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         string
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
+	EdbDataId     int       `gorm:"primaryKey;autoIncrement;column:edb_data_id"`
+	EdbInfoId     int       `gorm:"column:edb_info_id"`
+	EdbCode       string    `gorm:"column:edb_code"`
+	DataTime      string    `gorm:"column:data_time"`
+	Value         string    `gorm:"column:value"`
+	Status        int       `gorm:"column:status"`
+	CreateTime    time.Time `gorm:"column:create_time"`
+	ModifyTime    time.Time `gorm:"column:modify_time"`
+	DataTimestamp int64     `gorm:"column:data_timestamp"`
+}
+
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *EdbData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
 }
 
 func GetAddSql(edbInfoId, edbCode, dataTime, timestampStr string, value string) (addSql string) {
@@ -40,6 +48,7 @@ func GetAddSql(edbInfoId, edbCode, dataTime, timestampStr string, value string)
 	addSql += "),"
 	return
 }
+
 func GetAddSqlV2(edbInfoId, edbCode, dataTime, timestampStr string, value, nowStr string) (addSql string) {
 	addSql += "("
 	addSql += edbInfoId + "," + "'" + edbCode + "'" + "," + "'" + dataTime + "'" + "," + value + "," + "'" + nowStr + "'" +
@@ -59,12 +68,11 @@ type AddEdbInfoReq struct {
 
 // GetEdbInfoCountByCondition 获取指标数量
 func GetEdbInfoCountByCondition(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT COUNT(1) AS count FROM edb_info WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
@@ -72,7 +80,6 @@ func GetEdbInfoCountByCondition(condition string, pars []interface{}) (count int
 func GetEdbDataAllByEdbCode(edbCode string, source, subSource, limit int) (items []*EdbInfoSearchData, err error) {
 	var pars []interface{}
 	pars = append(pars, edbCode)
-	o := orm.NewOrm()
 
 	tableName := GetEdbDataTableName(source, subSource)
 	sql := ` SELECT * FROM %s WHERE edb_code=? ORDER BY data_time DESC`
@@ -81,12 +88,11 @@ func GetEdbDataAllByEdbCode(edbCode string, source, subSource, limit int) (items
 		pars = append(pars, limit)
 	}
 	sql = fmt.Sprintf(sql, tableName)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
 func GetEdbDataByCondition(source, subSource int, condition string, pars []interface{}) (items []*EdbInfoSearchData, err error) {
-	o := orm.NewOrm()
 	tableName := GetEdbDataTableName(source, subSource)
 	sql := ` SELECT * FROM %s WHERE 1=1 `
 	if condition != "" {
@@ -94,26 +100,32 @@ func GetEdbDataByCondition(source, subSource int, condition string, pars []inter
 	}
 	sql += ` ORDER BY data_time DESC `
 	sql = fmt.Sprintf(sql, tableName)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
+	if err != nil {
+		return
+	}
+
+	for _, v := range items {
+		v.ConvertTimeStr()
+	}
+
 	return
 }
 
 // GetEdbDataByDate 根据数据日期获取指标数据
 func GetEdbDataByDate(source, subSource int, edbCode, dataTime string) (item *EdbInfoSearchData, err error) {
-	o := orm.NewOrm()
 	tableName := GetEdbDataTableName(source, subSource)
 	sql := ` SELECT * FROM %s WHERE 1=1 AND edb_code = ? AND data_time =? ORDER BY data_time DESC `
 	sql = fmt.Sprintf(sql, tableName)
-	err = o.Raw(sql, edbCode, dataTime).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, edbCode, dataTime).First(&item).Error
 	return
 }
 
 func ModifyEdbDataById(source, subSource, edbDataId int, value string) (err error) {
-	o := orm.NewOrm()
 	tableName := GetEdbDataTableName(source, subSource)
 	sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_data_id=? `
 	sql = fmt.Sprintf(sql, tableName)
-	_, err = o.Raw(sql, value, edbDataId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, value, edbDataId).Error
 	return
 }
 
@@ -122,8 +134,7 @@ func DeleteEdbDataById(source, subSource, edbDataId int) (err error) {
 	tableName := GetEdbDataTableName(source, subSource)
 	sql = fmt.Sprintf(sql, tableName)
 
-	o := orm.NewOrm()
-	_, err = o.Raw(sql, edbDataId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, edbDataId).Error
 	return
 }
 
@@ -134,32 +145,21 @@ type RefreshEdbInfoReq struct {
 	Source    int    `description:"指标来源ID"`
 }
 
-// GetAllEdbDataList 获取所有的指标数据列表
-func GetAllEdbDataList(edbInfoId, source, subSource int) (existDataList []*EdbData, err error) {
-	o := orm.NewOrm()
-	dataTableName := GetEdbDataTableName(source, subSource)
-	fmt.Println("dataTableName:", dataTableName)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? order by data_time asc`
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&existDataList)
-	return
-}
-
 // GetAllEdbDataListByTo 获取所有的指标数据列表
-func GetAllEdbDataListByTo(to orm.TxOrmer, edbInfoId, source, subSource int) (existDataList []*EdbData, err error) {
+func GetAllEdbDataListByTo(to *gorm.DB, edbInfoId, source, subSource int) (existDataList []*EdbData, err error) {
 	dataTableName := GetEdbDataTableName(source, subSource)
-	fmt.Println("dataTableName:", dataTableName)
 	sql := `SELECT * FROM %s WHERE edb_info_id=? order by data_time asc`
 	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
+	err = to.Raw(sql, edbInfoId).Find(&existDataList).Error
+
 	return
 }
 
 // GetFinalLastByTo 获取所有的指标数据列表
-func GetFinalLastByTo(to orm.TxOrmer, edbInfoId, source, subSource int, latestDate string) (finalLast EdbInfoSearchData, err error) {
+func GetFinalLastByTo(to *gorm.DB, edbInfoId, source, subSource int, latestDate string) (finalLast EdbInfoSearchData, err error) {
 	dataTableName := GetEdbDataTableName(source, subSource)
 	sql := fmt.Sprintf(` SELECT data_time , value FROM %s WHERE edb_info_id=? and data_time<=? ORDER BY data_time DESC `, dataTableName)
-	err = to.Raw(sql, edbInfoId, latestDate).QueryRow(&finalLast)
+	err = to.Raw(sql, edbInfoId, latestDate).First(&finalLast).Error
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		return
 	}
@@ -168,15 +168,15 @@ func GetFinalLastByTo(to orm.TxOrmer, edbInfoId, source, subSource int, latestDa
 
 // 新版本
 type EdbDataV1 struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         string
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
+	EdbDataId     int       `gorm:"primaryKey;autoIncrement;column:edb_data_id"`
+	EdbInfoId     int       `gorm:"column:edb_info_id"`
+	EdbCode       string    `gorm:"column:edb_code"`
+	DataTime      string    `gorm:"column:data_time"`
+	Value         string    `gorm:"column:value"`
+	Status        int       `gorm:"column:status"`
+	CreateTime    time.Time `gorm:"column:create_time"`
+	ModifyTime    time.Time `gorm:"column:modify_time"`
+	DataTimestamp int64     `gorm:"column:data_timestamp"`
 }
 
 type EdbDataList struct {
@@ -187,15 +187,15 @@ type EdbDataList struct {
 	Value         float64 `description:"数据值"`
 }
 
-func DelEdbDataByMysql(to orm.TxOrmer, edbInfoId int, tableName string, removeDateList []string) (err error) {
+func DelEdbDataByMysql(to *gorm.DB, edbInfoId int, tableName string, removeDateList []string) (err error) {
 	if len(removeDateList) <= 0 {
 		return
 	}
 	// 移除不存在的日期数据
-	removeDateStr := strings.Join(removeDateList, `","`)
-	removeDateStr = `"` + removeDateStr + `"`
+	removeDateStr := strings.Join(removeDateList, `','`)
+	removeDateStr = `'` + removeDateStr + `'`
 	sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
-	_, err = to.Raw(sql, edbInfoId).Exec()
+	err = to.Exec(sql, edbInfoId).Error
 	return
 }
 
@@ -258,3 +258,12 @@ type EditEdbBaseInfoReq struct {
 	UnitEn          string `description:"英文单位"`
 	ClassifyId      int    `description:"分类id"`
 }
+
+// ConvertDate
+// @Description: 格式化EdbData的日期
+// @receiver e
+func (m *EdbData) ConvertDate() {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
+}

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