123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- // Package data_manage
- // @Author gmy 2024/8/7 9:50:00
- package data_manage
- import (
- "github.com/beego/beego/v2/client/orm"
- "github.com/rdlucklib/rdluck_tools/paging"
- "strings"
- )
- type BaseFromLyData struct {
- BaseFromLyDataId int `orm:"column(base_from_ly_data_id);pk" description:"数据ID"`
- CreateTime string `orm:"column(create_time)" description:"创建时间"`
- ModifyTime string `orm:"column(modify_time)" description:"修改时间"`
- BaseFromLyIndexId int `orm:"column(base_from_ly_index_id)" description:"指标id"`
- IndexCode string `orm:"column(index_code)" description:"指标编码"`
- DataTime string `orm:"column(data_time)" description:"数据日期"`
- Value float64 `orm:"column(value)" description:"数据值"`
- }
- func init() {
- orm.RegisterModel(new(BaseFromLyData))
- }
- type BaseFromLyDataPage struct {
- List []*BaseFromLyData `description:"指标数据列表"`
- Paging *paging.PagingItem `description:"分页数据"`
- }
- // GetLyDataCountByIndexId 获取指标数据总数
- func GetLyDataCountByIndexId(indexId int) (count int, err error) {
- o := orm.NewOrmUsingDB("data")
- sql := `SELECT count(*) FROM base_from_ly_data WHERE base_from_ly_index_id=?`
- err = o.Raw(sql, indexId).QueryRow(&count)
- return
- }
- // GetLyDataPageByIndexId 获取指标数据分页列表
- func GetLyDataPageByIndexId(indexId int, startSize, pageSize int) (items []*BaseFromLyData, err error) {
- o := orm.NewOrmUsingDB("data")
- sql := `SELECT * FROM base_from_ly_data WHERE base_from_ly_index_id=? ORDER BY data_time desc LIMIT ?,?`
- _, err = o.Raw(sql, indexId, (startSize-1)*pageSize, pageSize).QueryRows(&items)
- return
- }
- // GetBaseFromLyDataByIndexCode 根据指标编码查询
- func GetBaseFromLyDataByIndexCode(indexCode string) (items []*BaseFromLyData, err error) {
- sql := `SELECT * FROM base_from_ly_data WHERE index_code=? ORDER BY data_time desc`
- o := orm.NewOrmUsingDB("data")
- _, err = o.Raw(sql, indexCode).QueryRows(&items)
- return
- }
- func GetLyDataListByIndexCodes(IndexCodes string) (items []string, err error) {
- sql := ` SELECT data_time FROM base_from_ly_data WHERE index_code IN(` + IndexCodes + `) GROUP BY data_time DESC `
- o := orm.NewOrmUsingDB("data")
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- // GetLyLastUpdateTimeLastByIndexCode 根据指标编码查询 返回ModifyTime最后一条数据
- func GetLyLastUpdateTimeLastByIndexCode(indexCodes []string) (items []*BaseFromLyData, err error) {
- o := orm.NewOrmUsingDB("data")
- // 将 indexCodes 切片转换为逗号分隔的字符串
- placeholders := strings.Repeat("?,", len(indexCodes)-1) + "?"
- // 构造 SQL 查询
- sql := `SELECT index_code, MAX(modify_time) AS modify_time
- FROM base_from_ly_data
- WHERE index_code IN (` + placeholders + `)
- GROUP BY index_code`
- // 执行 SQL 查询
- _, err = o.Raw(sql, indexCodes).QueryRows(&items)
- if err != nil {
- return nil, err
- }
- return items, nil
- }
- // GetLyLastDataTimeByIndexCode 根据指标编码查询 返回data_time最后一条数据的value
- func GetLyLastDataTimeByIndexCode(indexCodes []string) (items []*BaseFromLyData, err error) {
- o := orm.NewOrmUsingDB("data")
- // 将 indexCodes 切片转换为逗号分隔的字符串
- placeholders := strings.Repeat("?,", len(indexCodes)-1) + "?"
- // 构造 SQL 查询
- sql := `
- SELECT t1.*
- FROM base_from_ly_data t1
- INNER JOIN (
- SELECT index_code, MAX(data_time) AS data_time
- FROM base_from_ly_data
- WHERE index_code IN (` + placeholders + `)
- GROUP BY index_code
- ) t2
- ON t1.index_code = t2.index_code AND t1.data_time = t2.data_time
- `
- // 执行 SQL 查询
- _, err = o.Raw(sql, indexCodes).QueryRows(&items)
- if err != nil {
- return nil, err
- }
- return items, nil
- }
|