package data_manage import ( "encoding/json" "eta/eta_mobile/models" "eta/eta_mobile/models/data_manage" "eta/eta_mobile/services/data" "eta/eta_mobile/utils" "fmt" "strconv" "time" ) // @Title 累计值转月-同比值-同差等重新计算 // @Description 累计值转月-同比值-同差等重新计算接口 // @Param request body data_manage.EdbInfoCalculateBatchSaveReq true "type json string" // @Success Ret=200 返回指标id // @router /edb_info/calculate/batch/reset [post] func (this *ChartInfoController) CalculateBatchReset() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } var req data_manage.EdbInfoCalculateBatchSaveReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.EdbInfoId <= 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误:EdbInfoId:" + strconv.Itoa(req.EdbInfoId) return } edbInfo, err := data_manage.GetEdbInfoById(req.EdbInfoId) if err != nil { if err.Error() == utils.ErrNoRow() { br.Msg = "指标已被删除,请刷新页面" br.ErrMsg = "指标已删除,请刷新页面:Err:" + err.Error() return } br.Msg = "重新计算失败" br.ErrMsg = "获取指标信息失败:Err:" + err.Error() return } uniqueCode := edbInfo.UniqueCode sourName := edbInfo.SourceName edbInfoId := edbInfo.EdbInfoId //if source == utils.DATA_SOURCE_CALCULATE { // //检验公式 // var formulaStr string // var edbInfoIdBytes []string // for _, v := range fromEdbInfoList { // formulaStr += v.FromTag + "," // edbInfoIdBytes = append(edbInfoIdBytes, v.FromTag) // } // formulaStr = strings.Trim(formulaStr, ",") // formulaMap := data.CheckFormula(req.CalculateFormula) // for _, v := range formulaMap { // if !strings.Contains(formulaStr, v) { // br.Msg = "公式错误,请重新填写" // return // } // } // // edbInfoList := make([]*data_manage.EdbInfo, 0) // // for _, v := range fromEdbInfoList { // edbInfo, err := data_manage.GetEdbInfoById(v.FromEdbInfoId) // if err != nil { // if err.Error() == utils.ErrNoRow() { // br.Msg = "重新计算失败" // br.Msg = "指标 " + strconv.Itoa(v.FromEdbInfoId) + " 不存在" // return // } // br.Msg = "重新计算失败" // br.Msg = "获取指标失败:Err:" + err.Error() // return // } // edbInfoList = append(edbInfoList, edbInfo) // } // //清除历史数据 // err = data_manage.DeleteCalculateData(edbInfoId) // if err != nil { // br.Msg = "重新计算失败" // br.Msg = "获取指标失败:Err:" + err.Error() // return // } // err = data.Calculate(edbInfoList, int(edbInfoId), edbCode, edbInfo.CalculateFormula, edbInfoIdBytes) // if err != nil { // br.Msg = "重新计算失败" // br.Msg = "生成计算指标失败,Calculate Err:" + err.Error() // return // } //} else if source == utils.DATA_SOURCE_CALCULATE_LJZZY { // _, err = data_manage.AddCalculateLjzzy(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName) //} else if source == utils.DATA_SOURCE_CALCULATE_TBZ { // sourName = "同比值" // edbInfoId, err = data_manage.AddCalculateTbz(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName) //} else if source == utils.DATA_SOURCE_CALCULATE_TCZ { // sourName = "同差值" // edbInfoId, err = data_manage.AddCalculateTcz(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName) //} else if source == utils.DATA_SOURCE_CALCULATE_NSZYDPJJS { // sourName = "N数值移动平均计算" // formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula) // edbInfoId, err = data_manage.AddCalculateNszydpjjs(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName, formulaInt) //} else if source == utils.DATA_SOURCE_CALCULATE_HBZ { // sourName = "环比值" // formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula) // edbInfoId, err = data_manage.AddCalculateHbz(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName, formulaInt) //} else if source == utils.DATA_SOURCE_CALCULATE_HCZ { // sourName = "环差值" // formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula) // edbInfoId, err = data_manage.AddCalculateHcz(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName, formulaInt) //} else if source == utils.DATA_SOURCE_CALCULATE_BP { // sourName = "变频" // edbInfoId, err = data_manage.AddCalculateBp(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName) //} else if source == utils.DATA_SOURCE_CALCULATE_TIME_SHIFT { // sourName = "时间移位" // if req.MoveFrequency == "" { // req.MoveFrequency = edbInfo.MoveFrequency // } // if req.Formula == "" { // req.Formula = edbInfo.CalculateFormula // } // edbInfoId, err = data_manage.AddCalculateTimeShift(&req, fromEdbInfo, edbCode, uniqueCode, sysUser.AdminId, sysUser.RealName) //} else if source == utils.DATA_SOURCE_CALCULATE_ZJPJ { // sourName = "直接拼接" // err = data_manage.RefreshAllCalculateZjpj(edbInfo) //} else if source == utils.DATA_SOURCE_CALCULATE_LJZTBPJ { // sourName = "累计值同比拼接" // err = data_manage.RefreshAllCalculateLjztbpj(edbInfo) //} else { // br.Msg = "无效计算方式" // br.ErrMsg = "无效计算方式,source:" + strconv.Itoa(source) // return //} // 重新计算 err, isAsync := data.EdbInfoRefreshAllFromBaseV2(edbInfoId, true) if err != nil { fmt.Println(edbInfoId, "RefreshEdbCalculateData err", time.Now()) br.Msg = "重新计算失败" br.ErrMsg = "生成" + sourName + "失败,RefreshEdbCalculateData Err:" + err.Error() return } resp := new(data_manage.AddEdbInfoResp) resp.EdbInfoId = edbInfoId resp.UniqueCode = uniqueCode br.Ret = 200 br.Success = true br.Msg = "重新计算成功" if isAsync { br.Msg = "该指标关联指标较多,请10分钟后刷新页面查看最新数据" } br.Data = resp br.IsAddLog = true }