Jelajahi Sumber

gorm: 补充

hsun 1 bulan lalu
induk
melakukan
800d5cc2f6
78 mengubah file dengan 2966 tambahan dan 2180 penghapusan
  1. 1 0
      models/admin.go
  2. 2 3
      models/business_conf.go
  3. 14 14
      models/data_manage/base_from_changes_visitors_covid.go
  4. 1 1
      models/data_manage/base_from_gie.go
  5. 9 2
      models/data_manage/base_from_gpr_risk.go
  6. 10 3
      models/data_manage/base_from_icpi.go
  7. 35 18
      models/data_manage/base_from_mysteel_chemical_index.go
  8. 40 9
      models/data_manage/base_from_smm.go
  9. 27 11
      models/data_manage/base_from_smm_index.go
  10. 11 1
      models/data_manage/base_from_trade_cffex.go
  11. 7 1
      models/data_manage/base_from_trade_dalian.go
  12. 8 1
      models/data_manage/base_from_trade_guangzhou.go
  13. 7 1
      models/data_manage/base_from_trade_ine.go
  14. 6 0
      models/data_manage/base_from_trade_shanghai.go
  15. 7 1
      models/data_manage/base_from_trade_zhengzhou.go
  16. 13 1
      models/data_manage/base_from_usda_fas.go
  17. 63 53
      models/data_manage/chart_edb_mapping.go
  18. 9 0
      models/data_manage/chart_info.go
  19. 6 0
      models/data_manage/com_trade_data.go
  20. 3 3
      models/data_manage/cross_variety/chart_info_cross_variety.go
  21. 6 7
      models/data_manage/edb_classify.go
  22. 37 29
      models/data_manage/edb_data_calculate.go
  23. 22 23
      models/data_manage/edb_data_calculate_ljztbpj.go
  24. 22 23
      models/data_manage/edb_data_calculate_zjpj.go
  25. 208 211
      models/data_manage/edb_data_cffex.go
  26. 176 185
      models/data_manage/edb_data_dl.go
  27. 26 19
      models/data_manage/edb_data_gl.go
  28. 65 75
      models/data_manage/edb_data_lt.go
  29. 67 72
      models/data_manage/edb_data_lz.go
  30. 156 165
      models/data_manage/edb_data_manual.go
  31. 42 48
      models/data_manage/edb_data_pb.go
  32. 6 11
      models/data_manage/edb_data_quarter.go
  33. 202 211
      models/data_manage/edb_data_sh.go
  34. 202 211
      models/data_manage/edb_data_shfe.go
  35. 34 40
      models/data_manage/edb_data_ths.go
  36. 40 46
      models/data_manage/edb_data_wind.go
  37. 140 155
      models/data_manage/edb_data_ys.go
  38. 176 185
      models/data_manage/edb_data_zz.go
  39. 64 19
      models/data_manage/edb_info.go
  40. 19 11
      models/data_manage/edb_info_calculate_mapping.go
  41. 1 1
      models/data_manage/edb_info_relation.go
  42. 10 3
      models/data_manage/edb_info_update_log.go
  43. 1 1
      models/data_manage/edb_refresh/edb_refresh_config.go
  44. 1 1
      models/data_manage/edb_refresh/edb_refresh_mapping.go
  45. 1 1
      models/data_manage/edb_refresh/edb_refresh_source.go
  46. 2 2
      models/data_manage/edb_source.go
  47. 12 6
      models/data_manage/edb_update_log.go
  48. 1 1
      models/data_manage/excel/excel_info.go
  49. 6 5
      models/data_manage/factor_edb_series_chart_mapping.go
  50. 5 5
      models/data_manage/factor_edb_series_mapping.go
  51. 2 2
      models/data_manage/future_good/chart_info_future_good_profit.go
  52. 18 1
      models/data_manage/future_good/future_good_edb_info.go
  53. 4 6
      models/data_manage/holiday.go
  54. 18 4
      models/data_manage/meeting_probabilities.go
  55. 69 19
      models/data_manage/trade_position_analysis.go
  56. 118 33
      models/data_manage/trade_position_analysis_guangzhou.go
  57. 1 0
      models/data_source/data_source.go
  58. 7 7
      models/db.go
  59. 22 0
      models/english_report.go
  60. 4 4
      models/index_notice.go
  61. 8 1
      models/report.go
  62. 6 0
      models/report_chapter.go
  63. 3 2
      models/wx_template_msg.go
  64. 81 92
      services/data/data_pb.go
  65. 5 1
      services/data/data_source.go
  66. 70 81
      services/data/data_wind.go
  67. 1 1
      services/data/edb_info_sync.go
  68. 7 2
      services/edb_refresh.go
  69. 1 1
      services/edb_relation.go
  70. 4 0
      services/english_report.go
  71. 10 1
      services/eta_bridge/handle_data.go
  72. 5 5
      services/eta_bridge/xy.go
  73. 6 6
      services/index_notice.go
  74. 7 0
      services/report.go
  75. 4 1
      services/smart_report.go
  76. 85 5
      utils/common.go
  77. 11 10
      utils/constants.go
  78. 360 0
      utils/sql.go

+ 1 - 0
models/admin.go

@@ -23,6 +23,7 @@ type Admin struct {
 
 func GetAdminByAdminId(adminId int) (item *Admin, err error) {
 	sql := `SELECT * FROM admin WHERE admin_id=? `
+	sql = utils.ReplaceDriverKeywords("", sql)
 	err = global.DbMap[utils.DbNameWeekly].Raw(sql, adminId).First(&item).Error
 	return
 }

+ 2 - 3
models/business_conf.go

@@ -4,7 +4,6 @@ import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"html"
 	"time"
 )
@@ -62,9 +61,9 @@ func GetBusinessConf() (list map[string]string, err error) {
 }
 
 func (m *BusinessConf) GetItemByConfKey(key string) (item *BusinessConf, err error) {
-	o := orm.NewOrmUsingDB("eta")
+	o := global.DbMap[utils.DbNameMaster]
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE conf_key = ? LIMIT 1`, m.TableName())
-	err = o.Raw(sql, key).QueryRow(&item)
+	err = o.Raw(sql, key).First(&item).Error
 	return
 }
 

+ 14 - 14
models/data_manage/base_from_changes_visitors_covid.go

@@ -9,20 +9,20 @@ import (
 
 // BaseFromChangesVisitorsCovid 谷歌出行指数
 type BaseFromChangesVisitorsCovid struct {
-	Id                  uint64    `gorm:"column:id;primaryKey;autoIncrement" orm:"column(id);pk"` //序号
-	Entity              string    `orm:"column(entity)"`                                          //国家
-	Code                string    `orm:"column(code)"`                                            //国家编码
-	EdbCode             string    `orm:"column(edb_code)"`                                        //指标ID
-	Day                 time.Time `orm:"column(day)"`                                             //统计的日期
-	RetailAndRecreation string    `orm:"column(retail_and_recreation)"`
-	GroceryAndPharmacy  string    `orm:"column(grocery_and_pharmacy)"`
-	Residential         string    `orm:"column(residential)"`
-	TransitStations     string    `orm:"column(transit_stations)"`
-	Parks               string    `orm:"column(parks)"`
-	Workplaces          string    `orm:"column(workplaces)"`
-	Total               string    `orm:"column(total)"`
-	CreateTime          time.Time `orm:"auto_now_add;column(create_time)"` //创建时间
-	ModifyTime          time.Time `orm:"auto_now_add;column(modify_time)"` //修改时间
+	Id                  uint64    `gorm:"column:id;primaryKey;autoIncrement"` //序号
+	Entity              string    `gorm:"column:entity"`                      //国家
+	Code                string    `gorm:"column:code"`                        //国家编码
+	EdbCode             string    `gorm:"column:edb_code"`                    //指标ID
+	Day                 time.Time `gorm:"column:day"`                         //统计的日期
+	RetailAndRecreation string    `gorm:"column:retail_and_recreation"`
+	GroceryAndPharmacy  string    `gorm:"column:grocery_and_pharmacy"`
+	Residential         string    `gorm:"column:residential"`
+	TransitStations     string    `gorm:"column:transit_stations"`
+	Parks               string    `gorm:"column:parks"`
+	Workplaces          string    `gorm:"column:workplaces"`
+	Total               string    `gorm:"column:total"`
+	CreateTime          time.Time `gorm:"column:create_time"` //创建时间
+	ModifyTime          time.Time `gorm:"column:modify_time"` //修改时间
 }
 
 // AddBaseFromChangesVisitorsCovid 批量添加谷歌出行记录

+ 1 - 1
models/data_manage/base_from_gie.go

@@ -42,7 +42,7 @@ type BaseFromTradeEicIndexV2 struct {
 
 func GetBaseFromEicIndexMaxDate() (maxDate time.Time, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT max(a.gas_day_start)as max_date FROM base_from_trade_eic_index_v2 as a `
+	sql := ` SELECT max(a.gas_day_start) as max_date FROM base_from_trade_eic_index_v2 as a `
 	var timeNull sql2.NullTime
 	err = o.Raw(sql).Scan(&timeNull).Error
 	if err != nil {

+ 9 - 2
models/data_manage/base_from_gpr_risk.go

@@ -5,6 +5,7 @@ import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -23,6 +24,12 @@ type BaseFromGprRiskIndex struct {
 	ModifyTime             time.Time
 }
 
+func (m *BaseFromGprRiskIndex) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	return
+}
+
 // BaseFromGprRiskClassify GprRisk原始数据分类表
 type BaseFromGprRiskClassify struct {
 	ClassifyId      int       `gorm:"column:classify_id;primaryKey;autoIncrement"`
@@ -38,7 +45,7 @@ type BaseFromGprRiskClassify struct {
 
 func GetBaseFromGprRiskIndexMaxDate() (maxDate time.Time, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT max(a.modify_time)as max_date FROM base_from_gpr_risk_data as a `
+	sql := ` SELECT max(a.modify_time) AS max_date FROM base_from_gpr_risk_data as a `
 	var timeNull sql2.NullTime
 	err = o.Raw(sql).Scan(&timeNull).Error
 	if err != nil {
@@ -131,7 +138,7 @@ func InsertOrUpdateBaseFromGprRiskClassify(item *BaseFromGprRiskClassify) (lastI
 // GetBaseFromGprRiskMaxDate 获取GprRisk消费者指数最大数据
 func GetBaseFromGprRiskMaxDate() (maxDate time.Time, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT max(a.modify_time)as max_date FROM base_from_gpr_risk_data as a `
+	sql := ` SELECT max(a.modify_time) as max_date FROM base_from_gpr_risk_data as a `
 	var timeNull sql2.NullTime
 	err = o.Raw(sql).Scan(&timeNull).Error
 	if err != nil {

+ 10 - 3
models/data_manage/base_from_icpi.go

@@ -5,6 +5,7 @@ import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -23,7 +24,7 @@ type BaseFromIcpiIndex struct {
 
 func GetBaseFromIcpiIndexMaxDate() (maxDate time.Time, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT max(a.data_time)as max_date FROM base_from_icpi_data as a `
+	sql := ` SELECT max(a.data_time) as max_date FROM base_from_icpi_data as a `
 	var timeNull sql2.NullTime
 	err = o.Raw(sql).Scan(&timeNull).Error
 	if err != nil {
@@ -83,6 +84,12 @@ type BaseFromIcpiClassify struct {
 	ModifyTime             string `description:"修改时间"`
 }
 
+func (m *BaseFromIcpiClassify) AfterFind(db *gorm.DB) (err error) {
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	return
+}
+
 type IcpiClassifyResp struct {
 	Ret     int
 	Msg     string
@@ -125,7 +132,7 @@ func InsertOrUpdateBaseFromIcpiClassify(item *BaseFromIcpiClassify) (lastId int6
 // GetBaseFromIcpiMaxDate 获取ICPI消费者指数最大数据
 func GetBaseFromIcpiMaxDate() (maxDate time.Time, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT max(a.create_time)as max_date FROM base_from_icpi_data as a `
+	sql := ` SELECT max(a.create_time) as max_date FROM base_from_icpi_data as a `
 	var timeNull sql2.NullTime
 	err = o.Raw(sql).Scan(&timeNull).Error
 	if err != nil {
@@ -138,7 +145,7 @@ func GetBaseFromIcpiMaxDate() (maxDate time.Time, err error) {
 }
 
 type BaseFromIcpiData struct {
-	BaseFromIcpiDataId  int       `orm:"column(base_from_icpi_data_id);pk"`
+	BaseFromIcpiDataId  int       `gorm:"column:base_from_icpi_data_id;primaryKey;autoIncrement"`
 	BaseFromIcpiIndexId int       `description:"指标id"`
 	IndexCode           string    `description:"指标编码"`
 	DataTime            string    `description:"日期"`

+ 35 - 18
models/data_manage/base_from_mysteel_chemical_index.go

@@ -3,28 +3,29 @@ package data_manage
 import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 )
 
 type BaseFromMysteelChemicalIndexItem struct {
 	BaseFromMysteelChemicalIndexId    int32   `gorm:"column:base_from_mysteel_chemical_index_id;primaryKey;autoIncrement" json:"base_from_mysteel_chemical_index_id"`
-	BaseFromMysteelChemicalClassifyId int32   `json:"base_from_mysteel_chemical_classify_id"` // 钢联化工指标分类id
-	IndexCode                         string  `json:"index_code"`                             // 指标编码
-	IndexName                         string  `json:"index_name"`                             // 指标名称
-	Unit                              string  `json:"unit"`                                   // 单位
-	Source                            string  `json:"source"`                                 // 数据来源
-	Frequency                         string  `json:"frequency"`                              // 频度
-	StartDate                         string  `json:"start_date"`                             // 开始日期
-	EndDate                           string  `json:"end_date"`                               // 结束日期
-	Describe                          string  `json:"describe"`                               // 指标描述
-	UpdateWeek                        string  `json:"update_week"`                            // 更新周期
-	UpdateTime                        string  `json:"update_time"`                            // 更新时间,多个时间点用英文,隔开
-	UpdateTime2                       string  `json:"update_time2"`                           // 更新时间2
-	SysUserId                         int32   `json:"sys_user_id"`                            // 创建人id
-	SysUserRealName                   string  `json:"sys_user_real_name"`                     // 创建人姓名
-	CreateTime                        string  `json:"create_time"`                            // 创建时间
-	ModifyTime                        string  `json:"modify_time"`                            // 修改时间
-	FilePath                          string  `json:"file_path"`                              // 文件存储路径
-	Sort                              int32   `json:"sort"`                                   // 排序
+	BaseFromMysteelChemicalClassifyId int32   `json:"base_from_mysteel_chemical_classify_id"`  // 钢联化工指标分类id
+	IndexCode                         string  `json:"index_code"`                              // 指标编码
+	IndexName                         string  `json:"index_name"`                              // 指标名称
+	Unit                              string  `json:"unit"`                                    // 单位
+	Source                            string  `json:"source"`                                  // 数据来源
+	Frequency                         string  `json:"frequency"`                               // 频度
+	StartDate                         string  `json:"start_date"`                              // 开始日期
+	EndDate                           string  `json:"end_date"`                                // 结束日期
+	Describe                          string  `json:"describe"`                                // 指标描述
+	UpdateWeek                        string  `json:"update_week"`                             // 更新周期
+	UpdateTime                        string  `json:"update_time"`                             // 更新时间,多个时间点用英文,隔开
+	UpdateTime2                       string  `gorm:"column:update_time2" json:"update_time2"` // 更新时间2
+	SysUserId                         int32   `json:"sys_user_id"`                             // 创建人id
+	SysUserRealName                   string  `json:"sys_user_real_name"`                      // 创建人姓名
+	CreateTime                        string  `json:"create_time"`                             // 创建时间
+	ModifyTime                        string  `json:"modify_time"`                             // 修改时间
+	FilePath                          string  `json:"file_path"`                               // 文件存储路径
+	Sort                              int32   `json:"sort"`                                    // 排序
 	MergeFilePath                     string  `json:"merge_file_path"`
 	FileIndex                         int32   `json:"file_index"`
 	MergeUpdateWeek                   string  `json:"merge_update_week"`    // 合并文件的更新周
@@ -37,6 +38,22 @@ type BaseFromMysteelChemicalIndexItem struct {
 	EdbInfoId                         int     `json:"edb_info_id"`
 }
 
+func (m *BaseFromMysteelChemicalIndexItem) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	return
+}
+
+func (m *BaseFromMysteelChemicalIndexItem) ConvertTimeStr() {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	return
+}
+
 // GetBaseFromMysteelChemicalIndexItemByCode
 // @Description: 根据指标编码获取钢联指标详情
 // @author: Roc

+ 40 - 9
models/data_manage/base_from_smm.go

@@ -4,6 +4,7 @@ import (
 	sql2 "database/sql"
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -16,9 +17,9 @@ type BaseFromSmm struct {
 	ApiUpdateType string
 	ApiType       int
 	ApiTypeAll    string
-	Type1         string `orm:"column(type_1)"`
-	Type2         string `orm:"column(type_2)"`
-	Type3         string `orm:"column(type_3)"`
+	Type1         string `gorm:"column:type_1"`
+	Type2         string `gorm:"column:type_2"`
+	Type3         string `gorm:"column:type_3"`
 	ApiStartTime  string
 	ApiUpdateTime string
 	StartTime     string
@@ -35,8 +36,20 @@ type BaseFromSmm struct {
 	EndDate       string
 }
 
+func (m *BaseFromSmm) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.ApiStartTime = utils.GormDateStrToDateStr(m.ApiStartTime)
+	m.ApiUpdateTime = utils.GormDateStrToDateStr(m.ApiUpdateTime)
+	return
+}
+
 func AddBaseFromSmm(item *BaseFromSmm) (lastId int64, err error) {
 	err = global.DbMap[utils.DbNameIndex].Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromSmmId)
 	return
 }
 
@@ -54,9 +67,9 @@ type BaseFromSmmIndex struct {
 	Name               string
 	IndexCode          string
 	IndexName          string
-	Type1              string `orm:"column(type_1)"`
-	Type2              string `orm:"column(type_2)"`
-	Type3              string `orm:"column(type_3)"`
+	Type1              string `gorm:"column:type_1"`
+	Type2              string `gorm:"column:type_2"`
+	Type3              string `gorm:"column:type_3"`
 	Frequency          string
 	Unit               string
 	ApiStartTime       string
@@ -67,6 +80,14 @@ type BaseFromSmmIndex struct {
 	ModifyTime         time.Time
 }
 
+func (m *BaseFromSmmIndex) AfterFind(db *gorm.DB) (err error) {
+	m.StartTime = utils.GormDateStrToDateStr(m.StartTime)
+	m.FinishTime = utils.GormDateStrToDateStr(m.FinishTime)
+	m.ApiStartTime = utils.GormDateStrToDateStr(m.ApiStartTime)
+	m.ApiUpdateTime = utils.GormDateStrToDateStr(m.ApiUpdateTime)
+	return
+}
+
 func AddBaseFromSmmIndex(item *BaseFromSmmIndex) (lastId int64, err error) {
 	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
@@ -80,7 +101,7 @@ func GetBaseFromSmmIndex() (list []*BaseFromSmmIndex, err error) {
 }
 
 type BaseFromSmmData struct {
-	SmmDataId          int `orm:"column(smm_data_id);pk"`
+	SmmDataId          int `gorm:"column:smm_data_id;primaryKey;autoIncrement"`
 	BaseFromSmmIndexId int
 	IndexCode          string
 	DataTime           string
@@ -90,6 +111,11 @@ type BaseFromSmmData struct {
 	DataTimestamp      int64
 }
 
+func (m *BaseFromSmmData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func AddBaseFromSmmData(item *BaseFromSmmData) (lastId int64, err error) {
 	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
@@ -150,19 +176,24 @@ func ModifyBaseFromSmmMinDateAndMaxDate(baseFromSmmIndexId, baseFromSmmId int, m
 }
 
 type BaseFromSmmDataSimple struct {
-	SmmDataId          int `orm:"column(smm_data_id);pk"`
+	SmmDataId          int `gorm:"column:smm_data_id;primaryKey;autoIncrement"`
 	BaseFromSmmIndexId int
 	IndexCode          string
 	DataTime           string
 	Value              float64
 }
 
+func (m *BaseFromSmmDataSimple) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func GetBaseFromSmmDataByCondition(condition string, pars []interface{}) (list []*BaseFromSmmDataSimple, err error) {
 	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM base_from_smm_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).Find(&list).Error
+	err = o.Raw(sql, pars...).Find(&list).Error
 	return
 }

+ 27 - 11
models/data_manage/base_from_smm_index.go

@@ -10,17 +10,17 @@ type BaseFromSmmIndexItem struct {
 	ClassifyId         int32   `json:"classify_id"` // Smm原始数据指标分类id
 	Interface          string  `json:"interface"`
 	Name               string  `json:"name"`
-	IndexCode          string  `json:"index_code"`      // 指标编码
-	IndexName          string  `json:"index_name"`      // 指标名称
-	Type1              string  `json:"type_1"`          // 类型1
-	Type2              string  `json:"type_2"`          // 类型2
-	Type3              string  `json:"type_3"`          // 类型3
-	Frequency          string  `json:"frequency"`       // 频度
-	Unit               string  `json:"unit"`            // 单位
-	ApiStartTime       string  `json:"api_start_time"`  // 接口开始日期
-	ApiUpdateTime      string  `json:"api_update_time"` // 接口更新日期
-	StartTime          string  `json:"start_time"`      // 开始日期
-	FinishTime         string  `json:"finish_time"`     // 完成日期
+	IndexCode          string  `json:"index_code"`           // 指标编码
+	IndexName          string  `json:"index_name"`           // 指标名称
+	Type1              string  `gorm:"type_1" json:"type_1"` // 类型1
+	Type2              string  `gorm:"type_2" json:"type_2"` // 类型2
+	Type3              string  `gorm:"type_3" json:"type_3"` // 类型3
+	Frequency          string  `json:"frequency"`            // 频度
+	Unit               string  `json:"unit"`                 // 单位
+	ApiStartTime       string  `json:"api_start_time"`       // 接口开始日期
+	ApiUpdateTime      string  `json:"api_update_time"`      // 接口更新日期
+	StartTime          string  `json:"start_time"`           // 开始日期
+	FinishTime         string  `json:"finish_time"`          // 完成日期
 	CreateTime         string  `json:"create_time"`
 	ModifyTime         string  `json:"modify_time"`
 	StartDate          string  `json:"start_date"`
@@ -36,6 +36,16 @@ type BaseFromSmmIndexItem struct {
 	EndValue           float64 `json:"end_value"`        // 指标的最新值
 }
 
+func (m *BaseFromSmmIndexItem) ConvertTimeStr() {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.StartTime = utils.GormDateStrToDateStr(m.StartTime)
+	m.FinishTime = utils.GormDateStrToDateStr(m.FinishTime)
+	m.CreateTime = utils.GormDateStrToDateStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	return
+}
+
 // GetBaseFromSmmIndexItemItemByCode
 // @Description: 根据指标编码获取指标信息
 // @author: Roc
@@ -48,5 +58,11 @@ func GetBaseFromSmmIndexItemItemByCode(edbCode string) (item *BaseFromSmmIndexIt
 	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM base_from_smm_index WHERE index_code=? `
 	err = o.Raw(sql, edbCode).First(&item).Error
+	if err != nil {
+		return
+	}
+	if item != nil && item.BaseFromSmmIndexId > 0 {
+		item.ConvertTimeStr()
+	}
 	return
 }

+ 11 - 1
models/data_manage/base_from_trade_cffex.go

@@ -4,6 +4,7 @@ import (
 	sql2 "database/sql"
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -33,8 +34,17 @@ type BaseFromTradeCffexIndex struct {
 	DataTime                  string
 }
 
+func (m *BaseFromTradeCffexIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func AddBaseFromTradeCffexIndex(item *BaseFromTradeCffexIndex) (lastId int64, err error) {
 	err = global.DbMap[utils.DbNameIndex].Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.BaseFromTradeCffexIndexId)
 	return
 }
 
@@ -64,7 +74,7 @@ type CffexIndexResp struct {
 
 func GetBaseFromTradeCffexIndexMaxDate() (maxDate time.Time, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT max(a.data_time)as max_date FROM base_from_trade_cffex_index as a `
+	sql := ` SELECT max(a.data_time) AS max_date FROM base_from_trade_cffex_index as a `
 	var timeNull sql2.NullTime
 	err = o.Raw(sql).Scan(&timeNull).Error
 	if err != nil {

+ 7 - 1
models/data_manage/base_from_trade_dalian.go

@@ -4,6 +4,7 @@ import (
 	sql2 "database/sql"
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -33,6 +34,11 @@ type BaseFromTradeDalianIndex struct {
 	DataTime                   string `description:"数据日期"`
 }
 
+func (m *BaseFromTradeDalianIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func AddBaseFromTradeDalianIndex(item *BaseFromTradeDalianIndex) (lastId int64, err error) {
 	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	if err != nil {
@@ -71,7 +77,7 @@ type DalianIndexResp struct {
 
 func GetBaseFromTradeDalianIndexMaxDate() (maxDate time.Time, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT max(a.data_time)as max_date FROM base_from_trade_dalian_index as a `
+	sql := ` SELECT max(a.data_time) AS max_date FROM base_from_trade_dalian_index as a `
 	var timeNull sql2.NullTime
 	err = o.Raw(sql).Scan(&timeNull).Error
 	if err != nil {

+ 8 - 1
models/data_manage/base_from_trade_guangzhou.go

@@ -5,6 +5,7 @@ import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -23,6 +24,12 @@ type BaseFromTradeGuangzhouIndex struct {
 	Value                            float64   `description:"数据值"`
 }
 
+func (m *BaseFromTradeGuangzhouIndex) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	return
+}
+
 func AddBaseFromTradeGuangzhouIndex(item *BaseFromTradeGuangzhouIndex) (lastId int64, err error) {
 	saveItem := *item
 	o := global.DbMap[utils.DbNameIndex]
@@ -122,7 +129,7 @@ func GetBaseFromTradeGuangzhouContractAll() (list []*BaseFromTradeGuangzhouContr
 // GetBaseFromTradeGuangzhouMaxDate 获取广州期货交易所最大数据
 func GetBaseFromTradeGuangzhouMaxDate() (maxDate time.Time, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT max(a.create_time)as max_date FROM base_from_trade_guangzhou_data as a `
+	sql := ` SELECT max(a.create_time) AS max_date FROM base_from_trade_guangzhou_data as a `
 	var timeNull sql2.NullTime
 	err = o.Raw(sql).Scan(&timeNull).Error
 	if err != nil {

+ 7 - 1
models/data_manage/base_from_trade_ine.go

@@ -4,6 +4,7 @@ import (
 	sql2 "database/sql"
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -33,6 +34,11 @@ type BaseFromTradeIneIndex struct {
 	DataTime                string
 }
 
+func (m *BaseFromTradeIneIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func AddBaseFromTradeIneIndex(item *BaseFromTradeIneIndex) (lastId int64, err error) {
 	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return
@@ -62,7 +68,7 @@ type IneIndexResp struct {
 
 func GetBaseFromTradeIneIndexMaxDate() (maxDate time.Time, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT max(a.data_time)as max_date FROM base_from_trade_ine_index as a `
+	sql := ` SELECT max(a.data_time) AS max_date FROM base_from_trade_ine_index as a `
 	var timeNull sql2.NullTime
 	err = o.Raw(sql).Scan(&timeNull).Error
 	if err != nil {

+ 6 - 0
models/data_manage/base_from_trade_shanghai.go

@@ -4,6 +4,7 @@ import (
 	sql2 "database/sql"
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -33,6 +34,11 @@ type BaseFromTradeShanghaiIndex struct {
 	DataTime                     string
 }
 
+func (m *BaseFromTradeShanghaiIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func AddBaseFromTradeShangHaiIndex(item *BaseFromTradeShanghaiIndex) (lastId int64, err error) {
 	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	if err != nil {

+ 7 - 1
models/data_manage/base_from_trade_zhengzhou.go

@@ -4,11 +4,12 @@ import (
 	sql2 "database/sql"
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 type BaseFromTradeZhengzhouIndex struct {
-	BaseFromTradeZhengzhouIndexId int `orm:"column(base_from_trade_zhengzhou_index_id);pk"`
+	BaseFromTradeZhengzhouIndexId int `gorm:"column:base_from_trade_zhengzhou_index_id;primaryKey;autoIncrement"`
 	Rank                          int
 	DealShortName                 string
 	DealName                      string
@@ -33,6 +34,11 @@ type BaseFromTradeZhengzhouIndex struct {
 	DataTime                      string
 }
 
+func (m *BaseFromTradeZhengzhouIndex) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func AddBaseFromTradeZhengzhouIndex(item *BaseFromTradeZhengzhouIndex) (lastId int64, err error) {
 	err = global.DbMap[utils.DbNameIndex].Create(item).Error
 	return

+ 13 - 1
models/data_manage/base_from_usda_fas.go

@@ -5,6 +5,7 @@ import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -25,6 +26,12 @@ type BaseFromUsdaFasIndex struct {
 	ModifyTime             time.Time
 }
 
+func (m *BaseFromUsdaFasIndex) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	return
+}
+
 // BaseFromUsdaFasClassify UsdaFas原始数据分类表
 type BaseFromUsdaFasClassify struct {
 	ClassifyId      int       `gorm:"column:classify_id;primaryKey;autoIncrement"`
@@ -156,7 +163,7 @@ func GetBaseFromUsdaFasMaxDate() (maxDate time.Time, err error) {
 }
 
 type BaseFromUsdaFasData struct {
-	BaseFromUsdaFasDataId  int       `orm:"column(base_from_usda_fas_data_id);pk"`
+	BaseFromUsdaFasDataId  int       `gorm:"column:base_from_usda_fas_data_id;primaryKey;autoIncrement"`
 	BaseFromUsdaFasIndexId int       `description:"指标id"`
 	IndexCode              string    `description:"指标编码"`
 	DataTime               string    `description:"日期"`
@@ -165,6 +172,11 @@ type BaseFromUsdaFasData struct {
 	ModifyTime             time.Time `description:"修改时间"`
 }
 
+func (m *BaseFromUsdaFasData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 // GetAllBaseFromUsdaFasDataList 获取UsdaFas消费者指数数据
 func GetAllBaseFromUsdaFasDataList(startDate string) (list []*BaseFromUsdaFasData, err error) {
 	o := global.DbMap[utils.DbNameIndex]

+ 63 - 53
models/data_manage/chart_edb_mapping.go

@@ -3,6 +3,7 @@ package data_manage
 import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -49,59 +50,68 @@ func GetChartEdbMappingList(startSize, pageSize int) (items []*ChartEdbMapping,
 }
 
 type ChartEdbInfoMapping struct {
-	EdbInfoId           int     `description:"指标id"`
-	SourceName          string  `description:"来源名称"`
-	Source              int     `description:"来源id"`
-	SubSource           int     `description:"来源id"`
-	EdbCode             string  `description:"指标编码"`
-	EdbName             string  `description:"指标名称"`
-	EdbAliasName        string  `description:"指标名称(别名)"`
-	EdbNameEn           string  `description:"英文指标名称"`
-	EdbAliasNameEn      string  `description:"英文指标名称(别名)"`
-	EdbType             int     `description:"指标类型:1:基础指标,2:计算指标"`
-	Frequency           string  `description:"频率"`
-	FrequencyEn         string  `description:"英文频率"`
-	Unit                string  `description:"单位"`
-	UnitEn              string  `description:"英文单位"`
-	StartDate           string  `description:"起始日期"`
-	EndDate             string  `description:"终止日期"`
-	ModifyTime          string  `description:"指标最后更新时间"`
-	ChartEdbMappingId   int     `description:"图表指标id"`
-	ChartInfoId         int     `description:"图表id"`
-	MaxData             float64 `description:"上限"`
-	MinData             float64 `description:"下限"`
-	IsOrder             bool    `description:"true:正序,false:逆序"`
-	IsAxis              int     `description:"1:左轴,0:右轴"`
-	EdbInfoType         int     `description:"1:标准指标,0:领先指标"`
-	EdbInfoCategoryType int     `description:"0:普通指标,1:预测指标"`
-	LeadValue           int     `description:"领先值"`
-	LeadUnit            string  `description:"领先单位"`
-	LeadUnitEn          string  `description:"领先英文单位"`
-	ChartStyle          string  `description:"图表类型"`
-	ChartColor          string  `description:"颜色"`
-	PredictChartColor   string  `description:"预测数据的颜色"`
-	ChartWidth          float64 `description:"线条大小"`
-	ChartType           int     `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图,7:柱方图,8:商品价格曲线图,9:相关性图"`
-	LatestDate          string  `description:"数据最新日期"`
-	LatestValue         float64 `description:"数据最新值"`
-	MoveLatestDate      string  `description:"移动后的数据最新日期"`
-	UniqueCode          string  `description:"指标唯一编码"`
-	MinValue            float64 `json:"-" description:"最小值"`
-	MaxValue            float64 `json:"-" description:"最大值"`
-	DataList            interface{}
-	IsNullData          bool    `json:"-" description:"是否空数据"`
-	MappingSource       int     `description:"1:ETA图库;2:商品价格曲线"`
-	RegionType          string  `description:"交易所来源,海外还是国内" json:"-"`
-	ClassifyId          int     `description:"分类id"`
-	SubSourceName       string  `description:"子数据来源名称"`
-	IndicatorCode       string  `description:"指标代码"`
-	IsConvert           int     `description:"是否数据转换 0不转 1转"`
-	ConvertType         int     `description:"数据转换类型 1乘 2除 3对数"`
-	ConvertValue        float64 `description:"数据转换值"`
-	ConvertUnit         string  `description:"数据转换单位"`
-	ConvertEnUnit       string  `description:"数据转换单位"`
-	IsJoinPermission    int     `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
-	HaveOperaAuth       bool    `description:"是否有数据权限,默认:false"`
+	EdbInfoId           int         `description:"指标id"`
+	SourceName          string      `description:"来源名称"`
+	Source              int         `description:"来源id"`
+	SubSource           int         `description:"来源id"`
+	EdbCode             string      `description:"指标编码"`
+	EdbName             string      `description:"指标名称"`
+	EdbAliasName        string      `description:"指标名称(别名)"`
+	EdbNameEn           string      `description:"英文指标名称"`
+	EdbAliasNameEn      string      `description:"英文指标名称(别名)"`
+	EdbType             int         `description:"指标类型:1:基础指标,2:计算指标"`
+	Frequency           string      `description:"频率"`
+	FrequencyEn         string      `description:"英文频率"`
+	Unit                string      `description:"单位"`
+	UnitEn              string      `description:"英文单位"`
+	StartDate           string      `description:"起始日期"`
+	EndDate             string      `description:"终止日期"`
+	ModifyTime          string      `description:"指标最后更新时间"`
+	ChartEdbMappingId   int         `description:"图表指标id"`
+	ChartInfoId         int         `description:"图表id"`
+	MaxData             float64     `description:"上限"`
+	MinData             float64     `description:"下限"`
+	IsOrder             bool        `description:"true:正序,false:逆序"`
+	IsAxis              int         `description:"1:左轴,0:右轴"`
+	EdbInfoType         int         `description:"1:标准指标,0:领先指标"`
+	EdbInfoCategoryType int         `description:"0:普通指标,1:预测指标"`
+	LeadValue           int         `description:"领先值"`
+	LeadUnit            string      `description:"领先单位"`
+	LeadUnitEn          string      `description:"领先英文单位"`
+	ChartStyle          string      `description:"图表类型"`
+	ChartColor          string      `description:"颜色"`
+	PredictChartColor   string      `description:"预测数据的颜色"`
+	ChartWidth          float64     `description:"线条大小"`
+	ChartType           int         `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图,7:柱方图,8:商品价格曲线图,9:相关性图"`
+	LatestDate          string      `description:"数据最新日期"`
+	LatestValue         float64     `description:"数据最新值"`
+	MoveLatestDate      string      `description:"移动后的数据最新日期"`
+	UniqueCode          string      `description:"指标唯一编码"`
+	MinValue            float64     `json:"-" description:"最小值"`
+	MaxValue            float64     `json:"-" description:"最大值"`
+	DataList            interface{} `gorm:"-"`
+	IsNullData          bool        `json:"-" description:"是否空数据"`
+	MappingSource       int         `description:"1:ETA图库;2:商品价格曲线"`
+	RegionType          string      `description:"交易所来源,海外还是国内" json:"-"`
+	ClassifyId          int         `description:"分类id"`
+	SubSourceName       string      `description:"子数据来源名称"`
+	IndicatorCode       string      `description:"指标代码"`
+	IsConvert           int         `description:"是否数据转换 0不转 1转"`
+	ConvertType         int         `description:"数据转换类型 1乘 2除 3对数"`
+	ConvertValue        float64     `description:"数据转换值"`
+	ConvertUnit         string      `description:"数据转换单位"`
+	ConvertEnUnit       string      `description:"数据转换单位"`
+	IsJoinPermission    int         `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
+	HaveOperaAuth       bool        `description:"是否有数据权限,默认:false"`
+}
+
+func (m *ChartEdbInfoMapping) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.LatestDate = utils.GormDateStrToDateStr(m.LatestDate)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	m.MoveLatestDate = utils.GormDateStrToDateStr(m.MoveLatestDate)
+	return
 }
 
 func GetRelationEdbInfoListMappingByCondition(condition string, pars []interface{}) (item []*ChartEdbInfoMapping, err error) {

+ 9 - 0
models/data_manage/chart_info.go

@@ -3,6 +3,7 @@ package data_manage
 import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -31,6 +32,14 @@ type ChartInfo struct {
 	ExtraConfig     string `description:"图表额外配置,json数据"`
 }
 
+func (m *ChartInfo) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.SeasonStartDate = utils.GormDateStrToDateStr(m.SeasonStartDate)
+	m.SeasonEndDate = utils.GormDateStrToDateStr(m.SeasonEndDate)
+	return
+}
+
 func GetAllChartInfo() (list []*ChartInfo, err error) {
 	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM chart_info  `

+ 6 - 0
models/data_manage/com_trade_data.go

@@ -4,6 +4,7 @@ import (
 	sql2 "database/sql"
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -29,6 +30,11 @@ type ComTradeData struct {
 	CreateTime         time.Time `description:"创建时间"`
 }
 
+func (m *ComTradeData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 // GetAllComTradeDataList 获取联合国商品贸易数据列表
 func GetAllComTradeDataList(startDate string) (list []*ComTradeData, err error) {
 	o := global.DbMap[utils.DbNameIndex]

+ 3 - 3
models/data_manage/cross_variety/chart_info_cross_variety.go

@@ -9,10 +9,10 @@ import (
 // ChartInfoCrossVariety
 // @Description: 跨品种分析配置表
 type ChartInfoCrossVariety struct {
-	Id             int       `orm:"column(id);pk"`
+	Id             int       `gorm:"primaryKey;autoIncrement"`
 	ChartInfoId    int       `description:"图表id"`
-	ChartXTagId    int       `description:"X轴的标签ID"`
-	ChartYTagId    int       `description:"X轴的标签ID"`
+	ChartXTagId    int       `gorm:"column:chart_x_tag_id" description:"X轴的标签ID"`
+	ChartYTagId    int       `gorm:"column:chart_y_tag_id" description:"X轴的标签ID"`
 	CalculateValue int       `description:"计算窗口"`
 	CalculateUnit  string    `description:"计算频度"`
 	ModifyTime     time.Time `description:"修改时间"`

+ 6 - 7
models/data_manage/edb_classify.go

@@ -7,20 +7,20 @@ import (
 )
 
 type EdbClassify struct {
-	ClassifyID         int64 `orm:"column(classify_id);pk" gorm:"primaryKey"`
+	ClassifyID         int64 `gorm:"column:classify_id;primaryKey;autoIncrement"`
 	ClassifyType       uint32
 	ClassifyName       string
-	ParentID           int64
+	ParentID           int64 `gorm:"column:parent_id"`
 	HasData            int32
 	CreateTime         time.Time
 	ModifyTime         time.Time
-	SysUserID          int64
+	SysUserID          int64 `gorm:"column:sys_user_id"`
 	SysUserRealName    string
 	Level              int64
 	UniqueCode         string
 	Sort               uint32
-	RootID             int64
-	LastModifyUserID   uint32
+	RootID             int64  `gorm:"column:root_id"`
+	LastModifyUserID   uint32 `gorm:"column:last_modify_user_id"`
 	LastModifyUserName string
 }
 
@@ -39,7 +39,6 @@ func GetAllEdbClassifyListByCondition(condition string, pars []interface{}) (ite
 		sql += condition
 	}
 	sql += `ORDER BY classify_id ASC `
-	err = o.Raw(sql, pars).Find(&item).Error
-
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }

+ 37 - 29
models/data_manage/edb_data_calculate.go

@@ -4,38 +4,40 @@ import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"time"
 )
 
-func GetEdbDataCalculateByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_calculate WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
-	return
-}
+//func GetEdbDataCalculateByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_calculate WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
 
-func ModifyEdbDataCalculate(edbInfoId int64, dataTime string, value float64) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_calculate SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	err = o.Exec(sql, value, edbInfoId, dataTime).Error
-	return
-}
+//func ModifyEdbDataCalculate(edbInfoId int64, dataTime string, value float64) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_calculate SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	sql = utils.ReplaceDriverKeywords("", sql)
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}
 
-func AddEdbDataCalculateBySql(sqlStr string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.Exec(sqlStr).Error
-	return
-}
+//func AddEdbDataCalculateBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
 
 // DeleteEdbDataCalculateBySql 根据删除sql删除指标数据
-func DeleteEdbDataCalculateBySql(deleteStr string, edbInfoId int) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.Exec(deleteStr, edbInfoId).Error
-	return
-}
+//func DeleteEdbDataCalculateBySql(deleteStr string, edbInfoId int) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(deleteStr, edbInfoId).Error
+//	return
+//}
 
 type EdbInfoCalculateDetail struct {
-	EdbInfoCalculateId int       `orm:"column(edb_info_calculate_id);pk" gorm:"primaryKey"`
+	EdbInfoCalculateId int       `gorm:"column:edb_info_calculate_id;primaryKey;autoIncrement"`
 	EdbInfoId          int       `description:"指标id"`
 	EdbCode            string    `description:"指标编码"`
 	FromEdbInfoId      int       `description:"计算指标id"`
@@ -51,15 +53,21 @@ type EdbInfoCalculateDetail struct {
 	EndDate            string    `description:"结束日期"`
 }
 
-func GetEdbInfoCalculateDetail(edbInfoId int) (list []*EdbInfoCalculateDetail, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? ORDER BY sort ASC `
-	err = o.Raw(sql, edbInfoId).Find(&list).Error
+func (m *EdbInfoCalculateDetail) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
 	return
 }
 
+//func GetEdbInfoCalculateDetail(edbInfoId int) (list []*EdbInfoCalculateDetail, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
+//			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+//			WHERE a.edb_info_id=? ORDER BY sort ASC `
+//	err = o.Raw(sql, edbInfoId).Find(&list).Error
+//	return
+//}
+
 func GetEdbInfoCalculateMap(edbInfoId, source int) (list []*EdbInfoCalculateDetail, err error) {
 	o := global.DbMap[utils.DbNameIndex]
 

+ 22 - 23
models/data_manage/edb_data_calculate_ljztbpj.go

@@ -1,28 +1,27 @@
 package data_manage
 
-import (
-	"eta/eta_task/global"
-	"eta/eta_task/utils"
-	"time"
-)
-
 // EdbDataCalculateLjztbpj 累计值同比拼接数据结构体
-type EdbDataCalculateLjztbpj struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
+//type EdbDataCalculateLjztbpj struct {
+//	EdbDataId     int `gorm:"column:edb_data_id;primaryKey;autoIncrement"`
+//	EdbInfoId     int
+//	EdbCode       string
+//	DataTime      string
+//	Value         float64
+//	Status        int
+//	CreateTime    time.Time
+//	ModifyTime    time.Time
+//	DataTimestamp int64
+//}
+
+//func (m *EdbDataCalculateLjztbpj) AfterFind(db *gorm.DB) (err error) {
+//	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+//	return
+//}
 
 // GetAllEdbDataCalculateLjztbpjByEdbInfoId 根据指标id获取全部的数据
-func GetAllEdbDataCalculateLjztbpjByEdbInfoId(edbInfoId int) (items []*EdbDataCalculateLjztbpj, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT * FROM edb_data_calculate_ljztbpj WHERE edb_info_id=? ORDER BY data_time DESC `
-	err = o.Raw(sql, edbInfoId).Find(&items).Error
-	return
-}
+//func GetAllEdbDataCalculateLjztbpjByEdbInfoId(edbInfoId int) (items []*EdbDataCalculateLjztbpj, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT * FROM edb_data_calculate_ljztbpj WHERE edb_info_id=? ORDER BY data_time DESC `
+//	err = o.Raw(sql, edbInfoId).Find(&items).Error
+//	return
+//}

+ 22 - 23
models/data_manage/edb_data_calculate_zjpj.go

@@ -1,28 +1,27 @@
 package data_manage
 
-import (
-	"eta/eta_task/global"
-	"eta/eta_task/utils"
-	"time"
-)
-
 // EdbDataCalculateZjpj 直接拼接数据结构体
-type EdbDataCalculateZjpj struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
+//type EdbDataCalculateZjpj struct {
+//	EdbDataId     int `gorm:"column:edb_data_id;primaryKey;autoIncrement"`
+//	EdbInfoId     int
+//	EdbCode       string
+//	DataTime      string
+//	Value         float64
+//	Status        int
+//	CreateTime    time.Time
+//	ModifyTime    time.Time
+//	DataTimestamp int64
+//}
+
+//func (m *EdbDataCalculateZjpj) AfterFind(db *gorm.DB) (err error) {
+//	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+//	return
+//}
 
 // GetAllEdbDataCalculateZjpjByEdbInfoId 根据指标id获取全部的数据
-func GetAllEdbDataCalculateZjpjByEdbInfoId(edbInfoId int) (items []*EdbDataCalculateZjpj, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT * FROM edb_data_calculate_zjpj WHERE edb_info_id=? ORDER BY data_time DESC `
-	err = o.Raw(sql, edbInfoId).Find(&items).Error
-	return
-}
+//func GetAllEdbDataCalculateZjpjByEdbInfoId(edbInfoId int) (items []*EdbDataCalculateZjpj, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT * FROM edb_data_calculate_zjpj WHERE edb_info_id=? ORDER BY data_time DESC `
+//	err = o.Raw(sql, edbInfoId).Find(&items).Error
+//	return
+//}

+ 208 - 211
models/data_manage/edb_data_cffex.go

@@ -1,217 +1,214 @@
 package data_manage
 
-import (
-	"eta/eta_task/global"
-	"eta/eta_task/utils"
-	"fmt"
-	"strconv"
-	"strings"
-	"time"
-)
-
-type CffexData struct {
-	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
-	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
-}
-
-type BaseFromCffexDataSimple struct {
-	Id        int `orm:"column(base_from_trade_cffex_index_id);pk" gorm:"primaryKey"`
-	DealCode  string
-	BuyCode   string
-	SoldCode  string
-	DataTime  string
-	DealValue string
-	BuyValue  string
-	SoldValue string
-}
-
-type BaseInfoFromCffex struct {
-	DealName string
-	BuyName  string
-	SoldName string
-}
-
-type BaseFromTradeCFFEXIndex struct {
-	BaseFromTradeCffexIndexId int `orm:"column(base_from_trade_cffex_index_id);pk" gorm:"primaryKey"`
-	Rank                      int
-	DealShortName             string
-	DealName                  string
-	DealCode                  string
-	DealValue                 string
-	DealChange                int
-	BuyShortName              string
-	BuyName                   string
-	BuyCode                   string
-	BuyValue                  string
-	BuyChange                 int
-	SoldShortName             string
-	SoldName                  string
-	SoldCode                  string
-	SoldValue                 string
-	SoldChange                int
-	Frequency                 string
-	ClassifyName              string
-	ClassifyType              string
-	CreateTime                time.Time
-	ModifyTime                time.Time
-	DataTime                  string
-}
-
-func GetEdbDataCffexMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_cffex WHERE edb_code=? `
-	err = o.Raw(sql, edbCode).Row().Scan(&minDate, &maxDate)
-	return
-}
+//type CffexData struct {
+//	InputValue string `gorm:"column:DATA_VALUE" description:"日期"`
+//	DataTime   string `gorm:"column:DATA_DATE" description:"值"`
+//}
+
+//type BaseFromCffexDataSimple struct {
+//	Id        int `gorm:"column(base_from_trade_cffex_index_id);primaryKey"`
+//	DealCode  string
+//	BuyCode   string
+//	SoldCode  string
+//	DataTime  string
+//	DealValue string
+//	BuyValue  string
+//	SoldValue string
+//}
+
+//func (m *BaseFromCffexDataSimple) AfterFind(db *gorm.DB) (err error) {
+//	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+//	return
+//}
+
+//type BaseInfoFromCffex struct {
+//	DealName string
+//	BuyName  string
+//	SoldName string
+//}
+
+//type BaseFromTradeCFFEXIndex struct {
+//	BaseFromTradeCffexIndexId int `gorm:"column(base_from_trade_cffex_index_id);primaryKey"`
+//	Rank                      int
+//	DealShortName             string
+//	DealName                  string
+//	DealCode                  string
+//	DealValue                 string
+//	DealChange                int
+//	BuyShortName              string
+//	BuyName                   string
+//	BuyCode                   string
+//	BuyValue                  string
+//	BuyChange                 int
+//	SoldShortName             string
+//	SoldName                  string
+//	SoldCode                  string
+//	SoldValue                 string
+//	SoldChange                int
+//	Frequency                 string
+//	ClassifyName              string
+//	ClassifyType              string
+//	CreateTime                time.Time
+//	ModifyTime                time.Time
+//	DataTime                  string
+//}
+
+//func GetEdbDataCffexMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_cffex WHERE edb_code=? `
+//	err = o.Raw(sql, edbCode).Row().Scan(&minDate, &maxDate)
+//	return
+//}
 
 // RefreshEdbDataByCffex 刷新中金所指标数据
-func RefreshEdbDataByCffex(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	tx := o.Begin()
-	if tx.Error != nil {
-		return tx.Error
-	}
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-	if err != nil {
-		return
-	}
-	var suffix string
-	if strings.Contains(edbCode, "deal") {
-		suffix = "deal"
-	} else if strings.Contains(edbCode, "buy") {
-		suffix = "buy"
-	} else if strings.Contains(edbCode, "sold") {
-		suffix = "sold"
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		if suffix == "deal" {
-			condition += " AND deal_code=? "
-		} else if suffix == "buy" {
-			condition += " AND buy_code=? "
-		} else {
-			condition += " AND sold_code=? "
-		}
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := GetCffexDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_cffex(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		var value string
-		if suffix == "deal" {
-			value = v.DealValue
-		} else if suffix == "buy" {
-			value = v.BuyValue
-		} else {
-			value = v.SoldValue
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := GetEdbDataCffexByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				err = ModifyEdbDataCffex(int64(edbInfoId), v.DataTime, value)
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql, pars...).Error
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
+//func RefreshEdbDataByCffex(edbInfoId int, edbCode, startDate, endDate string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	tx := o.Begin()
+//	if tx.Error != nil {
+//		return tx.Error
+//	}
+//	defer func() {
+//		if err != nil {
+//			tx.Rollback()
+//		} else {
+//			tx.Commit()
+//		}
+//	}()
+//	if err != nil {
+//		return
+//	}
+//	var suffix string
+//	if strings.Contains(edbCode, "deal") {
+//		suffix = "deal"
+//	} else if strings.Contains(edbCode, "buy") {
+//		suffix = "buy"
+//	} else if strings.Contains(edbCode, "sold") {
+//		suffix = "sold"
+//	}
+//	edbInfoIdStr := strconv.Itoa(edbInfoId)
+//	//计算数据
+//	var condition string
+//	var pars []interface{}
+//
+//	if edbCode != "" {
+//		if suffix == "deal" {
+//			condition += " AND deal_code=? "
+//		} else if suffix == "buy" {
+//			condition += " AND buy_code=? "
+//		} else {
+//			condition += " AND sold_code=? "
+//		}
+//		pars = append(pars, edbCode)
+//	}
+//
+//	if startDate != "" {
+//		condition += " AND data_time>=? "
+//		pars = append(pars, startDate)
+//	}
+//
+//	if endDate != "" {
+//		condition += " AND data_time<=? "
+//		pars = append(pars, endDate)
+//	}
+//
+//	glDataList, err := GetCffexDataByTradeCode(condition, pars)
+//
+//	addSql := ` INSERT INTO edb_data_cffex(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+//	var isAdd bool
+//	existMap := make(map[string]string)
+//	for _, v := range glDataList {
+//		var value string
+//		if suffix == "deal" {
+//			value = v.DealValue
+//		} else if suffix == "buy" {
+//			value = v.BuyValue
+//		} else {
+//			value = v.SoldValue
+//		}
+//		item := v
+//		itemValue := value
+//		if _, ok := existMap[v.DataTime]; !ok {
+//			count, err := GetEdbDataCffexByCodeAndDate(edbCode, v.DataTime)
+//			if err != nil {
+//				return err
+//			}
+//			if count <= 0 {
+//				eDate := item.DataTime
+//				sValue := itemValue
+//				if sValue != "" {
+//					dataTime, err := time.Parse(utils.FormatDate, eDate)
+//					if err != nil {
+//						return err
+//					}
+//					timestamp := dataTime.UnixNano() / 1e6
+//					timeStr := fmt.Sprintf("%d", timestamp)
+//					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
+//					isAdd = true
+//				}
+//			} else {
+//				err = ModifyEdbDataCffex(int64(edbInfoId), v.DataTime, value)
+//				if err != nil {
+//					return err
+//				}
+//			}
+//		}
+//		existMap[v.DataTime] = value
+//	}
+//	if isAdd {
+//		addSql = strings.TrimRight(addSql, ",")
+//		err = tx.Exec(addSql, pars...).Error
+//		if err != nil {
+//			return err
+//		}
+//	}
+//	return
+//}
 
 // GetBaseInfoFromCffexByIndexCode 获取指标信息
-func GetBaseInfoFromCffexByIndexCode(indexCode, suffix string) (list []*BaseInfoFromCffex, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := `SELECT * FROM base_from_trade_cffex_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	err = o.Raw(sql, indexCode).Find(&list).Error
-	return
-}
-
-func GetCffexDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromCffexDataSimple, err error) {
-	sql := ` SELECT * FROM base_from_trade_cffex_index WHERE 1=1 `
-	o := global.DbMap[utils.DbNameIndex]
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY data_time DESC `
-	err = o.Raw(sql, pars).Find(&item).Error
-	return
-}
-
-func AddEdbDataCffexBySql(sqlStr string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.Exec(sqlStr).Error
-	return
-}
-
-func GetBaseFromCffexDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeCFFEXIndex, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := `SELECT * FROM base_from_trade_cffex_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	err = o.Raw(sql, indexCode).Find(&list).Error
-	return
-}
-
-func GetEdbDataCffexByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_cffex WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
-	return
-}
-
-func ModifyEdbDataCffex(edbInfoId int64, dataTime, value string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_cffex SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	err = o.Exec(sql, value, edbInfoId, dataTime).Error
-	return
-}
+//func GetBaseInfoFromCffexByIndexCode(indexCode, suffix string) (list []*BaseInfoFromCffex, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_cffex_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetCffexDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromCffexDataSimple, err error) {
+//	sql := ` SELECT * FROM base_from_trade_cffex_index WHERE 1=1 `
+//	o := global.DbMap[utils.DbNameIndex]
+//	if condition != "" {
+//		sql += condition
+//	}
+//	sql += ` ORDER BY data_time DESC `
+//	err = o.Raw(sql, pars...).Find(&item).Error
+//	return
+//}
+
+//func AddEdbDataCffexBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
+
+//func GetBaseFromCffexDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeCFFEXIndex, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_cffex_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetEdbDataCffexByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_cffex WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
+
+//func ModifyEdbDataCffex(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_cffex SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	sql = utils.ReplaceDriverKeywords("", sql)
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}

+ 176 - 185
models/data_manage/edb_data_dl.go

@@ -1,191 +1,182 @@
 package data_manage
 
-import (
-	"eta/eta_task/global"
-	"eta/eta_task/utils"
-	"fmt"
-	"strconv"
-	"strings"
-	"time"
-)
-
-type DlData struct {
-	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
-	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
-}
-
-type BaseFromDlDataSimple struct {
-	Id        int `orm:"column(base_from_trade_dalian_index_id);pk" gorm:"primaryKey"`
-	DealCode  string
-	BuyCode   string
-	SoldCode  string
-	DataTime  string
-	DealValue string
-	BuyValue  string
-	SoldValue string
-}
-
-type BaseInfoFromDl struct {
-	DealName string
-	BuyName  string
-	SoldName string
-}
-
-func GetEdbDataDlMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_dl WHERE edb_code=? `
-	err = o.Raw(sql, edbCode).Row().Scan(&minDate, &maxDate)
-	return
-}
+//type DlData struct {
+//	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
+//	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
+//}
+
+//type BaseFromDlDataSimple struct {
+//	Id        int `orm:"column(base_from_trade_dalian_index_id);pk" gorm:"primaryKey"`
+//	DealCode  string
+//	BuyCode   string
+//	SoldCode  string
+//	DataTime  string
+//	DealValue string
+//	BuyValue  string
+//	SoldValue string
+//}
+
+//type BaseInfoFromDl struct {
+//	DealName string
+//	BuyName  string
+//	SoldName string
+//}
+
+//func GetEdbDataDlMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_dl WHERE edb_code=? `
+//	err = o.Raw(sql, edbCode).Row().Scan(&minDate, &maxDate)
+//	return
+//}
 
 // RefreshEdbDataByDl 刷新大商所指标数据
-func RefreshEdbDataByDl(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	tx := o.Begin()
-	if tx.Error != nil {
-		return tx.Error
-	}
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-	if err != nil {
-		return
-	}
-	var suffix string
-	if strings.Contains(edbCode, "deal") {
-		suffix = "deal"
-	} else if strings.Contains(edbCode, "buy") {
-		suffix = "buy"
-	} else if strings.Contains(edbCode, "sold") {
-		suffix = "sold"
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		if suffix == "deal" {
-			condition += " AND deal_code=? "
-		} else if suffix == "buy" {
-			condition += " AND buy_code=? "
-		} else {
-			condition += " AND sold_code=? "
-		}
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := GetDlDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_dl(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		var value string
-		if suffix == "deal" {
-			value = v.DealValue
-		} else if suffix == "buy" {
-			value = v.BuyValue
-		} else {
-			value = v.SoldValue
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := GetEdbDataDlByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				err = ModifyEdbDataDl(int64(edbInfoId), v.DataTime, value)
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql, pars...).Error
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
+//func RefreshEdbDataByDl(edbInfoId int, edbCode, startDate, endDate string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	tx := o.Begin()
+//	if tx.Error != nil {
+//		return tx.Error
+//	}
+//	defer func() {
+//		if err != nil {
+//			tx.Rollback()
+//		} else {
+//			tx.Commit()
+//		}
+//	}()
+//	if err != nil {
+//		return
+//	}
+//	var suffix string
+//	if strings.Contains(edbCode, "deal") {
+//		suffix = "deal"
+//	} else if strings.Contains(edbCode, "buy") {
+//		suffix = "buy"
+//	} else if strings.Contains(edbCode, "sold") {
+//		suffix = "sold"
+//	}
+//	edbInfoIdStr := strconv.Itoa(edbInfoId)
+//	//计算数据
+//	var condition string
+//	var pars []interface{}
+//
+//	if edbCode != "" {
+//		if suffix == "deal" {
+//			condition += " AND deal_code=? "
+//		} else if suffix == "buy" {
+//			condition += " AND buy_code=? "
+//		} else {
+//			condition += " AND sold_code=? "
+//		}
+//		pars = append(pars, edbCode)
+//	}
+//
+//	if startDate != "" {
+//		condition += " AND data_time>=? "
+//		pars = append(pars, startDate)
+//	}
+//
+//	if endDate != "" {
+//		condition += " AND data_time<=? "
+//		pars = append(pars, endDate)
+//	}
+//
+//	glDataList, err := GetDlDataByTradeCode(condition, pars)
+//
+//	addSql := ` INSERT INTO edb_data_dl(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+//	var isAdd bool
+//	existMap := make(map[string]string)
+//	for _, v := range glDataList {
+//		var value string
+//		if suffix == "deal" {
+//			value = v.DealValue
+//		} else if suffix == "buy" {
+//			value = v.BuyValue
+//		} else {
+//			value = v.SoldValue
+//		}
+//		item := v
+//		itemValue := value
+//		if _, ok := existMap[v.DataTime]; !ok {
+//			count, err := GetEdbDataDlByCodeAndDate(edbCode, v.DataTime)
+//			if err != nil {
+//				return err
+//			}
+//			if count <= 0 {
+//				eDate := item.DataTime
+//				sValue := itemValue
+//				if sValue != "" {
+//					dataTime, err := time.Parse(utils.FormatDate, eDate)
+//					if err != nil {
+//						return err
+//					}
+//					timestamp := dataTime.UnixNano() / 1e6
+//					timeStr := fmt.Sprintf("%d", timestamp)
+//					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
+//					isAdd = true
+//				}
+//			} else {
+//				err = ModifyEdbDataDl(int64(edbInfoId), v.DataTime, value)
+//				if err != nil {
+//					return err
+//				}
+//			}
+//		}
+//		existMap[v.DataTime] = value
+//	}
+//	if isAdd {
+//		addSql = strings.TrimRight(addSql, ",")
+//		err = tx.Exec(addSql, pars...).Error
+//		if err != nil {
+//			return err
+//		}
+//	}
+//	return
+//}
 
 // GetBaseInfoFromDalianByIndexCode 获取指标信息
-func GetBaseInfoFromDalianByIndexCode(indexCode, suffix string) (list []*BaseInfoFromDl, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := `SELECT * FROM base_from_trade_dalian_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	err = o.Raw(sql, indexCode).Find(&list).Error
-	return
-}
-
-func GetDlDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromDlDataSimple, err error) {
-	sql := ` SELECT * FROM base_from_trade_dalian_index WHERE 1=1 `
-	o := global.DbMap[utils.DbNameIndex]
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY data_time DESC `
-	err = o.Raw(sql, pars).Find(&item).Error
-	return
-}
-
-func AddEdbDataDlBySql(sqlStr string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.Exec(sqlStr).Error
-	return
-}
-
-func GetBaseFromDalianDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeDalianIndex, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := `SELECT * FROM base_from_trade_dalian_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	err = o.Raw(sql, indexCode).Find(&list).Error
-	return
-}
-
-func GetEdbDataDlByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_dl WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
-	return
-}
-
-func ModifyEdbDataDl(edbInfoId int64, dataTime, value string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_dl SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	err = o.Exec(sql, value, edbInfoId, dataTime).Error
-	return
-}
+//func GetBaseInfoFromDalianByIndexCode(indexCode, suffix string) (list []*BaseInfoFromDl, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_dalian_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetDlDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromDlDataSimple, err error) {
+//	sql := ` SELECT * FROM base_from_trade_dalian_index WHERE 1=1 `
+//	o := global.DbMap[utils.DbNameIndex]
+//	if condition != "" {
+//		sql += condition
+//	}
+//	sql += ` ORDER BY data_time DESC `
+//	err = o.Raw(sql, pars).Find(&item).Error
+//	return
+//}
+
+//func AddEdbDataDlBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
+
+//func GetBaseFromDalianDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeDalianIndex, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_dalian_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetEdbDataDlByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_dl WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
+
+//func ModifyEdbDataDl(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_dl SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}

+ 26 - 19
models/data_manage/edb_data_gl.go

@@ -4,20 +4,26 @@ import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"strconv"
 	"strings"
 	"time"
 )
 
-func AddEdbDataGlBySql(sqlStr string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.Exec(sqlStr).Error
-	return
-}
+//func AddEdbDataGlBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
 
 type GlData struct {
-	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
-	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
+	InputValue string `gorm:"column:DATA_VALUE" description:"日期"`
+	DataTime   string `gorm:"column:DATA_DATE" description:"值"`
+}
+
+func (m *GlData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
 }
 
 func GetGlDataByTradeCode(condition string, pars []interface{}) (item []*GlData, err error) {
@@ -39,19 +45,19 @@ func GetGlDataByTradeCode(condition string, pars []interface{}) (item []*GlData,
 	return
 }
 
-func GetEdbDataGlByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_gl WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
-	return
-}
+//func GetEdbDataGlByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_gl WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
 
-func ModifyEdbDataGl(edbInfoId int64, dataTime, value string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_gl SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	err = o.Exec(sql, value, edbInfoId, dataTime).Error
-	return
-}
+//func ModifyEdbDataGl(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_gl SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}
 
 // 刷新钢联指标数据
 func RefreshEdbDataByGl(edbInfoId int, edbCode, startDate, endDate string) (err error) {
@@ -143,6 +149,7 @@ func RefreshEdbDataByGl(edbInfoId int, edbCode, startDate, endDate string) (err
 	}
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
+		addSql = utils.ReplaceDriverKeywords("", sql)
 		err = tx.Exec(addSql, pars...).Error
 		if err != nil {
 			return err

+ 65 - 75
models/data_manage/edb_data_lt.go

@@ -1,87 +1,77 @@
 package data_manage
 
-import (
-	"encoding/json"
-	"eta/eta_task/global"
-	"eta/eta_task/utils"
-	"fmt"
-	"time"
-
-	"github.com/rdlucklib/rdluck_tools/http"
-)
-
-type EdbDataLt struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
+//type EdbDataLt struct {
+//	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
+//	EdbInfoId     int
+//	EdbCode       string
+//	DataTime      string
+//	Value         float64
+//	Status        int
+//	CreateTime    time.Time
+//	ModifyTime    time.Time
+//	DataTimestamp int64
+//}
 
 // AddEdbDataLtBySql 执行添加数据的sql
-func AddEdbDataLtBySql(sqlStr string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.Exec(sqlStr).Error
-	return
-}
+//func AddEdbDataLtBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
 
 // ModifyEdbDataLt 修改路透社数据
-func ModifyEdbDataLt(edbInfoId int64, dataTime string, value float64) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_lt SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	err = o.Exec(sql, value, edbInfoId, dataTime).Error
-	return
-}
+//func ModifyEdbDataLt(edbInfoId int64, dataTime string, value float64) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_lt SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}
 
-func GetEdbDataLtMaxOrMinDate(edbCode string) (min_date, max_date string, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_lt WHERE edb_code=? `
-	err = o.Raw(sql, edbCode).Row().Scan(&min_date, &max_date)
-	return
-}
+//func GetEdbDataLtMaxOrMinDate(edbCode string) (min_date, max_date string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_lt WHERE edb_code=? `
+//	err = o.Raw(sql, edbCode).Row().Scan(&min_date, &max_date)
+//	return
+//}
 
-func GetEdbDataLtByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_lt WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
-	return
-}
+//func GetEdbDataLtByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_lt WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
 
-func GetEdbDataLtByCode(edbCode string, size int) (items []*EdbInfoSearchData, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT * FROM edb_data_lt WHERE edb_code=? ORDER BY data_time DESC LIMIT ? `
-	err = o.Raw(sql, edbCode, size).Find(&items).Error
-	return
-}
+//func GetEdbDataLtByCode(edbCode string, size int) (items []*EdbInfoSearchData, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT * FROM edb_data_lt WHERE edb_code=? ORDER BY data_time DESC LIMIT ? `
+//	err = o.Raw(sql, edbCode, size).Find(&items).Error
+//	return
+//}
 
-type EdbDataFromLt struct {
-	Close map[int64]interface{} `json:"CLOSE"`
-}
+//type EdbDataFromLt struct {
+//	Close map[int64]interface{} `json:"CLOSE"`
+//}
 
 // QueryEdbDataByLt 获取路透社数据
-func QueryEdbDataByLt(edbCode, startDate, endDate string) (dataList map[int64]interface{}, err error) {
-	dataList = make(map[int64]interface{})
-
-	ltUrl := utils.LtServerUrl + `edbInfo/ek?EdbCode=%s&StartDate=%s&EndDate=%s`
-	ltUrl = fmt.Sprintf(ltUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("ltUrl:%s", ltUrl)
-	body, err := http.Get(ltUrl)
-	utils.FileLog.Info("lt result:%s", string(body))
-
-	if err != nil {
-		return
-	}
-	//fmt.Println(string(body))
-	item := new(EdbDataFromLt)
-	err = json.Unmarshal(body, &item)
-
-	if err != nil {
-		return
-	}
-	dataList = item.Close
-	return
-}
+//func QueryEdbDataByLt(edbCode, startDate, endDate string) (dataList map[int64]interface{}, err error) {
+//	dataList = make(map[int64]interface{})
+//
+//	ltUrl := utils.LtServerUrl + `edbInfo/ek?EdbCode=%s&StartDate=%s&EndDate=%s`
+//	ltUrl = fmt.Sprintf(ltUrl, edbCode, startDate, endDate)
+//	utils.FileLog.Info("ltUrl:%s", ltUrl)
+//	body, err := http.Get(ltUrl)
+//	utils.FileLog.Info("lt result:%s", string(body))
+//
+//	if err != nil {
+//		return
+//	}
+//	//fmt.Println(string(body))
+//	item := new(EdbDataFromLt)
+//	err = json.Unmarshal(body, &item)
+//
+//	if err != nil {
+//		return
+//	}
+//	dataList = item.Close
+//	return
+//}

+ 67 - 72
models/data_manage/edb_data_lz.go

@@ -1,79 +1,74 @@
 package data_manage
 
-import (
-	"eta/eta_task/global"
-	"eta/eta_task/utils"
-)
+//type lzSurveyData struct {
+//	DataTime   string `orm:"column(data_time)" description:"日期"`
+//	InputValue string `orm:"column(input_value)" description:"值"`
+//}
 
-type lzSurveyData struct {
-	DataTime   string `orm:"column(data_time)" description:"日期"`
-	InputValue string `orm:"column(input_value)" description:"值"`
-}
+//type LongzhongSurveyData struct {
+//	SurveyDataId         int `orm:"column(survey_data_id);pk" gorm:"primaryKey"`
+//	SurveyProductId      int
+//	ProjectQuotaId       int64
+//	BreedId              string
+//	BreedName            string
+//	QuotaId              string
+//	QuotaName            string
+//	UnitId               string
+//	UnitName             string
+//	SampleType           int64
+//	SampleId             string
+//	SampleName           string
+//	DeviceId             string
+//	Device               string
+//	ProductCraftId       string
+//	ProductCraft         string
+//	ProductLine          string
+//	InputMode            int64
+//	Frequency            int64
+//	InputValue           string
+//	TaskShouldFinishTime int64
+//	CustomId             string
+//	CustomType           int64
+//	Custom               string
+//	QuotaSampleId        int64
+//	TaskActualFinishTime int64
+//	AreaName             string
+//	ProvinceName         string
+//	ResearchStartData    int64
+//	ResearchStopData     int64
+//	DataTime             string
+//}
 
-type LongzhongSurveyData struct {
-	SurveyDataId         int `orm:"column(survey_data_id);pk" gorm:"primaryKey"`
-	SurveyProductId      int
-	ProjectQuotaId       int64
-	BreedId              string
-	BreedName            string
-	QuotaId              string
-	QuotaName            string
-	UnitId               string
-	UnitName             string
-	SampleType           int64
-	SampleId             string
-	SampleName           string
-	DeviceId             string
-	Device               string
-	ProductCraftId       string
-	ProductCraft         string
-	ProductLine          string
-	InputMode            int64
-	Frequency            int64
-	InputValue           string
-	TaskShouldFinishTime int64
-	CustomId             string
-	CustomType           int64
-	Custom               string
-	QuotaSampleId        int64
-	TaskActualFinishTime int64
-	AreaName             string
-	ProvinceName         string
-	ResearchStartData    int64
-	ResearchStopData     int64
-	DataTime             string
-}
+//func GetLzSurveyDataByTradeCode(condition string, pars []interface{}) (item []*lzSurveyData, err error) {
+//	sql := ` SELECT  a.* FROM longzhong_survey_data AS a
+//				INNER JOIN longzhong_survey_product AS b ON a.survey_product_id=b.survey_product_id
+//				WHERE 1=1 `
+//	o := global.DbMap[utils.DbNameIndex]
+//	if condition != "" {
+//		sql += condition
+//	}
+//	sql += ` ORDER BY a.data_time DESC `
+//	err = o.Raw(sql, pars).Find(&item).Error
+//	return
+//}
 
-func GetLzSurveyDataByTradeCode(condition string, pars []interface{}) (item []*lzSurveyData, err error) {
-	sql := ` SELECT  a.* FROM longzhong_survey_data AS a
-				INNER JOIN longzhong_survey_product AS b ON a.survey_product_id=b.survey_product_id
-				WHERE 1=1 `
-	o := global.DbMap[utils.DbNameIndex]
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY a.data_time DESC `
-	err = o.Raw(sql, pars).Find(&item).Error
-	return
-}
+//func GetLzSurveyDataExistByTradeCode(surveyProductId int) (items []*LongzhongSurveyData, err error) {
+//	sql := ` SELECT  * FROM longzhong_survey_data WHERE 1=1 AND survey_product_id=? `
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Raw(sql, surveyProductId).Find(&items).Error
+//	return
+//}
 
-func GetLzSurveyDataExistByTradeCode(surveyProductId int) (items []*LongzhongSurveyData, err error) {
-	sql := ` SELECT  * FROM longzhong_survey_data WHERE 1=1 AND survey_product_id=? `
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.Raw(sql, surveyProductId).Find(&items).Error
-	return
-}
+//func GetEdbDataLzByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_lz WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
 
-func GetEdbDataLzByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_lz WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
-	return
-}
-
-func ModifyEdbDataLz(edbInfoId int64, dataTime, value string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_lz SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	err = o.Exec(sql, value, edbInfoId, dataTime).Error
-	return
-}
+//func ModifyEdbDataLz(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_lz SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}

+ 156 - 165
models/data_manage/edb_data_manual.go

@@ -1,169 +1,160 @@
 package data_manage
 
-import (
-	"eta/eta_task/global"
-	"eta/eta_task/utils"
-	"fmt"
-	"strconv"
-	"strings"
-	"time"
-)
-
-func AddEdbDataManualBySql(sqlStr string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.Exec(sqlStr).Error
-	return
-}
-
-func GetEdbDataManualMaxOrMinDate(edbCode string) (min_date, max_date string, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_manual WHERE edb_code=? `
-	err = o.Raw(sql, edbCode).Row().Scan(&min_date, &max_date)
-	return
-}
-
-type ManualEdbdata struct {
-	TradeCode  string    `orm:"column(TRADE_CODE);pk" gorm:"primaryKey" description:"指标编码"`
-	Dt         string    `orm:"column(DT)" description:"日期"`
-	Close      float64   `orm:"column(CLOSE)" description:"值"`
-	ModifyTime time.Time `orm:"column(modify_time)" description:"修改时间"`
-}
-
-func GetEdbdataManualByTradeCode(condition string, pars []interface{}) (item []*ManualEdbdata, err error) {
-	sql := ` SELECT  * FROM edbdata WHERE 1=1 `
-	o := global.DbMap[utils.DbNameIndex]
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY DT DESC `
-	err = o.Raw(sql, pars).Find(&item).Error
-	return
-}
-
-func GetEdbDataManualByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_manual WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
-	return
-}
-
-func ModifyEdbDataManual(edbInfoId int64, dataTime, value string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_manual SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	err = o.Exec(sql, value, edbInfoId, dataTime).Error
-	return
-}
+//func AddEdbDataManualBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
+
+//func GetEdbDataManualMaxOrMinDate(edbCode string) (min_date, max_date string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_manual WHERE edb_code=? `
+//	err = o.Raw(sql, edbCode).Row().Scan(&min_date, &max_date)
+//	return
+//}
+
+//type ManualEdbdata struct {
+//	TradeCode  string    `orm:"column(TRADE_CODE);pk" gorm:"primaryKey" description:"指标编码"`
+//	Dt         string    `orm:"column(DT)" description:"日期"`
+//	Close      float64   `orm:"column(CLOSE)" description:"值"`
+//	ModifyTime time.Time `orm:"column(modify_time)" description:"修改时间"`
+//}
+
+//func GetEdbdataManualByTradeCode(condition string, pars []interface{}) (item []*ManualEdbdata, err error) {
+//	sql := ` SELECT  * FROM edbdata WHERE 1=1 `
+//	o := global.DbMap[utils.DbNameIndex]
+//	if condition != "" {
+//		sql += condition
+//	}
+//	sql += ` ORDER BY DT DESC `
+//	err = o.Raw(sql, pars).Find(&item).Error
+//	return
+//}
+
+//func GetEdbDataManualByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_manual WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
+
+//func ModifyEdbDataManual(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_manual SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}
 
 // 刷新手工指标数据
-func RefreshManual(item *EdbInfoList) (err error) {
-	//edbInfoId int, edbCode, startDate, endDate string
-	o := global.DbMap[utils.DbNameIndex]
-	tx := o.Begin()
-	if tx.Error != nil {
-		return tx.Error
-	}
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	edbInfoId := item.EdbInfoId
-	edbCode := item.EdbCode
-
-	if err != nil {
-		return
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-	if edbCode != "" {
-		condition += " AND TRADE_CODE=? "
-		pars = append(pars, edbCode)
-	}
-
-	//获取已存在的手工数据
-	manualDataList, err := GetEdbdataManualByTradeCode(condition, pars)
-
-	var existCondition string
-	var existPars []interface{}
-	if edbCode != "" {
-		existCondition += " AND edb_code=? "
-		existPars = append(existPars, edbCode)
-	}
-	//获取ETA指标库已存在的所有数据
-	existDataList, err := GetEdbDataListAll(existCondition, existPars, utils.DATA_SOURCE_MANUAL, utils.DATA_SUB_SOURCE_EDB, 0)
-	if err != nil {
-		return err
-	}
-
-	existMap := make(map[string]*EdbInfoSearchData)
-	for _, v := range existDataList {
-		existMap[v.DataTime] = v
-	}
-
-	addSql := ` INSERT INTO edb_data_manual(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	var isAdd bool
-	manualMap := make(map[string]*ManualEdbdata)
-	for _, v := range manualDataList {
-		item := v
-		eDate := item.Dt
-		sValue := utils.SubFloatToString(item.Close, 4)
-		if findItem, ok := existMap[v.Dt]; !ok {
-			nowStr := time.Now().Format(utils.FormatDateTime)
-			dataTime, err := time.Parse(utils.FormatDate, eDate)
-			if err != nil {
-				return err
-			}
-			timestamp := dataTime.UnixNano() / 1e6
-			timeStr := fmt.Sprintf("%d", timestamp)
-			addSql += "("
-			addSql += edbInfoIdStr + "," + "'" + edbCode + "'" + "," + "'" + eDate + "'" + "," + sValue + "," + "'" + nowStr + "'" +
-				"," + "'" + nowStr + "'" + "," + "1" + "," + "'" + timeStr + "'"
-			addSql += "),"
-			isAdd = true
-		} else {
-			if item.Close != findItem.Value {
-				err = ModifyEdbDataManual(int64(edbInfoId), eDate, sValue)
-				if err != nil {
-					return err
-				}
-			}
-		}
-		manualMap[v.Dt] = v
-	}
-
-	for _, v := range existDataList {
-		if _, ok := manualMap[v.DataTime]; !ok {
-			go DeleteEdbDataByIdAndSource(v.EdbDataId, utils.DATA_SOURCE_MANUAL, utils.DATA_SUB_SOURCE_EDB)
-		}
-	}
-
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql, pars...).Error
-		if err != nil {
-			return err
-		}
-	}
-
-	maxAndMinItem, err := GetEdbInfoMaxAndMinInfo(utils.DATA_SOURCE_MANUAL, utils.DATA_SUB_SOURCE_EDB, edbCode)
-	if err != nil {
-		if err.Error() == utils.ErrNoRow() {
-			err = nil
-		} else {
-			return err
-		}
-	} else {
-		if maxAndMinItem != nil {
-			err = ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
-			if err != nil {
-				return err
-			}
-		}
-	}
-	return
-}
+//func RefreshManual(item *EdbInfoList) (err error) {
+//	//edbInfoId int, edbCode, startDate, endDate string
+//	o := global.DbMap[utils.DbNameIndex]
+//	tx := o.Begin()
+//	if tx.Error != nil {
+//		return tx.Error
+//	}
+//	defer func() {
+//		if err != nil {
+//			tx.Rollback()
+//		} else {
+//			tx.Commit()
+//		}
+//	}()
+//
+//	edbInfoId := item.EdbInfoId
+//	edbCode := item.EdbCode
+//
+//	if err != nil {
+//		return
+//	}
+//	edbInfoIdStr := strconv.Itoa(edbInfoId)
+//	//计算数据
+//	var condition string
+//	var pars []interface{}
+//	if edbCode != "" {
+//		condition += " AND TRADE_CODE=? "
+//		pars = append(pars, edbCode)
+//	}
+//
+//	//获取已存在的手工数据
+//	manualDataList, err := GetEdbdataManualByTradeCode(condition, pars)
+//
+//	var existCondition string
+//	var existPars []interface{}
+//	if edbCode != "" {
+//		existCondition += " AND edb_code=? "
+//		existPars = append(existPars, edbCode)
+//	}
+//	//获取ETA指标库已存在的所有数据
+//	existDataList, err := GetEdbDataListAll(existCondition, existPars, utils.DATA_SOURCE_MANUAL, utils.DATA_SUB_SOURCE_EDB, 0)
+//	if err != nil {
+//		return err
+//	}
+//
+//	existMap := make(map[string]*EdbInfoSearchData)
+//	for _, v := range existDataList {
+//		existMap[v.DataTime] = v
+//	}
+//
+//	addSql := ` INSERT INTO edb_data_manual(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+//	var isAdd bool
+//	manualMap := make(map[string]*ManualEdbdata)
+//	for _, v := range manualDataList {
+//		item := v
+//		eDate := item.Dt
+//		sValue := utils.SubFloatToString(item.Close, 4)
+//		if findItem, ok := existMap[v.Dt]; !ok {
+//			nowStr := time.Now().Format(utils.FormatDateTime)
+//			dataTime, err := time.Parse(utils.FormatDate, eDate)
+//			if err != nil {
+//				return err
+//			}
+//			timestamp := dataTime.UnixNano() / 1e6
+//			timeStr := fmt.Sprintf("%d", timestamp)
+//			addSql += "("
+//			addSql += edbInfoIdStr + "," + "'" + edbCode + "'" + "," + "'" + eDate + "'" + "," + sValue + "," + "'" + nowStr + "'" +
+//				"," + "'" + nowStr + "'" + "," + "1" + "," + "'" + timeStr + "'"
+//			addSql += "),"
+//			isAdd = true
+//		} else {
+//			if item.Close != findItem.Value {
+//				err = ModifyEdbDataManual(int64(edbInfoId), eDate, sValue)
+//				if err != nil {
+//					return err
+//				}
+//			}
+//		}
+//		manualMap[v.Dt] = v
+//	}
+//
+//	for _, v := range existDataList {
+//		if _, ok := manualMap[v.DataTime]; !ok {
+//			go DeleteEdbDataByIdAndSource(v.EdbDataId, utils.DATA_SOURCE_MANUAL, utils.DATA_SUB_SOURCE_EDB)
+//		}
+//	}
+//
+//	if isAdd {
+//		addSql = strings.TrimRight(addSql, ",")
+//		err = tx.Exec(addSql, pars...).Error
+//		if err != nil {
+//			return err
+//		}
+//	}
+//
+//	maxAndMinItem, err := GetEdbInfoMaxAndMinInfo(utils.DATA_SOURCE_MANUAL, utils.DATA_SUB_SOURCE_EDB, edbCode)
+//	if err != nil {
+//		if utils.IsErrNoRow(err) {
+//			return nil
+//		} else {
+//			return err
+//		}
+//	} else {
+//		if maxAndMinItem != nil && maxAndMinItem.MinDate != "" && maxAndMinItem.MaxDate != "" {
+//			err = ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
+//			if err != nil {
+//				return err
+//			}
+//		}
+//	}
+//	return
+//}

+ 42 - 48
models/data_manage/edb_data_pb.go

@@ -1,55 +1,49 @@
 package data_manage
 
-import (
-	"eta/eta_task/global"
-	"eta/eta_task/utils"
-	"time"
-)
+//type EdbDataPb struct {
+//	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
+//	EdbInfoId     int
+//	EdbCode       string
+//	DataTime      string
+//	Value         float64
+//	Status        int
+//	CreateTime    time.Time
+//	ModifyTime    time.Time
+//	Ticker        string
+//	Field         string
+//	DataTimestamp int64
+//}
 
-type EdbDataPb struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	Ticker        string
-	Field         string
-	DataTimestamp int64
-}
+//func AddEdbDataPb(items []*EdbDataPb) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.CreateInBatches(items, utils.MultiAddNum).Error
+//	return
+//}
 
-func AddEdbDataPb(items []*EdbDataPb) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.CreateInBatches(items, utils.MultiAddNum).Error
-	return
-}
+//func ModifyEdbDataPb(edbInfoId int64, edbCode, dataTime string, value float64) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_pb SET edb_info_id=?,value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
+//	err = o.Exec(sql, edbInfoId, value, edbCode, dataTime).Error
+//	return
+//}
 
-func ModifyEdbDataPb(edbInfoId int64, edbCode, dataTime string, value float64) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_pb SET edb_info_id=?,value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
-	err = o.Exec(sql, edbInfoId, value, edbCode, dataTime).Error
-	return
-}
+//func ModifyEdbDataPbStatus(edbInfoId int64, edbCode string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_pb SET edb_info_id=?, status=1,modify_time=NOW() WHERE edb_code=? `
+//	err = o.Exec(sql, edbInfoId, edbCode).Error
+//	return
+//}
 
-func ModifyEdbDataPbStatus(edbInfoId int64, edbCode string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_pb SET edb_info_id=?, status=1,modify_time=NOW() WHERE edb_code=? `
-	err = o.Exec(sql, edbInfoId, edbCode).Error
-	return
-}
+//func GetEdbDataPbCount(edbCode, dataTime string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_pb WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, dataTime).Scan(&count).Error
+//	return
+//}
 
-func GetEdbDataPbCount(edbCode, dataTime string) (count int, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_pb WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, dataTime).Scan(&count).Error
-	return
-}
-
-func GetEdbDataPbMaxOrMinDate(edbInfoId int) (min_date, max_date string, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_pb WHERE edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).Row().Scan(&min_date, &max_date)
-	return
-}
+//func GetEdbDataPbMaxOrMinDate(edbInfoId int) (min_date, max_date string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_pb WHERE edb_info_id=? `
+//	err = o.Raw(sql, edbInfoId).Row().Scan(&min_date, &max_date)
+//	return
+//}

+ 6 - 11
models/data_manage/edb_data_quarter.go

@@ -1,13 +1,8 @@
 package data_manage
 
-import (
-	"eta/eta_task/global"
-	"eta/eta_task/utils"
-)
-
-func GetEdbDataQuarterCount(edbInfoId int) (count int, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	hsql := `SELECT COUNT(1) AS count FROM edb_data_quarter WHERE edb_info_id=? `
-	err = o.Raw(hsql, edbInfoId).Scan(&count).Error
-	return
-}
+//func GetEdbDataQuarterCount(edbInfoId int) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	hsql := `SELECT COUNT(1) AS count FROM edb_data_quarter WHERE edb_info_id=? `
+//	err = o.Raw(hsql, edbInfoId).Scan(&count).Error
+//	return
+//}

+ 202 - 211
models/data_manage/edb_data_sh.go

@@ -1,217 +1,208 @@
 package data_manage
 
-import (
-	"eta/eta_task/global"
-	"eta/eta_task/utils"
-	"fmt"
-	"strconv"
-	"strings"
-	"time"
-)
-
-type ShData struct {
-	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
-	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
-}
-
-type BaseFromShDataSimple struct {
-	Id        int `orm:"column(base_from_trade_shanghai_index_id);pk" gorm:"primaryKey"`
-	DealCode  string
-	BuyCode   string
-	SoldCode  string
-	DataTime  string
-	DealValue string
-	BuyValue  string
-	SoldValue string
-}
-
-type BaseInfoFromSh struct {
-	DealName string
-	BuyName  string
-	SoldName string
-}
-
-type BaseFromTradeShIndex struct {
-	BaseFromTradeShIndexId int `orm:"column(base_from_trade_shanghai_index_id);pk" gorm:"primaryKey"`
-	Rank                   int
-	DealShortName          string
-	DealName               string
-	DealCode               string
-	DealValue              string
-	DealChange             int
-	BuyShortName           string
-	BuyName                string
-	BuyCode                string
-	BuyValue               string
-	BuyChange              int
-	SoldShortName          string
-	SoldName               string
-	SoldCode               string
-	SoldValue              string
-	SoldChange             int
-	Frequency              string
-	ClassifyName           string
-	ClassifyType           string
-	CreateTime             time.Time
-	ModifyTime             time.Time
-	DataTime               string
-}
-
-func GetEdbDataShMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_sh WHERE edb_code=? `
-	err = o.Raw(sql, edbCode).Row().Scan(&minDate, &maxDate)
-	return
-}
+//type ShData struct {
+//	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
+//	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
+//}
+
+//type BaseFromShDataSimple struct {
+//	Id        int `orm:"column(base_from_trade_shanghai_index_id);pk" gorm:"primaryKey"`
+//	DealCode  string
+//	BuyCode   string
+//	SoldCode  string
+//	DataTime  string
+//	DealValue string
+//	BuyValue  string
+//	SoldValue string
+//}
+
+//type BaseInfoFromSh struct {
+//	DealName string
+//	BuyName  string
+//	SoldName string
+//}
+
+//type BaseFromTradeShIndex struct {
+//	BaseFromTradeShIndexId int `orm:"column(base_from_trade_shanghai_index_id);pk" gorm:"primaryKey"`
+//	Rank                   int
+//	DealShortName          string
+//	DealName               string
+//	DealCode               string
+//	DealValue              string
+//	DealChange             int
+//	BuyShortName           string
+//	BuyName                string
+//	BuyCode                string
+//	BuyValue               string
+//	BuyChange              int
+//	SoldShortName          string
+//	SoldName               string
+//	SoldCode               string
+//	SoldValue              string
+//	SoldChange             int
+//	Frequency              string
+//	ClassifyName           string
+//	ClassifyType           string
+//	CreateTime             time.Time
+//	ModifyTime             time.Time
+//	DataTime               string
+//}
+
+//func GetEdbDataShMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_sh WHERE edb_code=? `
+//	err = o.Raw(sql, edbCode).Row().Scan(&minDate, &maxDate)
+//	return
+//}
 
 // RefreshEdbDataBySh 刷新上期所指标数据
-func RefreshEdbDataBySh(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	tx := o.Begin()
-	if tx.Error != nil {
-		return tx.Error
-	}
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-	if err != nil {
-		return
-	}
-	var suffix string
-	if strings.Contains(edbCode, "deal") {
-		suffix = "deal"
-	} else if strings.Contains(edbCode, "buy") {
-		suffix = "buy"
-	} else if strings.Contains(edbCode, "sold") {
-		suffix = "sold"
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		if suffix == "deal" {
-			condition += " AND deal_code=? "
-		} else if suffix == "buy" {
-			condition += " AND buy_code=? "
-		} else {
-			condition += " AND sold_code=? "
-		}
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := GetShDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_sh(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		var value string
-		if suffix == "deal" {
-			value = v.DealValue
-		} else if suffix == "buy" {
-			value = v.BuyValue
-		} else {
-			value = v.SoldValue
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := GetEdbDataShByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				err = ModifyEdbDataSh(int64(edbInfoId), v.DataTime, value)
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql, pars...).Error
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
+//func RefreshEdbDataBySh(edbInfoId int, edbCode, startDate, endDate string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	tx := o.Begin()
+//	if tx.Error != nil {
+//		return tx.Error
+//	}
+//	defer func() {
+//		if err != nil {
+//			tx.Rollback()
+//		} else {
+//			tx.Commit()
+//		}
+//	}()
+//	if err != nil {
+//		return
+//	}
+//	var suffix string
+//	if strings.Contains(edbCode, "deal") {
+//		suffix = "deal"
+//	} else if strings.Contains(edbCode, "buy") {
+//		suffix = "buy"
+//	} else if strings.Contains(edbCode, "sold") {
+//		suffix = "sold"
+//	}
+//	edbInfoIdStr := strconv.Itoa(edbInfoId)
+//	//计算数据
+//	var condition string
+//	var pars []interface{}
+//
+//	if edbCode != "" {
+//		if suffix == "deal" {
+//			condition += " AND deal_code=? "
+//		} else if suffix == "buy" {
+//			condition += " AND buy_code=? "
+//		} else {
+//			condition += " AND sold_code=? "
+//		}
+//		pars = append(pars, edbCode)
+//	}
+//
+//	if startDate != "" {
+//		condition += " AND data_time>=? "
+//		pars = append(pars, startDate)
+//	}
+//
+//	if endDate != "" {
+//		condition += " AND data_time<=? "
+//		pars = append(pars, endDate)
+//	}
+//
+//	glDataList, err := GetShDataByTradeCode(condition, pars)
+//
+//	addSql := ` INSERT INTO edb_data_sh(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+//	var isAdd bool
+//	existMap := make(map[string]string)
+//	for _, v := range glDataList {
+//		var value string
+//		if suffix == "deal" {
+//			value = v.DealValue
+//		} else if suffix == "buy" {
+//			value = v.BuyValue
+//		} else {
+//			value = v.SoldValue
+//		}
+//		item := v
+//		itemValue := value
+//		if _, ok := existMap[v.DataTime]; !ok {
+//			count, err := GetEdbDataShByCodeAndDate(edbCode, v.DataTime)
+//			if err != nil {
+//				return err
+//			}
+//			if count <= 0 {
+//				eDate := item.DataTime
+//				sValue := itemValue
+//				if sValue != "" {
+//					dataTime, err := time.Parse(utils.FormatDate, eDate)
+//					if err != nil {
+//						return err
+//					}
+//					timestamp := dataTime.UnixNano() / 1e6
+//					timeStr := fmt.Sprintf("%d", timestamp)
+//					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
+//					isAdd = true
+//				}
+//			} else {
+//				err = ModifyEdbDataSh(int64(edbInfoId), v.DataTime, value)
+//				if err != nil {
+//					return err
+//				}
+//			}
+//		}
+//		existMap[v.DataTime] = value
+//	}
+//	if isAdd {
+//		addSql = strings.TrimRight(addSql, ",")
+//		err = tx.Exec(addSql, pars...).Error
+//		if err != nil {
+//			return err
+//		}
+//	}
+//	return
+//}
 
 // GetBaseInfoFromShByIndexCode 获取指标信息
-func GetBaseInfoFromShByIndexCode(indexCode, suffix string) (list []*BaseInfoFromSh, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := `SELECT * FROM base_from_trade_shanghai_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	err = o.Raw(sql, indexCode).Find(&list).Error
-	return
-}
-
-func GetShDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShDataSimple, err error) {
-	sql := ` SELECT * FROM base_from_trade_shanghai_index WHERE 1=1 `
-	o := global.DbMap[utils.DbNameIndex]
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY data_time DESC `
-	err = o.Raw(sql, pars).Find(&item).Error
-	return
-}
-
-func AddEdbDataShBySql(sqlStr string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.Exec(sqlStr).Error
-	return
-}
-
-func GetBaseFromShDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeShIndex, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := `SELECT * FROM base_from_trade_shanghai_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	err = o.Raw(sql, indexCode).Find(&list).Error
-	return
-}
-
-func GetEdbDataShByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_sh WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
-	return
-}
-
-func ModifyEdbDataSh(edbInfoId int64, dataTime, value string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_sh SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	err = o.Exec(sql, value, edbInfoId, dataTime).Error
-	return
-}
+//func GetBaseInfoFromShByIndexCode(indexCode, suffix string) (list []*BaseInfoFromSh, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_shanghai_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetShDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShDataSimple, err error) {
+//	sql := ` SELECT * FROM base_from_trade_shanghai_index WHERE 1=1 `
+//	o := global.DbMap[utils.DbNameIndex]
+//	if condition != "" {
+//		sql += condition
+//	}
+//	sql += ` ORDER BY data_time DESC `
+//	err = o.Raw(sql, pars).Find(&item).Error
+//	return
+//}
+
+//func AddEdbDataShBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
+
+//func GetBaseFromShDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeShIndex, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_shanghai_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetEdbDataShByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_sh WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
+
+//func ModifyEdbDataSh(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_sh SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}

+ 202 - 211
models/data_manage/edb_data_shfe.go

@@ -1,217 +1,208 @@
 package data_manage
 
-import (
-	"eta/eta_task/global"
-	"eta/eta_task/utils"
-	"fmt"
-	"strconv"
-	"strings"
-	"time"
-)
-
-type ShfeData struct {
-	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
-	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
-}
-
-type BaseFromShfeDataSimple struct {
-	Id        int `orm:"column(base_from_trade_ine_index_id);pk" gorm:"primaryKey"`
-	DealCode  string
-	BuyCode   string
-	SoldCode  string
-	DataTime  string
-	DealValue string
-	BuyValue  string
-	SoldValue string
-}
-
-type BaseInfoFromShfe struct {
-	DealName string
-	BuyName  string
-	SoldName string
-}
-
-type BaseFromTradeShfeIndex struct {
-	BaseFromTradeShfeIndexId int `orm:"column(base_from_trade_ine_index_id);pk" gorm:"primaryKey"`
-	Rank                     int
-	DealShortName            string
-	DealName                 string
-	DealCode                 string
-	DealValue                string
-	DealChange               int
-	BuyShortName             string
-	BuyName                  string
-	BuyCode                  string
-	BuyValue                 string
-	BuyChange                int
-	SoldShortName            string
-	SoldName                 string
-	SoldCode                 string
-	SoldValue                string
-	SoldChange               int
-	Frequency                string
-	ClassifyName             string
-	ClassifyType             string
-	CreateTime               time.Time
-	ModifyTime               time.Time
-	DataTime                 string
-}
-
-func GetEdbDataShfeMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_ine WHERE edb_code=? `
-	err = o.Raw(sql, edbCode).Row().Scan(&minDate, &maxDate)
-	return
-}
+//type ShfeData struct {
+//	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
+//	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
+//}
+
+//type BaseFromShfeDataSimple struct {
+//	Id        int `orm:"column(base_from_trade_ine_index_id);pk" gorm:"primaryKey"`
+//	DealCode  string
+//	BuyCode   string
+//	SoldCode  string
+//	DataTime  string
+//	DealValue string
+//	BuyValue  string
+//	SoldValue string
+//}
+
+//type BaseInfoFromShfe struct {
+//	DealName string
+//	BuyName  string
+//	SoldName string
+//}
+
+//type BaseFromTradeShfeIndex struct {
+//	BaseFromTradeShfeIndexId int `orm:"column(base_from_trade_ine_index_id);pk" gorm:"primaryKey"`
+//	Rank                     int
+//	DealShortName            string
+//	DealName                 string
+//	DealCode                 string
+//	DealValue                string
+//	DealChange               int
+//	BuyShortName             string
+//	BuyName                  string
+//	BuyCode                  string
+//	BuyValue                 string
+//	BuyChange                int
+//	SoldShortName            string
+//	SoldName                 string
+//	SoldCode                 string
+//	SoldValue                string
+//	SoldChange               int
+//	Frequency                string
+//	ClassifyName             string
+//	ClassifyType             string
+//	CreateTime               time.Time
+//	ModifyTime               time.Time
+//	DataTime                 string
+//}
+
+//func GetEdbDataShfeMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_ine WHERE edb_code=? `
+//	err = o.Raw(sql, edbCode).Row().Scan(&minDate, &maxDate)
+//	return
+//}
 
 // RefreshEdbDataByShfe 刷新上期能源指标数据
-func RefreshEdbDataByShfe(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	tx := o.Begin()
-	if tx.Error != nil {
-		return tx.Error
-	}
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-	if err != nil {
-		return
-	}
-	var suffix string
-	if strings.Contains(edbCode, "deal") {
-		suffix = "deal"
-	} else if strings.Contains(edbCode, "buy") {
-		suffix = "buy"
-	} else if strings.Contains(edbCode, "sold") {
-		suffix = "sold"
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		if suffix == "deal" {
-			condition += " AND deal_code=? "
-		} else if suffix == "buy" {
-			condition += " AND buy_code=? "
-		} else {
-			condition += " AND sold_code=? "
-		}
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := GetShfeDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_ine(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		var value string
-		if suffix == "deal" {
-			value = v.DealValue
-		} else if suffix == "buy" {
-			value = v.BuyValue
-		} else {
-			value = v.SoldValue
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := GetEdbDataShfeByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				err = ModifyEdbDataShfe(int64(edbInfoId), v.DataTime, value)
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql, pars...).Error
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
+//func RefreshEdbDataByShfe(edbInfoId int, edbCode, startDate, endDate string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	tx := o.Begin()
+//	if tx.Error != nil {
+//		return tx.Error
+//	}
+//	defer func() {
+//		if err != nil {
+//			tx.Rollback()
+//		} else {
+//			tx.Commit()
+//		}
+//	}()
+//	if err != nil {
+//		return
+//	}
+//	var suffix string
+//	if strings.Contains(edbCode, "deal") {
+//		suffix = "deal"
+//	} else if strings.Contains(edbCode, "buy") {
+//		suffix = "buy"
+//	} else if strings.Contains(edbCode, "sold") {
+//		suffix = "sold"
+//	}
+//	edbInfoIdStr := strconv.Itoa(edbInfoId)
+//	//计算数据
+//	var condition string
+//	var pars []interface{}
+//
+//	if edbCode != "" {
+//		if suffix == "deal" {
+//			condition += " AND deal_code=? "
+//		} else if suffix == "buy" {
+//			condition += " AND buy_code=? "
+//		} else {
+//			condition += " AND sold_code=? "
+//		}
+//		pars = append(pars, edbCode)
+//	}
+//
+//	if startDate != "" {
+//		condition += " AND data_time>=? "
+//		pars = append(pars, startDate)
+//	}
+//
+//	if endDate != "" {
+//		condition += " AND data_time<=? "
+//		pars = append(pars, endDate)
+//	}
+//
+//	glDataList, err := GetShfeDataByTradeCode(condition, pars)
+//
+//	addSql := ` INSERT INTO edb_data_ine(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+//	var isAdd bool
+//	existMap := make(map[string]string)
+//	for _, v := range glDataList {
+//		var value string
+//		if suffix == "deal" {
+//			value = v.DealValue
+//		} else if suffix == "buy" {
+//			value = v.BuyValue
+//		} else {
+//			value = v.SoldValue
+//		}
+//		item := v
+//		itemValue := value
+//		if _, ok := existMap[v.DataTime]; !ok {
+//			count, err := GetEdbDataShfeByCodeAndDate(edbCode, v.DataTime)
+//			if err != nil {
+//				return err
+//			}
+//			if count <= 0 {
+//				eDate := item.DataTime
+//				sValue := itemValue
+//				if sValue != "" {
+//					dataTime, err := time.Parse(utils.FormatDate, eDate)
+//					if err != nil {
+//						return err
+//					}
+//					timestamp := dataTime.UnixNano() / 1e6
+//					timeStr := fmt.Sprintf("%d", timestamp)
+//					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
+//					isAdd = true
+//				}
+//			} else {
+//				err = ModifyEdbDataShfe(int64(edbInfoId), v.DataTime, value)
+//				if err != nil {
+//					return err
+//				}
+//			}
+//		}
+//		existMap[v.DataTime] = value
+//	}
+//	if isAdd {
+//		addSql = strings.TrimRight(addSql, ",")
+//		err = tx.Exec(addSql, pars...).Error
+//		if err != nil {
+//			return err
+//		}
+//	}
+//	return
+//}
 
 // GetBaseInfoFromShfeByIndexCode 获取指标信息
-func GetBaseInfoFromShfeByIndexCode(indexCode, suffix string) (list []*BaseInfoFromShfe, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := `SELECT * FROM base_from_trade_ine_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	err = o.Raw(sql, indexCode).Find(&list).Error
-	return
-}
-
-func GetShfeDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShfeDataSimple, err error) {
-	sql := ` SELECT * FROM base_from_trade_ine_index WHERE 1=1 `
-	o := global.DbMap[utils.DbNameIndex]
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY data_time DESC `
-	err = o.Raw(sql, pars).Find(&item).Error
-	return
-}
-
-func AddEdbDataShfeBySql(sqlStr string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.Exec(sqlStr).Error
-	return
-}
-
-func GetBaseFromShfeDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeShfeIndex, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := `SELECT * FROM base_from_trade_ine_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	err = o.Raw(sql, indexCode).Find(&list).Error
-	return
-}
-
-func GetEdbDataShfeByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_ine WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
-	return
-}
-
-func ModifyEdbDataShfe(edbInfoId int64, dataTime, value string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_ine SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	err = o.Exec(sql, value, edbInfoId, dataTime).Error
-	return
-}
+//func GetBaseInfoFromShfeByIndexCode(indexCode, suffix string) (list []*BaseInfoFromShfe, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_ine_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetShfeDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShfeDataSimple, err error) {
+//	sql := ` SELECT * FROM base_from_trade_ine_index WHERE 1=1 `
+//	o := global.DbMap[utils.DbNameIndex]
+//	if condition != "" {
+//		sql += condition
+//	}
+//	sql += ` ORDER BY data_time DESC `
+//	err = o.Raw(sql, pars).Find(&item).Error
+//	return
+//}
+
+//func AddEdbDataShfeBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
+
+//func GetBaseFromShfeDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeShfeIndex, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_ine_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetEdbDataShfeByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_ine WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
+
+//func ModifyEdbDataShfe(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_ine SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}

+ 34 - 40
models/data_manage/edb_data_ths.go

@@ -1,46 +1,40 @@
 package data_manage
 
-import (
-	"eta/eta_task/global"
-	"eta/eta_task/utils"
-	"time"
-)
+//type EdbDataThs struct {
+//	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
+//	EdbInfoId     int
+//	EdbCode       string
+//	DataTime      string
+//	Value         float64
+//	Status        int
+//	CreateTime    time.Time
+//	ModifyTime    time.Time
+//	DataTimestamp int64
+//}
 
-type EdbDataThs struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
+//func AddEdbDataThs(items []*EdbDataThs) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.CreateInBatches(items, utils.MultiAddNum).Error
+//	return
+//}
 
-func AddEdbDataThs(items []*EdbDataThs) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.CreateInBatches(items, utils.MultiAddNum).Error
-	return
-}
+//func ModifyEdbDataThs(edbInfoId int64, edbCode, dataTime string, value float64) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_ths SET edb_info_id=?,value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
+//	err = o.Exec(sql, edbInfoId, value, edbCode, dataTime).Error
+//	return
+//}
 
-func ModifyEdbDataThs(edbInfoId int64, edbCode, dataTime string, value float64) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_ths SET edb_info_id=?,value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
-	err = o.Exec(sql, edbInfoId, value, edbCode, dataTime).Error
-	return
-}
+//func GetEdbDataThsCount(ebdCode, dataTime string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_ths WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, ebdCode, dataTime).Scan(&count).Error
+//	return
+//}
 
-func GetEdbDataThsCount(ebdCode, dataTime string) (count int, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_ths WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, ebdCode, dataTime).Scan(&count).Error
-	return
-}
-
-func GetEdbDataThsMaxOrMinDate(edbInfoId int) (min_date, max_date string, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_ths WHERE edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).Row().Scan(&min_date, &max_date)
-	return
-}
+//func GetEdbDataThsMaxOrMinDate(edbInfoId int) (min_date, max_date string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_ths WHERE edb_info_id=? `
+//	err = o.Raw(sql, edbInfoId).Row().Scan(&min_date, &max_date)
+//	return
+//}

+ 40 - 46
models/data_manage/edb_data_wind.go

@@ -1,53 +1,47 @@
 package data_manage
 
-import (
-	"eta/eta_task/global"
-	"eta/eta_task/utils"
-	"time"
-)
+//type EdbDataWind struct {
+//	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
+//	EdbInfoId     int
+//	EdbCode       string
+//	DataTime      string
+//	Value         float64
+//	Status        int
+//	CreateTime    time.Time
+//	ModifyTime    time.Time
+//	DataTimestamp int64
+//}
 
-type EdbDataWind struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
+//func AddEdbDataWind(items []*EdbDataWind) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.CreateInBatches(items, utils.MultiAddNum).Error
+//	return
+//}
 
-func AddEdbDataWind(items []*EdbDataWind) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.CreateInBatches(items, utils.MultiAddNum).Error
-	return
-}
+//func ModifyEdbDataWind(edbInfoId int64, edbCode, dataTime string, value float64) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_wind SET edb_info_id=?,value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
+//	err = o.Exec(sql, edbInfoId, value, edbCode, dataTime).Error
+//	return
+//}
 
-func ModifyEdbDataWind(edbInfoId int64, edbCode, dataTime string, value float64) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_wind SET edb_info_id=?,value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
-	err = o.Exec(sql, edbInfoId, value, edbCode, dataTime).Error
-	return
-}
+//func ModifyEdbDataWindStatus(edbInfoId int64, edbCode string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_wind SET edb_info_id=?, status=1,modify_time=NOW() WHERE edb_code=? `
+//	err = o.Exec(sql, edbInfoId, edbCode).Error
+//	return
+//}
 
-func ModifyEdbDataWindStatus(edbInfoId int64, edbCode string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_wind SET edb_info_id=?, status=1,modify_time=NOW() WHERE edb_code=? `
-	err = o.Exec(sql, edbInfoId, edbCode).Error
-	return
-}
+//func GetEdbDataWindCount(edbCode, dataTime string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_wind WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, dataTime).Scan(&count).Error
+//	return
+//}
 
-func GetEdbDataWindCount(edbCode, dataTime string) (count int, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_wind WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, dataTime).Scan(&count).Error
-	return
-}
-
-func GetEdbDataWindMaxOrMinDate(edbInfoId int) (min_date, max_date string, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_wind WHERE edb_info_id=? `
-	err = o.Raw(sql, edbInfoId).Row().Scan(&min_date, &max_date)
-	return
-}
+//func GetEdbDataWindMaxOrMinDate(edbInfoId int) (min_date, max_date string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_wind WHERE edb_info_id=? `
+//	err = o.Raw(sql, edbInfoId).Row().Scan(&min_date, &max_date)
+//	return
+//}

+ 140 - 155
models/data_manage/edb_data_ys.go

@@ -5,45 +5,30 @@
 
 package data_manage
 
-import (
-	"crypto/md5"
-	"encoding/hex"
-	"encoding/json"
-	"errors"
-	"eta/eta_task/global"
-	"eta/eta_task/utils"
-	"fmt"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"strconv"
-	"time"
-)
-
-type EdbDataYs struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
-
-func AddEdbDataSmm(items []*EdbDataYs) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.CreateInBatches(items, utils.MultiAddNum).Error
-	return
-}
-
-func ModifyEdbDataSmm(edbCode, dataTime string, value float64) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_ys SET value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
-	err = o.Exec(sql, value, edbCode, dataTime).Error
-	return
-}
+//type EdbDataYs struct {
+//	EdbDataId     int `orm:"column(edb_data_id);pk" gorm:"primaryKey"`
+//	EdbInfoId     int
+//	EdbCode       string
+//	DataTime      string
+//	Value         float64
+//	Status        int
+//	CreateTime    time.Time
+//	ModifyTime    time.Time
+//	DataTimestamp int64
+//}
+
+//func AddEdbDataSmm(items []*EdbDataYs) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.CreateInBatches(items, utils.MultiAddNum).Error
+//	return
+//}
+
+//func ModifyEdbDataSmm(edbCode, dataTime string, value float64) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_ys SET value=?,status=1,modify_time=NOW() WHERE edb_code=? AND data_time=? `
+//	err = o.Exec(sql, value, edbCode, dataTime).Error
+//	return
+//}
 
 /*
 
@@ -295,135 +280,135 @@ func SyncSmmIndexDataBase() {
 }
 */
 
-const (
-	dataUrl = "https://dataapi.smm.cn/GetData/" //data url (中文)
-	//dataUrl = "https://dataapi.smm.cn/GetDataEn/" //data url (english edition)
-	authUrl = "https://platform.smm.cn/usercenter/auth" // auth url (for all)
-)
+//const (
+//	dataUrl = "https://dataapi.smm.cn/GetData/" //data url (中文)
+//	//dataUrl = "https://dataapi.smm.cn/GetDataEn/" //data url (english edition)
+//	authUrl = "https://platform.smm.cn/usercenter/auth" // auth url (for all)
+//)
 
-type TokenResp struct {
-	Code int       `json:"Code"`
-	Msg  string    `json:"Msg"`
-	Data TokenData `json:"Data"`
-}
+//type TokenResp struct {
+//	Code int       `json:"Code"`
+//	Msg  string    `json:"Msg"`
+//	Data TokenData `json:"Data"`
+//}
 
-type TokenData struct {
-	Token string `json:"Token"`
-}
+//type TokenData struct {
+//	Token string `json:"Token"`
+//}
 
 // 获取token
-func getToken(userName string, password string) (string, error) {
-	encryptAuth := md5.New()
-	encryptAuth.Write([]byte(password)) //encrypt password with md5
-	newPassword := hex.EncodeToString(encryptAuth.Sum(nil))
-
-	resp, err := http.PostForm(authUrl, url.Values{"user_name": {userName}, "password": {newPassword}})
-	if err != nil {
-		return "", err
-	}
-
-	defer resp.Body.Close()
-
-	body, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		fmt.Println("reponse error", err)
-		return "", err
-	}
-
-	var bodyJsonContent TokenResp
-
-	if err = json.Unmarshal([]byte(body), &bodyJsonContent); err != nil {
-		fmt.Println(err, "unmarsal failure")
-		return "", err
-	}
-
-	var token string
-	if bodyJsonContent.Code == 0 {
-		token = bodyJsonContent.Data.Token
-	}
-
-	//print(token)
-	return token, nil
-}
+//func getToken(userName string, password string) (string, error) {
+//	encryptAuth := md5.New()
+//	encryptAuth.Write([]byte(password)) //encrypt password with md5
+//	newPassword := hex.EncodeToString(encryptAuth.Sum(nil))
+//
+//	resp, err := http.PostForm(authUrl, url.Values{"user_name": {userName}, "password": {newPassword}})
+//	if err != nil {
+//		return "", err
+//	}
+//
+//	defer resp.Body.Close()
+//
+//	body, err := ioutil.ReadAll(resp.Body)
+//	if err != nil {
+//		fmt.Println("reponse error", err)
+//		return "", err
+//	}
+//
+//	var bodyJsonContent TokenResp
+//
+//	if err = json.Unmarshal([]byte(body), &bodyJsonContent); err != nil {
+//		fmt.Println(err, "unmarsal failure")
+//		return "", err
+//	}
+//
+//	var token string
+//	if bodyJsonContent.Code == 0 {
+//		token = bodyJsonContent.Data.Token
+//	}
+//
+//	//print(token)
+//	return token, nil
+//}
 
 // request response
-type DataResp struct {
-	Code int      `json:"Code"`
-	Msg  string   `json:"Msg"`
-	Data *ApiData `json:"Data"`
-}
+//type DataResp struct {
+//	Code int      `json:"Code"`
+//	Msg  string   `json:"Msg"`
+//	Data *ApiData `json:"Data"`
+//}
 
 // api data response
-type ApiData struct {
-	Status  int        `json:"Status"` //0 no permission,1 ok
-	Field   []ApiField `json:"Field"`
-	Content [][]string `json:"Content"`
-}
+//type ApiData struct {
+//	Status  int        `json:"Status"` //0 no permission,1 ok
+//	Field   []ApiField `json:"Field"`
+//	Content [][]string `json:"Content"`
+//}
 
 // api title
-type ApiField struct {
-	Unit       string `json:"Unit"`
-	Info       string `json:"Info"`
-	Name       string `json:"Name"`
-	ColumnType string `json:"ColumnType"`
-	ColIndex   uint   `json:"ColIndex"`
-	IsDate     string `json:"IsDate"`
-}
-
-type YsResult struct {
-	Code int64 `json:"Code"`
-	Data struct {
-		CompanyList []interface{} `json:"CompanyList"`
-		Content     [][]string    `json:"Content"`
-		Field       []struct {
-			ColIndex   int64  `json:"ColIndex"`
-			ColumnType string `json:"ColumnType"`
-			Info       string `json:"Info"`
-			IsDate     string `json:"IsDate"`
-			Name       string `json:"Name"`
-			Unit       string `json:"Unit"`
-			DBColName  string `json:"db_col_name"`
-		} `json:"Field"`
-		CountPage   int64  `json:"count_page"`
-		CurrentPage int64  `json:"current_page"`
-		Frequency   string `json:"frequency"`
-		Mindate     string `json:"mindate"`
-		PageNum     int64  `json:"page_num"`
-		Status      int64  `json:"status"`
-		TotalNum    int64  `json:"total_num"`
-	} `json:"Data"`
-	Msg string `json:"Msg"`
-}
+//type ApiField struct {
+//	Unit       string `json:"Unit"`
+//	Info       string `json:"Info"`
+//	Name       string `json:"Name"`
+//	ColumnType string `json:"ColumnType"`
+//	ColIndex   uint   `json:"ColIndex"`
+//	IsDate     string `json:"IsDate"`
+//}
+
+//type YsResult struct {
+//	Code int64 `json:"Code"`
+//	Data struct {
+//		CompanyList []interface{} `json:"CompanyList"`
+//		Content     [][]string    `json:"Content"`
+//		Field       []struct {
+//			ColIndex   int64  `json:"ColIndex"`
+//			ColumnType string `json:"ColumnType"`
+//			Info       string `json:"Info"`
+//			IsDate     string `json:"IsDate"`
+//			Name       string `json:"Name"`
+//			Unit       string `json:"Unit"`
+//			DBColName  string `json:"db_col_name"`
+//		} `json:"Field"`
+//		CountPage   int64  `json:"count_page"`
+//		CurrentPage int64  `json:"current_page"`
+//		Frequency   string `json:"frequency"`
+//		Mindate     string `json:"mindate"`
+//		PageNum     int64  `json:"page_num"`
+//		Status      int64  `json:"status"`
+//		TotalNum    int64  `json:"total_num"`
+//	} `json:"Data"`
+//	Msg string `json:"Msg"`
+//}
 
 /*
  * request data
  * sdatetime,edatetime ==>format:yyyy-mm-dd,
  * apiName ==> data.metal.com(for english)/data.smm.cn (for chinese)
  */
-func getApiData(token string, apiName string, sdatetime string, edatetime string) (item *YsResult, err error) {
-	reqUrl := dataUrl + apiName
-	resp, err := http.PostForm(reqUrl, url.Values{"token": {token}, "sdatetime": {sdatetime}, "edatetime": {edatetime}})
-	if err != nil {
-		return nil, err
-	}
-
-	defer resp.Body.Close()
-	body, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		fmt.Println("response error")
-		return nil, err
-	}
-	utils.FileLog.Info("ys result:" + string(body))
-	dataJsonContent := new(YsResult)
-	if err = json.Unmarshal([]byte(body), &dataJsonContent); err != nil {
-		fmt.Println(err, "data unmarshal failure")
-		return nil, err
-	}
-
-	if dataJsonContent.Code == 200 && len(dataJsonContent.Data.Content) > 0 {
-		return dataJsonContent, nil
-	} else {
-		err = errors.New("code:" + strconv.Itoa(int(dataJsonContent.Code)) + "msg:" + dataJsonContent.Msg)
-	}
-	return nil, nil
-}
+//func getApiData(token string, apiName string, sdatetime string, edatetime string) (item *YsResult, err error) {
+//	reqUrl := dataUrl + apiName
+//	resp, err := http.PostForm(reqUrl, url.Values{"token": {token}, "sdatetime": {sdatetime}, "edatetime": {edatetime}})
+//	if err != nil {
+//		return nil, err
+//	}
+//
+//	defer resp.Body.Close()
+//	body, err := ioutil.ReadAll(resp.Body)
+//	if err != nil {
+//		fmt.Println("response error")
+//		return nil, err
+//	}
+//	utils.FileLog.Info("ys result:" + string(body))
+//	dataJsonContent := new(YsResult)
+//	if err = json.Unmarshal([]byte(body), &dataJsonContent); err != nil {
+//		fmt.Println(err, "data unmarshal failure")
+//		return nil, err
+//	}
+//
+//	if dataJsonContent.Code == 200 && len(dataJsonContent.Data.Content) > 0 {
+//		return dataJsonContent, nil
+//	} else {
+//		err = errors.New("code:" + strconv.Itoa(int(dataJsonContent.Code)) + "msg:" + dataJsonContent.Msg)
+//	}
+//	return nil, nil
+//}

+ 176 - 185
models/data_manage/edb_data_zz.go

@@ -1,191 +1,182 @@
 package data_manage
 
-import (
-	"eta/eta_task/global"
-	"eta/eta_task/utils"
-	"fmt"
-	"strconv"
-	"strings"
-	"time"
-)
-
-type ZzData struct {
-	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
-	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
-}
-
-type BaseFromZzDataSimple struct {
-	Id        int `orm:"column(base_from_trade_zhengzhou_index_id);pk" gorm:"primaryKey"`
-	DealCode  string
-	BuyCode   string
-	SoldCode  string
-	DataTime  string
-	DealValue string
-	BuyValue  string
-	SoldValue string
-}
-
-type BaseInfoFromZz struct {
-	DealName string
-	BuyName  string
-	SoldName string
-}
-
-func GetEdbDataZzMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_zz WHERE edb_code=? `
-	err = o.Raw(sql, edbCode).Row().Scan(&minDate, &maxDate)
-	return
-}
+//type ZzData struct {
+//	InputValue string `orm:"column(DATA_VALUE)" description:"日期"`
+//	DataTime   string `orm:"column(DATA_DATE)" description:"值"`
+//}
+
+//type BaseFromZzDataSimple struct {
+//	Id        int `orm:"column(base_from_trade_zhengzhou_index_id);pk" gorm:"primaryKey"`
+//	DealCode  string
+//	BuyCode   string
+//	SoldCode  string
+//	DataTime  string
+//	DealValue string
+//	BuyValue  string
+//	SoldValue string
+//}
+
+//type BaseInfoFromZz struct {
+//	DealName string
+//	BuyName  string
+//	SoldName string
+//}
+
+//func GetEdbDataZzMaxOrMinDate(edbCode string) (minDate, maxDate string, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT MIN(data_time) AS minDate,MAX(data_time) AS maxDate FROM edb_data_zz WHERE edb_code=? `
+//	err = o.Raw(sql, edbCode).Row().Scan(&minDate, &maxDate)
+//	return
+//}
 
 // RefreshEdbDataByZz 刷新郑商所指标数据
-func RefreshEdbDataByZz(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	tx := o.Begin()
-	if tx.Error != nil {
-		return tx.Error
-	}
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-	if err != nil {
-		return
-	}
-	var suffix string
-	if strings.Contains(edbCode, "deal") {
-		suffix = "deal"
-	} else if strings.Contains(edbCode, "buy") {
-		suffix = "buy"
-	} else if strings.Contains(edbCode, "sold") {
-		suffix = "sold"
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		if suffix == "deal" {
-			condition += " AND deal_code=? "
-		} else if suffix == "buy" {
-			condition += " AND buy_code=? "
-		} else {
-			condition += " AND sold_code=? "
-		}
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := GetZzDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_zz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		var value string
-		if suffix == "deal" {
-			value = v.DealValue
-		} else if suffix == "buy" {
-			value = v.BuyValue
-		} else {
-			value = v.SoldValue
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := GetEdbDataZzByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				err = ModifyEdbDataZz(int64(edbInfoId), v.DataTime, value)
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql, pars...).Error
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
+//func RefreshEdbDataByZz(edbInfoId int, edbCode, startDate, endDate string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	tx := o.Begin()
+//	if tx.Error != nil {
+//		return tx.Error
+//	}
+//	defer func() {
+//		if err != nil {
+//			tx.Rollback()
+//		} else {
+//			tx.Commit()
+//		}
+//	}()
+//	if err != nil {
+//		return
+//	}
+//	var suffix string
+//	if strings.Contains(edbCode, "deal") {
+//		suffix = "deal"
+//	} else if strings.Contains(edbCode, "buy") {
+//		suffix = "buy"
+//	} else if strings.Contains(edbCode, "sold") {
+//		suffix = "sold"
+//	}
+//	edbInfoIdStr := strconv.Itoa(edbInfoId)
+//	//计算数据
+//	var condition string
+//	var pars []interface{}
+//
+//	if edbCode != "" {
+//		if suffix == "deal" {
+//			condition += " AND deal_code=? "
+//		} else if suffix == "buy" {
+//			condition += " AND buy_code=? "
+//		} else {
+//			condition += " AND sold_code=? "
+//		}
+//		pars = append(pars, edbCode)
+//	}
+//
+//	if startDate != "" {
+//		condition += " AND data_time>=? "
+//		pars = append(pars, startDate)
+//	}
+//
+//	if endDate != "" {
+//		condition += " AND data_time<=? "
+//		pars = append(pars, endDate)
+//	}
+//
+//	glDataList, err := GetZzDataByTradeCode(condition, pars)
+//
+//	addSql := ` INSERT INTO edb_data_zz(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+//	var isAdd bool
+//	existMap := make(map[string]string)
+//	for _, v := range glDataList {
+//		var value string
+//		if suffix == "deal" {
+//			value = v.DealValue
+//		} else if suffix == "buy" {
+//			value = v.BuyValue
+//		} else {
+//			value = v.SoldValue
+//		}
+//		item := v
+//		itemValue := value
+//		if _, ok := existMap[v.DataTime]; !ok {
+//			count, err := GetEdbDataZzByCodeAndDate(edbCode, v.DataTime)
+//			if err != nil {
+//				return err
+//			}
+//			if count <= 0 {
+//				eDate := item.DataTime
+//				sValue := itemValue
+//				if sValue != "" {
+//					dataTime, err := time.Parse(utils.FormatDate, eDate)
+//					if err != nil {
+//						return err
+//					}
+//					timestamp := dataTime.UnixNano() / 1e6
+//					timeStr := fmt.Sprintf("%d", timestamp)
+//					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
+//					isAdd = true
+//				}
+//			} else {
+//				err = ModifyEdbDataZz(int64(edbInfoId), v.DataTime, value)
+//				if err != nil {
+//					return err
+//				}
+//			}
+//		}
+//		existMap[v.DataTime] = value
+//	}
+//	if isAdd {
+//		addSql = strings.TrimRight(addSql, ",")
+//		err = tx.Exec(addSql, pars...).Error
+//		if err != nil {
+//			return err
+//		}
+//	}
+//	return
+//}
 
 // GetBaseInfoFromZhengzhouByIndexCode 获取指标信息
-func GetBaseInfoFromZhengzhouByIndexCode(indexCode, suffix string) (list []*BaseInfoFromZz, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := `SELECT * FROM base_from_trade_zhengzhou_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	err = o.Raw(sql, indexCode).Find(&list).Error
-	return
-}
-
-func GetZzDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromZzDataSimple, err error) {
-	sql := ` SELECT * FROM base_from_trade_zhengzhou_index WHERE 1=1 `
-	o := global.DbMap[utils.DbNameIndex]
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY data_time DESC `
-	err = o.Raw(sql, pars).Find(&item).Error
-	return
-}
-
-func AddEdbDataZzBySql(sqlStr string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.Exec(sqlStr).Error
-	return
-}
-
-func GetBaseFromZhengzhouDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeZhengzhouIndex, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := `SELECT * FROM base_from_trade_zhengzhou_index WHERE %s_code=? `
-	sql = fmt.Sprintf(sql, suffix)
-	err = o.Raw(sql, indexCode).Find(&list).Error
-	return
-}
-
-func GetEdbDataZzByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_zz WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
-	return
-}
-
-func ModifyEdbDataZz(edbInfoId int64, dataTime, value string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_data_zz SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	err = o.Exec(sql, value, edbInfoId, dataTime).Error
-	return
-}
+//func GetBaseInfoFromZhengzhouByIndexCode(indexCode, suffix string) (list []*BaseInfoFromZz, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_zhengzhou_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetZzDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromZzDataSimple, err error) {
+//	sql := ` SELECT * FROM base_from_trade_zhengzhou_index WHERE 1=1 `
+//	o := global.DbMap[utils.DbNameIndex]
+//	if condition != "" {
+//		sql += condition
+//	}
+//	sql += ` ORDER BY data_time DESC `
+//	err = o.Raw(sql, pars).Find(&item).Error
+//	return
+//}
+
+//func AddEdbDataZzBySql(sqlStr string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.Exec(sqlStr).Error
+//	return
+//}
+
+//func GetBaseFromZhengzhouDataAllByIndexCode(indexCode, suffix string) (list []*BaseFromTradeZhengzhouIndex, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := `SELECT * FROM base_from_trade_zhengzhou_index WHERE %s_code=? `
+//	sql = fmt.Sprintf(sql, suffix)
+//	err = o.Raw(sql, indexCode).Find(&list).Error
+//	return
+//}
+
+//func GetEdbDataZzByCodeAndDate(edbCode string, startDate string) (count int, err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` SELECT COUNT(1) AS count FROM edb_data_zz WHERE edb_code=? AND data_time=? `
+//	err = o.Raw(sql, edbCode, startDate).Scan(&count).Error
+//	return
+//}
+
+//func ModifyEdbDataZz(edbInfoId int64, dataTime, value string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_data_zz SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+//	err = o.Exec(sql, value, edbInfoId, dataTime).Error
+//	return
+//}

+ 64 - 19
models/data_manage/edb_info.go

@@ -5,12 +5,13 @@ import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"strconv"
 	"time"
 )
 
 type EdbInfo struct {
-	EdbInfoId        int    `orm:"column(edb_info_id);pk" gorm:"primaryKey"`
+	EdbInfoId        int    `gorm:"primaryKey"`
 	SourceName       string `description:"来源名称"`
 	Source           int    `description:"来源id"`
 	EdbCode          string `description:"指标编码"`
@@ -34,8 +35,20 @@ type EdbInfo struct {
 	EdbType          int     `description:"指标类型:1:基础指标,2:计算指标"`
 }
 
+func (m *EdbInfo) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	return
+}
+
+func (m *EdbInfo) ConvertTimeStr() {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	return
+}
+
 type EdbInfoList struct {
-	EdbInfoId        int       `orm:"column(edb_info_id);pk" gorm:"primaryKey"`
+	EdbInfoId        int       `gorm:"primaryKey"`
 	SourceName       string    `description:"来源名称"`
 	Source           int       `description:"来源id"`
 	SubSource        int       `description:"子数据来源:0:经济数据库,1:日期序列"`
@@ -53,17 +66,32 @@ type EdbInfoList struct {
 	NoUpdate         int8      `description:"是否停止更新,0:继续更新;1:停止更新"`
 }
 
+func (m *EdbInfoList) AfterFind(db *gorm.DB) (err error) {
+	m.ModifyTime = utils.GormDateStrToDateStr(m.ModifyTime)
+	return
+}
+
 type EdbInfoSearchData struct {
 	EdbDataId int     `description:"指标数据Id"`
 	DataTime  string  `description:"数据日期"`
 	Value     float64 `description:"数据"`
 }
 
+func (m *EdbInfoSearchData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 type EdbInfoSearchDataV1 struct {
 	DataTime string `description:"数据日期"`
 	Value    string `description:"数据"`
 }
 
+func (m *EdbInfoSearchDataV1) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 func GetEdbInfoByCondition(condition string, pars []interface{}, order int) (item []*EdbInfoList, err error) {
 	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM edb_info WHERE 1=1 `
@@ -75,16 +103,16 @@ func GetEdbInfoByCondition(condition string, pars []interface{}, order int) (ite
 	} else {
 		sql += ` ORDER BY edb_info_id ASC `
 	}
-	err = o.Raw(sql, pars).Find(&item).Error
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
-func ModifyEdbDataInfoDate(edbInfoId int, maxDate string) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	sql := ` UPDATE edb_info SET end_date=?,modify_time=NOW() WHERE edb_info_id=? `
-	err = o.Exec(sql, maxDate, edbInfoId).Error
-	return
-}
+//func ModifyEdbDataInfoDate(edbInfoId int, maxDate string) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	sql := ` UPDATE edb_info SET end_date=?,modify_time=NOW() WHERE edb_info_id=? `
+//	err = o.Exec(sql, maxDate, edbInfoId).Error
+//	return
+//}
 
 type EdbInfoMaxAndMinInfo struct {
 	MinDate     string  `description:"最小日期"`
@@ -94,6 +122,12 @@ type EdbInfoMaxAndMinInfo struct {
 	LatestValue float64 `description:"最新值"`
 }
 
+func (m *EdbInfoMaxAndMinInfo) ConvertTimeStr() {
+	m.MinDate = utils.GormDateStrToDateStr(m.MinDate)
+	m.MaxDate = utils.GormDateStrToDateStr(m.MaxDate)
+	return
+}
+
 func GetEdbInfoMaxAndMinInfo(source, subSource int, edbCode string) (item *EdbInfoMaxAndMinInfo, err error) {
 	o := global.DbMap[utils.DbNameIndex]
 	sql := ``
@@ -105,10 +139,17 @@ func GetEdbInfoMaxAndMinInfo(source, subSource int, edbCode string) (item *EdbIn
 	sql = ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM %s WHERE edb_code=? `
 	sql = fmt.Sprintf(sql, tableName)
 	err = o.Raw(sql, edbCode).First(&item).Error
+	if err != nil {
+		return
+	}
+	if item != nil {
+		item.ConvertTimeStr()
+	}
 
 	var latest_value float64
 	sql = ` SELECT value AS latest_value FROM %s WHERE edb_code=? ORDER BY data_time DESC LIMIT 1 `
 	sql = fmt.Sprintf(sql, tableName)
+	sql = utils.ReplaceDriverKeywords("", sql)
 	err = o.Raw(sql, edbCode).Scan(&latest_value).Error
 	item.LatestValue = latest_value
 	return
@@ -137,7 +178,7 @@ func GetEdbDataListAll(condition string, pars []interface{}, source, subSource,
 	} else {
 		sql += ` ORDER BY data_time DESC `
 	}
-	err = o.Raw(sql, pars).Find(&item).Error
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
@@ -156,7 +197,7 @@ func GetEdbDataListAllV1(condition string, pars []interface{}, source, subSource
 	} else {
 		sql += ` ORDER BY data_time DESC `
 	}
-	err = o.Raw(sql, pars).Find(&item).Error
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
@@ -200,7 +241,7 @@ func GetEdbInfoCalculateListByCondition(condition string, pars []interface{}) (i
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).Find(&items).Error
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
@@ -215,7 +256,7 @@ func DeleteEdbDataByIdAndSource(edbDataId, source, subSource int) (err error) {
 }
 
 type EdbInfoClassify struct {
-	EdbInfoId       int    `orm:"column(edb_info_id);pk" gorm:"primaryKey"`
+	EdbInfoId       int    `gorm:"primaryKey"`
 	SourceName      string `description:"来源名称"`
 	Source          int    `description:"来源id"`
 	EdbCode         string `description:"指标编码"`
@@ -242,8 +283,7 @@ func GetAllEdbInfoClassifyListByCondition(condition string, pars []interface{})
 		sql += condition
 	}
 	sql += `ORDER BY edb_info_id ASC `
-	err = o.Raw(sql, pars).Find(&item).Error
-
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
@@ -259,7 +299,12 @@ func GetEdbInfoItemByCodeAndSource(source int, edbCode string) (item *EdbInfoIte
 	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM edb_info WHERE edb_code=? AND source = ?`
 	err = o.Raw(sql, source, edbCode).First(&item).Error
-
+	if err != nil {
+		return
+	}
+	if item != nil && item.EdbInfoId > 0 {
+		item.ConvertTimeStr()
+	}
 	return
 }
 
@@ -282,7 +327,6 @@ func GetEdbInfoMaxModifyTime(source, subSource int, edbCode string) (modifyTime
 	sql := ` SELECT MAX(modify_time) AS modify_time FROM %s WHERE edb_code=? `
 	sql = fmt.Sprintf(sql, tableName)
 	err = o.Raw(sql, edbCode).Scan(&modifyTime).Error
-
 	return
 }
 
@@ -293,7 +337,8 @@ func GetEdbInfoPageByCondition(condition string, pars []interface{}, startPage,
 		sql += condition
 	}
 	sql += ` LIMIT ?,? `
-	err = o.Raw(sql, pars, startPage, pageSize).Find(&item).Error
+	pars = append(pars, startPage, pageSize)
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
@@ -303,7 +348,7 @@ func GetEdbInfoCountByCondition(condition string, pars []interface{}) (total int
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).Scan(&total).Error
+	err = o.Raw(sql, pars...).Scan(&total).Error
 	return
 }
 

+ 19 - 11
models/data_manage/edb_info_calculate_mapping.go

@@ -4,11 +4,12 @@ import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"time"
 )
 
 type EdbInfoCalculateMapping struct {
-	EdbInfoCalculateMappingId int       `orm:"column(edb_info_calculate_mapping_id);pk" gorm:"primaryKey"`
+	EdbInfoCalculateMappingId int       `gorm:"primaryKey"`
 	EdbInfoId                 int       `description:"计算指标id"`
 	Source                    int       `description:"计算指标来源"`
 	SourceName                string    `description:"计算指标来源名称"`
@@ -24,11 +25,11 @@ type EdbInfoCalculateMapping struct {
 	ModifyTime                time.Time `description:"修改时间"`
 }
 
-func AddEdbInfoCalculateMappingMulti(items []*EdbInfoCalculateMapping) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.CreateInBatches(items, utils.MultiAddNum).Error
-	return
-}
+//func AddEdbInfoCalculateMappingMulti(items []*EdbInfoCalculateMapping) (err error) {
+//	o := global.DbMap[utils.DbNameIndex]
+//	err = o.CreateInBatches(items, utils.MultiAddNum).Error
+//	return
+//}
 
 func FixEdbInfoCalculateMapping() {
 	o := global.DbMap[utils.DbNameIndex]
@@ -78,13 +79,13 @@ func FixEdbInfoCalculateMapping() {
 			calculateMappingItem.FromTag = cv.FromTag
 			calculateMappingItem.Source = v.Source
 			calculateMappingItem.SourceName = v.SourceName
-			tx.Create(calculateMappingItem) 
+			tx.Create(calculateMappingItem)
 		}
 	}
 }
 
 type EdbInfoCalculateMappingView struct {
-	EdbInfoCalculateMappingId int       `orm:"column(edb_info_calculate_mapping_id);pk" gorm:"primaryKey"`
+	EdbInfoCalculateMappingId int       `gorm:"primaryKey"`
 	EdbInfoId                 int       `description:"计算指标id"`
 	Source                    int       `description:"计算指标来源"`
 	SourceName                string    `description:"计算指标来源名称"`
@@ -105,6 +106,12 @@ type EdbInfoCalculateMappingView struct {
 	MoveFrequency             string    `description:"移动频度"`
 }
 
+func (e *EdbInfoCalculateMappingView) AfterFind(db *gorm.DB) (err error) {
+	e.StartDate = utils.GormDateStrToDateStr(e.StartDate)
+	e.EndDate = utils.GormDateStrToDateStr(e.EndDate)
+	return
+}
+
 func GetEdbInfoCalculateMappingDetail(edbInfoId int) (item *EdbInfoCalculateMappingView, err error) {
 	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT a.*,b.start_date,b.end_date,b.calculate_formula,b.move_type,b.move_frequency FROM edb_info_calculate_mapping AS a
@@ -128,7 +135,7 @@ func GetAllCalculateEdbIdsByEdbInfoIds(edbInfoIds []int) (edbIds []int, err erro
 // EdbInfoCalculateMappingInfo
 // @Description: 计算指标与基础指标关系表
 type EdbInfoCalculateMappingInfo struct {
-	EdbInfoCalculateMappingId int       `orm:"column(edb_info_calculate_mapping_id);pk" gorm:"primaryKey"`
+	EdbInfoCalculateMappingId int       `gorm:"primaryKey"`
 	EdbInfoId                 int       `description:"计算指标id"`
 	Source                    int       `description:"计算指标来源"`
 	SourceName                string    `description:"计算指标来源名称"`
@@ -176,7 +183,7 @@ func GetEdbInfoCalculateMappingCountByCondition(condition string, pars []interfa
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).Scan(&total).Error
+	err = o.Raw(sql, pars...).Scan(&total).Error
 	return
 }
 
@@ -187,6 +194,7 @@ func GetEdbInfoCalculateMappingPageByCondition(condition string, pars []interfac
 		sql += condition
 	}
 	sql += ` LIMIT ?,? `
-	err = o.Raw(sql, pars, startPage, pageSize).Find(&item).Error
+	pars = append(pars, startPage, pageSize)
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }

+ 1 - 1
models/data_manage/edb_info_relation.go

@@ -7,7 +7,7 @@ import (
 )
 
 type EdbInfoRelation struct {
-	EdbInfoRelationId  int       `orm:"column(edb_info_relation_id);pk" gorm:"primaryKey"`
+	EdbInfoRelationId  int       `gorm:"primaryKey"`
 	EdbInfoId          int       `description:"指标id"`
 	Source             int       `description:"来源:1:同花顺,2:wind,3:彭博,4:指标运算,5:累计值转月,6:同比值,7:同差值,8:N数值移动平均计算,9:手工指标,10:隆众"`
 	EdbName            string    `description:"指标名称"`

+ 10 - 3
models/data_manage/edb_info_update_log.go

@@ -3,11 +3,12 @@ package data_manage
 import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 type EdbInfoUpdateLog struct {
-	Id                     int       `orm:"column(id);pk" gorm:"primaryKey"`
+	Id                     int       `gorm:"primaryKey"`
 	EdbInfoId              int       `description:"指标id"`
 	SourceName             string    `description:"来源名称"`
 	Source                 int       `description:"来源id"`
@@ -39,6 +40,13 @@ type EdbInfoUpdateLog struct {
 	UpdateType             int       `description:"变更类型,0:数据明细变更,1:基础信息变更, 2:新增指标"`
 }
 
+func (m *EdbInfoUpdateLog) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.LatestDate = utils.GormDateStrToDateStr(m.LatestDate)
+	return
+}
+
 func GetEdbInfoUpdateLogByCondition(condition string, pars []interface{}) (item []*EdbInfoUpdateLog, err error) {
 	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT * FROM edb_info_update_log WHERE 1=1 `
@@ -46,7 +54,6 @@ func GetEdbInfoUpdateLogByCondition(condition string, pars []interface{}) (item
 		sql += condition
 	}
 	sql += `ORDER BY id ASC limit 0,10  `
-	err = o.Raw(sql, pars).Find(&item).Error
-
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }

+ 1 - 1
models/data_manage/edb_refresh/edb_refresh_config.go

@@ -76,6 +76,6 @@ func GetEdbRefreshConfigListByCondition(condition string, pars []interface{}) (l
 		sql += condition
 	}
 	sql += ` ORDER BY edb_refresh_config_id ASC `
-	err = o.Raw(sql, pars).Find(&list).Error
+	err = o.Raw(sql, pars...).Find(&list).Error
 	return
 }

+ 1 - 1
models/data_manage/edb_refresh/edb_refresh_mapping.go

@@ -108,6 +108,6 @@ WHERE b.edb_refresh_config_id IN (` + utils.GetOrmInReplace(num) + `) `
 		sql += ` AND b.source not in (` + utils.GetOrmInReplace(sourceNum) + `) `
 		pars = append(pars, sourceList)
 	}
-	err = o.Raw(sql, pars).Find(&list).Error
+	err = o.Raw(sql, pars...).Find(&list).Error
 	return
 }

+ 1 - 1
models/data_manage/edb_refresh/edb_refresh_source.go

@@ -10,7 +10,7 @@ import (
 // @Description: 刷新的数据源表
 type EdbRefreshSource struct {
 	Id            int       `gorm:"column:id;primaryKey;autoIncrement" orm:"column(id);pk"`
-	Source        int       `orm:"column(source)" description:"来源"`
+	Source        int       `gorm:"column:source" description:"来源"`
 	SourceName    string    `description:"来源名称"`
 	SubSource     int       `description:"子数据来源:0:经济数据库,1:日期序列"`
 	SubSourceName string    `description:"子来源名称"`

+ 2 - 2
models/data_manage/edb_source.go

@@ -17,7 +17,7 @@ var (
 
 // EdbSource 指标来源表
 type EdbSource struct {
-	EdbSourceId      int    `orm:"column(edb_source_id);pk" gorm:"primaryKey"`
+	EdbSourceId      int    `gorm:"primaryKey"`
 	SourceName       string `description:"指标来源名称"`
 	TableName        string `description:"数据表名"`
 	EdbAddMethod     string `description:"指标新增接口"`
@@ -46,7 +46,7 @@ func GetEdbSourceItemsByCondition(condition string, pars []interface{}, fieldArr
 // GetEdbSourceItemByCondition 获取指标来源
 func GetEdbSourceItemByCondition(condition string, pars []interface{}) (item *EdbSource, err error) {
 	sql := fmt.Sprintf(`SELECT * FROM edb_source WHERE 1=1 %s`, condition)
-	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).First(&item).Error
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).First(&item).Error
 	return
 }
 

+ 12 - 6
models/data_manage/edb_update_log.go

@@ -7,7 +7,7 @@ import (
 )
 
 type EdbUpdateLog struct {
-	Id          int64     `json:"id" orm:"column(id);pk" gorm:"primaryKey"`
+	Id          int64     `json:"id" gorm:"primaryKey;autoIncrement"`
 	OpDbName    string    `json:"op_db_name"`    // 库名
 	OpTableName string    `json:"op_table_name"` // 表名
 	OpType      string    `json:"op_type"`       // 变更类型
@@ -30,7 +30,6 @@ func GetEdbUpdateLogMaxId() (maxId int64, err error) {
 	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT id FROM edb_update_log WHERE 1=1 ORDER BY id desc limit 1 `
 	err = o.Raw(sql).Scan(&maxId).Error
-
 	return
 }
 
@@ -44,7 +43,6 @@ func GetEdbUpdateLogMaxHandleId() (maxId int64, err error) {
 	o := global.DbMap[utils.DbNameIndex]
 	sql := ` SELECT id FROM edb_update_log WHERE 1=1 AND is_handle = 1 ORDER BY id desc limit 1 `
 	err = o.Raw(sql).Scan(&maxId).Error
-
 	return
 }
 
@@ -63,8 +61,7 @@ func GetEdbUpdateLogByCondition(condition string, pars []interface{}) (item []*E
 		sql += condition
 	}
 	sql += ` ORDER BY id ASC limit 500 `
-	err = o.Raw(sql, pars).Find(&item).Error
-
+	err = o.Raw(sql, pars...).Find(&item).Error
 	return
 }
 
@@ -82,7 +79,6 @@ func HandleUpdateLogByIds(idList []int64, modifyTime string) (err error) {
 	o := global.DbMap[utils.DbNameIndex]
 	sql := ` UPDATE edb_update_log set is_handle=1 ,modify_time = ?  WHERE id in (` + utils.GetOrmInReplace(num) + `) `
 	err = o.Exec(sql, modifyTime, idList).Error
-
 	return
 }
 
@@ -136,6 +132,16 @@ type EdbInfoItem struct {
 	UnitEn           string  `json:"unit_en"`
 }
 
+func (m *EdbInfoItem) ConvertTimeStr() {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.LatestDate = utils.GormDateStrToDateStr(m.LatestDate)
+	m.DataUpdateTime = utils.GormDateStrToDateTimeStr(m.DataUpdateTime)
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	return
+}
+
 type EdbData struct {
 	EdbDataId int32  `orm:"column(edb_data_id);pk" gorm:"primaryKey" json:"edb_data_id"`
 	EdbInfoId int32  `json:"edb_info_id"` // 指标id

+ 1 - 1
models/data_manage/excel/excel_info.go

@@ -51,6 +51,6 @@ func (m *ExcelInfo) GetItemsByCondition(condition string, pars []interface{}, fi
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).Find(&items).Error
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }

+ 6 - 5
models/data_manage/factor_edb_series_chart_mapping.go

@@ -14,7 +14,7 @@ const (
 
 // FactorEdbSeriesChartMapping 因子指标系列-图表关联
 type FactorEdbSeriesChartMapping struct {
-	FactorEdbSeriesChartMappingId int       `orm:"column(factor_edb_series_chart_mapping_id);pk" gorm:"primaryKey"`
+	FactorEdbSeriesChartMappingId int       `gorm:"primaryKey"`
 	ChartInfoId                   int       `description:"图表ID"`
 	Source                        int       `description:"图表来源, 同chart_info表source"`
 	CalculateType                 int       `description:"计算方式: 1-相关性"`
@@ -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 = o.Raw(sql, pars).First(&item).Error
+	err = o.Raw(sql, pars...).First(&item).Error
 	return
 }
 
 func (m *FactorEdbSeriesChartMapping) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
 	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).Scan(&count).Error
+	err = o.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 = o.Raw(sql, pars).Find(&items).Error
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 
@@ -150,7 +150,8 @@ func (m *FactorEdbSeriesChartMapping) GetPageItemsByCondition(condition string,
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	err = o.Raw(sql, pars, startSize, pageSize).Find(&items).Error
+	pars = append(pars, startSize, pageSize)
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 

+ 5 - 5
models/data_manage/factor_edb_series_mapping.go

@@ -10,7 +10,7 @@ import (
 
 // FactorEdbSeriesMapping 因子指标系列-指标关联表
 type FactorEdbSeriesMapping struct {
-	FactorEdbSeriesMappingId int       `orm:"column(factor_edb_series_mapping_id);pk" gorm:"primaryKey"`
+	FactorEdbSeriesMappingId int       `gorm:"primaryKey"`
 	FactorEdbSeriesId        int       `description:"因子指标系列ID"`
 	EdbInfoId                int       `description:"指标ID"`
 	EdbCode                  string    `description:"指标编码"`
@@ -86,7 +86,7 @@ func (m *FactorEdbSeriesMapping) RemoveByCondition(condition string, pars []inte
 	}
 	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
-	err = o.Exec(sql, pars).Error
+	err = o.Exec(sql, pars...).Error
 	return
 }
 
@@ -104,14 +104,14 @@ func (m *FactorEdbSeriesMapping) GetItemByCondition(condition string, pars []int
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).First(&item).Error
+	err = o.Raw(sql, pars...).First(&item).Error
 	return
 }
 
 func (m *FactorEdbSeriesMapping) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
 	o := global.DbMap[utils.DbNameIndex]
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = o.Raw(sql, pars).Scan(&count).Error
+	err = o.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
@@ -126,7 +126,7 @@ func (m *FactorEdbSeriesMapping) GetItemsByCondition(condition string, pars []in
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).Find(&items).Error
+	err = o.Raw(sql, pars...).Find(&items).Error
 	return
 }
 

+ 2 - 2
models/data_manage/future_good/chart_info_future_good_profit.go

@@ -13,8 +13,8 @@ type ChartInfoFutureGoodProfit struct {
 	ChartInfoId  int       `gorm:"column:chart_info_id;primaryKey;autoIncrement" description:"商品利润图表ID(chart_info表source=5的)"`
 	ProfitName   string    `description:"利润名称"`
 	ProfitNameEn string    `description:"利润英文名称"`
-	XValue       string    `description:"X轴数据值"`
-	YValue       string    `description:"Y轴数据值"`
+	XValue       string    `gorm:"column:x_value" description:"X轴数据值"`
+	YValue       string    `gorm:"column:y_value" description:"Y轴数据值"`
 	CreateTime   time.Time `description:"创建时间"`
 	ModifyTime   time.Time `description:"更新时间"`
 }

+ 18 - 1
models/data_manage/future_good/future_good_edb_info.go

@@ -3,12 +3,13 @@ package future_good
 import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 // FutureGoodEdbInfo 期货指标表
 type FutureGoodEdbInfo struct {
-	FutureGoodEdbInfoId int       `orm:"column(future_good_edb_info_id);pk"`
+	FutureGoodEdbInfoId int       `gorm:"column:future_good_edb_info_id;primaryKey;autoIncrement"`
 	FutureGoodEdbCode   string    `description:"期货指标code"`
 	FutureGoodEdbName   string    `description:"期货指标名称"`
 	FutureGoodEdbNameEn string    `description:"期货指标英文名称"`
@@ -26,12 +27,28 @@ type FutureGoodEdbInfo struct {
 	ModifyTime          time.Time
 }
 
+func (m *FutureGoodEdbInfo) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	return
+}
+
+func (m *FutureGoodEdbInfo) ConvertTimeStr() {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	return
+}
+
 // GetFutureGoodEdbInfo 期货指标
 func GetFutureGoodEdbInfo(edbInfoId int) (item *FutureGoodEdbInfo, err error) {
 	o := global.DbMap[utils.DbNameIndex]
 	sql := `SELECT * FROM future_good_edb_info WHERE future_good_edb_info_id = ? `
 	sql += ` ORDER BY future_good_edb_info_id DESC `
 	err = o.Raw(sql, edbInfoId).First(&item).Error
+	if err != nil {
+		return
+	}
+	if item != nil && item.FutureGoodEdbInfoId > 0 {
+		item.ConvertTimeStr()
+	}
 	return
 }
 

+ 4 - 6
models/data_manage/holiday.go

@@ -1,8 +1,6 @@
 package data_manage
 
-import "time"
-
-type Holiday struct {
-	Year        int
-	HolidayDate time.Time
-}
+//type Holiday struct {
+//	Year        int
+//	HolidayDate time.Time
+//}

+ 18 - 4
models/data_manage/meeting_probabilities.go

@@ -1,14 +1,16 @@
 package data_manage
 
 import (
+	sql2 "database/sql"
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 // MeetingProbabilities excel表格详情表
 type MeetingProbabilities struct {
-	MeetingInfoId int       `orm:"column(meeting_info_id);pk" gorm:"primaryKey"`
+	MeetingInfoId int       `gorm:"primaryKey"`
 	Content       string    `description:"表格内容"`
 	ExcelImage    string    `description:"表格图片"`
 	DateTime      string    `description:"数据日期"`
@@ -17,6 +19,11 @@ type MeetingProbabilities struct {
 	CreateTime    time.Time `description:"创建日期"`
 }
 
+func (m *MeetingProbabilities) AfterFind(db *gorm.DB) (err error) {
+	m.DateTime = utils.GormDateStrToDateStr(m.DateTime)
+	return
+}
+
 type MeetingProbabilitiesResp struct {
 	Ret     int
 	Msg     string
@@ -101,9 +108,16 @@ type AddExcelInfoReq struct {
 	TableData       interface{} `description:"自定义表格的数据内容"`
 }
 
-func GetMeetingProbabilitiesMaxDate() (max_date time.Time, err error) {
+func GetMeetingProbabilitiesMaxDate() (maxDate time.Time, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT max(a.date_time)as max_date FROM meeting_probabilities as a `
-	err = o.Raw(sql).Scan(&max_date).Error
+	sql := ` SELECT max(a.date_time) AS max_date FROM meeting_probabilities as a `
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		maxDate = timeNull.Time
+	}
 	return
 }

+ 69 - 19
models/data_manage/trade_position_analysis.go

@@ -1,9 +1,11 @@
 package data_manage
 
 import (
+	sql2 "database/sql"
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
 	"fmt"
+	"gorm.io/gorm"
 	"time"
 	"unsafe"
 )
@@ -24,6 +26,16 @@ type TradePositionTop struct {
 	Rank          int       //排名
 }
 
+func (m *TradePositionTop) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
+func (m *TradePositionTop) ConvertTimeStr() {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	return
+}
+
 type TradePositionDalianTop struct {
 	TradePositionTop
 }
@@ -223,14 +235,14 @@ func GetTradePositionTopByExchangeDataTimeTypeClassify(exchange string, dataTime
 func MultiInsertTradeBaseDataToTop(exchange string, startDate, endDate string) (err error) {
 	o := global.DbMap[utils.DbNameIndex]
 	now := time.Now().Format(utils.FormatDateTime)
-	sql1 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,`rank`,create_time,modify_time) " +
-		"SELECT classify_name,classify_type,buy_short_name,buy_value,buy_change,data_time,1,0,`rank`,?,? FROM base_from_trade_" + exchange + "_index where `rank` <50 and buy_short_name !='' and buy_short_name !=' ' and data_time between ? and ?"
+	sql1 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time) " +
+		"SELECT classify_name,classify_type,buy_short_name,buy_value,buy_change,data_time,1,0,rank,?,? FROM base_from_trade_" + exchange + "_index where rank <50 and buy_short_name !='' and buy_short_name !=' ' and data_time between ? and ?"
 	err = o.Exec(sql1, now, now, startDate, endDate).Error
 	if err != nil {
 		return
 	}
-	sql2 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,`rank`,create_time,modify_time) " +
-		"SELECT classify_name,classify_type,sold_short_name,sold_value,sold_change,data_time,2,0,`rank`,?,? FROM base_from_trade_" + exchange + "_index where `rank` <50 and sold_short_name !='' and sold_short_name !=' ' and data_time between ? and ?"
+	sql2 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time) " +
+		"SELECT classify_name,classify_type,sold_short_name,sold_value,sold_change,data_time,2,0,rank,?,? FROM base_from_trade_" + exchange + "_index where rank <50 and sold_short_name !='' and sold_short_name !=' ' and data_time between ? and ?"
 	err = o.Exec(sql2, now, now, startDate, endDate).Error
 	return
 }
@@ -238,14 +250,14 @@ func MultiInsertTradeBaseDataToTop(exchange string, startDate, endDate string) (
 func MultiInsertTradeBaseDataToTopByClassify(exchange string, startDate, endDate string, classifyNames, classifyTypes []string) (err error) {
 	o := global.DbMap[utils.DbNameIndex]
 	now := time.Now().Format(utils.FormatDateTime)
-	sql1 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,`rank`,create_time,modify_time)" +
-		"SELECT classify_name,classify_type,buy_short_name,buy_value,buy_change,data_time,1,0,`rank`,?,? FROM base_from_trade_" + exchange + "_index where `rank` <50 and buy_short_name !='' and buy_short_name !=' ' and data_time between ? and ? and classify_name in (" + utils.GetOrmInReplace(len(classifyNames)) + ")  and classify_type in (" + utils.GetOrmInReplace(len(classifyTypes)) + ")"
+	sql1 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time)" +
+		"SELECT classify_name,classify_type,buy_short_name,buy_value,buy_change,data_time,1,0,rank,?,? FROM base_from_trade_" + exchange + "_index where rank <50 and buy_short_name !='' and buy_short_name !=' ' and data_time between ? and ? and classify_name in (" + utils.GetOrmInReplace(len(classifyNames)) + ")  and classify_type in (" + utils.GetOrmInReplace(len(classifyTypes)) + ")"
 	err = o.Exec(sql1, now, now, startDate, endDate, classifyNames, classifyTypes).Error
 	if err != nil {
 		return
 	}
-	sql2 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,`rank`,create_time,modify_time)" +
-		"SELECT classify_name,classify_type,sold_short_name,sold_value,sold_change,data_time,2,0,`rank`,?,? FROM base_from_trade_" + exchange + "_index where `rank` <50 and sold_short_name !='' and sold_short_name !=' ' and data_time between ? and ? and classify_name in (" + utils.GetOrmInReplace(len(classifyNames)) + ")  and classify_type in (" + utils.GetOrmInReplace(len(classifyTypes)) + ")"
+	sql2 := "INSERT INTO trade_position_" + exchange + "_top(classify_name,classify_type,deal_short_name,deal_value,deal_change,data_time,deal_type,source_type,rank,create_time,modify_time)" +
+		"SELECT classify_name,classify_type,sold_short_name,sold_value,sold_change,data_time,2,0,rank,?,? FROM base_from_trade_" + exchange + "_index where rank <50 and sold_short_name !='' and sold_short_name !=' ' and data_time between ? and ? and classify_name in (" + utils.GetOrmInReplace(len(classifyNames)) + ")  and classify_type in (" + utils.GetOrmInReplace(len(classifyTypes)) + ")"
 	err = o.Exec(sql2, now, now, startDate, endDate, classifyNames, classifyTypes).Error
 	return
 }
@@ -273,17 +285,15 @@ type BaseFromTradeClassify struct {
 // GetAllBaseFromTradeClassify 获取所有的交易所分类列表
 func GetAllBaseFromTradeClassify() (list []*BaseFromTradeClassify, err error) {
 	sql := `SELECT * FROM base_from_trade_classify   `
-
 	o := global.DbMap[utils.DbNameIndex]
 	err = o.Raw(sql).Find(&list).Error
-
 	return
 }
 
 // Update 更新
 func (m *BaseFromTradeClassify) Update(cols []string) (err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	err = o.Select(cols).Updates(m).Error 
+	err = o.Select(cols).Updates(m).Error
 	return
 }
 
@@ -351,15 +361,48 @@ func MultiUpdatePositionTopChangeVal(exchange string, updates []UpdateChangeVal)
 
 func GetTradePositionOriginClassifyCountByExchangeDataTime(exchange string, startDate, endDate string) (count int64, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := "SELECT COUNT(DISTINCT classify_name, classify_type) FROM base_from_trade_" + exchange + "_index where `rank` <50 and (buy_short_name !='' or sold_short_name !='' ) and (buy_short_name !=' ' or sold_short_name !=' ' ) and data_time >= ? and data_time <= ?"
-	err = o.Raw(sql, startDate, endDate).Scan(&count).Error
+	var pars []interface{}
+	var sql string
+	if utils.DbDriverName == utils.DbDriverByDm {
+		// DM不支持COUNT(DISTINCT column1, column2)这种写法
+		sql = `SELECT COUNT(*)
+			FROM (
+				SELECT DISTINCT classify_name, classify_type
+				FROM base_from_trade_ine_index
+				WHERE rank < 50 
+				  AND (buy_short_name != '' OR sold_short_name != '') 
+				  AND (buy_short_name != ' ' OR sold_short_name != ' ') 
+				  AND data_time >= ? 
+				  AND data_time <= ?
+			)`
+		pars = append(pars, startDate, endDate)
+	} else {
+		sql = "SELECT COUNT(DISTINCT classify_name, classify_type) FROM base_from_trade_" + exchange + "_index where rank <50 and (buy_short_name !='' or sold_short_name !='' ) and (buy_short_name !=' ' or sold_short_name !=' ' ) and data_time >= ? and data_time <= ?"
+		pars = append(pars, startDate, endDate)
+	}
+	err = o.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
 func GetTradePositionTopClassifyCountByExchangeDataTime(exchange string, startDate, endDate string) (count int64, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := "SELECT COUNT(DISTINCT classify_name, classify_type)  FROM trade_position_" + exchange + "_top where data_time >= ? and data_time <= ? and deal_type in (1,2) "
-	err = o.Raw(sql, startDate, endDate).Scan(&count).Error
+	var pars []interface{}
+	var sql string
+	if utils.DbDriverName == utils.DbDriverByDm {
+		sql = `SELECT COUNT(*)
+			FROM (
+				SELECT DISTINCT classify_name, classify_type
+				FROM trade_position_ine_top
+				WHERE data_time >= ?
+				  AND data_time <= ?
+				  AND deal_type IN (1, 2)
+			)`
+		pars = append(pars, startDate, endDate)
+	} else {
+		sql = "SELECT COUNT(DISTINCT classify_name, classify_type)  FROM trade_position_" + exchange + "_top where data_time >= ? and data_time <= ? and deal_type in (1,2) "
+		pars = append(pars, startDate, endDate)
+	}
+	err = o.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
@@ -370,7 +413,7 @@ type TradePositionClassifyInfo struct {
 
 func GetTradePositionOriginClassifyByExchangeDataTime(exchange string, startDate, endDate string) (list []TradePositionClassifyInfo, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := "SELECT DISTINCT classify_name, classify_type FROM base_from_trade_" + exchange + "_index where `rank` <50 and (buy_short_name !='' or sold_short_name !='' ) and (buy_short_name !=' ' or sold_short_name !=' ' ) and data_time >= ? and data_time <= ?"
+	sql := "SELECT DISTINCT classify_name, classify_type FROM base_from_trade_" + exchange + "_index where rank <50 and (buy_short_name !='' or sold_short_name !='' ) and (buy_short_name !=' ' or sold_short_name !=' ' ) and data_time >= ? and data_time <= ?"
 	err = o.Raw(sql, startDate, endDate).Find(&list).Error
 	return
 }
@@ -396,15 +439,22 @@ type GetFirstBaseFromTradeIndeDate struct {
 
 func GetFirstBaseFromTradeIndexByDate(exchange string) (item *GetFirstBaseFromTradeIndeDate, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := "SELECT * FROM base_from_trade_" + exchange + "_index where `rank` < 50 order by data_time asc"
+	sql := "SELECT * FROM base_from_trade_" + exchange + "_index where rank < 50 order by data_time asc"
 	err = o.Raw(sql).First(&item).Error
 	return
 }
 
 // 获取持仓分析的最新数据
-func GetTradePositionTopLastedDataTime(exchange string) (data_time time.Time, err error) {
+func GetTradePositionTopLastedDataTime(exchange string) (dataTime time.Time, err error) {
 	o := global.DbMap[utils.DbNameIndex]
 	sql := "SELECT max(data_time) FROM trade_position_" + exchange + "_top"
-	err = o.Raw(sql).Scan(&data_time).Error
+	var timeNull sql2.NullTime
+	err = o.Raw(sql).Scan(&timeNull).Error
+	if err != nil {
+		return
+	}
+	if timeNull.Valid {
+		dataTime = timeNull.Time
+	}
 	return
 }

+ 118 - 33
models/data_manage/trade_position_analysis_guangzhou.go

@@ -21,8 +21,8 @@ FROM
 WHERE
 	a.data_time between ? and ?
 	and c.base_from_trade_guangzhou_classify_id in (7,8)
-	and c.index_name like "%持买单量%"
-	and c.index_name not like "%日成交持仓排名%"`
+	and c.index_name like '%持卖单量%'
+	and c.index_name not like '%日成交持仓排名%'`
 	err = o.Exec(sql1, now, now, startDate, endDate).Error
 	if err != nil {
 		return
@@ -38,14 +38,45 @@ FROM
 WHERE
 	a.data_time between ? and ?
 	and c.base_from_trade_guangzhou_classify_id in (7,8)
-	and c.index_name like "%持卖单量%"
-	and c.index_name not like "%日成交持仓排名%"`
+	and c.index_name like '%持卖单量%'
+	and c.index_name not like '%日成交持仓排名%'`
 	err = o.Exec(sql2, now, now, startDate, endDate).Error
 	if err != nil {
 		return
 	}
+
 	//更新买单、卖单榜单排名字段
-	sql3 := `update trade_position_guangzhou_top s
+	var sql3 string
+	var updatePars []interface{}
+	if utils.DbDriverName == utils.DbDriverByDm {
+		sql3 = `WITH ranked_data AS (
+				SELECT
+					classify_type,
+					deal_short_name,
+					data_time,
+					deal_type,
+					ROW_NUMBER() OVER (
+						PARTITION BY data_time, deal_type, classify_type
+						ORDER BY deal_value DESC
+					) AS row_number
+				FROM
+					trade_position_guangzhou_top
+				WHERE
+					data_time BETWEEN ? AND ?
+			)
+			UPDATE trade_position_guangzhou_top s
+			SET s.rank = (
+				SELECT t.row_number
+				FROM ranked_data t
+				WHERE s.classify_type = t.classify_type
+				  AND s.deal_short_name = t.deal_short_name
+				  AND s.data_time = t.data_time
+				  AND s.deal_type = t.deal_type
+			)
+			WHERE s.data_time BETWEEN ? AND ?`
+		updatePars = append(updatePars, startDate, endDate, startDate, endDate)
+	} else {
+		sql3 = `update trade_position_guangzhou_top s
 JOIN (
 SELECT
   	classify_type,
@@ -66,9 +97,10 @@ ORDER BY
 	ON s.classify_type = t.classify_type AND s.deal_short_name = t.deal_short_name 	
 	AND s.data_time = t.data_time AND s.deal_type = t.deal_type
 SET s.rank = t.row_number where s.data_time between ? and ?;`
+		updatePars = append(updatePars, startDate, endDate, startDate, endDate)
+	}
 
-	err = o.Exec(sql3, startDate, endDate, startDate, endDate).Error
-
+	err = o.Exec(sql3, updatePars...).Error
 	return
 }
 
@@ -82,8 +114,8 @@ FROM
 	LEFT JOIN base_from_trade_guangzhou_index c ON a.base_from_trade_guangzhou_index_id = c.base_from_trade_guangzhou_index_id
 WHERE
     c.base_from_trade_guangzhou_classify_id IN ( 7, 8 ) 
-	AND ( c.index_name LIKE "%持买单量%" OR c.index_name LIKE "%持卖单量%" ) 
-	AND c.index_name NOT LIKE "%日成交持仓排名%" 
+	AND ( c.index_name LIKE '%持买单量%' OR c.index_name LIKE '%持卖单量%' ) 
+	AND c.index_name NOT LIKE '%日成交持仓排名%' 
 ORDER BY
 	a.data_time asc`
 	err = o.Raw(sql).Scan(&dates).Error
@@ -92,7 +124,25 @@ ORDER BY
 
 func GetTradePositionOriginGuangzhouClassifyCountByExchangeDataTime(exchange string, startDate, endDate string) (count int64, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := `SELECT
+	var sql string
+	var pars []interface{}
+	if utils.DbDriverName == utils.DbDriverByDm {
+		sql = `SELECT COUNT(*)
+			FROM (
+				SELECT DISTINCT n.classify_code, n.contract
+				FROM base_from_trade_guangzhou_data a
+				LEFT JOIN base_from_trade_guangzhou_index c 
+					ON a.base_from_trade_guangzhou_index_id = c.base_from_trade_guangzhou_index_id
+				LEFT JOIN base_from_trade_guangzhou_contract n 
+					ON c.base_from_trade_guangzhou_contract_id = n.base_from_trade_guangzhou_contract_id
+				WHERE a.data_time BETWEEN ? AND ?
+				  AND c.base_from_trade_guangzhou_classify_id IN (7, 8)
+				  AND (c.index_name LIKE '%持买单量%' OR c.index_name LIKE '%持卖单量%')
+				  AND c.index_name NOT LIKE '%日成交持仓排名%'
+			) AS distinct_records`
+		pars = append(pars, startDate, endDate)
+	} else {
+		sql = `SELECT
 	count(DISTINCT n.classify_code, n.contract ) 
 FROM
 	base_from_trade_guangzhou_data a
@@ -101,11 +151,14 @@ FROM
 WHERE
 	a.data_time between ? and ?
 	AND c.base_from_trade_guangzhou_classify_id IN ( 7, 8 ) 
-	AND ( c.index_name LIKE "%持买单量%" OR c.index_name LIKE "%持卖单量%" ) 
-	AND c.index_name NOT LIKE "%日成交持仓排名%" 
+	AND ( c.index_name LIKE '%持买单量%' OR c.index_name LIKE '%持卖单量%' ) 
+	AND c.index_name NOT LIKE '%日成交持仓排名%' 
 ORDER BY
 	a.value DESC`
-	err = o.Raw(sql, startDate, endDate).Scan(&count).Error
+		pars = append(pars, startDate, endDate)
+	}
+
+	err = o.Raw(sql, pars...).Scan(&count).Error
 	return
 }
 
@@ -118,8 +171,8 @@ FROM
 	LEFT JOIN base_from_trade_guangzhou_index c ON a.base_from_trade_guangzhou_index_id = c.base_from_trade_guangzhou_index_id
 WHERE
 	c.base_from_trade_guangzhou_classify_id IN ( 7, 8 ) 
-	AND ( c.index_name LIKE "%持买单量%" OR c.index_name LIKE "%持卖单量%" ) 
-	AND c.index_name NOT LIKE "%日成交持仓排名%" 
+	AND ( c.index_name LIKE '%持买单量%' OR c.index_name LIKE '%持卖单量%' ) 
+	AND c.index_name NOT LIKE '%日成交持仓排名%' 
 ORDER BY
 	a.data_time asc`
 	err = o.Raw(sql).First(&item).Error
@@ -149,8 +202,8 @@ WHERE
 	a.data_time between ? and ?
 	and c.base_from_trade_guangzhou_classify_id in (7,8)
     and n.classify_code in (` + utils.GetOrmInReplace(len(classifyNames)) + `) and n.contract in (` + utils.GetOrmInReplace(len(classifyTypes)) + `)
-	and c.index_name like "%持买单量%"
-	and c.index_name not like "%日成交持仓排名%"`
+	and c.index_name like '%持买单量%'
+	and c.index_name not like '%日成交持仓排名%'`
 	err = o.Exec(sql1, now, now, startDate, endDate, classifyNames, classifyTypes).Error
 	if err != nil {
 		return
@@ -167,14 +220,48 @@ WHERE
 	a.data_time between ? and ?
 	and c.base_from_trade_guangzhou_classify_id in (7,8)
   	and n.classify_code in (` + utils.GetOrmInReplace(len(classifyNames)) + `) and n.contract in (` + utils.GetOrmInReplace(len(classifyTypes)) + `)
-	and c.index_name like "%持卖单量%"
-	and c.index_name not like "%日成交持仓排名%"`
+	and c.index_name like '%持卖单量%'
+	and c.index_name not like '%日成交持仓排名%'`
 	err = o.Exec(sql2, now, now, startDate, endDate, classifyNames, classifyTypes).Error
 	if err != nil {
 		return
 	}
+
 	//更新买单、卖单榜单排名字段
-	sql3 := `update trade_position_guangzhou_top s
+	var sql3 string
+	var updatePars []interface{}
+	if utils.DbDriverName == utils.DbDriverByDm {
+		// TODO:
+		sql3 = `WITH ranked_data AS (
+			SELECT
+				classify_type,
+				deal_short_name,
+				data_time,
+				deal_type,
+				ROW_NUMBER() OVER (
+					PARTITION BY data_time, deal_type, classify_type
+					ORDER BY deal_value DESC
+				) AS row_number
+			FROM
+				trade_position_guangzhou_top
+			WHERE
+				data_time BETWEEN ? AND ?
+				AND classify_type IN (?)
+		)
+		UPDATE trade_position_guangzhou_top s
+		SET s.rank = (
+			SELECT t.row_number
+			FROM ranked_data t
+			WHERE s.classify_type = t.classify_type
+			  AND s.deal_short_name = t.deal_short_name
+			  AND s.data_time = t.data_time
+			  AND s.deal_type = t.deal_type
+		)
+		WHERE s.data_time BETWEEN ? AND ?
+		  AND s.classify_type IN (?)`
+		updatePars = append(updatePars, startDate, endDate, classifyTypes, startDate, endDate, classifyTypes)
+	} else {
+		sql3 = `update trade_position_guangzhou_top s
 JOIN (
 SELECT
   	classify_type,
@@ -195,34 +282,32 @@ ORDER BY
 	ON s.classify_type = t.classify_type AND s.deal_short_name = t.deal_short_name 	
 	AND s.data_time = t.data_time AND s.deal_type = t.deal_type
 SET s.rank = t.row_number where s.data_time between ? and ? and s.classify_type in (` + utils.GetOrmInReplace(len(classifyTypes)) + `);`
+		updatePars = append(updatePars, startDate, endDate, classifyTypes, startDate, endDate, classifyTypes)
+	}
 
-
-//  todo AI 建议
-
-	// sql3 := `UPDATE trade_position_guangzhou_top s 
+	// sql3 := `UPDATE trade_position_guangzhou_top s
 	// SET s.rank = t.row_number
 	// FROM (
-	// 	SELECT 
+	// 	SELECT
 	// 		classify_type,
 	// 		deal_short_name,
 	// 		data_time,
 	// 		deal_type,
 	// 		ROW_NUMBER() OVER (
-	// 			PARTITION BY data_time, deal_type, classify_type 
+	// 			PARTITION BY data_time, deal_type, classify_type
 	// 			ORDER BY deal_value DESC
 	// 		) as row_number
 	// 	FROM trade_position_guangzhou_top
-	// 	WHERE data_time BETWEEN ? AND ? 
+	// 	WHERE data_time BETWEEN ? AND ?
 	// 	AND classify_type IN (` + utils.GetOrmInReplace(len(classifyTypes)) + `)
 	// ) t
-	// WHERE s.classify_type = t.classify_type 
-	// AND s.deal_short_name = t.deal_short_name 
-	// AND s.data_time = t.data_time 
+	// WHERE s.classify_type = t.classify_type
+	// AND s.deal_short_name = t.deal_short_name
+	// AND s.data_time = t.data_time
 	// AND s.deal_type = t.deal_type
-	// AND s.data_time BETWEEN ? AND ? 
+	// AND s.data_time BETWEEN ? AND ?
 	// AND s.classify_type IN (` + utils.GetOrmInReplace(len(classifyTypes)) + `)`
 
-	err = o.Exec(sql3, startDate, endDate, classifyTypes, startDate, endDate, classifyTypes).Error
-
+	err = o.Exec(sql3, updatePars...).Error
 	return
 }

+ 1 - 0
models/data_source/data_source.go

@@ -2008,6 +2008,7 @@ func GetBaseIndexDataMinMax(source, subSource int, indexCode string) (item *Base
 
 	sql = `SELECT value AS latest_value FROM %s WHERE index_code = ? ORDER BY data_time DESC LIMIT 1`
 	sql = fmt.Sprintf(sql, dataTable)
+	sql = utils.ReplaceDriverKeywords("", sql)
 	if e := o.Raw(sql, indexCode).Scan(&latestVal); e != nil {
 		err = fmt.Errorf("获取数据源最新值失败, %v", e)
 		return

+ 7 - 7
models/db.go

@@ -106,17 +106,17 @@ func init2() {
 func initEdbDataTable() {
 	//注册对象
 	orm.RegisterModel(
-		new(data_manage.EdbDataWind),
-		new(data_manage.EdbDataThs),
-		new(data_manage.EdbDataPb),
+		//new(data_manage.EdbDataWind),
+		//new(data_manage.EdbDataThs),
+		//new(data_manage.EdbDataPb),
 		new(data_manage.BaseFromSmm),
 		new(data_manage.BaseFromSmmIndex),
 		new(data_manage.BaseFromSmmData),
-		new(data_manage.EdbDataYs),
+		//new(data_manage.EdbDataYs),
 		new(data_manage.EdbInfoCalculateMapping),
-		new(data_manage.EdbInfo),                 //hz_data库的edb_info表
-		new(data_manage.EdbDataCalculateZjpj),    //直接拼接
-		new(data_manage.EdbDataCalculateLjztbpj), //累计同比值拼接
+		new(data_manage.EdbInfo), //hz_data库的edb_info表
+		//new(data_manage.EdbDataCalculateZjpj), //直接拼接
+		//new(data_manage.EdbDataCalculateLjztbpj), //累计同比值拼接
 		new(data_manage.BaseFromTradeZhengzhouIndex),
 		new(data_manage.BaseFromTradeDalianIndex),
 		new(data_manage.BaseFromTradeShanghaiIndex),

+ 22 - 0
models/english_report.go

@@ -3,6 +3,7 @@ package models
 import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 )
 
 type EnglishReport struct {
@@ -39,6 +40,14 @@ type EnglishReport struct {
 	AdminRealName      string `description:"创建者姓名"`
 }
 
+func (m *EnglishReport) AfterFind(tx *gorm.DB) (err error) {
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	m.PublishTime = utils.GormDateStrToDateTimeStr(m.PublishTime)
+	m.PrePublishTime = utils.GormDateStrToDateTimeStr(m.PrePublishTime)
+	return
+}
+
 type EnglishReportDetail struct {
 	Id                 int    `gorm:"column:id;primaryKey;autoIncrement" description:"报告Id"`
 	AddType            int    `description:"新增方式:1:新增报告,2:继承报告"`
@@ -68,6 +77,13 @@ type EnglishReportDetail struct {
 	KeyTakeaways       string `description:"关键点"`
 }
 
+func (m *EnglishReportDetail) ConvertTimeStr() {
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+	m.PublishTime = utils.GormDateStrToDateTimeStr(m.PublishTime)
+	return
+}
+
 type ElasticEnglishReportDetail struct {
 	Id                 string `description:"报告id或者线上路演Id"`
 	ReportId           int    `description:"报告id"`
@@ -110,6 +126,12 @@ func GetEnglishReportById(reportId int) (item *EnglishReportDetail, err error) {
 	o := global.DbMap[utils.DbNameReport]
 	sql := `SELECT * FROM english_report WHERE id=?`
 	err = o.Raw(sql, reportId).First(&item).Error
+	if err != nil {
+		return
+	}
+	if item != nil && item.Id > 0 {
+		item.ConvertTimeStr()
+	}
 	return
 }
 

+ 4 - 4
models/index_notice.go

@@ -25,10 +25,10 @@ func GetEdbInfoByFrequencyNotDay() (items []*EdbInfo, err error) {
 }
 
 type Edbdata struct {
-	TradeCode  string    `orm:"column(TRADE_CODE);pk" description:"指标编码"`
-	Dt         string    `orm:"column(DT)" description:"日期"`
-	Close      string    `orm:"column(CLOSE)" description:"值"`
-	ModifyTime time.Time `orm:"column(modify_time)" description:"修改时间"`
+	TradeCode  string    `gorm:"column:TRADE_CODE" description:"指标编码"`
+	Dt         string    `gorm:"column:DT" description:"日期"`
+	Close      string    `gorm:"column:CLOSE" description:"值"`
+	ModifyTime time.Time `gorm:"column:modify_time" description:"修改时间"`
 }
 
 // GetLastEdbdataInfo 根据指标编号获取指标最近的一条数据

+ 8 - 1
models/report.go

@@ -3,6 +3,7 @@ package models
 import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -39,6 +40,11 @@ type Report struct {
 	ClassifyNameThird  string `description:"三级分类名称"`
 }
 
+func (m *Report) AfterFind(db *gorm.DB) (err error) {
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	return
+}
+
 // GetPrePublishedReports 获取定时发布时间为当前时间的未发布的报告列表
 func GetPrePublishedReports(startTime, endTime, afterDate string) (list []*Report, err error) {
 	o := global.DbMap[utils.DbNameReport]
@@ -105,7 +111,8 @@ type ChartPermissionMappingIdName struct {
 
 func GetChartPermissionNameFromMappingByKeyword(source string, classifyId int) (list []*ChartPermissionMappingIdName, err error) {
 	o := global.DbMap[utils.DbNameReport]
-	sql := " SELECT b.chart_permission_id AS permission_id,b.permission_name FROM chart_permission_search_key_word_mapping AS a INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id WHERE a.`from` = ? AND a.classify_id = ? "
+	sql := " SELECT b.chart_permission_id AS permission_id,b.permission_name FROM chart_permission_search_key_word_mapping AS a INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id WHERE a.from = ? AND a.classify_id = ? "
+	sql = utils.ReplaceDriverKeywords("", sql)
 	err = o.Raw(sql, source, classifyId).Find(&list).Error
 	return
 }

+ 6 - 0
models/report_chapter.go

@@ -3,6 +3,7 @@ package models
 import (
 	"eta/eta_task/global"
 	"eta/eta_task/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -37,6 +38,11 @@ type ReportChapter struct {
 	OriginalVideoUrl  string    `description:"原始音频文件URL"`
 }
 
+func (m *ReportChapter) AfterFind(db *gorm.DB) (err error) {
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	return
+}
+
 // GetPublishedChapterListByReportId 根据ReportId获取已发布章节列表
 func GetPublishedChapterListByReportId(reportId int) (list []*ReportChapter, err error) {
 	o := global.DbMap[utils.DbNameReport]

+ 3 - 2
models/wx_template_msg.go

@@ -27,7 +27,7 @@ func GetOpenIdArr() (items []string, err error) {
           INNER JOIN company AS c ON c.company_id = wu.company_id 
           INNER JOIN company_product AS d ON c.company_id=d.company_id
 		INNER JOIN user_record  AS ur ON wu.user_id=ur.user_id
-          WHERE ur.open_id != "" AND ur.subscribe=1 AND ur.create_platform=1 AND  d.status IN('正式','试用','永续')
+          WHERE ur.open_id != '' AND ur.subscribe=1 AND ur.create_platform=1 AND  d.status IN('正式','试用','永续')
          ORDER BY FIELD(c.company_id, 16) desc, ur.user_record_id asc`
 	o := global.DbMap[utils.DbNameWeekly]
 	err = o.Raw(sql).Find(&items).Error
@@ -49,10 +49,11 @@ func GetOpenIdArrByClassifyId(classifyId int) (items []string, err error) {
 			INNER JOIN company_report_permission AS e ON d.company_id=e.company_id
 			INNER JOIN chart_permission AS f ON e.chart_permission_id=f.chart_permission_id
 			INNER JOIN chart_permission_search_key_word_mapping AS g ON f.chart_permission_id=g.chart_permission_id
-			WHERE ur.open_id != "" AND ur.subscribe=1 AND ur.create_platform=1 AND  d.status IN('正式','试用','永续') AND  e.status IN('正式','试用','永续') 
+			WHERE ur.open_id != '' AND ur.subscribe=1 AND ur.create_platform=1 AND  d.status IN('正式','试用','永续') AND  e.status IN('正式','试用','永续') 
 			AND g.from='rddp'
 			AND g.classify_id=?
 			ORDER BY FIELD(c.company_id, 16) DESC, ur.user_record_id ASC  `
+	sql = utils.ReplaceDriverKeywords("", sql)
 	o := global.DbMap[utils.DbNameWeekly]
 	err = o.Raw(sql, classifyId).Find(&items).Error
 	return

+ 81 - 92
services/data/data_pb.go

@@ -1,96 +1,85 @@
 package data
 
-import (
-	"encoding/json"
-	"eta/eta_task/models/data_manage"
-	"eta/eta_task/utils"
-	"fmt"
-	"github.com/rdlucklib/rdluck_tools/http"
-	"net/url"
-	"strings"
-	"time"
-)
-
-type EdbDataFromPb struct {
-	Date   map[string]int64   `json:"date"`
-	Ticker map[string]string  `json:"ticker"`
-	Field  map[string]string  `json:"field"`
-	Value  map[string]float64 `json:"value"`
-}
+//type EdbDataFromPb struct {
+//	Date   map[string]int64   `json:"date"`
+//	Ticker map[string]string  `json:"ticker"`
+//	Field  map[string]string  `json:"field"`
+//	Value  map[string]float64 `json:"value"`
+//}
 
 // 万得
-func SyncEdbDataByPb(edbInfoId int64, edbCode, startDate, endDate string) (err error) {
-	defer func() {
-		if err != nil {
-			fmt.Println("SyncEdbDataByPb Err:" + err.Error())
-		}
-	}()
-	addEdbCode := edbCode
-
-	edbCode = url.QueryEscape(edbCode)
-	pbUrl := utils.PbServerUrl + `edbInfo/pb?EdbCode=%s&StartDate=%s&EndDate=%s`
-	pbUrl = fmt.Sprintf(pbUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("pbUrl:" + pbUrl)
-	body, err := http.Get(pbUrl)
-	utils.FileLog.Info("pb result:" + string(body))
-
-	if strings.Contains(string(body), "html") {
-		return nil
-	}
-
-	if err != nil {
-		return
-	}
-	item := new(EdbDataFromPb)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-
-	pbList := make([]*data_manage.EdbDataPb, 0)
-	if len(item.Date) > 0 {
-		dateMap := item.Date
-		for k, v := range dateMap {
-			dataTimestamp := v
-			v = v / 1000
-			t := time.Unix(v, 0)
-			dateTime := t.Format(utils.FormatDate)
-
-			val := item.Value[k]
-			field := item.Field[k]
-			ticker := item.Ticker[k]
-			if field == "PX_LAST" {
-				count, err := data_manage.GetEdbDataPbCount(addEdbCode, dateTime)
-				if err != nil {
-					return err
-				}
-				if count > 0 {
-					err = data_manage.ModifyEdbDataPb(edbInfoId, addEdbCode, dateTime, val)
-					if err != nil {
-						return err
-					}
-				} else {
-					item := new(data_manage.EdbDataPb)
-					item.EdbCode = addEdbCode
-					item.EdbInfoId = int(edbInfoId)
-					item.CreateTime = time.Now()
-					item.ModifyTime = time.Now()
-					item.DataTime = dateTime
-					item.Value = val
-					item.Status = 1
-					item.Field = field
-					item.Ticker = ticker
-					item.DataTimestamp = dataTimestamp
-					pbList = append(pbList, item)
-				}
-			}
-		}
-	}
-	if len(pbList) > 0 {
-		err = data_manage.AddEdbDataPb(pbList)
-		if err != nil {
-			return
-		}
-	}
-	return
-}
+//func SyncEdbDataByPb(edbInfoId int64, edbCode, startDate, endDate string) (err error) {
+//	defer func() {
+//		if err != nil {
+//			fmt.Println("SyncEdbDataByPb Err:" + err.Error())
+//		}
+//	}()
+//	addEdbCode := edbCode
+//
+//	edbCode = url.QueryEscape(edbCode)
+//	pbUrl := utils.PbServerUrl + `edbInfo/pb?EdbCode=%s&StartDate=%s&EndDate=%s`
+//	pbUrl = fmt.Sprintf(pbUrl, edbCode, startDate, endDate)
+//	utils.FileLog.Info("pbUrl:" + pbUrl)
+//	body, err := http.Get(pbUrl)
+//	utils.FileLog.Info("pb result:" + string(body))
+//
+//	if strings.Contains(string(body), "html") {
+//		return nil
+//	}
+//
+//	if err != nil {
+//		return
+//	}
+//	item := new(EdbDataFromPb)
+//	err = json.Unmarshal(body, &item)
+//	if err != nil {
+//		return
+//	}
+//
+//	pbList := make([]*data_manage.EdbDataPb, 0)
+//	if len(item.Date) > 0 {
+//		dateMap := item.Date
+//		for k, v := range dateMap {
+//			dataTimestamp := v
+//			v = v / 1000
+//			t := time.Unix(v, 0)
+//			dateTime := t.Format(utils.FormatDate)
+//
+//			val := item.Value[k]
+//			field := item.Field[k]
+//			ticker := item.Ticker[k]
+//			if field == "PX_LAST" {
+//				count, err := data_manage.GetEdbDataPbCount(addEdbCode, dateTime)
+//				if err != nil {
+//					return err
+//				}
+//				if count > 0 {
+//					err = data_manage.ModifyEdbDataPb(edbInfoId, addEdbCode, dateTime, val)
+//					if err != nil {
+//						return err
+//					}
+//				} else {
+//					item := new(data_manage.EdbDataPb)
+//					item.EdbCode = addEdbCode
+//					item.EdbInfoId = int(edbInfoId)
+//					item.CreateTime = time.Now()
+//					item.ModifyTime = time.Now()
+//					item.DataTime = dateTime
+//					item.Value = val
+//					item.Status = 1
+//					item.Field = field
+//					item.Ticker = ticker
+//					item.DataTimestamp = dataTimestamp
+//					pbList = append(pbList, item)
+//				}
+//			}
+//		}
+//	}
+//	if len(pbList) > 0 {
+//		err = data_manage.AddEdbDataPb(pbList)
+//		if err != nil {
+//			return
+//		}
+//	}
+//	return
+//}

+ 5 - 1
services/data/data_source.go

@@ -25,13 +25,17 @@ func SyncDataSourceEs(cont context.Context) (err error) {
 	confOb := new(models.BusinessConf)
 	conf, e := confOb.GetItemByConfKey(models.BusinessConfSyncDataEsDaily)
 	if e != nil {
-		if e.Error() == utils.ErrNoRow() {
+		if utils.IsErrNoRow(e) {
 			utils.FileLog.Info("SyncDataSourceEs-无刷新配置,不同步")
 			return
 		}
 		err = fmt.Errorf("获取刷新配置失败, %v", e)
 		return
 	}
+	if conf != nil && conf.Id <= 0 {
+		utils.FileLog.Info("SyncDataSourceEs-无刷新配置,不同步")
+		return
+	}
 	if conf.ConfVal != "true" {
 		return
 	}

+ 70 - 81
services/data/data_wind.go

@@ -1,85 +1,74 @@
 package data
 
-import (
-	"encoding/json"
-	"errors"
-	"eta/eta_task/models/data_manage"
-	"eta/eta_task/utils"
-	"fmt"
-	"github.com/rdlucklib/rdluck_tools/http"
-	"strings"
-	"time"
-)
-
-type EdbDataFromWind struct {
-	Close map[string]float64 `json:"CLOSE"`
-	Dt    map[string]int64   `json:"DT"`
-}
+//type EdbDataFromWind struct {
+//	Close map[string]float64 `json:"CLOSE"`
+//	Dt    map[string]int64   `json:"DT"`
+//}
 
 // 万得
-func SyncEdbDataByWind(edbInfoId int64, edbCode, startDate, endDate string) (err error) {
-	defer func() {
-		if err != nil {
-			utils.FileLog.Info("GetEdbDataByWind Err:" + err.Error())
-		}
-	}()
-
-	windUrl := utils.WindServerUrl + `edbInfo/wind?EdbCode=%s&StartDate=%s&EndDate=%s`
-	windUrl = fmt.Sprintf(windUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("windUrl:" + windUrl)
-	body, err := http.Get(windUrl)
-	bodyStr := string(body)
-	utils.FileLog.Info("wind result:" + bodyStr)
-	if strings.Contains(bodyStr, "html") || strings.Contains(bodyStr, "CWSDService: No data.") {
-		return nil
-	}
-	if err != nil {
-		return
-	}
-	item := new(EdbDataFromWind)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		err = errors.New("Err:" + err.Error() + " EdbCode:" + edbCode + "\n" + " BodyStr:" + string(body))
-		return
-	}
-
-	windList := make([]*data_manage.EdbDataWind, 0)
-	for k, v := range item.Dt {
-		dataTimestamp := v
-		v = v / 1000
-		fmt.Println(k, v)
-		t := time.Unix(v, 0)
-		dateTime := t.Format(utils.FormatDate)
-		fmt.Println(dateTime)
-		val := item.Close[k]
-		count, err := data_manage.GetEdbDataWindCount(edbCode, dateTime)
-		if err != nil {
-			return err
-		}
-		if count > 0 {
-			err = data_manage.ModifyEdbDataWind(edbInfoId, edbCode, dateTime, val)
-			if err != nil {
-				return err
-			}
-		} else {
-
-			item := new(data_manage.EdbDataWind)
-			item.EdbCode = edbCode
-			item.EdbInfoId = int(edbInfoId)
-			item.CreateTime = time.Now()
-			item.ModifyTime = time.Now()
-			item.DataTime = dateTime
-			item.Value = val
-			item.Status = 1
-			item.DataTimestamp = dataTimestamp
-			windList = append(windList, item)
-		}
-	}
-	if len(windList) > 0 {
-		err = data_manage.AddEdbDataWind(windList)
-		if err != nil {
-			return
-		}
-	}
-	return
-}
+//func SyncEdbDataByWind(edbInfoId int64, edbCode, startDate, endDate string) (err error) {
+//	defer func() {
+//		if err != nil {
+//			utils.FileLog.Info("GetEdbDataByWind Err:" + err.Error())
+//		}
+//	}()
+//
+//	windUrl := utils.WindServerUrl + `edbInfo/wind?EdbCode=%s&StartDate=%s&EndDate=%s`
+//	windUrl = fmt.Sprintf(windUrl, edbCode, startDate, endDate)
+//	utils.FileLog.Info("windUrl:" + windUrl)
+//	body, err := http.Get(windUrl)
+//	bodyStr := string(body)
+//	utils.FileLog.Info("wind result:" + bodyStr)
+//	if strings.Contains(bodyStr, "html") || strings.Contains(bodyStr, "CWSDService: No data.") {
+//		return nil
+//	}
+//	if err != nil {
+//		return
+//	}
+//	item := new(EdbDataFromWind)
+//	err = json.Unmarshal(body, &item)
+//	if err != nil {
+//		err = errors.New("Err:" + err.Error() + " EdbCode:" + edbCode + "\n" + " BodyStr:" + string(body))
+//		return
+//	}
+//
+//	windList := make([]*data_manage.EdbDataWind, 0)
+//	for k, v := range item.Dt {
+//		dataTimestamp := v
+//		v = v / 1000
+//		fmt.Println(k, v)
+//		t := time.Unix(v, 0)
+//		dateTime := t.Format(utils.FormatDate)
+//		fmt.Println(dateTime)
+//		val := item.Close[k]
+//		count, err := data_manage.GetEdbDataWindCount(edbCode, dateTime)
+//		if err != nil {
+//			return err
+//		}
+//		if count > 0 {
+//			err = data_manage.ModifyEdbDataWind(edbInfoId, edbCode, dateTime, val)
+//			if err != nil {
+//				return err
+//			}
+//		} else {
+//
+//			item := new(data_manage.EdbDataWind)
+//			item.EdbCode = edbCode
+//			item.EdbInfoId = int(edbInfoId)
+//			item.CreateTime = time.Now()
+//			item.ModifyTime = time.Now()
+//			item.DataTime = dateTime
+//			item.Value = val
+//			item.Status = 1
+//			item.DataTimestamp = dataTimestamp
+//			windList = append(windList, item)
+//		}
+//	}
+//	if len(windList) > 0 {
+//		err = data_manage.AddEdbDataWind(windList)
+//		if err != nil {
+//			return
+//		}
+//	}
+//	return
+//}

+ 1 - 1
services/data/edb_info_sync.go

@@ -36,7 +36,7 @@ func SyncGlDataBase() {
 		if err != nil {
 			return
 		}
-		if item != nil {
+		if item != nil && item.MinDate != "" && item.MaxDate != "" {
 			err = data_manage.ModifyEdbInfoMaxAndMinInfo(v.EdbInfoId, item)
 			if err != nil {
 				return

+ 7 - 2
services/edb_refresh.go

@@ -692,12 +692,17 @@ func DisableEdbRefresh(cont context.Context) (err error) {
 	obj := new(models.BusinessConf)
 	conf, err := obj.GetItemByConfKey("EdbStopRefreshRule")
 	if err != nil {
-		if err.Error() == utils.ErrNoRow() {
-			err = fmt.Errorf("未找到配置项,无需处理")
+		if utils.IsErrNoRow(err) {
+			utils.FileLog.Info("DisableEdbRefresh-未找到配置项,无需处理")
 			return
 		}
 		return
 	}
+	if conf != nil && conf.Id <= 0 {
+		utils.FileLog.Info("DisableEdbRefresh-未找到配置项,无需处理")
+		return
+	}
+
 	//将json转为结构体
 	rule := new(models.EdbStopRefreshRule)
 	err = json.Unmarshal([]byte(conf.ConfVal), rule)

+ 1 - 1
services/edb_relation.go

@@ -1177,7 +1177,7 @@ func GetCalculateEdbByFromEdbInfo(edbInfoIds []int, calculateEdbIds []int, hasFi
 
 	//获取关联图表列表
 	list, err := data_manage.GetRelationEdbInfoListMappingByCondition(condition, pars)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	if err != nil {
 		err = fmt.Errorf("获取关联指标信息失败,Err:%s", err.Error())
 		return
 	}

+ 4 - 0
services/english_report.go

@@ -58,6 +58,10 @@ func UpdateEnglishReportEs(reportId int, publishState int) (err error) {
 	if err != nil {
 		return
 	}
+	if reportInfo != nil && reportInfo.Id <= 0 {
+		return
+	}
+
 	// 新增报告ES
 	esReport := &models.ElasticEnglishReportDetail{
 		Id:                 strconv.Itoa(reportInfo.Id),

+ 10 - 1
services/eta_bridge/handle_data.go

@@ -508,12 +508,15 @@ func handleUpdateDataSource(edbUpdateLog *data_manage.EdbUpdateLog) (pushIndexDa
 	if isUpdateIndexInfo {
 		newEdbInfo, tmpErr := data_manage.GetEdbInfoItemByCodeAndSource(source, edbCode)
 		if tmpErr != nil {
-			if tmpErr.Error() != utils.ErrNoRow() {
+			if !utils.IsErrNoRow(tmpErr) {
 				err = tmpErr
 				return
 			}
 			return
 		}
+		if newEdbInfo != nil && newEdbInfo.EdbInfoId <= 0 {
+			return
+		}
 		pushIndexData = &PushIndexParamDataReq{
 			SourceIndexCode:  newEdbInfo.EdbCode,
 			IndexCode:        getIndexCode(newEdbInfo.Source, newEdbInfo.EdbCode),
@@ -625,6 +628,9 @@ func getOrigInfo(source, subSource int, edbCode, edbName string) (origInfo OrigI
 		if err != nil {
 			return
 		}
+		if edbInfo != nil && edbInfo.EdbInfoId <= 0 {
+			return
+		}
 		origInfo.EdbName = edbInfo.IndexName
 		origInfo.SourceName = edbInfo.Source
 	// 钢联化工
@@ -633,6 +639,9 @@ func getOrigInfo(source, subSource int, edbCode, edbName string) (origInfo OrigI
 		if err != nil {
 			return
 		}
+		if edbInfo != nil && edbInfo.BaseFromSmmIndexId <= 0 {
+			return
+		}
 		origInfo.EdbName = edbInfo.IndexName
 		origInfo.SourceName = edbInfo.Interface
 	}

+ 5 - 5
services/eta_bridge/xy.go

@@ -274,7 +274,7 @@ func SyncIndex(cont context.Context) (err error) {
 		// 查找当前已经处理了的日志最大ID
 		currLogId, err = data_manage.GetEdbUpdateLogMaxHandleId()
 		if err != nil {
-			if err.Error() != utils.ErrNoRow() {
+			if !utils.IsErrNoRow(err) {
 				utils.FileLog.Error("查找当前已经处理了的日志最大ID失败:" + err.Error())
 			} else {
 				err = nil
@@ -560,12 +560,12 @@ func SyncXyCrmIndex(cont context.Context) (err error) {
 	key := data_manage.CrmIndexLastUpdateTime
 	sysInteractionLog, err := data_manage.GetBusinessSysInteractionLogByKey(key)
 	if err != nil {
-		if err.Error() != utils.ErrNoRow() {
+		if !utils.IsErrNoRow(err) {
 			return
 		}
 		//lastUpdateTime := time.Now().Format("2006-01-02 15:04:05")
 	} else {
-		if sysInteractionLog.InteractionVal != `` {
+		if sysInteractionLog != nil && sysInteractionLog.ID > 0 && sysInteractionLog.InteractionVal != `` {
 			lastUpdateTimeStr = sysInteractionLog.InteractionVal
 		}
 	}
@@ -673,7 +673,7 @@ func modifyCrmIndexLastUpdateTime(lastUpdateTime string) {
 	key := data_manage.CrmIndexLastUpdateTime
 	fileNameLog, err := data_manage.GetBusinessSysInteractionLogByKey(key)
 	if err != nil {
-		if err.Error() != utils.ErrNoRow() {
+		if !utils.IsErrNoRow(err) {
 			return
 		}
 		err = nil
@@ -689,7 +689,7 @@ func modifyCrmIndexLastUpdateTime(lastUpdateTime string) {
 		if err != nil {
 			return
 		}
-	} else {
+	} else if fileNameLog != nil && fileNameLog.ID > 0 {
 		fileNameLog.InteractionVal = lastUpdateTime
 		fileNameLog.ModifyTime = time.Now()
 		err = fileNameLog.Update([]string{"InteractionVal", "ModifyTime"})

+ 6 - 6
services/index_notice.go

@@ -93,14 +93,14 @@ func AddEdbTask(cont context.Context) (err error) {
 		var dataDtTime time.Time
 		edbData, tmpErr := models.GetLastEdbdataInfo(tmpEdb.TradeCode)
 		if tmpErr != nil {
-			if tmpErr.Error() != utils.ErrNoRow() {
+			if !utils.IsErrNoRow(tmpErr) {
 				failList = append(failList, fmt.Sprint(tmpEdb.TradeCode, "失败,Err:", tmpErr.Error()))
 				continue
 			}
 		}
 
 		//如果确实是有数据的
-		if edbData != nil {
+		if edbData != nil && edbData.TradeCode != "" {
 			tmpDataDtTime, _ := time.ParseInLocation(utils.FormatDate, edbData.Dt, time.Now().Location())
 			dataDtTime = tmpDataDtTime
 		}
@@ -214,7 +214,7 @@ func AddEdbTask(cont context.Context) (err error) {
 				// 再次获取指标数据详情
 				edbData, tmpErr := models.GetLastEdbdataInfo(tmpEdb.TradeCode)
 				if tmpErr != nil {
-					if tmpErr.Error() != utils.ErrNoRow() {
+					if !utils.IsErrNoRow(tmpErr) {
 						funcErr = tmpErr
 						return
 					}
@@ -226,7 +226,7 @@ func AddEdbTask(cont context.Context) (err error) {
 				//数据过期时间
 				var funcDataDtTime time.Time
 				//如果确实是有数据的
-				if edbData != nil {
+				if edbData != nil && edbData.TradeCode != "" {
 					tmpDataDtTime, _ := time.ParseInLocation(utils.FormatDate, edbData.Dt, time.Now().Location())
 					funcDataDtTime = tmpDataDtTime
 				}
@@ -342,14 +342,14 @@ func AddEdbTask(cont context.Context) (err error) {
 					//获取用户信息
 					admin, err := models.GetAdminByAdminId(tmpEdb.UserId)
 					if err != nil {
-						if err.Error() == utils.ErrNoRow() {
+						if utils.IsErrNoRow(err) {
 							funcErr = errors.New("openId 列表为空" + strconv.Itoa(tmpEdb.UserId))
 							return
 						} else {
 							return err
 						}
 					}
-					if admin == nil {
+					if admin == nil || (admin != nil && admin.AdminId <= 0) {
 						funcErr = errors.New("openId 列表为空" + strconv.Itoa(tmpEdb.UserId))
 						return
 					}

+ 7 - 0
services/report.go

@@ -23,6 +23,10 @@ func UpdateReportEs(reportId int, publishState int) (err error) {
 	if err != nil {
 		return
 	}
+	if reportInfo != nil && reportInfo.Id <= 0 {
+		return
+	}
+
 	categories := ""
 	if reportInfo.HasChapter == 1 {
 		// 晨周报
@@ -307,6 +311,9 @@ func ReportSendTemplateMsg(reportId int) (err error) {
 		err = errors.New("查询报告失败 Err:" + err.Error())
 		return
 	}
+	if reportInfo != nil && reportInfo.Id <= 0 {
+		return
+	}
 	if reportInfo.MsgIsSend == 1 {
 		err = errors.New("模板消息已推送,请勿重复操作")
 		return

+ 4 - 1
services/smart_report.go

@@ -116,13 +116,16 @@ func SmartReportElasticUpsert(smartReportId int, state int) (err error) {
 	reportOB := new(models.SmartReport)
 	item, e := reportOB.GetItemById(smartReportId)
 	if e != nil {
-		if e.Error() == utils.ErrNoRow() {
+		if utils.IsErrNoRow(e) {
 			// 可能被删了就直接忽略掉
 			return
 		}
 		err = fmt.Errorf("获取报告失败, Err: %s", e.Error())
 		return
 	}
+	if item != nil && item.SmartReportId <= 0 {
+		return
+	}
 
 	esReport := new(models.ElasticSmartReport)
 	esReport.SmartReportId = item.SmartReportId

+ 85 - 5
utils/common.go

@@ -10,6 +10,7 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
+	"gorm.io/gorm"
 	"image"
 	"image/png"
 	"math"
@@ -868,11 +869,12 @@ func GetRichText(content string) (contentSub string) {
 
 // GetOrmInReplace 获取orm的in查询替换?的方法
 func GetOrmInReplace(num int) string {
-	template := make([]string, num)
-	for i := 0; i < num; i++ {
-		template[i] = "?"
-	}
-	return strings.Join(template, ",")
+	//template := make([]string, num)
+	//for i := 0; i < num; i++ {
+	//	template[i] = "?"
+	//}
+	//return strings.Join(template, ",")
+	return "?"
 }
 
 // SubFloatToFloatStr 截取小数点后几位
@@ -959,3 +961,81 @@ func TimeTransferString(format string, t time.Time) string {
 	}
 	return str
 }
+
+// IsErrNoRow
+// @Description: 判断是否是gorm的查询不到数据的报错
+// @param err
+// @return bool
+func IsErrNoRow(err error) bool {
+	if err == nil {
+		return false
+	}
+	return errors.Is(err, gorm.ErrRecordNotFound)
+}
+
+// GormDateStrToDateStr
+// @Description: gorm日期字符串格式转正常显示的日期字符串
+// @param originalString
+// @return formatStr
+func GormDateStrToDateStr(originalString string) (formatStr string) {
+	if originalString == `` {
+		return
+	}
+	if strings.Contains(originalString, "0001-01-01") {
+		return
+	}
+
+	formatStr = originalString
+	if !strings.Contains(originalString, "T") {
+		return
+	}
+
+	// 解析原始字符串
+	t, err := time.Parse(FormatDateWallWithLoc, originalString)
+	if err != nil {
+		fmt.Println("Error parsing time:", err)
+		return
+	}
+	if t.IsZero() {
+		formatStr = ""
+		return
+	}
+	// 重新格式化时间
+	formatStr = t.Format(FormatDate)
+
+	return
+}
+
+// GormDateStrToDateTimeStr
+// @Description: gorm日期字符串格式转正常显示的日期时间字符串
+// @param originalString
+// @return formatStr
+func GormDateStrToDateTimeStr(originalString string) (formatStr string) {
+	if originalString == `` {
+		return
+	}
+	if strings.Contains(originalString, "0001-01-01") {
+		return
+	}
+
+	formatStr = originalString
+	if !strings.Contains(originalString, "T") {
+		return
+	}
+
+	// 解析原始字符串
+	t, err := time.Parse(FormatDateWallWithLoc, originalString)
+	if err != nil {
+		fmt.Println("Error parsing time:", err)
+		return
+	}
+	if t.IsZero() {
+		formatStr = ""
+		return
+	}
+
+	// 重新格式化时间
+	formatStr = t.Format(FormatDateTime)
+
+	return
+}

+ 11 - 10
utils/constants.go

@@ -2,16 +2,17 @@ package utils
 
 // 常量定义
 const (
-	FormatTime              = "15:04:05"                //时间格式
-	FormatDate              = "2006-01-02"              //日期格式
-	FormatDateUnSpace       = "20060102"                //日期格式
-	FormatDateTime          = "2006-01-02 15:04:05"     //完整时间格式
-	HlbFormatDateTime       = "2006-01-02_15:04:05.999" //完整时间格式
-	FormatDateTimeMinute    = "2006-01-02 15:04"        //时间格式只精确到分钟
-	FormatDateTimeUnSpace   = "20060102150405"          //完整时间格式
-	FormatDateTimeUnSpaceV2 = "20060102 15:04:05"       //完整时间格式,日期与时间中间空格隔开
-	FormatMonthDateUnSpace  = "200601"                  //年月格式
-	PageSize15              = 15                        //列表页每页数据量
+	FormatTime              = "15:04:05"                  //时间格式
+	FormatDate              = "2006-01-02"                //日期格式
+	FormatDateUnSpace       = "20060102"                  //日期格式
+	FormatDateTime          = "2006-01-02 15:04:05"       //完整时间格式
+	HlbFormatDateTime       = "2006-01-02_15:04:05.999"   //完整时间格式
+	FormatDateTimeMinute    = "2006-01-02 15:04"          //时间格式只精确到分钟
+	FormatDateTimeUnSpace   = "20060102150405"            //完整时间格式
+	FormatDateTimeUnSpaceV2 = "20060102 15:04:05"         //完整时间格式,日期与时间中间空格隔开
+	FormatMonthDateUnSpace  = "200601"                    //年月格式
+	FormatDateWallWithLoc   = "2006-01-02T15:04:05-07:00" //日期格式
+	PageSize15              = 15                          //列表页每页数据量
 	PageSize5               = 5
 	PageSize10              = 10
 	PageSize20              = 20

+ 360 - 0
utils/sql.go

@@ -0,0 +1,360 @@
+package utils
+
+import (
+	"bytes"
+	"errors"
+	"fmt"
+	"reflect"
+	"regexp"
+	"text/template"
+)
+
+type Driver string
+type SqlCondition string
+
+const (
+	DM            Driver       = "dm"
+	MySql         Driver       = "mysql"
+	GroupUnit     SqlCondition = "GroupUnit"
+	Distinct      SqlCondition = "Distinct"
+	Order         SqlCondition = "Order"
+	Delimiter     SqlCondition = "Delimiter"
+	ConvertColumn SqlCondition = "ConvertColumn"
+)
+
+var TemplateMap = map[SqlCondition]map[Driver]string{
+	GroupUnit: {
+		MySql: `GROUP_CONCAT({{.Distinct}} {{.Column}} {{.Order}} SEPARATOR '{{.Delimiter}}')`,
+		DM:    `LISTAGG({{.Distinct}} {{.Column}},'{{.Delimiter}}') WITHIN GROUP ({{.Order}})`,
+	},
+	ConvertColumn: {
+		MySql: `CONVERT({{.ConvertColumn}} USING gbk )`,
+		DM:    `{{.ConvertColumn}}`,
+	},
+}
+
+var supportDriverMap = map[string]Driver{
+	"mysql": MySql,
+	"dm":    DM,
+	//"postgres": Postgres,
+}
+
+type QueryParam struct {
+	Driver        string
+	Column        string
+	Order         string
+	Distinct      string
+	Delimiter     string
+	OrderField    string
+	OrderRule     string
+	ConvertColumn string `description:"Convert指令传递的clounm"`
+	HasDistinct   bool
+}
+type SqlParam interface {
+	GetParamName() string
+	GetFormatConditionStr(param *QueryParam) string
+}
+type DistinctParam struct {
+}
+
+func (distinctParam *DistinctParam) GetParamName() string {
+	return "Distinct"
+}
+func (distinctParam *DistinctParam) GetFormatConditionStr(param *QueryParam) string {
+	if param.HasDistinct {
+		return "DISTINCT"
+	}
+	return ""
+}
+
+type ConvertParam struct {
+}
+
+func (convertParam *ConvertParam) GetParamName() string {
+	return "Convert"
+}
+func (convertParam *ConvertParam) GetFormatConditionStr(param *QueryParam) (sqlStr string) {
+	dbDriver, _ := getDriverInstance(param.Driver)
+	if param.ConvertColumn == "" {
+		FileLog.Error("转换字段为空,无法生成聚合sql")
+		return
+	}
+	var templateSqlStr string
+	if _, ok := TemplateMap[ConvertColumn][dbDriver]; !ok {
+		templateSqlStr = TemplateMap[ConvertColumn][MySql]
+	} else {
+		templateSqlStr = TemplateMap[ConvertColumn][dbDriver]
+	}
+	if templateSqlStr == "" {
+		FileLog.Error("转换sql模板不存在,无法生成转换sql")
+		return
+	}
+	templateSql, err := template.New("ConvertColumn").Parse(templateSqlStr)
+	if err != nil {
+		FileLog.Error("failed to parse template: %v", err)
+		return
+	}
+	//反射获取结构体的值
+	value := reflect.ValueOf(param)
+	// 检查是否是指针
+	if value.Kind() != reflect.Ptr {
+		fmt.Println("请求参数必须是一个结构体")
+		return
+	}
+	// 获取结构体的元素
+	elem := value.Elem()
+	// 检查是否是结构体
+	if elem.Kind() != reflect.Struct {
+		fmt.Println("请求参数必须是一个结构体")
+		return
+	}
+	// 获取字段的值
+	fieldValue := elem.FieldByName("ConvertColumn")
+	// 检查字段是否存在
+	if !fieldValue.IsValid() {
+		fmt.Printf("Error: field %s not found\n", "ConvertColumn")
+		return
+	}
+	// 检查字段是否可导出
+	if !fieldValue.CanSet() {
+		fmt.Printf("Error: field %s is not exported and cannot be set\n", "ConvertColumn")
+		return
+	}
+	// 渲染模板
+	var buf bytes.Buffer
+	err = templateSql.Execute(&buf, param)
+	if err != nil {
+		fmt.Sprintf("执行模板填充失败: %v", err)
+		return
+	}
+	sqlStr = buf.String()
+	fmt.Printf("生成的准换编码语句为:%s\n", sqlStr)
+	return sqlStr
+}
+
+var sqlGeneratorFactory = map[SqlCondition]SqlParam{
+	// 添加支持的语法
+	GroupUnit: &GroupUnitParam{
+		supportGrams: []SqlCondition{
+			Distinct,
+			Order,
+			Delimiter,
+		},
+	},
+	Order:         &OrderParam{},
+	Delimiter:     &DelimiterParam{},
+	Distinct:      &DistinctParam{},
+	ConvertColumn: &ConvertParam{},
+}
+
+type DelimiterParam struct {
+}
+
+func (delimiterParam *DelimiterParam) GetParamName() string {
+	return "Delimiter"
+}
+func (delimiterParam *DelimiterParam) GetFormatConditionStr(param *QueryParam) string {
+	if param.Delimiter == "" {
+		return ","
+	}
+	return param.Delimiter
+}
+
+type OrderParam struct {
+	Field string
+	Rule  string
+}
+
+func (orderParam *OrderParam) GetParamName() string {
+	return "Order"
+}
+
+func (orderParam *OrderParam) GetFormatConditionStr(param *QueryParam) string {
+	if param.OrderField == "" {
+		orderParam.Field = param.Column
+	} else {
+		orderParam.Field = param.OrderField
+	}
+	if param.OrderRule != "" {
+		if param.OrderRule == "ASC" || param.OrderRule == "DESC" {
+			orderParam.Rule = param.OrderRule
+		}
+	}
+	return fmt.Sprintf("ORDER BY %s %s", orderParam.Field, orderParam.Rule)
+}
+
+// 高级语法聚合
+type GroupUnitParam struct {
+	supportGrams []SqlCondition
+}
+
+func (groupUnitParam *GroupUnitParam) GetParamName() string {
+	return "GroupUnit"
+}
+
+func (groupUnitParam *GroupUnitParam) GetFormatConditionStr(param *QueryParam) (sqlStr string) {
+	dbDriver, _ := getDriverInstance(param.Driver)
+	if param.Column == "" {
+		FileLog.Error("聚合字段为空,无法生成聚合sql")
+		return
+	}
+	var templateSqlStr string
+	if _, ok := TemplateMap[GroupUnit][dbDriver]; !ok {
+		templateSqlStr = TemplateMap[GroupUnit][MySql]
+	} else {
+		templateSqlStr = TemplateMap[GroupUnit][dbDriver]
+	}
+	if templateSqlStr == "" {
+		FileLog.Error("聚合sql模板不存在,无法生成聚合sql")
+		return
+	}
+	templateSql, err := template.New("GroupUnit").Parse(templateSqlStr)
+	if err != nil {
+		FileLog.Error("failed to parse template: %v", err)
+		return
+	}
+	//反射获取结构体的值
+	value := reflect.ValueOf(param)
+	// 检查是否是指针
+	if value.Kind() != reflect.Ptr {
+		fmt.Println("请求参数必须是一个结构体")
+		return
+	}
+	// 获取结构体的元素
+	elem := value.Elem()
+	// 检查是否是结构体
+	if elem.Kind() != reflect.Struct {
+		fmt.Println("请求参数必须是一个结构体")
+		return
+	}
+	for _, supportGram := range groupUnitParam.supportGrams {
+		// 获取字段的值
+		fieldValue := elem.FieldByName(string(supportGram))
+		// 检查字段是否存在
+		if !fieldValue.IsValid() {
+			fmt.Printf("Error: field %s not found\n", supportGram)
+			continue
+		}
+		// 检查字段是否可导出
+		if !fieldValue.CanSet() {
+			fmt.Printf("Error: field %s is not exported and cannot be set\n", supportGram)
+			continue
+		}
+		newValue := sqlGeneratorFactory[supportGram].GetFormatConditionStr(param)
+		// 检查新值的类型是否匹配
+		newValueValue := reflect.ValueOf(newValue)
+		if fieldValue.Type() != newValueValue.Type() {
+			fmt.Printf("字段%s类型不匹配 : 期望的类型是 %s, 传入的类型为: %s", supportGram, fieldValue.Type(), newValueValue.Type())
+			return
+		}
+		// 设置字段的值
+		fieldValue.Set(newValueValue)
+	}
+	// 渲染模板
+	var buf bytes.Buffer
+	err = templateSql.Execute(&buf, param)
+	if err != nil {
+		fmt.Sprintf("执行模板填充失败: %v", err)
+		return
+	}
+	sqlStr = buf.String()
+	fmt.Printf("生成的聚合语句为:%s\n", sqlStr)
+	return sqlStr
+}
+
+func GroupUnitFunc(driver string, column, delimiter string, columnOrder bool, orderField, orderRule string, hasDistinct bool) (sqlStr string) {
+	dbDriver, _ := getDriverInstance(driver)
+	if delimiter == "" {
+		delimiter = ","
+	}
+	if column == "" {
+		column = "[UNKNOWN COLUMN]"
+	}
+	//if tableAlia != "" {
+	//	column = fmt.Sprintf("%s.%s", tableAlia, column)
+	//}
+	var sqlOrder, strDistinct string
+	if hasDistinct {
+		strDistinct = "DISTINCT"
+	}
+	if columnOrder && orderField == "" {
+		orderField = column
+	}
+	switch dbDriver {
+	case DM:
+		if columnOrder {
+			sqlOrder = fmt.Sprintf("WITHIN GROUP (ORDER BY %s %s)", orderField, orderRule)
+		}
+		sqlStr = fmt.Sprintf("LISTAGG(%s %s, '%s') %s", strDistinct, column, delimiter, sqlOrder)
+	default:
+		// 默认使用MySQL的语法
+		if columnOrder {
+			sqlOrder = fmt.Sprintf("ORDER BY %s %s", orderField, orderRule)
+		}
+		sqlStr = fmt.Sprintf("GROUP_CONCAT(%s %s %s SEPARATOR '%s')", strDistinct, column, sqlOrder, delimiter)
+	}
+	return sqlStr
+}
+
+func getDriverInstance(driver string) (dbDriver Driver, err error) {
+	if driver == "" {
+		dbDriver = supportDriverMap[DbDriverName]
+	}
+	if currentDriver, ok := supportDriverMap[driver]; !ok {
+		err = errors.New("不支持的数据库驱动类型")
+		return
+	} else {
+		dbDriver = currentDriver
+	}
+	return
+}
+
+func NeedDateOrTimeFormat(driver string) bool {
+	var dbDriver Driver
+	if driver == "" {
+		dbDriver = supportDriverMap[DbDriverName]
+	} else {
+		dbDriver, _ = getDriverInstance(driver)
+	}
+	if dbDriver == DM {
+		return true
+	}
+	return false
+}
+
+func ReplaceDriverKeywords(driver string, sql string) string {
+	dbDriver, _ := getDriverInstance(driver)
+	rules := map[Driver]map[string]string{
+		DM: {
+			"admin":    `"admin"`,
+			"value":    `"value"`,
+			"exchange": `"exchange"`,
+			"size":     `"size"`,
+			// 查询的from可能会有个别地方是小写, 所以这里不加而是把字段的from统一改为*.from处理
+			"a.from": `a."from"`,
+			"b.from": `b."from"`,
+			"g.from": `g."from"`,
+		},
+	}
+	replacements, ok := rules[dbDriver]
+	if !ok {
+		return sql
+	}
+	for keyword, replace := range replacements {
+		// 仅替换单独的单词,复合单词含关键词不管
+		pattern := fmt.Sprintf(`\b%s\b`, regexp.QuoteMeta(keyword))
+		re := regexp.MustCompile(pattern)
+		sql = re.ReplaceAllString(sql, replace)
+	}
+	return sql
+}
+
+func GenerateQuerySql(gram SqlCondition, param *QueryParam) (sqlGenerator string) {
+	if exec, ok := sqlGeneratorFactory[gram]; !ok {
+		FileLog.Error("不支持的语法:%s", gram)
+		return
+	} else {
+		sqlGenerator = exec.GetFormatConditionStr(param)
+	}
+	return
+}