Browse Source

change db

Roc 1 month ago
parent
commit
188cfa8b43
28 changed files with 686 additions and 1806 deletions
  1. 11 11
      models/factor_edb_series_chart_mapping.go
  2. 4 6
      models/predict_edb_conf_calculate_mapping.go
  3. 48 61
      models/predict_edb_data_base.go
  4. 19 28
      models/predict_edb_data_calculate_bp.go
  5. 25 37
      models/predict_edb_data_calculate_cjjx.go
  6. 25 38
      models/predict_edb_data_calculate_hbz.go
  7. 24 42
      models/predict_edb_data_calculate_hcz.go
  8. 20 29
      models/predict_edb_data_calculate_jp.go
  9. 19 29
      models/predict_edb_data_calculate_kszs.go
  10. 25 43
      models/predict_edb_data_calculate_ljz.go
  11. 25 41
      models/predict_edb_data_calculate_ljznczj.go
  12. 25 313
      models/predict_edb_data_calculate_ljztbpj.go
  13. 27 43
      models/predict_edb_data_calculate_ljzzj.go
  14. 24 35
      models/predict_edb_data_calculate_ljzzy.go
  15. 21 30
      models/predict_edb_data_calculate_nh.go
  16. 45 52
      models/predict_edb_data_calculate_nhcc.go
  17. 26 37
      models/predict_edb_data_calculate_nszydbpjjs.go
  18. 24 41
      models/predict_edb_data_calculate_percentile.go
  19. 16 25
      models/predict_edb_data_calculate_phase_shift.go
  20. 24 39
      models/predict_edb_data_calculate_qjjs.go
  21. 23 41
      models/predict_edb_data_calculate_standard_deviation.go
  22. 23 377
      models/predict_edb_data_calculate_tbz.go
  23. 24 37
      models/predict_edb_data_calculate_tcz.go
  24. 26 38
      models/predict_edb_data_calculate_time_shift.go
  25. 14 274
      models/predict_edb_data_calculate_zjpj.go
  26. 24 40
      models/predict_edb_data_calculate_zsxy.go
  27. 10 14
      models/predict_edb_data_static.go
  28. 65 5
      models/predict_edb_rule_data.go

+ 11 - 11
models/factor_edb_series_chart_mapping.go

@@ -63,7 +63,7 @@ func (m *FactorEdbSeriesChartMapping) Cols() MultipleFactorSeriesChartMappingCol
 }
 
 func (m *FactorEdbSeriesChartMapping) Create() (err error) {
-	err = global.DEFAULT_DmSQL.Create(m).Error
+	err = global.DEFAULT_DB.Create(m).Error
 	return
 }
 
@@ -72,20 +72,20 @@ func (m *FactorEdbSeriesChartMapping) CreateMulti(items []*FactorEdbSeriesChartM
 		return
 	}
 
-	err = global.DEFAULT_DmSQL.CreateInBatches(items, 500).Error
+	err = global.DEFAULT_DB.CreateInBatches(items, 500).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) Update(cols []string) (err error) {
 
-	err = global.DEFAULT_DmSQL.Model(m).Select(cols).Updates(m).Error
+	err = global.DEFAULT_DB.Model(m).Select(cols).Updates(m).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) Remove() (err error) {
 
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	err = global.DEFAULT_DmSQL.Exec(sql, m.FactorEdbSeriesChartMappingId).Error
+	err = global.DEFAULT_DB.Exec(sql, m.FactorEdbSeriesChartMappingId).Error
 	return
 }
 
@@ -95,14 +95,14 @@ func (m *FactorEdbSeriesChartMapping) MultiRemove(ids []int) (err error) {
 	}
 
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
-	err = global.DEFAULT_DmSQL.Exec(sql, ids).Error
+	err = global.DEFAULT_DB.Exec(sql, ids).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) GetItemById(id int) (item *FactorEdbSeriesChartMapping, err error) {
 
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	err = global.DEFAULT_DmSQL.Raw(sql, id).First(&item).Error
+	err = global.DEFAULT_DB.Raw(sql, id).First(&item).Error
 	return
 }
 
@@ -113,14 +113,14 @@ func (m *FactorEdbSeriesChartMapping) GetItemByCondition(condition string, pars
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = global.DEFAULT_DmSQL.Raw(sql, pars...).First(&item).Error
+	err = global.DEFAULT_DB.Raw(sql, pars...).First(&item).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
 
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = global.DEFAULT_DmSQL.Raw(sql, pars...).Scan(&count).Error
+	err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
@@ -135,7 +135,7 @@ func (m *FactorEdbSeriesChartMapping) GetItemsByCondition(condition string, pars
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	err = global.DEFAULT_DmSQL.Raw(sql, pars...).Find(&items).Error
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
@@ -151,7 +151,7 @@ func (m *FactorEdbSeriesChartMapping) GetPageItemsByCondition(condition string,
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
 	pars = append(pars, startSize, pageSize)
-	err = global.DEFAULT_DmSQL.Raw(sql, pars...).Find(&items).Error
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
@@ -159,7 +159,7 @@ func (m *FactorEdbSeriesChartMapping) GetPageItemsByCondition(condition string,
 func (m *FactorEdbSeriesChartMapping) GetDistinctSeriesIdByChartId(chartId int) (seriesIds []int, err error) {
 
 	sql := fmt.Sprintf(`SELECT DISTINCT %s FROM %s WHERE %s = ?`, m.Cols().FactorEdbSeriesId, m.TableName(), m.Cols().ChartInfoId)
-	err = global.DEFAULT_DmSQL.Raw(sql, chartId).Scan(&seriesIds).Error
+	err = global.DEFAULT_DB.Raw(sql, chartId).Scan(&seriesIds).Error
 	return
 }
 

+ 4 - 6
models/predict_edb_conf_calculate_mapping.go

@@ -1,13 +1,13 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
 	"time"
 )
 
 // PredictEdbConfCalculateMapping 预测基础指标规则 与 计算预测指标关联关系表
 type PredictEdbConfCalculateMapping struct {
-	PredictEdbConfCalculateMappingId int       `orm:"column(predict_edb_conf_calculate_mapping_id);pk"`
+	PredictEdbConfCalculateMappingId int       `gorm:"primaryKey;autoIncrement;column:predict_edb_conf_calculate_mapping_id"`
 	EdbInfoId                        int       `description:"指标id"`
 	ConfigId                         int       `description:"配置id"`
 	FromEdbInfoId                    int       `description:"基础指标id"`
@@ -23,10 +23,8 @@ type PredictEdbConfCalculateMapping struct {
 
 // GetPredictEdbConfCalculateMappingListByEdbInfoId 根据预测指标id获取所有关联指标
 func GetPredictEdbConfCalculateMappingListByEdbInfoId(edbInfoId int) (list []*PredictEdbConfCalculateMapping, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT * from predict_edb_conf_calculate_mapping
-			WHERE edb_info_id=? ORDER BY predict_edb_conf_calculate_mapping_id ASC `
+	sql := ` SELECT * from predict_edb_conf_calculate_mapping WHERE edb_info_id=? ORDER BY predict_edb_conf_calculate_mapping_id ASC `
+	err = global.DEFAULT_DB.Raw(sql, edbInfoId).Find(&list).Error
 
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&list)
 	return
 }

+ 48 - 61
models/predict_edb_data_base.go

@@ -1,11 +1,14 @@
 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/shopspring/decimal"
+	"gorm.io/gorm"
 	"reflect"
 	"strconv"
 	"strings"
@@ -21,27 +24,21 @@ type PredictStandardBase struct {
 func AddPredictEdb(item *EdbInfo, calculateMappingList []*EdbInfoCalculateMapping, predictEdbConfList []*PredictEdbConf, calculateRuleMap map[int]CalculateRule) (err error, errMsg string) {
 	var latestDateStr string
 	var latestValue float64
-	o := orm.NewOrm()
-	tx, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			tx.Rollback()
+			to.Rollback()
 		} else {
-			err = tx.Commit()
-
+			to.Commit()
 			// 更新指标最大最小值
 			go UnifiedModifyPredictEdbInfoMaxAndMinInfo(item, latestDateStr, latestValue)
 		}
 	}()
 	// 新增预测指标
-	edbInfoId, err := tx.Insert(item)
+	err = to.Create(item).Error
 	if err != nil {
 		return
 	}
-	item.EdbInfoId = int(edbInfoId)
 
 	// 新增预测指标的关联关系
 	lenCalculateMapping := len(calculateMappingList)
@@ -50,7 +47,7 @@ func AddPredictEdb(item *EdbInfo, calculateMappingList []*EdbInfoCalculateMappin
 			calculateMappingItem.EdbInfoId = item.EdbInfoId
 			calculateMappingItem.EdbCode = item.EdbCode
 		}
-		_, err = tx.InsertMulti(lenCalculateMapping, calculateMappingList)
+		err = to.CreateInBatches(calculateMappingList, 500).Error
 		if err != nil {
 			return
 		}
@@ -61,12 +58,12 @@ func AddPredictEdb(item *EdbInfo, calculateMappingList []*EdbInfoCalculateMappin
 	// 新增预测指标配置
 	for k, v := range predictEdbConfList {
 		v.PredictEdbInfoId = item.EdbInfoId
-		configId, tmpErr := tx.Insert(v)
+		tmpErr := to.Create(v).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
-		v.ConfigId = int(configId)
+		//v.ConfigId = int(configId)
 
 		// 每次规则计算的时候,产生的临时数据
 		resultDataList := make([]*EdbInfoSearchData, 0)
@@ -77,7 +74,7 @@ func AddPredictEdb(item *EdbInfo, calculateMappingList []*EdbInfoCalculateMappin
 			calculateRule.EdbInfoId = v.PredictEdbInfoId
 
 			// 指标与规则的动态数据生成入库
-			resultDataList, err = CalculateByRuleBy9(tx, calculateRule)
+			resultDataList, err = CalculateByRuleBy9(to, calculateRule)
 			if err != nil {
 				return
 			}
@@ -89,7 +86,7 @@ func AddPredictEdb(item *EdbInfo, calculateMappingList []*EdbInfoCalculateMappin
 					vv.EdbInfoId = item.EdbInfoId
 					vv.ConfigId = v.ConfigId
 				}
-				_, err = tx.InsertMulti(lenTrendsCalculateMapping, calculateRule.TrendsCalculateMappingList)
+				err = to.CreateInBatches(calculateRule.TrendsCalculateMappingList, 500).Error
 				if err != nil {
 					return
 				}
@@ -100,7 +97,7 @@ func AddPredictEdb(item *EdbInfo, calculateMappingList []*EdbInfoCalculateMappin
 			calculateRule.EdbInfoId = v.PredictEdbInfoId
 
 			// 指标与规则的动态数据(拟合数据)生成入库
-			err, errMsg = CalculateByRuleByRuleLineNh(tx, *item, predictEdbConfAndDataList, *v)
+			err, errMsg = CalculateByRuleByRuleLineNh(to, *item, predictEdbConfAndDataList, *v)
 			if err != nil {
 				return
 			}
@@ -112,7 +109,7 @@ func AddPredictEdb(item *EdbInfo, calculateMappingList []*EdbInfoCalculateMappin
 					vv.EdbInfoId = item.EdbInfoId
 					vv.ConfigId = v.ConfigId
 				}
-				_, err = tx.InsertMulti(lenTrendsCalculateMapping, calculateRule.TrendsCalculateMappingList)
+				err = to.CreateInBatches(calculateRule.TrendsCalculateMappingList, 500).Error
 				if err != nil {
 					return
 				}
@@ -139,7 +136,7 @@ func AddPredictEdb(item *EdbInfo, calculateMappingList []*EdbInfoCalculateMappin
 
 	// 重新预测数据
 	obj := new(PredictStandardBase)
-	latestDateStr, latestValue, err, errMsg = obj.refresh(tx, item, predictEdbConfAndDataList, item.EdbCode, "")
+	latestDateStr, latestValue, err, errMsg = obj.refresh(to, item, predictEdbConfAndDataList, item.EdbCode, "")
 
 	return
 }
@@ -149,51 +146,46 @@ func EditPredictEdb(edbInfo *EdbInfo, updateEdbInfoCol []string, calculateMappin
 	var latestDateStr string
 	var latestValue float64
 
-	o := orm.NewOrm()
-	tx, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			tx.Rollback()
+			to.Rollback()
 		} else {
-			err = tx.Commit()
-
+			to.Commit()
 			// 更新指标最大最小值
 			go UnifiedModifyPredictEdbInfoMaxAndMinInfo(edbInfo, latestDateStr, latestValue)
 		}
 	}()
 	// 修改预测指标
-	_, err = tx.Update(edbInfo, updateEdbInfoCol...)
+	err = to.Model(edbInfo).Select(updateEdbInfoCol).Updates(edbInfo).Error
 	if err != nil {
 		return
 	}
 
 	// 先删除原有的预测指标 与 其他指标的 关联关系
 	sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ?`
-	_, err = tx.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
 
 	// 先删除原有的配置
 	sql = ` DELETE FROM predict_edb_conf WHERE predict_edb_info_id = ?`
-	_, err = tx.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
 
 	// 删除基础预测指标 规则配置 与 其他指标的 关联关系
 	sql = ` DELETE FROM predict_edb_conf_calculate_mapping WHERE edb_info_id = ?`
-	_, err = tx.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
 
 	// 删除基础预测指标 规则配置 生成的动态数据值
 	sql = ` DELETE FROM predict_edb_rule_data WHERE edb_info_id = ?`
-	_, err = tx.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
@@ -205,7 +197,7 @@ func EditPredictEdb(edbInfo *EdbInfo, updateEdbInfoCol []string, calculateMappin
 			calculateMappingItem.EdbInfoId = edbInfo.EdbInfoId
 			calculateMappingItem.EdbCode = edbInfo.EdbCode
 		}
-		_, err = tx.InsertMulti(lenCalculateMapping, calculateMappingList)
+		err = to.CreateInBatches(calculateMappingList, 500).Error
 		if err != nil {
 			return
 		}
@@ -216,12 +208,11 @@ func EditPredictEdb(edbInfo *EdbInfo, updateEdbInfoCol []string, calculateMappin
 
 	// 新增预测指标配置
 	for confIndex, v := range predictEdbConfList {
-		configId, tmpErr := tx.Insert(v)
+		tmpErr := to.Create(v).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
-		v.ConfigId = int(configId)
 		// 每次规则计算的时候,产生的临时数据
 		resultDataList := make([]*EdbInfoSearchData, 0)
 
@@ -232,7 +223,7 @@ func EditPredictEdb(edbInfo *EdbInfo, updateEdbInfoCol []string, calculateMappin
 			calculateRule.EdbInfoId = v.PredictEdbInfoId
 
 			// 指标与规则的动态数据生成入库
-			resultDataList, err = CalculateByRuleBy9(tx, calculateRule)
+			resultDataList, err = CalculateByRuleBy9(to, calculateRule)
 			if err != nil {
 				return
 			}
@@ -244,7 +235,7 @@ func EditPredictEdb(edbInfo *EdbInfo, updateEdbInfoCol []string, calculateMappin
 					vv.EdbInfoId = edbInfo.EdbInfoId
 					vv.ConfigId = v.ConfigId
 				}
-				_, err = tx.InsertMulti(lenTrendsCalculateMapping, calculateRule.TrendsCalculateMappingList)
+				err = to.CreateInBatches(calculateRule.TrendsCalculateMappingList, 500).Error
 				if err != nil {
 					return
 				}
@@ -255,7 +246,7 @@ func EditPredictEdb(edbInfo *EdbInfo, updateEdbInfoCol []string, calculateMappin
 			calculateRule.EdbInfoId = v.PredictEdbInfoId
 
 			// 指标与规则的动态数据(拟合数据)生成入库
-			err, errMsg = CalculateByRuleByRuleLineNh(tx, *edbInfo, predictEdbConfAndDataList, *v)
+			err, errMsg = CalculateByRuleByRuleLineNh(to, *edbInfo, predictEdbConfAndDataList, *v)
 			if err != nil {
 				return
 			}
@@ -267,7 +258,7 @@ func EditPredictEdb(edbInfo *EdbInfo, updateEdbInfoCol []string, calculateMappin
 					vv.EdbInfoId = edbInfo.EdbInfoId
 					vv.ConfigId = v.ConfigId
 				}
-				_, err = tx.InsertMulti(lenTrendsCalculateMapping, calculateRule.TrendsCalculateMappingList)
+				err = to.CreateInBatches(calculateRule.TrendsCalculateMappingList, 500).Error
 				if err != nil {
 					return
 				}
@@ -295,7 +286,7 @@ func EditPredictEdb(edbInfo *EdbInfo, updateEdbInfoCol []string, calculateMappin
 
 	// 重新预测数据
 	obj := new(PredictStandardBase)
-	latestDateStr, latestValue, err, errMsg = obj.refresh(tx, edbInfo, predictEdbConfAndDataList, edbInfo.EdbCode, "")
+	latestDateStr, latestValue, err, errMsg = obj.refresh(to, edbInfo, predictEdbConfAndDataList, edbInfo.EdbCode, "")
 
 	return
 }
@@ -320,9 +311,10 @@ func (obj PredictStandardBase) Refresh(params RefreshParams) (latestDateStr stri
 		err = errors.New(errMsg)
 		return
 	}
+
 	// 查找该预测指标配置
 	predictEdbConfList, err := GetPredictEdbConfAndDataListById(edbInfo.EdbInfoId)
-	if err != nil && !utils.IsErrNoRow(err) {
+	if err != nil && err.Error() != utils.ErrNoRow() {
 		errMsg = "获取预测指标配置信息失败"
 		return
 	}
@@ -332,17 +324,12 @@ func (obj PredictStandardBase) Refresh(params RefreshParams) (latestDateStr stri
 		return
 	}
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Refresh,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -362,7 +349,10 @@ func (obj PredictStandardBase) GetSourceName() string {
 	return utils.DATA_SOURCE_NAME_PREDICT
 }
 
-func (obj PredictStandardBase) refresh(to orm.TxOrmer, edbInfo *EdbInfo, predictEdbConfAndDataList []*PredictEdbConfAndData, edbCode, startDate string) (latestDateStr string, latestValue float64, err error, errMsg string) {
+func (obj PredictStandardBase) refresh(to *gorm.DB, edbInfo *EdbInfo, predictEdbConfAndDataList []*PredictEdbConfAndData, edbCode, startDate string) (latestDateStr string, latestValue float64, err error, errMsg string) {
+	fmt.Println(predictEdbConfAndDataList)
+	by, _ := json.Marshal(predictEdbConfAndDataList)
+	utils.FileLog.Info(string(by))
 	edbInfoId := edbInfo.EdbInfoId
 	dataTableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
@@ -375,10 +365,7 @@ func (obj PredictStandardBase) refresh(to orm.TxOrmer, edbInfo *EdbInfo, predict
 	latestDateStr = fromEdbInfo.LatestDate
 
 	//获取指标所有数据
-	existDataList := make([]*EdbData, 0)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, edbInfo.Source, edbInfo.SubSource)
 	if err != nil {
 		return
 	}
@@ -419,7 +406,7 @@ func (obj PredictStandardBase) refresh(to orm.TxOrmer, edbInfo *EdbInfo, predict
 			if existVal != 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, currDateStr).Exec()
+				err = to.Exec(sql, saveValue, edbInfoId, currDateStr).Error
 				if err != nil {
 					return
 				}
@@ -447,7 +434,7 @@ func (obj PredictStandardBase) refresh(to orm.TxOrmer, edbInfo *EdbInfo, predict
 		removeNum := len(removeDateList)
 		if removeNum > 0 {
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, dataTableName)
-			_, err = to.Raw(sql, edbInfo.EdbInfoId, removeDateList).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId, removeDateList).Error
 			if err != nil {
 				fmt.Println(reflect.TypeOf(obj).Name(), " add data ;delete Err", err.Error())
 				err = fmt.Errorf("删除不存在的指标数据失败,Err:" + err.Error())
@@ -458,7 +445,7 @@ func (obj PredictStandardBase) refresh(to orm.TxOrmer, edbInfo *EdbInfo, predict
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			fmt.Println(reflect.TypeOf(obj).Name(), " add data Err", err.Error())
 			return
@@ -468,7 +455,7 @@ func (obj PredictStandardBase) refresh(to orm.TxOrmer, edbInfo *EdbInfo, predict
 	//确定实际数据的最终值
 	{
 		finalLast, tmpErr := GetFinalLastByTo(to, edbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo.LatestDate)
-		if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
+		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
 			return
 		}
 		if tmpErr == nil {
@@ -530,15 +517,15 @@ func RefreshPredictStandardBaseByGeneralEdbInfoId(sourceEdbInfoId int) {
 			utils.FileLog.Info("RefreshPredictStandardBaseByGeneralEdbInfoId更新失败,来源ID: ErrMsg:" + strings.Join(errList, "\n"))
 		}
 	}()
-	o := orm.NewOrm()
+
 	var list []*PredictEdbConf
 	sql := ` SELECT * FROM predict_edb_conf WHERE source_edb_info_id=? `
-	total, err := o.Raw(sql, sourceEdbInfoId).QueryRows(&list)
+	err := global.DEFAULT_DB.Raw(sql, sourceEdbInfoId).Find(&list).Error
 	if err != nil {
 		errList = append(errList, fmt.Sprintf("根据来源换指标id获取配置项失败,来源指标ID:%d;err:%s", sourceEdbInfoId, err.Error()))
 		return
 	}
-
+	total := len(list)
 	if total > 0 {
 		idList := make([]int, 0)
 		for _, v := range list {

+ 19 - 28
models/predict_edb_data_calculate_bp.go

@@ -2,10 +2,11 @@ package models
 
 import (
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -13,17 +14,12 @@ import (
 
 // SavePredictCalculateBp 变频
 func SavePredictCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName, lang string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("AddPredictCalculateBp,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	if req.EdbInfoId <= 0 {
@@ -48,12 +44,12 @@ func SavePredictCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbI
 		edbInfo.EdbType = 2
 		edbInfo.EmptyType = req.EmptyType
 		edbInfo.Sort = GetAddEdbMaxSortByClassifyId(req.ClassifyId, utils.PREDICT_EDB_INFO_TYPE)
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
+		tmpErr := to.Create(edbInfo).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
+
 		//关联关系
 		{
 			calculateMappingItem := new(EdbInfoCalculateMapping)
@@ -70,7 +66,7 @@ func SavePredictCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbI
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
-			_, err = to.Insert(calculateMappingItem)
+			err = to.Create(calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -97,7 +93,7 @@ func SavePredictCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbI
 		edbInfo.ClassifyId = req.ClassifyId
 		edbInfo.EmptyType = req.EmptyType
 		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime", "EdbNameEn", "UnitEn", "EmptyType")
+		err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime", "EdbNameEn", "UnitEn", "EmptyType"}).Updates(edbInfo).Error
 		if err != nil {
 			return
 		}
@@ -119,14 +115,14 @@ func SavePredictCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbI
 
 		//删除,计算指标关联的,基础指标的关联关系
 		sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			err = errors.New("删除计算指标关联关系失败,Err:" + err.Error())
 			return
 		}
 		//清空原有数据
 		sql = ` DELETE FROM edb_data_predict_calculate_bp WHERE edb_info_id = ? `
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			return
 		}
@@ -148,7 +144,7 @@ func SavePredictCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbI
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
 			}
-			_, err = to.Insert(calculateMappingItem)
+			err = to.Create(calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -162,17 +158,12 @@ func SavePredictCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbI
 }
 
 func RefreshAllPredictCalculateBp(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, emptyType int) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("RefreshAllPredictCalculateBp,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -182,7 +173,7 @@ func RefreshAllPredictCalculateBp(edbInfoId, source, subSource int, fromEdbInfo
 }
 
 // refreshAllPredictCalculateBp 刷新变频数据
-func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, order, emptyType int) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateBp(to *gorm.DB, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, order, emptyType int) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	//计算数据
 
@@ -221,7 +212,7 @@ func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source, subSource i
 		//如果没有来源指标数据,那么已经入库的计算指标数据需要全部删除
 		tableName := GetEdbDataTableName(source, subSource)
 		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ?`, tableName)
-		_, err = to.Raw(sql, edbInfoId).Exec()
+		err = to.Exec(sql, edbInfoId).Error
 		if err != nil {
 			err = fmt.Errorf("删除所有的升频指标数据失败,Err:" + err.Error())
 			return
@@ -339,7 +330,7 @@ func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source, subSource i
 		//如果拼接指标变更了,那么需要删除所有的指标数据
 		tableName := GetEdbDataTableName(source, subSource)
 		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(len(removeDateList))+`) `, tableName)
-		_, err = to.Raw(sql, edbInfoId, removeDateList).Exec()
+		err = to.Exec(sql, edbInfoId, removeDateList).Error
 		if err != nil {
 			err = fmt.Errorf("删除不存在的升频指标数据失败,Err:" + err.Error())
 			return
@@ -348,7 +339,7 @@ func refreshAllPredictCalculateBp(to orm.TxOrmer, edbInfoId, source, subSource i
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 	}
 	return
 }

+ 25 - 37
models/predict_edb_data_calculate_cjjx.go

@@ -2,9 +2,11 @@ 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"
+
 	"github.com/shopspring/decimal"
 	"strconv"
 	"strings"
@@ -13,17 +15,12 @@ import (
 
 // SavePredictCalculateCjjx 超季节性
 func SavePredictCalculateCjjx(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string, formulaInt int, lang string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("SavePredictCalculateCjjx,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	fmt.Println("req.EdbInfoId:", req.EdbInfoId)
@@ -49,12 +46,11 @@ func SavePredictCalculateCjjx(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Ed
 		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		edbInfo.Sort = GetAddEdbMaxSortByClassifyId(req.ClassifyId, utils.PREDICT_EDB_INFO_TYPE)
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
+		tmpErr := to.Create(edbInfo).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
 
 		//关联关系
 		{
@@ -72,7 +68,7 @@ func SavePredictCalculateCjjx(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Ed
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
-			_, err = to.Insert(calculateMappingItem)
+			err = to.Create(calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -105,7 +101,7 @@ func SavePredictCalculateCjjx(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Ed
 		edbInfo.CalculateFormula = req.Formula
 		edbInfo.Calendar = req.Calendar
 		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "Calendar", "ModifyTime", "EdbNameEn", "UnitEn")
+		err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "Calendar", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 		if err != nil {
 			return
 		}
@@ -130,7 +126,7 @@ func SavePredictCalculateCjjx(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Ed
 		if count <= 0 {
 			// 需要删除原先的 计算指标关联的,基础指标的关联关系
 			sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-			_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId).Error
 			if err != nil {
 				return
 			}
@@ -153,7 +149,7 @@ func SavePredictCalculateCjjx(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Ed
 					CreateTime:                time.Now(),
 					ModifyTime:                time.Now(),
 				}
-				_, err = to.Insert(calculateMappingItem)
+				err = to.Create(calculateMappingItem).Error
 				if err != nil {
 					return
 				}
@@ -163,7 +159,7 @@ func SavePredictCalculateCjjx(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Ed
 		//清空原有数据
 		tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? `, tableName)
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			return
 		}
@@ -178,17 +174,12 @@ func SavePredictCalculateCjjx(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Ed
 
 // RefreshAllPredictCalculateCjjx 刷新全部超季节性数据
 func RefreshAllPredictCalculateCjjx(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, calendar string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("RefreshAllPredictCalculateCjjx,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -199,7 +190,7 @@ func RefreshAllPredictCalculateCjjx(edbInfoId, source, subSource int, fromEdbInf
 }
 
 // refreshAllPredictCalculateCjjx 刷新全部超季节性数据
-func refreshAllPredictCalculateCjjx(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, calendar string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateCjjx(to *gorm.DB, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, calendar string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	// 获取关联指标数据
 	dataList, err := GetPredictEdbDataListAllByStartDate(fromEdbInfo, 1, "")
@@ -221,12 +212,9 @@ func refreshAllPredictCalculateCjjx(to orm.TxOrmer, edbInfoId, source, subSource
 		return
 	}
 
-	//获取指标所有数据
-	existDataList := make([]*EdbData, 0)
 	dataTableName := GetEdbDataTableName(source, subSource)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
+	//获取指标所有数据
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -329,9 +317,9 @@ func refreshAllPredictCalculateCjjx(to orm.TxOrmer, edbInfoId, source, subSource
 					}
 					existStr := existValDecimal.String()
 					if existStr != val {
-						sql = ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+						sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 						sql = fmt.Sprintf(sql, dataTableName)
-						_, err = to.Raw(sql, val, edbInfoId, av).Exec()
+						err = to.Exec(sql, val, edbInfoId, av).Error
 						if err != nil {
 							return
 						}
@@ -353,7 +341,7 @@ func refreshAllPredictCalculateCjjx(to orm.TxOrmer, edbInfoId, source, subSource
 			//如果拼接指标变更了,那么需要删除所有的指标数据
 			tableName := GetEdbDataTableName(source, subSource)
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, tableName)
-			_, err = to.Raw(sql, edbInfoId, removeDateList).Exec()
+			err = to.Exec(sql, edbInfoId, removeDateList).Error
 			if err != nil {
 				err = fmt.Errorf("删除不存在的超季节性指标数据失败,Err:" + err.Error())
 				return
@@ -363,7 +351,7 @@ func refreshAllPredictCalculateCjjx(to orm.TxOrmer, edbInfoId, source, subSource
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			return
 		}
@@ -371,10 +359,10 @@ func refreshAllPredictCalculateCjjx(to orm.TxOrmer, edbInfoId, source, subSource
 
 	//确定最终值
 	var finalLast EdbInfoSearchData
-	sql = ` SELECT data_time , value FROM edb_data_predict_calculate_cjjx WHERE edb_info_id=? and data_time<=? ORDER BY data_time DESC `
-	tmpErr := to.Raw(sql, edbInfoId, latestDateStr).QueryRow(&finalLast)
+	sql := ` SELECT data_time , value FROM edb_data_predict_calculate_cjjx WHERE edb_info_id=? and data_time<=? ORDER BY data_time DESC `
+	tmpErr := to.Raw(sql, edbInfoId, latestDateStr).First(&finalLast).Error
 	if tmpErr != nil {
-		if !utils.IsErrNoRow(tmpErr) {
+		if tmpErr.Error() != utils.ErrNoRow() {
 			err = tmpErr
 		} else {
 			latestDateStr = "0000-00-00"

+ 25 - 38
models/predict_edb_data_calculate_hbz.go

@@ -2,10 +2,11 @@ package models
 
 import (
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -13,17 +14,12 @@ import (
 
 // SavePredictCalculateHbz 新增环比值指标
 func SavePredictCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string, formulaInt int, lang string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("SavePredictCalculateHbz,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	if req.EdbInfoId <= 0 {
@@ -47,12 +43,12 @@ func SavePredictCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		edbInfo.Sort = GetAddEdbMaxSortByClassifyId(req.ClassifyId, utils.PREDICT_EDB_INFO_TYPE)
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
+		tmpErr := to.Create(edbInfo).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
+
 		//关联关系
 		{
 			calculateMappingItem := new(EdbInfoCalculateMapping)
@@ -69,7 +65,7 @@ func SavePredictCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
-			_, err = to.Insert(calculateMappingItem)
+			err = to.Create(calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -97,7 +93,7 @@ func SavePredictCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 		edbInfo.ClassifyId = req.ClassifyId
 		edbInfo.CalculateFormula = req.Formula
 		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn")
+		err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 		if err != nil {
 			return
 		}
@@ -121,7 +117,7 @@ func SavePredictCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 		//删除,计算指标关联的,基础指标的关联关系
 		if count <= 0 {
 			sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-			_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId).Error
 			if err != nil {
 				return
 			}
@@ -143,7 +139,7 @@ func SavePredictCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 					CreateTime:                time.Now(),
 					ModifyTime:                time.Now(),
 				}
-				_, err = to.Insert(calculateMappingItem)
+				err = to.Create(calculateMappingItem).Error
 				if err != nil {
 					return
 				}
@@ -152,7 +148,7 @@ func SavePredictCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 		//清空原有数据
 		sql := ` DELETE FROM %s WHERE edb_info_id = ? `
 		sql = fmt.Sprintf(sql, dataTableName)
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			return
 		}
@@ -165,17 +161,12 @@ func SavePredictCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 
 // RefreshAllPredictCalculateHbz 刷新所有环比值数据
 func RefreshAllPredictCalculateHbz(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("RefreshAllPredictCalculateHbz,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -185,7 +176,7 @@ func RefreshAllPredictCalculateHbz(edbInfoId, source, subSource int, fromEdbInfo
 }
 
 // refreshAllPredictCalculateHbz 刷新所有环比值数据
-func refreshAllPredictCalculateHbz(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateHbz(to *gorm.DB, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	// 获取关联指标数据
 	dataList, err := GetPredictEdbDataListAllByStartDate(fromEdbInfo, 0, "")
@@ -199,14 +190,10 @@ func refreshAllPredictCalculateHbz(to orm.TxOrmer, edbInfoId, source, subSource
 		dateArr = append(dateArr, v.DataTime)
 		dataMap[v.DataTime] = v
 	}
-	fmt.Println("source:", source)
-	//获取指标所有数据
-	existDataList := make([]*EdbData, 0)
 	dataTableName := GetEdbDataTableName(source, subSource)
-	fmt.Println("dataTableName:", dataTableName)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
+
+	//获取指标所有数据
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -256,9 +243,9 @@ func refreshAllPredictCalculateHbz(to orm.TxOrmer, edbInfoId, source, subSource
 							}
 							existStr := existValDecimal.String()
 							if existStr != val {
-								sql = ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+								sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 								sql = fmt.Sprintf(sql, dataTableName)
-								_, err = to.Raw(sql, val, edbInfoId, currentItem.DataTime).Exec()
+								err = to.Exec(sql, val, edbInfoId, currentItem.DataTime).Error
 								if err != nil {
 									return
 								}
@@ -275,13 +262,13 @@ func refreshAllPredictCalculateHbz(to orm.TxOrmer, edbInfoId, source, subSource
 		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.Exec(sql, edbInfoId).Error
 		if err != nil {
 			err = fmt.Errorf("删除计算失败的计算指标数据失败,Err:" + err.Error())
 			return
@@ -289,7 +276,7 @@ func refreshAllPredictCalculateHbz(to orm.TxOrmer, edbInfoId, source, subSource
 	}
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			return
 		}

+ 24 - 42
models/predict_edb_data_calculate_hcz.go

@@ -2,9 +2,11 @@ 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"
+
 	"github.com/shopspring/decimal"
 	"strconv"
 	"strings"
@@ -13,17 +15,12 @@ import (
 
 // SavePredictCalculateHcz 新增环差值指标
 func SavePredictCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string, formulaInt int, lang string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("AddCalculateHcz,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	if req.EdbInfoId <= 0 {
@@ -47,12 +44,11 @@ func SavePredictCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		edbInfo.Sort = GetAddEdbMaxSortByClassifyId(req.ClassifyId, utils.PREDICT_EDB_INFO_TYPE)
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
+		tmpErr := to.Create(edbInfo).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
 
 		//关联关系
 		{
@@ -70,7 +66,7 @@ func SavePredictCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
-			_, err = to.Insert(calculateMappingItem)
+			err = to.Create(calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -97,7 +93,7 @@ func SavePredictCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 		edbInfo.ClassifyId = req.ClassifyId
 		edbInfo.CalculateFormula = req.Formula
 		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn")
+		err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 		if err != nil {
 			return
 		}
@@ -121,7 +117,7 @@ func SavePredictCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 		//删除,计算指标关联的,基础指标的关联关系
 		if count <= 0 {
 			sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-			_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId).Error
 			if err != nil {
 				return
 			}
@@ -143,7 +139,7 @@ func SavePredictCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 					CreateTime:                time.Now(),
 					ModifyTime:                time.Now(),
 				}
-				_, err = to.Insert(calculateMappingItem)
+				err = to.Create(calculateMappingItem).Error
 				if err != nil {
 					return
 				}
@@ -151,7 +147,7 @@ func SavePredictCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 		}
 		//清空原有数据
 		sql := ` DELETE FROM edb_data_predict_calculate_hcz WHERE edb_info_id = ? `
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			return
 		}
@@ -165,17 +161,12 @@ func SavePredictCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *Edb
 
 // RefreshAllPredictCalculateHcz 刷新所有环差值数据
 func RefreshAllPredictCalculateHcz(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("refreshAllPredictCalculateHcz,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -185,7 +176,7 @@ func RefreshAllPredictCalculateHcz(edbInfoId, source, subSource int, fromEdbInfo
 }
 
 // refreshAllPredictCalculateHcz 刷新所有环差值数据
-func refreshAllPredictCalculateHcz(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateHcz(to *gorm.DB, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, formulaInt int) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	// 获取关联指标数据
 	dataList, err := GetPredictEdbDataListAllByStartDate(fromEdbInfo, 0, "")
@@ -200,19 +191,10 @@ func refreshAllPredictCalculateHcz(to orm.TxOrmer, edbInfoId, source, subSource
 		dataMap[v.DataTime] = v
 	}
 	fmt.Println("source:", source)
-	//获取指标所有数据
-	existDataList := make([]*EdbData, 0)
 	dataTableName := GetEdbDataTableName(source, subSource)
-	fmt.Println("dataTableName:", dataTableName)
 
-	var existPars []interface{}
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	//if startDate != "" {
-	//	sql += " AND data_time>=? "
-	//	existPars = append(existPars, startDate)
-	//}
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId, existPars).QueryRows(&existDataList)
+	//获取指标所有数据
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -266,9 +248,9 @@ func refreshAllPredictCalculateHcz(to orm.TxOrmer, edbInfoId, source, subSource
 							}
 							existStr := existValDecimal.String()
 							if existStr != val {
-								sql = ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+								sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 								sql = fmt.Sprintf(sql, dataTableName)
-								_, err = to.Raw(sql, val, edbInfoId, currentItem.DataTime).Exec()
+								err = to.Exec(sql, val, edbInfoId, currentItem.DataTime).Error
 								if err != nil {
 									return
 								}
@@ -282,7 +264,7 @@ func refreshAllPredictCalculateHcz(to orm.TxOrmer, edbInfoId, source, subSource
 	}
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			return
 		}
@@ -294,13 +276,13 @@ func refreshAllPredictCalculateHcz(to orm.TxOrmer, edbInfoId, source, subSource
 		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.Exec(sql, edbInfoId).Error
 		if err != nil {
 			err = fmt.Errorf("删除计算失败的计算指标数据失败,Err:" + err.Error())
 			return

+ 20 - 29
models/predict_edb_data_calculate_jp.go

@@ -2,9 +2,11 @@ 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"
+
 	"github.com/shopspring/decimal"
 	"strconv"
 	"strings"
@@ -13,17 +15,12 @@ import (
 
 // SavePredictCalculateJp 预测降频值
 func SavePredictCalculateJp(reqEdbInfoId, classifyId int, edbName, frequency, unit, formula string, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName, lang string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error, errMsg string) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("SavePredictCalculateJp,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	fmt.Println("reqEdbInfoId:", reqEdbInfoId)
@@ -62,12 +59,11 @@ func SavePredictCalculateJp(reqEdbInfoId, classifyId int, edbName, frequency, un
 			LatestValue:      0,
 			ChartImage:       "",
 		}
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
+		tmpErr := to.Create(edbInfo).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
 
 		// 添加关联关系
 		{
@@ -87,7 +83,7 @@ func SavePredictCalculateJp(reqEdbInfoId, classifyId int, edbName, frequency, un
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
 			}
-			_, err = to.Insert(calculateMappingItem)
+			err = to.Create(calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -123,7 +119,7 @@ func SavePredictCalculateJp(reqEdbInfoId, classifyId int, edbName, frequency, un
 		edbInfo.ClassifyId = classifyId
 		edbInfo.CalculateFormula = formula
 		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn")
+		err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 		if err != nil {
 			return
 		}
@@ -145,7 +141,7 @@ func SavePredictCalculateJp(reqEdbInfoId, classifyId int, edbName, frequency, un
 
 		//删除,计算指标关联的,基础指标的关联关系
 		sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			err = errors.New("删除计算指标关联关系失败,Err:" + err.Error())
 			return
@@ -154,7 +150,7 @@ func SavePredictCalculateJp(reqEdbInfoId, classifyId int, edbName, frequency, un
 		//清空原有已经入库的数据
 		tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 		sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			return
 		}
@@ -177,7 +173,7 @@ func SavePredictCalculateJp(reqEdbInfoId, classifyId int, edbName, frequency, un
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
 			}
-			_, err = to.Insert(calculateMappingItem)
+			err = to.Create(calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -193,17 +189,12 @@ func SavePredictCalculateJp(reqEdbInfoId, classifyId int, edbName, frequency, un
 
 // RefreshAllPredictCalculateJp 刷新全部预测降频值数据
 func RefreshAllPredictCalculateJp(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, edbFrequency, formula string) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("RefreshAllCalculateJp,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -213,7 +204,7 @@ func RefreshAllPredictCalculateJp(edbInfoId, source, subSource int, fromEdbInfo
 }
 
 // refreshAllPredictCalculateJp 刷新预测降频数据
-func refreshAllPredictCalculateJp(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, edbFrequency, formula string) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateJp(to *gorm.DB, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, edbFrequency, formula string) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	//获取源指标数据
 	fmt.Println("EdbInfoId:", fromEdbInfo.EdbInfoId)
@@ -442,7 +433,7 @@ func refreshAllPredictCalculateJp(to orm.TxOrmer, edbInfoId, source, subSource i
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 	}
 
 	// 移除不存在的日期数据
@@ -451,10 +442,10 @@ func refreshAllPredictCalculateJp(to orm.TxOrmer, edbInfoId, source, subSource i
 		for k := range existDelDateMap {
 			removeDateList = append(removeDateList, k)
 		}
-		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
 		if err != nil {
 			err = fmt.Errorf("删除年化指标数据失败,Err:" + err.Error())
 			return

+ 19 - 29
models/predict_edb_data_calculate_kszs.go

@@ -3,10 +3,11 @@ 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/shopspring/decimal"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -14,17 +15,12 @@ import (
 
 // SavePredictCalculateKszs 预测扩散指数
 func SavePredictCalculateKszs(reqEdbInfoId, classifyId int, edbName, frequency, unit, formula string, relationCalculateEdbInfoIdList []EdbInfoCalculateEdbInfoIdReq, edbCode, uniqueCode string, sysUserId int, sysUserRealName, lang string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error, errMsg string) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("SavePredictCalculateKszs,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	fmt.Println("reqEdbInfoId:", reqEdbInfoId)
@@ -65,12 +61,11 @@ func SavePredictCalculateKszs(reqEdbInfoId, classifyId int, edbName, frequency,
 			LatestValue:      0,
 			ChartImage:       "",
 		}
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
+		tmpErr := to.Create(edbInfo).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
 
 		//关联关系
 		calculateMappingItemList := make([]*EdbInfoCalculateMapping, 0)
@@ -100,7 +95,7 @@ func SavePredictCalculateKszs(reqEdbInfoId, classifyId int, edbName, frequency,
 
 			tagMap[v.FromTag] = v.EdbInfoId
 		}
-		_, err = to.InsertMulti(len(calculateMappingItemList), calculateMappingItemList)
+		err = to.CreateInBatches(calculateMappingItemList, 500).Error
 		if err != nil {
 			return
 		}
@@ -131,14 +126,14 @@ func SavePredictCalculateKszs(reqEdbInfoId, classifyId int, edbName, frequency,
 		edbInfo.ClassifyId = classifyId
 		edbInfo.CalculateFormula = formula
 		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn")
+		err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "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.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			err = errors.New("删除计算指标关联关系失败,Err:" + err.Error())
 			return
@@ -146,7 +141,7 @@ func SavePredictCalculateKszs(reqEdbInfoId, classifyId int, edbName, frequency,
 		//清空原有数据
 		tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 		sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			return
 		}
@@ -179,7 +174,7 @@ func SavePredictCalculateKszs(reqEdbInfoId, classifyId int, edbName, frequency,
 
 			tagMap[v.FromTag] = v.EdbInfoId
 		}
-		_, err = to.InsertMulti(len(calculateMappingItemList), calculateMappingItemList)
+		err = to.CreateInBatches(calculateMappingItemList, 500).Error
 		if err != nil {
 			return
 		}
@@ -206,17 +201,12 @@ func RefreshAllPredictCalculateKszs(edbInfo *EdbInfo) (latestDateStr string, lat
 		relationEdbInfoList = append(relationEdbInfoList, fromEdbInfo)
 	}
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("RefreshAllCalculateKszs,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -226,7 +216,7 @@ func RefreshAllPredictCalculateKszs(edbInfo *EdbInfo) (latestDateStr string, lat
 }
 
 // refreshAllPredictCalculateKszs 刷新预测年化数据
-func refreshAllPredictCalculateKszs(to orm.TxOrmer, edbInfoId, source, subSource int, relationEdbInfoList []*EdbInfo, edbCode, calculateFormula string, tagMap map[string]int) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateKszs(to *gorm.DB, edbInfoId, source, subSource int, relationEdbInfoList []*EdbInfo, edbCode, calculateFormula string, tagMap map[string]int) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	tableName := GetEdbDataTableName(utils.DATA_SOURCE_PREDICT_CALCULATE_KSZS, subSource)
 
@@ -385,7 +375,7 @@ func refreshAllPredictCalculateKszs(to orm.TxOrmer, edbInfoId, source, subSource
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 	}
 
 	// 移除不存在的日期数据
@@ -394,10 +384,10 @@ func refreshAllPredictCalculateKszs(to orm.TxOrmer, edbInfoId, source, subSource
 		for k := range removeDateMap {
 			removeDateList = append(removeDateList, k)
 		}
-		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
 		if err != nil {
 			err = fmt.Errorf("删除扩散指数指标数据失败,Err:" + err.Error())
 			return

+ 25 - 43
models/predict_edb_data_calculate_ljz.go

@@ -2,10 +2,11 @@ package models
 
 import (
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
 	"reflect"
 	"strconv"
 	"strings"
@@ -33,17 +34,12 @@ func (obj PredictLjz) Add(params BatchSaveCalculateBatchParams) (edbInfo *EdbInf
 		err = errors.New(errMsg)
 		return
 	}
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Add,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -82,12 +78,11 @@ func (obj PredictLjz) Add(params BatchSaveCalculateBatchParams) (edbInfo *EdbInf
 		Calendar:         "",
 	}
 
-	newEdbInfoId, tmpErr := to.Insert(edbInfo)
+	tmpErr := to.Create(edbInfo).Error
 	if tmpErr != nil {
 		err = tmpErr
 		return
 	}
-	edbInfo.EdbInfoId = int(newEdbInfoId)
 
 	//关联关系
 	{
@@ -105,7 +100,7 @@ func (obj PredictLjz) Add(params BatchSaveCalculateBatchParams) (edbInfo *EdbInf
 		calculateMappingItem.FromTag = ""
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
-		_, err = to.Insert(calculateMappingItem)
+		err = to.Create(calculateMappingItem).Error
 		if err != nil {
 			return
 		}
@@ -139,17 +134,12 @@ func (obj PredictLjz) Edit(params BatchSaveCalculateBatchParams) (latestDateStr
 	latestDateStr = edbInfo.LatestDate
 	latestValue = edbInfo.LatestValue
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Edit,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
@@ -171,7 +161,7 @@ func (obj PredictLjz) Edit(params BatchSaveCalculateBatchParams) (latestDateStr
 	edbInfo.Frequency = req.Frequency
 	edbInfo.ClassifyId = req.ClassifyId
 	edbInfo.ModifyTime = time.Now()
-	_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime", "EdbNameEn", "UnitEn")
+	err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 	if err != nil {
 		return
 	}
@@ -199,14 +189,14 @@ func (obj PredictLjz) Edit(params BatchSaveCalculateBatchParams) (latestDateStr
 
 	//删除,计算指标关联的,基础指标的关联关系
 	sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
 
 	//清空原有数据
 	sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
@@ -229,7 +219,7 @@ func (obj PredictLjz) Edit(params BatchSaveCalculateBatchParams) (latestDateStr
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
 		}
-		_, err = to.Insert(calculateMappingItem)
+		err = to.Create(calculateMappingItem).Error
 		if err != nil {
 			return
 		}
@@ -254,17 +244,12 @@ func (obj PredictLjz) Refresh(params RefreshParams) (latestDateStr string, lates
 		return
 	}
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Refresh,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -284,7 +269,7 @@ func (obj PredictLjz) GetSourceName() string {
 	return utils.DATA_SOURCE_NAME_PREDICT_CALCULATE_LJZ
 }
 
-func (obj PredictLjz) refresh(to orm.TxOrmer, edbInfoId, source, subSource int, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
+func (obj PredictLjz) refresh(to *gorm.DB, edbInfoId, source, subSource int, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
 	dataTableName := GetEdbDataTableName(source, subSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
@@ -524,10 +509,7 @@ func (obj PredictLjz) refresh(to orm.TxOrmer, edbInfoId, source, subSource int,
 	}
 
 	//获取指标所有数据
-	existDataList := make([]*EdbData, 0)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, edbInfo.Source, edbInfo.SubSource)
 	if err != nil {
 		return
 	}
@@ -565,7 +547,7 @@ func (obj PredictLjz) refresh(to orm.TxOrmer, edbInfoId, source, subSource int,
 			if existVal != 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, currDateStr).Exec()
+				err = to.Exec(sql, saveValue, edbInfoId, currDateStr).Error
 				if err != nil {
 					return
 				}
@@ -593,7 +575,7 @@ func (obj PredictLjz) refresh(to orm.TxOrmer, edbInfoId, source, subSource int,
 		removeNum := len(removeDateList)
 		if removeNum > 0 {
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, dataTableName)
-			_, err = to.Raw(sql, edbInfo.EdbInfoId, removeDateList).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId, removeDateList).Error
 			if err != nil {
 				fmt.Println(reflect.TypeOf(obj).Name(), " add data ;delete Err", err.Error())
 				err = fmt.Errorf("删除不存在的指标数据失败,Err:" + err.Error())
@@ -604,7 +586,7 @@ func (obj PredictLjz) refresh(to orm.TxOrmer, edbInfoId, source, subSource int,
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			fmt.Println(reflect.TypeOf(obj).Name(), " add data Err", err.Error())
 			return
@@ -613,9 +595,9 @@ func (obj PredictLjz) refresh(to orm.TxOrmer, edbInfoId, source, subSource int,
 	// 确定实际数据的最终值
 	{
 		var finalLast EdbInfoSearchData
-		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, fromEdbInfo.LatestDate).QueryRow(&finalLast)
-		if err != nil && !utils.IsErrNoRow(err) {
+		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, fromEdbInfo.LatestDate).First(&finalLast).Error
+		if err != nil && err.Error() != utils.ErrNoRow() {
 			return
 		} else {
 			latestDateStr = finalLast.DataTime

+ 25 - 41
models/predict_edb_data_calculate_ljznczj.go

@@ -2,10 +2,11 @@ package models
 
 import (
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
 	"reflect"
 	"strconv"
 	"strings"
@@ -32,17 +33,12 @@ func (obj PredictLjzNczj) Add(params BatchSaveCalculateBatchParams) (edbInfo *Ed
 		return
 	}
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Add,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -81,12 +77,11 @@ func (obj PredictLjzNczj) Add(params BatchSaveCalculateBatchParams) (edbInfo *Ed
 		Calendar:         "",
 	}
 
-	newEdbInfoId, tmpErr := to.Insert(edbInfo)
+	tmpErr := to.Create(edbInfo).Error
 	if tmpErr != nil {
 		err = tmpErr
 		return
 	}
-	edbInfo.EdbInfoId = int(newEdbInfoId)
 
 	//关联关系
 	{
@@ -104,7 +99,7 @@ func (obj PredictLjzNczj) Add(params BatchSaveCalculateBatchParams) (edbInfo *Ed
 		calculateMappingItem.FromTag = ""
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
-		_, err = to.Insert(calculateMappingItem)
+		err = to.Create(calculateMappingItem).Error
 		if err != nil {
 			return
 		}
@@ -137,17 +132,13 @@ func (obj PredictLjzNczj) Edit(params BatchSaveCalculateBatchParams) (latestDate
 	latestDateStr = edbInfo.LatestDate
 	latestValue = edbInfo.LatestValue
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
+			to.Rollback()
 			fmt.Println(reflect.TypeOf(obj).Name(), ";Edit,Err:"+err.Error())
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
@@ -169,7 +160,7 @@ func (obj PredictLjzNczj) Edit(params BatchSaveCalculateBatchParams) (latestDate
 	edbInfo.Frequency = req.Frequency
 	edbInfo.ClassifyId = req.ClassifyId
 	edbInfo.ModifyTime = time.Now()
-	_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime", "EdbNameEn", "UnitEn")
+	err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 	if err != nil {
 		return
 	}
@@ -197,14 +188,14 @@ func (obj PredictLjzNczj) Edit(params BatchSaveCalculateBatchParams) (latestDate
 
 	//删除,计算指标关联的,基础指标的关联关系
 	sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
 
 	//清空原有数据
 	sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
@@ -227,7 +218,7 @@ func (obj PredictLjzNczj) Edit(params BatchSaveCalculateBatchParams) (latestDate
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
 		}
-		_, err = to.Insert(calculateMappingItem)
+		err = to.Create(calculateMappingItem).Error
 		if err != nil {
 			return
 		}
@@ -252,17 +243,13 @@ func (obj PredictLjzNczj) Refresh(params RefreshParams) (latestDateStr string, l
 		return
 	}
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
+			to.Rollback()
 			fmt.Println(reflect.TypeOf(obj).Name(), ";Refresh,Err:"+err.Error())
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -282,7 +269,7 @@ func (obj PredictLjzNczj) GetSourceName() string {
 	return utils.DATA_SOURCE_NAME_PREDICT_CALCULATE_LJZNCZJ
 }
 
-func (obj PredictLjzNczj) refresh(to orm.TxOrmer, edbInfoId, source, subSource int, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
+func (obj PredictLjzNczj) refresh(to *gorm.DB, edbInfoId, source, subSource int, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
 	dataTableName := GetEdbDataTableName(source, subSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
@@ -371,10 +358,7 @@ func (obj PredictLjzNczj) refresh(to orm.TxOrmer, edbInfoId, source, subSource i
 	}
 
 	//获取指标所有数据
-	existDataList := make([]*EdbData, 0)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, edbInfo.Source, edbInfo.SubSource)
 	if err != nil {
 		return
 	}
@@ -412,7 +396,7 @@ func (obj PredictLjzNczj) refresh(to orm.TxOrmer, edbInfoId, source, subSource i
 			if existVal != 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, currDateStr).Exec()
+				err = to.Exec(sql, saveValue, edbInfoId, currDateStr).Error
 				if err != nil {
 					return
 				}
@@ -440,7 +424,7 @@ func (obj PredictLjzNczj) refresh(to orm.TxOrmer, edbInfoId, source, subSource i
 		removeNum := len(removeDateList)
 		if removeNum > 0 {
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, dataTableName)
-			_, err = to.Raw(sql, edbInfo.EdbInfoId, removeDateList).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId, removeDateList).Error
 			if err != nil {
 				fmt.Println(reflect.TypeOf(obj).Name(), " add data ;delete Err", err.Error())
 				err = fmt.Errorf("删除不存在的指标数据失败,Err:" + err.Error())
@@ -451,7 +435,7 @@ func (obj PredictLjzNczj) refresh(to orm.TxOrmer, edbInfoId, source, subSource i
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			fmt.Println(reflect.TypeOf(obj).Name(), " add data Err", err.Error())
 			return
@@ -461,9 +445,9 @@ func (obj PredictLjzNczj) refresh(to orm.TxOrmer, edbInfoId, source, subSource i
 	//确定实际数据的最终值
 	{
 		var finalLast EdbInfoSearchData
-		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, fromEdbInfo.LatestDate).QueryRow(&finalLast)
-		if err != nil && !utils.IsErrNoRow(err) {
+		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, fromEdbInfo.LatestDate).First(&finalLast).Error
+		if err != nil && err.Error() != utils.ErrNoRow() {
 			return
 		} else {
 			latestDateStr = finalLast.DataTime

+ 25 - 313
models/predict_edb_data_calculate_ljztbpj.go

@@ -2,10 +2,11 @@ package models
 
 import (
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
 	"sort"
 	"strings"
 	"time"
@@ -13,315 +14,25 @@ import (
 
 // EdbDataPredictCalculateLjztbpj 累计值同比拼接数据结构体
 type EdbDataPredictCalculateLjztbpj struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
-
-// SavePredictCalculateLjztbpj 新增累计值同比拼接数据
-func SavePredictCalculateLjztbpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, secondEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
-	defer func() {
-		if err != nil {
-			fmt.Println("SavePredictCalculateLjztbpj,Err:" + err.Error())
-			_ = to.Rollback()
-		} else {
-			_ = to.Commit()
-		}
-	}()
-	//最近开始的时间
-	var lastDateTime time.Time
-	var existItemA, existItemB *EdbInfoCalculateMapping
-	//获取待拼接指标
-	{
-		/*var condition string
-		var pars []interface{}
-
-		//获取待拼接指标最近的个12月31日有值的年份
-		condition += " AND data_time like ? AND edb_info_id=? "
-		pars = append(pars, "%12-31", firstEdbInfo.EdbInfoId)
-
-		lastEdbData, tmpErr := GetLastEdbData(condition, pars, firstEdbInfo.Source)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}*/
-		var firstDataList []*EdbInfoSearchData
-		var lastEdbData *EdbInfoSearchData
-		firstDataList, err = GetPredictEdbDataListAllByStartDate(firstEdbInfo, 0, "")
-		if err != nil {
-			return
-		}
-		for _, v := range firstDataList {
-			if strings.Contains(v.DataTime, "-12-31") {
-				lastEdbData = v
-			}
-		}
-
-		if lastEdbData == nil {
-			err = errors.New("找不到最近的12月31号")
-			return
-		}
-		lastDateTime, _ = time.ParseInLocation(utils.FormatDate, lastEdbData.DataTime, time.Local)
-	}
-
-	if req.EdbInfoId <= 0 {
-		edbInfo = &EdbInfo{
-			EdbInfoType:      1,
-			SourceName:       "预测累计值同比拼接",
-			Source:           utils.DATA_SOURCE_PREDICT_CALCULATE_LJZTBPJ,
-			EdbCode:          edbCode,
-			EdbName:          req.EdbName,
-			EdbNameSource:    req.EdbName,
-			Frequency:        req.Frequency,
-			Unit:             req.Unit,
-			StartDate:        firstEdbInfo.StartDate,
-			EndDate:          firstEdbInfo.EndDate,
-			ClassifyId:       req.ClassifyId,
-			SysUserId:        sysUserId,
-			SysUserRealName:  sysUserRealName,
-			UniqueCode:       uniqueCode,
-			CreateTime:       time.Now(),
-			ModifyTime:       time.Now(),
-			CalculateFormula: lastDateTime.Format(utils.FormatDate),
-			EdbType:          2,
-		}
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
-		//关联关系
-		{
-			existItemA = &EdbInfoCalculateMapping{
-				EdbInfoCalculateMappingId: 0,
-				EdbInfoId:                 edbInfo.EdbInfoId,
-				Source:                    edbInfo.Source,
-				SourceName:                edbInfo.SourceName,
-				EdbCode:                   edbInfo.EdbCode,
-				FromEdbInfoId:             firstEdbInfo.EdbInfoId,
-				FromEdbCode:               firstEdbInfo.EdbCode,
-				FromEdbName:               firstEdbInfo.EdbName,
-				FromSource:                firstEdbInfo.Source,
-				FromSourceName:            firstEdbInfo.SourceName,
-				FromTag:                   "A",
-				Sort:                      1,
-				CreateTime:                time.Now(),
-				ModifyTime:                time.Now(),
-			}
-			insertId, tmpErr := to.Insert(existItemA)
-			if tmpErr != nil {
-				err = tmpErr
-				return
-			}
-			existItemA.EdbInfoCalculateMappingId = int(insertId)
-		}
-
-		//同比值指标
-		{
-			existItemB = &EdbInfoCalculateMapping{
-				EdbInfoCalculateMappingId: 0,
-				EdbInfoId:                 edbInfo.EdbInfoId,
-				Source:                    edbInfo.Source,
-				SourceName:                edbInfo.SourceName,
-				EdbCode:                   edbInfo.EdbCode,
-				FromEdbInfoId:             secondEdbInfo.EdbInfoId,
-				FromEdbCode:               secondEdbInfo.EdbCode,
-				FromEdbName:               secondEdbInfo.EdbName,
-				FromSource:                secondEdbInfo.Source,
-				FromSourceName:            secondEdbInfo.SourceName,
-				FromTag:                   "B",
-				Sort:                      1,
-				CreateTime:                time.Now(),
-				ModifyTime:                time.Now(),
-			}
-			insertId, tmpErr := to.Insert(existItemB)
-			if tmpErr != nil {
-				err = tmpErr
-				return
-			}
-			existItemB.EdbInfoCalculateMappingId = int(insertId)
-		}
-	} else {
-		edbInfo, err = GetEdbInfoById(req.EdbInfoId)
-		if err != nil {
-			return
-		}
-		latestDateStr = edbInfo.LatestDate
-		latestValue = edbInfo.LatestValue
-		nowEdbInfo := *edbInfo // 现在的指标信息
-
-		sql := ``
-		//修改指标信息
-		edbInfo.EdbNameSource = req.EdbName
-		edbInfo.Frequency = req.Frequency
-		edbInfo.Unit = req.Unit
-		edbInfo.ClassifyId = req.ClassifyId
-		edbInfo.CalculateFormula = lastDateTime.Format(utils.FormatDate)
-		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime")
-		if err != nil {
-			return
-		}
-
-		//查询出所有的关联指标
-		var existCondition string
-		var existPars []interface{}
-		existCondition += " AND edb_info_id=? "
-		existPars = append(existPars, edbInfo.EdbInfoId)
-		var existList []*EdbInfoCalculateMapping
-		existList, err = GetEdbInfoCalculateListByCondition(existCondition, existPars)
-		if err != nil {
-			err = errors.New("判断指标是否改变失败,Err:" + err.Error())
-			return
-		}
-		for _, existItem := range existList {
-			if existItem.FromTag == "A" {
-				existItemA = existItem
-			} else if existItem.FromTag == "B" {
-				existItemB = existItem
-			}
-		}
-		if existItemA == nil {
-			err = errors.New("原待拼接指标不存在")
-			return
-		}
-		if existItemB == nil {
-			err = errors.New("原同比值指标不存在")
-			return
-		}
-		// 是否需要删除数据重新计算
-		isNeedCalculateData := false
-
-		// 如果截止日期变更,那么需要重新计算
-		if lastDateTime.Format(utils.FormatDate) != nowEdbInfo.CalculateFormula {
-			isNeedCalculateData = true
-		}
-
-		//待拼接指标数据
-		//如果拼接指标变更了,那么需要删除所有的指标进行重新拼接
-		if existItemA.FromEdbInfoId != firstEdbInfo.EdbInfoId {
-			//删除之前的A指标关联关系
-			sql = ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? and from_edb_info_id = ?`
-			_, err = to.Raw(sql, edbInfo.EdbInfoId, existItemA.FromEdbInfoId).Exec()
-			if err != nil {
-				err = errors.New("删除拼接日期之前的指标关联关系失败,Err:" + err.Error())
-				return
-			}
-		}
-
-		//同比值指标
-		if existItemB.FromEdbInfoId != secondEdbInfo.EdbInfoId {
-			//删除之前的B指标关联关系
-			sql = ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? and from_edb_info_id = ?`
-			_, err = to.Raw(sql, edbInfo.EdbInfoId, existItemB.FromEdbInfoId).Exec()
-			if err != nil {
-				err = errors.New("删除拼接日期之后的指标关联关系失败,Err:" + err.Error())
-				return
-			}
-		}
-		//添加新的指标关系
-		if existItemA.FromEdbInfoId != firstEdbInfo.EdbInfoId {
-			existItemA = &EdbInfoCalculateMapping{
-				EdbInfoCalculateMappingId: 0,
-				EdbInfoId:                 edbInfo.EdbInfoId,
-				Source:                    edbInfo.Source,
-				SourceName:                edbInfo.SourceName,
-				EdbCode:                   edbInfo.EdbCode,
-				FromEdbInfoId:             firstEdbInfo.EdbInfoId,
-				FromEdbCode:               firstEdbInfo.EdbCode,
-				FromEdbName:               firstEdbInfo.EdbName,
-				FromSource:                firstEdbInfo.Source,
-				FromSourceName:            firstEdbInfo.SourceName,
-				FromTag:                   "A",
-				Sort:                      1,
-				CreateTime:                time.Now(),
-				ModifyTime:                time.Now(),
-			}
-			insertId, tmpErr := to.Insert(existItemA)
-			if tmpErr != nil {
-				err = tmpErr
-				return
-			}
-			existItemA.EdbInfoCalculateMappingId = int(insertId)
-
-			isNeedCalculateData = true
-		}
-
-		//添加新的指标关系
-		if existItemB.FromEdbInfoId != secondEdbInfo.EdbInfoId {
-			existItemB = &EdbInfoCalculateMapping{
-				EdbInfoCalculateMappingId: 0,
-				EdbInfoId:                 edbInfo.EdbInfoId,
-				Source:                    edbInfo.Source,
-				SourceName:                edbInfo.SourceName,
-				EdbCode:                   edbInfo.EdbCode,
-				FromEdbInfoId:             secondEdbInfo.EdbInfoId,
-				FromEdbCode:               secondEdbInfo.EdbCode,
-				FromEdbName:               secondEdbInfo.EdbName,
-				FromSource:                secondEdbInfo.Source,
-				FromSourceName:            secondEdbInfo.SourceName,
-				FromTag:                   "B",
-				Sort:                      2,
-				CreateTime:                time.Now(),
-				ModifyTime:                time.Now(),
-			}
-
-			insertId, tmpErr := to.Insert(existItemB)
-			if tmpErr != nil {
-				err = tmpErr
-				return
-			}
-			existItemB.EdbInfoCalculateMappingId = int(insertId)
-
-			isNeedCalculateData = true
-		}
-
-		// 如果需要重新计算,那么先删除所有的指标数据,然后再重新计算
-		if isNeedCalculateData {
-			// 删除之前所有的指标数据
-			tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
-			sql = fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? `, tableName)
-			_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
-			if err != nil {
-				err = errors.New("删除所有的累计值同比拼接指标数据失败,Err:" + err.Error())
-				return
-			}
-		} else {
-			return
-		}
-	}
-
-	// 添加数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateLjztbpj(to, edbInfo, firstEdbInfo, secondEdbInfo, existItemB)
-
-	return
+	EdbDataId     int       `gorm:"primaryKey;autoIncrement;column:edb_data_id"`
+	EdbInfoId     int       `gorm:"column:edb_info_id" description:"指标ID"`
+	EdbCode       string    `gorm:"column:edb_code" description:"指标编码"`
+	DataTime      string    `gorm:"column:data_time" description:"数据日期"`
+	Value         float64   `gorm:"column:value" description:"数据值"`
+	Status        int       `gorm:"column:status" description:"状态"`
+	CreateTime    time.Time `gorm:"column:status" description:"创建时间"`
+	ModifyTime    time.Time `gorm:"column:create_time" description:"修改时间"`
+	DataTimestamp int64     `gorm:"column:modify_time" description:"数据日期时间戳"`
 }
 
 // RefreshAllPredictCalculateLjztbpj 刷新所有 累计值同比拼接 数据
 func RefreshAllPredictCalculateLjztbpj(edbInfo *EdbInfo) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("RefreshAllCalculateLjztbpj,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -369,11 +80,11 @@ func RefreshAllPredictCalculateLjztbpj(edbInfo *EdbInfo) (latestDateStr string,
 }
 
 // refreshAllPredictCalculateLjztbpj 刷新所有 累计值同比拼接 数据
-func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo, secondEdbInfo *EdbInfo, existItemB *EdbInfoCalculateMapping) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateLjztbpj(to *gorm.DB, edbInfo, firstEdbInfo, secondEdbInfo *EdbInfo, existItemB *EdbInfoCalculateMapping) (latestDateStr string, latestValue float64, err error) {
 	//根据指标id获取全部的数据
 	var dataList []*EdbDataPredictCalculateLjztbpj
 	sql := ` SELECT * FROM edb_data_predict_calculate_ljztbpj WHERE edb_info_id=? ORDER BY data_time DESC `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).QueryRows(&dataList)
+	err = to.Raw(sql, edbInfo.EdbInfoId).Find(&dataList).Error
 	if err != nil {
 		return
 	}
@@ -424,7 +135,8 @@ func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo, se
 				if edbData.Value != v.Value {
 					//更新指标数据
 					edbData.Value = v.Value
-					_, _ = to.Update(edbData, "Value")
+					//_, _ = to.Update(edbData, "Value")
+					_ = to.Model(edbData).Select([]string{"Value"}).Updates(edbData).Error
 				}
 			} else {
 				pjDataMap[v.DataTime] = v.Value
@@ -549,7 +261,7 @@ func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo, se
 
 		//数据入库
 		if len(addDataList) > 0 {
-			_, tmpErr := to.InsertMulti(len(addDataList), addDataList)
+			tmpErr := to.CreateInBatches(addDataList, 500).Error
 			if tmpErr != nil {
 				err = tmpErr
 				return
@@ -560,13 +272,13 @@ func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo, se
 	//删除已经不存在的累计同比拼接指标数据(由于同比值当日的数据删除了)
 	{
 		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 = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId).Error
 			if err != nil {
 				err = errors.New("删除不存在的累计值同比拼接指标数据失败,Err:" + err.Error())
 				return
@@ -579,7 +291,7 @@ func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo, se
 		tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 		for edbDate, edbDataValue := range updateEdbDataMap {
 			sql := fmt.Sprintf(` UPDATE  %s set value = ?,modify_time=now() WHERE edb_info_id = ? and data_time = ? `, tableName)
-			_, err = to.Raw(sql, edbDataValue, edbInfo.EdbInfoId, edbDate).Exec()
+			err = to.Exec(sql, edbDataValue, edbInfo.EdbInfoId, edbDate).Error
 			if err != nil {
 				err = errors.New("更新现有的累计值同比拼接指标数据失败,Err:" + err.Error())
 				return
@@ -590,9 +302,9 @@ func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo, se
 	//确定最终值
 	var finalLast EdbInfoSearchData
 	sql = ` SELECT data_time , value FROM edb_data_predict_calculate_ljztbpj WHERE edb_info_id=? and data_time<=? ORDER BY data_time DESC `
-	tmpErr := to.Raw(sql, edbInfo.EdbInfoId, latestDateStr).QueryRow(&finalLast)
+	tmpErr := to.Raw(sql, edbInfo.EdbInfoId, latestDateStr).First(&finalLast).Error
 	if tmpErr != nil {
-		if !utils.IsErrNoRow(tmpErr) {
+		if tmpErr.Error() != utils.ErrNoRow() {
 			err = tmpErr
 		}
 		return

+ 27 - 43
models/predict_edb_data_calculate_ljzzj.go

@@ -2,9 +2,11 @@ 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"
+
 	"github.com/shopspring/decimal"
 	"reflect"
 	"strconv"
@@ -26,17 +28,12 @@ func (obj PredictLjzzj) Add(params BatchSaveCalculateBatchParams) (edbInfo *EdbI
 		err = errors.New(errMsg)
 		return
 	}
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Add,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -60,12 +57,11 @@ func (obj PredictLjzzj) Add(params BatchSaveCalculateBatchParams) (edbInfo *EdbI
 	edbInfo.UnitEn = req.Unit
 	edbInfo.EdbType = 2
 	edbInfo.Sort = GetAddEdbMaxSortByClassifyId(req.ClassifyId, utils.PREDICT_EDB_INFO_TYPE)
-	newEdbInfoId, tmpErr := to.Insert(edbInfo)
+	tmpErr := to.Create(edbInfo).Error
 	if tmpErr != nil {
 		err = tmpErr
 		return
 	}
-	edbInfo.EdbInfoId = int(newEdbInfoId)
 
 	//关联关系
 	{
@@ -83,7 +79,7 @@ func (obj PredictLjzzj) Add(params BatchSaveCalculateBatchParams) (edbInfo *EdbI
 		calculateMappingItem.FromTag = ""
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
-		_, err = to.Insert(calculateMappingItem)
+		err = to.Create(calculateMappingItem).Error
 		if err != nil {
 			return
 		}
@@ -109,17 +105,13 @@ func (obj PredictLjzzj) Edit(params BatchSaveCalculateBatchParams) (latestDateSt
 	latestDateStr = edbInfo.LatestDate
 	latestValue = edbInfo.LatestValue
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
+			to.Rollback()
 			fmt.Println(reflect.TypeOf(obj).Name(), ";Edit,Err:"+err.Error())
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
@@ -137,7 +129,7 @@ func (obj PredictLjzzj) Edit(params BatchSaveCalculateBatchParams) (latestDateSt
 	edbInfo.Frequency = req.Frequency
 	edbInfo.ClassifyId = req.ClassifyId
 	edbInfo.ModifyTime = time.Now()
-	_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime", "EdbNameEn", "UnitEn")
+	err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 	if err != nil {
 		return
 	}
@@ -159,14 +151,14 @@ func (obj PredictLjzzj) Edit(params BatchSaveCalculateBatchParams) (latestDateSt
 
 	//删除,计算指标关联的,基础指标的关联关系
 	sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
 
 	//清空原有数据
 	sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
@@ -189,7 +181,7 @@ func (obj PredictLjzzj) Edit(params BatchSaveCalculateBatchParams) (latestDateSt
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
 		}
-		_, err = to.Insert(calculateMappingItem)
+		err = to.Create(calculateMappingItem).Error
 		if err != nil {
 			return
 		}
@@ -214,17 +206,12 @@ func (obj PredictLjzzj) Refresh(params RefreshParams) (latestDateStr string, lat
 		return
 	}
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Refresh,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -244,7 +231,7 @@ func (obj PredictLjzzj) GetSourceName() string {
 	return utils.DATA_SOURCE_NAME_PREDICT_CALCULATE_LJZZJ
 }
 
-func (obj PredictLjzzj) refresh(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode string) (latestDateStr string, latestValue float64, err error) {
+func (obj PredictLjzzj) refresh(to *gorm.DB, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode string) (latestDateStr string, latestValue float64, err error) {
 	dataTableName := GetEdbDataTableName(source, subSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 
@@ -279,10 +266,7 @@ func (obj PredictLjzzj) refresh(to orm.TxOrmer, edbInfoId, source, subSource int
 	addSql := ` INSERT INTO ` + dataTableName + `(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 	//获取指标所有数据
-	existDataList := make([]*EdbData, 0)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -390,7 +374,7 @@ func (obj PredictLjzzj) refresh(to orm.TxOrmer, edbInfoId, source, subSource int
 		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.Exec(sql, edbInfoId).Error
 		if err != nil {
 			err = fmt.Errorf("删除计算失败的计算指标数据失败,Err:" + err.Error())
 			return
@@ -398,7 +382,7 @@ func (obj PredictLjzzj) refresh(to orm.TxOrmer, edbInfoId, source, subSource int
 	}
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			fmt.Println(reflect.TypeOf(obj).Name(), " add data Err", err.Error())
 			return
@@ -408,9 +392,9 @@ func (obj PredictLjzzj) refresh(to orm.TxOrmer, edbInfoId, source, subSource int
 	//确定实际数据的最终值
 	{
 		var finalLast EdbInfoSearchData
-		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, fromEdbInfo.LatestDate).QueryRow(&finalLast)
-		if err != nil && !utils.IsErrNoRow(err) {
+		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, fromEdbInfo.LatestDate).First(&finalLast).Error
+		if err != nil && err.Error() != utils.ErrNoRow() {
 			return
 		} else {
 			latestDateStr = finalLast.DataTime
@@ -427,7 +411,7 @@ func (obj PredictLjzzj) refresh(to orm.TxOrmer, edbInfoId, source, subSource int
 	return
 }
 
-func (obj PredictLjzzj) calculate(edbInfoId int, date, edbInfoIdStr, edbCode, dataTableName, addSql string, val float64, dataMap, existDataMap map[string]string, to orm.TxOrmer) (newSql string, isAdd bool, err error) {
+func (obj PredictLjzzj) calculate(edbInfoId int, date, edbInfoIdStr, edbCode, dataTableName, addSql string, val float64, dataMap, existDataMap map[string]string, to *gorm.DB) (newSql string, isAdd bool, err error) {
 	newSql = addSql
 	saveValue := utils.SubFloatToString(val, 4)
 	//判断数据是否存在
@@ -444,7 +428,7 @@ func (obj PredictLjzzj) calculate(edbInfoId int, date, edbInfoIdStr, edbCode, da
 		if existVal != 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, date).Exec()
+			err = to.Exec(sql, saveValue, edbInfoId, date).Error
 		}
 	}
 	return

+ 24 - 35
models/predict_edb_data_calculate_ljzzy.go

@@ -2,9 +2,11 @@ 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"
+
 	"github.com/shopspring/decimal"
 	"strconv"
 	"strings"
@@ -13,17 +15,12 @@ import (
 
 // SavePredictCalculateLjzzy 累计值转月
 func SavePredictCalculateLjzzy(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName, lang string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("SavePredictCalculateLjzzy,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -48,12 +45,11 @@ func SavePredictCalculateLjzzy(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *E
 		edbInfo.UnitEn = req.Unit
 		edbInfo.EdbType = 2
 		edbInfo.Sort = GetAddEdbMaxSortByClassifyId(req.ClassifyId, utils.PREDICT_EDB_INFO_TYPE)
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
+		tmpErr := to.Create(edbInfo).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
 
 		//关联关系
 		{
@@ -71,7 +67,7 @@ func SavePredictCalculateLjzzy(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *E
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
-			_, err = to.Insert(calculateMappingItem)
+			err = to.Create(calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -96,7 +92,7 @@ func SavePredictCalculateLjzzy(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *E
 		edbInfo.Frequency = req.Frequency
 		edbInfo.ClassifyId = req.ClassifyId
 		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime", "EdbNameEn", "UnitEn")
+		err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 		if err != nil {
 			return
 		}
@@ -119,14 +115,14 @@ func SavePredictCalculateLjzzy(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *E
 
 		//删除,计算指标关联的,基础指标的关联关系
 		sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			return
 		}
 
 		//清空原有数据
 		sql = ` DELETE FROM edb_data_predict_calculate_ljzzy WHERE edb_info_id = ? `
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			return
 		}
@@ -149,7 +145,7 @@ func SavePredictCalculateLjzzy(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *E
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
 			}
-			_, err = to.Insert(calculateMappingItem)
+			err = to.Create(calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -164,17 +160,12 @@ func SavePredictCalculateLjzzy(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *E
 
 // RefreshAllPredictCalculateLjzzy 刷新全部累计值转月数据
 func RefreshAllPredictCalculateLjzzy(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("refreshAllPredictCalculateLjzzy,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -184,7 +175,7 @@ func RefreshAllPredictCalculateLjzzy(edbInfoId, source, subSource int, fromEdbIn
 	return
 }
 
-func refreshAllPredictCalculateLjzzy(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateLjzzy(to *gorm.DB, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	dataList, err := GetPredictEdbDataListAllByStartDate(fromEdbInfo, 1, startDate)
 	if err != nil {
@@ -215,12 +206,10 @@ func refreshAllPredictCalculateLjzzy(to orm.TxOrmer, edbInfoId, source, subSourc
 
 	addSql := ` INSERT INTO edb_data_predict_calculate_ljzzy(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
-	//获取指标所有数据
-	existDataList := make([]*EdbData, 0)
 	dataTableName := GetEdbDataTableName(source, subSource)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
+
+	//获取指标所有数据
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -348,7 +337,7 @@ func refreshAllPredictCalculateLjzzy(to orm.TxOrmer, edbInfoId, source, subSourc
 		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.Exec(sql, edbInfoId).Error
 		if err != nil {
 			err = fmt.Errorf("删除计算失败的计算指标数据失败,Err:" + err.Error())
 			return
@@ -356,7 +345,7 @@ func refreshAllPredictCalculateLjzzy(to orm.TxOrmer, edbInfoId, source, subSourc
 	}
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("refreshAllPredictCalculateLjzzy add Err", err.Error())
 			return
@@ -365,10 +354,10 @@ func refreshAllPredictCalculateLjzzy(to orm.TxOrmer, edbInfoId, source, subSourc
 
 	//确定最终值
 	var finalLast EdbInfoSearchData
-	sql = ` SELECT data_time , value FROM edb_data_predict_calculate_ljzzy WHERE edb_info_id=? and data_time<=? ORDER BY data_time DESC `
-	tmpErr := to.Raw(sql, edbInfoId, latestDateStr).QueryRow(&finalLast)
+	sql := ` SELECT data_time , value FROM edb_data_predict_calculate_ljzzy WHERE edb_info_id=? and data_time<=? ORDER BY data_time DESC `
+	tmpErr := to.Raw(sql, edbInfoId, latestDateStr).First(&finalLast).Error
 	if tmpErr != nil {
-		if !utils.IsErrNoRow(tmpErr) {
+		if tmpErr.Error() != utils.ErrNoRow() {
 			err = tmpErr
 		}
 		return

+ 21 - 30
models/predict_edb_data_calculate_nh.go

@@ -2,9 +2,11 @@ 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"
+
 	"github.com/shopspring/decimal"
 	"strconv"
 	"strings"
@@ -13,17 +15,12 @@ import (
 
 // SavePredictCalculateNh 预测年化值
 func SavePredictCalculateNh(reqEdbInfoId, classifyId int, edbName, frequency, unit, formula string, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName, lang string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error, errMsg string) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("SavePredictCalculateNh,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	fmt.Println("reqEdbInfoId:", reqEdbInfoId)
@@ -62,12 +59,11 @@ func SavePredictCalculateNh(reqEdbInfoId, classifyId int, edbName, frequency, un
 			LatestValue:      0,
 			ChartImage:       "",
 		}
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
+		tmpErr := to.Create(edbInfo).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
 
 		// 添加关联关系
 		{
@@ -87,7 +83,7 @@ func SavePredictCalculateNh(reqEdbInfoId, classifyId int, edbName, frequency, un
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
 			}
-			_, err = to.Insert(calculateMappingItem)
+			err = to.Create(calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -122,7 +118,7 @@ func SavePredictCalculateNh(reqEdbInfoId, classifyId int, edbName, frequency, un
 		edbInfo.ClassifyId = classifyId
 		edbInfo.CalculateFormula = formula
 		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn")
+		err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 		if err != nil {
 			return
 		}
@@ -144,7 +140,7 @@ func SavePredictCalculateNh(reqEdbInfoId, classifyId int, edbName, frequency, un
 
 		//删除,计算指标关联的,基础指标的关联关系
 		sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			err = errors.New("删除计算指标关联关系失败,Err:" + err.Error())
 			return
@@ -153,7 +149,7 @@ func SavePredictCalculateNh(reqEdbInfoId, classifyId int, edbName, frequency, un
 		//清空原有已经入库的数据
 		tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 		sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			return
 		}
@@ -176,7 +172,7 @@ func SavePredictCalculateNh(reqEdbInfoId, classifyId int, edbName, frequency, un
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
 			}
-			_, err = to.Insert(calculateMappingItem)
+			err = to.Create(calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -192,17 +188,12 @@ func SavePredictCalculateNh(reqEdbInfoId, classifyId int, edbName, frequency, un
 
 // RefreshAllPredictCalculateNh 刷新全部预测年化值数据
 func RefreshAllPredictCalculateNh(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, edbFrequency, formula string) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("RefreshAllCalculateNh,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -212,7 +203,7 @@ func RefreshAllPredictCalculateNh(edbInfoId, source, subSource int, fromEdbInfo
 }
 
 // refreshAllPredictCalculateNh 刷新预测年化数据
-func refreshAllPredictCalculateNh(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode string) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateNh(to *gorm.DB, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode string) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	tableName := GetEdbDataTableName(utils.DATA_SOURCE_PREDICT_CALCULATE_NH, subSource)
 
@@ -256,7 +247,7 @@ func refreshAllPredictCalculateNh(to orm.TxOrmer, edbInfoId, source, subSource i
 	if lenFromDataList <= 0 {
 		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? `, tableName)
 
-		_, err = to.Raw(sql, edbInfoId).Exec()
+		err = to.Exec(sql, edbInfoId).Error
 		if err != nil {
 			err = fmt.Errorf("删除年化指标数据失败,Err:" + err.Error())
 			return
@@ -361,7 +352,7 @@ func refreshAllPredictCalculateNh(to orm.TxOrmer, edbInfoId, source, subSource i
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 	}
 
 	// 移除不存在的日期数据
@@ -370,10 +361,10 @@ func refreshAllPredictCalculateNh(to orm.TxOrmer, edbInfoId, source, subSource i
 		for k := range removeDateMap {
 			removeDateList = append(removeDateList, k)
 		}
-		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
 		if err != nil {
 			err = fmt.Errorf("删除年化指标数据失败,Err:" + err.Error())
 			return

+ 45 - 52
models/predict_edb_data_calculate_nhcc.go

@@ -2,10 +2,11 @@ package models
 
 import (
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
 	"math"
 	"strings"
 	"time"
@@ -13,30 +14,25 @@ import (
 
 // EdbDataPredictCalculateNhcc 拟合残差数据结构体
 type EdbDataPredictCalculateNhcc struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	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" description:"指标ID"`
+	EdbCode       string    `gorm:"column:edb_code" description:"指标编码"`
+	DataTime      string    `gorm:"column:data_time" description:"数据日期"`
+	Value         float64   `gorm:"column:value" description:"数据值"`
+	Status        int       `gorm:"column:status" description:"状态"`
+	CreateTime    time.Time `gorm:"column:status" description:"创建时间"`
+	ModifyTime    time.Time `gorm:"column:create_time" description:"修改时间"`
+	DataTimestamp int64     `gorm:"column:modify_time" description:"数据日期时间戳"`
 }
 
 // SavePredictCalculateNhcc 新增拟合残差数据
 func SavePredictCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, secondEdbInfo *EdbInfo, edbCode, uniqueCode string, nhccDate NhccDate, sysUserId int, sysUserRealName, lang string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("SavePredictCalculateNhcc,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	var existItemA, existItemB *EdbInfoCalculateMapping
@@ -64,12 +60,12 @@ func SavePredictCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, s
 			EdbType:          2,
 			Sort:             GetAddEdbMaxSortByClassifyId(req.ClassifyId, utils.PREDICT_EDB_INFO_TYPE),
 		}
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
+		tmpErr := to.Create(edbInfo).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
+
 		//第一个指标
 		{
 			existItemA = &EdbInfoCalculateMapping{
@@ -89,12 +85,12 @@ func SavePredictCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, s
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
 			}
-			insertId, tmpErr := to.Insert(existItemA)
+			tmpErr := to.Create(existItemA).Error
 			if tmpErr != nil {
 				err = tmpErr
 				return
 			}
-			existItemA.EdbInfoCalculateMappingId = int(insertId)
+
 		}
 
 		//第二个指标
@@ -116,12 +112,12 @@ func SavePredictCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, s
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
 			}
-			insertId, tmpErr := to.Insert(existItemB)
+			tmpErr := to.Create(existItemB).Error
 			if tmpErr != nil {
 				err = tmpErr
 				return
 			}
-			existItemB.EdbInfoCalculateMappingId = int(insertId)
+
 		}
 	} else {
 		edbInfo, err = GetEdbInfoById(req.EdbInfoId)
@@ -146,7 +142,7 @@ func SavePredictCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, s
 		edbInfo.ClassifyId = req.ClassifyId
 		edbInfo.CalculateFormula = req.Formula
 		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn")
+		err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 		if err != nil {
 			return
 		}
@@ -191,7 +187,7 @@ func SavePredictCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, s
 			if existItemA.FromEdbInfoId != firstEdbInfo.EdbInfoId {
 				//删除之前的A指标关联关系
 				sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? and from_edb_info_id = ?`
-				_, err = to.Raw(sql, edbInfo.EdbInfoId, existItemA.FromEdbInfoId).Exec()
+				err = to.Exec(sql, edbInfo.EdbInfoId, existItemA.FromEdbInfoId).Error
 				if err != nil {
 					err = fmt.Errorf("删除指标A关联关系失败,Err:" + err.Error())
 					return
@@ -202,7 +198,7 @@ func SavePredictCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, s
 			if existItemB.FromEdbInfoId != secondEdbInfo.EdbInfoId {
 				//删除之前的B指标关联关系
 				sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? and from_edb_info_id = ?`
-				_, err = to.Raw(sql, edbInfo.EdbInfoId, existItemB.FromEdbInfoId).Exec()
+				err = to.Exec(sql, edbInfo.EdbInfoId, existItemB.FromEdbInfoId).Error
 				if err != nil {
 					err = fmt.Errorf("删除指标B关联关系失败,Err:" + err.Error())
 					return
@@ -233,12 +229,11 @@ func SavePredictCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, s
 						CreateTime:                time.Now(),
 						ModifyTime:                time.Now(),
 					}
-					insertId, tmpErr := to.Insert(existItemA)
+					tmpErr := to.Create(existItemA).Error
 					if tmpErr != nil {
 						err = tmpErr
 						return
 					}
-					existItemA.EdbInfoCalculateMappingId = int(insertId)
 
 					isNeedCalculateData = true
 				}
@@ -246,7 +241,8 @@ func SavePredictCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, s
 				// 如果平移天数不一致的话,
 				existItemA.ModifyTime = time.Now()
 				existItemA.MoveValue = req.EdbInfoIdArr[0].MoveValue
-				_, err = to.Update(existItemA, "ModifyTime", "MoveValue")
+				//_, err = to.Update(existItemA, "ModifyTime", "MoveValue")
+				err = to.Model(existItemA).Select([]string{"ModifyTime", "MoveValue"}).Updates(existItemA).Error
 				if err != nil {
 					return
 				}
@@ -276,19 +272,19 @@ func SavePredictCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, s
 					CreateTime:                time.Now(),
 					ModifyTime:                time.Now(),
 				}
-				insertId, tmpErr := to.Insert(existItemB)
+				tmpErr := to.Create(existItemB).Error
 				if tmpErr != nil {
 					err = tmpErr
 					return
 				}
-				existItemB.EdbInfoCalculateMappingId = int(insertId)
 
 				isNeedCalculateData = true
 			} else if existItemB.MoveValue != req.EdbInfoIdArr[1].MoveValue {
 				// 如果平移天数不一致的话,
 				existItemB.ModifyTime = time.Now()
 				existItemB.MoveValue = req.EdbInfoIdArr[1].MoveValue
-				_, err = to.Update(existItemB, "ModifyTime", "MoveValue")
+				//_, err = to.Update(existItemB, "ModifyTime", "MoveValue")
+				err = to.Model(existItemB).Select([]string{"ModifyTime", "MoveValue"}).Updates(existItemB).Error
 				if err != nil {
 					return
 				}
@@ -301,7 +297,7 @@ func SavePredictCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, s
 			// 删除之前所有的指标数据
 			tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? `, tableName)
-			_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId).Error
 			if err != nil {
 				err = fmt.Errorf("删除历史数据失败,Err:" + err.Error())
 				return
@@ -319,14 +315,12 @@ func SavePredictCalculateNhcc(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, s
 
 // RefreshAllPredictCalculateNhcc 刷新所有 拟合残差 数据
 func RefreshAllPredictCalculateNhcc(edbInfo *EdbInfo) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("RefreshAllPredictCalculateNhcc,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	//查询关联指标信息
@@ -391,10 +385,10 @@ func RefreshAllPredictCalculateNhcc(edbInfo *EdbInfo) (latestDateStr string, lat
 }
 
 // refreshAllPredictCalculateNhcc 刷新所有 拟合残差 数据
-func refreshAllPredictCalculateNhcc(to orm.TxOrmer, edbInfo, firstEdbInfo, secondEdbInfo *EdbInfo, existItemA, existItemB *EdbInfoCalculateMapping, nhccDate NhccDate) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateNhcc(to *gorm.DB, edbInfo, firstEdbInfo, secondEdbInfo *EdbInfo, existItemA, existItemB *EdbInfoCalculateMapping, nhccDate NhccDate) (latestDateStr string, latestValue float64, err error) {
 	var dataList []*EdbDataPredictCalculateNhcc
 	sql := ` SELECT * FROM edb_data_predict_calculate_nhcc WHERE edb_info_id=? ORDER BY data_time DESC `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).QueryRows(&dataList)
+	err = to.Raw(sql, edbInfo.EdbInfoId).Find(&dataList).Error
 	if err != nil {
 		return
 	}
@@ -510,7 +504,8 @@ func refreshAllPredictCalculateNhcc(to orm.TxOrmer, edbInfo, firstEdbInfo, secon
 			// 如果有的话,还需要判断值是否一致,一致则不处理,不一致则修改
 			if existData.Value != val {
 				existData.Value = val
-				_, err = to.Update(existData, "Value")
+				//_, err = to.Update(existData, "Value")
+				err = to.Model(existData).Select([]string{"Value"}).Updates(existData).Error
 				if err != nil {
 					return
 				}
@@ -529,7 +524,7 @@ func refreshAllPredictCalculateNhcc(to orm.TxOrmer, edbInfo, firstEdbInfo, secon
 			//如果拼接指标变更了,那么需要删除所有的指标数据
 			tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, tableName)
-			_, err = to.Raw(sql, edbInfo.EdbInfoId, removeDateList).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId, removeDateList).Error
 			if err != nil {
 				err = fmt.Errorf("删除不存在的拟合残差指标数据失败,Err:" + err.Error())
 				return
@@ -545,7 +540,7 @@ func refreshAllPredictCalculateNhcc(to orm.TxOrmer, edbInfo, firstEdbInfo, secon
 			tmpAddDataList = append(tmpAddDataList, v)
 			i++
 			if i >= 500 {
-				_, err = to.InsertMulti(len(tmpAddDataList), tmpAddDataList)
+				err = to.CreateInBatches(tmpAddDataList, 500).Error
 				if err != nil {
 					return
 				}
@@ -555,7 +550,7 @@ func refreshAllPredictCalculateNhcc(to orm.TxOrmer, edbInfo, firstEdbInfo, secon
 		}
 
 		if len(tmpAddDataList) > 0 {
-			_, err = to.InsertMulti(len(tmpAddDataList), tmpAddDataList)
+			err = to.CreateInBatches(tmpAddDataList, 500).Error
 			if err != nil {
 				return
 			}
@@ -565,9 +560,9 @@ func refreshAllPredictCalculateNhcc(to orm.TxOrmer, edbInfo, firstEdbInfo, secon
 	//确定最终值
 	var finalLast EdbInfoSearchData
 	sql = ` SELECT data_time , value FROM edb_data_predict_calculate_nhcc WHERE edb_info_id=? and data_time<=? ORDER BY data_time DESC `
-	tmpErr := to.Raw(sql, edbInfo.EdbInfoId, latestDateStr).QueryRow(&finalLast)
+	tmpErr := to.Raw(sql, edbInfo.EdbInfoId, latestDateStr).First(&finalLast).Error
 	if tmpErr != nil {
-		if !utils.IsErrNoRow(tmpErr) {
+		if tmpErr.Error() != utils.ErrNoRow() {
 			err = tmpErr
 		}
 		return
@@ -615,14 +610,12 @@ func CalculatePredictComputeCorrelation(req *EdbInfoCalculateBatchSaveReq, first
 		}
 	}
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("RefreshAllCalculateNhcc,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	// 获取相关数据

+ 26 - 37
models/predict_edb_data_calculate_nszydbpjjs.go

@@ -2,10 +2,11 @@ package models
 
 import (
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -13,17 +14,12 @@ import (
 
 // SavePredictCalculateNszydpjjs 新增/编辑 预测 N数值移动平均计算指标
 func SavePredictCalculateNszydpjjs(reqEdbInfoId, classifyId int, edbName, frequency, unit, formula string, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName, lang string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error, errMsg string) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("SavePredictCalculateNszydpjjs,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -68,12 +64,11 @@ func SavePredictCalculateNszydpjjs(reqEdbInfoId, classifyId int, edbName, freque
 			LatestValue:      0,
 			ChartImage:       "",
 		}
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
+		tmpErr := to.Create(edbInfo).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
 
 		// 添加关联关系
 		{
@@ -93,7 +88,7 @@ func SavePredictCalculateNszydpjjs(reqEdbInfoId, classifyId int, edbName, freque
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
 			}
-			_, err = to.Insert(calculateMappingItem)
+			err = to.Create(calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -130,7 +125,7 @@ func SavePredictCalculateNszydpjjs(reqEdbInfoId, classifyId int, edbName, freque
 		edbInfo.ClassifyId = classifyId
 		edbInfo.CalculateFormula = formula
 		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn")
+		err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 		if err != nil {
 			return
 		}
@@ -155,7 +150,7 @@ func SavePredictCalculateNszydpjjs(reqEdbInfoId, classifyId int, edbName, freque
 		if count <= 0 {
 			// 需要删除原先的 计算指标关联的,基础指标的关联关系
 			sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-			_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId).Error
 			if err != nil {
 				return
 			}
@@ -178,7 +173,7 @@ func SavePredictCalculateNszydpjjs(reqEdbInfoId, classifyId int, edbName, freque
 					CreateTime:                time.Now(),
 					ModifyTime:                time.Now(),
 				}
-				_, err = to.Insert(calculateMappingItem)
+				err = to.Create(calculateMappingItem).Error
 				if err != nil {
 					return
 				}
@@ -189,7 +184,7 @@ func SavePredictCalculateNszydpjjs(reqEdbInfoId, classifyId int, edbName, freque
 		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_PREDICT_CALCULATE_NSZYDPJJS, utils.DATA_SUB_SOURCE_EDB)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
-		_, err = to.Raw(deleteSql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(deleteSql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			return
 		}
@@ -202,17 +197,12 @@ func SavePredictCalculateNszydpjjs(reqEdbInfoId, classifyId int, edbName, freque
 
 // RefreshAllPredictCalculateNszydpjjs 刷新所有 N数值移动平均计算指标 数据
 func RefreshAllPredictCalculateNszydpjjs(edbInfoId, source, subSource, formulaInt int, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("RefreshAllPredictCalculateNszydpjjs,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -222,19 +212,19 @@ func RefreshAllPredictCalculateNszydpjjs(edbInfoId, source, subSource, formulaIn
 }
 
 // refreshAllPredictCalculateNszydpjjs 更新全部N数值移动平均计算
-func refreshAllPredictCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, subSource, formulaInt int, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateNszydpjjs(to *gorm.DB, edbInfoId, source, subSource, formulaInt int, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	fmt.Println(edbInfoIdStr)
-	fmt.Println("refreshAllCalculateNszydpjjs startDate:", startDate)
+	//fmt.Println(edbInfoIdStr)
+	//fmt.Println("refreshAllCalculateNszydpjjs startDate:", startDate)
 
 	// 获取关联指标数据
-	existDataList := make([]*EdbData, 0)
 	dataTableName := GetEdbDataTableName(source, subSource)
-	fmt.Println("dataTableName:", dataTableName)
 
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
+	//获取指标所有数据
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
+	if err != nil {
+		return
+	}
 
 	existDataMap := make(map[string]*EdbData)
 	removeDataTimeMap := make(map[string]int) //需要移除的日期数据
@@ -334,7 +324,7 @@ func refreshAllPredictCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, subS
 			if existStr != valStr {
 				sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 				sql = fmt.Sprintf(sql, dataTableName)
-				_, err = to.Raw(sql, valStr, edbInfoId, av).Exec()
+				err = to.Exec(sql, valStr, edbInfoId, av).Error
 				if err != nil {
 					return
 				}
@@ -351,9 +341,9 @@ func refreshAllPredictCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, subS
 		removeNum := len(removeDateList)
 		if removeNum > 0 {
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, dataTableName)
-			_, err = to.Raw(sql, edbInfoId, removeDateList).Exec()
+			err = to.Exec(sql, edbInfoId, removeDateList).Error
 			if err != nil {
-				fmt.Println("refreshAllPredictCalculateNszydpjjs add data ;delete Err", err.Error())
+				//fmt.Println("refreshAllPredictCalculateNszydpjjs add data ;delete Err", err.Error())
 				err = fmt.Errorf("删除不存在的指标数据失败,Err:" + err.Error())
 				return
 			}
@@ -362,8 +352,7 @@ func refreshAllPredictCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, subS
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		//utils.FileLog.Info("addSql:" + addSql)
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			return
 		}

+ 24 - 41
models/predict_edb_data_calculate_percentile.go

@@ -3,9 +3,11 @@ package models
 import (
 	"encoding/json"
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
+
 	"github.com/shopspring/decimal"
 	"reflect"
 	"strconv"
@@ -23,17 +25,12 @@ func (obj PredictPercentile) Add(params BatchSaveCalculateBatchParams) (edbInfo
 	fromEdbInfo := params.FromEdbInfo
 	edbCode := params.EdbCode
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Add,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -72,12 +69,11 @@ func (obj PredictPercentile) Add(params BatchSaveCalculateBatchParams) (edbInfo
 		Calendar:         "",
 	}
 
-	newEdbInfoId, tmpErr := to.Insert(edbInfo)
+	tmpErr := to.Create(edbInfo).Error
 	if tmpErr != nil {
 		err = tmpErr
 		return
 	}
-	edbInfo.EdbInfoId = int(newEdbInfoId)
 
 	//关联关系
 	{
@@ -95,7 +91,7 @@ func (obj PredictPercentile) Add(params BatchSaveCalculateBatchParams) (edbInfo
 		calculateMappingItem.FromTag = ""
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
-		_, err = to.Insert(calculateMappingItem)
+		err = to.Create(calculateMappingItem).Error
 		if err != nil {
 			return
 		}
@@ -116,17 +112,12 @@ func (obj PredictPercentile) Edit(params BatchSaveCalculateBatchParams) (latestD
 	latestDateStr = edbInfo.LatestDate
 	latestValue = edbInfo.LatestValue
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Edit,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
@@ -149,7 +140,7 @@ func (obj PredictPercentile) Edit(params BatchSaveCalculateBatchParams) (latestD
 	edbInfo.ClassifyId = req.ClassifyId
 	edbInfo.CalculateFormula = req.Formula
 	edbInfo.ModifyTime = time.Now()
-	_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn")
+	err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 	if err != nil {
 		return
 	}
@@ -177,14 +168,14 @@ func (obj PredictPercentile) Edit(params BatchSaveCalculateBatchParams) (latestD
 
 	//删除,计算指标关联的,基础指标的关联关系
 	sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
 
 	//清空原有数据
 	sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
@@ -207,7 +198,7 @@ func (obj PredictPercentile) Edit(params BatchSaveCalculateBatchParams) (latestD
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
 		}
-		_, err = to.Insert(calculateMappingItem)
+		err = to.Create(calculateMappingItem).Error
 		if err != nil {
 			return
 		}
@@ -231,17 +222,12 @@ func (obj PredictPercentile) Refresh(params RefreshParams) (latestDateStr string
 		return
 	}
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Refresh,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -261,7 +247,7 @@ func (obj PredictPercentile) GetSourceName() string {
 	return utils.DATA_SOURCE_NAME_PREDICT_CALCULATE_PERCENTILE
 }
 
-func (obj PredictPercentile) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error, errMsg string) {
+func (obj PredictPercentile) refresh(to *gorm.DB, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error, errMsg string) {
 	edbInfoId := edbInfo.EdbInfoId
 	dataTableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
@@ -279,10 +265,7 @@ func (obj PredictPercentile) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbIn
 	}
 
 	//获取指标所有数据
-	existDataList := make([]*EdbData, 0)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, edbInfo.Source, edbInfo.SubSource)
 	if err != nil {
 		return
 	}
@@ -315,7 +298,7 @@ func (obj PredictPercentile) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbIn
 			if existVal != 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, currDateStr).Exec()
+				err = to.Exec(sql, saveValue, edbInfoId, currDateStr).Error
 				if err != nil {
 					return
 				}
@@ -343,7 +326,7 @@ func (obj PredictPercentile) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbIn
 		removeNum := len(removeDateList)
 		if removeNum > 0 {
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, dataTableName)
-			_, err = to.Raw(sql, edbInfo.EdbInfoId, removeDateList).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId, removeDateList).Error
 			if err != nil {
 				fmt.Println(reflect.TypeOf(obj).Name(), " add data ;delete Err", err.Error())
 				err = fmt.Errorf("删除不存在的指标数据失败,Err:" + err.Error())
@@ -354,7 +337,7 @@ func (obj PredictPercentile) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbIn
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			fmt.Println(reflect.TypeOf(obj).Name(), " add data Err", err.Error())
 			return
@@ -364,7 +347,7 @@ func (obj PredictPercentile) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbIn
 	//确定实际数据的最终值
 	{
 		finalLast, tmpErr := GetFinalLastByTo(to, edbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo.LatestDate)
-		if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
+		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
 			return
 		}
 		if tmpErr == nil {

+ 16 - 25
models/predict_edb_data_calculate_phase_shift.go

@@ -2,9 +2,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"
@@ -12,18 +13,13 @@ import (
 
 // SavePredictCalculatePhaseShift 期数移位
 func SavePredictCalculatePhaseShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName, lang string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
-
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
 			fmt.Println("SavePredictCalculateTimeShift,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -69,12 +65,11 @@ func SavePredictCalculatePhaseShift(req *EdbInfoCalculateBatchSaveReq, fromEdbIn
 		edbInfo.EdbNameEn = req.EdbName
 		edbInfo.UnitEn = req.Unit
 		edbInfo.Sort = GetAddEdbMaxSortByClassifyId(req.ClassifyId, utils.PREDICT_EDB_INFO_TYPE)
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
+		tmpErr := to.Create(edbInfo).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
 		//关联关系
 		{
 			calculateMappingItem := new(EdbInfoCalculateMapping)
@@ -91,7 +86,7 @@ func SavePredictCalculatePhaseShift(req *EdbInfoCalculateBatchSaveReq, fromEdbIn
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
-			_, err = to.Insert(calculateMappingItem)
+			err = to.Create(calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -121,7 +116,7 @@ func SavePredictCalculatePhaseShift(req *EdbInfoCalculateBatchSaveReq, fromEdbIn
 		edbInfo.MoveFrequency = req.MoveFrequency
 		edbInfo.CalculateFormula = req.Formula
 		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "MoveType", "MoveFrequency", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn")
+		err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "MoveType", "MoveFrequency", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 		if err != nil {
 			return
 		}
@@ -144,7 +139,7 @@ func SavePredictCalculatePhaseShift(req *EdbInfoCalculateBatchSaveReq, fromEdbIn
 			if count <= 0 {
 				//删除,计算指标关联的,基础指标的关联关系
 				sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-				_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+				err = to.Exec(sql, edbInfo.EdbInfoId).Error
 				if err != nil {
 					err = errors.New("删除计算指标关联关系失败,Err:" + err.Error())
 					return
@@ -167,7 +162,7 @@ func SavePredictCalculatePhaseShift(req *EdbInfoCalculateBatchSaveReq, fromEdbIn
 						CreateTime:                time.Now(),
 						ModifyTime:                time.Now(),
 					}
-					_, err = to.Insert(calculateMappingItem)
+					err = to.Create(calculateMappingItem).Error
 					if err != nil {
 						return
 					}
@@ -176,7 +171,7 @@ func SavePredictCalculatePhaseShift(req *EdbInfoCalculateBatchSaveReq, fromEdbIn
 
 			//清空原有数据
 			sql := ` DELETE FROM edb_data_predict_calculate_phase_shift WHERE edb_info_id = ? `
-			_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId).Error
 			if err != nil {
 				return
 			}
@@ -195,17 +190,13 @@ func SavePredictCalculatePhaseShift(req *EdbInfoCalculateBatchSaveReq, fromEdbIn
 
 // RefreshAllPredictCalculatePhaseShift 刷新所有时间移位数据
 func RefreshAllPredictCalculatePhaseShift(edbInfoId, source, subSource, formulaInt, moveType int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, moveFrequency string) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshAllPredictCalculatePhaseShift,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -215,7 +206,7 @@ func RefreshAllPredictCalculatePhaseShift(edbInfoId, source, subSource, formulaI
 }
 
 // refreshAllPredictCalculatePhaseShift 刷新所有时间移位数据
-func refreshAllPredictCalculatePhaseShift(to orm.TxOrmer, edbInfoId, source, subSource, formulaInt, moveType int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, moveFrequency string) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculatePhaseShift(to *gorm.DB, edbInfoId, source, subSource, formulaInt, moveType int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, moveFrequency string) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	dataList, err := GetPredictEdbDataListAllByStartDate(fromEdbInfo, 0, startDate)
 	if err != nil {
@@ -315,7 +306,7 @@ func refreshAllPredictCalculatePhaseShift(to orm.TxOrmer, edbInfoId, source, sub
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			return
 		}

+ 24 - 39
models/predict_edb_data_calculate_qjjs.go

@@ -3,10 +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/shopspring/decimal"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
@@ -21,18 +23,12 @@ func (obj PredictCalculateRangeAnalysis) Add(params BatchSaveCalculateBatchParam
 	uniqueCode := params.UniqueCode
 	sysUserId := params.SysUserId
 	sysUserRealName := params.SysUserRealName
-	//req *EdbInfoCalculateBatchSaveReq, edbCode, uniqueCode string, sysUserId int, sysUserRealName string
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("AddCalculateRangeAnalysis,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	if req.EdbInfoId > 0 {
@@ -59,12 +55,11 @@ func (obj PredictCalculateRangeAnalysis) Add(params BatchSaveCalculateBatchParam
 	edbInfo.UnitEn = req.Unit
 	edbInfo.EdbType = obj.GetEdbType()
 	edbInfo.EdbInfoType = 1
-	newEdbInfoId, tmpErr := to.Insert(edbInfo)
+	tmpErr := to.Create(edbInfo).Error
 	if tmpErr != nil {
 		err = tmpErr
 		return
 	}
-	edbInfo.EdbInfoId = int(newEdbInfoId)
 
 	//关联关系
 	fromEdbInfo, e := GetEdbInfoById(req.FromEdbInfoId)
@@ -89,7 +84,7 @@ func (obj PredictCalculateRangeAnalysis) Add(params BatchSaveCalculateBatchParam
 	calculateMappingItem.SourceName = edbInfo.SourceName
 	calculateMappingItem.FromSubSource = edbInfo.SubSource
 
-	_, err = to.Insert(calculateMappingItem)
+	err = to.Create(calculateMappingItem).Error
 	if err != nil {
 		return
 	}
@@ -103,17 +98,12 @@ func (obj PredictCalculateRangeAnalysis) Add(params BatchSaveCalculateBatchParam
 func (obj PredictCalculateRangeAnalysis) Edit(params BatchSaveCalculateBatchParams) (latestDateStr string, latestValue float64, err error, errMsg string) {
 	edbInfo := params.EdbInfo
 	req := params.Req
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("EditCalculateRangeAnalysis,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -135,14 +125,14 @@ func (obj PredictCalculateRangeAnalysis) Edit(params BatchSaveCalculateBatchPara
 		edbInfo.EdbNameSource = req.EdbName
 	}
 	edbInfo.ModifyTime = time.Now()
-	_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn")
+	err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "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.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		err = errors.New("删除计算指标关联关系失败,Err:" + err.Error())
 		return
@@ -150,7 +140,7 @@ func (obj PredictCalculateRangeAnalysis) Edit(params BatchSaveCalculateBatchPara
 	//清空原有数据
 	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
@@ -177,7 +167,7 @@ func (obj PredictCalculateRangeAnalysis) Edit(params BatchSaveCalculateBatchPara
 	calculateMappingItem.SourceName = edbInfo.SourceName
 	calculateMappingItem.FromSubSource = edbInfo.SubSource
 
-	_, err = to.Insert(calculateMappingItem)
+	err = to.Create(calculateMappingItem).Error
 	if err != nil {
 		return
 	}
@@ -206,17 +196,12 @@ func (obj PredictCalculateRangeAnalysis) Refresh(params RefreshParams) (latestDa
 		return
 	}
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("RefreshAllCalculateRangeAnalysis,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -226,7 +211,7 @@ func (obj PredictCalculateRangeAnalysis) Refresh(params RefreshParams) (latestDa
 	return
 }
 
-func (obj PredictCalculateRangeAnalysis) refresh(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, calculateFormula string) (latestDateStr string, latestValue float64, err error, errMsg string) {
+func (obj PredictCalculateRangeAnalysis) refresh(to *gorm.DB, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, calculateFormula string) (latestDateStr string, latestValue float64, err error, errMsg string) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	tableName := GetEdbDataTableName(obj.GetSource(), utils.DATA_SUB_SOURCE_EDB)
 
@@ -295,7 +280,7 @@ func (obj PredictCalculateRangeAnalysis) refresh(to orm.TxOrmer, edbInfoId, sour
 
 		if isAdd {
 			addSql = strings.TrimRight(addSql, ",")
-			_, err = to.Raw(addSql).Exec()
+			err = to.Exec(addSql).Error
 		}
 
 		// 移除不存在的日期数据
@@ -304,10 +289,10 @@ func (obj PredictCalculateRangeAnalysis) refresh(to orm.TxOrmer, edbInfoId, sour
 			for k := range removeDateMap {
 				removeDateList = append(removeDateList, k)
 			}
-			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
 			if err != nil {
 				err = fmt.Errorf("删除扩散指数指标数据失败,Err:" + err.Error())
 				return
@@ -317,7 +302,7 @@ func (obj PredictCalculateRangeAnalysis) refresh(to orm.TxOrmer, edbInfoId, sour
 	//确定实际数据的最终值
 	{
 		finalLast, tmpErr := GetFinalLastByTo(to, edbInfoId, obj.GetSource(), utils.DATA_SUB_SOURCE_EDB, fromEdbInfo.LatestDate)
-		if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
+		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
 			return
 		}
 		if tmpErr == nil {

+ 23 - 41
models/predict_edb_data_calculate_standard_deviation.go

@@ -2,10 +2,11 @@ package models
 
 import (
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
 	"reflect"
 	"strconv"
 	"strings"
@@ -22,17 +23,12 @@ func (obj PredictStandardDeviation) Add(params BatchSaveCalculateBatchParams) (e
 	fromEdbInfo := params.FromEdbInfo
 	edbCode := params.EdbCode
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Add,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -71,12 +67,11 @@ func (obj PredictStandardDeviation) Add(params BatchSaveCalculateBatchParams) (e
 		Calendar:         "",
 	}
 
-	newEdbInfoId, tmpErr := to.Insert(edbInfo)
+	tmpErr := to.Create(edbInfo).Error
 	if tmpErr != nil {
 		err = tmpErr
 		return
 	}
-	edbInfo.EdbInfoId = int(newEdbInfoId)
 
 	//关联关系
 	{
@@ -94,7 +89,7 @@ func (obj PredictStandardDeviation) Add(params BatchSaveCalculateBatchParams) (e
 		calculateMappingItem.FromTag = ""
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
-		_, err = to.Insert(calculateMappingItem)
+		err = to.Create(calculateMappingItem).Error
 		if err != nil {
 			return
 		}
@@ -127,17 +122,12 @@ func (obj PredictStandardDeviation) Edit(params BatchSaveCalculateBatchParams) (
 	latestDateStr = edbInfo.LatestDate
 	latestValue = edbInfo.LatestValue
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Edit,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
@@ -160,7 +150,7 @@ func (obj PredictStandardDeviation) Edit(params BatchSaveCalculateBatchParams) (
 	edbInfo.ClassifyId = req.ClassifyId
 	edbInfo.CalculateFormula = req.Formula
 	edbInfo.ModifyTime = time.Now()
-	_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn")
+	err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 	if err != nil {
 		return
 	}
@@ -188,14 +178,14 @@ func (obj PredictStandardDeviation) Edit(params BatchSaveCalculateBatchParams) (
 
 	//删除,计算指标关联的,基础指标的关联关系
 	sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
 
 	//清空原有数据
 	sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
@@ -218,7 +208,7 @@ func (obj PredictStandardDeviation) Edit(params BatchSaveCalculateBatchParams) (
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
 		}
-		_, err = to.Insert(calculateMappingItem)
+		err = to.Create(calculateMappingItem).Error
 		if err != nil {
 			return
 		}
@@ -242,17 +232,12 @@ func (obj PredictStandardDeviation) Refresh(params RefreshParams) (latestDateStr
 		return
 	}
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Refresh,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -272,7 +257,7 @@ func (obj PredictStandardDeviation) GetSourceName() string {
 	return utils.DATA_SOURCE_NAME_PREDICT_CALCULATE_STANDARD_DEVIATION
 }
 
-func (obj PredictStandardDeviation) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
+func (obj PredictStandardDeviation) refresh(to *gorm.DB, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
 	edbInfoId := edbInfo.EdbInfoId
 	dataTableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
@@ -290,10 +275,7 @@ func (obj PredictStandardDeviation) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo
 	}
 
 	//获取指标所有数据
-	existDataList := make([]*EdbData, 0)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, edbInfo.Source, edbInfo.SubSource)
 	if err != nil {
 		return
 	}
@@ -326,7 +308,7 @@ func (obj PredictStandardDeviation) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo
 			if existVal != 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, currDateStr).Exec()
+				err = to.Exec(sql, saveValue, edbInfoId, currDateStr).Error
 				if err != nil {
 					return
 				}
@@ -354,7 +336,7 @@ func (obj PredictStandardDeviation) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo
 		removeNum := len(removeDateList)
 		if removeNum > 0 {
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, dataTableName)
-			_, err = to.Raw(sql, edbInfo.EdbInfoId, removeDateList).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId, removeDateList).Error
 			if err != nil {
 				fmt.Println(reflect.TypeOf(obj).Name(), " add data ;delete Err", err.Error())
 				err = fmt.Errorf("删除不存在的指标数据失败,Err:" + err.Error())
@@ -365,7 +347,7 @@ func (obj PredictStandardDeviation) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			fmt.Println(reflect.TypeOf(obj).Name(), " add data Err", err.Error())
 			return
@@ -375,7 +357,7 @@ func (obj PredictStandardDeviation) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo
 	//确定实际数据的最终值
 	{
 		finalLast, tmpErr := GetFinalLastByTo(to, edbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo.LatestDate)
-		if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
+		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
 			return
 		}
 		if tmpErr == nil {

+ 23 - 377
models/predict_edb_data_calculate_tbz.go

@@ -2,10 +2,11 @@ package models
 
 import (
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
 	"reflect"
 	"strconv"
 	"strings"
@@ -22,17 +23,12 @@ func (obj PredictTb) Add(params BatchSaveCalculateBatchParams) (edbInfo *EdbInfo
 	fromEdbInfo := params.FromEdbInfo
 	edbCode := params.EdbCode
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Add,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -71,12 +67,11 @@ func (obj PredictTb) Add(params BatchSaveCalculateBatchParams) (edbInfo *EdbInfo
 		Calendar:         "",
 	}
 
-	newEdbInfoId, tmpErr := to.Insert(edbInfo)
+	tmpErr := to.Create(edbInfo).Error
 	if tmpErr != nil {
 		err = tmpErr
 		return
 	}
-	edbInfo.EdbInfoId = int(newEdbInfoId)
 
 	//关联关系
 	{
@@ -94,7 +89,7 @@ func (obj PredictTb) Add(params BatchSaveCalculateBatchParams) (edbInfo *EdbInfo
 		calculateMappingItem.FromTag = ""
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
-		_, err = to.Insert(calculateMappingItem)
+		err = to.Create(calculateMappingItem).Error
 		if err != nil {
 			return
 		}
@@ -129,17 +124,12 @@ func (obj PredictTb) Edit(params BatchSaveCalculateBatchParams) (latestDateStr s
 	latestDateStr = edbInfo.LatestDate
 	latestValue = edbInfo.LatestValue
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Edit,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
@@ -157,7 +147,7 @@ func (obj PredictTb) Edit(params BatchSaveCalculateBatchParams) (latestDateStr s
 	edbInfo.Frequency = req.Frequency
 	edbInfo.ClassifyId = req.ClassifyId
 	edbInfo.ModifyTime = time.Now()
-	_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime", "EdbNameEn", "UnitEn")
+	err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 	if err != nil {
 		return
 	}
@@ -179,14 +169,14 @@ func (obj PredictTb) Edit(params BatchSaveCalculateBatchParams) (latestDateStr s
 	}
 	//删除,计算指标关联的,基础指标的关联关系
 	sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
 
 	// 删除该指标所有的同比数据
 	sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
@@ -209,7 +199,7 @@ func (obj PredictTb) Edit(params BatchSaveCalculateBatchParams) (latestDateStr s
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
 		}
-		_, err = to.Insert(calculateMappingItem)
+		err = to.Create(calculateMappingItem).Error
 		if err != nil {
 			return
 		}
@@ -233,17 +223,12 @@ func (obj PredictTb) Refresh(params RefreshParams) (latestDateStr string, latest
 		return
 	}
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Refresh,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -263,7 +248,7 @@ func (obj PredictTb) GetSourceName() string {
 	return utils.DATA_SOURCE_NAME_PREDICT_CALCULATE_TBZ
 }
 
-func (obj PredictTb) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
+func (obj PredictTb) refresh(to *gorm.DB, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
 	edbInfoId := edbInfo.EdbInfoId
 	dataTableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 
@@ -294,12 +279,7 @@ func (obj PredictTb) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbInfo, edbC
 	latestDateStr = fromEdbInfo.LatestDate
 
 	//获取指标所有数据
-	existDataList := make([]*EdbData, 0)
-	//fmt.Println("dataTableName:", dataTableName)
-
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, edbInfo.Source, edbInfo.SubSource)
 	if err != nil {
 		return
 	}
@@ -340,7 +320,7 @@ func (obj PredictTb) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbInfo, edbC
 			if existStr != val {
 				sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 				sql = fmt.Sprintf(sql, dataTableName)
-				_, err = to.Raw(sql, val, edbInfoId, currentDateStr).Exec()
+				err = to.Exec(sql, val, edbInfoId, currentDateStr).Error
 				if err != nil {
 					return
 				}
@@ -366,7 +346,7 @@ func (obj PredictTb) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbInfo, edbC
 		removeNum := len(removeDateList)
 		if removeNum > 0 {
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, dataTableName)
-			_, err = to.Raw(sql, edbInfo.EdbInfoId, removeDateList).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId, removeDateList).Error
 			if err != nil {
 				fmt.Println(reflect.TypeOf(obj).Name(), " add data ;delete Err", err.Error())
 				err = fmt.Errorf("删除不存在的指标数据失败,Err:" + err.Error())
@@ -378,7 +358,7 @@ func (obj PredictTb) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbInfo, edbC
 	// 批量插入
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			return
 		}
@@ -387,7 +367,7 @@ func (obj PredictTb) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbInfo, edbC
 	//确定实际数据的最终值
 	{
 		finalLast, tmpErr := GetFinalLastByTo(to, edbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo.LatestDate)
-		if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
+		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
 			return
 		}
 		if tmpErr == nil {
@@ -398,337 +378,3 @@ func (obj PredictTb) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbInfo, edbC
 
 	return
 }
-
-// SavePredictCalculateTbz 新增/编辑 预测同比指标
-func SavePredictCalculateTbz(reqEdbInfoId, classifyId int, edbName, frequency, unit, formula string, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error, errMsg string) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
-	defer func() {
-		if err != nil {
-			fmt.Println("AddCalculateTbz,Err:" + err.Error())
-			_ = to.Rollback()
-		} else {
-			_ = to.Commit()
-		}
-	}()
-
-	if reqEdbInfoId <= 0 {
-		edbInfo = &EdbInfo{
-			//EdbInfoId:        0,
-			EdbInfoType:   1,
-			SourceName:    "预测同比",
-			Source:        utils.DATA_SOURCE_PREDICT_CALCULATE_TBZ,
-			EdbCode:       edbCode,
-			EdbName:       edbName,
-			EdbNameSource: edbName,
-			Frequency:     frequency,
-			Unit:          unit,
-			//StartDate:        "",
-			//EndDate:          "",
-			ClassifyId:       classifyId,
-			SysUserId:        sysUserId,
-			SysUserRealName:  sysUserRealName,
-			UniqueCode:       uniqueCode,
-			CreateTime:       time.Now(),
-			ModifyTime:       time.Now(),
-			MinValue:         0,
-			MaxValue:         0,
-			CalculateFormula: formula,
-			EdbType:          2,
-			Sort:             0,
-			MoveType:         0,
-			MoveFrequency:    "",
-			NoUpdate:         0,
-			ServerUrl:        "",
-			EdbNameEn:        "",
-			UnitEn:           "",
-			LatestDate:       "",
-			LatestValue:      0,
-			ChartImage:       "",
-		}
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
-
-		// 添加关联关系
-		{
-			calculateMappingItem := &EdbInfoCalculateMapping{
-				EdbInfoCalculateMappingId: 0,
-				EdbInfoId:                 edbInfo.EdbInfoId,
-				Source:                    edbInfo.Source,
-				SourceName:                edbInfo.SourceName,
-				EdbCode:                   edbCode,
-				FromEdbInfoId:             fromEdbInfo.EdbInfoId,
-				FromEdbCode:               fromEdbInfo.EdbCode,
-				FromEdbName:               fromEdbInfo.EdbName,
-				FromSource:                fromEdbInfo.Source,
-				FromSourceName:            fromEdbInfo.SourceName,
-				FromTag:                   "",
-				Sort:                      1,
-				CreateTime:                time.Now(),
-				ModifyTime:                time.Now(),
-			}
-			_, err = to.Insert(calculateMappingItem)
-			if err != nil {
-				return
-			}
-		}
-
-	} else {
-		edbInfo, err = GetEdbInfoById(reqEdbInfoId)
-		if err != nil {
-			if err.Error() == utils.ErrNoRow() {
-				errMsg = `获取指标信息失败`
-			}
-			return
-		}
-		if edbInfo.EdbInfoType != 1 {
-			errMsg = `该指标不是预测指标`
-			err = errors.New(errMsg)
-			return
-		}
-		latestDateStr = edbInfo.LatestDate
-		latestValue = edbInfo.LatestValue
-		//修改指标信息
-		edbInfo.EdbName = edbName
-		edbInfo.EdbNameSource = edbName
-		edbInfo.Frequency = frequency
-		edbInfo.Unit = unit
-		edbInfo.ClassifyId = classifyId
-		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime")
-		if err != nil {
-			return
-		}
-
-		//判断计算指标是否被更换
-		var existCondition string
-		var existPars []interface{}
-		existCondition += " AND edb_info_id=? AND from_edb_info_id=? "
-		existPars = append(existPars, edbInfo.EdbInfoId, fromEdbInfo.EdbInfoId)
-
-		var count int
-		count, err = GetEdbInfoCalculateCountByCondition(existCondition, existPars)
-		if err != nil {
-			err = errors.New("判断指标是否改变失败,Err:" + err.Error())
-			return
-		}
-		if count > 0 { // 指标未被替换,无需重新计算
-			return
-		}
-		//删除,计算指标关联的,基础指标的关联关系
-		sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
-		if err != nil {
-			return
-		}
-
-		// 删除该指标所有的同比数据
-		dataTableName := GetEdbDataTableName(utils.DATA_SOURCE_PREDICT_CALCULATE_TBZ, utils.DATA_SUB_SOURCE_EDB)
-		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
-		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
-		_, err = to.Raw(deleteSql, edbInfo.EdbInfoId).Exec()
-		if err != nil {
-			return
-		}
-	}
-
-	edbInfoIdStr := strconv.Itoa(edbInfo.EdbInfoId)
-	// 获取源指标数据
-	dataList, err := GetPredictEdbDataListAll(fromEdbInfo, 0)
-	if err != nil {
-		return
-	}
-
-	latestDateStr = fromEdbInfo.LatestDate
-	// 计算数据
-	var dateArr []string
-	dataMap := make(map[string]*EdbInfoSearchData)
-	for _, v := range dataList {
-		dateArr = append(dateArr, v.DataTime)
-		dataMap[v.DataTime] = v
-	}
-
-	addSql := ` INSERT INTO edb_data_predict_calculate_tbz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, av := range dateArr {
-		//fmt.Println(ak, av)
-		currentItem := dataMap[av]
-		if currentItem != nil {
-			//当前日期
-			currentDate, tmpErr := time.ParseInLocation(utils.FormatDate, av, time.Local)
-			if tmpErr != nil {
-				err = tmpErr
-				return
-			}
-			//上一年的日期
-			preDate := currentDate.AddDate(-1, 0, 0)
-			preDateStr := preDate.Format(utils.FormatDate)
-			if findItem, ok := dataMap[preDateStr]; ok { //上一年同期找到
-				//dataTime, _ := time.ParseInLocation(utils.FormatDate, date, time.Local)
-				if _, ok := existMap[edbCode+av]; !ok {
-					timestamp := currentDate.UnixNano() / 1e6
-					timestampStr := fmt.Sprintf("%d", timestamp)
-					val := TbzDiv(currentItem.Value, findItem.Value)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-					isAdd = true
-					utils.FileLog.Info("同期找到:" + av + ";" + preDateStr)
-
-					// 实际数据的值
-					if fromEdbInfo.LatestDate == av {
-						latestValueDecimal, tmpErr := decimal.NewFromString(val)
-						if tmpErr != nil {
-							return
-						}
-						latestValue, _ = latestValueDecimal.Truncate(4).Float64() //保留4位小数
-					}
-				}
-				existMap[edbCode+av] = av
-			} else {
-				if fromEdbInfo.Frequency == "月度" { //向上和向下,各找一个月
-					nextDateDay := preDate
-					preDateDay := preDate
-					for i := 0; i <= 35; i++ {
-						nextDateDayStr := nextDateDay.Format(utils.FormatDate)
-						if findItem, ok := dataMap[nextDateDayStr]; ok { //上一年同期->下一个月找到
-							if _, ok := existMap[edbCode+av]; !ok {
-								timestamp := currentDate.UnixNano() / 1e6
-								timestampStr := fmt.Sprintf("%d", timestamp)
-								val := TbzDiv(currentItem.Value, findItem.Value)
-								addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-								isAdd = true
-
-								// 实际数据的值
-								if fromEdbInfo.LatestDate == av {
-									latestValueDecimal, tmpErr := decimal.NewFromString(val)
-									if tmpErr != nil {
-										return
-									}
-									latestValue, _ = latestValueDecimal.Truncate(4).Float64() //保留4位小数
-								}
-							}
-							existMap[edbCode+av] = av
-							break
-						} else {
-							preDateDayStr := preDateDay.Format(utils.FormatDate)
-							if findItem, ok := dataMap[preDateDayStr]; ok { //上一年同期->上一个月找到
-								if _, ok := existMap[edbCode+av]; !ok {
-									timestamp := currentDate.UnixNano() / 1e6
-									timestampStr := fmt.Sprintf("%d", timestamp)
-									val := TbzDiv(currentItem.Value, findItem.Value)
-
-									addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-									isAdd = true
-
-									// 实际数据的值
-									if fromEdbInfo.LatestDate == av {
-										latestValueDecimal, tmpErr := decimal.NewFromString(val)
-										if tmpErr != nil {
-											return
-										}
-										latestValue, _ = latestValueDecimal.Truncate(4).Float64() //保留4位小数
-									}
-								}
-								existMap[edbCode+av] = av
-								break
-							}
-						}
-						nextDateDay = nextDateDay.AddDate(0, 0, 1)
-						preDateDay = preDateDay.AddDate(0, 0, -1)
-					}
-				} else if fromEdbInfo.Frequency == "季度" || fromEdbInfo.Frequency == "年度" {
-					if findItem, ok := dataMap[preDateStr]; ok { //上一年同期->下一个月找到
-						if _, ok := existMap[edbCode+av]; !ok {
-							timestamp := currentDate.UnixNano() / 1e6
-							timestampStr := fmt.Sprintf("%d", timestamp)
-							val := TbzDiv(currentItem.Value, findItem.Value)
-
-							addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-							isAdd = true
-
-							// 实际数据的值
-							if fromEdbInfo.LatestDate == av {
-								latestValueDecimal, tmpErr := decimal.NewFromString(val)
-								if tmpErr != nil {
-									return
-								}
-								latestValue, _ = latestValueDecimal.Truncate(4).Float64() //保留4位小数
-							}
-						}
-						existMap[edbCode+av] = av
-						break
-					}
-				} else {
-					nextDateDay := preDate
-					preDateDay := preDate
-
-					for i := 0; i < 35; i++ {
-						nextDateDayStr := nextDateDay.Format(utils.FormatDate)
-						if findItem, ok := dataMap[nextDateDayStr]; ok { //上一年同期->下一个月找到
-							if _, ok := existMap[edbCode+av]; !ok {
-								timestamp := currentDate.UnixNano() / 1e6
-								timestampStr := fmt.Sprintf("%d", timestamp)
-								val := TbzDiv(currentItem.Value, findItem.Value)
-								addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-								isAdd = true
-
-								// 实际数据的值
-								if fromEdbInfo.LatestDate == av {
-									latestValueDecimal, tmpErr := decimal.NewFromString(val)
-									if tmpErr != nil {
-										return
-									}
-									latestValue, _ = latestValueDecimal.Truncate(4).Float64() //保留4位小数
-								}
-							}
-							existMap[edbCode+av] = av
-							break
-						} else {
-							preDateDayStr := preDateDay.Format(utils.FormatDate)
-							if findItem, ok := dataMap[preDateDayStr]; ok { //上一年同期->上一个月找到
-								if _, ok := existMap[edbCode+av]; !ok {
-									timestamp := currentDate.UnixNano() / 1e6
-									timestampStr := fmt.Sprintf("%d", timestamp)
-									val := TbzDiv(currentItem.Value, findItem.Value)
-									addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-									isAdd = true
-
-									// 实际数据的值
-									if fromEdbInfo.LatestDate == av {
-										latestValueDecimal, tmpErr := decimal.NewFromString(val)
-										if tmpErr != nil {
-											return
-										}
-										latestValue, _ = latestValueDecimal.Truncate(4).Float64() //保留4位小数
-									}
-								}
-								existMap[edbCode+av] = av
-								break
-							} else {
-								//fmt.Println("pre not find:", preDateStr, "i:", i)
-							}
-						}
-						nextDateDay = nextDateDay.AddDate(0, 0, 1)
-						preDateDay = preDateDay.AddDate(0, 0, -1)
-					}
-				}
-			}
-		}
-	}
-
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
-		if err != nil {
-			return
-		}
-	}
-	return
-}

+ 24 - 37
models/predict_edb_data_calculate_tcz.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"
 	"github.com/shopspring/decimal"
 	"strconv"
 	"strings"
@@ -13,17 +13,12 @@ import (
 
 // SavePredictCalculateTcz 同差值
 func SavePredictCalculateTcz(reqEdbInfoId, classifyId int, edbName, frequency, unit, formula string, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName, lang string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error, errMsg string) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("AddCalculateTcz,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	fmt.Println("reqEdbInfoId:", reqEdbInfoId)
@@ -62,12 +57,11 @@ func SavePredictCalculateTcz(reqEdbInfoId, classifyId int, edbName, frequency, u
 			LatestValue:      0,
 			ChartImage:       "",
 		}
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
+		tmpErr := to.Create(edbInfo).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
 
 		// 添加关联关系
 		{
@@ -87,7 +81,7 @@ func SavePredictCalculateTcz(reqEdbInfoId, classifyId int, edbName, frequency, u
 				CreateTime:                time.Now(),
 				ModifyTime:                time.Now(),
 			}
-			_, err = to.Insert(calculateMappingItem)
+			err = to.Create(calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -121,7 +115,7 @@ func SavePredictCalculateTcz(reqEdbInfoId, classifyId int, edbName, frequency, u
 		edbInfo.Frequency = frequency
 		edbInfo.ClassifyId = classifyId
 		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime", "EdbNameEn", "UnitEn")
+		err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 		if err != nil {
 			return
 		}
@@ -144,7 +138,7 @@ func SavePredictCalculateTcz(reqEdbInfoId, classifyId int, edbName, frequency, u
 
 		//删除,计算指标关联的,基础指标的关联关系
 		sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-		_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(sql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			return
 		}
@@ -154,7 +148,7 @@ func SavePredictCalculateTcz(reqEdbInfoId, classifyId int, edbName, frequency, u
 		fmt.Println("dataTableName:", dataTableName)
 		deleteSql := ` DELETE FROM %s WHERE edb_info_id=? `
 		deleteSql = fmt.Sprintf(deleteSql, dataTableName)
-		_, err = to.Raw(deleteSql, edbInfo.EdbInfoId).Exec()
+		err = to.Exec(deleteSql, edbInfo.EdbInfoId).Error
 		if err != nil {
 			return
 		}
@@ -349,7 +343,7 @@ func SavePredictCalculateTcz(reqEdbInfoId, classifyId int, edbName, frequency, u
 	}
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			return
 		}
@@ -359,17 +353,12 @@ func SavePredictCalculateTcz(reqEdbInfoId, classifyId int, edbName, frequency, u
 
 // RefreshAllPredictCalculateTcz 刷新全部同差值数据
 func RefreshAllPredictCalculateTcz(edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("RefreshAllCalculateTcz,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -392,12 +381,10 @@ func RefreshAllPredictCalculateTcz(edbInfoId, source, subSource int, fromEdbInfo
 		dateArr = append(dateArr, v.DataTime)
 		dataMap[v.DataTime] = v
 	}
-	//获取指标所有数据
-	existDataList := make([]*EdbData, 0)
 	dataTableName := GetEdbDataTableName(source, subSource)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&existDataList)
+
+	//获取指标所有数据
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -455,7 +442,7 @@ func RefreshAllPredictCalculateTcz(edbInfoId, source, subSource int, fromEdbInfo
 					if existStr != val {
 						sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 						sql = fmt.Sprintf(sql, dataTableName)
-						_, err = o.Raw(sql, val, edbInfoId, av).Exec()
+						err = to.Exec(sql, val, edbInfoId, av).Error
 						if err != nil {
 							return
 						}
@@ -498,7 +485,7 @@ func RefreshAllPredictCalculateTcz(edbInfoId, source, subSource int, fromEdbInfo
 								if existStr != val {
 									sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 									sql = fmt.Sprintf(sql, dataTableName)
-									_, err = o.Raw(sql, val, edbInfoId, av).Exec()
+									err = to.Exec(sql, val, edbInfoId, av).Error
 									if err != nil {
 										return
 									}
@@ -538,7 +525,7 @@ func RefreshAllPredictCalculateTcz(edbInfoId, source, subSource int, fromEdbInfo
 									if existStr != val {
 										sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 										sql = fmt.Sprintf(sql, dataTableName)
-										_, err = o.Raw(sql, val, edbInfoId, av).Exec()
+										err = to.Exec(sql, val, edbInfoId, av).Error
 										if err != nil {
 											return
 										}
@@ -579,7 +566,7 @@ func RefreshAllPredictCalculateTcz(edbInfoId, source, subSource int, fromEdbInfo
 							if existStr != val {
 								sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 								sql = fmt.Sprintf(sql, dataTableName)
-								_, err = o.Raw(sql, val, edbInfoId, av).Exec()
+								err = to.Exec(sql, val, edbInfoId, av).Error
 								if err != nil {
 									return
 								}
@@ -622,7 +609,7 @@ func RefreshAllPredictCalculateTcz(edbInfoId, source, subSource int, fromEdbInfo
 								if existStr != val {
 									sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 									sql = fmt.Sprintf(sql, dataTableName)
-									_, err = o.Raw(sql, val, edbInfoId, av).Exec()
+									err = to.Exec(sql, val, edbInfoId, av).Error
 									if err != nil {
 										return
 									}
@@ -661,7 +648,7 @@ func RefreshAllPredictCalculateTcz(edbInfoId, source, subSource int, fromEdbInfo
 									if existStr != val {
 										sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 										sql = fmt.Sprintf(sql, dataTableName)
-										_, err = o.Raw(sql, val, edbInfoId, av).Exec()
+										err = to.Exec(sql, val, edbInfoId, av).Error
 										if err != nil {
 											return
 										}
@@ -688,7 +675,7 @@ func RefreshAllPredictCalculateTcz(edbInfoId, source, subSource int, fromEdbInfo
 		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.Exec(sql, edbInfoId).Error
 		if err != nil {
 			err = fmt.Errorf("删除计算失败的计算指标数据失败,Err:" + err.Error())
 			return
@@ -696,7 +683,7 @@ func RefreshAllPredictCalculateTcz(edbInfoId, source, subSource int, fromEdbInfo
 	}
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			return
 		}

+ 26 - 38
models/predict_edb_data_calculate_time_shift.go

@@ -2,9 +2,11 @@ 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"
+
 	"github.com/shopspring/decimal"
 	"strconv"
 	"strings"
@@ -13,18 +15,12 @@ import (
 
 // SavePredictCalculateTimeShift 时间移位
 func SavePredictCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName, lang string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
-
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("SavePredictCalculateTimeShift,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	if req.EdbInfoId <= 0 {
@@ -50,12 +46,12 @@ func SavePredictCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInf
 		edbInfo.EdbNameEn = req.EdbName
 		edbInfo.UnitEn = req.Unit
 		edbInfo.Sort = GetAddEdbMaxSortByClassifyId(req.ClassifyId, utils.PREDICT_EDB_INFO_TYPE)
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
+		tmpErr := to.Create(edbInfo).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return
 		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
+
 		//关联关系
 		{
 			calculateMappingItem := new(EdbInfoCalculateMapping)
@@ -72,7 +68,7 @@ func SavePredictCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInf
 			calculateMappingItem.FromTag = ""
 			calculateMappingItem.Source = edbInfo.Source
 			calculateMappingItem.SourceName = edbInfo.SourceName
-			_, err = to.Insert(calculateMappingItem)
+			err = to.Create(calculateMappingItem).Error
 			if err != nil {
 				return
 			}
@@ -102,7 +98,7 @@ func SavePredictCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInf
 		edbInfo.MoveFrequency = req.MoveFrequency
 		edbInfo.CalculateFormula = req.Formula
 		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "MoveType", "MoveFrequency", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn")
+		err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "MoveType", "MoveFrequency", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 		if err != nil {
 			return
 		}
@@ -125,7 +121,7 @@ func SavePredictCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInf
 			if count <= 0 {
 				//删除,计算指标关联的,基础指标的关联关系
 				sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-				_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+				err = to.Exec(sql, edbInfo.EdbInfoId).Error
 				if err != nil {
 					err = errors.New("删除计算指标关联关系失败,Err:" + err.Error())
 					return
@@ -148,7 +144,7 @@ func SavePredictCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInf
 						CreateTime:                time.Now(),
 						ModifyTime:                time.Now(),
 					}
-					_, err = to.Insert(calculateMappingItem)
+					err = to.Create(calculateMappingItem).Error
 					if err != nil {
 						return
 					}
@@ -157,7 +153,7 @@ func SavePredictCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInf
 
 			//清空原有数据
 			sql := ` DELETE FROM edb_data_predict_calculate_time_shift WHERE edb_info_id = ? `
-			_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId).Error
 			if err != nil {
 				return
 			}
@@ -174,19 +170,14 @@ func SavePredictCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInf
 	return
 }
 
-// refreshAllPredictCalculateTimeShift 刷新所有时间移位数据
+// RefreshAllPredictCalculateTimeShift 刷新所有时间移位数据
 func RefreshAllPredictCalculateTimeShift(edbInfoId, source, subSource, formulaInt, moveType int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, moveFrequency string) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("refreshAllPredictCalculateTimeShift,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -196,7 +187,7 @@ func RefreshAllPredictCalculateTimeShift(edbInfoId, source, subSource, formulaIn
 }
 
 // refreshAllPredictCalculateTimeShift 刷新所有时间移位数据
-func refreshAllPredictCalculateTimeShift(to orm.TxOrmer, edbInfoId, source, subSource, formulaInt, moveType int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, moveFrequency string) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateTimeShift(to *gorm.DB, edbInfoId, source, subSource, formulaInt, moveType int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate, moveFrequency string) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	dataList, err := GetPredictEdbDataListAllByStartDate(fromEdbInfo, 0, startDate)
 	if err != nil {
@@ -231,14 +222,11 @@ func refreshAllPredictCalculateTimeShift(to orm.TxOrmer, edbInfoId, source, subS
 		dataMap[v.DataTime] = v
 	}
 
-	fmt.Println("source:", source)
-	//获取指标所有数据
-	existDataList := make([]*EdbData, 0)
 	dataTableName := GetEdbDataTableName(source, subSource)
-	fmt.Println("dataTableName:", dataTableName)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
+	//fmt.Println("source:", source)
+
+	//获取指标所有数据
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
@@ -248,7 +236,7 @@ func refreshAllPredictCalculateTimeShift(to orm.TxOrmer, edbInfoId, source, subS
 	for _, v := range existDataList {
 		existDataMap[v.DataTime] = v.Value
 	}
-	fmt.Println("existDataMap:", existDataMap)
+	//fmt.Println("existDataMap:", existDataMap)
 	addSql := ` INSERT INTO edb_data_predict_calculate_time_shift(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
 	var isAdd bool
 
@@ -279,9 +267,9 @@ func refreshAllPredictCalculateTimeShift(to orm.TxOrmer, edbInfoId, source, subS
 				}
 				existStr := existValDecimal.String()
 				if existStr != valStr {
-					sql = ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+					sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 					sql = fmt.Sprintf(sql, dataTableName)
-					_, err = to.Raw(sql, valStr, edbInfoId, newDate.Format(utils.FormatDate)).Exec()
+					err = to.Exec(sql, valStr, edbInfoId, newDate.Format(utils.FormatDate)).Error
 					if err != nil {
 						return
 					}
@@ -296,7 +284,7 @@ func refreshAllPredictCalculateTimeShift(to orm.TxOrmer, edbInfoId, source, subS
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			return
 		}

+ 14 - 274
models/predict_edb_data_calculate_zjpj.go

@@ -2,16 +2,17 @@ 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"
 	"strings"
 	"time"
 )
 
 // EdbDataPredictCalculateZjpj 直接拼接数据结构体
 type EdbDataPredictCalculateZjpj struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
+	EdbDataId     int `gorm:"primaryKey;autoIncrement;column:edb_data_id"`
 	EdbInfoId     int
 	EdbCode       string
 	DataTime      string
@@ -22,275 +23,14 @@ type EdbDataPredictCalculateZjpj struct {
 	DataTimestamp int64
 }
 
-// SavePredictCalculateZjpj 新增直接拼接数据
-func SavePredictCalculateZjpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, secondEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string) (edbInfo *EdbInfo, latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
-	defer func() {
-		if err != nil {
-			fmt.Println("SavePredictCalculateZjpj,Err:" + err.Error())
-			_ = to.Rollback()
-		} else {
-			_ = to.Commit()
-		}
-	}()
-	var existItemA, existItemB *EdbInfoCalculateMapping
-	if req.EdbInfoId <= 0 {
-		edbInfo = &EdbInfo{
-			EdbInfoType:      1,
-			SourceName:       "预测直接拼接",
-			Source:           utils.DATA_SOURCE_PREDICT_CALCULATE_ZJPJ,
-			EdbCode:          edbCode,
-			EdbName:          req.EdbName,
-			EdbNameSource:    req.EdbName,
-			Frequency:        req.Frequency,
-			Unit:             req.Unit,
-			StartDate:        firstEdbInfo.StartDate,
-			EndDate:          firstEdbInfo.EndDate,
-			ClassifyId:       req.ClassifyId,
-			SysUserId:        sysUserId,
-			SysUserRealName:  sysUserRealName,
-			UniqueCode:       uniqueCode,
-			CreateTime:       time.Now(),
-			ModifyTime:       time.Now(),
-			CalculateFormula: req.Formula,
-			EdbType:          2,
-		}
-		newEdbInfoId, tmpErr := to.Insert(edbInfo)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		edbInfo.EdbInfoId = int(newEdbInfoId)
-		//关联关系
-		//第一个指标
-		{
-			existItemA = &EdbInfoCalculateMapping{
-				EdbInfoCalculateMappingId: 0,
-				EdbInfoId:                 edbInfo.EdbInfoId,
-				Source:                    edbInfo.Source,
-				SourceName:                edbInfo.SourceName,
-				EdbCode:                   edbInfo.EdbCode,
-				FromEdbInfoId:             firstEdbInfo.EdbInfoId,
-				FromEdbCode:               firstEdbInfo.EdbCode,
-				FromEdbName:               firstEdbInfo.EdbName,
-				FromSource:                firstEdbInfo.Source,
-				FromSourceName:            firstEdbInfo.SourceName,
-				FromTag:                   "A",
-				Sort:                      1,
-				CreateTime:                time.Now(),
-				ModifyTime:                time.Now(),
-			}
-			insertId, tmpErr := to.Insert(existItemA)
-			if tmpErr != nil {
-				err = tmpErr
-				return
-			}
-			existItemA.EdbInfoCalculateMappingId = int(insertId)
-		}
-
-		//第二个指标
-		{
-			existItemB = &EdbInfoCalculateMapping{
-				EdbInfoCalculateMappingId: 0,
-				EdbInfoId:                 edbInfo.EdbInfoId,
-				Source:                    edbInfo.Source,
-				SourceName:                edbInfo.SourceName,
-				EdbCode:                   edbInfo.EdbCode,
-				FromEdbInfoId:             secondEdbInfo.EdbInfoId,
-				FromEdbCode:               secondEdbInfo.EdbCode,
-				FromEdbName:               secondEdbInfo.EdbName,
-				FromSource:                secondEdbInfo.Source,
-				FromSourceName:            secondEdbInfo.SourceName,
-				FromTag:                   "B",
-				Sort:                      1,
-				CreateTime:                time.Now(),
-				ModifyTime:                time.Now(),
-			}
-			insertId, tmpErr := to.Insert(existItemB)
-			if tmpErr != nil {
-				err = tmpErr
-				return
-			}
-			existItemB.EdbInfoCalculateMappingId = int(insertId)
-		}
-	} else {
-		edbInfo, err = GetEdbInfoById(req.EdbInfoId)
-		if err != nil {
-			return
-		}
-		latestDateStr = edbInfo.LatestDate
-		latestValue = edbInfo.LatestValue
-
-		nowEdbInfo := *edbInfo // 现在的指标信息
-
-		//修改指标信息
-		edbInfo.EdbName = req.EdbName
-		edbInfo.EdbNameSource = req.EdbName
-		edbInfo.Frequency = req.Frequency
-		edbInfo.Unit = req.Unit
-		edbInfo.ClassifyId = req.ClassifyId
-		edbInfo.CalculateFormula = req.Formula
-		edbInfo.ModifyTime = time.Now()
-		_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime")
-		if err != nil {
-			return
-		}
-
-		var existCondition string
-		var existPars []interface{}
-		existCondition += " AND edb_info_id=? "
-		existPars = append(existPars, edbInfo.EdbInfoId)
-
-		//查询出所有的关联指标
-		var existList []*EdbInfoCalculateMapping
-		existList, err = GetEdbInfoCalculateListByCondition(existCondition, existPars)
-		if err != nil {
-			err = fmt.Errorf("判断指标是否改变失败,Err:" + err.Error())
-			return
-		}
-
-		for _, existItem := range existList {
-			if existItem.FromTag == "A" {
-				existItemA = existItem
-			} else if existItem.FromTag == "B" {
-				existItemB = existItem
-			}
-		}
-		if existItemA == nil {
-			err = errors.New("原拼接日期之前的指标不存在")
-			return
-		}
-		if existItemB == nil {
-			err = errors.New("原拼接日期之后的指标不存在")
-			return
-		}
-
-		// 是否需要删除数据重新计算
-		isNeedCalculateData := false
-
-		// 如果截止日期变更,那么需要重新计算
-		if req.Formula != nowEdbInfo.CalculateFormula {
-			isNeedCalculateData = true
-		}
-		//第一个指标数据
-		{
-			// 如果指标变了,那么需要删除关系,并重新计算
-			if existItemA.FromEdbInfoId != firstEdbInfo.EdbInfoId {
-				//删除之前的A指标关联关系
-				sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? and from_edb_info_id = ?`
-				_, err = to.Raw(sql, edbInfo.EdbInfoId, existItemA.FromEdbInfoId).Exec()
-				if err != nil {
-					err = fmt.Errorf("删除拼接日期之前的指标关联关系失败,Err:" + err.Error())
-					return
-				}
-			}
-		}
-
-		//第二个指标数据
-		{
-			// 如果指标变了,那么需要删除关系,并重新计算
-			if existItemB.FromEdbInfoId != secondEdbInfo.EdbInfoId {
-				//删除之前的B指标关联关系
-				sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? and from_edb_info_id = ?`
-				_, err = to.Raw(sql, edbInfo.EdbInfoId, existItemB.FromEdbInfoId).Exec()
-				if err != nil {
-					err = fmt.Errorf("删除拼接日期之后的指标关联关系失败,Err:" + err.Error())
-					return
-				}
-			}
-		}
-		if existItemA.FromEdbInfoId != firstEdbInfo.EdbInfoId {
-			//添加新的指标关系
-			{
-				existItemA = &EdbInfoCalculateMapping{
-					EdbInfoCalculateMappingId: 0,
-					EdbInfoId:                 edbInfo.EdbInfoId,
-					Source:                    edbInfo.Source,
-					SourceName:                edbInfo.SourceName,
-					EdbCode:                   edbInfo.EdbCode,
-					FromEdbInfoId:             firstEdbInfo.EdbInfoId,
-					FromEdbCode:               firstEdbInfo.EdbCode,
-					FromEdbName:               firstEdbInfo.EdbName,
-					FromSource:                firstEdbInfo.Source,
-					FromSourceName:            firstEdbInfo.SourceName,
-					FromTag:                   "A",
-					Sort:                      1,
-					CreateTime:                time.Now(),
-					ModifyTime:                time.Now(),
-				}
-				insertId, tmpErr := to.Insert(existItemA)
-				if tmpErr != nil {
-					err = tmpErr
-					return
-				}
-				existItemA.EdbInfoCalculateMappingId = int(insertId)
-
-				isNeedCalculateData = true
-			}
-		}
-
-		if existItemB.FromEdbInfoId != secondEdbInfo.EdbInfoId {
-			// 添加新的指标关联关系
-			existItemB = &EdbInfoCalculateMapping{
-				EdbInfoCalculateMappingId: 0,
-				EdbInfoId:                 edbInfo.EdbInfoId,
-				Source:                    edbInfo.Source,
-				SourceName:                edbInfo.SourceName,
-				EdbCode:                   edbInfo.EdbCode,
-				FromEdbInfoId:             secondEdbInfo.EdbInfoId,
-				FromEdbCode:               secondEdbInfo.EdbCode,
-				FromEdbName:               secondEdbInfo.EdbName,
-				FromSource:                secondEdbInfo.Source,
-				FromSourceName:            secondEdbInfo.SourceName,
-				FromTag:                   "B",
-				Sort:                      2,
-				CreateTime:                time.Now(),
-				ModifyTime:                time.Now(),
-			}
-			insertId, tmpErr := to.Insert(existItemB)
-			if tmpErr != nil {
-				err = tmpErr
-				return
-			}
-			existItemB.EdbInfoCalculateMappingId = int(insertId)
-
-			isNeedCalculateData = true
-		}
-		// 如果需要重新计算,那么先删除所有的指标数据,然后再重新计算
-		if isNeedCalculateData {
-			// 删除之前所有的指标数据
-			tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
-			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? `, tableName)
-			_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
-			if err != nil {
-				err = fmt.Errorf("删除历史数据失败,Err:" + err.Error())
-				return
-			}
-		} else {
-			return
-		}
-	}
-
-	//拼接数据
-	latestDateStr, latestValue, err = refreshAllPredictCalculateZjpj(to, edbInfo, firstEdbInfo, secondEdbInfo)
-
-	return
-}
-
 // RefreshAllPredictCalculateZjpj 刷新所有 直接拼接 数据
 func RefreshAllPredictCalculateZjpj(edbInfo *EdbInfo) (latestDateStr string, latestValue float64, err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			fmt.Println("refreshAllPredictCalculateZjpj,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	//查询关联指标信息
@@ -339,11 +79,11 @@ func RefreshAllPredictCalculateZjpj(edbInfo *EdbInfo) (latestDateStr string, lat
 }
 
 // refreshAllPredictCalculateZjpj 刷新所有 直接拼接 数据
-func refreshAllPredictCalculateZjpj(to orm.TxOrmer, edbInfo, firstEdbInfo, secondEdbInfo *EdbInfo) (latestDateStr string, latestValue float64, err error) {
+func refreshAllPredictCalculateZjpj(to *gorm.DB, edbInfo, firstEdbInfo, secondEdbInfo *EdbInfo) (latestDateStr string, latestValue float64, err error) {
 	//查询当前指标现有的数据
 	var dataList []*EdbDataPredictCalculateZjpj
 	sql := ` SELECT * FROM edb_data_predict_calculate_zjpj WHERE edb_info_id=? ORDER BY data_time DESC `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).QueryRows(&dataList)
+	err = to.Raw(sql, edbInfo.EdbInfoId).Find(&dataList).Error
 	if err != nil {
 		return
 	}
@@ -390,7 +130,7 @@ func refreshAllPredictCalculateZjpj(to orm.TxOrmer, edbInfo, firstEdbInfo, secon
 				if edbData.Value != v.Value {
 					//更新指标数据
 					edbData.Value = v.Value
-					_, _ = to.Update(edbData, "Value")
+					_ = to.Model(edbData).Select([]string{"Value"}).Updates(edbData).Error
 				}
 			} else {
 				//时间戳
@@ -443,7 +183,7 @@ func refreshAllPredictCalculateZjpj(to orm.TxOrmer, edbInfo, firstEdbInfo, secon
 					//更新指标数据
 					edbData.Value = v.Value
 					edbData.ModifyTime = time.Now()
-					_, tmpErr := to.Update(edbData, "Value", "ModifyTime")
+					tmpErr := to.Model(edbData).Select([]string{"Value", "ModifyTime"}).Updates(edbData).Error
 					if tmpErr != nil {
 						fmt.Println("tmpErr:", tmpErr)
 						err = tmpErr
@@ -477,13 +217,13 @@ func refreshAllPredictCalculateZjpj(to orm.TxOrmer, edbInfo, firstEdbInfo, secon
 			removeDateList = append(removeDateList, dateTime)
 		}
 		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 = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId).Error
 			if err != nil {
 				err = fmt.Errorf("删除不存在的直接拼接指标数据失败,Err:" + err.Error())
 				return
@@ -493,7 +233,7 @@ func refreshAllPredictCalculateZjpj(to orm.TxOrmer, edbInfo, firstEdbInfo, secon
 
 	//数据入库
 	if len(addDataList) > 0 {
-		_, tmpErr := to.InsertMulti(len(addDataList), addDataList)
+		tmpErr := to.CreateInBatches(addDataList, 500).Error
 		if tmpErr != nil {
 			err = tmpErr
 			return

+ 24 - 40
models/predict_edb_data_calculate_zsxy.go

@@ -2,9 +2,11 @@ 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"
+
 	"github.com/shopspring/decimal"
 	"reflect"
 	"strconv"
@@ -28,17 +30,12 @@ func (obj PredictExponentialSmoothing) Add(params BatchSaveCalculateBatchParams)
 		return
 	}
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Add,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -76,12 +73,11 @@ func (obj PredictExponentialSmoothing) Add(params BatchSaveCalculateBatchParams)
 		Calendar:         "",
 	}
 
-	newEdbInfoId, tmpErr := to.Insert(edbInfo)
+	tmpErr := to.Create(edbInfo).Error
 	if tmpErr != nil {
 		err = tmpErr
 		return
 	}
-	edbInfo.EdbInfoId = int(newEdbInfoId)
 
 	//关联关系
 	{
@@ -99,7 +95,7 @@ func (obj PredictExponentialSmoothing) Add(params BatchSaveCalculateBatchParams)
 		calculateMappingItem.FromTag = ""
 		calculateMappingItem.Source = edbInfo.Source
 		calculateMappingItem.SourceName = edbInfo.SourceName
-		_, err = to.Insert(calculateMappingItem)
+		err = to.Create(calculateMappingItem).Error
 		if err != nil {
 			return
 		}
@@ -119,17 +115,13 @@ func (obj PredictExponentialSmoothing) Edit(params BatchSaveCalculateBatchParams
 	latestDateStr = edbInfo.LatestDate
 	latestValue = edbInfo.LatestValue
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
+			to.Rollback()
 			fmt.Println(reflect.TypeOf(obj).Name(), ";Edit,Err:"+err.Error())
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 	tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
@@ -152,7 +144,7 @@ func (obj PredictExponentialSmoothing) Edit(params BatchSaveCalculateBatchParams
 	edbInfo.ClassifyId = req.ClassifyId
 	edbInfo.CalculateFormula = req.Formula
 	edbInfo.ModifyTime = time.Now()
-	_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn")
+	err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn"}).Updates(edbInfo).Error
 	if err != nil {
 		return
 	}
@@ -178,14 +170,14 @@ func (obj PredictExponentialSmoothing) Edit(params BatchSaveCalculateBatchParams
 
 	//删除,计算指标关联的,基础指标的关联关系
 	sql := ` DELETE FROM edb_info_calculate_mapping WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
 
 	//清空原有数据
 	sql = ` DELETE FROM ` + tableName + ` WHERE edb_info_id = ? `
-	_, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
+	err = to.Exec(sql, edbInfo.EdbInfoId).Error
 	if err != nil {
 		return
 	}
@@ -208,7 +200,7 @@ func (obj PredictExponentialSmoothing) Edit(params BatchSaveCalculateBatchParams
 			CreateTime:                time.Now(),
 			ModifyTime:                time.Now(),
 		}
-		_, err = to.Insert(calculateMappingItem)
+		err = to.Create(calculateMappingItem).Error
 		if err != nil {
 			return
 		}
@@ -231,17 +223,12 @@ func (obj PredictExponentialSmoothing) Refresh(params RefreshParams) (latestDate
 		return
 	}
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
-			_ = to.Rollback()
-			fmt.Println(reflect.TypeOf(obj).Name(), ";Refresh,Err:"+err.Error())
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -260,7 +247,7 @@ func (obj PredictExponentialSmoothing) GetSourceName() string {
 	return utils.DATA_SOURCE_NAME_PREDICT_CALCULATE_ZSXY
 }
 
-func (obj PredictExponentialSmoothing) refresh(to orm.TxOrmer, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error, errMsg string) {
+func (obj PredictExponentialSmoothing) refresh(to *gorm.DB, edbInfo, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error, errMsg string) {
 	edbInfoId := edbInfo.EdbInfoId
 	dataTableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
@@ -272,10 +259,7 @@ func (obj PredictExponentialSmoothing) refresh(to orm.TxOrmer, edbInfo, fromEdbI
 	}
 
 	//获取指标所有数据
-	existDataList := make([]*EdbData, 0)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, edbInfo.Source, edbInfo.SubSource)
 	if err != nil {
 		return
 	}
@@ -308,7 +292,7 @@ func (obj PredictExponentialSmoothing) refresh(to orm.TxOrmer, edbInfo, fromEdbI
 			if existVal != 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, currDateStr).Exec()
+				err = to.Exec(sql, saveValue, edbInfoId, currDateStr).Error
 				if err != nil {
 					return
 				}
@@ -336,7 +320,7 @@ func (obj PredictExponentialSmoothing) refresh(to orm.TxOrmer, edbInfo, fromEdbI
 		removeNum := len(removeDateList)
 		if removeNum > 0 {
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, dataTableName)
-			_, err = to.Raw(sql, edbInfo.EdbInfoId, removeDateList).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId, removeDateList).Error
 			if err != nil {
 				fmt.Println(reflect.TypeOf(obj).Name(), " add data ;delete Err", err.Error())
 				err = fmt.Errorf("删除不存在的指标数据失败,Err:" + err.Error())
@@ -347,7 +331,7 @@ func (obj PredictExponentialSmoothing) refresh(to orm.TxOrmer, edbInfo, fromEdbI
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			fmt.Println(reflect.TypeOf(obj).Name(), " add data Err", err.Error())
 			return
@@ -357,7 +341,7 @@ func (obj PredictExponentialSmoothing) refresh(to orm.TxOrmer, edbInfo, fromEdbI
 	//确定实际数据的最终值
 	{
 		finalLast, tmpErr := GetFinalLastByTo(to, edbInfoId, edbInfo.Source, edbInfo.SubSource, fromEdbInfo.LatestDate)
-		if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
+		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
 			return
 		}
 		if tmpErr == nil {

+ 10 - 14
models/predict_edb_data_static.go

@@ -1,8 +1,9 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
 	"strconv"
 	"strings"
@@ -22,24 +23,19 @@ type AddStaticPredictEdbInfoReq struct {
 // AddPredictStaticEdb 添加预测指标
 // edbInfo, calculateMappingList, predictEdbConfList,calculateRule9List,trendsMappingList
 func AddPredictStaticEdb(edbInfo, sourceEdbInfoItem *EdbInfo, calculateMappingList []*EdbInfoCalculateMapping, predictEdbConfList []*PredictEdbConf) (err error, errMsg string) {
-	o := orm.NewOrm()
-	tx, err := o.Begin()
-	if err != nil {
-		return
-	}
+	tx := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
 			tx.Rollback()
 		} else {
-			err = tx.Commit()
+			tx.Commit()
 		}
 	}()
 	// 新增预测指标
-	edbInfoId, err := tx.Insert(edbInfo)
+	err = tx.Create(edbInfo).Error
 	if err != nil {
 		return
 	}
-	edbInfo.EdbInfoId = int(edbInfoId)
 
 	// 新增预测指标的关联关系
 	lenCalculateMapping := len(calculateMappingList)
@@ -48,7 +44,7 @@ func AddPredictStaticEdb(edbInfo, sourceEdbInfoItem *EdbInfo, calculateMappingLi
 			calculateMappingItem.EdbInfoId = edbInfo.EdbInfoId
 			calculateMappingItem.EdbCode = edbInfo.EdbCode
 		}
-		_, err = tx.InsertMulti(lenCalculateMapping, calculateMappingList)
+		err = tx.CreateInBatches(calculateMappingList, utils.MultiAddNum).Error
 		if err != nil {
 			return
 		}
@@ -57,7 +53,7 @@ func AddPredictStaticEdb(edbInfo, sourceEdbInfoItem *EdbInfo, calculateMappingLi
 		// 新增预测指标配置
 		for _, v := range predictEdbConfList {
 			v.PredictEdbInfoId = edbInfo.EdbInfoId
-			_, tmpErr := tx.Insert(v)
+			tmpErr := tx.Create(v).Error
 			if tmpErr != nil {
 				err = fmt.Errorf(`新增预测指标配置失败:%v`, tmpErr)
 				return
@@ -66,7 +62,7 @@ func AddPredictStaticEdb(edbInfo, sourceEdbInfoItem *EdbInfo, calculateMappingLi
 	}
 	// 新增预测指标数据
 	dataTableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
-	edbInfoIdStr := strconv.Itoa(int(edbInfoId))
+	edbInfoIdStr := strconv.Itoa(edbInfo.EdbInfoId)
 	//获取指标数据(实际已生成)
 	fromDataList, err := GetEdbDataListAll(sourceEdbInfoItem.Source, sourceEdbInfoItem.SubSource, FindEdbDataListAllCond{
 		EdbInfoId:         sourceEdbInfoItem.EdbInfoId,
@@ -89,7 +85,7 @@ func AddPredictStaticEdb(edbInfo, sourceEdbInfoItem *EdbInfo, calculateMappingLi
 		count += 1
 		if count >= 500 {
 			addSql = strings.TrimRight(addSql, ",")
-			_, err = tx.Raw(addSql).Exec()
+			err = tx.Exec(addSql).Error
 			if err != nil {
 				err = fmt.Errorf(`新增预测指标数据失败:%v`, err)
 				return
@@ -101,7 +97,7 @@ func AddPredictStaticEdb(edbInfo, sourceEdbInfoItem *EdbInfo, calculateMappingLi
 
 	if count > 0 {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = tx.Raw(addSql).Exec()
+		err = tx.Exec(addSql).Error
 		if err != nil {
 			err = fmt.Errorf(`新增预测指标数据失败:%v`, err)
 			return

+ 65 - 5
models/predict_edb_rule_data.go

@@ -1,13 +1,15 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 // PredictEdbRuleData 预测指标,动态规则的计算数据
 type PredictEdbRuleData struct {
-	PredictEdbRuleDataId int `orm:"column(predict_edb_rule_data_id);pk"`
+	PredictEdbRuleDataId int `gorm:"primaryKey;autoIncrement;column:predict_edb_rule_data_id"`
 	EdbInfoId            int
 	ConfigId             int
 	DataTime             string
@@ -19,7 +21,7 @@ type PredictEdbRuleData struct {
 
 // PredictEdbRuleDataItem 预测指标,动态规则的计算数据
 type PredictEdbRuleDataItem struct {
-	PredictEdbRuleDataId int `orm:"column(predict_edb_rule_data_id);pk"`
+	PredictEdbRuleDataId int `gorm:"primaryKey;autoIncrement;column:predict_edb_rule_data_id"`
 	EdbInfoId            int
 	ConfigId             int
 	DataTime             string
@@ -31,9 +33,9 @@ type PredictEdbRuleDataItem struct {
 
 // GetPredictEdbRuleDataItemList 根据基础预测指标id集合 获取 所有的普通指标列表数据
 func GetPredictEdbRuleDataItemList(edbInfoId, configId int, startDate, endDate string) (list []*PredictEdbRuleDataItem, err error) {
-	o := orm.NewOrm()
 	var pars []interface{}
 	sql := ` SELECT * FROM predict_edb_rule_data WHERE edb_info_id = ? AND config_id = ? `
+	pars = append(pars, edbInfoId, configId)
 	if startDate != "" {
 		sql += ` AND data_time>=? `
 		pars = append(pars, startDate)
@@ -43,6 +45,64 @@ func GetPredictEdbRuleDataItemList(edbInfoId, configId int, startDate, endDate s
 		pars = append(pars, endDate)
 	}
 	sql += ` ORDER BY data_time ASC `
-	_, err = o.Raw(sql, edbInfoId, configId, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&list).Error
+
+	if err != nil {
+		return
+	}
+
+	for _, v := range list {
+		v.ConvertDate()
+	}
+
+	return
+}
+
+// GetPredictEdbRuleDataByTo
+// @Description: 根据配置id获取数据
+// @author: Roc
+// @datetime 2024-10-31 15:17:38
+// @param to *gorm.DB
+// @param configId int
+// @return list []*PredictEdbRuleData
+// @return err error
+func GetPredictEdbRuleDataByTo(to *gorm.DB, configId int) (list []*PredictEdbRuleData, err error) {
+	sql := `SELECT * FROM predict_edb_rule_data WHERE config_id = ?`
+	err = to.Raw(sql, configId).Find(&list).Error
+	return
+}
+
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *PredictEdbRuleData) AfterFind(db *gorm.DB) (err error) {
+	if m.DataTime == "" {
+		return
+	}
+	dataDateTmp, err := time.ParseInLocation(utils.FormatDateWallWithLoc, m.DataTime, time.Local)
+	if err != nil {
+		return
+	}
+	m.DataTime = dataDateTmp.Format(utils.FormatDate)
+	return
+}
+
+// ConvertDate
+// @Description: 日期转换
+// @author: Roc
+// @receiver m
+// @datetime 2024-10-31 15:26:48
+func (m *PredictEdbRuleData) ConvertDate() {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
+}
+
+// ConvertDate
+// @Description: 日期转换
+// @author: Roc
+// @receiver m
+// @datetime 2024-10-31 15:26:59
+func (m *PredictEdbRuleDataItem) ConvertDate() {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
 	return
 }