package data_manage import ( "eta/eta_api/global" "eta/eta_api/utils" "fmt" "github.com/rdlucklib/rdluck_tools/paging" "gorm.io/gorm" ) type GlClassify struct { BreedShortName string `gorm:"column:BREED_SHORT_NAME" description:"分类名称"` } func GetGlSurveyClassify() (items []*GlClassify, err error) { sql := `SELECT CASE WHEN BREED_SHORT_NAME IS NULL THEN '无' ELSE BREED_SHORT_NAME END BREED_SHORT_NAME FROM mb_index_main_info GROUP BY BREED_SHORT_NAME ORDER BY BREED_SHORT_NAME ASC` o := global.DbMap[utils.DbNameGL] err = o.Raw(sql).Find(&items).Error return } type GlFrequency struct { Frequency string `description:"频度:1-日度 2-周度 3-月度 4-季度 5-年度 99-无固定频率"` } func GetGlFrequencyByClassifyId(breedShortName string) (items []*GlFrequency, err error) { o := global.DbMap[utils.DbNameGL] var sql string if breedShortName == "无" { sql = `SELECT FREQUENCY_NAME AS frequency FROM mb_index_main_info WHERE BREED_SHORT_NAME IS NULL GROUP BY FREQUENCY_CODE ORDER BY FREQUENCY_CODE ASC` err = o.Raw(sql).Find(&items).Error } else { sql = `SELECT FREQUENCY_NAME AS frequency FROM mb_index_main_info WHERE BREED_SHORT_NAME=? GROUP BY FREQUENCY_CODE ORDER BY FREQUENCY_CODE ASC` err = o.Raw(sql, breedShortName).Find(&items).Error } return } type GlIndex struct { Id int `gorm:"column:id;primaryKey"` IndexCode string `description:"指标编码" gorm:"column:INDEX_CODE"` IndexName string `description:"指标名称" gorm:"column:INDEX_NAME"` UnitName string `description:"单位" gorm:"column:UNIT_NAME"` FrequencyName string `description:"频度名称" gorm:"column:FREQUENCY_NAME"` UpdateTime string `description:"更新时间" gorm:"column:UPDATE_TIME"` } func (g *GlIndex) AfterFind(tx *gorm.DB) (err error) { g.UpdateTime = utils.GormDateStrToDateTimeStr(g.UpdateTime) return } func (g *GlIndex) TimeToDateStr() { g.UpdateTime = utils.GormDateStrToDateTimeStr(g.UpdateTime) return } func GetGlIndex(breedShortName, frequency string) (items []*GlIndex, err error) { o := global.DbMap[utils.DbNameGL] var sql string if breedShortName == "无" { sql = `SELECT * FROM mb_index_main_info WHERE BREED_SHORT_NAME IS NULL AND FREQUENCY_NAME=? ORDER BY INDEX_CODE ASC` err = o.Raw(sql, frequency).Find(&items).Error } else { sql = `SELECT * FROM mb_index_main_info WHERE BREED_SHORT_NAME=? AND FREQUENCY_NAME=? ORDER BY INDEX_CODE ASC` err = o.Raw(sql, breedShortName, frequency).Find(&items).Error } return } func GetGlFrequency(productName string) (items []*string, err error) { sql := `SELECT DISTINCT FREQUENCY_NAME FROM mb_index_main_info WHERE BREED_SHORT_NAME=? ORDER BY FIELD(FREQUENCY_NAME,'日度','周度','旬度','月度','季度','半年','年度')` o := global.DbMap[utils.DbNameGL] err = o.Raw(sql, productName).Find(&items).Error return } type GlIndexList struct { Id int `gorm:"column:ID;primaryKey"` IndexCode string `gorm:"column:INDEX_CODE" description:"指标编码"` IndexName string `gorm:"column:INDEX_NAME" description:"指标名称"` UnitName string `gorm:"column:UNIT_NAME" description:"单位"` FrequencyName string `gorm:"column:FREQUENCY_NAME" description:"频度名称"` UpdateTime string `gorm:"column:UPDATE_TIME" description:"更新时间"` Paging *paging.PagingItem `gorm:"-" description:"分页数据"` DataList []*GlIndexData `gorm:"-"` } type GlIndexData struct { InputValue string `description:"日期" gorm:"column:DATA_VALUE"` DataTime string `description:"值" gorm:"column:DATA_DATE"` } func (g *GlIndexData) AfterFind(tx *gorm.DB) (err error) { g.InputValue = utils.GormDateStrToDateStr(g.InputValue) return } func GetGlIndexData(indexCode string, startSize, pageSize int) (items []*GlIndexData, err error) { sql := `SELECT * FROM ( SELECT DISTINCT a.INDEX_CODE,a.DATA_VALUE,a.DATA_DATE FROM mb_index_main_data AS a WHERE INDEX_CODE=? AND IS_DELETE=0 ORDER BY DATA_DATE DESC,PUBLISH_TIME DESC ) AS t GROUP BY t.DATA_DATE ORDER BY t.DATA_DATE DESC LIMIT ?,?` o := global.DbMap[utils.DbNameGL] err = o.Raw(sql, indexCode, startSize, pageSize).Find(&items).Error return } func GetGlIndexByCode(indexCode string) (items *GlIndex, err error) { sql := `SELECT * FROM mb_index_main_info WHERE INDEX_CODE=?` o := global.DbMap[utils.DbNameGL] err = o.Raw(sql, indexCode).First(&items).Error if err != nil { return } items.TimeToDateStr() return } func GetGlIndexDataCount(indexCode string) (count int, err error) { sql := `SELECT COUNT(1) AS count FROM ( SELECT * FROM ( SELECT DISTINCT a.INDEX_CODE,a.DATA_VALUE,a.DATA_DATE FROM mb_index_main_data AS a WHERE INDEX_CODE=? AND IS_DELETE=0 ORDER BY DATA_DATE DESC,PUBLISH_TIME DESC ) AS t GROUP BY t.DATA_DATE ORDER BY t.DATA_DATE DESC ) AS n` o := global.DbMap[utils.DbNameGL] err = o.Raw(sql, indexCode).Scan(&count).Error return } type GlSearchIndex struct { Id int `orm:"column(ID)" gorm:"column:ID"` IndexCode string `orm:"column(INDEX_CODE)" gorm:"column:INDEX_CODE"` IndexName string `orm:"column(INDEX_NAME)" gorm:"column:INDEX_NAME"` UnitName string `orm:"column(UNIT_NAME)" gorm:"column:UNIT_NAME"` FrequencyName string `orm:"column(FREQUENCY_NAME)" gorm:"column:FREQUENCY_NAME"` UpdateTime string `orm:"column(UPDATE_TIME)" gorm:"column:UPDATE_TIME"` BreedShortName string `orm:"column(BREED_SHORT_NAME)" gorm:"column:BREED_SHORT_NAME"` StartDate string `orm:"column(BEGIN_DATE)" gorm:"column:BEGIN_DATE"` EndDate string `orm:"column(END_DATE)" gorm:"column:END_DATE"` LatestValue float64 `orm:"column(DATA_VALUE)" gorm:"column:DATA_VALUE"` CreateTime string `orm:"column(CREATE_TIME)" gorm:"column:CREATE_TIME"` ModifyTime string `orm:"column(UPDATE_TIME)" gorm:"column:UPDATE_TIME"` Source int `gorm:"-"` SourceName string `orm:"column(SOURCE_NAME)" gorm:"column:SOURCE_NAME"` SearchText string `description:"搜索结果(含高亮)" gorm:"-"` } func (g *GlSearchIndex) AfterFind(tx *gorm.DB) (err error) { g.UpdateTime = utils.GormDateStrToDateTimeStr(g.UpdateTime) g.CreateTime = utils.GormDateStrToDateTimeStr(g.CreateTime) g.ModifyTime = utils.GormDateStrToDateTimeStr(g.ModifyTime) g.StartDate = utils.GormDateStrToDateStr(g.StartDate) g.EndDate = utils.GormDateStrToDateStr(g.EndDate) return } func GetGlItemList(keyword string) (items []*GlSearchIndex, err error) { sql := "SELECT * FROM mb_index_main_info WHERE CONCAT(INDEX_NAME,INDEX_CODE) LIKE ?" o := global.DbMap[utils.DbNameGL] err = o.Raw(sql, utils.GetLikeKeyword(keyword)).Find(&items).Error return } func GetGlDataMaxCount(classifyName string) (count int, err error) { sql := `SELECT MAX(t.num) AS count FROM ( SELECT COUNT(1) AS num FROM mb_index_main_info AS a INNER JOIN mb_index_main_data AS b ON a.INDEX_CODE=b.INDEX_CODE WHERE a.BREED_SHORT_NAME=? GROUP BY a.INDEX_CODE ) AS t` o := global.DbMap[utils.DbNameGL] err = o.Raw(sql, classifyName).Scan(&count).Error return } func GetGlDataByCode(indexCode string) (items []*GlIndexData, err error) { //sql := `SELECT * FROM ( // SELECT * FROM mb_index_main_data WHERE INDEX_CODE=? // GROUP BY UPDATE_TIME DESC, DATA_DATE DESC //) a GROUP BY a.DATA_DATE DESC` sql := `SELECT * FROM ( SELECT * FROM mb_index_main_data WHERE INDEX_CODE=? GROUP BY UPDATE_TIME , DATA_DATE ORDER BY UPDATE_TIME DESC, DATA_DATE DESC ) a GROUP BY a.DATA_DATE ORDER BY a.DATA_DATE DESC` o := global.DbMap[utils.DbNameGL] err = o.Raw(sql, indexCode).Find(&items).Error return } type GlDataPageListResp struct { Paging *paging.PagingItem List []*GlSearchIndex } func GetGlItemListByIds(ids []int) (items []*GlSearchIndex, err error) { if len(ids) == 0 { return } sql := fmt.Sprintf(`SELECT * FROM mb_index_main_info WHERE ID IN (%s)`, utils.GetOrmInReplace(len(ids))) o := global.DbMap[utils.DbNameGL] err = o.Raw(sql, ids).Find(&items).Error return }