|
@@ -19,7 +19,7 @@ type CalculateController struct {
|
|
|
// Add
|
|
|
// @Title 编辑指标接口
|
|
|
// @Description 编辑指标接口
|
|
|
-// @Success 200 {object} data_manage.EditEdbInfoReq
|
|
|
+// @Success 200 {object} models.EditEdbInfoReq
|
|
|
// @router /add [post]
|
|
|
func (this *CalculateController) Add() {
|
|
|
br := new(models.BaseResponse).Init()
|
|
@@ -245,7 +245,7 @@ func (this *CalculateController) Add() {
|
|
|
// CalculateBatchSave
|
|
|
// @Title 累计值转月-同比值-同差等计算新增
|
|
|
// @Description 累计值转月-同比值-同差等计算新增接口
|
|
|
-// @Param request body data_manage.EdbInfoCalculateBatchSaveReq true "type json string"
|
|
|
+// @Param request body models.EdbInfoCalculateBatchSaveReq true "type json string"
|
|
|
// @Success Ret=200 返回指标id
|
|
|
// @router /batch/save [post]
|
|
|
func (this *CalculateController) CalculateBatchSave() {
|
|
@@ -529,3 +529,273 @@ func (this *CalculateController) CalculateBatchSave() {
|
|
|
br.Data = resp
|
|
|
br.IsAddLog = true
|
|
|
}
|
|
|
+
|
|
|
+// Refresh
|
|
|
+// @Title 刷新计算指标接口
|
|
|
+// @Description 刷新计算指标接口
|
|
|
+// @Success 200 {object} models.RefreshEdbInfoReq
|
|
|
+// @router /refresh [post]
|
|
|
+func (this *CalculateController) Refresh() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ var cacheKey string
|
|
|
+ defer func() {
|
|
|
+ utils.Rc.Delete(cacheKey)
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ source := utils.DATA_SOURCE_LT
|
|
|
+ var req models.RefreshEdbInfoReq
|
|
|
+ err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if req.EdbCode == "" {
|
|
|
+ br.Msg = "请输入指标编码!"
|
|
|
+ br.ErrMsg = "请输入指标编码,指标编码为空"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if req.EdbInfoId <= 0 {
|
|
|
+ br.Msg = "请输入指标ID!"
|
|
|
+ br.ErrMsg = "请输入指标ID"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ edbInfo, err := models.GetEdbInfoById(req.EdbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "指标不存在!"
|
|
|
+ br.ErrMsg = "指标不存在"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ cacheKey = utils.CACHE_EDB_DATA_REFRESH + strconv.Itoa(edbInfo.Source) + "_" + req.EdbCode
|
|
|
+ if !utils.Rc.IsExist(cacheKey) {
|
|
|
+ utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
|
|
|
+
|
|
|
+ startDate := req.StartDate
|
|
|
+ var errMsg string
|
|
|
+ endDate := time.Now().Format(utils.FormatDate)
|
|
|
+ edbInfoId := edbInfo.EdbInfoId
|
|
|
+
|
|
|
+ switch edbInfo.Source {
|
|
|
+ case utils.DATA_SOURCE_CALCULATE:
|
|
|
+ startDate = edbInfo.StartDate
|
|
|
+ sTime, err := time.Parse(utils.FormatDate, edbInfo.EndDate)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ startDate = sTime.Format(utils.FormatDate)
|
|
|
+
|
|
|
+ var edbInfoIdBytes []string
|
|
|
+ calculateMap, err := models.GetEdbInfoCalculateDetail(edbInfo.EdbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoCalculateDetail Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ var formulaStr string
|
|
|
+ edbInfoList := make([]*models.EdbInfo, 0)
|
|
|
+
|
|
|
+ for _, v := range calculateMap {
|
|
|
+ formulaStr += v.FromTag + ","
|
|
|
+ edbInfoIdBytes = append(edbInfoIdBytes, v.FromTag)
|
|
|
+ edbInfo, _ := models.GetEdbInfoById(v.FromEdbInfoId)
|
|
|
+ edbInfoList = append(edbInfoList, edbInfo)
|
|
|
+ }
|
|
|
+ err = models.RefreshAllCalculate(edbInfoList, edbInfo.EdbInfoId, source, edbInfo.EdbCode, edbInfo.CalculateFormula, startDate, endDate, edbInfoIdBytes)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "RefreshCalculate Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ case utils.DATA_SOURCE_CALCULATE_LJZZY: //刷新累计值转月值
|
|
|
+ calculateLjzzy, err := models.GetEdbInfoCalculateLjzzyDetail(edbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoCalculateLjzzyDetail Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ fromEdbInfo, err := models.GetEdbInfoById(calculateLjzzy.FromEdbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoById Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ startDate = edbInfo.StartDate
|
|
|
+ endDate = time.Now().Format(utils.FormatDate)
|
|
|
+ err = models.RefreshAllCalculateLjzzy(edbInfoId, source, fromEdbInfo, calculateLjzzy.EdbCode, startDate, endDate)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "RefreshAllCalculateLjzzy Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ case utils.DATA_SOURCE_CALCULATE_TBZ: //刷新同比值
|
|
|
+ calculateTbz, err := models.GetEdbInfoCalculateTbzDetail(edbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ fromEdbInfo, err := models.GetEdbInfoById(calculateTbz.FromEdbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoById Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ startDate = edbInfo.StartDate
|
|
|
+ endDate = time.Now().Format(utils.FormatDate)
|
|
|
+ err = models.RefreshAllCalculateTbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "RefreshAllCalculateTbz Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ case utils.DATA_SOURCE_CALCULATE_TCZ: //同差值
|
|
|
+ calculateTcz, err := models.GetEdbInfoCalculateTczDetail(edbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoCalculateTczDetail Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ fromEdbInfo, err := models.GetEdbInfoById(calculateTcz.FromEdbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoById Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ startDate = edbInfo.StartDate
|
|
|
+ endDate = time.Now().Format(utils.FormatDate)
|
|
|
+ err = models.RefreshAllCalculateTcz(edbInfoId, source, fromEdbInfo, calculateTcz.EdbCode, startDate, endDate)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "RefreshCalculateTcz Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ case utils.DATA_SOURCE_CALCULATE_NSZYDPJJS: //N数值移动平均计算
|
|
|
+ calculateNszydpjjs, err := models.GetEdbInfoCalculateNszydpjjsDetail(edbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoCalculateNszydpjjsDetail Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ fromEdbInfo, err := models.GetEdbInfoById(calculateNszydpjjs.FromEdbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoById Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
|
|
|
+ startDate = edbInfo.StartDate
|
|
|
+ err = models.RefreshAllCalculateNszydpjjs(edbInfoId, edbInfo.Source, formulaInt, fromEdbInfo, calculateNszydpjjs.EdbCode, startDate)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "RefreshCalculateNszydpjjs Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ case utils.DATA_SOURCE_CALCULATE_HBZ: //刷新环比值
|
|
|
+ calculateTbz, err := models.GetEdbInfoCalculateHbzDetail(edbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoCalculateHbzDetail Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ fromEdbInfo, err := models.GetEdbInfoById(calculateTbz.FromEdbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoById Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ startDate = edbInfo.StartDate
|
|
|
+ endDate = time.Now().Format(utils.FormatDate)
|
|
|
+ formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
|
|
|
+ err = models.RefreshAllCalculateHbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "RefreshAllCalculateHbz Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ case utils.DATA_SOURCE_CALCULATE_HCZ: //刷新环差值
|
|
|
+ calculateTbz, err := models.GetEdbInfoCalculateHczDetail(edbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoCalculateHczDetail Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ fromEdbInfo, err := models.GetEdbInfoById(calculateTbz.FromEdbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoById Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ startDate = edbInfo.StartDate
|
|
|
+ endDate = time.Now().Format(utils.FormatDate)
|
|
|
+ formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
|
|
|
+ err = models.RefreshAllCalculateHcz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "RefreshAllCalculateHcz Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ case utils.DATA_SOURCE_CALCULATE_BP: //刷新变频
|
|
|
+ calculateTbz, err := models.GetEdbInfoCalculateBpDetail(edbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ fromEdbInfo, err := models.GetEdbInfoById(calculateTbz.FromEdbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoById Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ startDate = edbInfo.StartDate
|
|
|
+ endDate = time.Now().Format(utils.FormatDate)
|
|
|
+ err = models.RefreshAllCalculateBp(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "RefreshAllCalculateBp Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ case utils.DATA_SOURCE_CALCULATE_TIME_SHIFT:
|
|
|
+ calculate, err := models.GetEdbInfoCalculateMappingDetail(edbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ fromEdbInfo, err := models.GetEdbInfoById(calculate.FromEdbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "GetEdbInfoById Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ startDate = edbInfo.StartDate
|
|
|
+ endDate = time.Now().Format(utils.FormatDate)
|
|
|
+ formulaInt, _ := strconv.Atoi(calculate.CalculateFormula)
|
|
|
+ err = models.RefreshAllCalculateTimeShift(edbInfoId, source, formulaInt, calculate.MoveType, fromEdbInfo, calculate.EdbCode, startDate, endDate, calculate.MoveFrequency)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "RefreshAllCalculateTimeShift Err:" + err.Error()
|
|
|
+ }
|
|
|
+ case utils.DATA_SOURCE_CALCULATE_ZJPJ: //刷新直接拼接
|
|
|
+ err = models.RefreshAllCalculateZjpj(edbInfo)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "RefreshAllCalculateZjpj Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ case utils.DATA_SOURCE_CALCULATE_LJZTBPJ: //刷新累计值同比拼接
|
|
|
+ err = models.RefreshAllCalculateLjztbpj(edbInfo)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "RefreshAllCalculateLjztbpj Err:" + err.Error()
|
|
|
+ break
|
|
|
+ }
|
|
|
+ default:
|
|
|
+ br.Msg = "来源异常,请联系相关开发!"
|
|
|
+ br.ErrMsg = "来源异常,请联系相关开发"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if errMsg != `` {
|
|
|
+ br.Msg = "刷新指标失败!"
|
|
|
+ br.ErrMsg = "刷新指标失败,err:" + errMsg
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ maxAndMinItem, err := models.GetEdbInfoMaxAndMinInfo(source, edbInfo.EdbCode)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "刷新指标失败!"
|
|
|
+ br.ErrMsg = "获取指标最大最小值失败,err:" + errMsg
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if maxAndMinItem != nil {
|
|
|
+ err = models.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "刷新指标失败!"
|
|
|
+ br.ErrMsg = "修改指标最大最小值失败,err:" + errMsg
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ } else {
|
|
|
+ br.Ret = 501
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "系统处理中,请稍后重试"
|
|
|
+ }
|
|
|
+}
|