line_feature.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. package line_feature
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/models/data_manage"
  5. "eta_gn/eta_api/utils"
  6. "fmt"
  7. "strconv"
  8. "strings"
  9. "time"
  10. )
  11. type BatchAddChart struct {
  12. ChartInfo *data_manage.ChartInfo
  13. EdbMappingList []*data_manage.ChartEdbMapping
  14. MultipleGraphConfigChartMapping *data_manage.MultipleGraphConfigChartMapping
  15. }
  16. func CreateLineFeatureChartAndEdb(chartInfo *data_manage.ChartInfo, edbMappingList []*data_manage.ChartEdbMapping) (chartInfoId int, err error) {
  17. tx := global.DmSQL["data"].Begin()
  18. defer func() {
  19. if err != nil {
  20. _ = tx.Rollback()
  21. } else {
  22. _ = tx.Commit()
  23. }
  24. }()
  25. err = tx.Create(chartInfo).Error
  26. if err != nil {
  27. return
  28. }
  29. chartInfoId = chartInfo.ChartInfoId
  30. if len(edbMappingList) > 0 {
  31. for i := range edbMappingList {
  32. edbMappingList[i].ChartInfoId = chartInfoId
  33. }
  34. err = tx.CreateInBatches(edbMappingList, utils.MultiAddNum).Error
  35. if err != nil {
  36. return
  37. }
  38. }
  39. return
  40. }
  41. func EditLineFeatureChartAndMapping(req *data_manage.EditChartInfoReq, edbInfoIdStr string, calendar string, dateType, disabled int, extraConfig string) (err error) {
  42. to := global.DmSQL["data"].Begin()
  43. defer func() {
  44. if err != nil {
  45. _ = to.Rollback()
  46. } else {
  47. _ = to.Commit()
  48. }
  49. }()
  50. var pars []interface{}
  51. pars = append(pars, req.ChartName)
  52. pars = append(pars, req.ChartNameEn)
  53. pars = append(pars, edbInfoIdStr)
  54. pars = append(pars, req.ChartClassifyId)
  55. pars = append(pars, disabled)
  56. pars = append(pars, extraConfig)
  57. sql := ` UPDATE chart_info
  58. SET
  59. chart_name =?,
  60. chart_name_en =?,
  61. edb_info_ids=?,
  62. chart_classify_id = ?,
  63. modify_time = NOW(),
  64. disabled = ?,
  65. extra_config = ?
  66. `
  67. if calendar != "" {
  68. sql += `,calendar = ? `
  69. pars = append(pars, calendar)
  70. }
  71. if dateType > 0 {
  72. sql += `,date_type = ? `
  73. pars = append(pars, dateType)
  74. }
  75. sql += `,start_date = ? `
  76. pars = append(pars, req.StartDate)
  77. sql += `,end_date = ? `
  78. pars = append(pars, req.EndDate)
  79. sql += `,season_start_date = ? `
  80. pars = append(pars, req.StartDate)
  81. sql += `,season_end_date = ? `
  82. pars = append(pars, req.EndDate)
  83. sql += `,left_min = ? `
  84. pars = append(pars, req.LeftMin)
  85. sql += `,left_max = ? `
  86. pars = append(pars, req.LeftMax)
  87. sql += `,right_min = ? `
  88. pars = append(pars, req.RightMin)
  89. sql += `,right_max = ? `
  90. pars = append(pars, req.RightMax)
  91. sql += `WHERE chart_info_id = ?`
  92. pars = append(pars, req.ChartInfoId)
  93. err = to.Exec(sql, pars).Error
  94. if err != nil {
  95. fmt.Println("UPDATE chart_info Err:", err.Error())
  96. return err
  97. }
  98. chartEdbMappingIdList := make([]string, 0)
  99. for _, v := range req.CorrelationChartInfo.EdbInfoIdList {
  100. var tmpChartEdbMapping *data_manage.ChartEdbMapping
  101. csql := `SELECT * FROM chart_edb_mapping WHERE chart_info_id=? AND edb_info_id=? AND source = ? `
  102. err = to.Raw(csql, req.ChartInfoId, v.EdbInfoId, utils.CHART_SOURCE_CORRELATION).First(&tmpChartEdbMapping).Error
  103. if err != nil && !utils.IsErrNoRow(err) {
  104. fmt.Println("QueryRow Err:", err.Error())
  105. return err
  106. }
  107. if tmpChartEdbMapping != nil {
  108. chartEdbMappingIdList = append(chartEdbMappingIdList, strconv.Itoa(tmpChartEdbMapping.ChartEdbMappingId))
  109. } else {
  110. mapItem := new(data_manage.ChartEdbMapping)
  111. mapItem.ChartInfoId = req.ChartInfoId
  112. mapItem.EdbInfoId = v.EdbInfoId
  113. mapItem.CreateTime = time.Now()
  114. mapItem.ModifyTime = time.Now()
  115. timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  116. mapItem.UniqueCode = utils.MD5(utils.CHART_PREFIX + "_" + timestamp + "_" + strconv.Itoa(v.EdbInfoId))
  117. mapItem.IsOrder = true
  118. mapItem.IsAxis = 1
  119. mapItem.EdbInfoType = 1
  120. mapItem.Source = utils.CHART_SOURCE_CORRELATION
  121. err = to.Create(mapItem).Error
  122. if err != nil {
  123. fmt.Println("AddChartEdbMapping Err:" + err.Error())
  124. return err
  125. }
  126. chartEdbMappingIdList = append(chartEdbMappingIdList, strconv.Itoa(mapItem.ChartEdbMappingId))
  127. }
  128. }
  129. if len(chartEdbMappingIdList) > 0 {
  130. chartEdbMappingIdStr := strings.Join(chartEdbMappingIdList, ",")
  131. dsql := `DELETE FROM chart_edb_mapping WHERE chart_info_id=? AND chart_edb_mapping_id NOT IN(` + chartEdbMappingIdStr + `)`
  132. err = to.Exec(dsql, req.ChartInfoId).Error
  133. if err != nil {
  134. fmt.Println("delete err:" + err.Error())
  135. return err
  136. }
  137. }
  138. return
  139. }