123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481 |
- package data_manage
- import (
- "eta/eta_hub/utils"
- "fmt"
- "strings"
- "time"
- "github.com/beego/beego/v2/client/orm"
- "github.com/rdlucklib/rdluck_tools/paging"
- )
- // ChartInfo 图库主表
- type ChartInfo struct {
- ChartInfoId int `orm:"column(chart_info_id);pk"`
- ChartName string `description:"来源名称"`
- ChartNameEn string `description:"英文图表名称"`
- ChartClassifyId int `description:"图表分类id"`
- SysUserId int `description:"创建人ID"`
- SysUserRealName string `description:"创建人姓名"`
- UniqueCode string `description:"图表唯一编码"`
- DateType int `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:21年至今,5:自定义时间,6:起始日期至今,7:18年至今,8:19年至今,9:20年至今,11:22年至今,20:最近N年"`
- StartDate string `description:"自定义开始日期"`
- EndDate string `description:"自定义结束日期"`
- IsSetName int `description:"设置名称"`
- EdbInfoIds string `description:"指标id"`
- ChartType int `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图,7:柱方图,8:商品价格曲线图,9:相关性图"`
- Calendar string `description:"公历/农历"`
- SeasonStartDate string `description:"季节性图开始日期"`
- SeasonEndDate string `description:"季节性图结束日期"`
- ChartImage string `description:"图表图片"`
- Sort int `description:"排序字段,数字越小越排前面"`
- LeftMin string `description:"图表左侧最小值"`
- LeftMax string `description:"图表左侧最大值"`
- RightMin string `description:"图表右侧最小值"`
- RightMax string `description:"图表右侧最大值"`
- Disabled int `description:"是否禁用,0:启用,1:禁用,默认:0"`
- BarConfig string `description:"柱方图的配置,json数据"`
- Source int `description:"1:ETA图库;2:商品价格曲线"`
- ExtraConfig string `description:"图表额外配置,json数据"`
- SeasonExtraConfig string `description:"季节性图表中的配置,json数据"`
- StartYear int `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
- CreateTime time.Time `json:"-"description:"创建时间"`
- ModifyTime time.Time `json:"-"description:"更新时间"`
- }
- func (m *ChartInfo) GetItemsByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string) (items []*ChartInfo, err error) {
- o := orm.NewOrmUsingDB("data")
- fields := strings.Join(fieldArr, ",")
- if len(fieldArr) == 0 {
- fields = `*`
- }
- order := `ORDER BY create_time DESC`
- if orderRule != "" {
- order = ` ORDER BY ` + orderRule
- }
- sql := fmt.Sprintf(`SELECT %s FROM chart_info WHERE 1=1 %s %s`, fields, cond, order)
- _, err = o.Raw(sql, pars).QueryRows(&items)
- return
- }
- func (m *ChartInfo) GetItemTotal(cond string, pars []interface{}) (total int, err error) {
- o := orm.NewOrmUsingDB("data")
- sql := fmt.Sprintf(`SELECT COUNT(*) FROM chart_info WHERE 1=1 %s`, cond)
- err = o.Raw(sql, pars).QueryRow(&total)
- return
- }
- func (m *ChartInfo) GetItemsPageByCondition(cond string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*ChartInfo, err error) {
- o := orm.NewOrmUsingDB("data")
- fields := strings.Join(fieldArr, ",")
- if len(fieldArr) == 0 {
- fields = `*`
- }
- order := `ORDER BY create_time DESC`
- if orderRule != "" {
- order = ` ORDER BY ` + orderRule
- }
- sql := fmt.Sprintf(`SELECT %s FROM chart_info WHERE 1=1 %s %s`, fields, cond, order)
- sql += fmt.Sprintf(` LIMIT %d,%d`, startSize, pageSize)
- _, err = o.Raw(sql, pars).QueryRows(&items)
- return
- }
- func (m *ChartInfo) GetItemByCode(code string) (item *ChartInfo, err error) {
- o := orm.NewOrmUsingDB("data")
- sql := fmt.Sprintf(`SELECT * FROM chart_info WHERE unique_code = ? LIMIT 1`)
- err = o.Raw(sql, code).QueryRow(&item)
- return
- }
- // ChartInfoItem 图表信息
- type ChartInfoItem struct {
- ChartInfoId int `description:"图表ID"`
- ChartName string `description:"来源名称"`
- ChartNameEn string `description:"英文图表名称"`
- ChartClassifyId int `description:"图表分类id"`
- UniqueCode string `description:"图表唯一编码"`
- DateType int `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间" json:"-"`
- StartDate string `description:"自定义开始日期"`
- EndDate string `description:"自定义结束日期"`
- ChartType int `description:"生成样式:1:曲线图,2:季节性图,3:面积图,4:柱状图,5:散点图,6:组合图,7:柱方图,8:商品价格曲线图,9:相关性图"`
- Calendar string `description:"公历/农历"`
- SeasonStartDate string `description:"季节性图开始日期" json:"-"`
- SeasonEndDate string `description:"季节性图开始日期" json:"-"`
- ChartImage string `description:"图表图片"`
- Sort int `description:"排序字段,数字越小越排前面"`
- LeftMin string `description:"图表左侧最小值" json:"-"`
- LeftMax string `description:"图表左侧最大值" json:"-"`
- RightMin string `description:"图表右侧最小值" json:"-"`
- RightMax string `description:"图表右侧最大值" json:"-"`
- BarConfig string `description:"柱方图的配置,json数据" json:"-"`
- Source int `description:"1:ETA图库;2:商品价格曲线" json:"-"`
- ExtraConfig string `description:"图表额外配置,json数据" json:"-"`
- SeasonExtraConfig string `description:"季节性图表中的配置,json数据" json:"-"`
- StartYear int `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N" json:"-"`
- CreateTime string `description:"创建时间"`
- ModifyTime string `description:"更新时间"`
- }
- type ChartInfoItemResp struct {
- List []*ChartInfoItem `description:"图表信息"`
- Paging *paging.PagingItem `description:"分页信息"`
- }
- func FormatChartInfo2Item(origin *ChartInfo) (item *ChartInfoItem) {
- if origin == nil {
- return
- }
- item = new(ChartInfoItem)
- item.ChartInfoId = origin.ChartInfoId
- item.ChartName = origin.ChartName
- item.ChartNameEn = origin.ChartNameEn
- item.ChartClassifyId = origin.ChartClassifyId
- item.UniqueCode = origin.UniqueCode
- item.DateType = origin.DateType
- item.StartDate = origin.StartDate
- item.EndDate = origin.EndDate
- item.ChartType = origin.ChartType
- item.Calendar = origin.Calendar
- item.SeasonStartDate = origin.SeasonStartDate
- item.SeasonEndDate = origin.SeasonEndDate
- item.ChartImage = origin.ChartImage
- item.Sort = origin.Sort
- item.LeftMin = origin.LeftMin
- item.LeftMax = origin.LeftMax
- item.RightMin = origin.RightMin
- item.RightMax = origin.RightMax
- item.BarConfig = origin.BarConfig
- item.Source = origin.Source
- item.ExtraConfig = origin.ExtraConfig
- item.SeasonExtraConfig = origin.SeasonExtraConfig
- item.StartYear = origin.StartYear
- item.CreateTime = utils.TimeTransferString(utils.FormatDateTime, origin.CreateTime)
- item.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, origin.ModifyTime)
- return
- }
- type ChartInfoDetailResp struct {
- ChartInfo *ChartInfo `description:"图表信息"`
- Status bool `description:"true:图表存在,false:图表不存在" json:"-"`
- EdbInfoList []*ChartEdbInfoMapping `description:"指标信息"`
- XEdbIdValue []int `description:"柱方图的x轴数据,指标id"`
- YDataList []YData `description:"柱方图的y轴数据"`
- XDataList []XData `description:"商品价格曲线的X轴数据"`
- BarChartInfo BarChartInfoReq `description:"柱方图的配置"`
- CorrelationChartInfo *CorrelationInfo `description:"相关性图表信息"`
- DataResp interface{} `description:"图表数据,根据图的类型而定的,没有确定的数据格式"`
- }
- // XData 商品价格曲线的的x轴数据
- type XData struct {
- Name string `description:"别名"`
- NameEn string `description:"英文别名"`
- }
- // YData 柱方图的y轴数据
- type YData struct {
- Date string `description:"数据日期"`
- ConfigDate time.Time `description:"配置的日期" json:"-"`
- Color string `description:"数据颜色"`
- Name string `description:"别名"`
- NameEn string `description:"英文别名"`
- Value []float64 `description:"每个指标的值"`
- NoDataEdbList []int `description:"没有数据的指标列表"`
- XEdbInfoIdList []int `description:"对应X轴的指标id列表"`
- NameList []string `description:"每个值对应的名称"`
- EnNameList []string `description:"每个值对应的英文名称"`
- EdbValMap map[int]float64 `description:"指标与值的对应" json:"-"`
- M []int `description:"对应开始日期的间隔值" json:"-"`
- Unit string `description:"中文单位名称"`
- UnitEn string `description:"英文单位名称"`
- }
- // BarChartInfoReq 柱方图预览请求数据
- type BarChartInfoReq struct {
- EdbInfoIdList []BarChartInfoEdbItemReq `description:"指标信息"`
- DateList []BarChartInfoDateReq `description:"日期配置"`
- Sort BarChartInfoSortReq `description:"排序"`
- XEdbList []BarChartInfoEdbItemReq `description:"X轴选择的指标列表"`
- YEdbList []BarChartInfoEdbItemReq `description:"Y轴选择的指标列表"`
- Unit string `description:"中文单位"`
- UnitEn string `description:"英文单位"`
- }
- // BarChartInfoEdbItemReq 柱方图预览请求数据(指标相关)
- type BarChartInfoEdbItemReq struct {
- EdbInfoId int `description:"指标ID"`
- Name string `description:"别名"`
- NameEn string `description:"英文别名"`
- Source int `description:"1:ETA图库;2:商品价格"`
- }
- // BarChartInfoDateReq 柱方图预览请求数据(日期相关)
- type BarChartInfoDateReq struct {
- Type int `description:"配置类型"`
- Date string `description:"固定日期"`
- Value int `description:"N天的值"`
- Color string `description:"颜色"`
- Name string `description:"别名"`
- }
- // BarChartInfoSortReq 柱方图预览请求数据(排序相关)
- type BarChartInfoSortReq struct {
- Sort int `description:"排序类型,0:默认,1:升序,2:降序"`
- DateIndex int `description:"日期数据的下标,从0开始"`
- }
- type CorrelationInfo struct {
- LeadValue int `description:"领先值"`
- LeadUnit string `description:"领先单位"`
- CalculateValue int `description:"计算窗口"`
- CalculateUnit string `description:"计算频度"`
- StartDate string `description:"开始日期"`
- EndDate string `description:"结束日期"`
- EdbInfoIdFirst int `description:"A指标ID"`
- EdbInfoIdSecond int `description:"B指标ID"`
- PeriodData string `description:"X轴-期数数据"`
- CorrelationData string `description:"Y轴-相关性系数"`
- }
- type ChartInfoView struct {
- ChartInfoId int `orm:"column(chart_info_id);pk"`
- ChartName string `description:"来源名称"`
- ChartNameEn string `description:"英文图表名称"`
- Unit string `description:"中文单位名称"`
- UnitEn string `description:"英文单位名称"`
- ChartClassifyId int `description:"图表分类id"`
- ChartClassifyName string `description:"图表名称"`
- SysUserId int
- SysUserRealName string
- UniqueCode string `description:"图表唯一编码"`
- CreateTime time.Time
- ModifyTime time.Time
- DateType int `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间"`
- StartDate string `description:"自定义开始日期"`
- EndDate string `description:"自定义结束日期"`
- IsSetName int `description:"设置名称"`
- EdbInfoIds string `description:"指标id"`
- ChartType int `description:"生成样式:1:曲线图,2:季节性图"`
- Calendar string `description:"公历/农历"`
- SeasonStartDate string `description:"季节性图开始日期"`
- SeasonEndDate string `description:"季节性图开始日期"`
- ChartImage string `description:"图表图片"`
- Sort int `description:"排序字段,数字越小越排前面"`
- IsAdd bool `description:"true:已加入我的图库,false:未加入我的图库"`
- MyChartId int
- MyChartClassifyId string `description:"我的图表分类,多个用逗号隔开"`
- ChartClassify []*ChartClassifyView
- EdbEndDate string `description:"指标最新更新日期"`
- LeftMin string `description:"图表左侧最小值"`
- LeftMax string `description:"图表左侧最大值"`
- RightMin string `description:"图表右侧最小值"`
- RightMax string `description:"图表右侧最大值"`
- IsEdit bool `description:"是否有编辑权限"`
- IsEnChart bool `description:"是否展示英文标识"`
- WarnMsg string `description:"错误信息"`
- Disabled int `description:"是否禁用,0:启用,1:禁用,默认:0"`
- BarConfig string `description:"柱方图的配置,json数据" json:"-"`
- Source int `description:"1:ETA图库;2:商品价格曲线;3:相关性图表"`
- //CorrelationLeadUnit string `description:"相关性图表-领先单位"`
- ExtraConfig string `description:"图表额外配置,json数据"`
- Button ChartViewButton `description:"操作按钮" json:"-"`
- SeasonExtraConfig string `description:"季节性图表中的配置,json数据"`
- StartYear int `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
- }
- type ChartViewButton struct {
- IsEdit bool `description:"是否有编辑权限"`
- IsEnChart bool `description:"是否展示英文标识"`
- IsAdd bool `description:"true:已加入我的图库,false:未加入我的图库"`
- IsCopy bool `description:"是否有另存为按钮"`
- IsSetName int `description:"设置名称"`
- }
- // SectionScatterReq 截面散点请求
- //type SectionScatterReq struct {
- // XName string `description:"x轴名称"`
- // XNameEn string `description:"x轴名称(英文)"`
- // XUnitName string `description:"x轴单位名称"`
- // XUnitNameEn string `description:"x轴单位名称(英文)"`
- // YName string `description:"y轴名称"`
- // YNameEn string `description:"y轴名称(英文)"`
- // YUnitName string `description:"y轴单位名称"`
- // YUnitNameEn string `description:"y轴单位名称(英文)"`
- // XMinValue string `description:"X轴的最小值"`
- // XMaxValue string `description:"X轴的最大值"`
- // YMinValue string `description:"Y轴的最小值"`
- // YMaxValue string `description:"Y轴的最大值"`
- // //EdbList []SectionScatterEdbItemReq `description:"指标数据"`
- // SeriesList []SectionScatterSeriesItemReq `description:"系列数据"`
- //}
- // SectionScatterSeriesItemReq 系列的请求
- //type SectionScatterSeriesItemReq struct {
- // Name string `description:"系列名"`
- // NameEn string `description:"系列名(英文名)"`
- // IsNameDefault bool `description:"是否使用默认的系列名 false修改过 true默认 影响自动更新"`
- // Color string `description:"颜色"`
- // EdbInfoList []SectionScatterEdbItemReq
- // ShowTrendLine bool `description:"是否展示趋势线"`
- // ShowFitEquation bool `description:"是否展示方程式"`
- // ShowRSquare bool `description:"是否展示R平方"`
- //}
- // SectionScatterEdbItemReq 截面散点请求的指标
- //type SectionScatterEdbItemReq struct {
- // XEdbInfoId int `description:"X轴的指标ID"`
- // YEdbInfoId int `description:"Y轴的指标ID"`
- // Name string `description:"别名"`
- // NameEn string `description:"英文别名"`
- // XDateType int `description:"X轴的日期配置类型"`
- // XDate string `description:"X轴的日期固定日期"`
- // XDateValue int `description:"X轴的日期N天的值"`
- // YDateType int `description:"Y轴的日期配置类型"`
- // YDate string `description:"Y轴的日期固定日期"`
- // YDateValue int `description:"Y轴的日期N天的值"`
- // IsShow bool `description:"是否展示"`
- //}
- // SectionScatterInfoResp 截面散点图数据
- //type SectionScatterInfoResp struct {
- // XName string `description:"x轴名称"`
- // XNameEn string `description:"x轴名称(英文)"`
- // XUnitName string `description:"x轴单位名称"`
- // XUnitNameEn string `description:"x轴单位名称(英文)"`
- // YName string `description:"y轴名称"`
- // YNameEn string `description:"y轴名称(英文)"`
- // YUnitName string `description:"y轴单位名称"`
- // YUnitNameEn string `description:"y轴单位名称(英文)"`
- // XMinValue string `description:"X轴的最小值"`
- // XMaxValue string `description:"X轴的最大值"`
- // YMinValue string `description:"Y轴的最小值"`
- // YMaxValue string `description:"Y轴的最大值"`
- // DataList []SectionScatterSeriesItemResp `description:"数据列"`
- //}
- // SectionScatterSeriesItemResp 系列的返回
- //type SectionScatterSeriesItemResp struct {
- // Name string `description:"系列名"`
- // NameEn string `description:"系列名(英文)"`
- // IsNameDefault bool `description:"是否使用默认的系列名 false修改过 true默认 影响自动更新"`
- // Color string `description:"颜色"`
- // EdbInfoList []SectionScatterEdbItemResp
- // ShowTrendLine bool `description:"是否展示趋势线"`
- // ShowFitEquation bool `description:"是否展示方程式"`
- // ShowRSquare bool `description:"是否展示R平方"`
- // TrendLine string `description:"方程式"`
- // RSquare string `description:"R平方的值(决定系数R2)"`
- // TrendLimitData []CoordinatePoint `description:"趋势线的前后坐标点"`
- //}
- // SectionScatterEdbItemResp 截面散点的返回参数
- //type SectionScatterEdbItemResp struct {
- // XEdbInfoId int `description:"X轴指标id"`
- // XDate string `description:"X轴指标实际日期"`
- // XName string `description:"X轴指标名称"`
- // XNameEn string `description:"X轴指标英文名称"`
- // XValue float64 `description:"X轴实际值"`
- // YEdbInfoId int `description:"Y轴指标id"`
- // YDate string `description:"Y轴指标实际日期"`
- // YName string `description:"Y轴指标名称"`
- // YNameEn string `description:"Y轴指标英文名称"`
- // YValue float64 `description:"Y轴实际值"`
- // IsShow bool `description:"是否展示"`
- // Name string `description:"标签名称"`
- // NameEn string `description:"英文标签名称"`
- //}
- // CoordinatePoint 坐标点
- //type CoordinatePoint struct {
- // X float64
- // Y float64
- //}
- // RollingCorrelationChartDataResp 滚动相关性图
- //type RollingCorrelationChartDataResp struct {
- // XDateTimeValue []string `description:"滚动相关性图的x轴数据,日期数据"`
- // YDataList []YData `description:"滚动相关性图的y轴数据"`
- //}
- //type EdbDataList struct {
- // EdbDataId int `description:" 指标数据ID"`
- // EdbInfoId int `description:"指标ID"`
- // DataTime string //`json:"-" description:"数据日期"`
- // DataTimestamp int64 `description:"数据日期"`
- // Value float64 `description:"数据值"`
- //}
- // EditChartInfoExtraConfig 修改 ETA图库 的 图表额外配置
- //func EditChartInfoExtraConfig(chartId int, extraConfig string) (err error) {
- // o := orm.NewOrmUsingDB("data")
- // var pars []interface{}
- // pars = append(pars, extraConfig)
- //
- // sql := ` UPDATE chart_info
- // SET
- // modify_time = NOW(),
- // extra_config = ?
- // `
- // sql += `WHERE chart_info_id = ?`
- //
- // pars = append(pars, chartId)
- // _, err = o.Raw(sql, pars).Exec()
- // if err != nil {
- // fmt.Println("UPDATE chart_info Err:", err.Error())
- // return err
- // }
- //
- // return
- //}
- //type SeasonExtraItem struct {
- // ChartLegend []SeasonChartLegend `description:"自定义的图例名称"`
- // XStartDate string `description:"横坐标显示的起始日"`
- // XEndDate string `description:"横坐标显示的截止日"`
- // JumpYear int `description:"横坐标日期是否跨年,1跨年,0不跨年"`
- //}
- //type SeasonChartLegend struct {
- // Name string
- // Value string
- //}
- type QuarterData struct {
- Year int
- DataList []*EdbDataList
- CuttingDataTimestamp int64 `description:"切割的时间戳"`
- ChartLegend string
- Years string
- }
- type QuarterXDateItem struct {
- StartDate time.Time
- EndDate time.Time
- ShowName string
- ChartLegend string
- CuttingDataTimestamp int64 `description:"切割的时间戳"`
- }
- type QuarterDataList []*QuarterData
- func (m QuarterDataList) Len() int {
- return len(m)
- }
- func (m QuarterDataList) Less(i, j int) bool {
- return m[i].Years < m[j].Years
- }
- func (m QuarterDataList) Swap(i, j int) {
- m[i], m[j] = m[j], m[i]
- }
- // ChartDetailApiResponse 图表详情接口响应体
- type ChartDetailApiResponse struct {
- Ret int
- Msg string
- ErrMsg string
- Data *ChartInfoDetailResp
- }
|