chart_edb_mapping.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. package data_manage
  2. import (
  3. "eta/eta_mobile/utils"
  4. "github.com/beego/beego/v2/client/orm"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. "time"
  7. )
  8. type ChartEdbMapping struct {
  9. ChartEdbMappingId int `orm:"column(chart_edb_mapping_id);pk"`
  10. ChartInfoId int `description:"图表id"`
  11. EdbInfoId int `description:"指标id"`
  12. CreateTime time.Time `description:"创建时间"`
  13. ModifyTime time.Time `description:"修改时间"`
  14. UniqueCode string `description:"唯一编码"`
  15. MaxData float64 `description:"上限"`
  16. MinData float64 `description:"下限"`
  17. IsOrder bool `description:"true:正序,false:逆序"`
  18. IsAxis int `description:"true:左轴,false:右轴"`
  19. EdbInfoType int `description:"true:标准指标,false:领先指标"`
  20. LeadValue int `description:"领先值"`
  21. LeadUnit string `description:"领先单位"`
  22. ChartStyle string `description:"图表类型"`
  23. ChartColor string `description:"颜色"`
  24. PredictChartColor string `description:"预测数据的颜色"`
  25. ChartWidth float64 `description:"线条大小"`
  26. Source int `description:"1:ETA图库;2:商品价格曲线"`
  27. EdbAliasName string `description:"中文别名"`
  28. }
  29. func AddChartEdbMapping(items []*ChartEdbMapping) (err error) {
  30. o := orm.NewOrmUsingDB("data")
  31. _, err = o.InsertMulti(1, items)
  32. return
  33. }
  34. func GetChartEdbMappingList(chartInfoId int) (list []*ChartEdbInfoMapping, err error) {
  35. o := orm.NewOrmUsingDB("data")
  36. sql := ` SELECT a.*,b.source_name,b.source,b.sub_source,b.classify_id,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type,b.edb_type
  37. FROM chart_edb_mapping AS a
  38. INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
  39. WHERE chart_info_id=?
  40. ORDER BY chart_edb_mapping_id ASC `
  41. _, err = o.Raw(sql, chartInfoId).QueryRows(&list)
  42. return
  43. }
  44. func GetChartEdbMappingListByChartInfoIds(chartInfoIds string) (list []*ChartEdbInfoMapping, err error) {
  45. o := orm.NewOrmUsingDB("data")
  46. sql := ` SELECT a.*,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type,b.edb_type
  47. FROM chart_edb_mapping AS a
  48. INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
  49. WHERE chart_info_id in (` + chartInfoIds + `)
  50. ORDER BY chart_edb_mapping_id ASC `
  51. _, err = o.Raw(sql).QueryRows(&list)
  52. return
  53. }
  54. func GetChartEdbMappingListByEdbInfoId(edbInfoStr string) (list []*ChartEdbInfoMapping, err error) {
  55. o := orm.NewOrmUsingDB("data")
  56. sql := ` SELECT edb_info_id,source_name,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value,edb_type
  57. FROM edb_info
  58. WHERE edb_info_id IN(` + edbInfoStr + `)
  59. ORDER BY FIELD(edb_info_id,` + edbInfoStr + `)
  60. `
  61. _, err = o.Raw(sql).QueryRows(&list)
  62. return
  63. }
  64. // GetChartEdbMappingListByEdbInfoIdList 根据指标id列表获取关联关系
  65. func GetChartEdbMappingListByEdbInfoIdList(edbIdList []int) (list []*ChartEdbInfoMapping, err error) {
  66. num := len(edbIdList)
  67. if num <= 0 {
  68. return
  69. }
  70. o := orm.NewOrmUsingDB("data")
  71. sql := ` SELECT edb_info_id,source_name,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value,edb_type,sub_source,sub_source_name,indicator_code,stock_code
  72. FROM edb_info
  73. WHERE edb_info_id IN(` + utils.GetOrmInReplace(num) + `)
  74. ORDER BY FIELD(edb_info_id,` + utils.GetOrmInReplace(num) + `)
  75. `
  76. _, err = o.Raw(sql, edbIdList, edbIdList).QueryRows(&list)
  77. return
  78. }
  79. // GetChartEdbMappingListByIdList 通过图表id列表获取
  80. func GetChartEdbMappingListByIdList(chartInfoIdList []int) (list []*ChartEdbInfoMapping, err error) {
  81. num := len(chartInfoIdList)
  82. if num <= 0 {
  83. return
  84. }
  85. o := orm.NewOrmUsingDB("data")
  86. sql := ` SELECT a.*,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type,b.edb_type AS edb_info_category_type
  87. FROM chart_edb_mapping AS a
  88. INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
  89. WHERE chart_info_id in (` + utils.GetOrmInReplace(num) + `)
  90. ORDER BY chart_edb_mapping_id ASC `
  91. _, err = o.Raw(sql, chartInfoIdList).QueryRows(&list)
  92. return
  93. }
  94. // RelationEdbInfoListResp 关联指标列表数据返回
  95. type RelationEdbInfoListResp struct {
  96. Paging *paging.PagingItem
  97. List []*ChartEdbInfoMapping
  98. }
  99. func GetRelationEdbInfoListByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*ChartEdbInfoMapping, err error) {
  100. o := orm.NewOrmUsingDB("data")
  101. sql := ` SELECT a.* FROM edb_info AS a
  102. JOIN edb_info_calculate_mapping AS b on a.edb_info_id = b.edb_info_id WHERE 1=1 `
  103. if condition != "" {
  104. sql += condition
  105. }
  106. //sql += " ORDER BY sort ASC,chart_info_id DESC LIMIT ?,? "
  107. sql += " ORDER BY a.create_time DESC LIMIT ?,? "
  108. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&item)
  109. return
  110. }
  111. func GetRelationEdbInfoListCountByCondition(condition string, pars []interface{}) (count int, err error) {
  112. o := orm.NewOrmUsingDB("data")
  113. sql := ` SELECT COUNT(1) AS count FROM edb_info AS a
  114. JOIN edb_info_calculate_mapping AS b on a.edb_info_id = b.edb_info_id WHERE 1=1 `
  115. if condition != "" {
  116. sql += condition
  117. }
  118. err = o.Raw(sql, pars).QueryRow(&count)
  119. return
  120. }
  121. // GetEtaEdbChartEdbMapping 商品曲线图查询对应的普通指标
  122. func GetEtaEdbChartEdbMapping(chartInfoId int) (item *ChartEdbInfoMapping, err error) {
  123. o := orm.NewOrmUsingDB("data")
  124. aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source`
  125. sql := ` SELECT ` + aField + `,b.source_name,b.source,b.sub_source,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type
  126. FROM chart_edb_mapping AS a
  127. INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
  128. WHERE a.chart_info_id=? AND a.source = ?
  129. ORDER BY chart_edb_mapping_id ASC `
  130. err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_DEFAULT).QueryRow(&item)
  131. return
  132. }
  133. // GetFutureGoodEdbChartEdbMapping 商品曲线图查询对应的商品指标
  134. func GetFutureGoodEdbChartEdbMapping(chartInfoId int) (item *ChartEdbInfoMapping, err error) {
  135. o := orm.NewOrmUsingDB("data")
  136. aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source`
  137. sql := ` SELECT ` + aField + `,b.future_good_edb_info_id,b.future_good_edb_code as edb_code,b.future_good_edb_name as edb_name,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value
  138. FROM chart_edb_mapping AS a
  139. INNER JOIN future_good_edb_info AS b ON a.edb_info_id=b.future_good_edb_info_id
  140. WHERE a.chart_info_id=? AND a.source = ?
  141. ORDER BY chart_edb_mapping_id ASC `
  142. err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_FUTURE_GOOD).QueryRow(&item)
  143. return
  144. }
  145. // GetFutureGoodEdbChartEdbMappingList 商品曲线图查询对应的商品指标
  146. func GetFutureGoodEdbChartEdbMappingList(chartInfoId int) (items []*ChartEdbInfoMapping, err error) {
  147. o := orm.NewOrmUsingDB("data")
  148. aField := `a.chart_edb_mapping_id,a.chart_info_id,a.edb_info_id,a.create_time,a.modify_time,a.unique_code,a.max_data,a.min_data,a.is_order,a.is_axis,a.edb_info_type,a.lead_value,a.lead_unit,a.chart_style,a.chart_color,a.predict_chart_color,a.chart_width,a.source as mapping_source`
  149. sql := ` SELECT ` + aField + `,b.future_good_edb_info_id,b.future_good_edb_code as edb_code,b.future_good_edb_name as edb_name,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value
  150. FROM chart_edb_mapping AS a
  151. INNER JOIN future_good_edb_info AS b ON a.edb_info_id=b.future_good_edb_info_id
  152. WHERE a.chart_info_id=? AND a.source = ?
  153. ORDER BY chart_edb_mapping_id ASC `
  154. _, err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_FUTURE_GOOD).QueryRows(&items)
  155. return
  156. }
  157. // GetChartEdbMappingListV2 根据图表id获取指标信息,不连表查询指标表
  158. func GetChartEdbMappingListV2(chartInfoId int) (list []*ChartEdbInfoMapping, err error) {
  159. o := orm.NewOrmUsingDB("data")
  160. sql := ` SELECT a.* FROM chart_edb_mapping AS a
  161. WHERE chart_info_id=?
  162. ORDER BY chart_edb_mapping_id ASC `
  163. _, err = o.Raw(sql, chartInfoId).QueryRows(&list)
  164. return
  165. }
  166. // GetChartEdbMappingByEdbInfoId 根据指标id获取edb_mapping
  167. func GetChartEdbMappingByEdbInfoId(edbInfoId int) (item *ChartEdbInfoMapping, err error) {
  168. o := orm.NewOrmUsingDB("data")
  169. sql := ` SELECT edb_info_id,source_name,classify_id,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,max_value,min_value
  170. FROM edb_info
  171. WHERE edb_info_id = ? limit 1`
  172. err = o.Raw(sql, edbInfoId).QueryRow(&item)
  173. return
  174. }
  175. // GetChartEdbMappingByFutureGoodEdbInfoId 根据指标id获取edb_mapping
  176. func GetChartEdbMappingByFutureGoodEdbInfoId(edbInfoId int) (item *ChartEdbInfoMapping, err error) {
  177. o := orm.NewOrmUsingDB("data")
  178. sql := ` SELECT future_good_edb_info_id as edb_info_id,future_good_edb_code as edb_code,b.future_good_edb_name as edb_name,b.start_date,b.end_date,b.modify_time,b.latest_date,b.latest_value,b.region_type
  179. FROM future_good_edb_info b
  180. WHERE future_good_edb_info_id = ? limit 1 `
  181. err = o.Raw(sql, edbInfoId).QueryRow(&item)
  182. return
  183. }