edb_info_calculate.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. package data_manage
  2. import (
  3. "encoding/json"
  4. "eta/eta_mobile/models"
  5. "eta/eta_mobile/models/data_manage"
  6. "eta/eta_mobile/services/data"
  7. "eta/eta_mobile/utils"
  8. "fmt"
  9. "strconv"
  10. "time"
  11. )
  12. // @Title 累计值转月-同比值-同差等重新计算
  13. // @Description 累计值转月-同比值-同差等重新计算接口
  14. // @Param request body data_manage.EdbInfoCalculateBatchSaveReq true "type json string"
  15. // @Success Ret=200 返回指标id
  16. // @router /edb_info/calculate/batch/reset [post]
  17. func (this *ChartInfoController) CalculateBatchReset() {
  18. br := new(models.BaseResponse).Init()
  19. defer func() {
  20. this.Data["json"] = br
  21. this.ServeJSON()
  22. }()
  23. sysUser := this.SysUser
  24. if sysUser == nil {
  25. br.Msg = "请登录"
  26. br.ErrMsg = "请登录,SysUser Is Empty"
  27. br.Ret = 408
  28. return
  29. }
  30. var req data_manage.EdbInfoCalculateBatchSaveReq
  31. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  32. if err != nil {
  33. br.Msg = "参数解析异常!"
  34. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  35. return
  36. }
  37. if req.EdbInfoId <= 0 {
  38. br.Msg = "参数错误"
  39. br.ErrMsg = "参数错误:EdbInfoId:" + strconv.Itoa(req.EdbInfoId)
  40. return
  41. }
  42. edbInfo, err := data_manage.GetEdbInfoById(req.EdbInfoId)
  43. if err != nil {
  44. if err.Error() == utils.ErrNoRow() {
  45. br.Msg = "指标已被删除,请刷新页面"
  46. br.ErrMsg = "指标已删除,请刷新页面:Err:" + err.Error()
  47. return
  48. }
  49. br.Msg = "重新计算失败"
  50. br.ErrMsg = "获取指标信息失败:Err:" + err.Error()
  51. return
  52. }
  53. uniqueCode := edbInfo.UniqueCode
  54. sourName := edbInfo.SourceName
  55. edbInfoId := edbInfo.EdbInfoId
  56. //if source == utils.DATA_SOURCE_CALCULATE {
  57. // //检验公式
  58. // var formulaStr string
  59. // var edbInfoIdBytes []string
  60. // for _, v := range fromEdbInfoList {
  61. // formulaStr += v.FromTag + ","
  62. // edbInfoIdBytes = append(edbInfoIdBytes, v.FromTag)
  63. // }
  64. // formulaStr = strings.Trim(formulaStr, ",")
  65. // formulaMap := data.CheckFormula(req.CalculateFormula)
  66. // for _, v := range formulaMap {
  67. // if !strings.Contains(formulaStr, v) {
  68. // br.Msg = "公式错误,请重新填写"
  69. // return
  70. // }
  71. // }
  72. //
  73. // edbInfoList := make([]*data_manage.EdbInfo, 0)
  74. //
  75. // for _, v := range fromEdbInfoList {
  76. // edbInfo, err := data_manage.GetEdbInfoById(v.FromEdbInfoId)
  77. // if err != nil {
  78. // if err.Error() == utils.ErrNoRow() {
  79. // br.Msg = "重新计算失败"
  80. // br.Msg = "指标 " + strconv.Itoa(v.FromEdbInfoId) + " 不存在"
  81. // return
  82. // }
  83. // br.Msg = "重新计算失败"
  84. // br.Msg = "获取指标失败:Err:" + err.Error()
  85. // return
  86. // }
  87. // edbInfoList = append(edbInfoList, edbInfo)
  88. // }
  89. // //清除历史数据
  90. // err = data_manage.DeleteCalculateData(edbInfoId)
  91. // if err != nil {
  92. // br.Msg = "重新计算失败"
  93. // br.Msg = "获取指标失败:Err:" + err.Error()
  94. // return
  95. // }
  96. // err = data.Calculate(edbInfoList, int(edbInfoId), edbCode, edbInfo.CalculateFormula, edbInfoIdBytes)
  97. // if err != nil {
  98. // br.Msg = "重新计算失败"
  99. // br.Msg = "生成计算指标失败,Calculate Err:" + err.Error()
  100. // return
  101. // }
  102. //} else if source == utils.DATA_SOURCE_CALCULATE_LJZZY {
  103. // _, err = data_manage.AddCalculateLjzzy(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName)
  104. //} else if source == utils.DATA_SOURCE_CALCULATE_TBZ {
  105. // sourName = "同比值"
  106. // edbInfoId, err = data_manage.AddCalculateTbz(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName)
  107. //} else if source == utils.DATA_SOURCE_CALCULATE_TCZ {
  108. // sourName = "同差值"
  109. // edbInfoId, err = data_manage.AddCalculateTcz(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName)
  110. //} else if source == utils.DATA_SOURCE_CALCULATE_NSZYDPJJS {
  111. // sourName = "N数值移动平均计算"
  112. // formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  113. // edbInfoId, err = data_manage.AddCalculateNszydpjjs(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName, formulaInt)
  114. //} else if source == utils.DATA_SOURCE_CALCULATE_HBZ {
  115. // sourName = "环比值"
  116. // formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  117. // edbInfoId, err = data_manage.AddCalculateHbz(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName, formulaInt)
  118. //} else if source == utils.DATA_SOURCE_CALCULATE_HCZ {
  119. // sourName = "环差值"
  120. // formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
  121. // edbInfoId, err = data_manage.AddCalculateHcz(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName, formulaInt)
  122. //} else if source == utils.DATA_SOURCE_CALCULATE_BP {
  123. // sourName = "变频"
  124. // edbInfoId, err = data_manage.AddCalculateBp(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName)
  125. //} else if source == utils.DATA_SOURCE_CALCULATE_TIME_SHIFT {
  126. // sourName = "时间移位"
  127. // if req.MoveFrequency == "" {
  128. // req.MoveFrequency = edbInfo.MoveFrequency
  129. // }
  130. // if req.Formula == "" {
  131. // req.Formula = edbInfo.CalculateFormula
  132. // }
  133. // edbInfoId, err = data_manage.AddCalculateTimeShift(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName)
  134. //} else if source == utils.DATA_SOURCE_CALCULATE_ZJPJ {
  135. // sourName = "直接拼接"
  136. // err = data_manage.RefreshAllCalculateZjpj(edbInfo)
  137. //} else if source == utils.DATA_SOURCE_CALCULATE_LJZTBPJ {
  138. // sourName = "累计值同比拼接"
  139. // err = data_manage.RefreshAllCalculateLjztbpj(edbInfo)
  140. //} else {
  141. // br.Msg = "无效计算方式"
  142. // br.ErrMsg = "无效计算方式,source:" + strconv.Itoa(source)
  143. // return
  144. //}
  145. // 重新计算
  146. err, isAsync := data.EdbInfoRefreshAllFromBaseV2(edbInfoId, true)
  147. if err != nil {
  148. fmt.Println(edbInfoId, "RefreshEdbCalculateData err", time.Now())
  149. br.Msg = "重新计算失败"
  150. br.ErrMsg = "生成" + sourName + "失败,RefreshEdbCalculateData Err:" + err.Error()
  151. return
  152. }
  153. resp := new(data_manage.AddEdbInfoResp)
  154. resp.EdbInfoId = edbInfoId
  155. resp.UniqueCode = uniqueCode
  156. br.Ret = 200
  157. br.Success = true
  158. br.Msg = "重新计算成功"
  159. if isAsync {
  160. br.Msg = "该指标关联指标较多,请10分钟后刷新页面查看最新数据"
  161. }
  162. br.Data = resp
  163. br.IsAddLog = true
  164. }