chart_info.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package chart
  2. import (
  3. "fmt"
  4. "hongze/hongze_yb/global"
  5. chartEdbMappingModel "hongze/hongze_yb/models/tables/chart_edb_mapping"
  6. chartInfoModel "hongze/hongze_yb/models/tables/chart_info"
  7. "hongze/hongze_yb/utils"
  8. "strconv"
  9. "strings"
  10. "time"
  11. )
  12. // ModifyChartInfoAndMapping 修改图表信息
  13. func ModifyChartInfoAndMapping(edbInfoIdStr string, req *chartInfoModel.SaveChartInfoReq, chartType int) (err error) {
  14. // 开启事务
  15. tx := global.MYSQL["data"].Begin()
  16. defer func() {
  17. if err != nil {
  18. tx.Rollback()
  19. } else {
  20. tx.Commit()
  21. }
  22. }()
  23. // 更新图表信息
  24. if chartType == 1 {
  25. sql := ` UPDATE chart_info
  26. SET
  27. edb_info_ids = ?,
  28. modify_time = NOW(),
  29. date_type = ?,
  30. start_date = ?,
  31. end_date = ?,
  32. left_min = ?,
  33. left_max = ?,
  34. right_min = ?,
  35. right_max = ?
  36. WHERE chart_info_id = ?`
  37. err = tx.Exec(sql, edbInfoIdStr, req.DateType, req.StartDate, req.EndDate, req.LeftMin, req.LeftMax, req.RightMin, req.RightMax, req.ChartInfoId).Error
  38. } else {
  39. sql := ` UPDATE chart_info
  40. SET
  41. edb_info_ids = ?,
  42. modify_time = NOW(),
  43. calendar = ?,
  44. season_start_date = ?,
  45. season_end_date = ?,
  46. left_min = ?,
  47. left_max = ?,
  48. right_min = ?,
  49. right_max = ?
  50. WHERE chart_info_id = ?`
  51. err = tx.Exec(sql, edbInfoIdStr, req.Calendar, req.SeasonStartDate, req.SeasonEndDate, req.LeftMin, req.LeftMax, req.RightMin, req.RightMax, req.ChartInfoId).Error
  52. }
  53. if err != nil {
  54. fmt.Println("UPDATE chart_info Err:", err.Error())
  55. return
  56. }
  57. var edbInfoIdArr []string
  58. mapList := make([]*chartEdbMappingModel.ChartEdbMapping, 0)
  59. for _, v := range req.ChartEdbInfoList {
  60. edbInfoIdArr = append(edbInfoIdArr, strconv.Itoa(v.EdbInfoId))
  61. var count int
  62. csql := `SELECT COUNT(1) AS count FROM chart_edb_mapping WHERE chart_info_id=? AND edb_info_id=? `
  63. err = tx.Exec(csql, req.ChartInfoId, v.EdbInfoId).Scan(&count).Error
  64. if err != nil {
  65. fmt.Println("QueryRow Err:", err.Error())
  66. return err
  67. }
  68. if count > 0 {
  69. // 更新指标
  70. msql := `UPDATE chart_edb_mapping
  71. SET
  72. modify_time = NOW(),
  73. max_data = ?,
  74. min_data = ?,
  75. is_order = ?,
  76. is_axis = ?,
  77. edb_info_type = ?,
  78. lead_value = ?,
  79. lead_unit = ?,
  80. chart_style = ?,
  81. chart_color = ?,
  82. chart_width = ?
  83. WHERE chart_info_id =? AND edb_info_id=? `
  84. err = tx.Exec(msql, v.MaxData, v.MinData, v.IsOrder, v.IsAxis, v.EdbInfoType, v.LeadValue, v.LeadUnit, v.ChartStyle, v.ChartColor, v.ChartWidth, req.ChartInfoId, v.EdbInfoId).Error
  85. if err != nil {
  86. fmt.Println("chart_edb_mapping Err:" + err.Error())
  87. return err
  88. }
  89. } else {
  90. mapItem := new(chartEdbMappingModel.ChartEdbMapping)
  91. mapItem.ChartInfoId = req.ChartInfoId
  92. mapItem.EdbInfoId = v.EdbInfoId
  93. mapItem.CreateTime = time.Now()
  94. mapItem.ModifyTime = time.Now()
  95. timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  96. mapItem.UniqueCode = utils.MD5(utils.CHART_PREFIX + "_" + timestamp)
  97. mapItem.MaxData = v.MaxData
  98. mapItem.MinData = v.MinData
  99. mapItem.IsOrder = 0
  100. if v.IsOrder {
  101. mapItem.IsOrder = 1
  102. }
  103. mapItem.IsAxis = v.IsAxis
  104. mapItem.EdbInfoType = v.EdbInfoType
  105. mapItem.LeadValue = v.LeadValue
  106. mapItem.LeadUnit = v.LeadUnit
  107. mapItem.ChartStyle = v.ChartStyle
  108. mapItem.ChartColor = v.ChartColor
  109. mapItem.ChartWidth = v.ChartWidth
  110. mapList = append(mapList, mapItem)
  111. }
  112. }
  113. // 批量新增指标
  114. if len(mapList) > 0 {
  115. err = tx.Create(mapList).Error
  116. if err != nil {
  117. fmt.Println("AddChartEdbMapping Err:" + err.Error())
  118. return err
  119. }
  120. }
  121. // 清除原图表指标
  122. if len(edbInfoIdArr) > 0 {
  123. edbInfoIdStr := strings.Join(edbInfoIdArr, ",")
  124. if edbInfoIdStr != "" {
  125. dsql := `DELETE FROM chart_edb_mapping WHERE chart_info_id=? AND edb_info_id NOT IN(` + edbInfoIdStr + `)`
  126. err = tx.Exec(dsql, req.ChartInfoId).Error
  127. if err != nil {
  128. fmt.Println("delete err:" + err.Error())
  129. return err
  130. }
  131. }
  132. }
  133. return
  134. }