package data_manage import ( "eta/eta_api/utils" "gorm.io/gorm" "time" "database/sql" "eta/eta_api/global" "github.com/rdlucklib/rdluck_tools/paging" ) type BaseFromGprRiskIndex struct { BaseFromGprRiskIndexId int `orm:"column(base_from_gpr_risk_index_id);pk"` ClassifyId int IndexCode string IndexName string Frequency string Unit string Sort int StartDate string `description:"开始日期"` EndDate string `description:"结束日期"` EndValue float64 CreateTime time.Time ModifyTime time.Time } type BaseFromGprRiskIndexList struct { BaseFromGprRiskIndexId int `orm:"column(base_from_gpr_risk_index_id);pk"` ClassifyId int Interface string EdbInfoId int EdbUniqueCode string `description:"指标库唯一编码"` EdbClassifyId int `description:"指标库分类ID"` StartDate string EndDate string EndValue float64 IndexCode string IndexName string Frequency string Unit string Sort int CreateTime string ModifyTime string EdbExist int `description:"指标库是否已添加:0-否;1-是"` DataList []*BaseFromGprRiskData `gorm:"-"` Paging *paging.PagingItem `description:"分页数据" gorm:"-"` } func (baseFromGprRiskIndexList *BaseFromGprRiskIndexList) AfterFind(tx *gorm.DB) (err error) { baseFromGprRiskIndexList.CreateTime = utils.GormDateStrToDateTimeStr(baseFromGprRiskIndexList.CreateTime) baseFromGprRiskIndexList.ModifyTime = utils.GormDateStrToDateTimeStr(baseFromGprRiskIndexList.ModifyTime) baseFromGprRiskIndexList.StartDate = utils.GormDateStrToDateStr(baseFromGprRiskIndexList.StartDate) baseFromGprRiskIndexList.EndDate = utils.GormDateStrToDateStr(baseFromGprRiskIndexList.EndDate) return } type BaseFromGprRiskIndexSearchList struct { List []*BaseFromGprRiskIndexList Paging *paging.PagingItem `description:"分页数据"` } type GprRiskSingleDataResp struct { BaseFromGprRiskIndexId int ClassifyId int EdbInfoId int IndexCode string IndexName string Frequency string Unit string StartTime string CreateTime string ModifyTime string EdbExist int `description:"指标库是否已添加:0-否;1-是"` Data []*GprRiskSingleData `gorm:"-"` Paging *paging.PagingItem `description:"分页数据" gorm:"-"` } type GprRiskSingleData struct { Value string `orm:"column(value)" description:"日期"` DataTime string `orm:"column(data_time)" description:"值"` } func GetGprRiskIndexByClassifyId(classifyId int) (items []*BaseFromGprRiskIndex, err error) { sql := ` SELECT base_from_gpr_risk_index_id, classify_id, index_code, index_name FROM base_from_gpr_risk_index WHERE classify_id=? ORDER BY sort ASC, base_from_gpr_risk_index_id ASC ` err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).Find(&items).Error return } func GetGprRiskIndex(condition string, pars []interface{}) (items []*BaseFromGprRiskIndexList, err error) { sql := ` SELECT * FROM base_from_gpr_risk_index WHERE 1=1 ` if condition != "" { sql += condition } sql += ` ORDER BY sort ASC, base_from_gpr_risk_index_id asc` err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).Find(&items).Error return } func GetGprRiskIndexPage(condition string, pars []interface{}, startSize, pageSize int) (items []*BaseFromGprRiskIndexList, err error) { sql := ` SELECT * FROM base_from_gpr_risk_index WHERE 1=1 ` if condition != "" { sql += condition } sql += ` ORDER BY sort ASC, base_from_gpr_risk_index_id asc LIMIT ?,?` pars = append(pars, startSize, pageSize) err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).Find(&items).Error return } func GetGprRiskIndexPageCount(condition string, pars []interface{}) (count int, err error) { sql := ` SELECT COUNT(1) AS count FROM base_from_gpr_risk_index WHERE 1=1 ` if condition != "" { sql += condition } err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).Scan(&count).Error return } func GetGprRiskIndexDataCount(indexCode string) (count int, err error) { sql := ` SELECT COUNT(1) AS count FROM base_from_gpr_risk_data WHERE index_code=? ` err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).Scan(&count).Error return } func GetGprRiskIndexDataByDataTime(indexCodes []string, startDate, endDate string) (items []*BaseFromGprRiskData, err error) { sql := ` SELECT * FROM base_from_gpr_risk_data WHERE index_code in (` + utils.GetOrmInReplace(len(indexCodes)) + `) and data_time >=? and data_time <? ORDER BY data_time DESC ` err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCodes, startDate, endDate).Find(&items).Error return } func GetGprRiskIndexDataTimePageByCodes(indexCodes []string, startSize, pageSize int) (dataTimes []string, err error) { //sql := ` SELECT data_time FROM base_from_gpr_risk_data WHERE index_code in (` + utils.GetOrmInReplace(len(indexCodes)) + `) GROUP BY data_time ORDER BY data_time DESC LIMIT ?,? ` sql := ` SELECT data_time FROM base_from_gpr_risk_data WHERE index_code in ? GROUP BY data_time ORDER BY data_time DESC LIMIT ?,? ` err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCodes, startSize, pageSize).Find(&dataTimes).Error return } func GetGprRiskIndexDataTimePageCount(indexCodes []string) (count int, err error) { sql := ` SELECT COUNT(DISTINCT data_time) AS count FROM base_from_gpr_risk_data WHERE index_code in (` + utils.GetOrmInReplace(len(indexCodes)) + `) ` err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCodes).Scan(&count).Error return } func GetGprRiskIndexDataByCodes(indexCode []string) (items []*BaseFromGprRiskData, err error) { if len(indexCode) == 0 { return } sql := ` SELECT * FROM base_from_gpr_risk_data WHERE index_code in (` + utils.GetOrmInReplace(len(indexCode)) + `) ORDER BY data_time DESC ` err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).Find(&items).Error return } // GetGprRiskByConditionAndFrequency 根据条件获取涌益咨询指标列表 func GetGprRiskByConditionAndFrequency(condition, frequency string, pars []interface{}) (items []*BaseFromGprRiskIndex, err error) { sql := ` SELECT * FROM base_from_gpr_risk_index WHERE 1=1 ` if condition != "" { sql += condition } sql += ` AND frequency=?` sql += ` ORDER BY sort ASC, base_from_gpr_risk_index_id ASC` err = global.DbMap[utils.DbNameIndex].Raw(sql, pars, frequency).Find(&items).Error return } func GetGprRiskFrequencyByCondition(condition string, pars []interface{}) (items []string, err error) { sql := `SELECT DISTINCT frequency FROM base_from_gpr_risk_index WHERE 1=1 ` if condition != "" { sql += condition } sql += ` ORDER BY FIELD(frequency,'日度','周度','旬度','月度','季度','半年度','年度') ` err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).Find(&items).Error return } // GetGprRiskDataDataTimeByIndexId 根据指标id获取指标数据的日期列表 func GetGprRiskDataDataTimeByIndexId(indexIdList []int) (items []string, err error) { if len(indexIdList) == 0 { return } sql := ` SELECT DISTINCT data_time FROM base_from_gpr_risk_data WHERE base_from_gpr_risk_index_id IN (` + utils.GetOrmInReplace(len(indexIdList)) + `) ORDER BY data_time DESC` err = global.DbMap[utils.DbNameIndex].Raw(sql, indexIdList).Find(&items).Error for i, item := range items { items[i] = utils.GormDateStrToDateStr(item) } return } type BaseFromGprRiskData struct { BaseFromGprRiskDataId int `orm:"column(base_from_gpr_risk_data_id);pk"` BaseFromGprRiskIndexId int IndexCode string DataTime string Value string CreateTime string ModifyTime string DataTimestamp int64 } func (baseFromGprRiskData *BaseFromGprRiskData) AfterFind(tx *gorm.DB) (err error) { baseFromGprRiskData.ModifyTime = utils.GormDateStrToDateTimeStr(baseFromGprRiskData.ModifyTime) baseFromGprRiskData.CreateTime = utils.GormDateStrToDateTimeStr(baseFromGprRiskData.CreateTime) baseFromGprRiskData.DataTime = utils.GormDateStrToDateStr(baseFromGprRiskData.DataTime) return } type BaseFromGprRiskIndexSearchItem struct { BaseFromGprRiskIndexId int `orm:"column(base_from_gpr_risk_index_id);pk"` ClassifyId int ParentClassifyId int IndexCode string IndexName string } // BatchCheckGprRiskEdbReq 指标数据结构体 type BatchCheckGprRiskEdbReq struct { //IsJoinEdb int `form:"IsJoinEdb" description:"是否加到指标库,0:未加到指标库"` Frequencies string `description:"频度;枚举值:日度、周度、月度、季度、半年度、年度"` Keyword string `description:"关键字"` ClassifyIds string `description:"所选品种id列表"` ListAll bool `form:"ListAll" json:"ListAll" description:"列表全选"` TradeCodeList string `form:"TradeCodeList" json:"TradeCodeList" description:"全选为false时, 该数组为选中; 全选为true时, 该数组为不选的指标"` } // GetGprRiskItemList 模糊查询GprRisk数据库指标列表 func GetGprRiskItemList(condition string) (items []*BaseFromGprRiskIndexSearchItem, err error) { sql := "SELECT * FROM base_from_gpr_risk_index WHERE 1=1" if condition != "" { sql += condition } err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&items).Error return } func GetGprRiskIndexDataByCode(indexCode string, pageIndex, pageSize int) (list []*BaseFromGprRiskData, err error) { sql := `SELECT * FROM base_from_gpr_risk_data WHERE index_code=? order by data_time desc limit ?,?` err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode, pageIndex, pageSize).Find(&list).Error return } func GetGprRiskIndexDataTotalByCode(indexCode string) (total int64, err error) { sqlStr := `SELECT count(*) FROM base_from_gpr_risk_data WHERE index_code=?` var totalNull sql.NullInt64 err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, indexCode).Scan(&totalNull).Error if !totalNull.Valid { total = 0 } else { total = totalNull.Int64 } return } func GetBaseFromGprRiskIndexByIndexCode(indexCode string) (list *BaseFromGprRiskIndex, err error) { sql := ` SELECT * FROM base_from_gpr_risk_index WHERE index_code=? ` err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).First(&list).Error return } type BaseFromGprRiskIndexType struct { Type2 string `gorm:"column:type_2"` Type3 string `gorm:"column:type_3"` } // Update 更新GprRisk指标基础信息 func (item *BaseFromGprRiskIndex) Update(cols []string) (err error) { err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(item).Error return } // EditGprRiskIndexInfoResp 新增指标的返回 type EditGprRiskIndexInfoResp struct { BaseFromGprRiskIndexId int `description:"指标ID"` IndexCode string `description:"指标code"` } type GprRiskIndexSource2EdbReq struct { EdbCode string EdbName string Frequency string Unit string ClassifyId int AdminId int AdminRealName string } func GetGprRiskFrequencyByClassifyId(classifyId int) (items []*GlFrequency, err error) { sql := ` SELECT frequency FROM base_from_gpr_risk_index WHERE classify_id = ? ` sql += ` GROUP BY frequency ORDER BY frequency ASC ` err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).Find(&items).Error return }