chart_edb_mapping.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508
  1. package data_manage
  2. import (
  3. "eta/eta_api/utils"
  4. "fmt"
  5. "github.com/beego/beego/v2/client/orm"
  6. "github.com/rdlucklib/rdluck_tools/paging"
  7. "strconv"
  8. "strings"
  9. "time"
  10. )
  11. type ChartEdbMapping struct {
  12. ChartEdbMappingId int `orm:"column(chart_edb_mapping_id);pk;auto"`
  13. ChartInfoId int `description:"图表id"`
  14. EdbInfoId int `description:"指标id"`
  15. CreateTime time.Time `description:"创建时间"`
  16. ModifyTime time.Time `description:"修改时间"`
  17. UniqueCode string `description:"唯一编码"`
  18. MaxData float64 `description:"上限"`
  19. MinData float64 `description:"下限"`
  20. IsOrder int `description:"1:正序,0:逆序"`
  21. IsAxis int `description:"true:左轴,false:右轴"`
  22. EdbInfoType int `description:"true:标准指标,false:领先指标"`
  23. LeadValue int `description:"领先值"`
  24. LeadUnit string `description:"领先单位"`
  25. ChartStyle string `description:"图表类型"`
  26. ChartColor string `description:"颜色"`
  27. PredictChartColor string `description:"预测数据的颜色"`
  28. ChartWidth float64 `description:"线条大小"`
  29. Source int `description:"1:ETA图库;2:商品价格曲线"`
  30. EdbAliasName string `description:"中文别名"`
  31. IsConvert int `description:"是否数据转换 0不转 1转"`
  32. ConvertType int `description:"数据转换类型 1乘 2除 3对数"`
  33. ConvertValue float64 `description:"数据转换值"`
  34. ConvertUnit string `description:"数据转换单位"`
  35. ConvertEnUnit string `description:"数据转换单位"`
  36. }
  37. func AddChartEdbMapping(items []*ChartEdbMapping) (err error) {
  38. o := orm.NewOrmUsingDB("data")
  39. _, err = o.InsertMulti(utils.MultiAddNum, items)
  40. return
  41. }
  42. func GetChartEdbMappingList(chartInfoId int) (items []*ChartEdbInfoMapping, err error) {
  43. var ormList []*ChartEdbInfoMappingOrm
  44. items = make([]*ChartEdbInfoMapping, 0)
  45. o := orm.NewOrmUsingDB("data")
  46. 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,
  47. 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,b.is_join_permission,
  48. a.is_convert, a.convert_type, a.convert_value, a.convert_unit, a.convert_en_unit
  49. FROM chart_edb_mapping AS a
  50. INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
  51. WHERE chart_info_id=?
  52. ORDER BY chart_edb_mapping_id ASC `
  53. _, err = o.Raw(sql, chartInfoId).QueryRows(&ormList)
  54. if err != nil {
  55. return
  56. }
  57. for _, ormItem := range ormList {
  58. items = append(items, ormItem.ToItem())
  59. }
  60. return
  61. }
  62. func GetChartMappingList(chartInfoId int) (items []*ChartEdbMapping, err error) {
  63. o := orm.NewOrmUsingDB("data")
  64. sql := ` SELECT a.*
  65. FROM chart_edb_mapping AS a
  66. WHERE chart_info_id=?
  67. ORDER BY chart_edb_mapping_id ASC `
  68. _, err = o.Raw(sql, chartInfoId).QueryRows(&items)
  69. if err != nil {
  70. return
  71. }
  72. return
  73. }
  74. func GetChartEdbMappingListByChartInfoIds(chartInfoIds string) (items []*ChartEdbInfoMapping, err error) {
  75. var ormList []*ChartEdbInfoMappingOrm
  76. items = make([]*ChartEdbInfoMapping, 0)
  77. o := orm.NewOrmUsingDB("data")
  78. 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,b.classify_id,b.is_join_permission
  79. FROM chart_edb_mapping AS a
  80. INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
  81. WHERE chart_info_id in (` + chartInfoIds + `)
  82. ORDER BY chart_edb_mapping_id ASC `
  83. _, err = o.Raw(sql).QueryRows(&ormList)
  84. if err != nil {
  85. return
  86. }
  87. for _, ormItem := range ormList {
  88. items = append(items, ormItem.ToItem())
  89. }
  90. return
  91. }
  92. func GetChartEdbMappingListByEdbInfoId(edbInfoStr string) (items []*ChartEdbInfoMapping, err error) {
  93. var ormList []*ChartEdbInfoMappingOrm
  94. items = make([]*ChartEdbInfoMapping, 0)
  95. o := orm.NewOrmUsingDB("data")
  96. 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,classify_id,is_join_permission
  97. FROM edb_info
  98. WHERE edb_info_id IN(` + edbInfoStr + `)
  99. ORDER BY FIELD(edb_info_id,` + edbInfoStr + `)
  100. `
  101. _, err = o.Raw(sql).QueryRows(&ormList)
  102. if err != nil {
  103. return
  104. }
  105. for _, ormItem := range ormList {
  106. items = append(items, ormItem.ToItem())
  107. }
  108. return
  109. }
  110. // GetChartEdbMappingListByEdbInfoIdList 根据指标id列表获取关联关系
  111. func GetChartEdbMappingListByEdbInfoIdList(edbIdList []int) (items []*ChartEdbInfoMapping, err error) {
  112. num := len(edbIdList)
  113. if num <= 0 {
  114. return
  115. }
  116. var ormList []*ChartEdbInfoMappingOrm
  117. items = make([]*ChartEdbInfoMapping, 0)
  118. o := orm.NewOrmUsingDB("data")
  119. if utils.DBDRIVER_NAME == "postgres" {
  120. 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,classify_id,is_join_permission
  121. FROM edb_info
  122. WHERE edb_info_id IN(` + utils.GetOrmInReplace(num) + `)
  123. ORDER BY CASE edb_info_id `
  124. for k, v := range edbIdList {
  125. sql += `WHEN ` + strconv.Itoa(v) + ` THEN ` + strconv.Itoa(k+1)
  126. }
  127. sql += ` END`
  128. _, err = o.Raw(sql, edbIdList).QueryRows(&ormList)
  129. if err != nil {
  130. return
  131. }
  132. for _, ormItem := range ormList {
  133. items = append(items, ormItem.ToItem())
  134. }
  135. } else {
  136. 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,classify_id,is_join_permission
  137. FROM edb_info
  138. WHERE edb_info_id IN(` + utils.GetOrmInReplace(num) + `)
  139. ORDER BY FIELD(edb_info_id,` + utils.GetOrmInReplace(num) + `) `
  140. _, err = o.Raw(sql, edbIdList, edbIdList).QueryRows(&ormList)
  141. if err != nil {
  142. return
  143. }
  144. for _, ormItem := range ormList {
  145. items = append(items, ormItem.ToItem())
  146. }
  147. }
  148. return
  149. }
  150. // GetChartEdbMappingListByIdList 通过图表id列表获取
  151. func GetChartEdbMappingListByIdList(chartInfoIdList []int) (items []*ChartEdbInfoMapping, err error) {
  152. num := len(chartInfoIdList)
  153. if num <= 0 {
  154. return
  155. }
  156. var ormList []*ChartEdbInfoMappingOrm
  157. items = make([]*ChartEdbInfoMapping, 0)
  158. o := orm.NewOrmUsingDB("data")
  159. 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,b.classify_id,b.is_join_permission
  160. FROM chart_edb_mapping AS a
  161. INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
  162. WHERE chart_info_id in (` + utils.GetOrmInReplace(num) + `)
  163. ORDER BY chart_edb_mapping_id ASC `
  164. _, err = o.Raw(sql, chartInfoIdList).QueryRows(&ormList)
  165. if err != nil {
  166. return
  167. }
  168. for _, ormItem := range ormList {
  169. items = append(items, ormItem.ToItem())
  170. }
  171. return
  172. }
  173. // RelationEdbInfoListResp 关联指标列表数据返回
  174. type RelationEdbInfoListResp struct {
  175. Paging *paging.PagingItem
  176. List []*ChartEdbInfoMapping
  177. }
  178. func GetRelationEdbInfoListByCondition(condition string, pars []interface{}, startSize, pageSize int) (items []*ChartEdbInfoMapping, err error) {
  179. var ormList []*ChartEdbInfoMappingOrm
  180. items = make([]*ChartEdbInfoMapping, 0)
  181. o := orm.NewOrmUsingDB("data")
  182. sql := ` SELECT a.* FROM edb_info AS a
  183. JOIN edb_info_calculate_mapping AS b on a.edb_info_id = b.edb_info_id WHERE 1=1 `
  184. if condition != "" {
  185. sql += condition
  186. }
  187. //sql += " ORDER BY sort ASC,chart_info_id DESC LIMIT ?,? "
  188. sql += " ORDER BY a.create_time DESC LIMIT ?,? "
  189. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&ormList)
  190. if err != nil {
  191. return
  192. }
  193. for _, ormItem := range ormList {
  194. items = append(items, ormItem.ToItem())
  195. }
  196. return
  197. }
  198. func GetRelationEdbInfoListCountByCondition(condition string, pars []interface{}) (count int, err error) {
  199. o := orm.NewOrmUsingDB("data")
  200. sql := ` SELECT COUNT(1) AS count FROM edb_info AS a
  201. JOIN edb_info_calculate_mapping AS b on a.edb_info_id = b.edb_info_id WHERE 1=1 `
  202. if condition != "" {
  203. sql += condition
  204. }
  205. err = o.Raw(sql, pars).QueryRow(&count)
  206. return
  207. }
  208. // GetEtaEdbChartEdbMapping 商品曲线图查询对应的普通指标
  209. func GetEtaEdbChartEdbMapping(chartInfoId int) (item *ChartEdbInfoMapping, err error) {
  210. var chartEdbInfoMappingOrm *ChartEdbInfoMappingOrm
  211. o := orm.NewOrmUsingDB("data")
  212. 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`
  213. 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,b.classify_id,b.is_join_permission
  214. FROM chart_edb_mapping AS a
  215. INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
  216. WHERE a.chart_info_id=? AND a.source = ?
  217. ORDER BY chart_edb_mapping_id ASC `
  218. err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_DEFAULT).QueryRow(&chartEdbInfoMappingOrm)
  219. if err != nil {
  220. return
  221. }
  222. item = chartEdbInfoMappingOrm.ToItem()
  223. return
  224. }
  225. // GetEtaEdbChartEdbMappingList 商品曲线图查询对应的普通指标
  226. func GetEtaEdbChartEdbMappingList(chartInfoId int) (items []*ChartEdbInfoMapping, err error) {
  227. var ormList []*ChartEdbInfoMappingOrm
  228. items = make([]*ChartEdbInfoMapping, 0)
  229. o := orm.NewOrmUsingDB("data")
  230. 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`
  231. 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,b.classify_id,b.is_join_permission
  232. FROM chart_edb_mapping AS a
  233. INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
  234. WHERE a.chart_info_id=? AND a.source = ?
  235. ORDER BY chart_edb_mapping_id ASC `
  236. _, err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_DEFAULT).QueryRows(&ormList)
  237. if err != nil {
  238. return
  239. }
  240. for _, ormItem := range ormList {
  241. items = append(items, ormItem.ToItem())
  242. }
  243. return
  244. }
  245. // GetFutureGoodEdbChartEdbMapping 商品曲线图查询对应的商品指标
  246. func GetFutureGoodEdbChartEdbMapping(chartInfoId int) (item *ChartEdbInfoMapping, err error) {
  247. var chartEdbInfoMappingOrm *ChartEdbInfoMappingOrm
  248. o := orm.NewOrmUsingDB("data")
  249. 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`
  250. 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
  251. FROM chart_edb_mapping AS a
  252. INNER JOIN future_good_edb_info AS b ON a.edb_info_id=b.future_good_edb_info_id
  253. WHERE a.chart_info_id=? AND a.source = ?
  254. ORDER BY chart_edb_mapping_id ASC `
  255. err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_FUTURE_GOOD).QueryRow(&chartEdbInfoMappingOrm)
  256. if err != nil {
  257. return
  258. }
  259. item = chartEdbInfoMappingOrm.ToItem()
  260. return
  261. }
  262. // GetFutureGoodEdbChartEdbMappingList 商品曲线图查询对应的商品指标
  263. func GetFutureGoodEdbChartEdbMappingList(chartInfoId int) (items []*ChartEdbInfoMapping, err error) {
  264. var ormList []*ChartEdbInfoMappingOrm
  265. items = make([]*ChartEdbInfoMapping, 0)
  266. o := orm.NewOrmUsingDB("data")
  267. 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`
  268. 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
  269. FROM chart_edb_mapping AS a
  270. INNER JOIN future_good_edb_info AS b ON a.edb_info_id=b.future_good_edb_info_id
  271. WHERE a.chart_info_id=? AND a.source = ?
  272. ORDER BY chart_edb_mapping_id ASC `
  273. _, err = o.Raw(sql, chartInfoId, utils.CHART_SOURCE_FUTURE_GOOD).QueryRows(&ormList)
  274. if err != nil {
  275. return
  276. }
  277. for _, ormItem := range ormList {
  278. items = append(items, ormItem.ToItem())
  279. }
  280. return
  281. }
  282. // GetChartEdbMappingListV2 根据图表id获取指标信息,不连表查询指标表
  283. func GetChartEdbMappingListV2(chartInfoId int) (items []*ChartEdbInfoMapping, err error) {
  284. var ormList []*ChartEdbInfoMappingOrm
  285. items = make([]*ChartEdbInfoMapping, 0)
  286. o := orm.NewOrmUsingDB("data")
  287. sql := ` SELECT a.* FROM chart_edb_mapping AS a
  288. WHERE chart_info_id=?
  289. ORDER BY chart_edb_mapping_id ASC `
  290. _, err = o.Raw(sql, chartInfoId).QueryRows(&ormList)
  291. if err != nil {
  292. return
  293. }
  294. for _, ormItem := range ormList {
  295. items = append(items, ormItem.ToItem())
  296. }
  297. return
  298. }
  299. // GetChartEdbMappingByEdbInfoId 根据指标id获取edb_mapping
  300. func GetChartEdbMappingByEdbInfoId(edbInfoId int) (item *ChartEdbInfoMapping, err error) {
  301. var chartEdbInfoMappingOrm *ChartEdbInfoMappingOrm
  302. o := orm.NewOrmUsingDB("data")
  303. 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,edb_type,max_value,min_value,is_join_permission
  304. FROM edb_info
  305. WHERE edb_info_id = ? limit 1`
  306. err = o.Raw(sql, edbInfoId).QueryRow(&chartEdbInfoMappingOrm)
  307. if err != nil {
  308. return
  309. }
  310. item = chartEdbInfoMappingOrm.ToItem()
  311. return
  312. }
  313. // GetEdbMappingListByEdbInfoId 根据指标id获取edb_mapping
  314. func GetEdbMappingListByEdbInfoId(edbInfoId int) (items []*ChartEdbInfoMapping, err error) {
  315. var ormList []*ChartEdbInfoMappingOrm
  316. items = make([]*ChartEdbInfoMapping, 0)
  317. o := orm.NewOrmUsingDB("data")
  318. sql := ` SELECT * FROM chart_edb_mapping
  319. WHERE edb_info_id = ? `
  320. _, err = o.Raw(sql, edbInfoId).QueryRows(&ormList)
  321. if err != nil {
  322. return
  323. }
  324. for _, ormItem := range ormList {
  325. items = append(items, ormItem.ToItem())
  326. }
  327. return
  328. }
  329. // GetChartEdbMappingByFutureGoodEdbInfoId 根据指标id获取edb_mapping
  330. func GetChartEdbMappingByFutureGoodEdbInfoId(edbInfoId int) (item *ChartEdbInfoMapping, err error) {
  331. var chartEdbInfoMappingOrm *ChartEdbInfoMappingOrm
  332. o := orm.NewOrmUsingDB("data")
  333. 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
  334. FROM future_good_edb_info b
  335. WHERE future_good_edb_info_id = ? limit 1 `
  336. err = o.Raw(sql, edbInfoId).QueryRow(&chartEdbInfoMappingOrm)
  337. if err != nil {
  338. return
  339. }
  340. item = chartEdbInfoMappingOrm.ToItem()
  341. return
  342. }
  343. // ModifyChartEdbMapping
  344. // @Description: 修改图表的关系表
  345. // @author: Roc
  346. // @datetime 2023-12-11 17:23:32
  347. // @param chartInfoId int
  348. // @param edbInfoList []*EdbInfo
  349. // @return err error
  350. func ModifyChartEdbMapping(chartInfoId int, edbInfoList []*EdbInfo) (err error) {
  351. o, err := orm.NewOrmUsingDB("data").Begin()
  352. if err != nil {
  353. return
  354. }
  355. defer func() {
  356. if err != nil {
  357. fmt.Println("AddCalculateHcz,Err:" + err.Error())
  358. _ = o.Rollback()
  359. } else {
  360. _ = o.Commit()
  361. }
  362. }()
  363. list := make([]*ChartEdbMapping, 0)
  364. sql := ` SELECT a.*
  365. FROM chart_edb_mapping AS a
  366. WHERE chart_info_id=?
  367. ORDER BY chart_edb_mapping_id ASC `
  368. _, err = o.Raw(sql, chartInfoId).QueryRows(&list)
  369. if err != nil {
  370. return
  371. }
  372. mappingIdMap := make(map[int]*ChartEdbMapping)
  373. removeMapping := make(map[int]int)
  374. for _, v := range list {
  375. mappingIdMap[v.EdbInfoId] = v
  376. removeMapping[v.EdbInfoId] = v.ChartEdbMappingId
  377. }
  378. addList := make([]*ChartEdbMapping, 0)
  379. for _, v := range edbInfoList {
  380. _, ok := mappingIdMap[v.EdbInfoId]
  381. // 存在该指标关系就不处理了
  382. if ok {
  383. delete(removeMapping, v.EdbInfoId)
  384. continue
  385. }
  386. timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  387. // 不存在就添加
  388. addList = append(addList, &ChartEdbMapping{
  389. //ChartEdbMappingId: 0,
  390. ChartInfoId: chartInfoId,
  391. EdbInfoId: v.EdbInfoId,
  392. CreateTime: time.Now(),
  393. ModifyTime: time.Now(),
  394. UniqueCode: utils.MD5(utils.CHART_PREFIX + "_" + fmt.Sprint(chartInfoId) + "_" + fmt.Sprint(v.EdbInfoId) + "_" + timestamp),
  395. MaxData: v.MaxValue,
  396. MinData: v.MinValue,
  397. //IsOrder: v.IsOrder,
  398. //IsAxis: v.IsAxis,
  399. EdbInfoType: v.EdbInfoType,
  400. //LeadValue: v.LeadValue,
  401. //LeadUnit: v.LeadUnit,
  402. //ChartStyle: v.ChartStyle,
  403. //ChartColor: v.ChartColor,
  404. //ChartWidth: v.ChartWidth,
  405. Source: v.Source,
  406. })
  407. }
  408. // 需要添加的话,那就添加吧
  409. if len(addList) > 0 {
  410. _, err = o.InsertMulti(len(addList), addList)
  411. if err != nil {
  412. return
  413. }
  414. }
  415. // 移除不必要的mapping
  416. if len(removeMapping) > 0 {
  417. removeIdList := make([]string, 0) //需要移除的日期
  418. for _, v := range removeMapping {
  419. removeIdList = append(removeIdList, fmt.Sprint(v))
  420. }
  421. removeIdStr := strings.Join(removeIdList, `","`)
  422. removeIdStr = `"` + removeIdStr + `"`
  423. //如果拼接指标变更了,那么需要删除所有的指标数据
  424. sql := fmt.Sprintf(` DELETE FROM chart_edb_mapping WHERE chart_edb_mapping_id in (%s) `, removeIdStr)
  425. _, err = o.Raw(sql).Exec()
  426. if err != nil {
  427. err = fmt.Errorf("移除不必要的mapping失败,Err:" + err.Error())
  428. return
  429. }
  430. }
  431. return
  432. }
  433. func GetRelationEdbInfoListMappingByCondition(condition string, pars []interface{}) (items []*ChartEdbInfoMapping, err error) {
  434. var ormList []*ChartEdbInfoMappingOrm
  435. items = make([]*ChartEdbInfoMapping, 0)
  436. o := orm.NewOrmUsingDB("data")
  437. sql := ` SELECT a.* FROM edb_info AS a
  438. JOIN edb_info_calculate_mapping AS b on a.edb_info_id = b.edb_info_id WHERE 1=1 `
  439. if condition != "" {
  440. sql += condition
  441. }
  442. _, err = o.Raw(sql, pars).QueryRows(&ormList)
  443. if err != nil {
  444. return
  445. }
  446. for _, ormItem := range ormList {
  447. items = append(items, ormItem.ToItem())
  448. }
  449. return
  450. }